@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-vietnamese-wght-normal-CHiFlh_0.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-ext-wght-normal-Dg-wlmqe.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Hanken Grotesk Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/hanken-grotesk-latin-wght-normal-CaVRRdDk.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #f6f6f1;--side-bg: #fbfbf8;--surface: #fffffd;--surface-2: #f1f2ec;--surface-3: #e7e9e2;--band: #e2efe8;--band-2: #cde2d6;--line: #e5e7df;--line-strong: #d6d9cf;--ink: #14231d;--ink-2: #45554e;--ink-3: #5c6a63;--night: #14231d;--on-night: #f2f5f0;--accent: #12a079;--accent-deep: #0b7658;--accent-soft: #d3eee2;--accent-ring: #12a0793d;--c1: #0f9db0;--c2: #e0832a;--c3: #22a06b;--c4: #e05a6a;--c1-soft: #d2eef2;--c2-soft: #fbe6d1;--c3-soft: #d6f0e2;--c4-soft: #fbdfe2;--good: #17734f;--good-bg: #dcf1e7;--warn: #9a5a06;--warn-bg: #fbeed6;--bad: #b42318;--bad-bg: #fbe2df;--font: "Hanken Grotesk Variable", "Hanken Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--fs-xs: .75rem;--fs-sm: .84375rem;--fs-md: .9375rem;--fs-lg: 1.125rem;--fs-xl: clamp(1.25rem, 1.05rem + .5vw, 1.5rem);--fs-fig: clamp(1.75rem, 1.2rem + 1.3vw, 2.5rem);--fs-title: clamp(1.625rem, 1.1rem + 1.4vw, 2.25rem);--side-w: clamp(236px, 15vw, 280px);--edge: max(clamp(16px, 2.2vw, 40px), env(safe-area-inset-left), env(safe-area-inset-right));--gap: clamp(14px, 1.2vw, 20px);--pad: clamp(16px, 1.3vw, 22px);--r-card: 14px;--r-sm: 9px;--shadow: 0 1px 0 #14231d08, 0 10px 28px -20px #14231d47;--shadow-lift: 0 2px 0 #14231d08, 0 26px 50px -24px #14231d6b;--ease-out: cubic-bezier(.22, 1, .36, 1);--hatch: repeating-linear-gradient(135deg, currentColor 0 1.5px, transparent 1.5px 5px);color-scheme:light}:root[data-theme=dark]{--bg: #0c1411;--side-bg: #0e1713;--surface: #142019;--surface-2: #1a2a22;--surface-3: #23362c;--band: #13231c;--band-2: #1e3529;--line: #22332a;--line-strong: #2f4539;--ink: #edf3ef;--ink-2: #c0cec6;--ink-3: #94a59c;--night: #e6f2ec;--on-night: #14231d;--accent: #4fd1a5;--accent-deep: #6fe0b8;--accent-soft: #1a3d31;--accent-ring: #4fd1a54d;--c1: #45c6d8;--c2: #f0a35a;--c3: #4cd08f;--c4: #f0828e;--c1-soft: #143a40;--c2-soft: #46301a;--c3-soft: #143b28;--c4-soft: #47222a;--good: #5fd3a3;--good-bg: #123a2b;--warn: #f2bd6b;--warn-bg: #3d2c10;--bad: #ff8a80;--bad-bg: #4a1c1a;--shadow: 0 1px 0 #0003, 0 12px 30px -20px #000000b3;--shadow-lift: 0 2px 0 #0003, 0 28px 54px -24px #000000d9;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:400 var(--fs-md)/1.45 var(--font);-webkit-font-smoothing:antialiased}h1,h2,h3,p{margin:0}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app{display:grid;grid-template-columns:var(--side-w) minmax(0,1fr);min-height:100%}.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:18px;padding:18px 14px;background:var(--side-bg);border-right:1px solid var(--line);overflow-y:auto;z-index:30}.brand{display:flex;align-items:center;gap:10px;padding:2px 10px 6px;font-weight:700;font-size:1.15rem;letter-spacing:-.01em}.brand svg{width:28px;height:28px;color:var(--accent-deep)}.brand:hover svg{animation:knot .9s var(--ease-out)}@keyframes knot{40%{transform:rotate(-24deg) scale(.92)}}.nav{display:grid;gap:2px}.nav__item{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:var(--r-sm);color:var(--ink-2);font-weight:500;transition:color .2s ease,background-color .2s ease}.nav__item svg{width:18px;height:18px;flex:none}.nav__item:hover{color:var(--ink);background:var(--surface-2)}.nav__item.is-active{color:var(--ink);background:var(--surface);box-shadow:var(--shadow),inset 0 0 0 1px var(--line)}.nav__count{margin-left:auto;min-width:22px;height:20px;padding:0 6px;border-radius:999px;display:grid;place-items:center;background:var(--surface-3);color:var(--ink-2);font-size:var(--fs-xs);font-weight:600}.side__label{padding:0 10px;color:var(--ink-3);font-size:var(--fs-xs);font-weight:600;letter-spacing:.02em;display:flex;align-items:center;justify-content:space-between}.plist{display:grid;gap:2px}.plist a{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:var(--r-sm);color:var(--ink-2);font-size:var(--fs-sm);transition:color .2s ease,background-color .2s ease}.plist a:hover{background:var(--surface-2);color:var(--ink)}.plist svg{width:16px;height:16px}.plist b{margin-left:auto;font-weight:500;color:var(--ink-3)}.members{display:grid;gap:8px;padding:0 10px}.member{display:flex;align-items:center;gap:10px;font-size:var(--fs-sm)}.avatar{width:30px;height:30px;border-radius:999px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-deep);font-weight:700;font-size:var(--fs-xs);position:relative;flex:none}.avatar i{position:absolute;right:-1px;bottom:-1px;width:9px;height:9px;border-radius:999px;background:var(--c3);border:2px solid var(--side-bg)}.member small{display:block;color:var(--ink-3);font-size:var(--fs-xs)}.side__spacer{flex:1}.side__user{display:flex;align-items:center;gap:10px;padding:14px 6px 0;border-top:1px solid var(--line)}.side__user b{font-weight:600;font-size:var(--fs-sm)}.side__user small{display:block;color:var(--ink-3);font-size:var(--fs-xs)}.icon-btn.side__close,.icon-btn.top__menu{display:none}.main{min-width:0;display:flex;flex-direction:column}.top{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;padding:14px var(--edge);background:var(--band);transition:box-shadow .25s ease}.top.is-stuck{box-shadow:0 10px 24px -18px #14231d66}.search{flex:1;max-width:520px;display:flex;align-items:center;gap:10px;height:38px;padding:0 12px;border:0;background:transparent;color:var(--ink-3);border-radius:var(--r-sm);text-align:left;transition:background-color .2s ease}.search:hover{background:#fff5}.search svg{width:18px;height:18px}.kbd{margin-left:auto;padding:2px 7px;border-radius:6px;background:var(--surface);border:1px solid var(--line);font-size:var(--fs-xs);color:var(--ink-2)}.top__spacer{flex:1}.tool{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 12px;border:0;background:transparent;border-radius:var(--r-sm);font-weight:500;transition:background-color .2s ease}.tool:hover{background:#fff5}.tool svg,.icon-btn svg{width:18px;height:18px}.icon-btn{width:38px;height:38px;border:0;background:transparent;border-radius:var(--r-sm);display:grid;place-items:center;transition:background-color .2s ease,color .2s ease}.icon-btn:hover{background:#fff5}.icon-btn svg{transition:transform .35s var(--ease-out)}.icon-btn:hover svg{transform:rotate(18deg)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--surface);font-weight:600;transition:background-color .2s ease,border-color .2s ease,color .2s ease,box-shadow .2s ease}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--night);color:var(--on-night);border-color:var(--night)}.btn.primary:hover:not(:disabled){box-shadow:0 8px 18px -10px var(--night)}.btn.ghost{background:transparent}.btn.sm{height:32px;padding:0 12px;font-size:var(--fs-sm)}.btn.danger{color:var(--bad);border-color:var(--bad-bg);background:var(--bad-bg)}.btn svg{width:16px;height:16px}.page{padding:0 var(--edge) 56px;display:grid;gap:var(--gap);align-content:start}.page>:first-child{margin-top:0}.band{background:var(--band);margin:0 calc(var(--edge) * -1);padding:8px var(--edge) 28px;display:grid;gap:22px}.band__head{display:grid;gap:4px}.eyebrow{font-size:var(--fs-xs);color:var(--ink-3);font-weight:500}.title{font-size:var(--fs-title);font-weight:600;letter-spacing:-.02em;line-height:1.1}.lead{color:var(--ink-2);max-width:62ch}.lead b{color:var(--ink);font-weight:700}.fig-row{display:grid;grid-template-columns:minmax(260px,1.3fr) minmax(240px,1fr) minmax(200px,.8fr);gap:clamp(20px,3vw,56px);align-items:end}.chart-title{display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:600;margin-bottom:8px}.legend{display:flex;gap:14px;font-size:var(--fs-xs);font-weight:500;color:var(--ink-2)}.legend i{display:inline-block;width:9px;height:9px;margin-right:6px;border-radius:2px;background:var(--ink);vertical-align:-1px}.legend i.h{background:none;color:var(--ink-2);background-image:var(--hatch);border:1px solid var(--ink-3)}.bars{display:grid;grid-template-columns:26px 1fr;gap:8px;height:170px}.bars__axis{display:flex;flex-direction:column;justify-content:space-between;font-size:var(--fs-xs);color:var(--ink-3);padding-bottom:22px;text-align:right}.bars__plot{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;align-items:end;border-bottom:1px solid var(--line-strong)}.bars__col{display:grid;grid-template-rows:1fr auto;height:100%}.bars__pair{display:flex;align-items:flex-end;justify-content:center;gap:4px;padding-bottom:0;height:100%}.bar{width:11px;border-radius:2px 2px 0 0;background:var(--ink);transform-origin:bottom}.bar.h{background:none;color:var(--ink-3);background-image:var(--hatch);border:1px solid var(--ink-3);border-bottom:0}.bar.now{outline:1.5px dashed var(--ink);outline-offset:2px;background:transparent;border:0}.bars__lbl{text-align:center;font-size:var(--fs-xs);color:var(--ink-2);padding-top:6px;height:22px;font-weight:500}.bars__lbl.is-today{color:var(--accent-deep);font-weight:700}.dial{position:relative;width:100%;max-width:280px;aspect-ratio:2 / 1.12;margin:0 auto}.dial svg{width:100%;height:100%;overflow:visible}.dial line{stroke:var(--ink);stroke-linecap:butt}.dial line.off{stroke:var(--ink-3);opacity:.45}.dial__num{position:absolute;left:0;right:0;bottom:8px;text-align:center}.dial__num b{display:block;font-size:var(--fs-xl);letter-spacing:-.02em;font-weight:700}.dial__num span{font-size:var(--fs-sm);color:var(--ink-2)}.dial__cap{margin:6px 0 0;text-align:center;font-size:var(--fs-sm);color:var(--ink-2)}.figs{display:grid;gap:22px}.fig{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.fig b{display:block;font-size:var(--fs-fig);font-weight:600;letter-spacing:-.02em;line-height:1;margin-bottom:8px}.fig span{color:var(--ink-2);font-size:var(--fs-sm);line-height:1.25;display:block}.fig__go{width:30px;height:30px;border-radius:999px;display:grid;place-items:center;color:var(--ink);transition:background-color .2s ease}.fig__go:hover{background:#fff7}.fig__go svg{width:18px;height:18px;transition:transform .35s var(--ease-out)}.fig__go:hover svg{transform:translate(3px)}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px;border-radius:999px;border:1px solid var(--line-strong);background:var(--surface);font-weight:500;transition:background-color .2s ease,color .2s ease,border-color .2s ease}.chip:hover{background:var(--surface-2)}.chip.is-on{background:var(--night);color:var(--on-night);border-color:var(--night)}.chip i{width:8px;height:8px;border-radius:999px;background:var(--c2)}.chip small{font-size:var(--fs-sm);color:inherit;opacity:.7}.tag{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border-radius:999px;font-size:var(--fs-xs);font-weight:600;background:var(--surface-2);color:var(--ink-2)}.tag.good{background:var(--good-bg);color:var(--good)}.tag.warn{background:var(--warn-bg);color:var(--warn)}.tag.bad{background:var(--bad-bg);color:var(--bad)}.tag.info{background:var(--c1-soft);color:var(--c1)}.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(290px,1fr);gap:var(--gap);overflow-x:auto;padding:6px 2px 18px;margin:0 -2px;scrollbar-width:thin}.col{display:grid;align-content:start;gap:12px;min-width:0}.col__head{display:flex;align-items:baseline;gap:8px}.col__head h2{font-size:var(--fs-xl);font-weight:600;letter-spacing:-.01em;white-space:nowrap}.col__head small{color:var(--ink-3)}.col__count{margin-left:auto;align-self:center;display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--surface);font-weight:600;transition:background-color .2s ease,border-color .2s ease}.col__count:hover{background:var(--surface-2)}.col__list{display:grid;gap:12px;align-content:start;min-height:120px;padding:2px;border-radius:var(--r-card);transition:background-color .2s ease,box-shadow .2s ease}.deal{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:14px 14px 12px;display:grid;gap:10px;box-shadow:var(--shadow);cursor:pointer;transition:background-color .3s ease,border-color .3s ease,color .3s ease,box-shadow .3s var(--ease-out),translate .3s var(--ease-out)}.deal:hover{translate:0 -3px;box-shadow:var(--shadow-lift);border-color:var(--line-strong)}.deal__top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.deal h3{font-size:var(--fs-md);font-weight:600;letter-spacing:-.005em}.deal p{color:var(--ink-2);font-size:var(--fs-sm)}.deal__meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:var(--fs-sm)}.pill{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 9px;border-radius:var(--r-sm);border:1px solid var(--line-strong);font-size:var(--fs-xs);font-weight:500;background:var(--surface)}.pill.warn{background:var(--warn-bg);border-color:#e9c98a;color:var(--warn)}.pill.bad{background:var(--bad-bg);border-color:#efb3ad;color:var(--bad)}.pill svg{width:14px;height:14px}.deal__sum{font-weight:700}.deal__stats{margin-left:auto;display:flex;gap:10px;color:var(--ink-3);font-size:var(--fs-xs)}.deal__stats span{display:inline-flex;align-items:center;gap:4px}.deal__stats svg{width:14px;height:14px}.deal--done{background:var(--surface-2);box-shadow:none}.kebab{width:24px;height:24px;border:0;background:transparent;border-radius:6px;display:grid;place-items:center;color:var(--ink-3);transition:background-color .2s ease}.kebab:hover{background:var(--surface-3)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--pad);box-shadow:var(--shadow);display:grid;gap:14px;align-content:start;min-width:0}.card h2{font-size:var(--fs-lg);font-weight:600}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap)}.empty-state{display:grid;justify-items:center;gap:8px;text-align:center;padding:36px 16px;color:var(--ink-2)}.empty-state .ico{width:52px;height:52px;border-radius:16px;background:var(--surface-2);display:grid;place-items:center;color:var(--ink-3)}.empty-state b{color:var(--ink)}.empty-state p{max-width:46ch;font-size:var(--fs-sm)}.sample-note{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--r-sm);background:var(--warn-bg);color:var(--warn);font-size:var(--fs-sm);font-weight:500}.field{display:grid;gap:6px}.field label{font-size:var(--fs-xs);color:var(--ink-3);font-weight:600}.input{height:42px;padding:0 12px;border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font:inherit;width:100%;transition:border-color .2s ease,box-shadow .2s ease}.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-ring)}.input.code{letter-spacing:.4em;text-align:center;font-size:var(--fs-lg);font-variant-numeric:tabular-nums}.form-note{color:var(--ink-2);font-size:var(--fs-sm)}.form-error{padding:10px 12px;border-radius:var(--r-sm);background:var(--bad-bg);color:var(--bad);font-size:var(--fs-sm)}.secret{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:var(--fs-sm);word-break:break-all;background:var(--surface-2);padding:10px 12px;border-radius:var(--r-sm)}.codes{display:grid;grid-template-columns:1fr 1fr;gap:6px;font-family:ui-monospace,Menlo,monospace;font-size:var(--fs-sm);background:var(--surface-2);padding:12px;border-radius:var(--r-sm)}.qr{display:grid;place-items:center;background:#fff;border-radius:var(--r-sm);padding:10px}.auth-wrap{min-height:100%;display:grid;place-items:center;padding:24px 16px;background:linear-gradient(180deg,var(--band) 0,var(--bg) 60%)}.auth-card{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:28px;display:grid;gap:20px;box-shadow:var(--shadow-lift)}.auth-card h1{font-size:var(--fs-xl);font-weight:600}.auth-card .logo{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:var(--night);color:var(--on-night)}.auth-card .logo svg{width:26px;height:26px}.scrim{position:fixed;inset:0;background:#14231d66;z-index:60;display:grid;place-items:start center;padding:12vh 16px 16px;animation:fade .2s ease}.palette{width:min(560px,100%);background:var(--surface);border-radius:18px;box-shadow:var(--shadow-lift);overflow:hidden;animation:pop .3s var(--ease-out)}.palette input{width:100%;border:0;outline:0;background:transparent;height:56px;padding:0 20px;font:inherit;font-size:var(--fs-lg);color:var(--ink);border-bottom:1px solid var(--line)}.palette ul{list-style:none;margin:0;padding:8px;max-height:340px;overflow:auto}.palette li button{width:100%;text-align:left;border:0;background:transparent;padding:11px 14px;border-radius:var(--r-sm);display:flex;align-items:center;gap:12px}.palette li button[aria-selected=true]{background:var(--accent-soft);color:var(--accent-deep)}.palette svg{width:18px;height:18px}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(-8px) scale(.98)}}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--night);color:var(--on-night);padding:12px 18px;border-radius:999px;font-size:var(--fs-sm);z-index:70;box-shadow:var(--shadow-lift);animation:pop .3s var(--ease-out)}@media(max-width:1100px){.fig-row{grid-template-columns:1fr 1fr}.figs{grid-column:1 / -1;grid-template-columns:1fr 1fr}}@media(max-width:900px){.app{grid-template-columns:minmax(0,1fr)}.side{position:fixed;inset:0 auto 0 0;width:min(300px,86vw);transform:translate(-102%);transition:transform .35s var(--ease-out);box-shadow:var(--shadow-lift)}.app.menu-open .side{transform:none}.app.menu-open:after{content:"";position:fixed;inset:0;background:#14231d55;z-index:25;animation:fade .2s ease}.icon-btn.top__menu,.icon-btn.side__close{display:grid}.icon-btn.side__close{position:absolute;right:10px;top:14px}.tool .t,.btn .t{display:none}.top .btn.primary{padding:0 12px}.grid-2{grid-template-columns:minmax(0,1fr)}}@media(max-width:600px){.fig-row,.figs{grid-template-columns:1fr}.kbd{display:none}.board{grid-auto-columns:82%;scroll-snap-type:x mandatory}.col{scroll-snap-align:start}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.modal-scrim{place-items:center;padding:16px;overflow-y:auto}.modal{width:min(520px,100%);background:var(--surface);border-radius:20px;box-shadow:var(--shadow-lift);padding:22px;display:grid;gap:16px;max-height:calc(100vh - 32px);overflow-y:auto}.modal.wide{width:min(760px,100%)}.modal__head{display:flex;align-items:center;justify-content:space-between}.modal__head h2{font-size:var(--fs-xl);font-weight:600;letter-spacing:-.01em}.modal__head .icon-btn:hover{background:var(--surface-2)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.span2{grid-column:1 / -1}.area{height:auto;padding:10px 12px;resize:vertical;line-height:1.4}select.input{appearance:auto}.note-line{color:var(--ink-2);font-size:var(--fs-sm);background:var(--accent-soft);border-radius:var(--r-sm);padding:9px 12px}.form-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.inline-form{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.inline-form .input{flex:1;min-width:180px}.inline-form.grow{flex:1}.chip.push,.btn.push{margin-left:auto}.rows{list-style:none;margin:0;padding:0;display:grid}.rows li{display:flex;align-items:center;gap:12px;padding:12px 2px;border-bottom:1px solid var(--line)}.rows li:last-child{border-bottom:0}.row-actions{margin-left:auto;display:flex;gap:6px}.dot{width:9px;height:9px;border-radius:999px;background:var(--accent);flex:none}.dot.off{background:var(--line-strong)}.muted,.muted-name{color:var(--ink-3)}.count{color:var(--ink-3);font-weight:500;font-size:var(--fs-md);margin-left:6px}.col__empty{padding:22px;border:1px dashed var(--line-strong);border-radius:var(--r-card);text-align:center;color:var(--ink-3);font-size:var(--fs-sm)}.menu-wrap{position:relative}.menu{position:absolute;right:0;top:28px;z-index:15;min-width:210px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lift);padding:6px;display:grid;animation:pop .2s var(--ease-out)}.menu button{text-align:left;border:0;background:transparent;padding:9px 12px;border-radius:8px;font-size:var(--fs-sm);transition:background-color .2s ease}.menu button:hover{background:var(--surface-2)}.menu button.danger{color:var(--bad)}.switch{position:relative;display:inline-block;width:44px;height:26px;flex:none}.switch input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}.switch i{position:absolute;inset:0;background:var(--line-strong);border-radius:999px;transition:background-color .2s ease;pointer-events:none}.switch i:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:999px;background:#fff;transition:transform .3s var(--ease-out)}.switch input:checked+i{background:var(--accent)}.switch input:checked+i:after{transform:translate(18px)}@media(max-width:640px){.form-grid{grid-template-columns:minmax(0,1fr)}.modal{padding:16px}.row-actions{flex-direction:column}}.side__none{padding:6px 10px;font-size:var(--fs-sm);color:var(--ink-3)}.menu-float{position:fixed;z-index:80;min-width:220px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lift);padding:6px;display:grid;animation:pop .2s var(--ease-out)}.menu-float button{text-align:left;border:0;background:transparent;padding:10px 12px;border-radius:8px;font-size:var(--fs-sm);transition:background-color .2s ease}.menu-float button:hover{background:var(--surface-2)}.menu-float button.danger{color:var(--bad)}table.t{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}table.t th{text-align:left;font-weight:600;color:var(--ink-3);font-size:var(--fs-xs);padding:10px 12px;border-bottom:1px solid var(--line);white-space:nowrap}table.t td{padding:14px 12px;border-bottom:1px solid var(--line);vertical-align:top}table.t tr:last-child td{border-bottom:0}table.t small{display:block;color:var(--ink-3);font-size:var(--fs-xs);margin-top:2px}table.t td.num,table.t th.num{text-align:right;font-variant-numeric:tabular-nums}table.t td.act{white-space:nowrap}.act-row{display:flex;gap:6px;justify-content:flex-end;align-items:center}table.t tr.is-focus td{background:var(--accent-soft)}.table-wrap{overflow-x:auto;margin:0 calc(var(--pad) * -1);padding:0 var(--pad)}.checks{display:grid;gap:8px;padding-top:4px}.checks label{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--ink);font-weight:500}.checks input{width:17px;height:17px;accent-color:var(--accent)}.bubble-wrap{max-width:380px;display:grid;gap:4px;background:#e6eef3;padding:14px;border-radius:var(--r-card)}:root[data-theme=dark] .bubble-wrap{background:#0e1621}.bubble{background:#fff;color:#14231d;border-radius:14px 14px 14px 4px;padding:10px 12px;font-size:14.5px;line-height:1.4;word-break:break-word;box-shadow:0 1px 1px #0001}:root[data-theme=dark] .bubble{background:#182533;color:#f5f5f5}.bubble a{color:#2678b6}.bubble-btn{background:#3a6d8f66;color:#1d4f72;text-align:center;padding:8px;border-radius:8px;font-size:14px;font-weight:500}.bubble-btn.alt{background:#7aa05a55;color:#3f6628}:root[data-theme=dark] .bubble-btn{color:#cfe3f2;background:#2b5278}.tag+.tag{margin-left:6px}.bars__plot.seven{grid-template-columns:repeat(7,1fr);gap:6px}.bars__plot.seven .bar{width:8px}.bars__plot.seven .bars__pair{gap:3px}.eyebrow.back{display:inline-block;transition:color .2s ease}.eyebrow.back:hover{color:var(--ink)}.band__actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.meter-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px;font-size:var(--fs-sm)}.meter-head b{font-weight:600}.meter{position:relative;height:14px;border-radius:999px;background:var(--band-2);overflow:visible}.meter__fill{height:100%;width:0;border-radius:999px;background:var(--night)}.meter__min{position:absolute;top:-5px;width:2px;height:24px;background:var(--accent-deep);border-radius:2px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--gap)}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--pad);box-shadow:var(--shadow);display:grid;gap:6px;align-content:start}.tile span{color:var(--ink-3);font-size:var(--fs-sm)}.tile b{font-size:var(--fs-fig);font-weight:600;letter-spacing:-.02em;line-height:1}.tile small{color:var(--ink-3);font-size:var(--fs-xs)}.tile.accent{background:var(--night);color:var(--on-night);border-color:var(--night)}.tile.accent span,.tile.accent small{color:var(--on-night);opacity:.75}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.sub{display:block;color:var(--ink-3);font-size:var(--fs-xs);font-weight:400}.row-link{display:grid;gap:2px;flex:1;transition:color .2s ease}.row-link:hover b{color:var(--accent-deep)}
