:root{--bg:#fff;--surface:#fff;--text:#1a2332;--muted:#5a6a7a;--border:#d0d7e2;--sidebar-active:#e8f1fa;--accent:#0056a4;--accent-hover:#00407a;--accent-bg:#e8f1fa;--danger:#b42318;--radius:2px;--font:"IBM Plex Sans", "Segoe UI", sans-serif;--font-display:"IBM Plex Sans", "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--shadow:none;--color-nav:#0056a4;--color-nav-text:#e8f1fa;--color-nav-muted:#b3cce6;--color-nav-active:#fff;--top-nav-height:40px;--papertrail-height:36px;--side-nav-width:220px;--green:#2f7d4f}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;max-height:100%;margin:0;overflow:hidden}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:13px;line-height:1.45}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;color:var(--text);margin:0 0 .5rem;font-weight:600}p{color:var(--muted);margin:0 0 1rem}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{flex-direction:column;height:100%;display:flex;overflow:hidden}html.hub-embed,html.hub-embed body{--top-nav-height:0px}html.hub-embed .top-nav,body.hub-embed .top-nav,.app-shell--hub-embed .top-nav{display:none!important}.top-nav{height:var(--top-nav-height);background:var(--color-nav);color:var(--color-nav-text);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 .85rem;display:flex}.top-nav__logo{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--color-nav-active);margin:0;font-size:.7rem;font-weight:500}.top-nav__meta{align-items:center;gap:1rem;display:flex}.top-nav__user{color:var(--color-nav-muted);font-size:.75rem}.top-nav__user strong{color:var(--color-nav-active);font-family:var(--font-mono);font-weight:500}.top-nav__logout{border-radius:var(--radius);color:var(--color-nav-muted);background:0 0;border:1px solid #ffffff59;padding:.2rem .55rem;font-size:.7rem}.top-nav__logout:hover{color:var(--color-nav-active);border-color:#ffffffb3}.app-body{flex:1;min-height:0;display:flex}.side-nav{width:var(--side-nav-width);border-right:1px solid var(--border);background:var(--surface);flex-direction:column;flex-shrink:0;min-height:0;display:flex;overflow:hidden}.side-nav__scroll{flex:1;min-height:0;overflow-y:auto}.side-nav__label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:.85rem .85rem .25rem;font-size:.65rem;font-weight:500}.side-nav__list{flex-direction:column;padding:.25rem 0 .75rem;display:flex}.side-nav__link{color:var(--muted);border-left:2px solid #0000;align-items:center;gap:.55rem;padding:.45rem .85rem;font-size:.8125rem;display:flex}.side-nav__link:hover{color:var(--text);background:var(--accent-bg)}.side-nav__link--active{color:var(--accent);background:var(--accent-bg);border-left-color:var(--accent);font-weight:500}.side-nav__icon{width:1rem;height:1rem;color:var(--muted);justify-content:center;align-items:center;display:inline-flex}.side-nav__link--active .side-nav__icon{color:var(--accent)}.side-nav__icon svg{width:100%;height:100%;display:block}.side-nav__text{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;line-height:1.25;overflow:hidden}.side-nav__soon{color:var(--muted);letter-spacing:.02em;font-size:.65rem}.app-main{background:var(--bg);flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.papertrail{height:var(--papertrail-height);border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0;align-items:center;padding:0 .85rem;font-size:.75rem;display:flex}.papertrail__root{font-family:var(--font-mono);color:var(--text);font-weight:500}.papertrail__sep{color:var(--border);margin:0 .35rem}.papertrail__current{color:var(--accent);font-weight:500}.content{flex:1;min-width:0;padding:1.25rem 1.5rem;overflow:auto}.page-msg{color:var(--muted);padding:2rem}.page-lead{margin-bottom:1rem;font-size:.875rem}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:var(--radius);min-height:2rem;padding:.45rem .85rem;font-size:.8125rem;font-weight:500}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff}.btn-primary:disabled,.btn:disabled{opacity:.45;cursor:not-allowed}.btn-danger{color:var(--danger);background:0 0;border-color:#e8b4ad}.btn-danger:hover:not(:disabled){color:var(--danger);border-color:var(--danger);background:#fdf2f0}.btn-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.field{flex-direction:column;gap:.35rem;margin-bottom:.9rem;display:flex}.field label{color:var(--muted);font-size:.75rem;font-weight:500}.field input,.field select,.field textarea{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);outline:none;width:100%;padding:.55rem .7rem}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);outline:2px solid color-mix(in srgb, var(--accent) 25%, transparent)}.field-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.field-row--3{grid-template-columns:1fr 1fr 1fr}.field-row--4{grid-template-columns:1fr 1fr 1fr 1fr}.login-page{background:var(--bg);justify-content:center;align-items:center;min-height:100%;padding:2rem;display:flex}.login-form{flex-direction:column;gap:.75rem;width:100%;max-width:360px;display:flex}.login-form__logo{object-fit:contain;width:100%;max-width:11rem;height:auto;margin:0 auto .35rem;display:block}.login-form__brand{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);text-align:center;margin:0;font-size:.7rem;font-weight:500}.login-form__title{letter-spacing:-.02em;text-align:center;color:var(--text);margin:0;font-size:1.5rem;font-weight:600}.login-form__hint{color:var(--muted);text-align:center;margin:0 0 .5rem;font-size:.875rem}.login-form__label{color:var(--muted);font-size:.75rem;font-weight:500}.login-form__input{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);outline:none;padding:.65rem .75rem}.login-form__input:focus{border-color:var(--accent)}.login-form__submit{border-radius:var(--radius);background:var(--accent);color:#fff;border:none;margin-top:.5rem;padding:.65rem 1rem;font-weight:500}.login-form__submit:hover:not(:disabled){background:var(--accent-hover)}.login-form__submit:disabled{opacity:.45;cursor:not-allowed}.login-form__error{color:var(--danger);margin:0;font-size:.8125rem}.pending-access{justify-content:center;align-items:center;min-height:100%;padding:2rem;display:flex}.pending-access__card{border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.75rem;width:100%;max-width:26rem;padding:1.5rem;display:flex}.pending-access__brand{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin:0;font-size:.7rem;font-weight:500}.pending-access__title{color:var(--text);margin:0;font-size:1.25rem}.pending-access__body{margin:0}.pending-access__back{border:1px solid var(--border);border-radius:var(--radius);color:var(--text);align-self:flex-start;padding:.4rem .75rem}.modal-backdrop{z-index:50;background:#1a23326b;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal.modal--form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;width:min(560px,100%);max-height:min(92vh,900px);padding:0;display:flex;overflow:hidden;box-shadow:0 18px 48px #1a23322e}.modal--form-sm{width:min(480px,100%)}.modal--form-md{width:min(560px,100%)}.modal--form-lg{width:min(720px,100%)}.modal--form-xl{width:min(960px,100vw - 2rem)}.modal--form-full{width:min(1100px,100vw - 2rem);height:min(92vh,960px)}.modal--form>.modal__header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:0;padding:1.15rem 1.35rem .85rem;display:flex}.modal__heading{flex:1;min-width:0}.modal__eyebrow{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:0 0 .2rem;font-size:.65rem;font-weight:500}.modal__header h2{margin:0;font-size:1.15rem;line-height:1.35}.modal__subtitle{color:var(--muted);margin:.3rem 0 0;font-size:.8125rem}.modal__close{border-radius:var(--radius);width:2rem;height:2rem;color:var(--muted);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;font-size:1.35rem;display:inline-flex}.modal__close:hover{color:var(--text);background:var(--accent-bg)}.modal__body{flex:1;min-height:0;padding:1rem 1.35rem;overflow:auto}.modal__footer{border-top:1px solid var(--border);background:#f7f9fb;justify-content:flex-end;align-items:center;gap:.5rem;padding:.95rem 1.35rem 1.15rem;display:flex}.modal__footer .btn-danger{margin-right:auto}.modal__error{color:var(--danger);border-radius:var(--radius);background:#fdf2f0;border:1px solid #f0d0cc;margin:.75rem 1.35rem 0;padding:.55rem .75rem;font-size:.8125rem}.modal__section-title{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin:.35rem 0 .75rem;font-size:.65rem;font-weight:500}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow:auto}.table{border-collapse:collapse;width:100%;font-size:.8125rem}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:.4rem .55rem}.table th{z-index:2;color:var(--muted);font-size:.7rem;font-weight:500;font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;background:#f7f9fb;position:sticky;top:0}.table tbody tr{cursor:pointer}.table tbody tr:hover td{background:var(--accent-bg)}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table th.sorted{color:var(--accent)}.table th.filtered{background:#eef4ff}.table .th-inner{align-items:center;gap:.25rem;display:flex}.table .th-filter{color:#bbb;background:0 0;border:none;margin-left:auto;padding:0 .15rem;font-size:.65rem}.table th.filtered .th-filter{color:var(--accent)}.stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.5rem;margin-bottom:1rem;display:grid}.stat-card{border:1px solid var(--border);border-radius:var(--radius);background:#f7f9fb;padding:.65rem .8rem}.stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.65rem;font-family:var(--font-mono);margin-bottom:.2rem}.stat-value{color:var(--text);font-size:1.05rem;font-weight:700}.stat-value.is-bad{color:var(--danger)}.stat-sub{color:var(--muted);margin-top:.15rem;font-size:.7rem}.toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.toolbar__right{align-items:center;gap:.5rem;margin-left:auto;display:flex}.pill{border-radius:var(--radius);background:var(--accent-bg);color:var(--accent);padding:.1rem .4rem;font-size:.7rem;font-weight:600;display:inline-block}.year-select{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:.35rem .5rem}.year-tiles{flex-wrap:wrap;gap:.35rem;display:flex}.year-tile{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);padding:.3rem .65rem;font-size:.75rem;font-weight:600}.year-tile.is-on{background:var(--accent);border-color:var(--accent);color:#fff}.fpop{z-index:80;border:1px solid var(--border);background:#fff;border-radius:8px;width:250px;padding:9px;font-size:12px;position:fixed;box-shadow:0 8px 28px #00000029}.fpop input[type=text],.fpop input[type=number]{border:1px solid var(--border);border-radius:var(--radius);width:100%;margin-bottom:6px;padding:5px 7px}.fpop .list{border:1px solid #eee;border-radius:6px;max-height:210px;padding:3px;overflow:auto}.fpop .opt{cursor:pointer;border-radius:5px;align-items:center;gap:7px;padding:4px 6px;display:flex}.fpop .opt:hover{background:#f2f6fa}.fpop .foot{justify-content:flex-end;gap:6px;margin-top:8px;display:flex}.fpop .rng{align-items:center;gap:6px;display:flex}.totval{border-radius:var(--radius);background:#f1f5f9;padding:.55rem .7rem;font-weight:700}.card-panel{border:1px solid var(--border);border-radius:var(--radius)}.contacts-table td{white-space:nowrap}.charts-grid{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.chart-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:.75rem}.chart-card--full{grid-column:1/-1}.chart-title{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-size:.75rem;font-weight:700;font-family:var(--font-mono);margin-bottom:.5rem}.waterfall-canvas{width:100%;height:220px;display:block}.bar-row{margin-bottom:8px}.bar-row__label{justify-content:space-between;margin-bottom:2px;font-size:11px;display:flex}.bar-track{background:#eee;border-radius:2px;height:6px;overflow:hidden}.bar-fill{background:var(--accent);height:100%}.setup-section{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.85rem;padding:.85rem}.setup-title{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:.7rem;font-weight:700;font-family:var(--font-mono);margin:0 0 .6rem}.setup-row{border-bottom:1px solid #eef2f6;justify-content:space-between;align-items:center;gap:.5rem;padding:.4rem 0;display:flex}.setup-add-row{flex-wrap:wrap;gap:.4rem;margin-top:.6rem;display:flex}.setup-add-row input{flex:1;min-width:8rem}.quote-log{flex-direction:column;gap:4px;max-height:180px;display:flex;overflow-y:auto}.quote-log__row{background:#f7f9fb;align-items:center;gap:8px;padding:5px 8px;display:flex}.cf-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}.cf-row{grid-template-columns:1fr 90px 80px 28px;align-items:center;gap:6px;margin-bottom:5px;display:grid}.cf-chart{align-items:flex-end;gap:2px;height:120px;display:flex}.cf-chart__col{flex:1;align-items:flex-end;height:100%;display:flex}.cf-chart__bar{width:100%;min-height:2px}.help-page{max-width:900px}.help-sec{border:1px solid var(--border);margin-bottom:.5rem}.help-sec__head{text-align:left;background:#f7f9fb;border:0;width:100%;padding:.55rem .75rem;font-weight:600}.help-sec__body{padding:.75rem}@media print{html,body,#root{height:auto!important;overflow:visible!important}.top-nav,.side-nav,.papertrail,.no-print,.toolbar__right .btn:not(.btn-primary){display:none!important}.app-shell,.app-body,.app-main,.content{height:auto;display:block;overflow:visible}.print-area,.charts-grid{display:block}.chart-card{break-inside:avoid;margin-bottom:12px}}@media (width<=900px){.charts-grid,.cf-grid{grid-template-columns:1fr}}
