:root{color-scheme:light;--primary: #2563eb;--primary-hover: #1d4ed8;--primary-soft: #eff6ff;--primary-border: #bfdbfe;--primary-shadow: rgba(37, 99, 235, .28);--accent: #0891b2;--danger: #dc2626;--danger-hover: #b91c1c;--danger-soft: #fef2f2;--danger-border: var(--danger-border);--danger-border-strong: #fca5a5;--success: #16a34a;--success-soft: #f0fdf4;--warning: #d97706;--warning-soft: #fffbeb;--warning-text: #b45309;--warning-border: #fde68a;--bg: #f3f6fb;--surface: #ffffff;--border: #e4e8f1;--border-strong: var(--border-strong);--border-accent: #d5dbe8;--text: #1c2333;--text-secondary: #55607a;--text-muted: #8a93a8;--hover: #f7f8fc;--hover-strong: var(--hover-strong);--highlight: var(--highlight);--control: #e9edf5;--chip-tag-bg: #f1f3f9;--check-border: #c6cdde;--input-disabled-bg: #f4f6fa;--empty-icon: #b8c2d4;--note-text: var(--note-text);--info-icon: #0284c7;--success-chip-bg: #ecfdf5;--success-chip-text: #047857;--success-chip-border: #a7f3d0;--ring: var(--ring);--ring-danger: rgba(220, 38, 38, .12);--spinner-track: rgba(37, 99, 235, .25);--overlay: rgba(15, 23, 42, .45);--header-bg: rgba(255, 255, 255, .92);--auth-glow-1: rgba(37, 99, 235, .12);--auth-glow-2: rgba(8, 145, 178, .1);--heat-0: #ebedf0;--heat-1: color-mix(in srgb, var(--primary) 30%, #ffffff);--heat-2: color-mix(in srgb, var(--primary) 55%, #ffffff);--heat-3: var(--primary);--heat-4: var(--primary-hover);--radius: 12px;--radius-sm: 8px;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06);--shadow-md: 0 10px 30px rgba(16, 24, 40, .12);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif}:root[data-theme=dark]{color-scheme:dark;--primary: #3b82f6;--primary-hover: #60a5fa;--primary-soft: rgba(59, 130, 246, .15);--primary-border: rgba(59, 130, 246, .38);--primary-shadow: rgba(59, 130, 246, .3);--accent: #06b6d4;--danger: #f87171;--danger-hover: #ef4444;--danger-soft: rgba(248, 113, 113, .14);--danger-border: rgba(248, 113, 113, .32);--danger-border-strong: rgba(248, 113, 113, .5);--success: #4ade80;--success-soft: rgba(74, 222, 128, .13);--warning: #fbbf24;--warning-soft: rgba(251, 191, 36, .13);--warning-text: #fbbf24;--warning-border: rgba(251, 191, 36, .35);--bg: #0f131c;--surface: #161c28;--border: #262e3f;--border-strong: #333c50;--border-accent: #333c50;--text: #e8ecf4;--text-secondary: #b6bfd0;--text-muted: #8791a5;--hover: #1a2130;--hover-strong: #1f2737;--highlight: #1f2737;--control: #1d2433;--chip-tag-bg: #1e2534;--check-border: #3d4659;--input-disabled-bg: #171d2a;--empty-icon: #454f66;--note-text: #93c5fd;--info-icon: #38bdf8;--success-chip-bg: rgba(74, 222, 128, .13);--success-chip-text: #4ade80;--success-chip-border: rgba(74, 222, 128, .35);--ring: rgba(59, 130, 246, .28);--ring-danger: rgba(248, 113, 113, .2);--spinner-track: rgba(59, 130, 246, .28);--overlay: rgba(2, 6, 16, .6);--header-bg: rgba(15, 19, 28, .88);--auth-glow-1: rgba(59, 130, 246, .16);--auth-glow-2: rgba(34, 211, 238, .1);--heat-0: #1d2433;--heat-1: color-mix(in srgb, var(--primary) 35%, var(--surface));--heat-2: color-mix(in srgb, var(--primary) 70%, var(--surface));--heat-3: var(--primary);--heat-4: var(--primary-hover);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .45);--shadow-md: 0 10px 30px rgba(0, 0, 0, .55)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);background:var(--bg);color:var(--text);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,p,dl,dd,dt,ul{margin:0}ul{padding:0;list-style:none}a{color:var(--primary);text-decoration:none}.muted{color:var(--text-muted)}.mono{font-family:Cascadia Code,Consolas,monospace;font-size:.92em}.icon{width:1em;height:1em;flex-shrink:0}.icon-lg{width:22px;height:22px}.icon-xl{width:44px;height:44px}.app-header{position:sticky;top:0;z-index:50;background:var(--header-bg);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}.app-container{max-width:1120px;margin:0 auto;padding:0 20px}.header-inner{display:flex;align-items:center;gap:28px;height:60px}.brand{display:flex;align-items:center;gap:9px}.brand-logo{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;font-weight:700;font-size:15px;box-shadow:var(--shadow-sm)}.brand-name{font-size:18px;font-weight:800;letter-spacing:.04em;color:var(--text)}.app-nav{display:flex;gap:4px;flex:1}.nav-link{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;color:var(--text-secondary);font-weight:500;transition:background .15s,color .15s}.nav-link:hover{color:var(--text);background:var(--hover-strong)}.nav-link.active,.nav-link.router-link-active{color:var(--primary);background:var(--primary-soft)}.header-user{display:flex;align-items:center;gap:10px}.user-chip{display:flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border-radius:999px;border:1px solid var(--border);color:var(--text);background:var(--surface);font-family:inherit;font-size:13.5px;cursor:pointer;transition:border-color .15s}.user-chip:hover{border-color:var(--primary-border)}.user-menu{position:relative;display:inline-flex}.user-menu--open .user-chip{border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}.user-menu-chevron{width:14px;height:14px;color:var(--text-muted);flex-shrink:0;transition:transform .18s ease}.user-menu--open .user-menu-chevron{transform:rotate(180deg)}.user-menu-panel{position:absolute;top:calc(100% + 6px);right:0;z-index:130;min-width:170px;padding:4px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-md);animation:select-in .15s ease}.user-menu-item{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border:none;border-radius:6px;background:transparent;color:var(--text);font-family:inherit;font-size:13.5px;text-align:left;text-decoration:none;cursor:pointer;-webkit-user-select:none;user-select:none}.user-menu-item .icon{width:15px;height:15px;color:var(--text-muted);flex-shrink:0}.user-menu-item.is-highlighted{background:var(--highlight)}.user-menu-item--danger .icon{color:var(--danger)}.user-menu-item--danger.is-highlighted{background:var(--danger-soft);color:var(--danger)}.user-name{font-weight:600;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;font-weight:700;font-size:13px;flex-shrink:0}.avatar-sm{width:24px;height:24px;font-size:12px}.app-main{padding:28px 20px 60px}.app-main-full{padding:0}.page{max-width:1120px;margin:0 auto}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:14px;font-family:inherit;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s,color .15s,box-shadow .15s;white-space:nowrap}.btn .icon{font-size:14px}.btn:hover:not(:disabled){border-color:var(--border-strong);background:var(--hover)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover);box-shadow:0 4px 12px var(--primary-shadow)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-hover);border-color:var(--danger-hover)}.btn-danger-outline{color:var(--danger);border-color:var(--danger-border);background:var(--surface)}.btn-danger-outline:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger-border-strong)}.btn-sm{padding:5px 11px;font-size:13px;border-radius:7px}.btn-sm .icon{font-size:13px}.btn-block{width:100%;padding:10px;font-size:15px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:7px;background:transparent;color:var(--text-muted);cursor:pointer;transition:background .15s,color .15s}.icon-btn .icon{font-size:15px}.icon-btn:hover:not(:disabled){background:var(--hover-strong);color:var(--text)}.icon-btn-danger:hover:not(:disabled){background:var(--danger-soft);color:var(--danger)}.icon-btn:disabled{opacity:.5;cursor:not-allowed}.spinner{display:inline-block;width:13px;height:13px;border:2px solid var(--spinner-track);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite}.btn-primary .spinner,.btn-danger .spinner{border-color:#fff6;border-top-color:#fff}.spinner-lg{width:26px;height:26px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.form{display:flex;flex-direction:column;gap:16px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label{font-size:13px;font-weight:600;color:var(--text-secondary)}.required{color:var(--danger)}.field input,.field textarea,.search-input{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:14px;font-family:inherit;transition:border-color .15s,box-shadow .15s}.field textarea{resize:vertical;min-height:70px}.field input:focus,.field textarea:focus,.search-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}.field input.invalid,.field textarea.invalid{border-color:var(--danger)}.field input.invalid:focus{box-shadow:0 0 0 3px var(--ring-danger)}.field input:disabled{background:var(--input-disabled-bg);color:var(--text-muted);cursor:not-allowed}.field-error{color:var(--danger);font-size:12.5px}.field-hint{color:var(--text-muted);font-size:12.5px}.field-hint.lookup-error{color:var(--danger)}.field-checkbox{justify-content:flex-end;padding-bottom:6px}.checkbox-label{display:flex!important;align-items:center;gap:8px;cursor:pointer;font-weight:500!important;color:var(--text)!important}.checkbox-label input{width:16px;height:16px;accent-color:var(--primary)}.form-banner{padding:10px 14px;border-radius:var(--radius-sm);font-size:13.5px}.banner-error{background:var(--danger-soft);border:1px solid var(--danger-border);color:var(--danger)}.form-note{padding:10px 14px;background:var(--primary-soft);border:1px solid var(--primary-border);border-radius:var(--radius-sm);color:var(--note-text);font-size:13px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.segmented{display:inline-flex;padding:3px;background:var(--control);border-radius:9px;gap:2px}.segmented button{padding:5px 14px;border:none;border-radius:7px;background:transparent;color:var(--text-secondary);font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s,color .15s,box-shadow .15s}.segmented button:hover{color:var(--text)}.segmented button.active{background:var(--surface);color:var(--primary);font-weight:600;box-shadow:var(--shadow-sm)}.segmented button.bootstrap-alert{color:var(--warning);font-weight:600}.segmented button.bootstrap-alert.active{color:var(--warning)}.chip{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:500;line-height:1.6;white-space:nowrap}.chip .icon{font-size:12px}.chip-category{background:var(--primary-soft);color:var(--primary);border:1px solid var(--primary-border)}.chip-tag{background:var(--chip-tag-bg);color:var(--text-secondary);border:1px solid var(--border)}.chip-shared{background:var(--warning-soft);color:var(--warning-text);border:1px solid var(--warning-border)}.chip-overdue{background:var(--danger-soft);color:var(--danger);border:1px solid var(--danger-border);font-weight:600}.chip-schedule{background:var(--surface);color:var(--text-secondary);border:1px solid var(--border)}.chip-schedule.chip-overdue-text{color:var(--danger);border-color:var(--danger-border)}.chip-role-view{background:var(--success-chip-bg);color:var(--success-chip-text);border:1px solid var(--success-chip-border)}.chip-role-edit{background:var(--primary-soft);color:var(--primary);border:1px solid var(--primary-border)}.todos-page{display:grid;grid-template-columns:230px 1fr;gap:24px;align-items:start}.todos-sidebar{position:sticky;top:84px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 12px;box-shadow:var(--shadow-sm)}.sidebar-title{font-size:13px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;padding:0 10px 8px}.sidebar-nav{display:flex;flex-direction:column;gap:2px}.sidebar-item{display:flex;align-items:center;gap:9px;width:100%;padding:8px 10px;border:none;border-radius:8px;background:transparent;color:var(--text-secondary);font-size:13.5px;font-weight:500;font-family:inherit;text-align:left;cursor:pointer;transition:background .15s,color .15s;word-break:break-all}.sidebar-item:hover{background:var(--highlight);color:var(--text)}.sidebar-item.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.sidebar-icon{font-size:14px;color:var(--text-muted)}.sidebar-item.active .sidebar-icon{color:var(--primary)}.sidebar-empty{padding:8px 10px;font-size:13px}.sidebar-hint{margin-top:12px;padding:10px;font-size:12px;border-top:1px solid var(--border);line-height:1.5}.todos-main{min-width:0}.todos-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.todos-header h1{font-size:22px;font-weight:800}.todos-header .muted{font-size:13px;margin-top:2px}.toolbar{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.search-box{position:relative;flex:1;min-width:200px;max-width:340px}.search-box .search-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);font-size:14px;color:var(--text-muted);pointer-events:none}.search-box .search-input{padding-left:32px}.sort-select{min-width:140px}.select-root{position:relative;display:inline-flex;vertical-align:middle}.select-block{width:100%}.select-trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:8px;flex:1;min-width:0;width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-family:inherit;font-size:14px;line-height:1.5;cursor:pointer;box-shadow:var(--shadow-sm);transition:border-color .15s,box-shadow .15s}.select-trigger:hover:not(:disabled){border-color:var(--border-strong)}.select-trigger:focus-visible,.select-root--open .select-trigger{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}.select-trigger:disabled{opacity:.5;cursor:not-allowed}.select-value{flex:1;min-width:0;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-value.is-placeholder{color:var(--text-muted)}.select-chevron{width:16px;height:16px;color:var(--text-muted);flex-shrink:0;transition:transform .18s ease}.select-root--open .select-chevron{transform:rotate(180deg)}.select-content{position:absolute;top:calc(100% + 6px);left:0;z-index:130;width:max-content;min-width:100%;max-width:min(340px,calc(100vw - 32px));max-height:280px;overflow-y:auto;overscroll-behavior:contain;padding:4px;margin:0;list-style:none;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-md);animation:select-in .15s ease}.select-content--up{top:auto;bottom:calc(100% + 6px)}@keyframes select-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.select-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border-radius:6px;font-size:13.5px;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none}.select-item-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select-item.is-highlighted{background:var(--highlight)}.select-item.is-selected{font-weight:500}.select-item.is-disabled{opacity:.5;pointer-events:none}.select-item-check{width:14px;height:14px;flex-shrink:0}.todo-list{display:flex;flex-direction:column;gap:10px}.todo-card{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;transition:box-shadow .15s,border-color .15s}.todo-card:hover{box-shadow:var(--shadow-md);border-color:var(--border-accent)}.todo-check{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-top:2px;border:2px solid var(--check-border);border-radius:50%;background:var(--surface);color:#fff;cursor:pointer;flex-shrink:0;transition:background .15s,border-color .15s;padding:0}.todo-check .icon{font-size:12px}.todo-check:hover:not(:disabled){border-color:var(--primary)}.todo-check.checked{background:var(--success);border-color:var(--success)}.todo-check:disabled{cursor:wait;opacity:.6}.todo-completed{opacity:.72}.todo-completed .todo-title{text-decoration:line-through;color:var(--text-muted)}.todo-body{flex:1;min-width:0}.todo-title-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.todo-title{font-size:15px;font-weight:600;word-break:break-word}.todo-description{margin-top:4px;color:var(--text-secondary);font-size:13.5px;white-space:pre-wrap;word-break:break-word}.todo-meta{display:flex;align-items:center;gap:6px;margin-top:8px;flex-wrap:wrap}.todo-time{color:var(--text-muted);font-size:12px}.todo-actions{display:flex;gap:2px;flex-shrink:0;opacity:0;transition:opacity .15s}.todo-card:hover .todo-actions,.todo-card:focus-within .todo-actions{opacity:1}@media(hover:none){.todo-actions{opacity:1}}.todo-list .card{animation:card-in .2s ease}@keyframes card-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.empty-state{display:flex;flex-direction:column;align-items:center;gap:10px;padding:56px 20px;text-align:center}.empty-icon{color:var(--empty-icon)}.empty-title{font-size:16px;font-weight:600}.pagination{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:20px;flex-wrap:wrap}.page-gap{color:var(--text-muted);padding:0 2px}.page-button{min-width:30px;height:30px;padding:0 8px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--text-secondary);font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.page-button:hover{border-color:var(--primary-border);color:var(--primary)}.page-button.active{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}.category-list{display:flex;flex-direction:column;gap:10px}.category-item{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;flex-wrap:wrap}.category-name{font-size:15.5px;font-weight:700}.category-info .muted{font-size:12.5px;margin-top:2px}.category-actions{display:flex;gap:8px;flex-wrap:wrap}.permission-panel{display:flex;flex-direction:column;gap:20px}.panel-hint{padding:10px 14px;background:var(--primary-soft);border:1px solid var(--primary-border);border-radius:var(--radius-sm);color:var(--note-text);font-size:13px}.permission-list h4,.permission-grant h4{font-size:13.5px;margin-bottom:10px;color:var(--text)}.empty-line{color:var(--text-muted);font-size:13px;padding:8px 0}.table{width:100%;border-collapse:collapse;font-size:13.5px}.table th{text-align:left;font-weight:600;color:var(--text-muted);font-size:12.5px;padding:6px 10px;border-bottom:1px solid var(--border)}.table td{padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table-actions{text-align:right}.grant-form{display:flex;flex-direction:column;gap:8px}.grant-fields{display:grid;grid-template-columns:1fr 170px auto;gap:12px;align-items:start}.grant-submit{margin-top:24px}.modal-overlay{position:fixed;inset:0;z-index:100;background:var(--overlay);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);overflow-y:auto;padding:40px 16px}.modal-overlay-center{display:grid;place-items:center}.modal-card{width:100%;background:var(--surface);border-radius:14px;box-shadow:var(--shadow-md);animation:modal-pop .18s ease}@keyframes modal-pop{0%{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px 0}.modal-header h3{font-size:16.5px;font-weight:700}.modal-close{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:8px;background:transparent;color:var(--text-muted);font-size:16px;cursor:pointer;transition:background .15s,color .15s}.modal-close:hover{background:var(--hover-strong);color:var(--text)}.modal-body{padding:18px 22px 22px}.confirm-card{max-width:400px;padding:22px 24px 20px}.confirm-title{font-size:16px;font-weight:700}.confirm-message{margin-top:8px;color:var(--text-secondary);font-size:13.5px;line-height:1.7;word-break:break-word}.confirm-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.toast-host{position:fixed;top:18px;right:18px;z-index:200;display:flex;flex-direction:column;gap:10px;pointer-events:none;max-width:min(400px,calc(100vw - 36px))}.toast{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;border-radius:10px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-md);font-size:13.5px;pointer-events:auto;animation:toast-in .22s ease}@keyframes toast-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}.toast-icon{font-size:18px;margin-top:1px}.toast-success .toast-icon{color:var(--success)}.toast-error .toast-icon{color:var(--danger)}.toast-warning .toast-icon{color:var(--warning)}.toast-info .toast-icon{color:var(--info-icon)}.toast-message{flex:1;word-break:break-word}.toast-close{display:inline-flex;align-items:center;border:none;background:transparent;color:var(--text-muted);font-size:13px;cursor:pointer;padding:2px}.toast-close:hover{color:var(--text)}.auth-page{min-height:100vh;display:grid;place-items:center;padding:32px 16px;background:radial-gradient(ellipse 80% 50% at 20% -10%,var(--auth-glow-1),transparent),radial-gradient(ellipse 60% 40% at 90% 10%,var(--auth-glow-2),transparent),var(--bg)}.auth-card{width:100%;max-width:430px;padding:32px 34px 26px}.auth-brand{text-align:center;margin-bottom:20px}.auth-brand .brand-logo{width:44px;height:44px;font-size:20px;border-radius:13px;margin-bottom:12px}.auth-brand h1{font-size:22px;font-weight:800}.auth-brand p{margin-top:4px;font-size:13px}.backend-field{margin-bottom:16px}.backend-row{display:flex;gap:8px}.backend-row input{flex:1;min-width:0}.conn-hint{display:flex;align-items:center;gap:7px}.conn-hint.conn-error{color:var(--danger)}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.checking{background:var(--text-muted);animation:pulse 1.2s ease-in-out infinite}.status-dot.ok{background:var(--success)}.status-dot.error{background:var(--danger)}@keyframes pulse{50%{opacity:.35}}.auth-tabs{width:100%;margin-bottom:20px}.auth-tabs button{flex:1}.auth-footer{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border);color:var(--text-muted);font-size:12px;text-align:center}.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.profile-card{grid-column:1 / -1;padding:22px 24px}.profile-identity{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.profile-identity .avatar{width:52px;height:52px;font-size:24px}.profile-nickname{font-size:19px;font-weight:800}.profile-identity .chip{margin-left:auto}.profile-facts{display:flex;gap:40px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border);flex-wrap:wrap}.profile-facts dt{font-size:12px;color:var(--text-muted);margin-bottom:2px}.profile-facts dd{font-size:13.5px;font-weight:600}.profile-section{padding:20px 22px 22px}.profile-section h3{font-size:15px;font-weight:700;margin-bottom:14px}.profile-heatmap-card{grid-column:1 / -1}.heatmap-summary{margin:-6px 0 14px;font-size:12.5px}.heatmap-scroll{overflow-x:auto;padding-bottom:4px}.heatmap-body{display:flex;gap:6px;width:max-content}.heatmap-weekdays{display:grid;grid-template-rows:repeat(7,11px);gap:3px;margin-top:18px}.heatmap-weekday{font-size:10px;line-height:11px;color:var(--text-muted)}.heatmap-months{display:flex;gap:3px;height:14px;margin-bottom:4px}.heatmap-month{flex:0 0 11px;font-size:10px;line-height:14px;color:var(--text-muted);white-space:nowrap}.heatmap-grid{display:flex;gap:3px}.heatmap-week{display:grid;grid-template-rows:repeat(7,11px);gap:3px}.heatmap-cell{width:11px;height:11px;border-radius:2px;background:var(--heat-0)}.heatmap-cell-empty{background:transparent}.heatmap-level-0{background:var(--heat-0)}.heatmap-level-1{background:var(--heat-1)}.heatmap-level-2{background:var(--heat-2)}.heatmap-level-3{background:var(--heat-3)}.heatmap-level-4{background:var(--heat-4)}.heatmap-legend{display:flex;align-items:center;justify-content:flex-end;gap:3px;margin-top:10px;font-size:11px}.tag-input{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:text;transition:border-color .15s,box-shadow .15s}.tag-input:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--ring)}.tag-input input{flex:1;min-width:120px;border:none!important;padding:3px 2px!important;background:transparent;font-size:13.5px;font-family:inherit;box-shadow:none!important}.tag-input input:focus{outline:none}.tag-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 4px 2px 9px;background:var(--primary-soft);border:1px solid var(--primary-border);color:var(--primary);border-radius:999px;font-size:12.5px;font-weight:500}.tag-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:none;border-radius:50%;background:transparent;color:var(--primary);font-size:11px;cursor:pointer;padding:0}.tag-remove:hover{background:var(--primary-border)}.tag-hint{width:100%;color:var(--warning);font-size:12px}.theme-toggle{width:32px;height:32px;font-size:16px}.locale-select{min-width:104px}.auth-controls{position:fixed;top:18px;right:18px;z-index:20;display:flex;align-items:center;gap:8px}@media(max-width:900px){.todos-page{grid-template-columns:1fr}.todos-sidebar{position:static}.sidebar-nav{flex-direction:row;flex-wrap:wrap}.sidebar-item{width:auto}.sidebar-hint{display:none}.profile-grid,.grant-fields{grid-template-columns:1fr}.grant-submit{margin-top:0}.app-nav{gap:0}.nav-link{padding:7px 10px}.nav-link .nav-label,.user-name{display:none}.user-chip{padding:4px}.user-chip .chip,.user-chip .user-menu-chevron{display:none}.form-row{grid-template-columns:1fr}}
