:root{color-scheme:dark;--color-bg-canvas: #0f131a;--color-bg-sidebar: #121823;--color-bg-surface: #171e29;--color-bg-surface-raised: #1d2633;--color-bg-surface-hover: #242f3e;--color-bg-selected: rgba(92, 145, 255, .14);--color-border-subtle: #2a3544;--color-border-strong: #3b495b;--color-text-primary: #f3f6fa;--color-text-secondary: #b5c0ce;--color-text-muted: #8a97a9;--color-text-on-accent: #0b1220;--color-accent-primary: #6798f5;--color-accent-primary-hover: #7eaaf8;--color-accent-primary-subtle: rgba(103, 152, 245, .15);--color-accent-primary-border: rgba(103, 152, 245, .45);--color-success: #49b98a;--color-warning: #e1a94f;--color-danger: #e36d78;--color-info: #4db8c7;--color-planning: #9a88f2;--color-success-subtle: rgba(73, 185, 138, .15);--color-warning-subtle: rgba(225, 169, 79, .15);--color-danger-subtle: rgba(227, 109, 120, .15);--color-info-subtle: rgba(77, 184, 199, .15);--color-planning-subtle: rgba(154, 136, 242, .15);--focus-ring-color: var(--color-accent-primary);--focus-ring-offset: var(--color-bg-canvas);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 6px;--radius: 8px;--radius-lg: 12px;--radius-pill: 999px;--font-sans: "Inter", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-tabular: "Inter", ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--text-title-size: 24px;--text-title-line: 32px;--text-title-weight: 680;--text-metric-size: 22px;--text-metric-line: 28px;--text-metric-weight: 650;--text-section-size: 16px;--text-section-line: 24px;--text-section-weight: 620;--text-subsection-size: 14px;--text-subsection-line: 20px;--text-subsection-weight: 600;--text-body-size: 14px;--text-body-line: 21px;--text-body-weight: 400;--text-control-size: 14px;--text-control-line: 20px;--text-control-weight: 500;--text-meta-size: 12.5px;--text-meta-line: 18px;--text-meta-weight: 450;--text-navlabel-size: 11px;--text-navlabel-line: 16px;--text-navlabel-weight: 600;--text-navlabel-spacing: .06em;--control-h: 36px;--control-h-sm: 32px;--control-h-lg: 40px;--touch: 44px;--sidebar-w: 240px;--sidebar-w-collapsed: 72px;--topbar-h: 60px;--inspector-w: 340px;--page-max: 1440px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow: 0 4px 12px rgba(0, 0, 0, .35);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .45);--dur-fast: .12s;--dur: .16s;--dur-slow: .22s;--ease: cubic-bezier(.2, 0, 0, 1);--z-sticky: 20;--z-topbar: 30;--z-bottomnav: 40;--z-drawer: 50;--z-overlay: 60;--z-modal: 70;--z-popover: 80;--z-toast: 90;--bg: var(--color-bg-canvas);--surface: var(--color-bg-surface);--surface-raised: var(--color-bg-surface-raised);--border: var(--color-border-subtle);--border-strong: var(--color-border-strong);--text: var(--color-text-primary);--text-dim: var(--color-text-secondary);--text-muted: var(--color-text-muted);--accent: var(--color-accent-primary);--accent-hover: var(--color-accent-primary-hover);--accent-contrast: var(--color-text-on-accent);--accent-soft: var(--color-accent-primary-subtle);--danger: var(--color-danger);--warn: var(--color-warning);--success: var(--color-success);--radius-legacy: var(--radius);--nav-w: var(--sidebar-w)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);background:var(--color-bg-canvas);color:var(--color-text-primary);font-size:var(--text-body-size);line-height:var(--text-body-line);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"cv02","cv03","cv04","cv11"}.tnum,time,.metric-value,.money-amount,.tabular{font-variant-numeric:tabular-nums;font-family:var(--font-tabular)}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit}a{color:var(--color-accent-primary);text-decoration:none}a:hover{color:var(--color-accent-primary-hover)}:where(a,button,input,select,textarea,[tabindex],[role=button],[role=tab],[role=menuitem]):focus-visible{outline:2px solid var(--focus-ring-color);outline-offset:2px;border-radius:var(--radius-sm)}:where(a,button,[role=button]):focus:not(:focus-visible){outline:none}.app-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100%}.app-shell.sidebar-collapsed{grid-template-columns:var(--sidebar-w-collapsed) 1fr}.skip-link{position:fixed;top:-60px;left:var(--space-3);z-index:var(--z-toast);background:var(--color-accent-primary);color:var(--color-text-on-accent);padding:var(--space-2) var(--space-4);border-radius:var(--radius);font-weight:600;transition:top var(--dur) var(--ease)}.skip-link:focus{top:var(--space-3);color:var(--color-text-on-accent)}.sidebar{grid-row:1 / -1;display:flex;flex-direction:column;background:var(--color-bg-sidebar);border-right:1px solid var(--color-border-subtle);height:100vh;position:sticky;top:0;overflow:hidden}.sidebar-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-4) var(--space-3) var(--space-3);min-height:var(--topbar-h)}.sidebar.collapsed .sidebar-head{justify-content:center}.brand{font-size:var(--text-section-size);font-weight:var(--text-title-weight);letter-spacing:-.01em;color:var(--color-text-primary);padding-left:var(--space-2)}.sidebar-scroll{flex:1;overflow-y:auto;padding:var(--space-2) var(--space-2) var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.nav-section{display:flex;flex-direction:column;gap:1px}.nav-group{display:flex;flex-direction:column}.nav-group+.nav-group,.nav-section+.nav-group,.nav-group+.nav-section{margin-top:var(--space-3)}.nav-group-label{display:flex;align-items:center;gap:var(--space-1);width:100%;background:none;border:none;padding:var(--space-2) var(--space-2) var(--space-1);font-size:var(--text-navlabel-size);line-height:var(--text-navlabel-line);font-weight:var(--text-navlabel-weight);letter-spacing:var(--text-navlabel-spacing);text-transform:uppercase;color:var(--color-text-muted);text-align:left}.nav-group-label.static{pointer-events:none}.nav-group-label:hover{color:var(--color-text-secondary)}.nav-caret{transition:transform var(--dur-fast) var(--ease);transform:rotate(-90deg)}.nav-caret.open{transform:rotate(0)}.nav-item{position:relative;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-2);border-radius:var(--radius);color:var(--color-text-secondary);font-size:var(--text-control-size);line-height:var(--text-control-line);font-weight:500;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.nav-item .nav-icon{flex-shrink:0;color:var(--color-text-muted)}.nav-item .nav-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-item:hover{background:var(--color-bg-surface-hover);color:var(--color-text-primary)}.nav-item:hover .nav-icon{color:var(--color-text-secondary)}.nav-indicator{position:absolute;left:-8px;top:50%;transform:translateY(-50%);width:3px;height:0;border-radius:0 2px 2px 0;background:var(--color-accent-primary);transition:height var(--dur-fast) var(--ease)}.nav-item.active{background:var(--color-bg-selected);color:var(--color-text-primary)}.nav-item.active .nav-icon{color:var(--color-accent-primary)}.nav-item.active .nav-indicator{height:20px}.nav-item-assistant .nav-icon{color:var(--color-planning)}.nav-count{background:var(--color-accent-primary-subtle);color:var(--color-accent-primary);border-radius:var(--radius-pill);font-size:var(--text-navlabel-size);font-weight:600;padding:0 var(--space-2);min-width:18px;text-align:center;font-variant-numeric:tabular-nums}.nav-dot{position:absolute;top:6px;right:6px;width:6px;height:6px;border-radius:50%;background:var(--color-accent-primary)}.sidebar.collapsed .nav-item{justify-content:center;padding:var(--space-2)}.sidebar.collapsed .nav-section{align-items:center}.sidebar-foot{position:relative;border-top:1px solid var(--color-border-subtle);padding:var(--space-2)}.account-btn{display:flex;align-items:center;gap:var(--space-2);width:100%;background:none;border:1px solid transparent;border-radius:var(--radius);padding:var(--space-2);color:var(--color-text-primary);text-align:left}.account-btn:hover{background:var(--color-bg-surface-hover)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex-shrink:0;border-radius:var(--radius-pill);background:var(--color-accent-primary-subtle);color:var(--color-accent-primary);font-size:13px;font-weight:600}.account-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-control-size)}.account-caret{color:var(--color-text-muted);flex-shrink:0}.sidebar.collapsed .account-btn{justify-content:center}.account-menu{position:absolute;bottom:calc(100% - var(--space-1));left:var(--space-2);right:var(--space-2);background:var(--color-bg-surface-raised);border:1px solid var(--color-border-strong);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:var(--space-1);z-index:var(--z-popover)}.account-menu-item{display:flex;align-items:center;gap:var(--space-2);width:100%;background:none;border:none;padding:var(--space-2);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--text-control-size);text-align:left}.account-menu-item:hover{background:var(--color-bg-surface-hover);color:var(--color-text-primary)}.account-menu-item.danger{color:var(--color-danger)}.account-menu-item.danger:hover{background:var(--color-danger-subtle)}.app-main{display:flex;flex-direction:column;min-width:0;min-height:100vh}.topbar{position:sticky;top:0;z-index:var(--z-topbar);display:flex;align-items:center;gap:var(--space-4);height:var(--topbar-h);padding:0 var(--space-6);background:color-mix(in srgb,var(--color-bg-canvas) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--color-border-subtle)}.topbar-left{display:flex;align-items:center;gap:var(--space-2);min-width:0}.topbar-menu{display:none}.topbar-title{font-size:var(--text-section-size);font-weight:var(--text-section-weight);color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-search{display:flex;align-items:center;gap:var(--space-2);height:var(--control-h);max-width:420px;flex:1;margin:0 auto;padding:0 var(--space-3);border-radius:var(--radius);border:1px solid var(--color-border-subtle);background:var(--color-bg-surface);color:var(--color-text-muted);transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.topbar-search:hover{border-color:var(--color-border-strong);background:var(--color-bg-surface-raised)}.topbar-search-text{flex:1;text-align:left;font-size:var(--text-control-size)}.topbar-right{display:flex;align-items:center;gap:var(--space-1)}.sync-state{display:inline-flex;color:var(--color-success)}.sync-state.offline{color:var(--color-warning)}.topbar-bell{position:relative}.topbar-bell-dot{position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:var(--color-danger);border:2px solid var(--color-bg-canvas)}.kbd{font-family:var(--font-sans);font-size:11px;font-weight:600;color:var(--color-text-muted);background:var(--color-bg-surface-raised);border:1px solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:1px var(--space-1);line-height:1.4;white-space:nowrap}.page{flex:1;width:100%;max-width:var(--page-max);margin:0 auto;padding:var(--space-8)}@media (min-width: 1600px){.page{padding:var(--space-10)}}.badge{background:var(--color-accent-primary-subtle);color:var(--color-accent-primary);border-radius:var(--radius-pill);font-size:var(--text-navlabel-size);padding:1px var(--space-2);font-weight:600;font-variant-numeric:tabular-nums}.palette-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-modal);background:#06090e99;display:flex;align-items:flex-start;justify-content:center;padding:12vh var(--space-4) var(--space-4)}.palette{width:100%;max-width:560px;background:var(--color-bg-surface-raised);border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);overflow:hidden}.palette-input{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-subtle);color:var(--color-text-muted)}.palette-input input{flex:1;min-width:0;background:none;border:none;color:var(--color-text-primary);font-size:var(--text-section-size)}.palette-input input:focus{outline:none}.palette-list{max-height:52vh;overflow-y:auto;padding:var(--space-2)}.palette-row{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:var(--space-2) var(--space-3);border:none;background:none;border-radius:var(--radius);color:var(--color-text-secondary);font-size:var(--text-control-size);text-align:left}.palette-row .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-row svg{flex-shrink:0;color:var(--color-text-muted)}.palette-row.active{background:var(--color-bg-selected);color:var(--color-text-primary)}.palette-row.active svg{color:var(--color-accent-primary)}.palette-empty{padding:var(--space-4);color:var(--color-text-muted);text-align:center}.tt-wrap{position:relative;display:inline-flex}.tt{position:absolute;z-index:var(--z-popover);pointer-events:none;opacity:0;transform:scale(.96);transition:opacity var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease);background:var(--color-bg-surface-hover);color:var(--color-text-primary);border:1px solid var(--color-border-strong);box-shadow:var(--shadow);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);font-size:var(--text-meta-size);white-space:nowrap}.tt.open{opacity:1;transform:scale(1)}.tt-right{left:calc(100% + var(--space-2));top:50%;transform:translateY(-50%) scale(.96)}.tt-right.open{transform:translateY(-50%) scale(1)}.tt-bottom{top:calc(100% + var(--space-2));left:50%;transform:translate(-50%) scale(.96)}.tt-bottom.open{transform:translate(-50%) scale(1)}.tt-top{bottom:calc(100% + var(--space-2));left:50%;transform:translate(-50%) scale(.96)}.tt-top.open{transform:translate(-50%) scale(1)}.quick-add{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;margin-bottom:16px}.quick-add-main{display:flex;align-items:center;gap:8px}.quick-add-main input{flex:1;min-width:0;padding:8px 10px;border:none;background:transparent;color:var(--text)}.quick-add-main input:focus{outline:none}.quick-add-main input::placeholder{color:var(--text-dim)}.card{background:var(--color-bg-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-3)}.card h2{margin:0 0 var(--space-3);font-size:var(--text-section-size);line-height:var(--text-section-line);font-weight:var(--text-section-weight)}.row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0}.row+.row{border-top:1px solid var(--color-border-subtle)}.row .grow{flex:1;min-width:0}.dim{color:var(--color-text-muted);font-size:var(--text-meta-size)}.done{text-decoration:line-through;color:var(--color-text-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:var(--control-h);padding:0 var(--space-4);border-radius:var(--radius);border:1px solid var(--color-border-strong);background:var(--color-bg-surface-raised);color:var(--color-text-primary);font-size:var(--text-control-size);line-height:var(--text-control-line);font-weight:var(--text-control-weight);white-space:nowrap;transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.btn:hover{background:var(--color-bg-surface-hover);border-color:var(--color-border-strong)}.btn:active{transform:translateY(.5px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--color-accent-primary);border-color:var(--color-accent-primary);color:var(--color-text-on-accent);font-weight:600}.btn.primary:hover{background:var(--color-accent-primary-hover);border-color:var(--color-accent-primary-hover)}.btn.ghost,.btn.tertiary{background:transparent;border-color:transparent;color:var(--color-text-secondary)}.btn.ghost:hover,.btn.tertiary:hover{background:var(--color-bg-surface-hover);color:var(--color-text-primary)}.btn.danger{background:transparent;border-color:transparent;color:var(--color-danger)}.btn.danger:hover{background:var(--color-danger-subtle)}.btn.danger.confirm{background:var(--color-danger);border-color:var(--color-danger);color:#1a0e10}.btn.small{height:var(--control-h-sm);padding:0 var(--space-3);font-size:var(--text-meta-size)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--control-h-sm);height:var(--control-h-sm);border-radius:var(--radius);border:1px solid transparent;background:transparent;color:var(--color-text-secondary);transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.icon-btn:hover{background:var(--color-bg-surface-hover);color:var(--color-text-primary)}@media (max-width: 760px){.icon-btn{min-width:var(--touch);min-height:var(--touch)}}.field{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-3);min-width:0}.field label{font-size:var(--text-meta-size);line-height:var(--text-meta-line);color:var(--color-text-secondary);font-weight:500}.field input,.field select,.field textarea{width:100%;min-width:0;min-height:var(--control-h);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius);background:var(--color-bg-surface-raised);color:var(--color-text-primary);transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.field input::placeholder,.field textarea::placeholder{color:var(--color-text-muted)}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--color-accent-primary);box-shadow:0 0 0 3px var(--color-accent-primary-subtle)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:0 var(--space-3)}.pill{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-navlabel-size);line-height:var(--text-navlabel-line);padding:2px var(--space-2);border-radius:var(--radius-pill);background:var(--color-accent-primary-subtle);color:var(--color-accent-primary);font-weight:600;white-space:nowrap}.pill.warn{background:var(--color-warning-subtle);color:var(--color-warning)}.pill.danger{background:var(--color-danger-subtle);color:var(--color-danger)}.pill.success{background:var(--color-success-subtle);color:var(--color-success)}.pill.info{background:var(--color-info-subtle);color:var(--color-info)}.pill.planning{background:var(--color-planning-subtle);color:var(--color-planning)}.pill.gray{background:#8a97a926;color:var(--color-text-secondary)}.pill-x{display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:inherit;opacity:.7;cursor:pointer;padding:0;border-radius:var(--radius-sm)}.pill-x:hover{opacity:1}h1{font-size:var(--text-title-size);line-height:var(--text-title-line);font-weight:var(--text-title-weight);letter-spacing:-.01em;margin:0 0 var(--space-4)}.empty{color:var(--color-text-muted);padding:var(--space-3) 0;font-size:var(--text-body-size)}.checkbox{width:18px;height:18px;accent-color:var(--accent);cursor:pointer;flex-shrink:0}.page-header{margin-bottom:var(--space-6)}.page-header-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.page-header-titles{min-width:0}.page-header-titles h1{margin:0}.page-header-desc{margin:var(--space-1) 0 0;color:var(--color-text-muted);font-size:var(--text-body-size);max-width:70ch}.page-header-actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}.page-header-toolbar{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border-subtle)}.metric-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-4)}.metric{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg)}.metric-label{font-size:var(--text-meta-size);color:var(--color-text-muted);font-weight:500}.metric-value{font-size:var(--text-metric-size);line-height:var(--text-metric-line);font-weight:var(--text-metric-weight);color:var(--color-text-primary)}.metric-hint{font-size:var(--text-meta-size);color:var(--color-text-secondary)}.metric-success .metric-value{color:var(--color-success)}.metric-warning .metric-value{color:var(--color-warning)}.metric-danger .metric-value{color:var(--color-danger)}.metric-info .metric-value{color:var(--color-info)}.metric-planning .metric-value{color:var(--color-planning)}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-2);padding:var(--space-10) var(--space-4);max-width:360px;margin:0 auto}.empty-state-icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-lg);background:var(--color-bg-surface-raised);color:var(--color-text-secondary);margin-bottom:var(--space-1)}.empty-state-title{font-size:var(--text-section-size);font-weight:var(--text-section-weight);color:var(--color-text-primary)}.empty-state-msg{margin:0;color:var(--color-text-muted);font-size:var(--text-body-size)}.empty-state-action{margin-top:var(--space-2)}.segmented{display:inline-flex;gap:2px;padding:2px;background:var(--color-bg-surface-raised);border:1px solid var(--color-border-subtle);border-radius:var(--radius)}.segmented-option{height:var(--control-h-sm);padding:0 var(--space-3);border:none;background:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--text-control-size);font-weight:500;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.segmented-option:hover{color:var(--color-text-primary)}.segmented-option.active{background:var(--color-bg-surface-hover);color:var(--color-text-primary)}.grid-2{display:grid;grid-template-columns:2fr 1fr;gap:var(--space-6);align-items:start}@media (max-width: 1024px){.grid-2{grid-template-columns:1fr}}.section{margin-bottom:var(--space-6)}.section-head{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.section-head h2{margin:0;font-size:var(--text-section-size);line-height:var(--text-section-line);font-weight:var(--text-section-weight)}.section-head .grow{flex:1;min-width:0}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-drawer);background:#06090e8c;display:flex;justify-content:flex-end}.drawer{width:420px;max-width:100%;height:100%;display:flex;flex-direction:column;background:var(--color-bg-surface);border-left:1px solid var(--color-border-strong);box-shadow:var(--shadow-lg);animation:drawer-in var(--dur) var(--ease)}@keyframes drawer-in{0%{transform:translate(16px);opacity:.6}to{transform:none;opacity:1}}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border-subtle)}.drawer-head h2{margin:0;font-size:var(--text-section-size);font-weight:var(--text-section-weight)}.drawer-body{flex:1;overflow-y:auto;padding:var(--space-6)}.drawer-foot{display:flex;justify-content:flex-end;gap:var(--space-2);padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-border-subtle)}@media (max-width: 760px){.drawer-backdrop{align-items:flex-end}.drawer{width:100%;height:auto;max-height:92vh;border-left:none;border-top:1px solid var(--color-border-strong);border-radius:var(--radius-lg) var(--radius-lg) 0 0}}.progress{height:6px;border-radius:var(--radius-pill);background:var(--color-bg-surface-hover);overflow:hidden}.progress-fill{display:block;height:100%;border-radius:inherit;background:var(--color-accent-primary)}.progress-success .progress-fill{background:var(--color-success)}.progress-warning .progress-fill{background:var(--color-warning)}.progress-danger .progress-fill{background:var(--color-danger)}.progress-planning .progress-fill{background:var(--color-planning)}.task-list{display:flex;flex-direction:column}.task-row{display:flex;align-items:center;gap:var(--space-3);min-height:48px;padding:var(--space-2) var(--space-1);border-bottom:1px solid var(--color-border-subtle)}.task-list.compact .task-row{min-height:36px}.task-row:last-child{border-bottom:none}.task-row:hover{background:var(--color-bg-surface)}.task-row .task-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-row .task-meta{color:var(--color-text-muted);font-size:var(--text-meta-size)}.task-row .task-actions{display:flex;align-items:center;gap:var(--space-1);opacity:0;transition:opacity var(--dur-fast) var(--ease)}.task-row:hover .task-actions,.task-row:focus-within .task-actions{opacity:1}@media (hover: none){.task-row .task-actions{opacity:1}}.task-row.done .task-title{text-decoration:line-through;color:var(--color-text-muted)}.tline{position:relative;margin:0;padding:0;list-style:none}.tline:before{content:"";position:absolute;left:62px;top:6px;bottom:6px;width:2px;background:var(--color-border-subtle)}.tline-row{position:relative;display:grid;grid-template-columns:52px 1fr;gap:var(--space-4);padding:var(--space-2) 0}.tline-time{text-align:right;color:var(--color-text-muted);font-size:var(--text-meta-size);font-variant-numeric:tabular-nums;padding-top:2px}.tline-body{position:relative;padding-left:var(--space-4);border-left:3px solid var(--color-accent-primary);border-radius:0 var(--radius) var(--radius) 0;background:var(--color-accent-primary-subtle);padding:var(--space-2) var(--space-3)}.tline-body.kind-routine{border-left-color:var(--color-text-muted);background:var(--color-bg-surface-hover)}.tline-body.kind-session{border-left-color:var(--color-planning);background:var(--color-planning-subtle)}.tline-body.now{box-shadow:inset 0 0 0 1px var(--color-danger)}.tline-title{font-weight:500}.tline-meta{color:var(--color-text-muted);font-size:var(--text-meta-size)}.tline-dot{position:absolute;left:56px;top:14px;width:12px;height:12px;border-radius:50%;background:var(--color-accent-primary);border:2px solid var(--color-bg-surface);z-index:1}.tline-dot.kind-routine{background:var(--color-text-muted)}.tline-dot.kind-session{background:var(--color-planning)}.tline-allday{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3)}.callout{border:1px solid var(--color-border-subtle);border-radius:var(--radius);padding:var(--space-3) var(--space-4);margin:var(--space-3) 0;background:var(--color-bg-surface-raised)}.callout.warn{border-color:var(--color-warning-subtle);background:var(--color-warning-subtle)}.cal-toolbar{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.cal-nav{display:inline-flex;align-items:center;gap:var(--space-1)}.review-bar-row{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:var(--space-2);font-size:var(--text-meta-size);color:var(--color-text-secondary)}.review-bar-row .tnum{color:var(--color-text-primary);font-weight:600}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.auth-card{width:100%;max-width:380px}.error-text{color:var(--danger);font-size:13px;margin:6px 0}.bottomnav{display:none}@media (max-width: 1024px){.app-shell,.app-shell.sidebar-collapsed{grid-template-columns:1fr}.sidebar{position:fixed;left:0;top:0;width:var(--sidebar-w);z-index:var(--z-drawer);transform:translate(-100%);transition:transform var(--dur) var(--ease);box-shadow:var(--shadow-lg)}.app-shell.nav-open .sidebar{transform:translate(0)}.topbar-menu{display:inline-flex}.topbar{padding:0 var(--space-6)}.page{padding:var(--space-6)}}@media (max-width: 760px){.sidebar{display:none}.topbar{padding:0 var(--space-4);gap:var(--space-2)}.topbar-search-text{display:none}.topbar-search{flex:0 0 auto;width:var(--control-h);padding:0;justify-content:center}.topbar-search .kbd{display:none}.page{padding:var(--space-4) var(--space-4) calc(var(--space-16) + env(safe-area-inset-bottom))}.bottomnav{display:flex;align-items:center;position:fixed;bottom:0;left:0;right:0;z-index:var(--z-bottomnav);background:var(--color-bg-sidebar);border-top:1px solid var(--color-border-subtle);padding:var(--space-1) var(--space-1) calc(var(--space-1) + env(safe-area-inset-bottom))}.bottomnav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;position:relative;min-height:var(--touch);padding:var(--space-1);background:none;border:none;border-radius:var(--radius);color:var(--color-text-muted);font-size:11px;font-weight:500}.bottomnav-item.active{color:var(--color-accent-primary)}.bottomnav-item .nav-dot{top:4px;right:24%}.bottomnav-add{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;margin:0 var(--space-1);border:none;border-radius:var(--radius-lg);background:var(--color-accent-primary);color:var(--color-text-on-accent);box-shadow:var(--shadow)}.bottomnav-add:active{background:var(--color-accent-primary-hover)}}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-overlay);background:#06090e99}.sheet{position:absolute;left:0;right:0;bottom:0;max-height:85vh;display:flex;flex-direction:column;background:var(--color-bg-surface);border-top:1px solid var(--color-border-strong);border-radius:var(--radius-lg) var(--radius-lg) 0 0}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:1px solid var(--color-border-subtle)}.sheet-scroll{overflow-y:auto;padding:var(--space-4) var(--space-4) calc(var(--space-6) + env(safe-area-inset-bottom))}.sheet-group{margin-top:var(--space-4)}.sheet-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2);margin-top:var(--space-2)}.sheet-item{display:flex;align-items:center;gap:var(--space-2);min-height:var(--touch);padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:var(--color-bg-surface-raised);border:1px solid var(--color-border-subtle);color:var(--color-text-primary);font-size:var(--text-control-size)}.sheet-item svg{flex-shrink:0;color:var(--color-text-muted)}.sheet-item.active{border-color:var(--color-accent-primary-border);color:var(--color-accent-primary)}.sheet-item.active svg{color:var(--color-accent-primary)}.sheet-item span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sheet-account{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-border-subtle)}.sheet-account .grow{flex:1;min-width:0}.push-banner{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);padding:10px 12px;margin-bottom:14px}.push-banner>.navicon,.push-banner>svg:first-child{flex-shrink:0;color:var(--accent)}.push-banner-text{flex:1;min-width:0;font-size:13px}.push-banner-close{background:none;border:none;color:var(--text-dim);display:inline-flex;padding:4px;border-radius:6px}.push-banner-close:hover{color:var(--text);background:var(--bg)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.cal-dow{text-align:center;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);padding:2px 0 6px}.cal-cell{background:var(--color-bg-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius);min-height:96px;padding:var(--space-1) var(--space-2) var(--space-2);font-size:var(--text-meta-size);display:flex;flex-direction:column;gap:3px;overflow:hidden;cursor:pointer;text-align:left;color:var(--color-text-primary);transition:border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.cal-cell:hover{border-color:var(--color-border-strong);background:var(--color-bg-surface-raised)}.cal-cell.other{opacity:.5}.cal-cell.weekend{background:var(--color-bg-canvas)}.cal-cell.today{border-color:var(--color-accent-primary);box-shadow:inset 0 0 0 1px var(--color-accent-primary)}.cal-daynum{align-self:flex-start;font-weight:600;font-size:var(--text-meta-size);font-variant-numeric:tabular-nums;color:var(--color-text-secondary);padding:2px}.cal-cell.today .cal-daynum{background:var(--color-accent-primary);color:var(--color-text-on-accent);border-radius:var(--radius-pill);min-width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center}.cal-evt{background:var(--color-accent-primary-subtle);color:var(--color-text-primary);border-left:3px solid var(--color-accent-primary);border-radius:var(--radius-sm);padding:1px var(--space-1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--text-navlabel-size)}.cal-more{color:var(--color-text-muted);font-size:var(--text-navlabel-size)}.cal-evt.src-event{border-left-color:var(--color-accent-primary);background:var(--color-accent-primary-subtle)}.cal-evt.src-birthday{border-left-color:var(--color-planning);background:var(--color-planning-subtle)}.cal-evt.src-trip{border-left-color:var(--color-info);background:var(--color-info-subtle)}.cal-evt.src-booking{border-left-color:var(--color-planning);background:var(--color-planning-subtle)}.cal-evt.src-payment,.cal-evt.src-subscription{border-left-color:var(--color-warning);background:var(--color-warning-subtle)}.cal-legend{display:flex;flex-wrap:wrap;gap:var(--space-1) var(--space-4);margin-bottom:var(--space-4);font-size:var(--text-meta-size);color:var(--color-text-muted)}.cal-legend-item{display:inline-flex;align-items:center;gap:var(--space-1)}.cal-dot{width:10px;height:10px;border-radius:3px;display:inline-block}.cal-dot.src-event{background:var(--color-accent-primary)}.cal-dot.src-birthday{background:var(--color-planning)}.cal-dot.src-trip{background:var(--color-info)}.cal-dot.src-booking{background:var(--color-planning)}.cal-dot.src-payment,.cal-dot.src-subscription{background:var(--color-warning)}.cal-tag{display:inline-block;font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding:1px 6px;border-radius:5px;margin-right:8px;vertical-align:middle}.cal-tag.src-event{border-left:3px solid var(--color-accent-primary);background:var(--color-accent-primary-subtle);color:var(--color-text-secondary)}.cal-tag.src-birthday{border-left:3px solid var(--color-planning);background:var(--color-planning-subtle);color:var(--color-text-secondary)}.cal-tag.src-trip{border-left:3px solid var(--color-info);background:var(--color-info-subtle);color:var(--color-text-secondary)}.cal-tag.src-booking{border-left:3px solid var(--color-planning);background:var(--color-planning-subtle);color:var(--color-text-secondary)}.cal-tag.src-payment,.cal-tag.src-subscription{border-left:3px solid var(--color-warning);background:var(--color-warning-subtle);color:var(--color-text-secondary)}.cal-link{cursor:pointer}.cal-link:hover{text-decoration:underline}@media (max-width: 760px){.cal-grid{gap:3px}.cal-cell{min-height:58px;padding:4px}.cal-evt{font-size:10px;padding:1px 3px}}.idea-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-bottom:10px;border-bottom:1px solid var(--border);margin-bottom:10px}.idea-toolbar select{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:4px 8px;font-size:13px}.view-switch{display:flex;gap:4px;margin-right:auto}.idea-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.idea-card{background:var(--bg);border:1px solid var(--border);border-radius:10px;overflow:hidden;display:flex;flex-direction:column}.idea-img{width:100%;height:120px;object-fit:cover;background:var(--border)}.idea-body{padding:10px;display:flex;flex-direction:column;gap:6px;flex:1}.idea-title{font-weight:600;font-size:14px;line-height:1.3;display:flex;align-items:center;gap:6px}.idea-title a{color:var(--text)}.idea-type{display:inline-flex;align-items:center;color:var(--color-text-secondary)}.idea-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.idea-notes{font-size:13px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.idea-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:auto}.idea-status{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:3px 6px;font-size:12px}.idea-edit{padding:10px;margin-top:8px;border:1px dashed var(--border);border-radius:10px}.stars{display:inline-flex;gap:1px}.star{background:none;border:none;cursor:pointer;padding:0 1px;color:var(--color-border-strong);line-height:0;display:inline-flex}.star svg{fill:none}.star.on{color:var(--color-warning)}.star.on svg{fill:currentColor}.stars-static{display:inline-flex;gap:1px;color:var(--color-warning);line-height:0}.stars-static svg{fill:currentColor}.url-row{display:flex;gap:8px;min-width:0}.url-row input{flex:1;min-width:0}.url-row .btn{flex-shrink:0;white-space:nowrap}.resurface{border-color:var(--accent)}.idea-board{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px}.idea-col{flex:1;min-width:160px}.idea-col-head{font-size:12px;text-transform:capitalize;font-weight:600;color:var(--text-dim);padding-bottom:6px;border-bottom:1px solid var(--border);margin-bottom:8px}.idea-mini{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:8px;margin-bottom:8px;display:flex;flex-direction:column;gap:4px;font-size:13px}.compare-wrap{margin-top:14px;padding-top:10px;border-top:1px solid var(--border)}.compare-scroll{overflow-x:auto;margin-bottom:8px}.compare-table{border-collapse:collapse;font-size:13px;min-width:100%}.compare-table th,.compare-table td{border:1px solid var(--border);padding:6px 10px;text-align:left;vertical-align:top;max-width:220px}.compare-table td:first-child{color:var(--text-dim);white-space:nowrap}@media (max-width: 760px){.idea-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.idea-board{flex-wrap:nowrap}.idea-col{min-width:140px;flex:0 0 auto}}
