:root,[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--surface-0:#0f1115;--surface-1:#191d24;--surface-2:#22272f;--border:#2a3038;--text-primary:#e6e8eb;--text-secondary:#8b919a;--text-muted:#6b7280;--accent:#2dd4bf;--status-ok:#2dd4bf;--status-near:#eab308;--status-over:#ef4444;--accent-ink:#0f1115}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--surface-0:#eef0f3;--surface-1:#fff;--surface-2:#f3f4f7;--border:#e2e4e8;--text-primary:#1a1c20;--text-secondary:#5a5f68;--text-muted:#8b919a;--accent:#0d9488;--status-ok:#0d9488;--status-near:#a16207;--status-over:#dc2626;--accent-ink:#fafafa}:root{--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--hairline:.5px solid var(--border);--radius-control:4px;--radius-block:8px;--radius-card:12px;--block-gap:16px;--nav-height:56px;--header-height:48px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--content-max:1080px}*{box-sizing:border-box}html,body{background:var(--surface-0);color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-size:14px;line-height:1.4}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.num--neg{color:var(--status-over)}.label{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);font-size:11px}a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:inherit}@media (pointer:coarse){input,select,textarea{font-size:16px}}button{border:var(--hairline);border-radius:var(--radius-control);cursor:pointer;background:0 0;padding:6px 10px}button:hover{background:var(--surface-2)}button:focus-visible,a:focus-visible,input:focus-visible{outline:1px solid var(--accent);outline-offset:1px}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}button.ghost{border-color:#0000}button[disabled]{opacity:.5;cursor:default}input[type=text],input[type=email],input[type=number],select{background:var(--surface-0);border:var(--hairline);border-radius:var(--radius-control);width:100%;padding:8px 10px}.shell{flex-direction:column;min-height:100dvh;display:flex}.header{z-index:10;height:calc(var(--header-height) + env(safe-area-inset-top));align-items:center;gap:var(--space-3);padding-top:env(safe-area-inset-top);padding-bottom:0;padding-left:max(var(--space-4), env(safe-area-inset-left));padding-right:max(var(--space-4), env(safe-area-inset-right));background:var(--surface-0);border-bottom:var(--hairline);display:flex;position:sticky;top:0}.header__brand{font-family:var(--font-mono);letter-spacing:.04em;color:var(--accent);font-weight:600}.header__spacer{flex:1}.segmented{border:var(--hairline);border-radius:var(--radius-control);display:inline-flex;overflow:hidden}.segmented button{color:var(--text-secondary);border:0;border-radius:0;padding:5px 10px}.segmented button+button{border-left:var(--hairline)}.segmented button[aria-pressed=true]{color:var(--text-primary);background:var(--surface-2)}.chip{font-family:var(--font-mono);border:1px solid var(--accent);color:var(--accent);border-radius:var(--radius-control);padding:4px 8px;font-size:12px}.icon-button{width:32px;height:32px;color:var(--text-secondary);border-color:#0000;place-items:center;padding:0;display:inline-grid}.icon-button:hover{color:var(--text-primary)}.main{gap:var(--block-gap);width:100%;max-width:var(--content-max);padding:var(--space-4);padding-bottom:calc(var(--nav-height) + env(safe-area-inset-bottom) + var(--space-4));padding-left:max(var(--space-4), env(safe-area-inset-left));padding-right:max(var(--space-4), env(safe-area-inset-right));flex-direction:column;flex:1;margin:0 auto;display:flex}.nav{z-index:10;height:calc(var(--nav-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);background:var(--surface-0);border-top:var(--hairline);grid-auto-columns:1fr;grid-auto-flow:column;display:grid;position:fixed;bottom:0;left:0;right:0}.nav__item{color:var(--text-secondary);border-top:2px solid #0000;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:11px;display:flex}.nav__item[aria-current=page]{color:var(--accent);border-top-color:var(--accent)}.nav__item svg{width:20px;height:20px}.nav__item>span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.nav__item--upload{color:var(--text-primary)}.nav__item--upload .nav__upload-ring{background:var(--accent);width:38px;height:38px;color:var(--accent-ink);border:3px solid var(--surface-0);border-radius:50%;place-items:center;margin-top:-14px;display:grid}.nav__item--desktop-only{display:none}@media (width>=700px) and (width<=899.98px){.nav__item--desktop-only{display:flex}.nav__item--mobile-only{display:none}.nav__item{font-size:12px}}@media (width>=900px){.shell{padding-top:calc(var(--nav-height) + env(safe-area-inset-top))}.header{top:calc(var(--nav-height) + env(safe-area-inset-top));height:var(--header-height);padding-top:0}.nav{height:calc(var(--nav-height) + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);border-top:0;border-bottom:var(--hairline);justify-content:center;gap:var(--space-2);padding-bottom:0;padding-left:max(var(--space-4), env(safe-area-inset-left));padding-right:max(var(--space-4), env(safe-area-inset-right));grid-auto-columns:auto;top:0;bottom:auto}.nav__item{gap:var(--space-2);padding:0 var(--space-3);border-top:0;border-bottom:2px solid #0000;flex-direction:row;font-size:13px}.nav__item[aria-current=page]{border-bottom-color:var(--accent)}.nav__item svg{width:16px;height:16px}.nav__item--upload .nav__upload-ring{border:0;width:28px;height:28px;margin-top:0}.nav__item--desktop-only{display:flex}.nav__item--mobile-only{display:none}.main{padding-bottom:var(--space-6)}}.section{background:var(--surface-1);border-radius:var(--radius-block);padding:var(--space-4)}.section__head{justify-content:space-between;align-items:baseline;gap:var(--space-1) var(--space-3);margin-bottom:var(--space-2);flex-wrap:wrap;display:flex}.card{border:var(--hairline);border-radius:var(--radius-card);padding:var(--space-4);background:var(--surface-2)}.stat-strip{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid}.stat{flex-direction:column;gap:2px;display:flex}.stat .num{font-size:18px}.notice{border:1px solid var(--status-near);border-radius:var(--radius-control);padding:var(--space-2) var(--space-3);color:var(--text-primary);background:var(--surface-2);margin:var(--space-3) 0;gap:var(--space-2);align-items:baseline;display:flex}.notice--error{border-color:var(--status-over)}.muted{color:var(--text-secondary)}.stepper{align-items:center;gap:var(--space-2);display:inline-flex}.stepper .num{text-align:center;min-width:8ch}.empty{padding:var(--space-6) 0;color:var(--text-secondary);text-align:center}.row-list{flex-direction:column;display:flex}.pill{font-family:var(--font-mono);border-radius:var(--radius-control);white-space:nowrap;border:1px solid;align-items:center;gap:6px;padding:2px 6px;font-size:11px;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.pill--ok{color:var(--status-ok)}.pill--near{color:var(--status-near)}.pill--over{color:var(--status-over)}.pill--near:before{border-radius:0}.pill--over:before{border-radius:0;transform:rotate(45deg)}.bar{background:var(--surface-2);border:var(--hairline);border-radius:3px;height:6px;position:relative;overflow:hidden}.bar__fill{background:var(--status-ok);position:absolute;inset:0 auto 0 0}.bar__fill--near{background:var(--status-near)}.bar__fill--over{background:var(--status-over);background-image:repeating-linear-gradient(135deg,#0000 0 3px,#00000040 3px 6px)}.budget-row{gap:var(--space-1) var(--space-3);padding:var(--space-3) 0;border-top:var(--hairline);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name status""bar bar""figures figures";display:grid}.budget-row:first-child{border-top:none;padding-top:0}.budget-row__name{grid-area:name;font-weight:500}.budget-row__status{grid-area:status;justify-self:end}.budget-row__bar{margin:var(--space-1) 0;grid-area:bar}.budget-row__figures{gap:var(--space-2);grid-area:figures;grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.figure{flex-direction:column;display:flex}.figure .label{font-size:10px}@media (width>=900px){.budget-row{grid-template-columns:320px 90px 1fr 380px;grid-template-areas:"name status bar figures";align-items:center}.budget-row__bar{margin:0}.budget-row__figures .figure{align-items:flex-end}}.login{min-height:100dvh;padding:var(--space-4);place-items:center;display:grid}.login__box{gap:var(--space-3);flex-direction:column;width:min(360px,100%);display:flex}.login__box h1{font-family:var(--font-mono);margin:0 0 var(--space-2);color:var(--accent);font-size:18px}.overlay{z-index:100;background:color-mix(in srgb, var(--surface-0) 85%, transparent);padding:var(--space-4);place-items:center;display:grid;position:fixed;inset:0}.overlay .card{width:min(360px,100%)}.chart{width:100%;height:220px}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.tree-picker{border:var(--hairline);border-radius:6px;flex-direction:column;display:flex;overflow:hidden}.tree-node__row{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:var(--hairline);display:flex}.tree-node:last-child>.tree-node__row{border-bottom:0}.tree-node__disclosure,.tree-node__disclosure-spacer{flex:none;width:20px;height:20px}.tree-node__disclosure{color:var(--text-secondary);cursor:pointer;background:0 0;border:0;place-items:center;transition:transform .1s;display:grid}.tree-node__disclosure--open{transform:rotate(90deg)}.tree-node__disclosure svg{width:14px;height:14px}.tree-node__label{align-items:center;gap:var(--space-2);cursor:pointer;display:flex}.tree-node__label input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px}.filter-bar__body{gap:var(--space-3);padding-top:var(--space-2);flex-direction:column;display:flex}.control{align-items:center;gap:var(--space-2) var(--space-3);flex-wrap:wrap;display:flex}.control--block{display:block}.control__head{align-items:center;gap:var(--space-3);margin-bottom:var(--space-2);display:flex}.control__inline{align-items:center;gap:var(--space-2);display:inline-flex}.control--save{border-top:var(--hairline);padding-top:var(--space-3)}.input{background:var(--surface-0);border:var(--hairline);border-radius:var(--radius-control);color:var(--text-primary);font:inherit;padding:4px 8px}.input--narrow{width:72px}.chips{gap:var(--space-2);margin:var(--space-2) 0;flex-wrap:wrap;display:flex}.chips .chip[aria-pressed=false],.chip--muted{border-color:var(--border);color:var(--text-secondary)}.chip--group{align-items:stretch;padding:0;display:inline-flex;overflow:hidden}.chip--group button{color:inherit;font:inherit;border:0;border-radius:0;padding:4px 8px}.chip__remove{border-left:1px solid!important}.segmented--wide{width:100%;display:flex}.segmented--wide a{text-align:center;color:var(--text-secondary);flex:1;padding:6px 10px;text-decoration:none}.segmented--wide a+a{border-left:var(--hairline)}.segmented--wide a[aria-current=page]{color:var(--text-primary);background:var(--surface-2)}.crumbs{align-items:center;gap:var(--space-3);margin-bottom:var(--space-2);display:flex}.crumbs__current{color:var(--text-primary)}.data-table{border-collapse:collapse;width:100%;margin-top:var(--space-3)}.data-table th,.data-table td{text-align:left;padding:var(--space-2) 0;border-bottom:var(--hairline);font-weight:400}.data-table th{color:var(--text-secondary);font-size:12px}.data-table .num{text-align:right}.review-card{gap:var(--space-3);flex-direction:column;align-items:flex-start;display:flex}.review-card__tx{align-items:baseline;gap:var(--space-3);flex-wrap:wrap;width:100%;display:flex}.review-card__description{flex:1;min-width:40%}.table-scroll{overflow-x:auto}.list-row{align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-3) 0;border-bottom:var(--hairline);grid-template-columns:minmax(0,1fr) auto;display:grid}.list-row:last-child{border-bottom:none}.truncate{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.progress{background:var(--surface-2);border:1px solid var(--border);border-radius:2px;height:4px;position:relative;overflow:hidden}.progress__fill{background:var(--accent);height:100%;transition:width .24s linear}.progress--indeterminate .progress__fill{display:none}.progress--indeterminate:after{content:"";background:var(--accent);opacity:.5;width:35%;animation:1.1s ease-in-out infinite progress-sweep;position:absolute;inset:0}@keyframes progress-sweep{0%{transform:translate(-100%)}to{transform:translate(320%)}}@media (prefers-reduced-motion:reduce){.progress--indeterminate:after{opacity:.25;width:100%;animation:none}.progress__fill{transition:none}}.phases{margin:var(--space-3) 0 0;flex-direction:column;padding:0;list-style:none;display:flex}.phase{align-items:baseline;gap:var(--space-2);border-bottom:1px solid var(--border);grid-template-columns:1.25rem 1fr auto;padding:6px 0;display:grid}.phase:last-child{border-bottom:none}.phase__mark{font-family:var(--font-mono);color:var(--text-muted);text-align:center}.phase--done .phase__mark{color:var(--status-ok)}.phase--failed .phase__mark{color:var(--status-over)}.phase--pending .phase__name,.phase--pending .phase__state{color:var(--text-muted)}.phase--running .phase__name{color:var(--text-primary)}.phase__state{font-size:.85em}.steps{margin:var(--space-2) 0 0;color:var(--text-secondary);font-family:var(--font-mono);font-variant-numeric:tabular-nums;flex-direction:column;gap:2px;padding:0;font-size:.85em;list-style:none;display:flex}:root{--indent-step:22px}.list-row--category{gap:var(--space-3);grid-template-columns:minmax(0,1fr) auto auto}.cat-name{align-items:center;gap:var(--space-2);min-width:0;display:flex}.cat-children{margin-left:calc(var(--indent-step) / 2);border-left:var(--hairline)}.cat-children .list-row--category{padding-left:calc(var(--indent-step) / 2)}.cat-children .cat-name:before{content:"";width:calc(var(--indent-step) / 2);border-top:var(--hairline);flex:none;height:0}.disclosure{width:20px;height:20px;color:var(--text-secondary);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;transition:transform .12s;display:inline-flex}.disclosure svg{width:14px;height:14px}.disclosure--open{transform:rotate(90deg)}.disclosure--spacer{cursor:default}@media (prefers-reduced-motion:reduce){.disclosure{transition:none}}.cat-name__text{min-width:0;color:inherit;font:inherit;text-align:left;cursor:text;background:0 0;border:0;padding:0;display:block}.cat-name__text:hover{text-underline-offset:3px;background:0 0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.cat-name__edit{align-items:center;gap:var(--space-2);min-width:0;display:flex}.cat-budget{align-items:center;gap:var(--space-2);display:flex}.cat-budget .label{display:none}@media (width>=700px){.cat-budget .label{display:inline}}.is-archived .cat-name__text{color:var(--text-muted);text-decoration:line-through}.rowmenu{position:relative}.rowmenu>summary{border-radius:var(--radius-control);width:28px;height:28px;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;list-style:none;display:inline-flex}.rowmenu>summary::-webkit-details-marker{display:none}.rowmenu>summary:hover{background:var(--surface-2);color:var(--text-primary)}.rowmenu__items{z-index:5;min-width:160px;padding:var(--space-1);border:var(--hairline);border-radius:var(--radius-control);background:var(--surface-1);flex-direction:column;align-items:stretch;display:flex;position:absolute;right:0}.rowmenu__items button{text-align:left;justify-content:flex-start}.cat-kind+.cat-kind{margin-top:var(--space-6)}.cat-kind__head{align-items:baseline;gap:var(--space-2);padding-bottom:var(--space-2);border-bottom:var(--hairline);display:flex}.input--empty{background:0 0;border-color:#0000}.input--empty:hover,.input--empty:focus{border-color:var(--border);background:var(--surface-2)}
