:root{--bg-deep:#080d12;--bg-card:#1f2d3b;--bg-card2:#0e1620;--status-pass:#3fb950;--status-caution:#d29922;--status-danger:#f85149;--status-pending:#4a9edd;--status-approved:#3fb950;--status-conditional:#83d790;--status-rejected:#f85149;--status-withdrawn:#f85149;--nav-bg:#1a4f6e;--text-primary:#e8f0f8;--text-secondary:#94aec4;--text-muted:#a1a8b1;--border:#1e2d3d;--border-subtle:#21262d;--control-fill:#1c2128;--card-border:#b4c3d780;--card-divider:#b4c3d733;--card-glow:0 0 0 1px #b4c3d738, 0 0 22px #b4c3d71f, 0 6px 18px #0000008c;--timeline-text:var(--text-primary);--timeline-muted:var(--text-muted);--timeline-axis:var(--card-divider);--timeline-neutral:var(--text-secondary);--timeline-pass:var(--status-pass);--timeline-caution:var(--status-caution);--timeline-danger:var(--status-danger);--timeline-milestone:var(--accent-blue);--timeline-box:#1f2d3beb;--accent-blue:#58a6ff;--accent-blue-soft:#58a6ff1f;--accent-blue-border:#58a6ff40;--accent-blue-hover:#58a6ff0f;--blue:#4a9edd;--blue-dim:#1d4a72;--green:#3fb950;--green-dim:#0f3a1a;--yellow:#c9902a;--red:#f85149;--red-soft:#f8514914;--red-text:#f85149;--purple:#8a6fd8;--cyan:#06b6d4;--orange:#f97316;--role-admin:#5aabee;--role-admin-bg:#5aabee1a;--role-admin-border:#5aabee33;--role-viewer:#8b949e;--role-viewer-bg:#8b949e1a;--role-viewer-border:#8b949e33;--role-editor:#3fb950;--role-editor-bg:#3fb9501a;--role-editor-border:#3fb95033}html.theme-light{--bg-deep:#f4f6f9;--bg-card:#fff;--bg-card2:#eef2f7;--text-primary:#101720;--text-secondary:#47576b;--text-muted:#667485;--border:#d3dae3;--border-subtle:#e2e8f0;--control-fill:#fff;--card-border:#c7d0dc;--card-divider:#e2e8f0;--card-glow:0 0 0 1px #1017200a, 0 1px 2px #1017200f, 0 6px 18px #1017200f;--accent-blue:#1f6feb;--accent-blue-soft:#1f6feb1a;--accent-blue-border:#1f6feb59;--accent-blue-hover:#1f6feb12;--status-pass:#1a7f37;--status-caution:#9a6700;--status-danger:#d1242f;--red-soft:#d1242f14;--timeline-box:#ffffffeb}.theme-page{background:var(--bg-deep);color:var(--text-primary);min-height:100vh}.theme-card{background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary)}.theme-card-alt{background:var(--bg-card2);border:1px solid var(--border);color:var(--text-primary)}.theme-header{background:var(--nav-bg);color:#fff;border-bottom:1px solid var(--border)}.theme-text-primary{color:var(--text-primary)}.theme-text-secondary{color:var(--text-secondary)}body{background:var(--bg-deep);color:var(--text-primary);margin:0;font-family:system-ui,sans-serif;font-size:16px;line-height:1.45}body:before{content:"";height:env(safe-area-inset-top,0px);background:var(--bg-deep);z-index:1000;pointer-events:none;position:fixed;top:0;left:0;right:0}.app-shell{max-width:720px;padding:calc(1rem + env(safe-area-inset-top)) 1rem calc(5rem + env(safe-area-inset-bottom));margin:0 auto}.page-head{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.head-actions{flex:none;gap:.4rem;display:flex}.theme-toggle{color:var(--text-secondary);flex:none;padding:.35rem .7rem;font-size:.85rem}.sync-dot{vertical-align:baseline;background:var(--text-muted);border-radius:50%;width:.5rem;height:.5rem;margin-right:.4rem;display:inline-block}.sync-dot.synced{background:var(--status-pass)}.sync-dot.pending{background:var(--status-caution)}.sync-dot.error{background:var(--status-danger)}.theme-toggle[aria-pressed=true]{color:var(--accent-blue);border-color:var(--accent-blue-border)}.tabbar{background:var(--bg-card);border-top:1px solid var(--card-border);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;inset:auto 0 0}.tab{appearance:none;color:var(--text-secondary);font:inherit;cursor:pointer;background:0 0;border:0;border-top:2px solid #0000;flex:1;padding:.85rem .5rem}.tab[aria-selected=true]{color:var(--accent-blue);border-top-color:var(--accent-blue);background:var(--accent-blue-hover)}.card{background:var(--bg-card);border:1px solid var(--card-border);border-radius:10px;margin-bottom:1rem;padding:1rem}.card>h2{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;margin:0 0 .75rem;font-size:1rem;font-weight:600}.muted{color:var(--text-muted)}.grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;display:grid}.field{flex-direction:column;gap:.3rem;display:flex}.field>span{color:var(--text-secondary);font-size:.8rem}input,select,textarea{font:inherit;color:var(--text-primary);background:var(--control-fill);border:1px solid var(--border);box-sizing:border-box;border-radius:6px;width:100%;padding:.5rem .6rem}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-blue-border);outline-offset:-1px}textarea{resize:vertical;min-height:9rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9rem}fieldset{border:1px solid var(--border);border-radius:6px;margin:0;padding:.5rem .75rem .75rem}legend{color:var(--text-secondary);padding:0 .3rem;font-size:.8rem}.radio{align-items:center;gap:.4rem;padding:.15rem 0;display:flex}.radio input{width:auto}button{font:inherit;color:var(--text-primary);background:var(--control-fill);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:.6rem 1rem}button.primary{background:var(--accent-blue-soft);border-color:var(--accent-blue-border);color:var(--accent-blue)}button:disabled{opacity:.45;cursor:not-allowed}.link-button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.actions{flex-wrap:wrap;gap:.6rem;margin-top:.9rem;display:flex}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--card-divider);padding:.45rem .5rem}th{color:var(--text-secondary);font-size:.8rem;font-weight:600}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.table-dense th,.table-dense td{padding:.2rem .3rem;font-size:.85rem}.table-dense input{min-width:5.5rem;padding:.25rem .35rem;font-size:.85rem}.row-latest td{background:var(--accent-blue-hover)}.icon-button{color:var(--text-muted);background:0 0;border-color:#0000;padding:.15rem .45rem;line-height:1}.icon-button:hover:not(:disabled){color:var(--status-danger);border-color:var(--status-danger)}.toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.toolbar select{flex:11rem;width:auto;min-width:11rem}.toolbar button{padding:.5rem .7rem}.inline-prompt{border:1px solid var(--card-divider);background:var(--bg-card2);border-radius:6px;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.75rem;padding:.6rem;display:flex}.inline-prompt input{flex:12rem;width:auto}.pro-badge{letter-spacing:.04em;text-transform:uppercase;color:var(--accent-blue);background:var(--accent-blue-soft);border:1px solid var(--accent-blue-border);vertical-align:middle;border-radius:999px;padding:.05rem .4rem;font-size:.7rem;font-weight:600;display:inline-block}.upgrade-card{border:1px solid var(--accent-blue-border);background:var(--accent-blue-hover);border-radius:10px;margin:.75rem 0 1rem;padding:.9rem}.progress{background:var(--control-fill);border:1px solid var(--border);border-radius:999px;height:6px;overflow:hidden}.progress-bar{background:var(--accent-blue);height:100%;transition:width .15s linear}.alert{border:1px solid;border-radius:6px;margin-bottom:1rem;padding:.7rem .8rem}.alert.danger{color:var(--status-danger);border-color:var(--status-danger);background:var(--red-soft)}.alert.caution{color:var(--status-caution);border-color:var(--status-caution);background:0 0}.pass{color:var(--status-pass)}.danger{color:var(--status-danger)}.caution{color:var(--status-caution)}.verdicts{flex-wrap:wrap;gap:2rem;display:flex}.verdict-value{font-variant-numeric:tabular-nums;font-size:2.4rem;font-weight:600;line-height:1.1}.badge{border:1px solid var(--status-caution);color:var(--status-caution);vertical-align:middle;border-radius:999px;margin-left:.5rem;padding:.1rem .55rem;font-size:.75rem;display:inline-block}.verdict-badge{align-items:center;gap:.35rem;font-weight:600;display:inline-flex}.verdict-badge.sm{font-size:.85rem}.verdict-badge.lg{margin-top:.15rem;font-size:1.15rem}.verdict-symbol{font-size:1.1em;line-height:1}.inline-controls{gap:.4rem;display:flex}.inline-controls>*{flex:1 1 0;min-width:0}.hint{color:var(--text-muted);justify-content:space-between;align-items:flex-start;gap:.35rem;margin:.3rem 0 0;font-size:.78rem;display:flex}.hint-toggle{width:1.35rem;height:1.35rem;color:var(--text-secondary);border-radius:50%;flex:none;padding:0;font-size:.75rem;line-height:1}.hint-toggle[aria-expanded=true]{color:var(--accent-blue);border-color:var(--accent-blue-border)}.hint-detail{max-width:40rem;color:var(--text-secondary);margin:.35rem 0 0;font-size:.85rem}.hinted.open{grid-column:1/-1}.hinted.open>.field,.hinted.open>fieldset,.hinted.open>.hint{max-width:20rem}.segmented{margin-bottom:.75rem;display:inline-flex}.segmented button{border-radius:0;padding:.4rem .9rem}.segmented button:first-child{border-radius:6px 0 0 6px}.segmented button:last-child{border-left:0;border-radius:0 6px 6px 0}.segmented button[aria-pressed=true]{background:var(--accent-blue-soft);border-color:var(--accent-blue-border);color:var(--accent-blue)}.grid-controls{flex-wrap:wrap;align-items:flex-end;gap:.6rem;margin-bottom:.6rem;display:flex}.grid-controls .field{width:7rem}.measure-grid input{text-align:right;font-variant-numeric:tabular-nums;min-width:4.5rem}.measure-grid input.cell-invalid{border-color:var(--status-danger)}.measure-grid .row-number{color:var(--text-muted);text-align:right}.row-nonwork td{background:var(--bg-card2)}.disclosure{color:var(--text-secondary);background:0 0;padding:.3rem .6rem;font-size:.85rem}.disclosure[aria-expanded=true]{color:var(--accent-blue);border-color:var(--accent-blue-border)}.estimate-type{grid-column:1/-1}.estimate-type select{width:100%;min-width:0}fieldset>.grid{grid-template-columns:repeat(auto-fit,minmax(88px,1fr));align-items:stretch}fieldset>.grid>.field{justify-content:flex-end}fieldset>.grid>.estimate-type{grid-column:1/-1}fieldset>.grid.starts-on-dates{grid-template-columns:repeat(2,minmax(0,1fr))}fieldset>.grid.starts-on-dates>.field:first-child{grid-column:1/-1}fieldset>.grid.starts-on-dates input[type=date]{min-width:0}.percent-input{align-items:center;gap:.35rem;display:flex}.percent-input input{text-align:right;font-variant-numeric:tabular-nums;width:5.5rem}.percent-sign{color:var(--text-muted);font-size:.9rem}.chart-empty{color:var(--text-muted);text-align:center;margin:0;padding:1.1rem 0;font-size:.9rem}.icon-button svg{fill:currentColor;width:.95rem;height:.95rem;display:block}
