:root{--brand:#ff4f00;--brand-soft:#fff0e8;--nav-bg:#f7f6f3;--nav-hover:#2b2b2b0e;--nav-guide:#e4e2dd;--nav-fg-2:#444;--nav-sheet:#1f7a4d;--nav-analysis:#2f6db5;--nav-mark:#ffd9c4;--nav-active-shadow:0 1px 2px #2b2b2b14, 0 0 0 1px #2b2b2b0f;--ink:#2b2b2b;--bg:#f6f6f5;--surface:#fff;--surface-2:#f1f1f0;--fg:#2b2b2b;--muted:#666;--line:#e3e3e1;--line-strong:#cbcbc8;--accent:#cc3f00;--accent-soft:#fff0e8;--primary-bg:#2b2b2b;--primary-fg:#fff;--primary-hover:#111;--ok:#1d7a49;--ok-soft:#e3f4ea;--warn:#8a6100;--warn-soft:#fdf3d6;--bad:#b3261e;--bad-soft:#fbe7e5;--wait:#555;--wait-soft:#eeeeec;--track:#e6e6e4;--radius:8px;--shadow:0 1px 2px #2b2b2b0f, 0 1px 3px #2b2b2b14;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--brand:#ff4f00;--brand-soft:#3a2416;--nav-bg:#1b1b1b;--nav-hover:#ffffff0f;--nav-guide:#333;--nav-fg-2:#d6d6d6;--nav-sheet:#5cc48d;--nav-analysis:#7fb0ec;--nav-mark:#5a2e14;--nav-active-shadow:0 0 0 1px #3a3a3a;--ink:#2b2b2b;--bg:#171717;--surface:#202020;--surface-2:#2b2b2b;--fg:#f2f2f2;--muted:#a8a8a8;--line:#363636;--line-strong:#474747;--accent:#ff7a3d;--accent-soft:#3a2416;--primary-bg:#ff4f00;--primary-fg:#1a1a1a;--primary-hover:#ff6a26;--ok:#57c78b;--ok-soft:#16301f;--warn:#e9b949;--warn-soft:#33290f;--bad:#f2786d;--bad-soft:#3a1a17;--wait:#b5b5b5;--wait-soft:#2a2a2a;--track:#363636;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--fg);margin:0;font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}::selection{background:color-mix(in srgb, var(--brand) 28%, transparent)}.logo{display:inline-flex}.logo img{max-width:100%;height:auto;display:block}.app{flex-direction:column;height:100%;display:flex}.top{background:var(--surface);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:12px;padding:8px 16px;display:flex}.brand{letter-spacing:-.01em;font-size:16px;font-weight:700}.analysis-btn{border:1px solid var(--line-strong);background:var(--surface-2);border-radius:var(--radius);text-overflow:ellipsis;white-space:nowrap;max-width:100%;padding:6px 12px;font-weight:600;overflow:hidden}.spacer{flex:auto}.plan{color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:12px}.ghost{color:var(--accent);background:0 0;border:0;border-radius:6px;padding:4px 8px}.ghost:hover{background:var(--accent-soft)}.notice{border-radius:var(--radius);background:var(--bad-soft);color:var(--bad);border:1px solid color-mix(in srgb, var(--bad) 30%, transparent);justify-content:space-between;align-items:center;gap:12px;margin:8px 16px 0;padding:8px 12px;display:flex}.layout{flex:auto;grid-template-columns:minmax(0,1fr) minmax(360px,560px);gap:12px;min-height:0;padding:12px 16px 16px;display:grid}.pane{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-height:0;box-shadow:var(--shadow);overflow:auto}.side-pane,.pad{padding:16px}.muted{color:var(--muted)}@media (width<=900px){.layout{grid-template-columns:minmax(0,1fr);overflow:auto}.pane{overflow:visible}.sheet-pane{max-height:60vh;overflow:auto}}.sheet table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums}.sheet th,.sheet td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:0}.sheet thead th{z-index:2;background:var(--surface-2);text-align:left;min-width:112px;height:32px;font-weight:600;position:sticky;top:0}.sheet th.corner,.sheet td.idx{z-index:1;background:var(--surface-2);width:44px;min-width:44px;position:sticky;left:0}.sheet th.corner{z-index:3}.sheet td.idx{color:var(--muted);text-align:right;padding:0 8px;font-size:12px}.sheet th.add{text-align:center;min-width:40px}.sheet th.add button{color:var(--accent);background:0 0;border:0;width:100%;height:32px;font-size:18px}.col-head{align-items:center;display:flex}.col-name{text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;flex:auto;padding:6px 8px;font-weight:600;overflow:hidden}.col-del{color:var(--muted);opacity:0;background:0 0;border:0;padding:4px 8px}th:hover .col-del,.col-del:focus-visible{opacity:1}.rename{background:var(--surface);border:0;width:100%;padding:6px 8px}.sheet td input{background:0 0;border:0;width:100%;min-width:112px;height:28px;padding:5px 8px}.sheet td input.n{text-align:right}.sheet td input:focus{outline:2px solid var(--accent);outline-offset:-2px;background:var(--accent-soft)}.limit{color:var(--warn);background:var(--warn-soft);margin:0;padding:8px 12px;font-size:13px}.picker-head{justify-content:space-between;align-items:center;display:flex}.picker h2{margin:0 0 12px;font-size:18px}.search{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);width:100%;margin-bottom:12px;padding:8px 12px}.goals{gap:8px;display:grid}.goal{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.goal.expanded{border-color:var(--line-strong)}.goal-head{text-align:left;background:var(--surface);border:0;gap:2px;width:100%;padding:10px 12px;display:grid}.goal-head:hover{background:var(--surface-2)}.goal-q{font-weight:600}.goal-hint{color:var(--muted);font-size:13px}.goal-items{border-top:1px solid var(--line);background:var(--surface-2);margin:0;padding:4px;list-style:none}.item{text-align:left;background:0 0;border:0;border-radius:6px;justify-content:space-between;align-items:center;width:100%;padding:7px 10px;display:flex}.item:hover:not(:disabled){background:var(--accent-soft)}.item.current{color:var(--accent);font-weight:600}.item:disabled{color:var(--muted)}.badge{color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:700}.card{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:16px}.card>summary{cursor:pointer;padding:10px 12px;font-weight:600}.options{gap:12px;padding:0 12px 12px;display:grid}.field{gap:4px;display:grid}.field label{font-size:13px;font-weight:500}.field small{color:var(--muted);font-size:12px}.field .req{color:var(--bad)}.field input:not([type=checkbox]),.field select,.field textarea{border:1px solid var(--line-strong);background:var(--surface);border-radius:6px;width:100%;padding:6px 10px}.field textarea{font-family:ui-monospace,Consolas,monospace;font-size:12px}.field.check{grid-template-columns:auto 1fr;align-items:center;column-gap:8px}.field.has-error input,.field.has-error select,.bad{border-color:var(--bad)!important}.field-error{color:var(--bad)!important}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip-opt{border:1px solid var(--line-strong);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:13px;display:inline-flex}.chip-opt.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.chip-opt input{margin:0}.more>summary{cursor:pointer;color:var(--accent);padding:4px 0;font-size:13px}.more{gap:12px;display:grid}.more[open]>summary{margin-bottom:8px}.results-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:4px;display:flex}.results h2{margin:0;font-size:17px}.status{border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700}.status.ok{color:var(--ok);background:var(--ok-soft)}.status.warn{color:var(--warn);background:var(--warn-soft)}.status.wait{color:var(--wait);background:var(--wait-soft)}.status.bad{color:var(--bad);background:var(--bad-soft)}.spinner{border:2px solid var(--line-strong);border-top-color:var(--brand);border-radius:50%;width:14px;height:14px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation:none}}.headline{margin:4px 0 12px;font-size:15px}.reqs{gap:10px;margin-bottom:16px;display:grid}.req-row{justify-content:space-between;gap:8px;font-size:13px;display:flex}.req-count{color:var(--muted)}.bar{background:var(--track);border-radius:4px;height:8px;margin-top:4px;position:relative;overflow:hidden}.bar i{background:var(--brand);border-radius:4px;transition:width .3s;position:absolute;inset:0 auto 0 0}.req.ready .bar i{background:var(--ok)}.req.insufficient .bar i{background:var(--wait)}.bar b{background:var(--fg);opacity:.45;width:2px;position:absolute;top:0;bottom:0}.alert{border-radius:var(--radius);background:var(--bad-soft);color:var(--bad);margin:0 0 12px;padding:10px 12px}.alert.soft{background:var(--wait-soft);color:var(--fg);justify-items:start;gap:8px;display:grid}.alert.soft ul{margin:0;padding-left:18px}.note{color:var(--muted);margin:4px 0;font-size:13px}.chart{margin:0 0 16px}.chart img{border:1px solid var(--line);background:#fff;border-radius:6px;max-width:100%;height:auto;display:block}.table-wrap{margin-bottom:16px;overflow-x:auto}.result-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:auto;max-width:100%;font-size:13px}.result-table caption{text-align:left;padding:6px 0 8px;font-size:13.5px;font-weight:700}.result-table th,.result-table td{text-align:left;white-space:nowrap;vertical-align:baseline;padding:6px 10px}.result-table thead th{color:var(--fg);border-bottom:2px solid var(--line-strong);font-size:12.5px;font-weight:700}.result-table tbody td{border-bottom:1px solid var(--line)}.result-table tbody tr:nth-child(2n) td{background:var(--surface-2)}.result-table tbody td:first-child{color:var(--fg);font-weight:500}.result-table th.n,.result-table td.n{text-align:right}.result-table .na{color:var(--muted)}.primary,.secondary{border-radius:var(--radius);white-space:nowrap;border:1px solid #0000;padding:6px 14px;font-weight:600}.primary{background:var(--primary-bg);color:var(--primary-fg)}.primary:hover:not(:disabled){background:var(--primary-hover)}.cta-brand{background:var(--brand);color:#fff;font-size:18px;font-weight:700}.cta-brand:hover:not(:disabled){background:#e84700}.primary:disabled{opacity:.55}.secondary{background:var(--surface);color:var(--fg);border-color:var(--line-strong)}.secondary:hover{background:var(--surface-2)}.big{padding:10px 20px;font-size:15px}.link{color:var(--accent);text-underline-offset:2px;background:0 0;border:0;padding:0;text-decoration:underline}.danger{color:var(--bad)}.danger:hover{background:var(--bad-soft)}.brand-link{background:0 0;border:0;align-items:center;padding:0;display:inline-flex}.boot{min-height:100vh}.crumb{text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;border-radius:6px;align-items:center;gap:4px;max-width:40ch;padding:6px 8px;font-weight:500;display:inline-flex;overflow:hidden}.crumb:hover{background:var(--surface-2)}.crumb .dirty{background:var(--warn);border-radius:50%;flex:none;width:8px;height:8px;margin-left:6px}.user{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:18ch;font-size:13px;overflow:hidden}.notice.ok{background:var(--ok-soft);color:var(--ok);border-color:color-mix(in srgb, var(--ok) 30%, transparent)}.dialog{border:1px solid var(--line);background:var(--surface);color:var(--fg);border-radius:12px;width:min(420px,100vw - 32px);padding:20px;box-shadow:0 20px 50px #00000040}.dialog.wide{width:min(680px,100vw - 32px);max-height:min(80vh,720px)}.dialog::backdrop{background:#0f141e73}.dialog h2{margin:0 0 12px;font-size:17px}.dialog form{gap:12px;display:grid}.dialog-actions{justify-content:flex-end;gap:8px;display:flex}.dialog-head{align-items:center;gap:8px;margin-bottom:12px;display:flex}.dialog-head h2{flex:auto;margin:0}.message-dialog{width:min(440px,100vw - 32px)}.message-body{grid-template-columns:auto 1fr;align-items:start;gap:14px;margin-bottom:18px;display:grid}.message-body h2{margin:2px 0 6px;font-size:16px}.message-body p{color:var(--muted);white-space:pre-line;overflow-wrap:anywhere;margin:0;line-height:1.5}.message-icon{background:var(--accent-soft);width:34px;height:34px;color:var(--accent);border-radius:50%;place-items:center;font-size:16px;font-weight:800;display:grid}.message-dialog.bad .message-icon{background:var(--bad-soft);color:var(--bad)}.message-dialog.ok .message-icon{background:var(--ok-soft);color:var(--ok)}.danger-btn{background:var(--bad);color:#fff;border:1px solid var(--bad)}.danger-btn:hover{filter:brightness(1.08)}.projects{gap:8px;margin:0;padding:0;list-style:none;display:grid}.entries{gap:2px;margin:0 0 6px;padding:0;list-style:none;display:grid}.entries li{align-items:center;display:flex}.entry{text-align:left;background:0 0;border:0;border-radius:6px;flex:auto;justify-content:space-between;gap:12px;padding:6px 8px;display:flex}.entry:hover{background:var(--accent-soft)}.auth-page{place-content:center;justify-items:center;gap:20px;min-height:100vh;padding:24px 16px;display:grid}.auth-card{background:var(--surface);border:1px solid var(--line);width:min(380px,100vw - 32px);box-shadow:var(--shadow);border-radius:12px;gap:14px;padding:24px;display:grid}.auth-card h1{margin:0;font-size:22px}.auth-card .field input{padding:9px 12px}.auth-alt{color:var(--muted);text-align:center;margin:0;font-size:13px}.layout.resizable{grid-template-columns:minmax(320px, 1fr) 12px var(--res-w,440px);gap:0}.layout.resizable.with-nav{grid-template-columns:var(--nav-w,260px) 12px minmax(320px, 1fr) 12px var(--res-w,440px)}.splitter{cursor:col-resize;touch-action:none;outline:none;position:relative}.splitter:after{content:"";background:0 0;border-radius:1px;width:2px;transition:background .1s;position:absolute;top:0;bottom:0;left:5px}.splitter:hover:after,.splitter:focus-visible:after{background:var(--brand)}body.resizing,body.resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}@media (width<=900px){.layout.with-nav,.layout.resizable,.layout.resizable.with-nav{grid-template-columns:minmax(0,1fr);gap:12px}.splitter{display:none}.nav-pane{max-height:40vh}.layout{grid-auto-rows:max-content}.layout .sheet-pane{height:65vh;max-height:none}}.sheet-pane{flex-direction:column;min-height:0;display:flex;overflow:hidden}.side-pane{overflow:auto}.nav-pane{background:var(--nav-bg);padding:10px 8px 12px;overflow:auto}.nav-head{justify-content:space-between;align-items:center;padding:2px 4px 8px 8px;display:flex}.nav-head h2{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0;font-size:11.5px;font-weight:700}.nav-empty{justify-items:start;gap:8px;padding:8px;font-size:13px;display:grid}.nav-search{color:var(--muted);align-items:center;margin:0 0 10px;display:flex;position:relative}.nav-search>svg{pointer-events:none;position:absolute;left:9px}.nav-search input{border:1px solid var(--line);background:var(--surface);width:100%;height:32px;color:var(--fg);font:inherit;border-radius:8px;padding:0 28px 0 29px;font-size:13px}.nav-search input::-webkit-search-cancel-button{display:none}.nav-search input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft);outline:none}.nav-search-clear{width:24px;height:24px;color:var(--muted);background:0 0;border:0;border-radius:6px;font-size:11px;position:absolute;right:4px}.nav-search-clear:hover{background:var(--nav-hover);color:var(--fg)}.nav-tree,.nav-tree ul{margin:0;padding:0;list-style:none}.nav-tree{gap:6px;display:grid}.nav-tree ul{border-left:1px solid var(--nav-guide);gap:1px;margin-left:15px;padding:2px 0 2px 7px;display:grid}.nav-tree li{min-width:0}.nav-project.open{padding-bottom:4px}.nav-item{border-radius:7px;align-items:center;gap:2px;min-height:30px;padding-right:2px;display:flex;position:relative}.nav-item:hover{background:var(--nav-hover)}.nav-item.project{min-height:34px}.nav-item.analysis{min-height:28px}.nav-item.active{background:var(--surface);box-shadow:var(--nav-active-shadow)}.nav-item.active:before{content:"";background:var(--brand);border-radius:3px;width:3px;position:absolute;top:6px;bottom:6px;left:0}.nav-item.active .nav-label{color:var(--fg);font-weight:600}.nav-item.group{text-transform:uppercase;letter-spacing:.05em;min-height:0;padding:6px 8px 2px;font-size:11.5px}.nav-item.group:hover{background:0 0}.nav-label{text-align:left;min-width:0;color:var(--fg);background:0 0;border:0;border-radius:7px;flex:auto;align-items:center;gap:7px;padding:4px 4px 4px 6px;font-size:13px;display:flex}.nav-label:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}.nav-label>span:not(.chev):not(.nav-shared):not(.nav-count){text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.nav-label svg{flex:none}.nav-item.project .nav-label{font-size:13.5px;font-weight:600}.nav-item.analysis .nav-label{color:var(--nav-fg-2);font-size:12.5px}.nav-item.project .nav-label>svg{color:var(--brand)}.nav-item.worksheet .nav-label>svg{color:var(--nav-sheet)}.nav-item.analysis .nav-label>svg{color:var(--nav-analysis)}.nav-label mark{background:var(--nav-mark);color:inherit;border-radius:2px;padding:0 1px}.nav-count{text-align:center;min-width:18px;color:var(--muted);background:var(--nav-guide);border-radius:999px;flex:none;margin-left:auto;padding:0 6px;font-size:11px;font-weight:600;line-height:18px}.nav-actions{flex:none;align-items:center;display:none}.nav-item:hover .nav-actions,.nav-item:focus-within .nav-actions,.nav-item.active .nav-actions{display:flex}.nav-item:hover .nav-count,.nav-item:focus-within .nav-count,.nav-item.active .nav-count{display:none}.nav-actions .icon-btn{width:24px;height:24px}.nav-actions .icon-btn:hover{background:var(--nav-guide)}@media (hover:none){.nav-actions{display:flex}}.nav-shared{color:var(--muted);flex:none;display:inline-flex}.nav-hint{padding:4px 8px;font-size:12px}.chev{color:var(--muted);flex:none;transition:transform .15s;display:inline-flex}.chev.open{transform:rotate(90deg)}.chev.hidden{visibility:hidden}@media (prefers-reduced-motion:reduce){.chev{transition:none}}.icon-btn{width:26px;height:26px;color:var(--muted);background:0 0;border:0;border-radius:6px;flex:none;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--line);color:var(--fg)}.icon-btn.strong{color:var(--accent)}.more-menu{position:relative}.menu{z-index:20;background:var(--surface);border:1px solid var(--line-strong);border-radius:8px;min-width:160px;margin:0;padding:4px;list-style:none;position:absolute;top:28px;right:0;box-shadow:0 8px 24px #00000026}.menu button{text-align:left;background:0 0;border:0;border-radius:6px;width:100%;padding:7px 10px}.menu button:hover{background:var(--surface-2)}.sheet-head{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:8px 12px;display:flex}.crumbs{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.save-state{color:var(--muted);white-space:nowrap;font-size:12px}.save-state.dirty,.save-state.saving{color:var(--warn)}.save-state.error{color:var(--bad)}.empty-state{text-align:center;color:var(--muted);justify-items:center;gap:10px;max-width:420px;margin:auto;padding:32px 24px;display:grid}.empty-state h2{color:var(--fg);margin:0;font-size:17px}.empty-state p{margin:0}.empty-state.small{padding:24px 8px}.empty-state .entries{text-align:left;width:100%;margin:0;padding:0;list-style:none}.results-config{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:16px}.config-toggle{text-align:left;background:0 0;border:0;align-items:center;gap:8px;width:100%;padding:10px 12px;font-weight:600;display:flex}.config-toggle.open{border-bottom:1px solid var(--line)}.results-config .options{padding:12px}.ss{flex-direction:column;flex:auto;min-height:0;display:flex}.ss-tools{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:4px;padding:6px 8px;display:flex}.tool{background:0 0;border:1px solid #0000;border-radius:6px;padding:4px 10px;font-size:13px}.tool:hover:not(:disabled){background:var(--surface-2);border-color:var(--line)}.tool:disabled{color:var(--muted);opacity:.6}.ss-flash{color:var(--ok);font-size:12px}.badge-ro{color:var(--warn);background:var(--warn-soft);border-radius:999px;padding:2px 10px;font-size:12px}.ss-scroll{flex:auto;min-height:0;position:relative;overflow:auto}.ss-grid{outline:none;min-width:100%;display:inline-block;position:relative}.ss table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums;table-layout:fixed}.ss th,.ss td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);height:var(--row-h,28px);padding:0}.ss td{white-space:nowrap;text-overflow:ellipsis;cursor:cell;-webkit-user-select:none;user-select:none;padding:0 8px;position:relative;overflow:hidden}.ss td.n{text-align:right}.ss td.sel{background-image:linear-gradient(color-mix(in srgb, var(--brand) 16%, transparent), color-mix(in srgb, var(--brand) 16%, transparent))}.ss td.active{outline:2px solid var(--brand);outline-offset:-2px}.ss-grid:not(:focus-within) td.active{outline-color:var(--line-strong)}.ss thead th{z-index:3;background:var(--surface-2);text-align:left;height:var(--head-h,32px);font-weight:600;position:sticky;top:0;overflow:hidden}.ss .col-resize{cursor:col-resize;z-index:5;touch-action:none;width:8px;height:100%;position:absolute;top:0;right:0}.ss .col-resize:after{content:"";background:0 0;border-radius:1px;width:2px;position:absolute;top:6px;bottom:6px;right:0}.ss .col-resize:hover:after,.ss .col-resize.on:after,.ss .col-resize:focus-visible:after{background:var(--brand)}.ss .col-resize:focus-visible{outline:none}.ss thead th.hl,.ss th.ss-idx.hl{background:color-mix(in srgb, var(--accent) 16%, var(--surface-2));color:var(--accent)}.ss th.ss-corner,.ss th.ss-idx{z-index:2;background:var(--surface-2);position:sticky;left:0}.ss thead th.ss-corner{z-index:4}.ss th.ss-corner button{width:100%;height:var(--head-h,32px);color:var(--muted);background:0 0;border:0;font-size:1.15em}.ss th.ss-corner button:hover{color:var(--accent);background:var(--accent-soft)}.ss th.ss-idx{color:var(--muted);text-align:right;cursor:default;-webkit-user-select:none;user-select:none;padding:0 .6em;font-size:.9em;font-weight:500}.ss .ss-spacer td{border:0;padding:0}.ss .col-head{align-items:center;display:flex}.ss .col-name{text-align:left;text-overflow:ellipsis;white-space:nowrap;min-width:0;color:inherit;background:0 0;border:0;flex:auto;padding:6px 8px;font-weight:600;overflow:hidden}.ss .col-del{color:var(--muted);opacity:0;background:0 0;border:0;padding:4px 6px}.ss th:hover .col-del,.ss .col-del:focus-visible{opacity:1}.ss .rename{background:var(--surface);border:0;width:100%;padding:6px 8px}.ss-edit{outline:2px solid var(--brand);outline-offset:-2px;background:var(--surface);width:100%;height:100%;font:inherit;text-align:inherit;border:0;padding:0 8px;position:absolute;inset:0}.ss-status{border-top:1px solid var(--line);color:var(--muted);background:var(--surface-2);flex-wrap:wrap;align-items:center;gap:16px;padding:4px 12px;font-size:12px;display:flex}.share-section{border-top:1px solid var(--line);gap:10px;padding:14px 0 4px;display:grid}.share-section h3{align-items:center;gap:8px;margin:0;font-size:15px;display:flex}.check-row{align-items:center;gap:8px;display:flex}.people,.links{gap:6px;margin:0;padding:0;list-style:none;display:grid}.people li,.links li{border:1px solid var(--line);border-radius:8px;align-items:center;gap:10px;padding:6px 8px;display:flex}.person,.link-info{flex:auto;min-width:0;display:grid}.person small,.link-info small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.people select{border:1px solid var(--line-strong);background:var(--surface);border-radius:6px;padding:5px 8px}.link-create{gap:8px;display:flex}.link-create input{border:1px solid var(--line-strong);background:var(--surface);border-radius:6px;flex:auto;min-width:0;padding:6px 10px}.links a.ghost{text-decoration:none}.small{font-size:12px}.notice.inline{margin:0 0 8px}.picker-dialog{padding-top:16px}.picker-sub{margin:0 0 6px;font-size:13px}.public{max-width:960px;margin:0 auto;padding:0 20px 48px}.public-head{border-bottom:1px solid var(--line);align-items:center;gap:12px;margin-bottom:24px;padding:18px 0;display:flex}.public h1{letter-spacing:-.015em;margin:0 0 6px;font-size:clamp(24px,3vw,32px)}.public-item{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin-top:20px;padding:20px}.public-item h2{margin:0 0 12px;font-size:18px}.ss-clip{pointer-events:none;z-index:1;background:linear-gradient(90deg, var(--brand) 50%, transparent 0) repeat-x top left / 8px 2px, linear-gradient(90deg, var(--brand) 50%, transparent 0) repeat-x bottom left / 8px 2px, linear-gradient(0deg, var(--brand) 50%, transparent 0) repeat-y top left / 2px 8px, linear-gradient(0deg, var(--brand) 50%, transparent 0) repeat-y top right / 2px 8px;animation:.6s linear infinite ants;position:absolute}@keyframes ants{to{background-position:8px 0,-8px 100%,0 -8px,100% 8px}}@media (prefers-reduced-motion:reduce){.ss-clip{animation:none}}.ss-clip-hint{color:var(--accent)}.tool.icon{justify-content:center;align-items:center;gap:2px;min-width:28px;padding:4px 6px;display:inline-flex}.tool.on{background:var(--brand-soft);border-color:color-mix(in srgb, var(--brand) 40%, transparent);color:var(--accent)}.tool-sep{background:var(--line);align-self:stretch;width:1px;margin:2px 4px}.tool-pop{display:inline-flex;position:relative}.tool.color,.tool.bg{flex-direction:column;gap:1px;padding-top:2px;padding-bottom:2px}.tool-glyph{font-weight:700;line-height:1}.tool-swatch{border:1px solid var(--line-strong);border-radius:1px;width:16px;height:4px}.align-glyph{gap:2px;width:14px;display:inline-grid}.align-glyph i{background:currentColor;border-radius:1px;height:2px;display:block}.align-glyph i:nth-child(2){width:9px}.align-left .align-glyph i:nth-child(2){justify-self:start}.align-center .align-glyph i:nth-child(2){justify-self:center}.align-right .align-glyph i:nth-child(2){justify-self:end}.palette{z-index:30;background:var(--surface);border:1px solid var(--line-strong);border-radius:10px;gap:10px;width:212px;padding:10px;display:grid;position:absolute;top:34px;left:0;box-shadow:0 10px 28px #0000002e}.swatches{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.swatch{border:1px solid var(--line-strong);border-radius:6px;width:24px;height:24px;padding:0}.swatch:hover{outline:2px solid var(--brand);outline-offset:1px}.palette-row{justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.palette-row input[type=color]{border:1px solid var(--line-strong);vertical-align:middle;background:0 0;border-radius:4px;width:32px;height:24px;padding:0}.zoom{border:1px solid var(--line);border-radius:8px;align-items:center;display:inline-flex;overflow:hidden}.zoom .tool{border-radius:0}.zoom-value{font-variant-numeric:tabular-nums;min-width:52px}.nav-rename,.title-edit{border:1px solid var(--brand);background:var(--surface);min-width:0;color:var(--fg);font:inherit;border-radius:6px;flex:auto;padding:3px 6px}.title-edit{max-width:100%;font-size:16px;font-weight:600}.results-head h2{cursor:default}.results-sub{margin:-2px 0 8px;font-size:13px}.small-btn{align-items:center;gap:6px;padding:4px 10px;font-size:13px;display:inline-flex}.config-dialog{width:min(560px,100vw - 32px);max-height:min(85vh,760px);overflow:auto}.config-dialog::backdrop{background:#0f141e47}.config-dialog .dialog-head h2{font-size:16px}.config-hint{margin:-4px 0 12px}.config-body .options{padding:0}.config-dialog .dialog-actions{background:var(--surface);border-top:1px solid var(--line);margin-top:12px;padding:12px 0 0;position:sticky;bottom:-20px}.results-actions{flex-wrap:nowrap;gap:6px;display:inline-flex}.landing{max-width:1160px;margin:0 auto;padding:0 20px}.landing section{scroll-margin-top:80px}.land-nav{z-index:10;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);align-items:center;gap:8px;padding:14px 0;display:flex;position:sticky;top:0}.land-links{gap:4px;margin-left:20px;display:flex}.land-links a{color:var(--muted);border-radius:8px;padding:6px 10px;font-size:14px;font-weight:500;text-decoration:none}.land-links a:hover{color:var(--fg);background:var(--surface-2)}.kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:10px;font-size:12px;font-weight:700;display:inline-block}.sec-head{max-width:680px;margin-bottom:28px}.sec-head h2{letter-spacing:-.02em;margin:0 0 8px;font-size:clamp(24px,3vw,34px);line-height:1.15}.sec-head p{color:var(--muted);margin:0;font-size:16px}.hero{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);align-items:center;gap:48px;padding:36px 0 40px;display:grid}.hero h1{letter-spacing:-.03em;margin:0 0 18px;font-size:clamp(34px,4.8vw,56px);line-height:1.05}.hero h1 .hl{color:var(--accent)}.lead{color:var(--muted);max-width:52ch;margin:0 0 28px;font-size:18px;line-height:1.55}.cta{flex-wrap:wrap;gap:12px;display:flex}.fine{color:var(--muted);margin:14px 0 0;font-size:13px}.showcase{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:0 30px 70px #10182824,0 2px 6px #1018280f}.sc-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px;display:flex}.sc-head strong{font-size:16px}.sc-head p{color:var(--muted);min-height:2.6em;margin:4px 0 0;font-size:13.5px}.sc-arrows{flex:none;gap:6px;display:flex}.sc-arrow{border:1px solid var(--line-strong);background:var(--surface);width:34px;height:34px;color:var(--fg);border-radius:50%;place-items:center;padding:0;display:grid}.sc-arrow:hover{border-color:var(--brand);color:var(--accent)}.sc-arrow.prev svg{transform:rotate(180deg)}.sc-frame{aspect-ratio:16/10.5;border:1px solid var(--line);background:#fff;border-radius:12px;position:relative;overflow:hidden}.sc-frame img{object-fit:contain;opacity:0;width:100%;height:100%;padding:6px;transition:opacity .45s,transform .45s;position:absolute;inset:0;transform:scale(.985)}.sc-frame img.on{opacity:1;transform:none}.sc-progress{background:var(--brand);width:0;height:3px;animation:linear forwards sc-grow;position:absolute;bottom:0;left:0}@keyframes sc-grow{to{width:100%}}.sc-tabs{flex-wrap:wrap;gap:6px;margin-top:14px;display:flex}.sc-tabs button{border:1px solid var(--line-strong);background:var(--surface);color:var(--fg);border-radius:999px;padding:5px 12px;font-size:13px;font-weight:500}.sc-tabs button:hover{border-color:var(--brand)}.sc-tabs button.on{background:var(--primary-bg);color:var(--primary-fg);border-color:var(--primary-bg)}.sc-foot{color:var(--muted);text-align:right;margin:10px 0 0;font-size:11.5px}@media (prefers-reduced-motion:reduce){.sc-frame img{transition:none}.sc-progress{display:none}}.numbers{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(4,minmax(0,1fr));margin:0 0 24px;padding:18px 8px;list-style:none;display:grid}.numbers li{text-align:center;color:var(--muted);font-size:14px}.numbers li+li{border-left:1px solid var(--line)}.numbers b{color:var(--fg);letter-spacing:-.02em;font-size:30px;line-height:1.1;display:block}.steps{padding:48px 0 32px}.steps ol{grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin:0;padding:0;list-style:none;display:grid}.steps li{position:relative}.steps li:not(:last-child):after{content:"";border-top:2px dashed var(--line-strong);position:absolute;top:26px;left:68px;right:-12px}.st-num{background:var(--brand-soft);width:54px;height:54px;color:var(--accent);border-radius:16px;place-items:center;margin-bottom:14px;display:grid;position:relative}.st-num em{background:var(--brand);color:#fff;width:22px;height:22px;box-shadow:0 0 0 3px var(--bg);border-radius:50%;place-items:center;font-size:12px;font-style:normal;font-weight:800;display:grid;position:absolute;top:-7px;right:-7px}.steps h3{margin:0 0 6px;font-size:16px}.steps p{color:var(--muted);margin:0;font-size:14px;line-height:1.5}.features{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;padding:24px 0 56px;display:grid}.feature{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px}.feature h3{margin:0 0 6px;font-size:15.5px}.feature p{color:var(--muted);margin:0;font-size:14px;line-height:1.5}.projects{background:var(--surface);border:1px solid var(--line);border-radius:22px;grid-template-columns:minmax(0,1fr) minmax(0,.9fr);align-items:center;gap:48px;margin-bottom:64px;padding:40px;display:grid}.pj-text h2{letter-spacing:-.02em;margin:0 0 20px;font-size:clamp(24px,3vw,32px);line-height:1.15}.pj-text ul{gap:12px;margin:0;padding:0;list-style:none;display:grid}.pj-text li{align-items:flex-start;gap:12px;font-size:15px;line-height:1.45;display:flex}.pj-icon{background:var(--brand-soft);width:30px;height:30px;color:var(--accent);border-radius:9px;flex:none;place-items:center;display:grid}.pm{background:var(--nav-bg);border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:0 20px 50px #1018281f}.pm-head{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);justify-content:space-between;align-items:center;padding:2px 6px 10px;font-size:11.5px;font-weight:700;display:flex}.pm-people{align-items:center;display:flex}.pm-people i,.pm-people em{letter-spacing:0;color:#fff;width:24px;height:24px;box-shadow:0 0 0 2px var(--nav-bg);border-radius:50%;place-items:center;margin-left:-6px;font-size:11px;font-style:normal;font-weight:700;display:grid}.pm-people i:first-child{background:#2f6db5}.pm-people i:nth-child(2){background:#1f7a4d}.pm-people i:nth-child(3){background:var(--brand)}.pm-people em{background:var(--line-strong);color:var(--fg)}.pm ul{gap:2px;margin:0;padding:0;list-style:none;display:grid}.pm li{border-radius:7px;align-items:center;gap:7px;min-height:30px;padding:0 8px;font-size:13px;display:flex;position:relative}.pm .pm-project{margin-top:6px;font-weight:600}.pm .pm-project:first-child{margin-top:0}.pm .pm-project>svg:first-child{color:var(--brand)}.pm .pm-project>svg:last-child{color:var(--muted)}.pm .pm-sheet{margin-left:18px}.pm .pm-sheet svg{color:var(--nav-sheet)}.pm .pm-analysis{color:var(--nav-fg-2);margin-left:36px;font-size:12.5px}.pm .pm-analysis svg{color:var(--nav-analysis)}.pm .on{background:var(--surface);box-shadow:var(--nav-active-shadow);color:var(--fg);font-weight:600}.pm .on:before{content:"";background:var(--brand);border-radius:3px;width:3px;position:absolute;top:6px;bottom:6px;left:0}.pm-badge{background:var(--ok-soft);color:var(--ok);border-radius:999px;margin-left:auto;padding:1px 8px;font-size:10.5px;font-weight:700}.pm-share{background:var(--surface);color:var(--muted);border-radius:9px;align-items:center;gap:6px;margin-top:12px;padding:8px 10px;font-size:12.5px;display:flex}.pm-share b{color:var(--fg)}.groups{padding:0 0 64px}.gr-body{grid-template-columns:320px minmax(0,1fr);align-items:start;gap:20px;display:grid}.gr-tabs{flex-direction:column;gap:4px;display:flex}.gr-tabs button{text-align:left;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:11px;justify-content:space-between;align-items:center;gap:10px;padding:11px 14px;font-size:14.5px;font-weight:500;display:flex;position:relative}.gr-tabs button:hover{color:var(--fg);background:var(--surface-2)}.gr-tabs button.on{color:var(--fg);background:var(--surface);border-color:var(--line);font-weight:600;box-shadow:0 1px 3px #1018280f}.gr-tabs button.on:before{content:"";background:var(--brand);border-radius:3px;width:3px;position:absolute;top:10px;bottom:10px;left:0}.gr-tabs em{background:var(--surface-2);color:var(--muted);border-radius:999px;flex:none;padding:1px 8px;font-size:12px;font-style:normal;font-weight:700}.gr-tabs button.on em{background:var(--brand-soft);color:var(--accent)}.gr-panel{background:var(--surface);border:1px solid var(--line);border-radius:16px;min-height:100%;padding:20px}.gr-hint{color:var(--muted);margin:0 0 14px}.gr-list{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.gr-list button{text-align:left;border:1px solid var(--line);background:var(--surface);width:100%;color:var(--fg);border-radius:9px;justify-content:space-between;align-items:center;gap:8px;padding:9px 12px;font-size:13.5px;display:flex}.gr-list button:hover{border-color:var(--brand);background:var(--brand-soft)}.free{text-transform:uppercase;letter-spacing:.04em;background:var(--ok-soft);color:var(--ok);border-radius:999px;flex:none;padding:1px 7px;font-size:10.5px;font-weight:700}.final-cta{text-align:center;background:var(--ink);color:#f2f2f2;border-radius:20px;margin-bottom:40px;padding:56px 20px}.final-cta h2{color:#f2f2f2;letter-spacing:-.015em;margin:0 0 8px;font-size:clamp(22px,2.8vw,30px)}.final-cta p{color:#bdbdbd;margin:0 0 22px}.land-foot{border-top:1px solid var(--line);justify-content:space-between;gap:12px;padding:24px 0 40px;font-weight:600;display:flex}@media (width<=980px){.hero,.projects{grid-template-columns:minmax(0,1fr);gap:32px}.hero{padding-top:16px}.projects{padding:28px 22px}.steps ol,.features{grid-template-columns:repeat(2,minmax(0,1fr))}.steps li:nth-child(2):after{display:none}.gr-body{grid-template-columns:minmax(0,1fr)}.gr-tabs{flex-direction:row;padding-bottom:4px;overflow-x:auto}.gr-tabs button{flex:none}.gr-tabs button.on:before{display:none}}@media (width<=760px){.land-links{display:none}}@media (width<=560px){.numbers{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:14px}.numbers li:nth-child(3){border-left:0}.steps ol,.features{grid-template-columns:minmax(0,1fr)}.steps li:after{display:none}.lead{font-size:16px}.sc-head p{min-height:0}}.print-report{display:none}@media print{@page{size:A4;margin:14mm 12mm 16mm}:root{--bg:#fff;--surface:#fff;--surface-2:#f4f4f3;--fg:#2b2b2b;--muted:#555;--line:#ddd;--line-strong:#bbb;--accent:#cc3f00;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}html,body,#root{background:#fff;height:auto}body{color:#2b2b2b;font-size:10.5pt}.app>:not(.print-report){display:none!important}.app{height:auto;display:block}.print-report{display:block}.pr-head{border-bottom:2px solid #ff4f00;justify-content:space-between;align-items:center;margin-bottom:14px;padding-bottom:8px;display:flex}.pr-logo{width:auto;height:22px}.pr-meta{color:#555;justify-items:end;font-size:9pt;display:grid}.print-report h1{letter-spacing:-.01em;margin:0 0 4px;font-size:18pt}.pr-sub{color:#555;margin:0 0 10px}.pr-status{background:#f4f4f3;border-radius:6px;margin:0 0 12px;padding:6px 10px}.pr-status.provisional{color:#6b4b00;background:#fdf3d6}.pr-status.ready{color:#155d38;background:#e3f4ea}.pr-params h2{margin:0 0 6px;font-size:11pt}.pr-params dl{grid-template-columns:repeat(2,1fr);gap:2px 18px;margin:0 0 12px;display:grid}.pr-params dl div{border-bottom:1px dotted #ccc;justify-content:space-between;gap:10px;padding:2px 0;display:flex}.pr-params dt{color:#555}.pr-params dd{text-align:right;margin:0;font-weight:600}.pr-reqs{color:#555;margin:0 0 10px;font-size:9pt}.pr-chart{break-inside:avoid;margin:0 0 12px}.pr-chart img{border:1px solid #ddd;border-radius:4px;width:100%;height:auto;display:block}.pr-tables{columns:2;column-gap:18px}.pr-tables .table-wrap{break-inside:avoid;margin-bottom:12px;overflow:visible}.pr-tables .result-table{font-size:9pt}.pr-foot{color:#777;text-align:center;border-top:1px solid #ddd;margin-top:16px;padding-top:6px;font-size:8.5pt}.result-table th,.result-table td{padding:3px 6px}.result-table thead th{color:#2b2b2b;background:#f4f4f3;font-weight:700}}
