@font-face{font-family:League Spartan Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/league-spartan-vietnamese-wght-normal-COdtqR7n.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:League Spartan Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/league-spartan-latin-ext-wght-normal-DdUHL39C.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:League Spartan Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/league-spartan-latin-wght-normal-0z8Zi79b.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}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-greek-wght-normal-DL7QRZyv.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-vietnamese-wght-normal-usUDDRr7.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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.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:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.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,[data-theme=light]{--bg: #f6f3ee;--bg-dots: rgba(20, 16, 26, .07);--surface: #ffffff;--surface-2: #f1ede6;--surface-3: #e9e4db;--ink: #121016;--ink-2: #4f4a58;--ink-3: #6e6878;--line: #e6e0d6;--line-strong: #d3ccbf;--brand: #8e2ba3;--brand-ink: #7a2190;--brand-soft: #f3e6f6;--brand-on: #ffffff;--lime: #c9f03a;--lime-ink: #2f3a05;--good: #12704f;--good-soft: #e1f3ea;--warn: #a2500a;--warn-soft: #fdeedd;--bad: #b5222b;--bad-soft: #fbe5e5;--info: #2a54b8;--info-soft: #e5ecfb;--pvt: #7a2190;--pvt-soft: #f3e6f6;--chart-1: #8e2ba3;--chart-2: #0f8a76;--chart-grid: #e6e0d6;--tech: #2a54b8;--tech-soft: #e5ecfb;--rail: #121016;--rail-ink: #f4f0ea;--rail-ink-2: #a8a1b3;--rail-hover: #221e29;--hero: #121016;--hero-ink: #f6f3ee;--hero-ink-2: #b9b2c4;--shadow: 0 1px 2px rgba(18, 16, 22, .05), 0 8px 24px -12px rgba(18, 16, 22, .12);--shadow-lift: 0 2px 4px rgba(18, 16, 22, .06), 0 18px 40px -16px rgba(18, 16, 22, .22);color-scheme:light}[data-theme=dark]{--bg: #0d0b11;--bg-dots: rgba(255, 255, 255, .05);--surface: #17141d;--surface-2: #1f1b27;--surface-3: #2a2533;--ink: #f4f0ea;--ink-2: #c4bdcf;--ink-3: #9a93a6;--line: #2a2533;--line-strong: #3a3446;--brand: #a44bbd;--brand-ink: #d79be7;--brand-soft: #2c1a33;--brand-on: #ffffff;--lime: #d4fa4a;--lime-ink: #1d2404;--good: #5fd6a4;--good-soft: #10291f;--warn: #f2a65e;--warn-soft: #33210f;--bad: #f2777b;--bad-soft: #351417;--info: #8aa9ff;--info-soft: #172240;--pvt: #d79be7;--pvt-soft: #2c1a33;--chart-1: #a95dc4;--chart-2: #2fa08c;--chart-grid: #2a2533;--tech: #8aa9ff;--tech-soft: #172240;--rail: #08070b;--rail-ink: #f4f0ea;--rail-ink-2: #9a93a6;--rail-hover: #1a1720;--hero: #2a1233;--hero-ink: #f8f1fa;--hero-ink-2: #cdb6d6;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px -12px rgba(0, 0, 0, .6);--shadow-lift: 0 2px 4px rgba(0, 0, 0, .4), 0 18px 40px -16px rgba(0, 0, 0, .8);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:Manrope Variable,system-ui,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;transition:background-color .25s ease,color .25s ease}h1,h2,h3,h4,p{margin:0}a{color:var(--brand-ink);text-decoration:none}a:hover{color:var(--brand)}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:8px}.display{font-family:League Spartan Variable,Manrope Variable,sans-serif;letter-spacing:-.02em}.num{font-variant-numeric:tabular-nums}.muted{color:var(--ink-3)}.dot{color:var(--brand)}.shell{min-height:100%;display:flex}.rail{position:sticky;top:0;height:100vh;width:248px;flex-shrink:0;background:var(--rail);color:var(--rail-ink);display:flex;flex-direction:column;padding:22px 14px 16px;gap:2px;overflow-y:auto}.rail-logo{display:block;padding:6px 10px 22px}.rail-logo img{height:30px;width:auto;display:block}.rail-section{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--rail-ink-2);padding:18px 12px 8px}.rail a{display:flex;align-items:center;gap:12px;height:42px;padding:0 12px;border-radius:12px;color:var(--rail-ink-2);font-weight:600;position:relative}.rail a:hover,.rail a.active{background:var(--rail-hover);color:var(--rail-ink)}.rail a.active:before{content:"";position:absolute;left:-14px;top:10px;bottom:10px;width:4px;border-radius:0 4px 4px 0;background:var(--brand)}.rail a.active svg{color:var(--lime)}.rail .count{margin-left:auto;min-width:22px;height:22px;padding:0 7px;border-radius:999px;background:var(--brand);color:#fff;font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.rail-foot{margin-top:auto;padding-top:14px;border-top:1px solid rgba(255,255,255,.08);display:flex;align-items:center;gap:10px;padding-left:8px}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:14px 32px;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.search{flex:1;max-width:520px;display:flex;align-items:center;gap:10px;height:42px;padding:0 14px;border-radius:12px;background:var(--surface);border:1px solid var(--line);color:var(--ink-3)}.search input{flex:1;border:0;outline:0;background:transparent;color:var(--ink);font:inherit}.kbd{font-size:11px;font-weight:700;padding:2px 6px;border-radius:6px;border:1px solid var(--line-strong);color:var(--ink-3)}.content{padding:28px 32px 64px;width:100%;max-width:1360px;margin:0 auto;display:flex;flex-direction:column;gap:24px}.card{background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.card-pad{padding:22px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 22px 12px}.card-title{font-family:League Spartan Variable,sans-serif;font-size:19px;font-weight:700;letter-spacing:-.01em}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:42px;padding:0 18px;border-radius:12px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font-weight:700;cursor:pointer;white-space:nowrap;transition:transform .12s ease,background-color .15s ease}.btn:hover{background:var(--surface-2);color:var(--ink)}.btn:active{transform:translateY(1px)}.btn-sm{height:34px;padding:0 12px;font-size:13px;border-radius:10px}.btn-brand{background:var(--brand);border-color:var(--brand);color:var(--brand-on)}.btn-brand:hover{background:var(--brand-ink);border-color:var(--brand-ink);color:var(--brand-on)}[data-theme=dark] .btn-brand:hover{background:#8f3aa6;border-color:#8f3aa6}.btn-lime{background:var(--lime);border-color:var(--lime);color:var(--lime-ink)}.btn-lime:hover{filter:brightness(.95);background:var(--lime);color:var(--lime-ink)}.btn-ghost{background:transparent;border-color:transparent}.icon-btn{width:42px;padding:0}.chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.chip-pvt{background:var(--pvt-soft);color:var(--pvt)}.chip-tech{background:var(--tech-soft);color:var(--tech)}.chip-good{background:var(--good-soft);color:var(--good)}.chip-warn{background:var(--warn-soft);color:var(--warn)}.chip-bad{background:var(--bad-soft);color:var(--bad)}.chip-info{background:var(--info-soft);color:var(--info)}.chip-plain{background:var(--surface-2);color:var(--ink-2)}.chip-dot:before{content:"";width:6px;height:6px;border-radius:999px;background:currentColor}.avatar{width:34px;height:34px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;flex-shrink:0}.seg{display:inline-flex;padding:4px;gap:2px;border-radius:12px;background:var(--surface-2);border:1px solid var(--line)}.seg button{height:32px;padding:0 14px;border-radius:9px;border:0;background:transparent;color:var(--ink-3);font-weight:700;font-size:13px;cursor:pointer}.seg button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:12px;font-weight:700;color:var(--ink-2)}.input{height:46px;padding:0 14px;border-radius:12px;border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);font:600 14px Manrope Variable,sans-serif;width:100%}.input:focus{outline:2px solid var(--brand);outline-offset:0;border-color:transparent}.input.ai{border-color:var(--warn);background:var(--warn-soft)}.hint{font-size:12px;color:var(--ink-3)}table.tbl{width:100%;border-collapse:collapse}.tbl th{text-align:left;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding:10px 22px;border-bottom:1px solid var(--line);white-space:nowrap}.tbl td{padding:14px 22px;border-bottom:1px solid var(--line);white-space:nowrap}.tbl tr:last-child td{border-bottom:0}.tbl tbody tr{transition:background-color .15s ease}.tbl tbody tr:hover{background:var(--surface-2)}.r{text-align:right!important}.scroll-x{overflow-x:auto}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px}.page-title{font-family:League Spartan Variable,sans-serif;font-size:40px;line-height:1.05;font-weight:800;letter-spacing:-.03em}.page-title .dot{color:var(--brand)}.page-sub{color:var(--ink-3);margin-top:8px;font-size:15px}.grid{display:grid;gap:20px}.cols-4{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.split{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start}.split>.wide{flex:2 1 560px;min-width:0;display:flex;flex-direction:column;gap:20px}.split>.narrow{flex:1 1 320px;min-width:0;display:flex;flex-direction:column;gap:20px}.dots{background-image:radial-gradient(var(--bg-dots) 1.2px,transparent 1.2px);background-size:16px 16px}.hero{background:var(--hero);color:var(--hero-ink);border:0;position:relative;overflow:hidden}.hero:after{content:"";position:absolute;right:-60px;top:-60px;width:220px;height:220px;border-radius:999px;background:var(--brand);opacity:.9}.hero>*{position:relative;z-index:1}.stat-num{font-family:League Spartan Variable,sans-serif;font-size:34px;font-weight:800;letter-spacing:-.02em;line-height:1.1}.lift{transition:transform .18s ease,box-shadow .18s ease}.lift:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift)}.bar-track{height:10px;border-radius:999px;background:var(--surface-2);overflow:hidden}.bar-fill{height:100%;border-radius:999px;background:var(--brand)}.ticker{display:flex;flex-wrap:wrap;gap:8px}.ticker .chip{height:30px;padding:0 12px;font-size:13px}.notice{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:14px}.notice-warn{background:var(--warn-soft);color:var(--ink)}.notice-brand{background:var(--brand-soft);color:var(--ink)}.switch{width:52px;height:30px;border-radius:999px;border:0;padding:3px;cursor:pointer;display:flex;transition:background-color .2s ease}.switch span{width:24px;height:24px;border-radius:999px;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .2s ease}.switch[aria-checked=true]{background:var(--brand)}.switch[aria-checked=true] span{transform:translate(22px)}.switch[aria-checked=false]{background:var(--line-strong)}.sticker{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:var(--lime);color:var(--lime-ink);font-weight:800;font-size:12px;transform:rotate(-3deg);box-shadow:0 6px 16px -8px #0006}.fade-in{animation:fadeIn .35s ease both}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media (max-width: 900px){.shell{flex-direction:column}.rail{position:static;width:100%;height:auto;flex-direction:row;flex-wrap:wrap;padding:12px;gap:4px}.rail-logo{padding:6px 10px;width:100%}.rail-section,.rail-foot{display:none}.rail a.active:before{display:none}.topbar{padding:12px 16px}.content{padding:20px 16px 48px}.page-title{font-size:30px}}.bento{display:grid;gap:20px;grid-template-columns:repeat(4,minmax(0,1fr))}.bento .span2{grid-column:span 2;grid-row:span 2}@media (max-width: 1100px){.bento{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 600px){.bento{grid-template-columns:1fr}.bento .span2{grid-column:auto;grid-row:auto}}.attn-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:14px 22px;border-top:1px solid var(--line)}.attn-row:hover{background:var(--surface-2)}.receipt{width:250px;background:#fff;color:#121016;border-radius:18px;padding:22px;text-align:center;box-shadow:var(--shadow-lift);position:relative;overflow:hidden;transform:rotate(-2deg)}.scan{position:absolute;left:0;right:0;height:40px;background:linear-gradient(180deg,transparent,rgba(164,75,189,.28),transparent);animation:scan 2.4s ease-in-out infinite}@keyframes scan{0%{top:-40px}to{top:100%}}.drop{border:2px dashed var(--line-strong);border-radius:18px;padding:28px;display:flex;justify-content:center}.board{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:start}.col{background:var(--surface-2);border-radius:20px;padding:12px;display:flex;flex-direction:column;gap:10px;min-height:160px}.col-head{display:flex;align-items:center;gap:8px;padding:4px 6px 6px;font-weight:800}.col-head .n{margin-left:auto;min-width:24px;height:24px;border-radius:999px;background:var(--surface);display:inline-flex;align-items:center;justify-content:center;font-size:12px}.task{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:14px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow)}.task.late{border-color:var(--bad)}.slip{width:100%;max-width:820px;margin:0 auto;background:#fff;color:#333;font-family:Manrope Variable,system-ui,sans-serif;font-size:13px;line-height:1.45;padding:36px 40px 28px;border-radius:6px;box-shadow:var(--shadow-lift)}.slip-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:16px;border-bottom:1.5px solid #d6d9df}.slip-co{display:flex;gap:16px;align-items:center}.slip-co img{width:96px;height:auto}.slip-co .name{font-size:21px;font-weight:800;color:#3a3a3a}.slip-co .addr{color:#6b6f78;font-size:13px}.slip-month{text-align:right}.slip-month .k{color:#6b6f78;font-size:13px}.slip-month .v{font-size:18px;font-weight:800;color:#111}.slip-summary{display:flex;justify-content:space-between;gap:24px;margin-top:20px;flex-wrap:wrap}.slip-label{font-size:12px;font-weight:800;color:#6b6f78;letter-spacing:.02em;margin-bottom:10px}.slip-kv{display:grid;grid-template-columns:150px 14px auto;row-gap:12px;color:#6b6f78}.slip-kv b{color:#222;font-weight:600}.slip-net{width:300px;border:1px solid #d6d9df;border-radius:10px;overflow:hidden}.slip-net .top{background:#edf9ef;padding:16px 20px 14px}.slip-net .amt{border-left:3px solid #5cb85c;padding-left:14px}.slip-net .amt .big{font-size:26px;color:#222}.slip-net .amt .lbl{color:#6b7d6b;font-size:13px}.slip-net .rows{border-top:1.5px dotted #b9bec7;margin:0 20px;padding:12px 0 14px;display:grid;grid-template-columns:100px 14px auto;row-gap:10px;color:#6b6f78}.slip-net .rows b{color:#222;font-weight:600}.slip-table{display:grid;grid-template-columns:1fr 1fr;border:1px solid #d6d9df;border-radius:10px;margin-top:26px;overflow:hidden}.slip-col{padding:14px 18px 0}.slip-col+.slip-col{padding-left:18px}.slip-row{display:flex;justify-content:space-between;padding:9px 0}.slip-head{font-size:12px;font-weight:800;color:#3a3a3a;border-bottom:1.5px dashed #c5c9d1;padding-bottom:8px}.slip-total{background:#f6f7f9;margin:6px -18px 0;padding:11px 18px;font-weight:800;color:#222;display:flex;justify-content:space-between}.slip-pay{display:flex;justify-content:space-between;align-items:stretch;border:1px solid #d6d9df;border-radius:10px;margin-top:20px;overflow:hidden}.slip-pay .l{padding:12px 18px}.slip-pay .l .t{font-weight:800;color:#111;font-size:13px}.slip-pay .l .s{color:#6b6f78;font-size:12px}.slip-pay .r2{background:#edf9ef;padding:0 22px;display:flex;align-items:center;font-weight:800;color:#111;font-size:15px}.slip-words{text-align:right;margin-top:20px;color:#6b6f78}.slip-words b{color:#222;font-weight:600}.slip-foot{border-top:1.5px solid #d6d9df;margin-top:18px;padding-top:26px;text-align:center;color:#6b6f78;font-size:11px}@media print{@page{size:A4;margin:10mm}body{background:#fff!important}.rail,.topbar,.no-print{display:none!important}.content{padding:0!important;max-width:none!important}.slip{box-shadow:none;border-radius:0;padding:0;max-width:none}}.task{cursor:grab;touch-action:manipulation}.task:active{cursor:grabbing}.task.dragging{opacity:.35}.task-overlay{cursor:grabbing;transform:rotate(-3deg) scale(1.03);box-shadow:var(--shadow-lift),0 0 0 2px var(--brand)}.col{transition:background-color .15s ease,box-shadow .15s ease}.col.over{background:var(--brand-soft);box-shadow:inset 0 0 0 2px var(--brand)}.col.locked{opacity:.7}.drop-hint{border:2px dashed var(--line-strong);border-radius:16px;padding:18px;text-align:center;font-size:13px;color:var(--ink-3)}.toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%);z-index:50;display:flex;align-items:center;gap:10px;padding:12px 18px;border-radius:14px;background:var(--ink);color:var(--bg);font-weight:700;box-shadow:var(--shadow-lift);animation:fadeIn .2s ease both}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.cal-dow{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding:0 6px 4px}.cal-day{min-height:76px;border-radius:12px;background:var(--surface-2);padding:6px;display:flex;flex-direction:column;gap:4px}.cal-day.off{background:transparent;border:1px dashed var(--line)}.cal-day.today{box-shadow:inset 0 0 0 2px var(--brand)}.cal-num{font-size:12px;font-weight:800;color:var(--ink-2)}.cal .chip{height:20px;padding:0 6px;font-size:11px;border-radius:6px;max-width:100%;overflow:hidden;text-overflow:ellipsis}.chart{position:relative;height:260px;padding-left:52px}.chart-grid{position:absolute;left:52px;right:0;border-top:1px solid var(--chart-grid)}.chart-grid span{position:absolute;left:-52px;top:-8px;width:44px;text-align:right;font-size:11px;color:var(--ink-3)}.chart-cols{position:absolute;left:52px;right:0;top:0;bottom:24px;display:flex}.chart-col{flex:1;display:flex;align-items:flex-end;justify-content:center;gap:2px;position:relative;cursor:default}.chart-col:hover,.chart-col:focus-visible{background:color-mix(in srgb,var(--ink) 5%,transparent);border-radius:8px}.chart-bar{width:18px;border-radius:4px 4px 0 0}.chart-x{position:absolute;bottom:-22px;left:0;right:0;text-align:center;font-size:12px;font-weight:700;color:var(--ink-3)}.chart-tip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);z-index:3;white-space:nowrap;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lift);padding:10px 12px;font-size:12px}.swatch{width:10px;height:10px;border-radius:3px;display:inline-block}.set-nav{display:flex;flex-direction:column;gap:4px;position:sticky;top:90px}.set-nav button{display:flex;align-items:center;gap:10px;height:42px;padding:0 14px;border-radius:12px;border:0;background:transparent;color:var(--ink-2);font-weight:700;cursor:pointer;text-align:left}.set-nav button:hover{background:var(--surface-2)}.set-nav button[aria-current=true]{background:var(--ink);color:var(--bg)}.set-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;padding:16px 22px;border-top:1px solid var(--line)}.set-row .k{flex:1 1 260px;min-width:0}.set-row .k b{display:block}.set-row .k span{font-size:13px;color:var(--ink-3)}@media (max-width: 900px){.set-nav{position:static;flex-direction:row;flex-wrap:wrap}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#0a080e73;display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px}.palette{width:100%;max-width:620px;background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-lift);overflow:hidden;animation:fadeIn .15s ease both}.palette input{width:100%;height:58px;border:0;outline:0;padding:0 20px;font:600 16px Manrope Variable,sans-serif;background:transparent;color:var(--ink);border-bottom:1px solid var(--line)}.palette ul{list-style:none;margin:0;padding:8px;max-height:50vh;overflow-y:auto}.palette li a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;color:var(--ink);font-weight:600}.palette li a[aria-selected=true],.palette li a:hover{background:var(--surface-2);color:var(--ink)}.palette .group{font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);padding:10px 12px 4px}.popover{position:absolute;right:0;top:calc(100% + 8px);width:360px;max-width:90vw;z-index:30;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-lift);padding:8px;animation:fadeIn .15s ease both}.popover a,.popover .item{display:block;padding:10px 12px;border-radius:12px;color:var(--ink)}.popover a:hover{background:var(--surface-2);color:var(--ink)}@media (max-width: 700px){.hide-sm{display:none}.search{max-width:52px}.search .kbd,.search>span{display:none}}@media (max-width: 700px){.topbar{gap:8px}.topbar>div[style*="flex: 1"]{display:none}.topbar select{max-width:132px;text-overflow:ellipsis}.topbar .btn.icon-btn,.topbar .search{width:40px;height:40px;padding:0;justify-content:center}.topbar .btn-brand{padding:0 12px}}@media (max-width: 700px){.seg{max-width:100%;overflow-x:auto}.seg button{white-space:nowrap;flex-shrink:0}.page-head>div:last-child{max-width:100%}}.modal{width:100%;max-width:560px;max-height:calc(88vh - 32px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-lift);animation:fadeIn .15s ease both}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 22px 8px}.modal-body{padding:8px 22px 18px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.modal-foot{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;padding:14px 22px;border-top:1px solid var(--line)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}.voided td{color:var(--ink-3)}.voided td .strike{text-decoration:line-through}.secret{font-family:ui-monospace,monospace;font-size:15px;font-weight:700;padding:10px 12px;border-radius:12px;background:var(--surface-2);border:1px dashed var(--line);word-break:break-all}@media (max-width: 700px){.overlay{padding:16px;align-items:flex-end}.modal{max-height:calc(100vh - 32px)}}.stmt-table{width:100%;border-collapse:collapse;margin-top:22px;color:#222}.stmt-table th{text-align:left;font-size:12px;color:#6b6f78;font-weight:800;padding:8px 6px;border-bottom:1.5px solid #d6d9df}.stmt-table td{padding:9px 6px;border-bottom:1px solid #eceef2}.stmt-table .r{text-align:right}.stmt-group{font-size:12px;font-weight:800;color:#6b6f78;padding-top:14px!important}.stmt-note{color:#6b6f78;font-size:12px}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spin{animation-duration:3s}}.att-grid th,.att-grid td{padding:8px 4px;text-align:center;font-size:12px;min-width:26px}.att-grid th:first-child,.att-grid td:first-child{text-align:left;padding-left:22px;position:sticky;left:0;background:var(--surface);z-index:1}.att-grid td{font-weight:800}.att-today{color:var(--brand)!important}.att-ok{background:var(--good-soft);color:var(--good)}.att-warn{background:var(--warn-soft);color:var(--warn)}.att-bad{background:var(--bad-soft);color:var(--bad)}.att-leave{background:var(--info-soft);color:var(--info)}.att-extra{background:var(--pvt-soft);color:var(--pvt)}.att-off{background:var(--surface-2);color:var(--ink-3)}.att-key{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:6px;font-weight:800;padding:0 4px;border:1px solid var(--line)}.task-title{all:unset;font-weight:800;flex:1;cursor:pointer}.task-title:hover{color:var(--brand)}.task-title:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}
