:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#eff2f7;--card:#fff;--sunken:#e8ecf3;--hover:#f2f5fa;--stripe:#f7f9fc;--field:#f4f7fb;--ink:#101418;--ink-soft:#333c47;--muted:#5b6675;--faint:#8590a0;--line:#e3e8ef;--line-soft:#eef1f6;--line-strong:#c9d2de;--accent:#0b63e5;--accent-hover:#0a55c8;--accent-ink:#fff;--accent-text:#0b57cc;--accent-soft:#e8f0fe;--accent-line:#bed4fb;--red:#c62a21;--red-soft:#fdeceb;--red-line:#f6c8c3;--orange:#a94a0a;--orange-soft:#fdf2e8;--orange-line:#f3d2ae;--amber:#8a5c07;--amber-soft:#fdf3da;--amber-line:#eed9a0;--green:#0b7a4b;--green-soft:#e2f7ec;--green-line:#b3e6cd;--slate:#5b6472;--slate-soft:#eef1f6;--slate-line:#d6dde6;--pri-ink:#fff;--sidebar:#0f1724;--sidebar-ink:#eaeff7;--sidebar-ink-soft:#eaeff79e;--sidebar-line:#ffffff1c;--sidebar-hover:#ffffff14;--sidebar-raised:#ffffff1f;--sidebar-raised-hover:#ffffff38;--sidebar-accent:#6fa8ff;--sidebar-accent-tint:#5a96ff2e;--grid-line:#10182804;--grid-line-major:#10182807;--page-glow:#0b63e512;--shadow:0 1px 2px #1018280d, 0 10px 24px -16px #10182838;--shadow-lift:0 2px 6px #10182812, 0 22px 46px -22px #10182852;--shadow-drag:0 12px 28px -8px #10182859;--edge:inset 0 1px 0 #ffffffe6;--field-inset:inset 0 1px 2px #1018280d;--glass:#ffffffc7;--accent-tint-weak:#0b63e514;--accent-tint:#0b63e529;--accent-tint-line:#0b63e557;--scrim:#090e167a;--band-alt:#10182807;--hero-1:#0a2f70;--hero-2:#0e4ea8;--hero-ink:#fff;--hero-ink-soft:#c9dcff;--hero-pos:#8df0bd;--hero-neg:#ffb2a6;--hero-line:#fff3;--chart-1:#0b63e5;--chart-2:#0f8f9e;--chart-3:#7a4fd6;--chart-4:#c2740a;--chart-5:#0b7a4b;--chart-6:#c62a21;--chart-7:#4a63d8;--chart-8:#0d8ab8;--chart-9:#6d8a00;--chart-10:#b83ba0;--font-sans:system-ui, -apple-system, "Segoe UI Variable Text", "Segoe UI", "PingFang SC", "HarmonyOS Sans SC", "Microsoft YaHei UI", "Microsoft YaHei", "Noto Sans SC", "Source Han Sans SC", sans-serif;--font-serif:"Noto Serif SC", "Source Han Serif SC", "Songti SC", "SimSun", Georgia, serif;--font-mono:"Cascadia Mono", "Cascadia Code", Consolas, ui-monospace, "SF Mono", Menlo, monospace;--fs-tick:11px;--fs-xs:12px;--fs-sm:13px;--fs-base:15px;--fs-md:17px;--fs-lg:22px;--fs-xl:32px;--fs-display:44px;--tracking-display:-.022em;--tracking-tight:-.012em;--tracking-normal:0;--tracking-loose:.012em;--tracking-wide:.04em;--leading-tight:1.16;--leading-snug:1.4;--leading-body:1.65;--space-1:4px;--space-2:6px;--space-3:8px;--space-4:10px;--space-5:12px;--space-6:16px;--space-7:20px;--space-8:24px;--radius-xs:6px;--radius-sm:10px;--radius-md:12px;--radius:16px;--radius-pill:999px;--dur-fast:.12s;--dur-base:.2s;--ease-out:cubic-bezier(.32, .72, 0, 1);--z-under:0;--z-raised:1;--z-handle:3;--z-drag:4;--z-sticky-left:6;--z-dock:15;--z-sticky:20;--z-sticky-head:25;--z-popover:40;--z-tooltip:60}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#0e1319;--card:#151c24;--sunken:#111823;--hover:#1b2431;--stripe:#131a22;--field:#131a23;--ink:#eef2f8;--ink-soft:#c6d0dd;--muted:#94a1b2;--faint:#6b7889;--line:#243043;--line-soft:#1c2531;--line-strong:#3a4a60;--accent:#4a90f7;--accent-hover:#6aa6ff;--accent-ink:#07121f;--accent-text:#82b4ff;--accent-soft:#16253c;--accent-line:#2c4570;--red:#ff7a6b;--red-soft:#2c1a19;--red-line:#522a26;--orange:#f0a05a;--orange-soft:#2b2116;--orange-line:#4d3a24;--amber:#e8c162;--amber-soft:#2a2415;--amber-line:#4a4021;--green:#46d19a;--green-soft:#0f2a20;--green-line:#235140;--slate:#93a0b0;--slate-soft:#1b2230;--slate-line:#2f3b4c;--pri-ink:#07121f;--sidebar:#0b1017;--sidebar-ink:#e9eef6;--sidebar-ink-soft:#e9eef699;--sidebar-line:#ffffff17;--sidebar-hover:#ffffff0f;--sidebar-raised:#ffffff1a;--sidebar-raised-hover:#fff3;--sidebar-accent:#7cb0ff;--sidebar-accent-tint:#5a96ff29;--grid-line:#eef2f803;--grid-line-major:#eef2f806;--page-glow:#4a90f71f;--shadow:0 1px 2px #00000073, 0 12px 28px -18px #000000bf;--shadow-lift:0 2px 6px #00000073, 0 26px 52px -22px #000000d9;--shadow-drag:0 16px 36px -8px #000c;--edge:inset 0 1px 0 #ffffff0d;--field-inset:inset 0 1px 2px #0006;--glass:#151c24d1;--accent-tint-weak:#4a90f71a;--accent-tint:#4a90f733;--accent-tint-line:#4a90f76b;--scrim:#04080e9e;--band-alt:#eef2f806;--hero-1:#103a86;--hero-2:#1457c0;--hero-ink:#fff;--hero-ink-soft:#d3e2ff;--hero-pos:#9df3c6;--hero-neg:#ffd2cb;--hero-line:#ffffff38;--chart-1:#5aa2ff;--chart-2:#3fc4d4;--chart-3:#a98bff;--chart-4:#f0a95a;--chart-5:#46d19a;--chart-6:#ff7a6b;--chart-7:#8fa2ff;--chart-8:#45c2ea;--chart-9:#b8d24f;--chart-10:#ef7fd8}*{box-sizing:border-box}*,:before,:after{transition:background-color var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out), color var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out)}html{-webkit-text-size-adjust:100%}small{font-size:var(--fs-xs)}body{font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--leading-body);letter-spacing:var(--tracking-normal);color:var(--ink);background-color:var(--paper);background-image:radial-gradient(1100px 460px at 12% -8%, var(--page-glow), transparent 62%), linear-gradient(var(--grid-line) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line) 1px, transparent 1px), linear-gradient(var(--grid-line-major) 1px, transparent 1px), linear-gradient(90deg, var(--grid-line-major) 1px, transparent 1px);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-repeat:no-repeat,repeat,repeat,repeat,repeat;background-size:auto,32px 32px,32px 32px,160px 160px,160px 160px;margin:0}button,input,select,textarea{font:inherit;letter-spacing:inherit}button{cursor:pointer}::selection{background:var(--accent-soft);color:var(--ink)}:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}.sidebar :focus-visible,.punch-dock :focus-visible{outline-color:var(--sidebar-accent)}.timer-value,.punch-elapsed,.inv-num,.gantt-day-num,.gantt-hours span,.print-summary b,.rail-summary strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:0}.stat-card strong,.table td,.annual-total-cell,.rail-flow strong,.print-summary b{font-variant-numeric:tabular-nums}.boot{height:100dvh;color:var(--muted);place-items:center;display:grid}.auth-page{background:radial-gradient(120% 70% at 50% 0%, var(--accent-soft) 0%, transparent 55%);place-items:center;min-height:100dvh;padding:24px;display:grid}.auth-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);width:min(420px,100%);box-shadow:var(--shadow-lift), var(--edge);padding:32px}.auth-card h1{font-size:var(--fs-xl);font-family:var(--font-serif);letter-spacing:.02em;margin:14px 0 6px;font-weight:600}.brand-mark{background:var(--sidebar);width:48px;height:48px;color:var(--sidebar-ink);border-radius:var(--radius-md);letter-spacing:.04em;box-shadow:var(--edge);place-items:center;font-weight:800;display:grid}.brand-mark+h1{margin-top:18px}.muted{color:var(--muted)}.small{font-size:var(--fs-xs)}.stack>*+*{margin-top:18px}.stack{flex-direction:column;display:flex}html{overflow-x:clip}.app-shell{min-height:100dvh;display:flex}.sidebar{background:var(--sidebar);width:238px;color:var(--sidebar-ink);box-shadow:inset -1px 0 0 var(--sidebar-line);flex-direction:column;flex:0 0 238px;padding:20px 12px;display:flex}.brand{letter-spacing:.06em;font-weight:700;font-family:var(--font-serif);font-size:var(--fs-md);align-items:center;gap:10px;padding:8px 10px 24px;display:flex}.brand-dot{background:var(--orange);border-radius:50%;width:10px;height:10px;box-shadow:0 0 0 3px #a94f162e}.sidebar nav{flex-direction:column;flex:1;gap:4px;display:flex}.sidebar nav button{border-radius:var(--radius-sm);width:100%;color:var(--sidebar-ink);text-align:left;background:0 0;border:0;align-items:center;gap:12px;padding:10px;display:flex;position:relative}.sidebar nav button:hover{background:var(--sidebar-hover)}.sidebar nav button.active{background:var(--sidebar-accent-tint);color:var(--sidebar-accent);box-shadow:inset 3px 0 0 var(--sidebar-accent), inset 0 1px 0 #ffffff14;font-weight:600}.sidebar nav button[draggable=true]{cursor:grab}.sidebar nav button.drop-before:before,.sidebar nav button.drop-after:after{content:"";border-radius:var(--radius-xs);background:var(--accent);height:3px;box-shadow:0 0 0 1px #ffffff8c, 0 0 8px var(--accent);pointer-events:none;z-index:var(--z-handle);position:absolute;left:6px;right:6px}.sidebar nav button.drop-before:before{top:-3px}.sidebar nav button.drop-after:after{bottom:-3px}.nav-icon{text-align:center;width:18px;display:inline-block}.drag-handle{opacity:0;font-size:var(--fs-xs);transition:opacity var(--dur-fast) var(--ease-out);margin-left:auto}.sidebar nav button:hover .drag-handle,.sidebar nav button:focus-visible .drag-handle{opacity:.35}@media (hover:none){.drag-handle{display:none}}.sidebar-user{border-top:1px solid var(--sidebar-line);justify-content:space-between;align-items:center;gap:8px;padding:12px 8px 4px;display:flex}.sidebar-user strong{display:block}.sidebar-user span{color:var(--sidebar-ink-soft);font-size:var(--fs-xs)}.sidebar-user-actions{flex:none;gap:6px;display:flex}.pwd-overlay{z-index:70;background:var(--scrim);justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.pwd-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);width:min(400px,100%);box-shadow:var(--shadow-lift);padding:18px 18px 16px}.pwd-card .panel-title{margin-bottom:12px}.pwd-card label{font-size:var(--fs-sm)}.pwd-actions{justify-content:flex-end;gap:8px;display:flex}.theme-toggle{border:1px solid var(--sidebar-line);border-radius:var(--radius-sm);width:100%;color:var(--sidebar-ink);font-size:var(--fs-sm);text-align:left;background:0 0;align-items:center;gap:10px;margin:0 2px 10px;padding:10px;display:flex}.theme-toggle:hover{background:var(--sidebar-raised)}.theme-toggle:active{background:var(--sidebar-raised-hover)}.theme-toggle-icon{text-align:center;width:18px;font-size:var(--fs-base);line-height:1}.theme-toggle-label{flex:1}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--line);background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);justify-content:space-between;align-items:center;height:70px;padding:0 32px;display:flex}.topbar h1{font-size:var(--fs-lg);font-family:var(--font-serif);letter-spacing:.02em;margin:0;font-weight:600}.topbar .muted{margin-left:10px}.online-pill{color:var(--ink-soft);background:var(--sunken);border:1px solid var(--line);border-radius:var(--radius-pill);font-size:var(--fs-xs);align-items:center;gap:6px;padding:6px 10px;display:inline-flex}.online-pill:before{content:"";background:var(--muted);border-radius:50%;width:6px;height:6px}.content{width:100%;max-width:1450px;padding:24px 32px 48px;overflow-x:clip}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow), var(--edge);padding:18px}.panel-title{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.panel-title h2{font-size:var(--fs-md);margin:0}.panel-grid{grid-template-columns:1fr 1fr;align-items:start;gap:16px;display:grid}.quote-detail-layout{grid-template-columns:minmax(0,1fr) minmax(330px,420px);align-items:start;gap:16px;display:grid}.quote-calc{border-top:1px solid var(--line);flex-direction:column;gap:12px;min-height:400px;margin-top:16px;padding-top:14px;display:flex}.quote-calc-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.quote-calc-mode{grid-column:1/-1}.quote-calc-mode select{min-height:40px}.quote-calc-results{font-size:var(--fs-sm);color:var(--ink-soft);flex-wrap:wrap;gap:8px 18px;display:flex}.quote-calc-results b{margin-left:4px}.calc-hint{border-radius:var(--radius-sm);background:var(--red-soft);color:var(--red);font-size:var(--fs-sm);border:1px solid var(--red-line);margin:0;padding:8px 12px}.quote-detail-main{min-height:220px}.quote-list-rail{min-width:0}.quote-summary-bar{align-items:center;min-height:50px}.quote-item-form{min-height:200px}.quote-import-button{min-width:200px;height:35px;min-height:35px;padding-top:8px;padding-bottom:8px}button:disabled{opacity:.55;cursor:not-allowed}button{white-space:nowrap}.stat-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;display:grid}.content.finance-content .stat-grid{grid-template-columns:repeat(auto-fit,minmax(168px,1fr))}.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);text-align:left;min-height:104px;color:var(--ink);flex-direction:column;gap:10px;padding:18px;display:flex}.stat-card:hover{box-shadow:var(--shadow-lift);border-color:var(--accent-line);transform:translateY(-2px)}.stat-card strong{font-size:var(--fs-xl);letter-spacing:-.01em;font-weight:700;line-height:1.15}.stat-card span{color:var(--muted);font-size:var(--fs-sm)}.stat-card .stat-icon{border-radius:var(--radius-md);background:var(--accent-soft);width:38px;height:38px;color:var(--accent-text);font-size:var(--fs-md);flex:none;place-items:center;line-height:1;display:grid}.finance-strip{background:linear-gradient(115deg, var(--hero-1) 0%, var(--hero-2) 100%);border:1px solid var(--hero-line);border-radius:var(--radius);box-shadow:var(--shadow-lift);flex-wrap:wrap;gap:20px;padding:16px 20px;display:flex}.finance-strip span{font-size:var(--fs-sm);color:var(--hero-ink-soft)}.finance-strip b{color:var(--hero-ink);font-size:var(--fs-base);margin-left:6px;font-weight:700}.finance-strip .pos{color:var(--hero-pos)}.finance-strip .neg{color:var(--hero-neg)}.content.finance-content{width:100%;max-width:none}.finance-layout{grid-template-columns:minmax(0,1fr) minmax(340px,480px);align-items:start;gap:20px;display:grid}.finance-main{min-width:0}.finance-rail{flex-direction:column;gap:16px;min-width:0;max-height:calc(100dvh - 110px);display:flex;position:sticky;top:90px;overflow-y:auto}.rail-summary{background:var(--accent-soft);border-radius:var(--radius-sm);font-size:var(--fs-sm);justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;padding:10px 12px;display:flex}.rail-summary strong{color:var(--accent-text);font-size:var(--fs-md)}.rail-list{flex-direction:column;display:flex}.rail-row{border-bottom:1px solid var(--line);font-size:var(--fs-sm);justify-content:space-between;align-items:center;gap:8px;padding:10px 4px;display:flex}.rail-row>span:first-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.rail-flow{grid-template-columns:auto auto 1fr auto;align-items:center;gap:8px;display:grid}.rail-flow strong{text-align:right}.rail-project{grid-template-columns:minmax(0,1fr) auto;gap:4px 8px;display:grid}.rail-project>span:first-child{font-weight:700}.rail-total{text-align:right;color:var(--ink-soft);padding:10px 4px 2px;font-weight:700}.rail-kpis{border-bottom:1px solid var(--line);font-size:var(--fs-sm);color:var(--ink-soft);flex-wrap:wrap;gap:8px 16px;padding:10px 4px;display:flex}.content.project-content{width:100%;max-width:none}.project-layout{grid-template-columns:minmax(0,1fr) minmax(320px,420px);align-items:start;gap:20px;display:grid}.project-main{min-width:0}.project-rail{flex-direction:column;gap:16px;min-width:0;max-height:calc(100vh - 110px);display:flex;position:sticky;top:90px;overflow-y:auto}.rail-item{text-align:left;width:100%;color:var(--ink);border:0;border-bottom:1px solid var(--line);cursor:pointer;background:0 0;border-radius:0;flex-direction:column;align-items:stretch;gap:6px;padding:10px 6px;font-family:inherit;display:flex}.rail-item:hover{background:var(--hover)}.rail-item.active{background:var(--accent-soft)}.rail-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.rail-item-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;font-size:var(--fs-sm);overflow:hidden}.rail-item-meta{font-size:var(--fs-xs);flex-wrap:wrap;align-items:center;gap:6px;display:flex}.rail-item-client{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.table-scroll{max-width:100%;overflow-x:auto}.table-scroll .table{min-width:720px}.project-table-scroll .table{min-width:900px}.project-table-scroll .table th{white-space:nowrap}.project-table-scroll .table th:first-child,.project-table-scroll .table td:first-child{min-width:150px}.project-table-scroll .table th:nth-child(2),.project-table-scroll .table td:nth-child(2){min-width:96px}.project-table-scroll .table td{white-space:nowrap}.project-table-scroll .table td.muted.small{text-overflow:ellipsis;max-width:240px;overflow:hidden}.project-table-scroll .row-actions{flex-wrap:nowrap}.project-table-scroll th:last-child,.project-table-scroll td:last-child{white-space:nowrap}.finance-main .table{min-width:720px}.finance-main .table th:first-child,.finance-main .table td:first-child{white-space:nowrap}.pos{color:var(--green)}.neg{color:var(--red)}.table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.table th,.table td{text-align:left;border-bottom:1px solid var(--line);padding:10px 8px}.table th{color:var(--muted);background:var(--sunken);font-weight:600}.tag{border-radius:var(--radius-pill);min-height:26px;font-size:var(--fs-xs);background:var(--slate-soft);color:var(--ink-soft);align-items:center;padding:4px 9px;display:inline-flex}.tag.on{background:var(--green-soft);color:var(--green)}.tag-input{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--field);box-shadow:var(--field-inset);flex-wrap:wrap;align-items:center;gap:4px;padding:4px 6px;display:flex}.tag-input input{width:auto;min-width:80px;box-shadow:none;font-size:var(--fs-xs);background:0 0;border:none;flex:90px;padding:2px 4px}.tag-input input:focus{outline:none}.tag-input .tag-x{color:inherit;cursor:pointer;font-size:var(--fs-sm);background:0 0;border:none;flex:none;padding:0 0 0 4px;line-height:1}.tag-presets{flex-wrap:wrap;gap:4px;margin-top:4px;display:flex}.tag-preset{cursor:pointer;border:1px dashed var(--line);background:0 0}.tag-preset:hover{background:var(--hover)}.row-tags{flex-wrap:wrap;gap:4px;display:flex}.status-badge{border-radius:var(--radius-pill);background:var(--slate-soft);font-size:var(--fs-xs);color:var(--ink-soft);padding:4px 8px;display:inline-block}.row-form{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.row-form>label{flex:0 auto;min-width:150px}.row-form>label.grow{flex:240px}.grid-form{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;display:grid}.row-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.table tr.row-editing>td{background:var(--accent-soft)}input,select,textarea{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--field);width:100%;color:var(--ink);box-shadow:var(--field-inset);padding:10px 12px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-text);border-color:var(--accent)}textarea{resize:vertical}label{font-size:var(--fs-sm);color:var(--ink-soft);flex-direction:column;gap:6px;display:flex}.check{flex-direction:row;align-items:center;gap:8px}.check input{width:auto}.password-wrap{display:block;position:relative}.password-wrap input{width:100%;padding-right:62px}.eye{border-radius:var(--radius-xs);color:var(--accent-text);font-size:var(--fs-xs);background:0 0;border:0;min-height:28px;padding:6px 8px;line-height:1;position:absolute;top:50%;right:5px;transform:translateY(-50%)}.eye:hover{background:var(--hover);color:var(--ink-soft)}.form-error{border-radius:var(--radius-sm);background:var(--red-soft);color:var(--red);font-size:var(--fs-sm);border:1px solid var(--red-line);margin:0;padding:10px 12px}.field-hint{color:var(--muted);font-size:var(--fs-xs);margin:8px 0 0}.wide{grid-column:1/-1}.mini-heading{font-size:var(--fs-base);margin:18px 0 8px}.section-head{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.section-head>*{margin:0}.todo-item.on{background:var(--accent-soft);border-radius:var(--radius-sm);cursor:pointer}.history-list{flex-direction:column;display:flex}.history-item{border-bottom:1px solid var(--line);font-size:var(--fs-xs);align-items:center;gap:10px;padding:10px 4px;display:flex}.history-item strong{min-width:70px}.history-item span{color:var(--ink-soft);flex:1}.history-item small{color:var(--muted)}.salary-list{flex-direction:column;gap:14px;display:flex}.salary-member{border:1px solid var(--line);border-radius:var(--radius-md);padding:12px}.salary-head{align-items:center;gap:12px;margin-bottom:10px;display:flex}.salary-head span{color:var(--muted);font-size:var(--fs-xs);margin-left:auto}.salary-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}@media (width<=900px){.salary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.annual-table-wrap{margin-top:14px;overflow-x:auto}.annual-total-cell{text-align:right;color:var(--ink-soft);background:var(--sunken);font-variant-numeric:tabular-nums;font-weight:700}input:disabled{background:var(--sunken);color:var(--muted);cursor:not-allowed;box-shadow:none}.primary,.outline,.ghost{border-radius:var(--radius-sm);border:1px solid #0000;padding:10px 14px}.primary{background:var(--accent);color:var(--accent-ink);box-shadow:var(--edge);font-weight:700}.primary:active{transform:translateY(1px)}.outline{border-color:var(--accent-line);color:var(--accent-text);background:var(--card)}.danger-link{border-radius:var(--radius-sm);background:var(--red-soft);color:var(--red);border:1px solid #0000;padding:10px 14px}.tax-field{min-width:150px}.quick-tax{flex-wrap:wrap;gap:4px;display:inline-flex}.quick-tax-toggle{border:1px dashed var(--line-strong);border-radius:var(--radius-pill);color:var(--muted);font-size:var(--fs-xs);background:0 0;padding:6px 10px;line-height:1.5}.quick-tax-btn{min-height:28px}.quick-tax-toggle:hover{background:var(--hover);color:var(--ink-soft)}.quick-tax-btn{border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--sunken);color:var(--ink-soft);font-size:var(--fs-xs);padding:2px 8px;line-height:1.5}.quick-tax-btn:hover{background:var(--hover);border-color:var(--line-strong)}.quick-tax-btn.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-text)}.empty{color:var(--muted);border:1px dashed var(--line);border-radius:var(--radius-md);text-align:center;font-size:var(--fs-sm);flex-direction:column;align-items:center;gap:6px;padding:22px 20px;display:flex}.empty-title{color:var(--ink-soft);font-weight:700;font-size:var(--fs-base)}.empty-hint{max-width:44ch;line-height:1.6}.empty-actions{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:4px;display:flex}.project-group{position:relative}.project-group .group-hint{align-items:center;gap:6px;margin:0 0 10px;display:flex}.kind-dot{border-radius:50%;flex:0 0 9px;width:9px;height:9px;display:inline-block}.kind-dot.internal{background:var(--orange)}.kind-dot.external{background:var(--accent)}.project-columns{grid-template-columns:minmax(0,1fr);align-items:start;gap:18px;min-width:0;display:grid}@media (width>=1280px){.project-columns{grid-template-columns:repeat(2,minmax(0,1fr))}}.panel-count{border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent-text);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;vertical-align:2px;justify-content:center;align-items:center;margin-left:8px;padding:1px 9px;font-weight:600;line-height:1.6;display:inline-flex}.project-detail-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.project-detail-name{font-family:var(--font-serif);font-size:var(--fs-lg);letter-spacing:.02em;margin:0;font-weight:600}.kind-badge{border-radius:var(--radius-pill);font-size:var(--fs-xs);align-items:center;gap:6px;padding:4px 10px;display:inline-flex}.kind-badge.internal{background:var(--orange-soft);color:var(--orange)}.kind-badge.external{background:var(--accent-soft);color:var(--accent-text)}.project-detail-meta{border-radius:var(--radius-sm);background:var(--sunken);font-size:var(--fs-sm);color:var(--muted);flex-wrap:wrap;gap:6px 20px;margin:0 0 14px;padding:10px 12px;display:flex}.project-detail-meta strong{color:var(--ink);font-variant-numeric:tabular-nums}.project-detail-panel .grid-form{margin-bottom:4px}.worktype-tag{border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent-text);font-size:var(--fs-xs);white-space:nowrap;padding:3px 9px;display:inline-block}.task-row{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:flex-start;gap:10px;padding:10px 8px;display:flex}.task-row-main{overflow-wrap:anywhere;flex:auto;min-width:0}.task-row-tools{flex:100%;align-items:center;gap:6px;margin-top:2px;display:flex}.task-row-status{min-width:0;min-height:30px;font-size:var(--fs-xs);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--sunken);color:var(--ink-soft);flex:auto;padding:6px 8px}.task-row-status:hover{border-color:var(--line-strong);background:var(--hover)}.task-row-btn{min-height:30px;font-size:var(--fs-xs);flex:none;padding:6px 10px}.task-row-btn.danger{color:var(--red);border-color:var(--red-line)}.task-row-btn.danger:hover{background:var(--red-soft)}.task-inline-edit{border:1px solid var(--accent-line);border-radius:var(--radius-md);background:var(--card);grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-top:4px;padding:12px;display:grid}.task-inline-edit label{font-size:var(--fs-sm)}.task-inline-edit .wide{grid-column:1/-1}.task-row strong{font-size:var(--fs-base);display:block}.task-row.danger strong{color:var(--red)}.priority-dot{background:var(--muted);border-radius:50%;flex:0 0 8px;width:8px;height:8px;margin-top:6px}.priority-dot.urgent{background:var(--red)}.priority-dot.high{background:var(--orange)}.priority-dot.medium{background:var(--amber)}.priority-dot.low{background:var(--green)}.board{grid-template-columns:repeat(5,minmax(180px,1fr));gap:12px;padding-bottom:10px;display:grid;overflow-x:auto}.board-column{background:var(--sunken);border:1px solid var(--line-soft);border-radius:var(--radius-md);min-width:180px;padding:10px}.board-empty{color:var(--muted);font-size:var(--fs-xs);text-align:center;border:1px dashed var(--line);border-radius:var(--radius-sm);padding:14px 4px}.board-head{color:var(--muted);justify-content:space-between;padding:0 4px 10px;display:flex}.board-list{flex-direction:column;gap:8px;display:flex}.week-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;display:grid}.day-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-md);min-height:140px;box-shadow:var(--edge);padding:10px}.day-card>strong{color:var(--accent-text)}.todo-list{flex-direction:column;display:flex}.todo-item{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:12px 6px;display:flex}.todo-item strong{font-size:var(--fs-base);display:block}.pool-actions{margin-bottom:8px}.cloud-model-settings{border-top:1px dashed var(--line);margin-top:14px;padding-top:10px}.cloud-model-settings summary{cursor:pointer;color:var(--muted);font-size:var(--fs-sm);-webkit-user-select:none;user-select:none}.cloud-model-settings summary:hover{color:var(--ink)}.cloud-model-settings[open] summary{margin-bottom:10px}.pool-select-all{flex-direction:row;align-items:center;gap:8px}.pool-select-all input{width:auto}.pool-item{border-bottom:1px solid var(--line);flex-direction:row;align-items:flex-start;gap:10px;padding:12px 6px;display:flex}.pool-item:hover{background:var(--hover)}.pool-item input[type=checkbox]{flex:none;width:auto;margin-top:4px}.pool-item-main{flex:auto;min-width:0}.pool-item-main strong{font-size:var(--fs-base);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.pool-item-desc{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.pool-item-meta{min-width:0;color:var(--muted);font-size:var(--fs-xs);flex-wrap:wrap;flex:0 auto;justify-content:flex-end;align-items:center;gap:4px 10px;display:flex}.pool-item-project,.pool-item-order{text-overflow:ellipsis;white-space:nowrap;max-width:180px;overflow:hidden}.timer-card{text-align:center;padding:16px 12px 6px}.timer-value{font-size:var(--fs-display);letter-spacing:.02em;color:var(--accent-text);font-variant-numeric:tabular-nums;display:block}.ratio-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.ratio-item{border:1px solid var(--line);border-radius:var(--radius-sm);grid-template-rows:auto auto;grid-template-columns:10px 1fr auto;align-items:center;gap:2px 8px;padding:10px;display:grid}.ratio-item b{font-size:var(--fs-md)}.ratio-item small{color:var(--muted);grid-column:2/4}.ratio-dot{border-radius:50%;width:8px;height:8px}.ratio-dot.sleep{background:var(--slate)}.ratio-dot.commute{background:var(--orange)}.ratio-dot.work{background:var(--accent)}.ratio-dot.other{background:var(--slate-line)}.day-gantt{border:1px solid var(--line);border-radius:var(--radius-sm);margin-top:18px;padding:18px 12px 12px;position:relative}.gantt-hours{height:20px;margin-bottom:8px;position:relative}.gantt-hours span{color:var(--muted);font-size:var(--fs-tick);position:absolute;transform:translate(-50%)}.gantt-hours span:last-child{transform:translate(-100%)}.gantt-track{background:var(--sunken);border-radius:var(--radius-sm);height:32px;position:relative;overflow:hidden}.gantt-segment{color:var(--pri-ink);font-size:var(--fs-tick);white-space:nowrap;justify-content:center;align-items:center;display:flex;position:absolute;top:0;bottom:0;overflow:hidden}.gantt-segment.sleep{background:var(--slate)}.gantt-segment.commute{background:var(--orange)}.gantt-segment.work{background:var(--accent);color:var(--accent-ink)}.gantt-segment.other{background:var(--slate-soft);color:var(--ink-soft)}.meeting-mini{flex-direction:column;gap:8px;display:flex}.agenda-item{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:8px 0;display:flex}.category{border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent-text);font-size:var(--fs-xs);padding:4px 8px}.category.逾期{background:var(--red-soft);color:var(--red)}.category.阻塞{background:var(--orange-soft);color:var(--orange)}.toast{z-index:var(--z-dock);background:var(--sidebar);color:var(--sidebar-ink);border:1px solid var(--sidebar-line);border-radius:var(--radius-md);box-shadow:var(--shadow-lift);max-width:min(420px,100vw - 48px);padding:12px 16px;position:fixed;bottom:28px;right:28px}@media (width<=1600px){.finance-layout{grid-template-columns:1fr}.finance-rail{max-height:none;position:static;overflow:visible}.content.finance-content{max-width:1450px}.project-layout{grid-template-columns:1fr}.content.project-content{max-width:1450px}.project-rail{max-height:none;position:static;overflow:visible}.quote-detail-layout{grid-template-columns:1fr}}@media (width<=1200px){.finance-layout{grid-template-columns:1fr}.content.finance-content{max-width:1450px}.finance-rail{max-height:none;position:static}.project-layout{grid-template-columns:1fr}.content.project-content{max-width:1450px}.project-rail{max-height:none;position:static;overflow:visible}.quote-detail-layout{grid-template-columns:1fr}}@media (width<=900px){.app-shell{flex-direction:column}.sidebar{width:100%;z-index:var(--z-sticky);flex:none;padding:8px 10px 10px;position:sticky;top:0}.brand{font-size:var(--fs-base);padding:4px 6px 8px}.sidebar .sidebar-more-btn{display:inline-flex;position:absolute;top:8px;right:10px}.sidebar .sidebar-more{display:none}.sidebar .sidebar-more.open{flex-direction:column;gap:8px;margin-top:4px;display:flex}.sidebar nav{flex-direction:row;padding-bottom:6px;overflow-x:auto}.sidebar nav button{white-space:nowrap;width:auto}.sidebar-user{border-top:0;padding-left:4px}.content{padding:16px}.stat-grid{grid-template-columns:repeat(2,1fr)}.panel-grid,.quote-detail-layout{grid-template-columns:1fr}.quote-calc-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.quote-detail-main,.quote-summary-bar,.quote-item-form,.quote-calc{min-height:auto}.quote-import-button{min-width:auto;height:auto;min-height:auto;padding:10px 14px}.board{grid-template-columns:repeat(5,220px)}.topbar{padding:0 16px}.pool-item{flex-wrap:wrap}.pool-item-meta{justify-content:flex-start;width:100%}.pool-item-project,.pool-item-order{flex:auto;max-width:none}}.gantt-wrap{--gantt-left-w:220px;grid-template-columns:minmax(0,1fr) minmax(300px,360px);align-items:start;gap:14px;display:grid}.gantt-main{flex-direction:column;min-width:0;display:flex}.gantt-side{overscroll-behavior:contain;scrollbar-width:thin;flex-direction:column;align-self:start;gap:14px;min-width:0;max-height:min(72vh,900px);padding:1px;display:flex;position:sticky;top:12px;overflow-y:auto}.gantt-side .panel{flex:none}.gantt-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.gantt-legend{color:var(--muted);font-size:var(--fs-xs);align-items:center;gap:12px;display:flex}.gantt-legend span{align-items:center;gap:6px;display:inline-flex}.gantt-legend-dot{border-radius:var(--radius-xs);width:10px;height:10px;display:inline-block}.gantt-legend-dot.pri-urgent{background:var(--red)}.gantt-legend-dot.pri-high{background:var(--orange)}.gantt-legend-dot.pri-medium{background:var(--accent)}.gantt-legend-dot.pri-low{background:var(--slate)}.gantt-legend-dot.pri-none{background:var(--muted)}.gantt-toolbar-actions{align-items:center;gap:8px;display:flex}.gantt-range-hint{color:var(--muted);font-size:var(--fs-xs);border-radius:var(--radius-pill);background:var(--sunken);border:1px solid var(--line-soft);cursor:help;padding:2px 8px}.gantt-month-band{background:0 0;position:absolute;top:0;bottom:0}.gantt-month-band.alt{background:var(--band-alt)}.gantt-col-month{background:var(--line-strong);opacity:.7;width:1px;position:absolute;top:0;bottom:0}.gantt-editor-backdrop{z-index:40;background:0 0;position:fixed;inset:0}.gantt-editor{z-index:41;border:1px solid var(--line-strong);border-radius:var(--radius-md);background:var(--card);width:300px;box-shadow:var(--shadow-lift);flex-direction:column;gap:10px;padding:14px;display:flex;position:fixed}.gantt-editor-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.gantt-editor-head strong{font-size:var(--fs-base);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.gantt-editor label{font-size:var(--fs-sm)}.gantt-editor .row-actions{justify-content:flex-start}.gantt-zoom{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card);display:inline-flex;overflow:hidden}.gantt-zoom button{min-height:36px;color:var(--muted);background:0 0;border:0;padding:8px 14px}.gantt-zoom button+button{border-left:1px solid var(--line)}.gantt-zoom button.on{background:var(--accent);color:var(--accent-ink)}.gantt-arrow{text-align:center;width:36px;min-height:36px;font-size:var(--fs-md);flex:none;padding-left:0;padding-right:0;line-height:1.2}.gantt-scroll{border:1px solid var(--line);border-radius:var(--radius-md);background:var(--card);overscroll-behavior-x:contain;scrollbar-width:none;max-height:min(72vh,900px);overflow:auto}.gantt-scroll::-webkit-scrollbar{height:0;display:none}.gantt-inner{min-width:100%;position:relative}.gantt-head{z-index:var(--z-sticky-head);background:var(--card);border-bottom:1px solid var(--line);box-shadow:var(--edge);display:flex;position:sticky;top:0}.gantt-head-left{z-index:var(--z-sticky-left);flex:0 0 var(--gantt-left-w);width:var(--gantt-left-w);background:var(--card);border-right:1px solid var(--line);font-size:var(--fs-xs);color:var(--muted);align-items:center;padding:6px 10px;display:flex;position:sticky;left:0}.gantt-head-right{flex:none}.gantt-head-months{border-bottom:1px solid var(--line);display:flex}.gantt-month{font-size:var(--fs-xs);color:var(--ink-soft);white-space:nowrap;border-right:1px solid var(--line);flex:none;padding:6px 8px 4px;font-weight:700;overflow:hidden}.gantt-head-days{display:flex}.gantt-day{font-size:var(--fs-tick);color:var(--muted);flex-direction:column;flex:none;align-items:center;gap:2px;padding:4px 0;display:flex}.gantt-day.gantt-weekend{background:var(--stripe)}.gantt-day.gantt-today{background:var(--accent-soft);color:var(--accent-text);font-weight:700}.gantt-day-num{line-height:1.1}.gantt-day-wd{font-size:var(--fs-tick);opacity:.75;line-height:1.1}.gantt-rows{position:relative}.gantt-cols{top:0;bottom:0;left:var(--gantt-left-w);z-index:var(--z-under);pointer-events:none;position:absolute}.gantt-col-weekend{background:var(--stripe);position:absolute;top:0;bottom:0}.gantt-col-today{background:var(--accent-tint-weak);border-left:1px solid var(--accent-tint-line);border-right:1px solid var(--accent-tint-line);position:absolute;top:0;bottom:0}.gantt-col-today:before{content:"";background:var(--accent);height:3px;position:absolute;top:0;left:0;right:0}.gantt-drop-hint{background:var(--accent-tint);outline:1px dashed var(--accent);position:absolute;top:0;bottom:0}.gantt-row{height:36px;display:flex;position:relative}.gantt-row-left{z-index:var(--z-sticky);flex:0 0 var(--gantt-left-w);width:var(--gantt-left-w);background:var(--card);border-right:1px solid var(--line);border-bottom:1px solid var(--line-soft);flex-direction:row;align-items:center;gap:6px;padding:4px 10px 4px 6px;display:flex;position:sticky;left:0;overflow:hidden}.gantt-row-left-main{flex-direction:column;flex:auto;justify-content:center;min-width:0;display:flex}.gantt-row-handle{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;color:var(--faint);font-size:var(--fs-md);border-radius:var(--radius-xs);flex:none;padding:4px 3px;line-height:1}.gantt-row-handle:hover{color:var(--accent-text);background:var(--accent-soft)}.gantt-row-handle:active{cursor:grabbing}.gantt-row-handle:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.gantt-row-indicator{background:var(--accent);height:2px;z-index:var(--z-handle);pointer-events:none;box-shadow:0 0 0 1px var(--accent-soft);border-radius:1px;margin-top:-1px;position:absolute;left:0;right:0}.gantt-row-indicator:before{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;top:50%;left:2px;transform:translateY(-50%)}.gantt-task-title{font-size:var(--fs-xs);text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:1.25;overflow:hidden}.gantt-task-meta{font-size:var(--fs-tick);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;line-height:1.2;overflow:hidden}.gantt-row-track{border-bottom:1px solid var(--line-soft);flex:none;height:36px;position:relative;overflow:hidden}.gantt-bar{border-radius:var(--radius-xs);height:26px;color:var(--pri-ink);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;z-index:var(--z-raised);box-shadow:var(--edge);align-items:center;padding:0 10px;display:flex;position:absolute;top:5px}.gantt-bar:active{cursor:grabbing}.gantt-bar.pri-urgent{background:var(--red)}.gantt-bar.pri-high{background:var(--orange)}.gantt-bar.pri-low{background:var(--slate)}.gantt-bar.pri-none{background:var(--muted)}.gantt-bar-done{opacity:.45}.gantt-bar-dragging{box-shadow:var(--shadow-drag);z-index:var(--z-drag);opacity:1}.gantt-bar-label{min-width:0;font-size:var(--fs-tick);align-items:center;gap:6px;font-weight:600;display:flex}.gantt-bar-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gantt-bar-label em{opacity:.85;flex:none;font-style:normal;font-weight:500}.gantt-bar-handle{cursor:ew-resize;touch-action:none;width:10px;position:absolute;top:0;bottom:0}.gantt-bar-handle-l{border-radius:var(--radius-xs) 0 0 var(--radius-xs);left:0}.gantt-bar-handle-r{border-radius:0 var(--radius-xs) var(--radius-xs) 0;right:0}.gantt-bar-handle:after{content:"";opacity:.6;background:currentColor;border-radius:2px;width:2px;height:10px;position:absolute;top:50%;transform:translateY(-50%)}.gantt-bar-handle-l:after{left:4px}.gantt-bar-handle-r:after{right:4px}.gantt-empty-hint{font-size:var(--fs-tick);color:var(--faint);line-height:1.3}.gantt-backlog{border:1px dashed var(--line);border-radius:var(--radius-md);background:var(--sunken);padding:10px 12px}.gantt-backlog-title{font-size:var(--fs-xs);color:var(--muted);margin-bottom:6px}.gantt-backlog-group{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card);margin-bottom:8px;overflow:hidden}.gantt-backlog-group:last-child{margin-bottom:0}.gantt-backlog-group summary{cursor:pointer;font-size:var(--fs-sm);color:var(--ink-soft);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:8px 10px;font-weight:700;list-style:none;display:flex}.gantt-backlog-group summary::-webkit-details-marker{display:none}.gantt-backlog-group summary:before{content:"▸";color:var(--faint);font-size:var(--fs-xs);transition:transform var(--speed-fast,.15s) var(--ease-out,ease);flex:none}.gantt-backlog-group[open] summary:before{transform:rotate(90deg)}.gantt-backlog-group summary:hover{color:var(--accent-text)}.gantt-backlog-group-done summary{color:var(--faint)}.gantt-backlog-group-body{padding:0 8px 4px}.gantt-backlog-item-done{cursor:default;opacity:.65}.gantt-backlog-item-done:hover{background:0 0}.gantt-backlog-item{border-bottom:1px solid var(--line-soft);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;align-items:center;gap:10px;padding:8px 4px;display:flex}.gantt-backlog-item:last-child{border-bottom:0}.gantt-backlog-item.gantt-backlog-dragging{opacity:.45}.gantt-backlog-tag{font-size:var(--fs-tick);color:var(--orange);background:var(--orange-soft);border:1px solid var(--orange-line);border-radius:var(--radius-pill);flex:none;padding:2px 8px}.gantt-backlog-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--fs-sm);flex:auto;font-weight:600;overflow:hidden}.gantt-backlog-meta{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--fs-xs);color:var(--muted);flex:0 auto;overflow:hidden}.gantt-backlog-today{flex:none}.gantt-pool-accept{min-height:28px;font-size:var(--fs-xs);flex:none;padding:4px 10px}.gantt-tip{z-index:var(--z-tooltip);background:var(--sidebar);color:var(--sidebar-ink);border:1px solid var(--sidebar-line);font-size:var(--fs-xs);border-radius:var(--radius-sm);box-shadow:var(--shadow-lift);pointer-events:none;white-space:nowrap;padding:6px 10px;position:fixed}body.gantt-drag-active{-webkit-user-select:none;user-select:none}body.gantt-drag-active *{cursor:grabbing!important}@media (width<=1279px){.gantt-wrap{grid-template-columns:1fr}.gantt-side{max-height:none;position:static;overflow:visible}}@media (width<=900px){.gantt-wrap{--gantt-left-w:0px}.gantt-head-left,.gantt-row-left{display:none}}.quote-type-tag{border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent-text);font-size:var(--fs-xs);white-space:nowrap;vertical-align:2px;margin-left:8px;padding:2px 8px;font-weight:400;line-height:1.6;display:inline-block}.quote-type-tag.fdm{background:var(--green-soft);color:var(--green)}.print-calc-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.print-calc-section{border-bottom:1px dashed var(--line);font-size:var(--fs-sm);color:var(--ink-soft);grid-column:1/-1;margin-top:6px;padding-bottom:4px;font-weight:700}.print-summary{border-top:1px dashed var(--line);font-size:var(--fs-xs);color:var(--muted);grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px 14px;padding-top:12px;display:grid}.print-summary>span{flex-direction:column;gap:4px;display:flex}.print-summary b{font-size:var(--fs-base);color:var(--ink);font-variant-numeric:tabular-nums}.print-summary .print-gross{background:var(--accent-soft);border-radius:var(--radius-sm);padding:8px 10px}.print-summary .print-gross b{color:var(--accent-text);font-size:var(--fs-md)}.print-summary .print-rush b{color:var(--orange)}.fdm-hint{font-size:var(--fs-xs);color:var(--muted);flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:4px 16px;margin:0;display:flex}.fdm-link{color:var(--accent-text);font-size:var(--fs-xs);background:0 0;border:0;padding:0;text-decoration:underline}.fdm-link:hover{color:var(--accent-hover)}.fdm-stock-ok{color:var(--green)}.fdm-stock-lack{color:var(--orange);font-weight:600}.calc-head-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex}.calc-head-row .mini-heading{margin:0}.calc-override{font-size:var(--fs-xs);color:var(--muted);cursor:pointer;white-space:nowrap;margin:0}.print-calc-collapse{border:1px dashed var(--line);border-radius:var(--radius-sm);grid-column:1/-1;padding:8px 12px}.print-calc-collapse summary{cursor:pointer;font-size:var(--fs-sm);color:var(--ink-soft);-webkit-user-select:none;user-select:none;font-weight:700}.print-calc-collapse summary:hover{color:var(--accent-text)}.print-calc-collapse[open] summary{margin-bottom:10px}.print-summary .print-gross-with-rush{flex-flow:wrap;align-items:center;gap:8px 10px}.print-rush-toggle{font-size:var(--fs-xs);color:var(--accent-text);cursor:pointer;white-space:nowrap;margin:0}.print-rush-rate{font-size:var(--fs-xs);color:var(--muted);align-items:center;gap:6px;margin:0;display:inline-flex}.print-rush-rate input{width:72px}@media (width<=900px){.print-calc-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.print-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}.quote-tabs{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow);gap:6px;padding:6px;display:flex;overflow-x:auto}.quote-tabs button{color:var(--muted);border-radius:var(--radius-sm);font-size:var(--fs-base);white-space:nowrap;background:0 0;border:0;flex:none;padding:10px 16px;font-weight:600}.quote-tabs button:hover{background:var(--hover);color:var(--ink-soft)}.quote-tabs button.on{background:var(--accent);color:var(--accent-ink);box-shadow:var(--edge)}.quote-tab-hidden{display:none}.inv-toolbar{margin-bottom:12px}.inv-table input,.inv-table select{min-width:92px;padding:6px 8px}.inv-edit-stack{flex-direction:column;gap:4px;display:flex}.inv-num{font-variant-numeric:tabular-nums;white-space:nowrap}.inv-low{color:var(--red);font-weight:700}.inv-note{text-overflow:ellipsis;white-space:nowrap;max-width:200px;overflow:hidden}.inv-kind-filter{border-radius:var(--radius-sm);margin:0 0 12px;padding:4px}.inv-kind-filter button{font-size:var(--fs-sm);border-radius:var(--radius-xs);padding:6px 14px}.brand-field{align-items:flex-end;gap:6px;display:flex}.brand-field label{flex:auto;min-width:0}.brand-manage-btn{white-space:nowrap;flex:none}.brand-manager{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card);margin:10px 0 0;padding:10px 12px}.brand-manager-head{font-size:var(--fs-xs);color:var(--muted);margin-bottom:8px;font-weight:700}.brand-manager-list{flex-wrap:wrap;gap:4px 14px;margin-bottom:8px;display:flex}.stocktake-input{width:76px;min-width:76px;padding:6px 8px}.purchase-empty-guide{border:1px dashed var(--line);border-radius:var(--radius-sm);color:var(--muted);font-size:var(--fs-sm);flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;padding:10px 12px;display:flex}.nav-settings-wrap{margin:0 2px 10px;position:relative}.sidebar-more{display:contents}.sidebar-more-btn{border:1px solid var(--sidebar-line);border-radius:var(--radius-sm);min-height:38px;color:var(--sidebar-ink);line-height:1.2;font-size:var(--fs-sm);background:0 0;align-items:center;gap:6px;padding:8px 14px;display:none}.sidebar-more-btn:hover{background:var(--sidebar-hover)}.nav-settings-btn{border:1px solid var(--sidebar-line);border-radius:var(--radius-sm);width:100%;color:var(--sidebar-ink);font-size:var(--fs-sm);text-align:left;background:0 0;align-items:center;gap:10px;padding:10px;display:flex}.nav-settings-btn:hover{background:var(--sidebar-raised)}.nav-settings-pop{background:var(--card);width:228px;max-width:min(260px,100vw - 24px);max-height:min(430px,100dvh - 140px);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-lift);z-index:var(--z-popover);padding:12px;position:absolute;bottom:calc(100% + 10px);left:0;overflow-y:auto}.nav-settings-title{font-size:var(--fs-xs);color:var(--muted);margin-bottom:8px;font-weight:700}.nav-settings-item{border-radius:var(--radius-sm);font-size:var(--fs-sm);cursor:pointer;align-items:center;gap:8px;padding:6px;display:flex}.nav-settings-item:hover{background:var(--hover)}.nav-settings-item input{accent-color:var(--accent);margin:0}.nav-settings-hint{font-size:var(--fs-xs);color:var(--muted);margin:8px 0 0}.punch-dock{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-md);width:232px;box-shadow:var(--shadow-lift);z-index:var(--z-dock);position:fixed;bottom:24px;right:24px}.punch-head{background:var(--sidebar);color:var(--sidebar-ink);border-radius:var(--radius-md) var(--radius-md) 0 0;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;padding:10px;display:flex}.punch-head:active{cursor:grabbing}.punch-icon{font-size:var(--fs-base);flex:none;line-height:1}.punch-title{min-width:0;font-size:var(--fs-xs);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-weight:700;overflow:hidden}.punch-dot{background:var(--slate);border-radius:50%;flex:none;width:8px;height:8px}.punch-dot-working{background:var(--green);box-shadow:0 0 0 3px var(--green-soft);animation:punch-pulse 1.6s var(--ease-out) infinite}.punch-dot-out{background:var(--amber)}@keyframes punch-pulse{0%,to{opacity:1}50%{opacity:.4}}.punch-min{border-radius:var(--radius-xs);background:var(--sidebar-raised);width:28px;height:28px;color:var(--sidebar-ink);font-size:var(--fs-sm);border:0;flex:none;place-items:center;padding:0;line-height:1;display:grid}.punch-min:hover{background:var(--sidebar-raised-hover)}.punch-body{flex-direction:column;gap:8px;padding:10px 12px 12px;display:flex}.punch-status{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.punch-state{font-size:var(--fs-sm);font-weight:700}.punch-elapsed{font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.punch-actions{gap:8px;display:flex}.punch-btn{border-radius:var(--radius-sm);font-size:var(--fs-sm);border:1px solid #0000;flex:1 1 0;padding:8px 6px;font-weight:600}.punch-btn-in{background:var(--accent);color:var(--accent-ink)}.punch-btn-in:not(:disabled):hover{background:var(--accent-hover)}.punch-btn-out{background:var(--sunken);color:var(--ink-soft);border-color:var(--line)}.punch-btn-out:not(:disabled):hover{background:var(--hover);border-color:var(--line-strong)}.punch-dock.punch-collapsed{width:auto;box-shadow:none;background:0 0;border:0}.punch-pill{border:1px solid var(--sidebar-line);border-radius:var(--radius-pill);background:var(--sidebar);color:var(--sidebar-ink);box-shadow:var(--shadow-lift);align-items:center;gap:8px;padding:10px 12px;display:inline-flex}@media (width<=900px){.nav-settings-pop{max-height:56vh;top:calc(100% + 8px);bottom:auto}.punch-dock{width:176px;bottom:12px;right:12px}.punch-title,.punch-state,.punch-elapsed{display:none}.punch-head{gap:6px;padding:8px}.punch-body{gap:6px;padding:8px 10px 10px}.punch-btn{font-size:var(--fs-xs);padding:8px 4px}}*{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:var(--radius-pill);background-clip:content-box;border:2px solid #0000}::-webkit-scrollbar-thumb:hover{background:var(--muted);background-clip:content-box}::-webkit-scrollbar-corner{background:0 0}.table th,.table td{line-height:1.55}.finance-bar{z-index:var(--z-dock);background-color:var(--hero-2);background-image:linear-gradient(to right, var(--hero-1), var(--hero-2));border-top:1px solid var(--hero-line);color:var(--hero-ink);flex-wrap:wrap;align-items:center;gap:20px;padding:10px 32px;display:flex;position:fixed;bottom:0;left:238px;right:0}.finance-bar span{font-size:var(--fs-sm);color:var(--hero-ink-soft)}.finance-bar b{font-size:var(--fs-base);color:var(--hero-ink);font-variant-numeric:tabular-nums;letter-spacing:var(--tracking-normal);font-weight:700}.finance-bar .pos{color:var(--hero-pos)}.finance-bar .neg{color:var(--hero-neg)}.main{padding-bottom:calc(var(--finance-bar-h,46px) + 14px)}body:has(.finance-bar) .punch-dock{bottom:calc(var(--finance-bar-h,46px) + 22px)}@media (width<=900px){.finance-bar{padding:8px 14px;left:0}}.gantt-fullscreen{z-index:90;background:var(--paper);--gantt-left-w:300px;flex-direction:column;padding:18px;display:flex;position:fixed;inset:0;overflow:auto}.gantt-fullscreen .gantt-main{flex:auto;min-height:0}.gantt-fullscreen .gantt-side{display:none}.gantt-fullscreen .gantt-scroll{flex:auto;max-height:none}.gantt-fullscreen .gantt-row,.gantt-fullscreen .gantt-row-track{height:44px}.gantt-fullscreen .gantt-bar{height:28px;top:8px}.gantt-fullscreen .gantt-task-title{font-size:var(--fs-base)}.gantt-fullscreen .gantt-task-meta,.gantt-fullscreen .gantt-day-num{font-size:var(--fs-sm)}.gantt-fullscreen .gantt-day-wd{font-size:var(--fs-tick)}.gantt-fullscreen .gantt-bar-label,.gantt-fullscreen .gantt-month,.gantt-fullscreen .gantt-head-left{font-size:var(--fs-sm)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.punch-dot-working{animation:none}.stat-card:hover,.primary:active{transform:none}}.hint{color:var(--muted);font-size:var(--fs-xs);margin-top:2px;font-weight:400;display:block}.ledger{flex-direction:column;gap:18px;display:flex}.ledger-brand{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow), var(--edge);flex-wrap:wrap;align-items:center;gap:18px;padding:14px 18px;display:flex}.ledger-brand-id{flex-direction:column;gap:2px;display:flex}.ledger-mark{font-family:var(--font-serif);font-size:var(--fs-md);letter-spacing:.06em;font-weight:700}.ledger-sub{color:var(--muted);font-size:var(--fs-xs);letter-spacing:.04em}.ledger-tabs{flex-wrap:wrap;flex:auto;gap:6px;display:flex}.ledger-tabs button{border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--sunken);color:var(--ink-soft);font-size:var(--fs-sm);cursor:grab;padding:8px 12px}.ledger-tabs button:hover{background:var(--hover);border-color:var(--line-strong)}.ledger-tabs button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:700}.ledger-pill{border-radius:var(--radius-pill);font-size:var(--fs-xs);background:var(--green-soft);color:var(--green);border:1px solid var(--green-line);padding:6px 12px}.ledger-hero{border-radius:var(--radius);border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow), var(--edge);padding:20px}.ledger-hero-head h1{font-family:var(--font-serif);font-size:var(--fs-lg);margin:0}.ledger-hero-head p{color:var(--muted);font-size:var(--fs-xs);margin:4px 0 0}.ledger-hero-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:16px;display:grid}.ledger-stat{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--sunken);padding:16px 18px}.ledger-stat .n{font-family:var(--font-mono);font-size:var(--fs-xl);letter-spacing:-.01em;font-weight:700}.ledger-stat .t{color:var(--muted);font-size:var(--fs-xs);margin-top:4px}.ledger-margins{border-top:1px dashed var(--line);grid-template-columns:repeat(auto-fit,minmax(172px,1fr));gap:10px;margin-top:16px;padding-top:16px;display:grid}.ledger-margin{border-radius:var(--radius-sm);border:1px solid var(--line-soft);background:var(--hover);cursor:help;padding:10px 12px;position:relative}.ledger-margin:hover{border-color:var(--accent-line)}.ledger-margin-label{color:var(--muted);font-size:var(--fs-xs);align-items:center;display:flex}.ledger-margin-value{font-family:var(--font-mono);font-size:var(--fs-md);margin-top:4px;font-weight:700}.ledger-margin-value.pos{color:var(--green)}.ledger-margin-value.neg{color:var(--red)}.ledger-tip{z-index:var(--z-tooltip);border:1px solid var(--sidebar-line);border-radius:var(--radius-md);background:var(--sidebar);width:max-content;min-width:260px;max-width:min(360px,86vw);color:var(--sidebar-ink);box-shadow:var(--shadow-lift);font-size:var(--fs-xs);white-space:pre-line;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out);padding:10px 12px;line-height:1.7;position:absolute;top:calc(100% + 8px);left:8px;right:auto;transform:translateY(-4px)}.ledger-margin:hover .ledger-tip,.ledger-margin:focus-within .ledger-tip{opacity:1;visibility:visible;transform:translateY(0)}.ledger-card{border-radius:var(--radius);border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow), var(--edge);padding:18px}.ledger-card-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.ledger-card-head h2{font-size:var(--fs-md);margin:0}.ledger-sub-head{font-size:var(--fs-sm);color:var(--ink-soft);margin:20px 0 10px}.ledger-card-head+.ledger-sub-head{margin-top:0}.ledger-table .num{text-align:right;font-variant-numeric:tabular-nums}.ledger-table td{vertical-align:top}.ledger-table td.muted,.ledger-table td .muted{white-space:nowrap}.ledger-total-row td{border-top:2px solid var(--line-strong);background:var(--sunken);font-weight:700}.ledger-wide .table{min-width:1420px}.ledger-link{color:var(--accent-text);font:inherit;cursor:pointer;text-align:left;background:0 0;border:0;margin:-6px 0;padding:6px 0;font-weight:700}.ledger-link:hover{text-decoration:underline}.ledger-note{-webkit-line-clamp:2;white-space:normal;-webkit-box-orient:vertical;max-width:280px;margin-top:4px;line-height:1.5;display:-webkit-box;overflow:hidden}.ledger-tag{margin-left:6px}.ledger-settled{letter-spacing:.02em;font-weight:700}.ledger-op-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.ledger-op-stat{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--sunken);padding:16px 18px}.ledger-op-stat .n{font-family:var(--font-mono);font-size:var(--fs-xl);font-weight:700}.ledger-op-stat .t{color:var(--muted);font-size:var(--fs-xs);margin-top:4px}.ledger-2col{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:20px;margin-top:18px;display:grid}.ledger-dist-list{flex-direction:column;gap:8px;margin:12px 0 0;padding:0;list-style:none;display:flex}.ledger-dist-list li{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--hover);justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.ledger-dist-list li.ledger-dist-empty{color:var(--muted);font-size:var(--fs-xs);border-style:dashed;justify-content:center}.ledger-dist-who{font-size:var(--fs-sm);font-weight:600}.ledger-dist-sub{color:var(--muted);font-size:var(--fs-xs);margin-top:2px}.ledger-amt{font-family:var(--font-mono);margin-left:6px}.ledger-amt.in{color:var(--green)}.ledger-amt.out{color:var(--red)}.ledger-plain-list{flex-direction:column;gap:8px;margin:14px 0 0;padding:0;list-style:none;display:flex}.ledger-plain-list li{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--hover);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.ledger-plain-list li.ledger-dist-empty{color:var(--muted);border-style:dashed;justify-content:center}.ledger-year{flex:none}.ledger-inline-form{border-bottom:1px dashed var(--line);margin-bottom:16px;padding-bottom:16px}.ledger-chart-grid{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;display:grid}.ledger-chart-card{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--hover);padding:14px 16px}.ledger-chart-card h3{font-size:var(--fs-sm);color:var(--ink-soft);margin:0 0 10px}.ledger-chart{color:var(--ink);flex-direction:column;gap:10px;display:flex}.ledger-chart svg{width:100%;height:auto;overflow:visible}.ledger-chart-empty{text-align:center;color:var(--muted);font-size:var(--fs-xs);border:1px dashed var(--line);border-radius:var(--radius-sm);padding:18px}.ledger-chart-group+.ledger-chart-group{margin-top:12px}.ledger-chart-title{font-size:var(--fs-xs);color:var(--muted);margin-bottom:4px}.ledger-legend{font-size:var(--fs-xs);color:var(--muted);flex-wrap:wrap;gap:6px 14px;display:flex}.ledger-legend-item{align-items:center;gap:6px;display:inline-flex}.ledger-swatch{border-radius:var(--radius-xs);width:10px;height:10px;display:inline-block}.ledger-modal{z-index:90;background:var(--scrim);justify-content:center;align-items:flex-start;padding:4vh 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.ledger-modal-box{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);width:min(940px,100%);box-shadow:var(--shadow-lift);padding:20px 20px 24px}.ledger-modal-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.ledger-modal-head h2{font-size:var(--fs-md);margin:0}.ledger-modal-form{flex-direction:column;gap:12px;display:flex}.ledger-grid-2{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;display:grid}.ledger-calc{border:1px dashed var(--line);border-radius:var(--radius-sm);background:var(--sunken);font-size:var(--fs-sm);color:var(--ink-soft);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px 16px;padding:12px 14px;display:grid}.ledger-calc b{font-family:var(--font-mono);margin-left:6px}.ledger-modal-actions{justify-content:flex-end;align-items:center;gap:10px;display:flex}.ledger-block{border-top:1px dashed var(--line);margin-top:20px;padding-top:16px}.ledger-block .ledger-sub-head{margin-top:0}.ledger-block .grid-form>button,.ledger-card .grid-form>button{place-self:end start}.ledger-kind-toggle{align-self:end;gap:6px;display:inline-flex}.ledger-kind-toggle button{border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--sunken);color:var(--ink-soft);font-size:var(--fs-xs);padding:8px 12px}.ledger-kind-toggle button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:700}.ledger-order-edit{flex-direction:column;gap:12px;display:flex}.ledger-order-row{border:1px solid var(--line-soft);border-radius:var(--radius-sm);background:var(--hover);padding:12px}.ledger-order-row-head{flex-wrap:wrap;align-items:baseline;gap:10px;margin-bottom:8px;display:flex}.ledger-order-no{font-family:var(--font-mono);font-weight:700}.ledger-order-row-grid{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:end;gap:10px;display:grid}.ledger-order-row-grid .primary{justify-self:start}.ledger-order-row-error{color:var(--red);font-size:var(--fs-xs);margin:8px 0 0}.ledger-shell{grid-template-columns:minmax(0,1fr);align-items:start;gap:18px;display:grid}.ledger-main{flex-direction:column;gap:18px;min-width:0;display:flex}.ledger-rail{min-width:0;display:none}.ledger-rail-card .ledger-card-head{margin-bottom:10px}.ledger-rail-card h2{font-size:var(--fs-sm)}.ledger-rail-switch{color:var(--muted);font-size:var(--fs-xs);align-items:center;gap:8px;margin-bottom:10px;display:flex}.ledger-rail-switch select{flex:auto}.ledger-rail-group{font-size:var(--fs-xs);letter-spacing:.04em;margin:10px 0 2px;font-weight:700}.ledger-rail-empty{color:var(--muted);font-size:var(--fs-xs);padding:8px 4px}.ledger-rail-more{color:var(--muted);font-size:var(--fs-xs);padding:8px 4px 2px}.ledger-rail-flow-note{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.ledger-rail .rail-project{grid-template-rows:auto auto}.ledger-rail .rail-project>span:first-child{font-weight:700}.ledger-rail-meta{grid-column:1/-1}.ledger-rail-operating{flex-direction:column;display:flex}@media (width>=1400px){.ledger-shell{grid-template-columns:minmax(0,1fr) 300px}.ledger-rail{flex-direction:column;gap:16px;max-height:calc(100dvh - 104px);display:flex;position:sticky;top:84px;overflow-y:auto}}@media (width<=900px){.ledger-hero-grid,.ledger-op-grid{grid-template-columns:1fr}}.stat-card.has-hint{cursor:help;position:relative}.hint-mark{border:1px solid var(--line-strong);cursor:help;min-width:24px;min-height:24px;color:var(--muted);font-size:var(--fs-xs);vertical-align:1px;background:0 0;border-radius:50%;place-items:center;margin-left:6px;padding:0;font-style:normal;line-height:1;display:inline-grid}.hint-mark:hover,.stat-card.has-hint:hover .hint-mark,.stat-card.has-hint:focus-within .hint-mark{border-color:var(--accent);color:var(--accent-text)}.stat-hint{z-index:var(--z-tooltip);border:1px solid var(--sidebar-line);border-radius:var(--radius-md);background:var(--sidebar);width:max-content;min-width:240px;max-width:min(320px,82vw);color:var(--sidebar-ink);box-shadow:var(--shadow-lift);font-size:var(--fs-xs);text-align:left;white-space:pre-line;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-out), transform var(--dur-fast) var(--ease-out), visibility var(--dur-fast);padding:10px 12px;line-height:1.65;position:absolute;top:calc(100% + 8px);left:10px;transform:translateY(-4px)}.stat-card.has-hint:hover .stat-hint,.stat-card.has-hint:focus-within .stat-hint{opacity:1;visibility:visible;transform:translateY(0)}.parts-editor{background:var(--sunken);border-radius:var(--radius-sm);border-bottom:1px solid var(--line);padding:14px 16px}.parts-editor-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.parts-editor-header h4{font-size:var(--fs-sm);color:var(--ink-soft);margin:0;font-weight:700}.parts-table{border-collapse:collapse;width:100%}.parts-table th{text-align:left;font-size:var(--fs-xs);color:var(--muted);padding:4px 6px;font-weight:600}.parts-table td{vertical-align:middle;border:0;padding:4px 6px}.parts-table td:nth-child(2) input,.parts-table td:nth-child(3) input,.parts-table td:nth-child(4) input{min-width:92px}.parts-table input{font-size:var(--fs-sm);padding:6px 8px}.parts-table tbody tr:hover td{background:0 0}.parts-editor-actions{gap:8px;margin-top:10px;display:flex}.received-correction-row>td{padding:0}.received-correction{border-bottom:0}.received-correction-steps{flex-wrap:wrap;gap:8px;margin-bottom:10px;display:flex}.received-correction-steps span{border-radius:var(--radius-pill);border:1px solid var(--line);background:var(--card);color:var(--muted);font-size:var(--fs-xs);padding:2px 10px}.received-correction-steps span.on{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-text);font-weight:700}.received-correction-header h4{font-size:var(--fs-sm);color:var(--ink-soft);margin:0 0 8px;font-weight:700}.received-correction-facts{font-size:var(--fs-sm);color:var(--ink-soft);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:6px 18px;margin-bottom:8px;display:flex}.received-correction-warning{border-radius:var(--radius-sm);border:1px solid var(--red-line);background:var(--red-soft);color:var(--red);font-size:var(--fs-sm);margin:0 0 10px;padding:8px 12px}.received-correction-form{flex-wrap:wrap;gap:10px 16px;margin-bottom:4px;display:flex}.received-correction-form label{min-width:220px;font-size:var(--fs-xs);color:var(--muted);flex-direction:column;flex:240px;gap:4px;display:flex}.received-correction-form input{max-width:320px}.received-correction-compare{border-collapse:collapse;width:100%;font-size:var(--fs-sm);margin:4px 0 10px}.received-correction-compare th{text-align:left;width:90px;color:var(--muted);padding:4px 10px 4px 0;font-weight:600}.received-correction-compare td{color:var(--ink-soft);font-variant-numeric:tabular-nums;padding:4px 0}.received-correction-actions{gap:8px;margin-top:10px;display:flex}.danger{border-radius:var(--radius-sm);border:1px solid var(--red-line);background:var(--red-soft);color:var(--red);padding:10px 14px;font-weight:700}.danger:hover{border-color:var(--red)}.quote-head-buttons{flex-wrap:wrap;align-items:flex-end;gap:8px;margin-left:auto;display:flex}.quote-head-button{white-space:nowrap}.quote-head-panel{padding:0;overflow:hidden}.quote-head-toggle{width:100%;color:var(--ink);font-size:var(--fs-base);text-align:left;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;gap:10px;padding:14px 18px;font-weight:700;display:flex}.quote-head-toggle:hover{background:var(--hover)}.quote-head-toggle-mark{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap;flex:none;font-weight:400}.quote-head-body{border-top:1px solid var(--line);padding:14px 18px 16px}.quote-head-readonly-hint{font-size:var(--fs-xs);color:var(--orange);margin:0 0 10px}.quote-head-form .quote-head-terms-field{grid-column:1/-1}.quote-head-terms-field textarea{resize:vertical;min-height:58px}.quote-head-actions-bar{grid-column:1/-1}.quote-head-form input:read-only,.quote-head-form textarea:read-only{opacity:.55;cursor:not-allowed}.quote-print-portal{display:none}@media print{body.print-quote #root{display:none!important}body.print-quote .quote-print-portal{display:block!important}@page{size:A4;margin:14mm}}.quote-print-sheet{color:#000;font-size:var(--fs-xs);background:#fff;line-height:1.6}.quote-print-head{border-bottom:2px solid #000;justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:12px;padding-bottom:10px;display:flex}.quote-print-seller{min-width:0}.quote-print-seller-name{font-size:var(--fs-lg);font-weight:700;line-height:1.35}.quote-print-seller-meta{font-size:var(--fs-xs);color:#333;margin-top:4px}.quote-print-title{text-align:right;flex:none}.quote-print-title h1{font-size:var(--fs-md);margin:0;line-height:1.35}.quote-print-title p{font-size:var(--fs-xs);color:#333;margin:4px 0 0}.quote-print-customer{margin:0 0 10px}.quote-print-table{border-collapse:collapse;width:100%}.quote-print-table th,.quote-print-table td{text-align:left;vertical-align:top;border:1px solid #000;padding:6px 8px}.quote-print-table th{background:#efefef;font-weight:700}.quote-print-table .quote-print-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.quote-print-item-note{font-size:var(--fs-tick);color:#444;margin-top:2px;display:block}.quote-print-empty{color:#555;margin:8px 0 0}.quote-print-totals{flex-direction:column;align-items:flex-end;gap:4px;margin-top:14px;display:flex}.quote-print-totals>div{font-variant-numeric:tabular-nums;justify-content:space-between;gap:18px;min-width:240px;display:flex}.quote-print-totals b{font-weight:600}.quote-print-grand{font-size:var(--fs-sm);border-top:1px solid #000;padding-top:6px}.quote-print-grand b{font-size:var(--fs-md);font-weight:700}.quote-print-notes{font-size:var(--fs-xs);color:#222;margin:14px 0 0}.quote-print-footer{font-size:var(--fs-xs);color:#333;text-align:center;border-top:1px solid #999;margin-top:20px;padding-top:8px}.ledger-quote-editor-row>td{padding:0 10px 14px}.quote-editor{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--sunken);padding:12px 14px}.quote-editor-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.quote-editor-title{font-size:var(--fs-sm);color:var(--ink-soft)}.quote-editor-totals{font-size:var(--fs-xs);color:var(--muted);flex-wrap:wrap;align-items:baseline;gap:6px 18px;display:flex}.quote-editor-totals b{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink);font-variant-numeric:tabular-nums;margin-left:6px}.quote-editor-scroll{overflow-x:visible}.quote-editor .quote-editor-table{min-width:0}.quote-editor-table th,.quote-editor-table td{padding:6px 8px}.quote-editor-table input{width:100%;min-width:0;font-size:var(--fs-sm);padding:6px 8px}.quote-editor-add td{background:var(--card)}.quote-editor-table tr:hover td{background:0 0}.quote-editor-add:hover td,.quote-editor-item:hover td{background:var(--hover)}.quote-editor-subtotal{white-space:nowrap;font-variant-numeric:tabular-nums}.quote-editor-empty{text-align:center;color:var(--muted);font-size:var(--fs-sm);padding:16px 8px}.quote-editor .row-actions{flex-wrap:nowrap}@media (width<=900px){.quote-editor-head{flex-direction:column;align-items:flex-start}.quote-editor-table input{padding:5px 6px}}.topbar h1,.project-detail-name,.auth-card h1,.ledger-hero-head h1,.ledger-mark,.brand{letter-spacing:.01em}.topbar h1,.ledger-hero-head h1{line-height:var(--leading-tight)}.stat-card strong,.ledger-stat .n,.ledger-op-stat .n,.rail-summary strong,.rail-flow strong,.annual-total-cell,.print-summary b,.finance-bar b{letter-spacing:var(--tracking-tight);line-height:var(--leading-tight)}.timer-value,.punch-elapsed,.inv-num,.gantt-day-num,.gantt-hours span,.ledger-stat .n,.ledger-op-stat .n,.ledger-amt,.ledger-calc b{letter-spacing:0}.field-hint,small,.small,.muted.small,.table th,.board-head,.gantt-task-meta,.gantt-legend,.stat-card>span:not(.stat-icon),.ledger-stat .t,.ledger-op-stat .t,.nav-settings-title,.brand-manager-head,.panel-count,.tag,.status-badge,.worktype-tag,.kind-badge,.quote-type-tag,.punch-elapsed{letter-spacing:var(--tracking-loose)}.ledger-sub{letter-spacing:var(--tracking-wide)}.panel-title{align-items:flex-start;gap:12px;margin-bottom:16px}.panel-title h2,.ledger-card-head h2,.ledger-modal-head h2{letter-spacing:var(--tracking-normal);font-weight:700;line-height:var(--leading-snug);align-items:center;gap:10px;display:flex}.panel-title h2:before,.ledger-card-head h2:before,.ledger-modal-head h2:before{content:"";border-radius:var(--radius-pill);background:linear-gradient(180deg, var(--accent), var(--accent-hover));flex:none;width:4px;height:1.05em}.panel-title h2 .panel-count,.ledger-card-head h2 .panel-count{align-self:center}.mini-heading{font-size:var(--fs-sm);color:var(--ink-soft);letter-spacing:var(--tracking-loose);margin:18px 0 8px;font-weight:700}.ledger-sub-head{font-size:var(--fs-sm);letter-spacing:var(--tracking-loose);font-weight:700}.panel,.ledger-card,.ledger-hero,.ledger-brand{border-radius:var(--radius);border-color:var(--line)}.panel,.ledger-card{padding:20px}.stat-card{border-radius:var(--radius);background:var(--card);transition:transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);gap:8px;padding:18px}.stat-card strong{font-size:var(--fs-xl);color:var(--ink);font-weight:700}.stat-card>span:not(.stat-icon){color:var(--muted);font-size:var(--fs-sm)}.stat-card .stat-icon{border-radius:var(--radius-sm);background:var(--accent-soft);width:40px;height:40px;color:var(--accent-text)}.stat-card:hover{border-color:var(--accent-line);box-shadow:var(--shadow-lift);transform:translateY(-2px)}.stat-card:hover .stat-icon{background:var(--accent);color:var(--accent-ink)}.stat-card.pos strong{color:var(--green)}.stat-card.neg strong{color:var(--red)}.ledger-hero{padding:20px}.ledger-stat,.ledger-op-stat{border-radius:var(--radius-sm);border:1px solid var(--line-soft);background:var(--hover)}.ledger-stat .n.income{color:var(--accent-text)}.ledger-stat .n.profit{color:var(--green)}.ledger-stat .n.neg{color:var(--red)}.board-column{border-radius:var(--radius-md);border-color:var(--line-soft);background:var(--sunken)}.board-head{color:var(--ink-soft);align-items:center;font-weight:700}.board-head strong{font-size:var(--fs-sm)}.board-head span{border-radius:var(--radius-pill);background:var(--card);min-width:22px;color:var(--muted);font-size:var(--fs-xs);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;padding:0 7px;display:inline-flex}.board-empty{border-radius:var(--radius-sm)}.task-row{border-bottom:1px solid var(--line-soft);border-radius:var(--radius-xs)}.task-row:hover{background:var(--accent-tint-weak)}.table th{color:var(--muted);font-size:var(--fs-xs);background:var(--sunken);border-bottom:1px solid var(--line);font-weight:600}.table td{border-bottom:1px solid var(--line-soft)}.table tr:last-child td{border-bottom:0}.table tr:hover td{background:var(--hover)}.ledger-total-row td{background:var(--accent-soft);border-top:1px solid var(--accent-line);color:var(--ink);border-bottom:0;font-weight:700}.annual-total-cell{background:var(--accent-soft);color:var(--ink)}.primary,.outline,.ghost,.danger-link{border-radius:var(--radius-sm);min-height:38px;transition:background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), transform 90ms var(--ease-out);padding:9px 14px;font-weight:600}.primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 1px 2px #1018282e}.primary:hover{background:var(--accent-hover)}.outline{background:var(--card);border-color:var(--accent-line);color:var(--accent-text)}.outline:hover{background:var(--accent-soft);border-color:var(--accent)}.ghost{background:var(--sunken);color:var(--ink-soft);border-color:var(--line)}.ghost:hover{background:var(--hover);border-color:var(--line-strong)}.danger-link{background:var(--red-soft);color:var(--red);border-color:#0000}.danger-link:hover{border-color:var(--red-line)}.primary:active,.outline:active,.ghost:active,.danger-link:active{transform:scale(.985)}.ledger-tabs button.on,.quote-tabs button.on,.gantt-zoom button.on,.ledger-kind-toggle button.on,.inv-kind-filter button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:700;box-shadow:0 1px 2px #10182829}.ledger-tabs button,.quote-tabs button,.ledger-kind-toggle button,.inv-kind-filter button{transition:background-color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out)}input,select,textarea{border-radius:var(--radius-sm);border-color:var(--line);background:var(--field)}input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--line-strong)}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline-offset:0;box-shadow:0 0 0 3px var(--accent-tint), var(--field-inset);outline:2px solid #0000}::placeholder{color:var(--faint)}label{color:var(--ink-soft)}.field-hint{color:var(--muted);line-height:var(--leading-snug)}.form-error,.calc-hint{border-radius:var(--radius-sm);font-weight:600}.tag,.status-badge,.kind-badge,.worktype-tag,.quote-type-tag,.panel-count{border-radius:var(--radius-pill);font-weight:600}.status-badge{border:1px solid var(--line-soft)}.kind-badge.internal{border:1px solid var(--orange-line)}.kind-badge.external{border:1px solid var(--accent-line)}.tag.on{border:1px solid var(--green-line)}.panel-count{background:var(--accent-soft);color:var(--accent-text);border:1px solid var(--accent-line)}.worktype-tag,.quote-type-tag{border:1px solid var(--accent-line)}.quote-type-tag.fdm{border-color:var(--green-line)}.status-badge[data-status=todo]{background:var(--slate-soft);color:var(--slate);border-color:var(--slate-line)}.status-badge[data-status=in_progress],.status-badge[data-status=active]{background:var(--accent-soft);color:var(--accent-text);border-color:var(--accent-line)}.status-badge[data-status=in_review],.status-badge[data-status=review]{background:var(--amber-soft);color:var(--amber);border-color:var(--amber-line)}.status-badge[data-status=done],.status-badge[data-status=completed],.status-badge[data-status=delivered],.status-badge[data-status=won]{background:var(--green-soft);color:var(--green);border-color:var(--green-line)}.status-badge[data-status=blocked],.status-badge[data-status=rejected]{background:var(--red-soft);color:var(--red);border-color:var(--red-line)}.status-badge[data-status=canceled],.status-badge[data-status=archived]{background:var(--sunken);color:var(--faint)}.status-badge[data-status=on_hold],.status-badge[data-status=draft],.status-badge[data-status=draft_ai]{background:var(--orange-soft);color:var(--orange);border-color:var(--orange-line)}.brand{font-weight:700}.brand-dot{background:var(--sidebar-accent);box-shadow:0 0 0 3px var(--sidebar-accent-tint)}.sidebar nav button{border-radius:var(--radius-sm)}.sidebar nav button.active{font-weight:600}.theme-toggle,.nav-settings-btn,.sidebar-more-btn{border-radius:var(--radius-sm)}.topbar{box-shadow:0 1px 0 var(--line-soft)}.online-pill{border-radius:var(--radius-pill)}.punch-dock{border-radius:var(--radius-md);border-color:var(--line)}.punch-head{border-radius:var(--radius-md) var(--radius-md) 0 0}.punch-btn{border-radius:var(--radius-sm)}.finance-bar b{font-family:var(--font-mono)}.empty{border-radius:var(--radius-md);border:1px dashed var(--line-strong);background:var(--sunken)}.empty-title{color:var(--ink)}.ledger-link{font-weight:600}.ledger-link:hover{color:var(--accent-hover)}.pwd-card,.nav-settings-pop,.gantt-editor,.ledger-modal-box{border-color:var(--line)}.gantt-day.gantt-today{background:var(--accent-soft);color:var(--accent-text)}.gantt-col-today{background:var(--accent-tint-weak)}.gantt-scroll,.gantt-head,.gantt-row-left{background:var(--card)}.gantt-bar{border-radius:var(--radius-xs)}.gantt-bar.pri-medium{background:var(--accent);color:var(--accent-ink)}.gantt-range-hint{border-radius:var(--radius-pill);background:var(--sunken)}.gantt-row-handle{color:var(--muted)}[data-theme=dark] .panel,[data-theme=dark] .ledger-card,[data-theme=dark] .ledger-brand,[data-theme=dark] .stat-card,[data-theme=dark] .day-card,[data-theme=dark] .empty{border-color:var(--line)}[data-theme=dark] .ledger-stat,[data-theme=dark] .ledger-op-stat{background:var(--card);border-color:var(--line-soft)}[data-theme=dark] .board-column{background:var(--sunken)}[data-theme=dark] .board-head span{background:var(--card)}[data-theme=dark] .table th{background:var(--sunken)}[data-theme=dark] .primary{box-shadow:0 1px 2px #00000080}[data-theme=dark] .topbar{box-shadow:0 1px 0 var(--line-soft)}@media (prefers-reduced-motion:reduce){.primary:active,.outline:active,.ghost:active,.danger-link:active{transform:none}}@media (width<=900px){.panel,.ledger-card,.ledger-hero,.stat-card{padding:14px}.panel-title h2:before,.ledger-card-head h2:before,.ledger-modal-head h2:before{width:3px}}
