:root,:root[data-theme=light]{--color-bg: #FFFFFF;--color-bg-deep: #F4F5F7;--color-surface: #FFFFFF;--color-surface-soft: #F7F8FA;--color-surface-sand: #EEF0F3;--color-surface-hover: rgba(10, 22, 40, .04);--color-ink: #0F1A2C;--color-text: #0F1A2C;--color-text-2: #3D4A5C;--color-text-muted: #6B7585;--color-text-soft: #9AA3B2;--color-line: #E4E7EC;--color-line-soft: #EDEFF2;--color-line-strong: #C9CDD4;--color-brand: #1AA39C;--color-brand-hover: #138B85;--color-brand-deep: #0E6E6A;--color-brand-soft: #DFF1EF;--color-brand-glow: rgba(26, 163, 156, .18);--color-success: #2F7D5A;--color-success-soft: #E1EDE6;--color-warning: #B0741A;--color-warning-soft: #F4E9D2;--color-danger: #B23A3A;--color-danger-soft: #F2DCDC;--color-info: #2E5C9E;--color-info-soft: #DCE5F2;--shadow-xs: 0 1px 0 rgba(10, 22, 40, .04);--shadow-sm: 0 1px 2px rgba(10, 22, 40, .05), 0 0 0 1px rgba(10, 22, 40, .04);--shadow: 0 4px 16px rgba(10, 22, 40, .06), 0 0 0 1px rgba(10, 22, 40, .04);--shadow-lg: 0 24px 60px rgba(10, 22, 40, .14), 0 0 0 1px rgba(10, 22, 40, .05);--shadow-card: 0 1px 0 rgba(10, 22, 40, .03);--font-sans: "Lato", system-ui, -apple-system, "Segoe UI", "Helvetica Neue", sans-serif;--font-display: "Lato", system-ui, -apple-system, "Segoe UI", "Helvetica Neue", sans-serif;--font-mono: "Lato", system-ui, -apple-system, "Segoe UI", "Helvetica Neue", sans-serif;--text-2xs: .6875rem;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .9rem;--text-md: 1rem;--text-lg: 1.1875rem;--text-xl: 1.5rem;--text-2xl: 2rem;--text-3xl: 2.75rem;--text-4xl: 3.5rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--radius-xs: 2px;--radius-sm: 4px;--radius: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-pill: 999px;--ease: cubic-bezier(.22, .61, .36, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--duration-fast: .14s;--duration: .22s;--duration-slow: .42s;--sidebar-w: 244px;--topbar-h: 60px}:root[data-theme=dark]{--color-bg: #0F1419;--color-bg-deep: #080B0F;--color-surface: #161C24;--color-surface-soft: #1B222C;--color-surface-sand: #1E2630;--color-surface-hover: rgba(255, 255, 255, .04);--color-ink: #ECE9E1;--color-text: #ECE9E1;--color-text-2: #B8BBC2;--color-text-muted: #7E8693;--color-text-soft: #555E6C;--color-line: #232B36;--color-line-soft: #1C232E;--color-line-strong: #303A48;--color-brand: #2EC0B8;--color-brand-hover: #4FD1CA;--color-brand-deep: #1AA39C;--color-brand-soft: #103834;--color-brand-glow: rgba(46, 192, 184, .24);--color-success: #4FAE82;--color-success-soft: rgba(79, 174, 130, .14);--color-warning: #D49441;--color-warning-soft: rgba(212, 148, 65, .14);--color-danger: #D86464;--color-danger-soft: rgba(216, 100, 100, .14);--color-info: #6492D6;--color-info-soft: rgba(100, 146, 214, .14);--shadow-xs: 0 1px 0 rgba(0, 0, 0, .4);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3), 0 0 0 1px rgba(255, 255, 255, .04);--shadow: 0 4px 16px rgba(0, 0, 0, .4), 0 0 0 1px rgba(255, 255, 255, .04);--shadow-lg: 0 24px 60px rgba(0, 0, 0, .5), 0 0 0 1px rgba(255, 255, 255, .05);--shadow-card: 0 1px 0 rgba(0, 0, 0, .4)}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%;background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-line);border:2px solid var(--color-bg);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--color-line-strong)}.font-display{font-family:var(--font-display);font-weight:700;letter-spacing:-.02em}.font-mono{font-family:var(--font-sans);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.tnum{font-variant-numeric:tabular-nums}a{color:var(--color-brand);text-decoration:none}a:hover{color:var(--color-brand-hover);text-decoration:underline}a:focus-visible{outline:2px solid var(--color-brand);outline-offset:2px;border-radius:var(--radius-xs)}button{font-family:inherit;font-size:inherit}input,select,textarea{font-family:inherit}code,pre,kbd{font-family:var(--font-sans);font-size:.92em;font-variant-numeric:tabular-nums}::selection{background:var(--color-brand);color:#fff}.eyebrow{display:inline-block;font-family:var(--font-sans);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.16em;color:var(--color-brand);margin:0 0 var(--space-3)}.back-link{display:inline-flex;align-items:center;gap:.4rem;margin:0 0 var(--space-5);padding:.3rem .55rem .3rem .4rem;background:transparent;border:1px solid transparent;border-radius:var(--radius-pill);color:var(--color-text-muted);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:600;letter-spacing:.04em;cursor:pointer;text-decoration:none;transition:color var(--duration-fast) var(--ease),background-color var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.back-link:hover{color:var(--color-ink);background:var(--color-surface);border-color:var(--color-line);text-decoration:none}.back-link svg{transition:transform var(--duration-fast) var(--ease)}.back-link:hover svg{transform:rotate(180deg) translate(2px)}.eyebrow-num{color:var(--color-brand);font-weight:700}h1.display,.h1-display{font-family:var(--font-display);font-weight:900;font-size:var(--text-3xl);line-height:1.05;letter-spacing:-.02em;margin:0 0 var(--space-3);color:var(--color-ink)}.lede{font-size:var(--text-md);color:var(--color-text-2);margin:0 0 var(--space-8);max-width:64ch;line-height:1.55}.section-title{font-family:var(--font-display);font-weight:900;font-size:var(--text-xl);letter-spacing:-.015em;color:var(--color-ink);margin:0 0 var(--space-4)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;height:36px;padding:0 .95rem;border-radius:var(--radius-sm);border:1px solid transparent;font-size:var(--text-sm);font-weight:500;letter-spacing:.01em;cursor:pointer;transition:background-color var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),transform 80ms var(--ease);white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--color-brand);outline-offset:2px}.btn:active:not(:disabled){transform:translateY(1px)}.btn--primary{background:var(--color-ink);color:var(--color-surface);border-color:var(--color-ink)}.btn--primary:hover:not(:disabled){background:#1a2638;border-color:#1a2638}[data-theme=dark] .btn--primary{background:var(--color-brand);color:#0a1628;border-color:var(--color-brand)}[data-theme=dark] .btn--primary:hover:not(:disabled){background:var(--color-brand-hover);border-color:var(--color-brand-hover)}.btn--ghost{background:transparent;color:var(--color-text);border-color:var(--color-line)}.btn--ghost:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-line-strong)}.btn--brand{background:var(--color-brand);color:#fff;border-color:var(--color-brand)}.btn--brand:hover:not(:disabled){background:var(--color-brand-hover);border-color:var(--color-brand-hover)}.btn--danger{background:transparent;color:var(--color-danger);border-color:var(--color-line)}.btn--danger:hover:not(:disabled){background:var(--color-danger-soft);border-color:var(--color-danger)}.btn--icon{width:36px;height:36px;padding:0}.btn--sm{height:30px;padding:0 .7rem;font-size:var(--text-xs)}.btn--lg{height:44px;padding:0 1.35rem;font-size:var(--text-base)}.btn--link{background:transparent;border:none;color:var(--color-brand);padding:0;height:auto;font-weight:500}.btn--link:hover:not(:disabled){text-decoration:underline}.input,.select,.textarea{width:100%;height:40px;padding:0 .85rem;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-line);border-radius:var(--radius-sm);font-size:var(--text-base);transition:border-color var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease)}.textarea{height:auto;padding:.6rem .85rem;min-height:100px;line-height:1.55;resize:vertical}.input:hover:not(:disabled),.select:hover:not(:disabled),.textarea:hover:not(:disabled){border-color:var(--color-line-strong)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--color-brand);box-shadow:0 0 0 3px var(--color-brand-glow)}.input[aria-invalid=true]{border-color:var(--color-danger)}.field{display:flex;flex-direction:column;gap:.35rem}.field-label{font-size:var(--text-xs);font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}.field-error{font-size:var(--text-xs);color:var(--color-danger)}.field-help{font-size:var(--text-xs);color:var(--color-text-muted)}.checkbox{display:inline-flex;align-items:center;gap:.55rem;font-size:var(--text-sm);color:var(--color-text-2);cursor:pointer;-webkit-user-select:none;user-select:none}.checkbox input{margin:0;accent-color:var(--color-brand)}.card{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);box-shadow:var(--shadow-card)}.card__head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-line-soft)}.card__head h2{margin:0;font-family:var(--font-display);font-weight:900;font-size:var(--text-lg);letter-spacing:-.015em;color:var(--color-ink)}.card__sub{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);margin:0 0 var(--space-1);font-weight:700;font-family:var(--font-sans)}.card__body{padding:var(--space-5) var(--space-6)}.card__row{padding:var(--space-3) var(--space-6);border-top:1px solid var(--color-line-soft);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.card__row:first-child{border-top:none}.status{display:inline-flex;align-items:center;gap:.45rem;font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-muted);white-space:nowrap}.status:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px transparent}.status--filled{color:var(--color-text)}.status--filled:before{background:currentColor}.status--success{color:var(--color-success)}.status--success:before{box-shadow:0 0 0 3px var(--color-success-soft)}.status--warning{color:var(--color-warning)}.status--warning:before{box-shadow:0 0 0 3px var(--color-warning-soft)}.status--danger{color:var(--color-danger)}.status--danger:before{box-shadow:0 0 0 3px var(--color-danger-soft)}.status--info{color:var(--color-info)}.status--info:before{box-shadow:0 0 0 3px var(--color-info-soft)}.status--brand{color:var(--color-brand)}.status--brand:before{box-shadow:0 0 0 3px var(--color-brand-soft)}.status--muted{color:var(--color-text-muted)}.status--outline:before{background:transparent;border:1.5px solid currentColor;width:8px;height:8px}.kpi{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5) var(--space-6) var(--space-6);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);position:relative;overflow:hidden}.kpi__label{font-family:var(--font-sans);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-muted);display:flex;align-items:center;justify-content:space-between;gap:.5rem}.kpi__value{font-family:var(--font-display);font-weight:900;font-size:var(--text-3xl);font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1;color:var(--color-ink)}.kpi__value-unit{font-size:.45em;color:var(--color-brand);margin-left:.25em;font-weight:900;letter-spacing:-.005em;vertical-align:.18em}.kpi__meta{font-size:var(--text-xs);color:var(--color-text-muted);display:flex;align-items:center;gap:.4rem}.kpi__delta{font-weight:500;font-variant-numeric:tabular-nums}.kpi__delta--up{color:var(--color-success)}.kpi__delta--down{color:var(--color-danger)}.kpi__accent{position:absolute;inset:0 0 auto auto;width:4px;height:100%;background:var(--color-brand);opacity:0;transition:opacity var(--duration) var(--ease)}.kpi:hover .kpi__accent{opacity:1}.tbl{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.tbl thead th{text-align:left;padding:.85rem 1rem;font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:500;text-transform:uppercase;letter-spacing:.14em;color:var(--color-text-muted);border-bottom:1px solid var(--color-line);background:transparent;white-space:nowrap}.tbl tbody td{padding:.95rem 1rem;border-bottom:1px solid var(--color-line-soft);vertical-align:middle;color:var(--color-text)}.tbl tbody tr{cursor:pointer;transition:background-color 80ms ease}.tbl tbody tr:hover{background:var(--color-surface-hover)}.tbl tbody tr:last-child td{border-bottom:none}.tbl td.num,.tbl th.num{text-align:right;font-variant-numeric:tabular-nums}.tbl td.tight{padding-top:.5rem;padding-bottom:.5rem}.tbl-wrap{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);overflow:hidden}.chips{display:inline-flex;align-items:center;padding:3px;background:var(--color-surface-sand);border:1px solid var(--color-line);border-radius:var(--radius-pill);gap:1px}.chip{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;height:28px;border-radius:var(--radius-pill);background:transparent;border:none;color:var(--color-text-muted);cursor:pointer;font-size:var(--text-xs);font-weight:500;letter-spacing:.02em;white-space:nowrap;transition:background-color var(--duration-fast),color var(--duration-fast)}.chip:hover:not(.chip--active){color:var(--color-text)}.chip--active{background:var(--color-surface);color:var(--color-ink);box-shadow:var(--shadow-sm)}.chip__count{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--color-text-soft);letter-spacing:0}.chip--active .chip__count{color:var(--color-text-2)}.banner{padding:.75rem 1rem;border-radius:var(--radius-sm);font-size:var(--text-sm);display:flex;align-items:center;gap:.6rem}.banner--error{background:var(--color-danger-soft);color:var(--color-danger);border:1px solid color-mix(in srgb,var(--color-danger) 25%,transparent)}.banner--success{background:var(--color-success-soft);color:var(--color-success);border:1px solid color-mix(in srgb,var(--color-success) 25%,transparent)}.banner--info{background:var(--color-info-soft);color:var(--color-info);border:1px solid color-mix(in srgb,var(--color-info) 25%,transparent)}.empty{padding:var(--space-12) var(--space-6);text-align:center;background:var(--color-surface);border:1px dashed var(--color-line);border-radius:var(--radius-md)}.empty__title{font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);letter-spacing:-.025em;color:var(--color-ink);margin:0 0 var(--space-2)}.empty__text{color:var(--color-text-muted);margin:0 auto var(--space-5);max-width:44ch;font-size:var(--text-base)}.spinner{width:18px;height:18px;border:2px solid var(--color-line);border-top-color:var(--color-brand);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.spinner--lg{width:32px;height:32px;border-width:3px}@keyframes spin{to{transform:rotate(360deg)}}.page-loading{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--color-bg)}.dlist{display:grid;grid-template-columns:200px 1fr;gap:.6rem 1.5rem;font-size:var(--text-sm)}.dlist dt{font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-muted);padding-top:.15rem}.dlist dd{margin:0;color:var(--color-text)}.dlist dd .muted{color:var(--color-text-muted);font-style:italic}@media (max-width: 720px){.dlist{grid-template-columns:1fr;gap:.15rem 0}.dlist dd{margin:0 0 .85rem}}.greet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--color-bg);display:flex;align-items:center;justify-content:center;z-index:10000;opacity:0;transition:opacity .5s var(--ease)}.greet-overlay.is-active{opacity:1}.greet-content{text-align:center;animation:greet-up .6s var(--ease-out)}.greet-logo{width:120px;height:120px;margin:0 auto 2rem;display:block;object-fit:contain;animation:greet-pulse 2s ease-in-out infinite}.greet-text{font-family:var(--font-display);font-weight:700;font-size:2.5rem;letter-spacing:-.035em;color:var(--color-ink);margin:0;animation:greet-fade .8s ease .3s both}@keyframes greet-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes greet-fade{0%{opacity:0}to{opacity:1}}@keyframes greet-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.13);opacity:.85}}@media (max-width: 640px){.greet-logo{width:96px;height:96px;margin-bottom:1.5rem}.greet-text{font-size:1.75rem}}.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;background:var(--color-bg)}.sidebar{position:sticky;top:0;height:100vh;background:var(--color-surface);border-right:1px solid var(--color-line);display:flex;flex-direction:column;overflow-y:auto;z-index:50}.sidebar__brand{display:flex;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid var(--color-line-soft);text-decoration:none;color:var(--color-ink);min-height:var(--topbar-h);cursor:pointer;transition:background-color var(--duration-fast) var(--ease)}.sidebar__brand:hover{background:var(--color-surface-hover);text-decoration:none}.sidebar__brand:focus-visible{outline:2px solid var(--color-brand);outline-offset:-2px}.sidebar__brand-logo{width:100%;max-width:200px;height:auto;object-fit:contain;display:block}.sidebar__brand-logo--light{display:block}.sidebar__brand-logo--dark,[data-theme=dark] .sidebar__brand-logo--light{display:none}[data-theme=dark] .sidebar__brand-logo--dark{display:block}.sidebar__nav{flex:1;padding:1rem .65rem 1.5rem;display:flex;flex-direction:column;gap:1.25rem}.nav-section__title{margin:0 0 .5rem .75rem;font-family:var(--font-mono);font-size:.65rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--color-text-muted)}.nav-section ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.nav-link{display:flex;align-items:center;gap:.55rem;padding:.5rem .75rem;border-radius:var(--radius-sm);color:var(--color-text-2);text-decoration:none;font-size:var(--text-sm);font-weight:500;transition:background-color 80ms ease,color 80ms ease;position:relative}.nav-link:hover{background:var(--color-surface-hover);color:var(--color-ink);text-decoration:none}.nav-link.is-active{color:var(--color-ink);background:var(--color-surface-sand);font-weight:600}[data-theme=dark] .nav-link.is-active{background:var(--color-surface-soft);color:var(--color-brand)}.nav-link.is-active:before{content:"";position:absolute;left:-8px;top:50%;transform:translateY(-50%);width:3px;height:18px;background:var(--color-brand);border-radius:0 2px 2px 0}.nav-link__icon{width:16px;height:16px;color:var(--color-text-muted);flex-shrink:0}.nav-link.is-active .nav-link__icon{color:var(--color-brand)}.sidebar__foot{padding:.85rem 1rem 1.1rem;border-top:1px solid var(--color-line-soft);font-family:var(--font-mono);font-size:.6rem;text-transform:uppercase;letter-spacing:.16em;color:var(--color-text-soft);text-align:center}.topbar{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--color-bg) 85%,transparent);-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--color-line);height:var(--topbar-h);padding:0 1.5rem;display:flex;align-items:center;gap:1rem}.topbar__search{max-width:360px;width:clamp(220px,28vw,360px);display:flex;align-items:center;gap:.55rem;padding:.4rem .85rem;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-pill);color:var(--color-text-muted);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--duration-fast),color var(--duration-fast)}.topbar__search:hover{border-color:var(--color-line-strong);color:var(--color-text)}.topbar__search-icon{width:14px;height:14px;color:var(--color-text-muted)}.topbar__search-text{flex:1}.topbar__search-key{display:inline-flex;align-items:center;gap:2px;font-size:.65rem;background:var(--color-surface-soft);color:var(--color-text-muted);padding:.18rem .45rem;border-radius:var(--radius-xs);letter-spacing:.05em;border:1px solid var(--color-line-soft)}.topbar__actions{display:flex;align-items:center;gap:.6rem;margin-left:auto}.topbar__user{display:flex;align-items:center;gap:.55rem;padding:.3rem .55rem .3rem .35rem;border-radius:var(--radius-pill);border:1px solid var(--color-line);background:var(--color-surface);font-size:var(--text-sm);color:var(--color-text);cursor:pointer}.topbar__user:hover{border-color:var(--color-line-strong)}.user-avatar{width:26px;height:26px;border-radius:50%;background:var(--color-ink);color:var(--color-surface);display:grid;place-items:center;font-family:var(--font-display);font-weight:600;font-size:.7rem;letter-spacing:.02em}[data-theme=dark] .user-avatar{background:var(--color-brand);color:#0a1628}.topbar__user-name{line-height:1.1}.topbar__user-name small{display:block;color:var(--color-text-muted);font-size:.7rem;margin-top:1px}.theme-toggle{display:inline-flex;align-items:center;padding:2px;background:var(--color-surface-sand);border:1px solid var(--color-line);border-radius:var(--radius-pill);gap:1px}.theme-toggle button{display:inline-grid;place-items:center;width:28px;height:28px;border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;border-radius:999px;transition:background-color var(--duration-fast),color var(--duration-fast)}.theme-toggle button:hover{color:var(--color-text)}.theme-toggle button.is-active{background:var(--color-surface);color:var(--color-ink);box-shadow:var(--shadow-sm)}.burger{display:none;align-items:center;justify-content:center;width:36px;height:36px;background:transparent;border:1px solid var(--color-line);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;flex-shrink:0}.app__main{min-width:0;display:flex;flex-direction:column}.page{flex:1;padding:2.5rem 2.5rem 4rem;max-width:1320px;width:100%;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1.5rem;margin-bottom:2.5rem;flex-wrap:wrap;border-bottom:1px solid var(--color-line);padding-bottom:1.75rem}.page-head__title{flex:1;min-width:250px}.page-head__actions{display:flex;align-items:center;gap:.5rem}.sidebar-backdrop{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#0a162880;z-index:40;opacity:0;pointer-events:none;transition:opacity .2s ease}.cmdk-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a16288c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:14vh 1rem 1rem;animation:fade .15s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.cmdk{width:100%;max-width:560px;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden;animation:cmdk-in .18s var(--ease-out)}@keyframes cmdk-in{0%{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.cmdk__input{display:flex;align-items:center;gap:.75rem;padding:.95rem 1.15rem;border-bottom:1px solid var(--color-line-soft)}.cmdk__input input{flex:1;background:transparent;border:none;outline:none;font-size:var(--text-md);color:var(--color-text)}.cmdk__list{max-height:50vh;overflow-y:auto;padding:.4rem}.cmdk__group-title{font-family:var(--font-mono);font-size:.65rem;text-transform:uppercase;letter-spacing:.16em;color:var(--color-text-muted);padding:.7rem .85rem .35rem}.cmdk__item{display:flex;align-items:center;gap:.6rem;padding:.55rem .85rem;border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-sm);color:var(--color-text)}.cmdk__item:hover,.cmdk__item.is-active{background:var(--color-surface-sand)}[data-theme=dark] .cmdk__item:hover,[data-theme=dark] .cmdk__item.is-active{background:var(--color-surface-soft)}.cmdk__item small{margin-left:auto;font-family:var(--font-mono);font-size:.65rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.1em}.cmdk__empty{padding:2.5rem 1rem;text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}@media (max-width: 1024px){.page{padding:1.75rem 1.5rem 3rem}}@media (max-width: 880px){.app{grid-template-columns:1fr}.sidebar{position:fixed;inset:0 auto 0 0;width:280px;transform:translate(-100%);transition:transform .25s var(--ease);box-shadow:4px 0 24px #0a16282e}.app.is-sidebar-open .sidebar{transform:translate(0)}.app.is-sidebar-open .sidebar-backdrop{display:block;opacity:1;pointer-events:auto}.burger{display:inline-flex}.topbar__search{max-width:none}.topbar__user-name{display:none}}@media (max-width: 600px){.page{padding:1.25rem 1rem 2.5rem}.topbar{padding:0 1rem}}.tt-loading{padding:1rem;color:var(--color-text-muted);font-size:var(--text-sm)}.tt-wrap{border:1px solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);overflow:hidden}.tt-toolbar{display:flex;align-items:center;gap:2px;padding:.4rem .5rem;border-bottom:1px solid var(--color-line-soft);background:var(--color-surface-soft);flex-wrap:wrap}.tt-btn{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 .45rem;background:transparent;border:1px solid transparent;color:var(--color-text-2);border-radius:var(--radius-xs);cursor:pointer;font-size:var(--text-sm);font-weight:500;transition:background-color var(--duration-fast),color var(--duration-fast)}.tt-btn:hover{background:var(--color-surface-hover);color:var(--color-ink)}.tt-btn.is-active{background:var(--color-ink);color:var(--color-surface)}[data-theme=dark] .tt-btn.is-active{background:var(--color-brand);color:#0a1628}.tt-divider{width:1px;height:18px;background:var(--color-line);margin:0 4px}.tt-content{padding:1rem 1.15rem;min-height:200px}.tt-content .ProseMirror{outline:none;min-height:180px;line-height:1.55}.tt-content .ProseMirror p{margin:.45em 0}.tt-content .ProseMirror h2{font-family:var(--font-display);font-weight:700;letter-spacing:-.02em;font-size:1.3em;margin:.85em 0 .4em}.tt-content .ProseMirror h3{font-family:var(--font-display);font-weight:700;letter-spacing:-.015em;font-size:1.1em;margin:.75em 0 .35em}.tt-content .ProseMirror ul,.tt-content .ProseMirror ol{padding-left:1.5rem}.tt-content .ProseMirror a{color:var(--color-brand);text-decoration:underline}.autocomplete{position:relative}.compact-input .input,.compact-input input.input{height:32px;font-size:var(--text-xs)}.autocomplete__list{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-sm);box-shadow:var(--shadow);max-height:220px;overflow-y:auto;z-index:60;padding:4px}.autocomplete__item{display:block;width:100%;text-align:left;padding:.45rem .7rem;background:transparent;border:none;border-radius:var(--radius-xs);font-size:var(--text-sm);color:var(--color-text);cursor:pointer;transition:background-color var(--duration-fast)}.autocomplete__item:hover{background:var(--color-surface-hover)}.bell{position:relative;display:inline-block}.bell__btn{position:relative}.bell__count{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;background:var(--color-danger);color:#fff;font-family:var(--font-mono);font-size:.6rem;font-weight:600;line-height:16px;text-align:center;border-radius:999px;border:1.5px solid var(--color-bg)}.bell__panel{position:absolute;top:calc(100% + 8px);right:0;width:360px;max-width:90vw;max-height:480px;overflow-y:auto;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:80;animation:bell-in .16s var(--ease-out)}@keyframes bell-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.bell__head{display:flex;align-items:center;justify-content:space-between;padding:.7rem .95rem;border-bottom:1px solid var(--color-line-soft)}.bell__title{font-family:var(--font-display);font-weight:700;letter-spacing:-.01em;font-size:var(--text-sm);color:var(--color-ink)}.bell__empty{padding:1.5rem 1rem;text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}.bell__item{display:block;width:100%;text-align:left;padding:.7rem .95rem;background:transparent;border:none;border-bottom:1px solid var(--color-line-soft);cursor:pointer;color:var(--color-text);transition:background-color var(--duration-fast)}.bell__item:hover{background:var(--color-surface-hover)}.bell__item.is-read{opacity:.65}.bell__item-row{display:flex;justify-content:space-between;gap:.5rem;align-items:baseline}.bell__item-row strong{font-size:var(--text-sm);font-weight:600;color:var(--color-ink)}.bell__item-row small{font-family:var(--font-mono);font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;color:var(--color-text-muted);white-space:nowrap}.bell__item-body{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:4px;line-height:1.45}.bell__foot{display:block;width:100%;text-align:center;padding:.7rem;background:transparent;border:none;border-top:1px solid var(--color-line-soft);font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--color-brand);cursor:pointer}.bell__foot:hover{background:var(--color-surface-hover)}.tabs{display:flex;align-items:center;gap:.25rem;border-bottom:1px solid var(--color-line);margin-bottom:1.5rem;overflow-x:auto}.tab{background:transparent;border:none;border-bottom:2px solid transparent;padding:.7rem 1rem;margin-bottom:-1px;font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted);cursor:pointer;transition:color var(--duration-fast),border-color var(--duration-fast);white-space:nowrap}.tab:hover{color:var(--color-text)}.tab.is-active{color:var(--color-ink);border-bottom-color:var(--color-ink);font-weight:600}[data-theme=dark] .tab.is-active{color:var(--color-brand);border-bottom-color:var(--color-brand)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem 1.25rem}.form-grid .field-wide{grid-column:1 / -1}.filter-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.25rem;flex-wrap:wrap}.filter-bar__search{display:flex;align-items:center;gap:.55rem;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-pill);padding:.35rem .85rem;min-width:240px;transition:border-color var(--duration-fast),box-shadow var(--duration-fast)}.filter-bar__search:focus-within{border-color:var(--color-brand);box-shadow:0 0 0 3px var(--color-brand-glow)}.filter-bar__search input{flex:1;border:none;outline:none;background:transparent;font-size:var(--text-sm);color:var(--color-text)}.toolbar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.toolbar__sep{width:1px;height:20px;background:var(--color-line);margin:0 .25rem}.status-strip{display:flex;flex-wrap:wrap;gap:1.5rem 2rem;padding:1rem 1.25rem;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);margin-bottom:2rem}.status-strip__item{display:flex;flex-direction:column;gap:4px;min-width:110px}.status-strip__label{font-family:var(--font-mono);font-size:.65rem;text-transform:uppercase;letter-spacing:.14em;color:var(--color-text-muted);font-weight:500}.status-strip__value{font-size:var(--text-sm);color:var(--color-text)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a16288c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:flex-start;justify-content:center;padding:8vh 1rem 1rem;animation:fade .15s ease}.modal{width:100%;max-width:560px;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden;animation:cmdk-in .18s var(--ease-out)}.modal__head{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--color-line-soft)}.modal__head h2{margin:0;font-family:var(--font-display);font-weight:900;letter-spacing:-.015em;font-size:var(--text-lg);color:var(--color-ink)}.modal__body{padding:1.25rem}.modal__foot{padding:.85rem 1.25rem;border-top:1px solid var(--color-line-soft);display:flex;justify-content:flex-end;gap:.5rem;background:var(--color-surface-soft)}.save-status{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-muted)}.save-status:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.save-status.is-saving{color:var(--color-warning)}.save-status.is-saved{color:var(--color-success)}.save-status.is-error{color:var(--color-danger)}.detail-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:2rem}@media (max-width: 980px){.detail-grid{grid-template-columns:1fr}}.stepper{display:flex;align-items:flex-start;gap:4px;overflow-x:auto;padding:.5rem 0}.stepper__step{flex:1;min-width:80px;display:flex;flex-direction:column;align-items:center;position:relative}.stepper__bar{position:absolute;top:14px;left:-50%;width:100%;height:2px;background:var(--color-line);z-index:0}.stepper__bar.is-active{background:var(--color-brand)}.stepper__node{width:30px;height:30px;border-radius:50%;border:2px solid var(--color-line);background:var(--color-surface);display:grid;place-items:center;font-family:var(--font-mono);font-size:.75rem;font-weight:600;color:var(--color-text-muted);z-index:1;transition:all var(--duration) var(--ease)}.stepper__node.is-past,.stepper__node.is-current{background:var(--color-brand);border-color:var(--color-brand);color:#fff}.stepper__node.is-current{box-shadow:0 0 0 4px var(--color-brand-soft)}.stepper__label{margin-top:8px;font-family:var(--font-mono);font-size:.65rem;text-transform:uppercase;letter-spacing:.12em;color:var(--color-text-muted);text-align:center;line-height:1.2}.stepper__label small{display:block;font-size:.85em;opacity:.7}.stepper__step:has(.stepper__node.is-current) .stepper__label{color:var(--color-brand);font-weight:700}.dropzone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.85rem;padding:3.25rem 2rem;background:linear-gradient(180deg,var(--color-surface) 0%,var(--color-surface-soft) 100%);border:1px dashed var(--color-line);border-radius:var(--radius-lg);cursor:pointer;text-align:center;transition:transform var(--duration) var(--ease-out),border-color var(--duration) var(--ease-out),background var(--duration) var(--ease-out),box-shadow var(--duration) var(--ease-out);box-shadow:0 1px #0a162805}.dropzone:hover{border-color:var(--color-line-strong);background:linear-gradient(180deg,var(--color-surface) 0%,var(--color-bg-deep) 100%)}.dropzone.is-over{border-color:var(--color-brand);border-style:solid;background:linear-gradient(180deg,var(--color-surface) 0%,var(--color-brand-soft) 100%);transform:scale(1.005);box-shadow:0 18px 50px -12px var(--color-brand-glow),0 0 0 4px var(--color-brand-glow)}.dropzone.is-busy{cursor:wait;pointer-events:none;opacity:.85}.dropzone__glyph{display:grid;place-items:center;width:56px;height:56px;border-radius:999px;background:var(--color-brand-soft);color:var(--color-brand-deep);transition:transform var(--duration-slow) var(--ease-out)}.dropzone.is-over .dropzone__glyph{transform:translateY(-4px) scale(1.06)}.dropzone__title{margin:0;font-family:var(--font-display);font-weight:900;letter-spacing:-.015em;font-size:var(--text-xl);color:var(--color-ink)}.dropzone__hint{margin:0;font-size:var(--text-sm);color:var(--color-text-muted)}.dropzone__cta{margin-top:.4rem;font-size:var(--text-sm);color:var(--color-brand-deep);font-weight:600}.dropzone input[type=file]{display:none}.surface{background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1.5rem 1.75rem;transition:box-shadow var(--duration) var(--ease-out),transform var(--duration) var(--ease-out)}.surface--hover:hover{box-shadow:var(--shadow);transform:translateY(-1px)}.surface--inset{background:var(--color-surface-soft);box-shadow:inset 0 0 0 1px var(--color-line-soft)}.list-rows{display:flex;flex-direction:column;gap:.5rem}.list-row{display:grid;align-items:center;gap:1rem;padding:.95rem 1.15rem;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:0 0 0 1px var(--color-line-soft);transition:box-shadow var(--duration) var(--ease-out),transform var(--duration-fast) var(--ease-out),background var(--duration) var(--ease-out);text-decoration:none;color:inherit}.list-row:hover{box-shadow:0 8px 24px -8px #0a16281a,0 0 0 1px var(--color-line);transform:translateY(-1px);background:var(--color-surface)}.list-row--muted{opacity:.55}.list-row__title{font-weight:600;color:var(--color-ink);letter-spacing:-.005em}.list-row__sub{font-size:var(--text-xs);color:var(--color-text-muted)}.segmented{display:inline-flex;background:var(--color-surface-soft);padding:3px;border-radius:999px;box-shadow:inset 0 0 0 1px var(--color-line-soft);gap:2px}.segmented__item{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;padding:.4rem .95rem;border-radius:999px;font-size:var(--text-xs);font-weight:500;color:var(--color-text-muted);cursor:pointer;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out);white-space:nowrap;font-family:inherit}.segmented__item:hover{color:var(--color-text)}.segmented__item.is-active{background:var(--color-surface);color:var(--color-ink);box-shadow:0 1px 2px #0a162814,0 0 0 1px #0a16280a}.segmented__count{margin-left:.4rem;font-variant-numeric:tabular-nums;color:var(--color-text-soft);font-size:.92em}.segmented__item.is-active .segmented__count{color:var(--color-text-muted)}.copy-value{display:inline-flex;align-items:center;gap:.35rem;position:relative}.copy-value__btn{display:inline-grid;place-items:center;width:22px;height:22px;padding:0;background:transparent;border:0;border-radius:var(--radius-xs);color:var(--color-text-soft);cursor:pointer;opacity:0;transition:opacity var(--duration-fast) var(--ease),background-color var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.copy-value:hover .copy-value__btn,.copy-value__btn:focus-visible{opacity:1}.copy-value__btn:hover{background:var(--color-surface-hover);color:var(--color-text)}.copy-value__btn.is-copied{opacity:1;color:var(--color-success)}tr:hover .copy-value__btn{opacity:1}@supports (view-transition-name: none){::view-transition-old(*),::view-transition-new(*){animation-duration:.32s;animation-timing-function:cubic-bezier(.16,1,.3,1)}}.match-badge{display:grid;place-items:center;width:28px;height:28px;border-radius:999px;flex-shrink:0;transition:transform var(--duration-fast) var(--ease-out)}.match-badge svg{width:14px;height:14px;display:block}.match-badge--success{background:var(--color-success-soft);color:var(--color-success)}.match-badge--warning{background:var(--color-warning-soft);color:var(--color-warning)}.match-badge--danger{background:var(--color-danger-soft);color:var(--color-danger)}.match-badge--muted{background:var(--color-surface-soft);color:var(--color-text-soft);box-shadow:inset 0 0 0 1px var(--color-line-soft)}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-bottom:3rem}.login-shell{min-height:100vh;background:var(--color-bg);color:var(--color-text);display:flex;align-items:center;justify-content:center;padding:2rem 1rem;position:relative}.login-theme{position:absolute;top:1.5rem;right:1.5rem}.login-card{width:100%;max-width:380px;display:flex;flex-direction:column;gap:2rem;animation:login-card-in .55s var(--ease-out)}@keyframes login-card-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.login-card__logo{width:100%;max-width:280px;height:auto;object-fit:contain;margin:0 auto;display:block}.login-card__logo--light{display:block}.login-card__logo--dark,[data-theme=dark] .login-card__logo--light{display:none}[data-theme=dark] .login-card__logo--dark{display:block}.login-card__form{display:flex;flex-direction:column;gap:1rem}@media (max-width: 480px){.login-card{max-width:100%}.login-card__logo{max-width:220px}}.tasks-layout{display:flex;min-height:calc(100vh - var(--topbar-h, 60px));background:var(--color-bg)}.tasks-layout__main{flex:1;min-width:0;padding:var(--space-6) var(--space-8)}@media (max-width: 900px){.tasks-layout__main{padding:var(--space-4)}}.projects-sidebar{width:240px;flex-shrink:0;background:var(--color-surface-soft);border-right:1px solid var(--color-line);display:flex;flex-direction:column;position:sticky;top:var(--topbar-h, 60px);align-self:flex-start;max-height:calc(100vh - var(--topbar-h, 60px));overflow:hidden;transition:width var(--duration) var(--ease)}.projects-sidebar.is-collapsed{width:44px}.projects-sidebar__head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-4) var(--space-2)}.projects-sidebar__head h2{margin:0;font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted)}.projects-sidebar.is-collapsed .projects-sidebar__head h2{display:none}.projects-sidebar__toggle{background:transparent;border:1px solid transparent;border-radius:var(--radius);padding:4px 6px;cursor:pointer;color:var(--color-text-muted)}.projects-sidebar__toggle:hover{background:var(--color-surface-hover)}.projects-sidebar__body{flex:1;overflow-y:auto;padding:0 var(--space-2) var(--space-2)}.projects-sidebar__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.projects-sidebar__sep{height:1px;background:var(--color-line);margin:var(--space-3) var(--space-2)}.projects-sidebar__item-wrap{display:flex;align-items:center;gap:2px}.projects-sidebar__item-wrap:hover .projects-sidebar__star,.projects-sidebar__star.is-favorite{opacity:1}.projects-sidebar__item{flex:1;display:flex;align-items:center;gap:var(--space-2);padding:6px var(--space-2) 6px var(--space-2);border-radius:var(--radius);text-decoration:none;color:var(--color-text);font-size:var(--text-sm);min-width:0}.projects-sidebar__item:hover{background:var(--color-surface-hover)}.projects-sidebar__item.is-active{background:var(--color-brand-soft);color:var(--color-brand-deep);font-weight:600}.projects-sidebar__name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.projects-sidebar__count{font-size:var(--text-2xs);font-variant-numeric:tabular-nums;color:var(--color-text-muted);background:var(--color-line);border-radius:var(--radius-pill, 999px);padding:1px 7px}.projects-sidebar__item.is-active .projects-sidebar__count{background:var(--color-brand);color:#fff}.projects-sidebar__star{flex-shrink:0;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;color:var(--color-text-soft);opacity:0;padding:0;border-radius:var(--radius);transition:opacity var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease)}.projects-sidebar__star:hover{color:var(--color-warning);background:var(--color-surface-hover)}.projects-sidebar__star.is-favorite{color:var(--color-warning)}.projects-sidebar__loading,.projects-sidebar__empty{padding:var(--space-4) var(--space-2);font-size:var(--text-xs);color:var(--color-text-muted)}.projects-sidebar__foot{padding:var(--space-3) var(--space-2);border-top:1px solid var(--color-line)}.projects-sidebar__add{width:100%;justify-content:flex-start;gap:var(--space-2)}.projects-sidebar.is-collapsed .projects-sidebar__body,.projects-sidebar.is-collapsed .projects-sidebar__foot{display:none}.project-dot{display:inline-block;border-radius:50%;flex-shrink:0}.tasks-page{display:flex;flex-direction:column;gap:var(--space-4)}.tasks-page--empty{padding:var(--space-8) 0;text-align:center;color:var(--color-text-muted)}.tasks-page--empty h2{font-size:var(--text-xl);margin:0 0 var(--space-2);color:var(--color-text)}.tasks-page__loading{padding:var(--space-8) 0;display:flex;justify-content:center}.task-filter-bar{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center;padding:var(--space-2) 0}.task-filter-bar__select{font:inherit;font-size:var(--text-xs);padding:6px 10px;border-radius:var(--radius);border:1px solid var(--color-line);background:var(--color-surface);color:var(--color-text);cursor:pointer}.task-filter-bar__select:hover{border-color:var(--color-line-strong)}.task-filter-bar__clear{font:inherit;font-size:var(--text-xs);background:transparent;border:1px solid transparent;color:var(--color-text-muted);padding:6px 10px;border-radius:var(--radius);cursor:pointer}.task-filter-bar__clear:hover{color:var(--color-text);background:var(--color-surface-hover)}.task-quick-add{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-surface);border:1px dashed var(--color-line);border-radius:var(--radius);color:var(--color-text-muted);transition:border-color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease)}.task-quick-add:focus-within{border-color:var(--color-brand);background:var(--color-brand-soft)}.task-quick-add__input{flex:1;border:none;background:transparent;font:inherit;font-size:var(--text-sm);color:var(--color-text);outline:none}.task-list{display:flex;flex-direction:column;gap:1px;background:var(--color-line-soft);border-radius:var(--radius);border:1px solid var(--color-line);overflow:visible}.task-row{display:grid;grid-template-columns:16px 20px 1fr 56px 110px 24px;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-surface);font-size:var(--text-sm);transition:background var(--duration-fast) var(--ease);position:relative}.task-row:first-child{border-top-left-radius:calc(var(--radius) - 1px);border-top-right-radius:calc(var(--radius) - 1px)}.task-row:last-child{border-bottom-left-radius:calc(var(--radius) - 1px);border-bottom-right-radius:calc(var(--radius) - 1px)}.task-row:hover{background:var(--color-surface-soft)}.task-row.is-dragging{z-index:5;box-shadow:var(--shadow)}.task-row--done .task-row__title-text{text-decoration:line-through;color:var(--color-text-soft)}.task-row--overdue .due-date-chip{color:var(--color-danger)}.task-row--overdue .due-date-chip__btn{color:var(--color-danger);font-weight:600}.task-row__drag{background:transparent;border:none;cursor:grab;color:var(--color-line-strong);padding:4px;border-radius:var(--radius-xs);opacity:0;transition:opacity var(--duration-fast) var(--ease);touch-action:none}.task-row:hover .task-row__drag{opacity:1}.task-row__drag:active{cursor:grabbing}.task-row__check{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--color-line-strong);background:var(--color-surface);cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;color:transparent;transition:all var(--duration-fast) var(--ease)}.task-row__check:hover{border-color:var(--color-brand)}.task-row__check.is-checked{background:var(--color-brand);border-color:var(--color-brand);color:#fff}.task-row__title{display:flex;align-items:center;gap:var(--space-2);background:transparent;border:none;cursor:pointer;text-align:left;padding:0;font:inherit;font-size:var(--text-sm);color:var(--color-text);min-width:0}.task-row__title:hover .task-row__title-text{text-decoration:underline}.task-row__title-text{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-row__project{font-size:var(--text-2xs);color:var(--color-text-muted);padding:1px 6px;background:var(--color-surface-sand);border-radius:var(--radius-pill, 999px)}.task-row__slot{display:flex;align-items:center;justify-content:center;height:100%;border-left:1px solid var(--color-line-soft);padding-left:var(--space-2)}.task-row__slot--date{justify-content:flex-start}.task-row__delete{background:transparent;border:none;cursor:pointer;color:var(--color-text-soft);padding:6px;border-radius:var(--radius);opacity:0;transition:opacity var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.task-row:hover .task-row__delete{opacity:1}.task-row__delete:hover{color:var(--color-danger);background:var(--color-danger-soft)}.sim-table-wrap{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);overflow-x:auto;overflow-y:visible}.inline-cell{width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:var(--radius-xs);padding:4px 8px;font:inherit;font-size:var(--text-sm);color:var(--color-text);cursor:text;transition:border-color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease)}.inline-cell:hover:not(:disabled){border-color:var(--color-line);background:var(--color-surface-hover)}.inline-cell:disabled{cursor:default;color:var(--color-text-muted)}.inline-cell__value{font-variant-numeric:tabular-nums}.inline-cell__empty{color:var(--color-text-soft);font-style:italic}.postit-board{position:relative;width:100%;aspect-ratio:16 / 5.5;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);box-shadow:var(--shadow-card);overflow:hidden;cursor:copy}.postit-board__trash{position:absolute;right:8px;bottom:8px;z-index:4;width:28px;height:28px;border-radius:50%;border:1px solid var(--color-line);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow-card);transition:color var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.postit-board__trash:hover{color:var(--color-brand);border-color:var(--color-brand)}.postit-board__archive{position:absolute;right:8px;bottom:44px;z-index:6;width:260px;max-height:240px;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}.postit-board__archive-head{display:flex;align-items:center;justify-content:space-between;padding:6px var(--space-3);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:var(--color-text-muted);border-bottom:1px solid var(--color-line)}.postit-board__archive-close{background:transparent;border:none;cursor:pointer;color:var(--color-text-muted);padding:2px;border-radius:var(--radius-xs);display:inline-flex}.postit-board__archive-close:hover{color:var(--color-text)}.postit-board__archive-list{flex:1;overflow-y:auto;padding:4px}.postit-board__archive-empty{margin:0;padding:var(--space-3);text-align:center;font-size:var(--text-xs);color:var(--color-text-muted)}.postit-board__archive-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);width:100%;padding:6px var(--space-2);border:none;border-left:3px solid transparent;background:transparent;cursor:pointer;text-align:left;font:inherit;font-size:var(--text-xs);color:var(--color-text);border-radius:var(--radius-xs)}.postit-board__archive-item:hover{background:var(--color-surface-hover)}.postit-board__archive-content{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.postit-board__archive-restore{color:var(--color-text-muted);font-size:var(--text-sm)}.postit-board__archive-item:hover .postit-board__archive-restore{color:var(--color-brand)}.postit-board__archive-item--yellow{border-left-color:#f1d96e}.postit-board__archive-item--pink{border-left-color:#f593b1}.postit-board__archive-item--blue{border-left-color:#8cc3f0}.postit-board__archive-item--green{border-left-color:#95d27a}.postit-board__archive-item--orange{border-left-color:#f5a560}.postit-board__archive-item--violet{border-left-color:#b095e1}.postit-board__empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);color:var(--color-text-soft);font-size:var(--text-xs);pointer-events:none}.postit{position:absolute;padding:12px 12px 28px;font-size:var(--text-sm);color:#2a2418;-webkit-user-select:none;user-select:none;cursor:grab;box-shadow:0 3px 8px #0a16282e,0 1px 2px #0a16281a;transition:box-shadow var(--duration-fast) var(--ease);display:flex;flex-direction:column}.postit:hover{box-shadow:0 6px 16px #0a162838,0 2px 4px #0a16281f}.postit.is-dragging{cursor:grabbing;opacity:.85;z-index:5}.postit.is-active{cursor:text;z-index:10}.postit--yellow{background:linear-gradient(180deg,#fff5a0,#f1d96e)}.postit--pink{background:linear-gradient(180deg,#ffc7d8,#f593b1)}.postit--blue{background:linear-gradient(180deg,#bfe0ff,#8cc3f0)}.postit--green{background:linear-gradient(180deg,#c8efb6,#95d27a)}.postit--orange{background:linear-gradient(180deg,#ffd5a6,#f5a560)}.postit--violet{background:linear-gradient(180deg,#d9c8f5,#b095e1)}.postit__content{flex:1;white-space:pre-wrap;word-break:break-word;overflow:hidden;line-height:1.35}.postit__placeholder{color:#2a241873;font-style:italic}.postit__textarea{flex:1;width:100%;height:100%;background:transparent;border:none;outline:none;font:inherit;color:inherit;resize:none;padding:0;line-height:1.35}.postit__delete{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;border:none;background:#0000001a;color:#0009;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease)}.postit:hover .postit__delete,.postit.is-active .postit__delete{opacity:1}.postit__delete:hover{background:var(--color-danger);color:#fff}.postit__colors{position:absolute;bottom:6px;left:8px;right:8px;display:flex;gap:4px;justify-content:center}.postit__color-dot{width:14px;height:14px;border-radius:50%;border:1.5px solid rgba(0,0,0,.15);cursor:pointer;padding:0;transition:transform var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.postit__color-dot:hover{transform:scale(1.15)}.postit__color-dot.is-selected{border-color:#0000008c;transform:scale(1.15)}.postit__color-dot--yellow{background:#f1d96e}.postit__color-dot--pink{background:#f593b1}.postit__color-dot--blue{background:#8cc3f0}.postit__color-dot--green{background:#95d27a}.postit__color-dot--orange{background:#f5a560}.postit__color-dot--violet{background:#b095e1}.revenue-chart{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);margin-top:var(--space-4)}.revenue-chart__head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--space-3);flex-wrap:wrap;gap:var(--space-2)}.revenue-chart__title{font-size:var(--text-sm);font-weight:600;margin:0;color:var(--color-text);display:inline-flex;align-items:center;gap:var(--space-2)}.revenue-chart__reveal{background:transparent;border:none;cursor:pointer;color:var(--color-text-muted);padding:2px;display:inline-flex}.revenue-chart__reveal:hover{color:var(--color-brand)}.revenue-chart__total{display:flex;align-items:baseline;gap:var(--space-2);font-size:var(--text-xs)}.revenue-chart__total-label{text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);font-weight:700}.revenue-chart__total-value{font-family:var(--font-display);font-weight:900;font-size:var(--text-md);color:var(--color-ink);font-variant-numeric:tabular-nums}.revenue-chart__svg{display:block;width:100%;height:auto;max-height:240px}.revenue-chart__loading{height:180px;display:flex;align-items:center;justify-content:center}.eom-frame{position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;border-radius:6px}.eom-frame:focus-visible .eom-frame__bezel{box-shadow:0 0 0 3px var(--color-brand-glow),0 12px 30px #0a16282e,0 2px 4px #0a16281a}.eom-frame__bezel{position:relative;padding:14px 14px 0;background:linear-gradient(135deg,#b9874a,#8a5a2a 35%,#6a4318 65%,#a3743a);border-radius:6px;box-shadow:0 12px 30px #0a16282e,0 2px 4px #0a16281a,inset 0 0 0 1px #ffdcaa40,inset 0 0 0 2px #3c1e0066;transition:transform var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.eom-frame:hover .eom-frame__bezel{transform:translateY(-2px);box-shadow:0 16px 40px #0a162838,0 3px 6px #0a16281f,inset 0 0 0 1px #ffdcaa4d,inset 0 0 0 2px #3c1e0073}.eom-frame__matte{padding:10px;background:linear-gradient(180deg,#f5ede0,#ece2cf);box-shadow:inset 0 1px #fffc,inset 0 0 0 1px #785a3240}.eom-frame__photo{position:relative;aspect-ratio:4 / 5;overflow:hidden;background:var(--color-surface-soft);box-shadow:inset 0 0 0 1px #3c1e004d,inset 0 2px 4px #00000026}.eom-frame__photo img{display:block;width:100%;height:100%;object-fit:cover}.eom-frame__placeholder{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);color:var(--color-text-soft);text-align:center;font-size:var(--text-xs);background:repeating-linear-gradient(45deg,#3c1e000a,#3c1e000a 8px,#3c1e0012 8px,#3c1e0012 16px)}.eom-frame__placeholder p{margin:0;line-height:1.45}.eom-frame.is-drop-target .eom-frame__bezel{box-shadow:0 0 0 3px var(--color-brand),0 16px 40px #0a162838,inset 0 0 0 1px #ffdcaa4d}.eom-frame.is-drop-target .eom-frame__placeholder{color:var(--color-brand)}.eom-frame__plaque{margin:12px 30px 14px;padding:8px 12px;background:linear-gradient(180deg,#e9c97e,#c89c44,#9a751f);border-radius:2px;text-align:center;font-family:var(--font-display);font-size:var(--text-xs);font-weight:700;letter-spacing:.18em;color:#3a2200;text-shadow:0 1px 0 rgba(255,240,200,.5);box-shadow:inset 0 1px #fff0c899,inset 0 -1px #3c1e0059,0 1px 2px #0003}.eom-frame__overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--space-2);background:#0a16288c;color:#fff;border-radius:6px;font-size:var(--text-sm)}.eom-frame__error{margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-danger-soft);color:var(--color-danger);border-radius:var(--radius);font-size:var(--text-xs)}.crop-dialog{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:#0a16288c;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.crop-dialog__panel{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);width:100%;max-width:520px;display:flex;flex-direction:column}.crop-dialog__head{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-line)}.crop-dialog__head h2{margin:0;font-size:var(--text-md)}.crop-dialog__head p{margin:4px 0 0;font-size:var(--text-xs);color:var(--color-text-muted)}.crop-dialog__box{position:relative;margin:var(--space-4) auto 0;width:280px;background:var(--color-surface-sand);overflow:hidden;cursor:grab;border-radius:var(--radius)}.crop-dialog__box:active{cursor:grabbing}.crop-dialog__box img{position:absolute;left:50%;top:50%;pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.crop-dialog__overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;box-shadow:inset 0 0 0 2px #ffffffd9,inset 0 0 0 3px #00000040}.crop-dialog__controls{padding:var(--space-3) var(--space-5);display:flex;align-items:center;gap:var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted)}.crop-dialog__controls input[type=range]{flex:1}.crop-dialog__foot{padding:var(--space-3) var(--space-5);border-top:1px solid var(--color-line);display:flex;justify-content:flex-end;gap:var(--space-2)}.projects-overview__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4);flex-wrap:wrap}.projects-overview__sort{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-text-muted)}.projects-overview__sort-btn{font:inherit;font-size:var(--text-xs);background:transparent;border:1px solid var(--color-line);border-radius:var(--radius);padding:4px 10px;cursor:pointer;color:var(--color-text);transition:border-color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.projects-overview__sort-btn:hover{border-color:var(--color-line-strong)}.projects-overview__sort-btn.is-active{background:var(--color-brand-soft);border-color:var(--color-brand);color:var(--color-brand-deep);font-weight:600}.projects-overview__filter{display:inline-flex;align-items:center;gap:6px;font-size:var(--text-xs);color:var(--color-text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.projects-overview__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--space-4)}.project-card{position:relative;display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);cursor:pointer;overflow:hidden;transition:border-color var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease)}.project-card:hover{border-color:var(--color-line-strong);box-shadow:var(--shadow)}.project-card:focus-visible{outline:none;border-color:var(--color-brand);box-shadow:0 0 0 3px var(--color-brand-glow)}.project-card__accent{position:absolute;top:0;left:0;width:100%;height:3px}.project-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2)}.project-card__title-row{display:flex;align-items:center;gap:var(--space-2);min-width:0}.project-card__title{font-size:var(--text-md);font-weight:700;margin:0;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-card__star{background:transparent;border:none;cursor:pointer;color:var(--color-text-soft);padding:4px;border-radius:var(--radius);display:inline-flex;align-items:center;justify-content:center;transition:color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease);flex-shrink:0}.project-card__star:hover{color:var(--color-warning);background:var(--color-surface-hover)}.project-card__star.is-favorite{color:var(--color-warning)}.project-card__description{font-size:var(--text-sm);color:var(--color-text-2);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.project-card__stats{display:grid;grid-template-columns:auto auto 1fr;gap:var(--space-4);align-items:end}.project-card__stat{display:flex;flex-direction:column;gap:2px}.project-card__stat-value{font-family:var(--font-display);font-weight:900;font-size:var(--text-xl);letter-spacing:-.02em;font-variant-numeric:tabular-nums;color:var(--color-ink);line-height:1}.project-card__stat-label{font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-text-muted);font-weight:700}.project-card__stat--progress{min-width:0}.project-card__progress{width:100%;height:6px;background:var(--color-line-soft);border-radius:var(--radius-pill, 999px);overflow:hidden}.project-card__progress-bar{height:100%;border-radius:var(--radius-pill, 999px);transition:width var(--duration) var(--ease)}.project-card__foot{display:flex;align-items:center;gap:6px;font-size:var(--text-2xs);color:var(--color-text-muted);flex-wrap:wrap}.sectioned-task-list{display:flex;flex-direction:column;gap:var(--space-5)}.task-section{display:flex;flex-direction:column;gap:var(--space-2);border-radius:var(--radius);padding:2px;margin:-2px;transition:background var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease)}.task-section.is-drop-target{background:var(--color-brand-soft);box-shadow:inset 0 0 0 1px var(--color-brand)}.task-section--empty{min-height:60px}.task-list__empty-drop{padding:var(--space-3) var(--space-4);font-size:var(--text-xs);color:var(--color-text-soft);text-align:center;border:1px dashed var(--color-line);border-radius:var(--radius);background:var(--color-surface)}.task-section.is-drop-target .task-list__empty-drop{border-color:var(--color-brand);color:var(--color-brand-deep);background:var(--color-brand-soft)}.section-header{display:flex;align-items:center;gap:var(--space-2);padding:2px 4px}.section-header__caret{background:transparent;border:none;cursor:pointer;padding:4px;color:var(--color-text-muted);display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-xs);transition:transform var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease)}.section-header__caret:hover{background:var(--color-surface-hover);color:var(--color-text)}.section-header__caret.is-collapsed{transform:rotate(-90deg)}.section-header__title{font-size:var(--text-md);font-weight:700;margin:0;color:var(--color-text);cursor:text;padding:2px 6px;border-radius:var(--radius);transition:background var(--duration-fast) var(--ease)}.section-header__title:hover{background:var(--color-surface-hover)}.section-header__input{font:inherit;font-size:var(--text-md);font-weight:700;background:var(--color-surface-soft);border:1px solid var(--color-line);border-radius:var(--radius);padding:2px 6px;color:var(--color-text);outline:none;min-width:200px}.section-header__input:focus{border-color:var(--color-brand)}.section-header__count{font-size:var(--text-xs);color:var(--color-text-muted);font-variant-numeric:tabular-nums;background:var(--color-line-soft);border-radius:var(--radius-pill, 999px);padding:1px 8px}.section-header__delete{margin-left:auto;background:transparent;border:none;cursor:pointer;color:var(--color-text-soft);padding:4px 6px;border-radius:var(--radius);opacity:0;transition:opacity var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease)}.section-header:hover .section-header__delete{opacity:1}.section-header__delete:hover{color:var(--color-danger);background:var(--color-danger-soft)}.add-section{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:transparent;border:1px dashed var(--color-line);border-radius:var(--radius);color:var(--color-text-muted);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease)}.add-section--button{font:inherit;font-size:var(--text-sm)}.add-section--button:hover{border-color:var(--color-brand);color:var(--color-brand);background:var(--color-brand-soft)}.add-section__input{flex:1;border:none;background:transparent;font:inherit;font-size:var(--text-sm);color:var(--color-text);outline:none}.dashboard-tasks-tile{padding:0}.dashboard-tasks-tile__list{list-style:none;margin:0;padding:0}.dashboard-tasks-tile__item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-line-soft)}.dashboard-tasks-tile__item:last-child{border-bottom:none}.dashboard-tasks-tile__check{width:16px;height:16px;border-radius:50%;border:1.5px solid var(--color-line-strong);background:var(--color-surface);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;color:transparent;flex-shrink:0}.dashboard-tasks-tile__check:hover{border-color:var(--color-brand);color:var(--color-brand)}.dashboard-tasks-tile__title{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;align-items:flex-start;background:transparent;border:none;cursor:pointer;text-align:left;padding:0;font:inherit}.dashboard-tasks-tile__title-text{font-size:var(--text-sm);color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}.dashboard-tasks-tile__title:hover .dashboard-tasks-tile__title-text{text-decoration:underline}.dashboard-tasks-tile__project{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-2xs);color:var(--color-text-muted)}.dashboard-tasks-tile__dot{display:inline-block;width:7px;height:7px;border-radius:50%}.dashboard-tasks-tile__date{font-size:var(--text-2xs);font-variant-numeric:tabular-nums;color:var(--color-text-muted);flex-shrink:0}.dashboard-tasks-tile__date.is-overdue{color:var(--color-danger);font-weight:600}.dashboard-tasks-tile__date.is-today{color:var(--color-brand-deep);font-weight:600}.dashboard-tasks-tile__foot{padding:var(--space-2) var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted);border-top:1px solid var(--color-line-soft);text-align:center}.task-row__note{display:inline-flex;align-items:center;justify-content:center;color:var(--color-text-soft);flex-shrink:0}.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-weight:700;letter-spacing:.02em;border:none;padding:0;cursor:default;-webkit-user-select:none;user-select:none;line-height:1;box-sizing:border-box}.avatar--unassigned{background:transparent;border:1.5px dashed var(--color-line-strong);color:var(--color-text-soft)}.avatar--clickable{cursor:pointer;transition:transform var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.avatar--clickable:hover{transform:scale(1.06);box-shadow:0 0 0 2px var(--color-brand-glow)}.avatar--unassigned.avatar--clickable:hover{border-color:var(--color-brand);color:var(--color-brand);box-shadow:none}.user-picker{position:relative;display:inline-block}.user-picker--compact .user-picker__popover{right:0;left:auto}.user-picker__trigger{display:inline-flex;align-items:center;gap:var(--space-2);padding:4px 10px 4px 4px;background:transparent;border:1px solid transparent;border-radius:var(--radius-pill, 999px);cursor:pointer;font:inherit;font-size:var(--text-sm);color:var(--color-text)}.user-picker__trigger:hover{background:var(--color-surface-hover)}.user-picker__placeholder{color:var(--color-text-muted)}.user-picker__popover{position:absolute;top:calc(100% + 4px);left:0;z-index:50;width:260px;max-height:320px;overflow:hidden;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);box-shadow:var(--shadow);display:flex;flex-direction:column}.user-picker__search{font:inherit;font-size:var(--text-sm);padding:var(--space-2) var(--space-3);border:none;border-bottom:1px solid var(--color-line);outline:none;background:var(--color-surface);color:var(--color-text)}.user-picker__list{flex:1;overflow-y:auto;padding:var(--space-1)}.user-picker__item{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:6px var(--space-2);background:transparent;border:none;border-radius:var(--radius);cursor:pointer;text-align:left;font:inherit;font-size:var(--text-sm);color:var(--color-text)}.user-picker__item:hover{background:var(--color-surface-hover)}.user-picker__item.is-selected{background:var(--color-brand-soft);color:var(--color-brand-deep)}.user-picker__item--clear{color:var(--color-text-muted)}.user-picker__empty{padding:var(--space-3);text-align:center;font-size:var(--text-xs);color:var(--color-text-muted)}.priority-badge,.status-pill{display:inline-flex;align-items:center;font-size:var(--text-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:3px 9px;border-radius:var(--radius-pill, 999px);border:1px solid transparent;line-height:1.3}.priority-badge--low{background:var(--color-line);color:var(--color-text-muted)}.priority-badge--medium{background:var(--color-info-soft);color:var(--color-info)}.priority-badge--high{background:var(--color-warning-soft);color:var(--color-warning)}.priority-badge--urgent{background:var(--color-danger-soft);color:var(--color-danger)}.status-pill--open{background:var(--color-line);color:var(--color-text-muted)}.status-pill--in-progress{background:var(--color-brand-soft);color:var(--color-brand-deep)}.status-pill--done{background:var(--color-success-soft);color:var(--color-success)}.priority-badge--select,.status-pill--select{cursor:pointer;font-family:inherit;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:none;padding-right:9px}.priority-badge--select:hover,.status-pill--select:hover{filter:brightness(.96)}.due-date-chip{position:relative;display:inline-flex;align-items:center;gap:2px;font-size:var(--text-xs);color:var(--color-text-muted)}.due-date-chip__face{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;transition:border-color var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),background var(--duration-fast) var(--ease)}.due-date-chip--empty .due-date-chip__face{width:28px;height:28px;border-radius:50%;border:1.5px dashed var(--color-line-strong);color:var(--color-text-soft)}.due-date-chip--empty:hover .due-date-chip__face{border-color:var(--color-brand);color:var(--color-brand)}.due-date-chip--set .due-date-chip__face{padding:4px 8px;border-radius:var(--radius);font-weight:500;color:var(--color-text);white-space:nowrap}.due-date-chip--set:hover .due-date-chip__face{background:var(--color-surface-hover)}.due-date-chip--overdue .due-date-chip__face{color:var(--color-danger);font-weight:600}.due-date-chip__overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;background:transparent;padding:0;margin:0;font:inherit}.due-date-chip.is-disabled .due-date-chip__overlay{cursor:default}.due-date-chip__overlay::-webkit-calendar-picker-indicator{cursor:pointer;opacity:0}.due-date-chip__clear{position:relative;z-index:1;background:transparent;border:none;cursor:pointer;color:var(--color-text-soft);padding:0 4px;font-size:var(--text-sm);line-height:1;opacity:0;transition:opacity var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.due-date-chip:hover .due-date-chip__clear{opacity:1}.due-date-chip__clear:hover{color:var(--color-danger)}.slide-over{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;pointer-events:none}.slide-over.is-open{pointer-events:auto}.slide-over__backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f1a2c73;opacity:0;transition:opacity var(--duration) var(--ease)}.slide-over.is-open .slide-over__backdrop{opacity:1}.slide-over__panel{position:absolute;top:0;right:0;height:100%;background:var(--color-surface);box-shadow:var(--shadow-lg);transform:translate(100%);transition:transform var(--duration) var(--ease);display:flex;flex-direction:column}.slide-over.is-open .slide-over__panel{transform:translate(0)}@media (max-width: 600px){.slide-over__panel{width:100vw!important}}.slide-over__head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-line)}.slide-over__title{font-size:var(--text-sm);color:var(--color-text-2);font-weight:600}.slide-over__close{background:transparent;border:none;cursor:pointer;padding:4px;color:var(--color-text-muted);border-radius:var(--radius)}.slide-over__close:hover{background:var(--color-surface-hover);color:var(--color-text)}.slide-over__body{flex:1;overflow-y:auto;padding:var(--space-5)}.task-detail{display:flex;flex-direction:column;gap:var(--space-5)}.task-detail__title{font-size:var(--text-xl);font-weight:700;border:none;padding:var(--space-2);border-radius:var(--radius);background:transparent;width:100%;margin:-8px -8px var(--space-3)}.task-detail__title:focus{background:var(--color-surface-soft);outline:1px solid var(--color-line)}.task-detail__props{display:grid;grid-template-columns:110px 1fr;gap:var(--space-3) var(--space-4);align-items:center}.task-detail__prop{display:contents}.task-detail__prop-label{font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);font-weight:700}.task-detail__section{display:flex;flex-direction:column;gap:var(--space-2)}.task-detail__section h3{font-size:var(--text-sm);font-weight:600;margin:0;color:var(--color-text)}.task-detail__desc-actions{display:flex;gap:var(--space-2);justify-content:flex-end}.task-detail__error{padding:var(--space-2) var(--space-3);background:var(--color-danger-soft);color:var(--color-danger);border-radius:var(--radius);font-size:var(--text-xs)}.comment-thread{display:flex;flex-direction:column;gap:var(--space-3)}.comment-thread__title{font-size:var(--text-sm);font-weight:600;margin:0;color:var(--color-text)}.comment-thread__list{display:flex;flex-direction:column;gap:var(--space-3)}.comment-thread__empty{font-size:var(--text-xs);color:var(--color-text-muted);margin:0}.comment{display:flex;gap:var(--space-3);align-items:flex-start}.comment__body{flex:1;min-width:0}.comment__meta{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-text-muted);margin-bottom:2px}.comment__meta strong{color:var(--color-text);font-weight:600}.comment__meta time:before{content:"·";margin:0 4px}.comment__delete{margin-left:auto;background:transparent;border:none;cursor:pointer;color:var(--color-text-soft);padding:2px;border-radius:var(--radius-xs)}.comment__delete:hover{color:var(--color-danger)}.comment__text{margin:0;font-size:var(--text-sm);color:var(--color-text);white-space:pre-wrap}.comment-thread__form{display:flex;flex-direction:column;gap:var(--space-2);border-top:1px solid var(--color-line);padding-top:var(--space-3)}.comment-thread__form-foot{display:flex;justify-content:space-between;align-items:center}.comment-thread__hint{font-size:var(--text-2xs);color:var(--color-text-soft)}.my-tasks__buckets{display:flex;flex-direction:column;gap:var(--space-5)}.my-tasks__bucket-head{display:flex;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-2)}.my-tasks__bucket-head h2{font-size:var(--text-md);font-weight:700;margin:0;color:var(--color-text)}.my-tasks__bucket-count{font-size:var(--text-xs);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.my-tasks__bucket--danger .my-tasks__bucket-head h2{color:var(--color-danger)}.my-tasks__bucket--brand .my-tasks__bucket-head h2{color:var(--color-brand-deep)}.my-tasks__bucket--info .my-tasks__bucket-head h2{color:var(--color-info)}.dialog{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#0f1a2c80;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.dialog__panel{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);width:100%;max-width:480px;max-height:90vh;display:flex;flex-direction:column}.dialog__head{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-line)}.dialog__head h2{margin:0;font-size:var(--text-md)}.dialog__body{padding:var(--space-4) var(--space-5);overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-3)}.dialog__foot{padding:var(--space-3) var(--space-5);border-top:1px solid var(--color-line);display:flex;justify-content:flex-end;gap:var(--space-2)}.dialog__error{margin:0;padding:var(--space-2) var(--space-3);background:var(--color-danger-soft);color:var(--color-danger);border-radius:var(--radius);font-size:var(--text-xs)}.color-swatches{display:flex;gap:var(--space-2);flex-wrap:wrap}.color-swatch{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;transition:transform var(--duration-fast) var(--ease)}.color-swatch:hover{transform:scale(1.1)}.color-swatch.is-selected{border-color:var(--color-ink);transform:scale(1.1)}.radio{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);cursor:pointer;padding:2px 0}.nav-link__dot{display:inline-block;width:9px;height:9px;border-radius:50%;flex-shrink:0;margin-right:4px}.nav-section--favorites .nav-link{gap:var(--space-2)}.video-layout{display:flex;flex-direction:column;min-height:calc(100vh - var(--topbar-h, 60px));min-width:0;max-width:100%;overflow-x:hidden}.video-tabs{display:flex;gap:var(--space-1);padding:var(--space-3) var(--space-8) 0;border-bottom:1px solid var(--color-line);background:var(--color-surface);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.video-tabs__item{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted);border-bottom:2px solid transparent;margin-bottom:-1px;text-decoration:none;flex-shrink:0;white-space:nowrap}.video-tabs__item:hover{color:var(--color-text)}.video-tabs__item.is-active{color:var(--color-brand);border-bottom-color:var(--color-brand)}.video-tabs__count{font-variant-numeric:tabular-nums;color:var(--color-text-muted);background:var(--color-surface-soft);padding:0 6px;border-radius:var(--radius-pill);font-size:11px}.video-layout__main{flex:1;padding:var(--space-6) var(--space-8);min-width:0;max-width:100%;overflow-x:hidden}@media (max-width: 900px){.video-tabs{padding:var(--space-2) var(--space-4) 0}.video-layout__main{padding:var(--space-4)}}@media (max-width: 720px){.video-tabs{padding:var(--space-2) var(--space-3) 0;gap:2px}.video-tabs__item{padding:var(--space-2);font-size:13px}.video-tabs__count{display:none}.video-worker-pill{font-size:10px;padding:3px 6px}.video-layout__main{padding:var(--space-3)}}.video-worker-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:var(--radius-pill);background:var(--color-surface-soft);font-size:11px;color:var(--color-text-muted);font-variant-numeric:tabular-nums}.video-worker-pill__dot{width:6px;height:6px;border-radius:50%;background:var(--color-success)}.video-worker-pill--stale .video-worker-pill__dot{background:var(--color-warning)}.video-worker-pill--down .video-worker-pill__dot{background:var(--color-danger)}.signal-bars{display:inline-flex;align-items:flex-end;gap:2px;height:14px}.signal-bars__bar{width:3px;background:var(--color-line);border-radius:1px}.signal-bars__bar.is-on{background:var(--color-text)}.signal-bars--excellent .signal-bars__bar.is-on,.signal-bars--good .signal-bars__bar.is-on{background:var(--color-success)}.signal-bars--fair .signal-bars__bar.is-on{background:var(--color-warning)}.signal-bars--poor .signal-bars__bar.is-on{background:var(--color-danger)}.tower-status-pill{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border-radius:var(--radius-pill);font-size:11px;font-weight:500;letter-spacing:.02em;text-transform:uppercase}.tower-status-pill__dot{width:6px;height:6px;border-radius:50%}.tower-status-pill--up{background:#2f7d5a1a;color:var(--color-success)}.tower-status-pill--up .tower-status-pill__dot{background:var(--color-success)}.tower-status-pill--down{background:#b23a3a1a;color:var(--color-danger)}.tower-status-pill--down .tower-status-pill__dot{background:var(--color-danger)}.tower-status-pill--unknown{background:var(--color-surface-soft);color:var(--color-text-muted)}.tower-status-pill--unknown .tower-status-pill__dot{background:var(--color-text-muted)}.video-live-table{width:100%;border-collapse:collapse;font-size:var(--text-sm);table-layout:auto}.video-live-table th{text-align:left;font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);padding:var(--space-3) var(--space-3);border-bottom:1px solid var(--color-line);background:var(--color-surface-soft)}.video-live-table td{padding:var(--space-3);border-bottom:1px solid var(--color-line);vertical-align:middle}.video-live-table tr:hover td{background:var(--color-surface-soft)}.video-live-table__name{font-weight:600;color:var(--color-text)}.video-live-table__sub{display:block;font-size:11px;color:var(--color-text-muted);font-weight:400;margin-top:1px}@media (max-width: 720px){.video-live-table,.video-live-table thead,.video-live-table tbody,.video-live-table tr,.video-live-table td,.video-live-table th{display:block;width:100%}.video-live-table thead{display:none}.video-live-table tr{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-2)}.video-live-table tr:hover td{background:transparent}.video-live-table td{padding:6px 0!important;border-bottom:0!important;text-align:left!important}.video-live-table td[data-label]:before{content:attr(data-label);display:block;font-size:10px;font-weight:600;text-transform:uppercase;color:var(--color-text-muted);letter-spacing:.04em;margin-bottom:2px}.video-live-table td.video-row__label{display:none}}.video-location-grid{display:grid;grid-template-columns:1fr 320px;gap:var(--space-4);align-items:start}@media (max-width: 720px){.video-location-grid{grid-template-columns:1fr}}.video-tile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-3);margin-bottom:var(--space-5)}.video-tile-grid--cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.video-tile-grid--cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}@media (max-width: 900px){.video-tile-grid--cols-4,.video-tile-grid--cols-3{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}}.video-tile-grid--tight{margin-bottom:var(--space-3)}.map-modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1a2c66;display:flex;align-items:center;justify-content:center;z-index:100}.map-modal__panel{background:var(--color-surface);border-radius:var(--radius-lg);width:min(720px,90vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden}.map-modal__head{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-line);display:flex;align-items:center;justify-content:space-between}.map-modal__title{font-size:var(--text-lg);font-weight:600}.map-modal__body{padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:var(--space-3)}.map-modal__map{width:100%;height:360px;border-radius:var(--radius-md);overflow:hidden}.map-modal__foot{padding:var(--space-3) var(--space-5);border-top:1px solid var(--color-line);display:flex;gap:var(--space-2);justify-content:flex-end}.metrics-chart{width:100%;height:180px;background:var(--color-surface-soft);border-radius:var(--radius-md);padding:var(--space-3)}.usv-topo{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-5)}.usv-topo__head{display:flex;align-items:center;gap:8px;padding-bottom:var(--space-2);margin-bottom:var(--space-3);border-bottom:1px solid var(--color-line);font-size:12px;color:var(--color-text)}.usv-topo__pulse{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--color-brand);box-shadow:0 0 0 0 var(--color-brand);animation:usv-topo-pulse 1.6s ease-out infinite}@keyframes usv-topo-pulse{0%{box-shadow:0 0 #1aa39c99}70%{box-shadow:0 0 0 10px #1aa39c00}to{box-shadow:0 0 #1aa39c00}}.usv-topo__stage{position:relative;width:100%;aspect-ratio:5 / 3;max-width:720px;margin:0 auto}@media (max-width: 720px){.usv-topo__stage{aspect-ratio:5 / 4}}.usv-topo__flows{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.usv-topo__line{fill:none;stroke:var(--color-line);stroke-width:2;stroke-linecap:round}.usv-topo__line.is-off{opacity:.3}.usv-topo__line.is-active{stroke:var(--color-brand);stroke-width:2.5;stroke-dasharray:6 6;animation:usv-topo-flow-fwd 1.2s linear infinite}.usv-topo__line.is-active.is-rev{animation:usv-topo-flow-rev 1.2s linear infinite}@keyframes usv-topo-flow-fwd{to{stroke-dashoffset:-24}}@keyframes usv-topo-flow-rev{to{stroke-dashoffset:24}}.usv-topo__box{position:absolute;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:10px 12px;width:27%;min-height:80px;z-index:2}.usv-topo__box--grid{top:0;left:0;border-left:3px solid var(--color-danger)}.usv-topo__box--out{top:0;right:0;border-left:3px solid var(--color-success)}.usv-topo__box--batt{bottom:0;left:0;border-left:3px solid var(--color-info)}.usv-topo__box.is-off{opacity:.55}.usv-topo__box-head{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--color-text-muted);margin-bottom:4px}.usv-topo__box-icon{font-size:12px}.usv-topo__box-label{font-weight:500}.usv-topo__box-suffix{margin-left:auto;font-size:11px;font-variant-numeric:tabular-nums;color:var(--color-text-muted)}.usv-topo__box-value{font-size:22px;font-weight:600;color:var(--color-text);line-height:1.1;margin-bottom:4px;font-variant-numeric:tabular-nums}.usv-topo__box-details{font-size:11px;color:var(--color-text-muted);display:flex;flex-direction:column;gap:2px}.usv-topo__multi{position:absolute;top:8%;left:50%;transform:translate(-50%);background:linear-gradient(180deg,var(--color-brand) 0%,var(--color-brand-deep) 100%);color:#fff;border-radius:var(--radius-md);padding:22px 28px 14px;display:flex;flex-direction:column;align-items:center;gap:10px;box-shadow:0 4px 14px #0000001f;z-index:3;min-width:130px}.usv-topo__multi-state{background:#f7f8fa;color:var(--color-info);font-size:12px;font-weight:500;padding:4px 12px;border-radius:var(--radius);white-space:nowrap}.usv-topo__multi-state.is-warn{color:var(--color-danger)}.tower-map-wrap{width:100%;min-width:0}@media (max-width: 720px){.tower-map-wrap>div>div{height:clamp(260px,50vw,360px)!important}}@keyframes toggle-spinner{to{transform:rotate(360deg)}}.towers-map__legend{position:absolute;top:10px;right:10px;z-index:1;display:inline-flex;flex-wrap:nowrap;width:max-content;align-items:center;gap:12px;padding:4px 8px;background:#ffffffeb;border-radius:4px;font-size:11px;line-height:1;color:var(--color-text);box-shadow:0 1px 2px #0000001f}.towers-map__legend span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.towers-map__legend-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.tower-map-wrap .gm-style-mtc button,.tower-map-wrap .gm-style-mtc-bbw{font-size:11px!important;height:28px!important;min-width:0!important;padding:0 8px!important}.tower-map-wrap .gm-style-mtc ul,.tower-map-wrap .gm-style-mtc li{font-size:11px!important}
