.detail[data-v-8b19fbfa]{max-width:860px;margin:0 auto;padding:20px 24px 32px}.d-head[data-v-8b19fbfa]{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.d-head h1[data-v-8b19fbfa]{margin:0;font-size:22px;font-weight:600;line-height:1.3}.d-head h1.done[data-v-8b19fbfa]{text-decoration:line-through;color:var(--muted)}.shot[data-v-8b19fbfa]{border:1px solid var(--border);border-radius:10px;background:var(--bg);overflow:hidden;margin-bottom:20px}.shot img[data-v-8b19fbfa]{display:block;width:100%;max-height:60vh;object-fit:contain;object-position:top center}.shot.empty[data-v-8b19fbfa]{padding:32px;text-align:center;color:var(--muted);font-size:13px}.meta[data-v-8b19fbfa]{display:grid;grid-template-columns:120px 1fr;gap:8px 16px;margin:0}.meta dt[data-v-8b19fbfa]{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding-top:2px}.meta dd[data-v-8b19fbfa]{margin:0;font-size:14px}.meta dd.pre[data-v-8b19fbfa]{white-space:pre-wrap}.status-val[data-v-8b19fbfa]{text-transform:capitalize}.status-val.done[data-v-8b19fbfa]{color:#2e7d32}.state[data-v-8b19fbfa]{color:var(--muted);padding:48px 4px;text-align:center}.state.error[data-v-8b19fbfa]{color:var(--danger)}:root{color-scheme:light;--paper-50: oklch(.987 .004 90);--paper-100: oklch(.969 .006 88);--paper-150: oklch(.949 .007 86);--paper-200: oklch(.916 .008 85);--paper-300: oklch(.868 .009 84);--paper-400: oklch(.715 .011 83);--paper-500: oklch(.582 .011 82);--paper-600: oklch(.47 .012 81);--paper-700: oklch(.372 .011 80);--paper-800: oklch(.288 .01 80);--paper-900: oklch(.218 .009 80);--paper-950: oklch(.165 .008 80);--pine-300: oklch(.7 .072 175);--pine-400: oklch(.612 .082 176);--pine-500: oklch(.53 .084 177);--pine-600: oklch(.468 .078 178);--pine-700: oklch(.4 .064 179);--sage-500: oklch(.585 .1 150);--amber-500: oklch(.76 .12 72);--clay-500: oklch(.575 .135 33);--clay-600: oklch(.51 .13 32);--bg: var(--paper-100);--bg-sunk: var(--paper-150);--surface: var(--paper-50);--surface-2: var(--paper-150);--surface-3: var(--paper-200);--overlay: color-mix(in oklab, var(--paper-950) 38%, transparent);--text: var(--paper-900);--text-muted: var(--paper-500);--text-subtle: var(--paper-400);--text-onAccent:var(--paper-50);--border: var(--paper-200);--border-strong:var(--paper-300);--ring: color-mix(in oklab, var(--pine-500) 55%, transparent);--accent: var(--pine-600);--accent-hover: var(--pine-700);--accent-soft: oklch(.955 .028 178);--accent-line: oklch(.86 .045 178);--success: var(--sage-500);--success-soft: oklch(.955 .04 150);--warning: var(--amber-500);--warning-soft: oklch(.96 .055 78);--danger: var(--clay-500);--danger-hover: var(--clay-600);--danger-soft: oklch(.955 .04 35);--due-none: var(--paper-400);--due-upcoming: var(--paper-600);--due-soon: oklch(.56 .11 70);--due-overdue: var(--clay-500);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-7: 32px;--sp-8: 40px;--sp-9: 48px;--sp-10: 64px;--r-xs: 5px;--r-sm: 8px;--r-md: 11px;--r-lg: 16px;--r-xl: 22px;--r-full: 999px;--font-sans: "Hanken Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Code", Menlo, monospace;--fs-xs: 11.5px;--fs-sm: 13px;--fs-base: 14.5px;--fs-md: 16px;--fs-lg: 19px;--fs-xl: 23px;--fs-2xl: 30px;--fs-3xl: 40px;--lh-tight: 1.15;--lh-snug: 1.3;--lh-normal: 1.55;--shadow-color: 80 12% 30%;--sh-1: 0 1px 2px hsl(var(--shadow-color) / .06), 0 1px 1px hsl(var(--shadow-color) / .04);--sh-2: 0 2px 4px hsl(var(--shadow-color) / .07), 0 4px 12px hsl(var(--shadow-color) / .06);--sh-3: 0 6px 16px hsl(var(--shadow-color) / .1), 0 12px 36px hsl(var(--shadow-color) / .1);--sh-pop: 0 4px 10px hsl(var(--shadow-color) / .12), 0 16px 40px hsl(var(--shadow-color) / .16);--dur-1: 90ms;--dur-2: .15s;--dur-3: .24s;--ease: cubic-bezier(.2,.7,.3,1)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-normal);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}:focus-visible{outline:none;box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--ring);border-radius:var(--r-xs)}.mono{font-family:var(--font-mono);font-feature-settings:"tnum" 1}svg{display:block}button{font:inherit;color:var(--accent);cursor:pointer;border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--r-sm);padding:8px 12px;transition:background var(--dur-2),border-color var(--dur-2)}button:hover{background:var(--bg-sunk)}button:disabled{opacity:.5;cursor:default}input,textarea,select{font:inherit;width:100%;color:var(--text);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:9px 11px;background:var(--surface);transition:border-color var(--dur-2),box-shadow var(--dur-2)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}textarea{resize:vertical;min-height:56px;line-height:var(--lh-normal)}.app{display:flex;flex-direction:column;min-height:100vh;background:var(--bg);color:var(--text)}.appbar{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);background:color-mix(in oklab,var(--surface) 86%,transparent);backdrop-filter:blur(8px);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:9px;font-weight:700;letter-spacing:-.015em;font-size:var(--fs-md)}.brand .mark{width:22px;height:22px;color:var(--accent)}.appnav{display:none;gap:2px;background:var(--bg-sunk);border:1px solid var(--border);border-radius:var(--r-md);padding:3px;margin-left:var(--sp-2)}.appnav a{text-decoration:none;color:var(--text-muted);font-weight:600;font-size:var(--fs-sm);padding:6px 14px;border-radius:var(--r-sm);display:inline-flex;align-items:center;gap:7px}.appnav a.router-link-active{background:var(--surface);color:var(--text);box-shadow:var(--sh-1)}.appnav a:hover:not(.router-link-active){color:var(--text)}.appbar-spacer{flex:1}.usermenu{display:flex;align-items:center;gap:var(--sp-2)}.tabbar{display:flex;position:sticky;bottom:0;z-index:20;border-top:1px solid var(--border);background:color-mix(in oklab,var(--surface) 92%,transparent);backdrop-filter:blur(8px);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}.tab{flex:1;border:0;background:transparent;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px;border-radius:var(--r-sm);color:var(--text-muted);font-size:11px;font-weight:600;text-decoration:none}.tab svg{width:22px;height:22px}.tab:hover{background:transparent}.tab.router-link-active{color:var(--accent)}.appmain{flex:1;padding:var(--sp-5) var(--sp-4) var(--sp-8)}.page{width:100%}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-5)}.page-title{font-size:var(--fs-2xl);font-weight:700;letter-spacing:-.02em;line-height:var(--lh-tight);margin:0}.page-sub{color:var(--text-muted);font-size:var(--fs-sm);margin:4px 0 0}@media(min-width:720px){.appnav{display:inline-flex}.tabbar{display:none}.appmain{padding:var(--sp-7) var(--sp-7) var(--sp-9)}.page{max-width:760px;margin:0 auto}.page--wide{max-width:1080px}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;border:1px solid transparent;border-radius:var(--r-sm);padding:9px 14px;font-size:var(--fs-sm);font-weight:600;line-height:1;transition:background var(--dur-2),border-color var(--dur-2),transform var(--dur-1),color var(--dur-2);white-space:nowrap;min-height:38px}.btn:active{transform:translateY(1px)}.btn svg{width:16px;height:16px}.btn--primary{background:var(--accent);color:var(--text-onAccent)}.btn--primary:hover{background:var(--accent-hover)}.btn--ghost{background:transparent;color:var(--text);border-color:var(--border-strong)}.btn--ghost:hover{background:var(--bg-sunk);border-color:var(--text-subtle)}.btn--subtle{background:var(--surface-2);color:var(--text)}.btn--subtle:hover{background:var(--surface-3)}.btn--danger{background:transparent;color:var(--danger);border-color:color-mix(in oklab,var(--danger) 40%,transparent)}.btn--danger:hover{background:var(--danger-soft);border-color:var(--danger)}.btn--danger-solid{background:var(--danger);color:#fff}.btn--danger-solid:hover{background:var(--danger-hover)}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn[disabled]:active{transform:none}.btn--sm{min-height:30px;padding:6px 10px;font-size:var(--fs-xs);border-radius:var(--r-xs)}.btn--icon{padding:8px;min-height:36px;min-width:36px}.btn--block{width:100%}.btn--lg{min-height:48px;padding:14px 20px;font-size:var(--fs-md)}.field{display:flex;flex-direction:column;gap:6px}.label{font-size:var(--fs-sm);font-weight:600;color:var(--text)}.hint{font-size:var(--fs-xs);color:var(--text-muted)}.input,.textarea,.select{width:100%;background:var(--surface);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:10px 12px;font:inherit;font-size:var(--fs-sm);transition:border-color var(--dur-2),box-shadow var(--dur-2)}.input::placeholder,.textarea::placeholder{color:var(--text-subtle)}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}.textarea{resize:vertical;min-height:64px;line-height:var(--lh-normal)}.input--error{border-color:var(--danger)}.input--error:focus{box-shadow:0 0 0 3px var(--danger-soft)}.composer{display:flex;gap:var(--sp-2);align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:6px 6px 6px 14px;box-shadow:var(--sh-1)}.composer:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}.composer .plus{width:18px;height:18px;color:var(--text-subtle);flex:none}.composer input{flex:1;border:0;background:transparent;font:inherit;font-size:var(--fs-sm);color:var(--text);padding:8px 0}.composer input:focus{outline:none;box-shadow:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.section-label{font-family:var(--font-mono);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted);display:flex;align-items:center;gap:8px;margin:var(--sp-6) 0 var(--sp-3)}.section-label:after{content:"";flex:1;height:1px;background:var(--border)}.section-label .count{color:var(--text-subtle)}.avatar{--sz: 28px;width:var(--sz);height:var(--sz);border-radius:var(--r-full);display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:calc(var(--sz) * .4);color:#fff;flex:none;border:1.5px solid var(--surface);user-select:none}.avatar--lg{--sz: 40px}.avatar--sm{--sz: 22px}.av-a{background:#0e846f}.av-b{background:#ac543f}.av-c{background:#5e61a1}.av-d{background:#49814c}.av-e{background:#a9692e}.av-stack{display:inline-flex}.av-stack .avatar:not(:first-child){margin-left:-8px}.av-empty{background:var(--surface-2);color:var(--text-subtle);border:1.5px dashed var(--border-strong)}.chip{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:500;padding:3px 8px 3px 7px;border-radius:var(--r-full);border:1px solid var(--border-strong);color:var(--text-muted);background:var(--surface);white-space:nowrap;cursor:pointer}.chip svg{width:13px;height:13px}.chip--none{color:var(--due-none);border-style:dashed}.chip--none:hover{color:var(--text-muted);border-color:var(--text-subtle)}.chip--upcoming{color:var(--due-upcoming)}.chip--soon{color:var(--due-soon);border-color:color-mix(in oklab,var(--warning) 45%,var(--border));background:var(--warning-soft)}.chip--overdue{color:var(--due-overdue);border-color:color-mix(in oklab,var(--danger) 45%,var(--border));background:var(--danger-soft);font-weight:600}.chip--done{color:var(--text-subtle);text-decoration:line-through;opacity:.8}.tag{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-xs);font-weight:600;padding:3px 9px;border-radius:var(--r-full);background:var(--surface-2);color:var(--text-muted)}.tag--accent{background:var(--accent-soft);color:var(--accent)}.tag--project{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-line);cursor:pointer;text-decoration:none}.role{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em;padding:2px 7px;border-radius:var(--r-xs);background:var(--surface-2);color:var(--text-muted)}.role--owner{background:var(--accent-soft);color:var(--accent)}.todo-list{display:flex;flex-direction:column;gap:var(--sp-2)}.todo{display:flex;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);transition:border-color var(--dur-2),box-shadow var(--dur-2),background var(--dur-2)}.todo:hover{border-color:var(--border-strong);box-shadow:var(--sh-1)}.check{--c: var(--accent);flex:none;width:21px;height:21px;margin-top:1px;border-radius:7px;border:1.8px solid var(--border-strong);background:var(--surface);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:#fff;transition:background var(--dur-2),border-color var(--dur-2);padding:0}.check svg{width:13px;height:13px;opacity:0;transform:scale(.6);transition:opacity var(--dur-2),transform var(--dur-2)}.check:hover{border-color:var(--c);background:var(--surface)}.todo-body{flex:1;min-width:0}.todo-title{font-size:var(--fs-base);font-weight:600;line-height:var(--lh-snug);letter-spacing:-.005em;border-radius:var(--r-xs);padding:1px 4px;margin:-1px -4px;cursor:text}.todo-title:focus{outline:none;background:var(--accent-soft);box-shadow:0 0 0 2px var(--ring)}.todo-notes{font-size:var(--fs-sm);color:var(--text-muted);margin-top:3px;line-height:var(--lh-snug)}.todo-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px}.todo-actions{display:flex;gap:2px;align-self:flex-start;opacity:0;transition:opacity var(--dur-2)}.todo:hover .todo-actions,.todo:focus-within .todo-actions{opacity:1}.icon-btn{width:30px;height:30px;border:0;background:transparent;border-radius:var(--r-xs);cursor:pointer;color:var(--text-subtle);display:inline-flex;align-items:center;justify-content:center}.icon-btn svg{width:16px;height:16px}.icon-btn:hover{background:var(--bg-sunk);color:var(--text)}.icon-btn.danger:hover{background:var(--danger-soft);color:var(--danger)}.todo--done{background:var(--bg)}.todo--done .check{background:var(--c);border-color:var(--c)}.todo--done .check svg{opacity:1;transform:none}.todo--done .todo-title{color:var(--text-muted);text-decoration:line-through;text-decoration-color:var(--text-subtle)}.todo--done .todo-notes{opacity:.7}.todo--assigned{border-left:3px solid var(--accent);padding-left:calc(var(--sp-4) - 2px)}.proj-grid{display:grid;grid-template-columns:1fr;gap:var(--sp-3)}@media(min-width:720px){.proj-grid{grid-template-columns:1fr 1fr;gap:var(--sp-4)}}.proj-card{position:relative;padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-3);cursor:pointer;transition:border-color var(--dur-2),box-shadow var(--dur-2),transform var(--dur-2)}.proj-card:hover{border-color:var(--border-strong);box-shadow:var(--sh-2);transform:translateY(-1px)}.proj-card .proj-key{width:38px;height:38px;border-radius:var(--r-sm);display:grid;place-items:center;font-family:var(--font-mono);font-weight:600;font-size:var(--fs-sm);background:var(--accent-soft);color:var(--accent)}.proj-name{font-weight:700;font-size:var(--fs-md);letter-spacing:-.01em}.proj-desc{color:var(--text-muted);font-size:var(--fs-sm);line-height:var(--lh-snug);flex:1}.proj-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3)}.proj-members{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:var(--fs-xs)}.proj-row-top{display:flex;align-items:center;justify-content:space-between}.board{display:flex;gap:var(--sp-4);overflow-x:auto;padding:4px 4px var(--sp-5);scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;align-items:flex-start}.board::-webkit-scrollbar{height:10px}.board::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--r-full);border:3px solid var(--bg)}.column{flex:none;width:290px;scroll-snap-align:start;background:var(--bg-sunk);border:1px solid var(--border);border-radius:var(--r-md);display:flex;flex-direction:column;max-height:calc(100vh - 200px)}.col-head{display:flex;align-items:center;gap:8px;padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border)}.col-dot{width:9px;height:9px;border-radius:var(--r-full);flex:none}.col-name{font-weight:700;font-size:var(--fs-sm);letter-spacing:-.005em}.col-count{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-subtle);background:var(--surface-2);border-radius:var(--r-full);padding:1px 8px}.col-body{padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2);overflow-y:auto;flex:1;min-height:12px}.col-foot{padding:var(--sp-2) var(--sp-3) var(--sp-3)}.add-card{display:flex;align-items:center;gap:8px;width:100%;border:1px dashed var(--border-strong);background:transparent;color:var(--text-muted);border-radius:var(--r-sm);padding:9px 12px;cursor:pointer;font-size:var(--fs-sm);font-weight:600}.add-card:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.add-card svg{width:15px;height:15px}.kcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--sp-3);box-shadow:var(--sh-1);cursor:grab;position:relative;transition:box-shadow var(--dur-2),border-color var(--dur-2),transform var(--dur-1)}.kcard:hover{box-shadow:var(--sh-2);border-color:var(--border-strong)}.kcard:active{cursor:grabbing}.kcard.dragging,.kcard.sortable-ghost{opacity:.5}.kcard-title{font-weight:600;font-size:var(--fs-sm);line-height:var(--lh-snug);padding-right:18px}.kcard-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px}.kcard-del{position:absolute;bottom:6px;right:4px;width:26px;height:26px;opacity:0}.kcard:hover .kcard-del,.kcard:focus-within .kcard-del{opacity:1}.add-column{flex:none;width:240px;scroll-snap-align:start}.add-column button{width:100%;height:56px;border:1.5px dashed var(--border-strong);background:transparent;border-radius:var(--r-md);color:var(--text-muted);font-weight:600;font-size:var(--fs-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px}.add-column button:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.add-column svg{width:16px;height:16px}.picker{position:relative}.picker-pop{position:absolute;z-index:30;bottom:calc(100% + 8px);right:0;width:220px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--sh-pop);padding:6px}.picker-search{width:100%;border:0;border-bottom:1px solid var(--border);padding:8px;background:transparent;font:inherit;font-size:var(--fs-sm);margin-bottom:4px;border-radius:0}.picker-search:focus{outline:none;box-shadow:none}.picker-opt{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-sm)}.picker-opt:hover{background:var(--bg-sunk)}.picker-opt[aria-selected=true]{background:var(--accent-soft);color:var(--accent);font-weight:600}.picker-opt .tick{margin-left:auto;opacity:0;width:15px;height:15px}.picker-opt[aria-selected=true] .tick{opacity:1}.panel{padding:var(--sp-5) var(--sp-5)}.panel+.panel{border-top:1px solid var(--border)}.panel-title{font-weight:700;font-size:var(--fs-md);letter-spacing:-.01em;margin:0 0 4px}.panel-sub{color:var(--text-muted);font-size:var(--fs-sm);margin:0 0 var(--sp-4)}.rowitem{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--border)}.rowitem:last-child{border-bottom:0}.rowitem .grow{flex:1;min-width:0}.rowitem .name{font-weight:600;font-size:var(--fs-sm)}.rowitem .meta{color:var(--text-muted);font-size:var(--fs-xs)}.danger-zone{border:1px solid color-mix(in oklab,var(--danger) 35%,var(--border));border-radius:var(--r-md);background:var(--danger-soft);padding:var(--sp-4) var(--sp-5);display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);flex-wrap:wrap}.danger-zone .name{font-weight:700;color:var(--danger)}.invite-link{display:flex;align-items:center;gap:var(--sp-2);background:var(--bg-sunk);border:1px solid var(--border);border-radius:var(--r-sm);padding:4px 4px 4px 12px}.invite-link code{flex:1;font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-scrim{position:fixed;inset:0;background:var(--overlay);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:var(--sp-5);z-index:50;animation:fade var(--dur-2) var(--ease)}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-pop);width:100%;max-width:420px;padding:var(--sp-6);animation:pop var(--dur-3) var(--ease)}.gate{min-height:100vh;display:grid;place-items:center;padding:var(--sp-6);background:radial-gradient(120% 80% at 50% -10%,var(--accent-soft),transparent 60%),var(--bg)}.gate-card{width:100%;max-width:380px;text-align:center;padding:var(--sp-8) var(--sp-6)}.gate-mark{width:56px;height:56px;color:var(--accent);margin:0 auto var(--sp-5)}.gate h1{font-size:var(--fs-2xl);letter-spacing:-.025em;margin:0 0 8px}.gate p{color:var(--text-muted);font-size:var(--fs-sm);margin:0 0 var(--sp-6);line-height:var(--lh-snug)}.gate-foot{margin-top:var(--sp-5);font-size:var(--fs-xs);color:var(--text-subtle)}.empty{text-align:center;padding:var(--sp-9) var(--sp-5)}.empty-ic{width:48px;height:48px;margin:0 auto var(--sp-4);color:var(--text-subtle);border:1.5px dashed var(--border-strong);border-radius:var(--r-md);display:grid;place-items:center}.empty h3{margin:0 0 6px;font-size:var(--fs-lg)}.empty p{margin:0 auto var(--sp-5);color:var(--text-muted);font-size:var(--fs-sm);max-width:320px;line-height:var(--lh-snug)}.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite;border-radius:var(--r-xs)}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.error-banner{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--r-md);background:var(--danger-soft);border:1px solid color-mix(in oklab,var(--danger) 35%,var(--border));color:var(--text)}.error-banner svg{color:var(--danger);flex:none;width:20px;height:20px;margin-top:1px}@keyframes fade{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes pop{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}
