:root{--ink:#1e2d55;--ink-deep:#141f3c;--ink-soft:#3a4a75;--ink-muted:#6b7799;--ink-faint:#9aa3bd;--teal:#5ca89d;--teal-deep:#3f8578;--teal-glow:#6fd4c4;--teal-subtle:#e8f5f2;--paper:#fafaf7;--paper-warm:#f4f3ec;--paper-card:#fff;--paper-sunk:#f0efe8;--rule:#e4e2d8;--rule-strong:#cfccbe;--amber:#c2711c;--amber-subtle:#fdf3e4;--green:#2f6f4e;--green-subtle:#e9f4ee;--red:#b3352f;--red-subtle:#fbeceb;--violet:#5b4b8a;--violet-subtle:#efecf7;--font-display:"Fraunces", "Iowan Old Style", Georgia, serif;--font-ui:"Archivo", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--radius:4px;--radius-lg:8px;--sidebar-w:224px;--shadow-card:0 1px 2px #1e2d550d, 0 4px 16px -8px #1e2d551f;--shadow-pop:0 8px 32px -8px #1e2d5538, 0 2px 6px #1e2d5514;--ease:cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;margin:0;font-size:14px;line-height:1.5}h1,h2,h3,h4{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:-.015em;color:var(--ink-deep);margin:0;font-weight:600}h1{font-size:27px;line-height:1.15}h2{font-size:20px}h3{font-size:16px}a{color:var(--teal-deep);text-decoration:none}a:hover{text-decoration:underline}.mono,.money{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.money{text-align:right;white-space:nowrap;letter-spacing:-.02em}.muted{color:var(--ink-muted)}.faint{color:var(--ink-faint)}.shell{grid-template-columns:var(--sidebar-w) 1fr;height:100%;display:grid}.sidebar{background:var(--ink-deep);color:#cdd4e6;flex-direction:column;padding:20px 0 12px;display:flex;position:relative;overflow:hidden}.sidebar:after{content:"";pointer-events:none;opacity:.4;background-image:repeating-linear-gradient(58deg,#ffffff05 0 1px,#0000 1px 7px);position:absolute;inset:0}.sidebar-brand{align-items:baseline;gap:8px;padding:0 20px 22px;display:flex}.sidebar-brand .mark{font-family:var(--font-display);color:#fff;letter-spacing:-.02em;font-size:19px;font-weight:600}.sidebar-brand .sub{text-transform:uppercase;letter-spacing:.14em;color:var(--teal-glow);font-size:10px;font-weight:600}.nav{z-index:1;flex-direction:column;flex:1;gap:1px;padding:0 10px;display:flex;position:relative}.nav-item{border-radius:var(--radius);color:#b6bfd6;transition:background .14s var(--ease), color .14s var(--ease);align-items:center;gap:10px;padding:8px 10px;font-size:13.5px;font-weight:500;display:flex}.nav-item:hover{color:#fff;background:#ffffff0f;text-decoration:none}.nav-item.active{color:#fff;background:#6fd4c424}.nav-item .badge{font-family:var(--font-mono);background:var(--teal);color:var(--ink-deep);text-align:center;border-radius:8px;min-width:18px;margin-left:auto;padding:0 5px;font-size:11px;font-weight:600}.nav-item .badge.warn{background:var(--amber);color:#fff}.nav-sep{background:#ffffff14;height:1px;margin:10px}.sidebar-foot{color:#7b86a3;z-index:1;padding:10px 20px 0;font-size:11px;position:relative}.main{min-width:0;overflow-y:auto}.page{max-width:1180px;margin:0 auto;padding:30px 34px 72px}.page-head{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:22px;padding-bottom:14px;display:flex}.page-head .eyebrow{text-transform:uppercase;letter-spacing:.15em;color:var(--ink-muted);margin-bottom:5px;font-size:10.5px;font-weight:600}.page-actions{align-items:center;gap:8px;display:flex}.btn{font-family:var(--font-ui);border-radius:var(--radius);border:1px solid var(--rule-strong);background:var(--paper-card);color:var(--ink);cursor:pointer;transition:background .12s var(--ease), border-color .12s var(--ease), transform .12s var(--ease);white-space:nowrap;align-items:center;gap:6px;padding:7px 14px;font-size:13px;font-weight:500;display:inline-flex}.btn:hover:not(:disabled){background:var(--paper-warm);border-color:var(--ink-faint)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--teal-deep);border-color:var(--teal-deep);color:#fff}.btn.primary:hover:not(:disabled){background:#357569;border-color:#357569}.btn.ink{background:var(--ink);border-color:var(--ink);color:#fff}.btn.ink:hover:not(:disabled){background:var(--ink-deep)}.btn.danger{color:var(--red);border-color:#e3c5c3}.btn.danger:hover:not(:disabled){background:var(--red-subtle)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){background:var(--paper-sunk);border-color:#0000}.btn.sm{padding:4px 9px;font-size:12px}.btn.lg{padding:10px 20px;font-size:14px}input,textarea,select{font-family:var(--font-ui);color:var(--ink);background:var(--paper-card);border:1px solid var(--rule-strong);border-radius:var(--radius);width:100%;transition:border-color .12s var(--ease), box-shadow .12s var(--ease);padding:7px 9px;font-size:13.5px}input:focus,textarea:focus,select:focus{border-color:var(--teal);box-shadow:0 0 0 3px var(--teal-subtle);outline:none}input.money-input{font-family:var(--font-mono);text-align:right}label.field{margin-bottom:12px;display:block}label.field>.lbl{text-transform:uppercase;letter-spacing:.09em;color:var(--ink-muted);margin-bottom:4px;font-size:11px;font-weight:600;display:block}.hint{color:var(--ink-muted);margin-top:3px;font-size:11.5px}.segmented{background:var(--paper-sunk);border-radius:var(--radius);gap:2px;padding:2px;display:inline-flex}.segmented button{font-family:var(--font-ui);cursor:pointer;color:var(--ink-muted);transition:background .12s var(--ease), color .12s var(--ease);white-space:nowrap;background:0 0;border:none;border-radius:3px;padding:5px 10px;font-size:12px;font-weight:500}.segmented button:hover{color:var(--ink)}.segmented button.on{background:var(--paper-card);color:var(--ink);box-shadow:0 1px 2px #1e2d5517}.toggle{cursor:pointer;color:var(--ink-soft);-webkit-user-select:none;user-select:none;align-items:center;gap:7px;font-size:12.5px;display:inline-flex}.toggle input{width:auto;accent-color:var(--teal-deep);margin:0}.card{background:var(--paper-card);border:1px solid var(--rule);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.card-head{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;gap:12px;padding:13px 16px;display:flex}.card-head h3{font-size:14.5px}.card-body{padding:16px}.card-body.flush{padding:0}table.data{border-collapse:collapse;width:100%;font-size:13.5px}table.data th{text-align:left;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-muted);border-bottom:1px solid var(--rule);white-space:nowrap;background:var(--paper-warm);padding:9px 14px;font-size:10.5px;font-weight:600}table.data th.num,table.data td.num{text-align:right}table.data td{border-bottom:1px solid var(--rule);vertical-align:middle;padding:10px 14px}table.data tbody tr:last-child td{border-bottom:none}table.data tbody tr.clickable{cursor:pointer;transition:background .1s var(--ease)}table.data tbody tr.clickable:hover{background:var(--paper-warm)}.pill{letter-spacing:.02em;white-space:nowrap;text-transform:capitalize;border-radius:20px;align-items:center;gap:5px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.pill.grey{background:var(--paper-sunk);color:var(--ink-muted)}.pill.teal{background:var(--teal-subtle);color:var(--teal-deep)}.pill.amber{background:var(--amber-subtle);color:var(--amber)}.pill.green{background:var(--green-subtle);color:var(--green)}.pill.red{background:var(--red-subtle);color:var(--red)}.pill.violet{background:var(--violet-subtle);color:var(--violet)}.pill.ink{color:var(--ink);background:#e6e9f2}.empty{text-align:center;color:var(--ink-muted);padding:40px 20px}.empty .big{font-family:var(--font-display);color:var(--ink-soft);margin-bottom:5px;font-size:17px}.banner{border-radius:var(--radius);border:1px solid #0000;align-items:center;gap:9px;margin-bottom:16px;padding:9px 14px;font-size:12.5px;display:flex}.banner.amber{background:var(--amber-subtle);color:#8a4f11;border-color:#f0dcbc}.banner.teal{background:var(--teal-subtle);color:var(--teal-deep);border-color:#c5e5dd}.banner.red{background:var(--red-subtle);color:var(--red);border-color:#eecac7}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.rise{animation:rise .4s var(--ease) both}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.row{align-items:center;gap:10px;display:flex}.row.tight{gap:6px}.row.wrap{flex-wrap:wrap}.spacer{flex:1}.stack{flex-direction:column;gap:14px;display:flex}.grid-2{grid-template-columns:1fr 1fr;gap:14px;display:grid}.grid-3{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.nowrap{white-space:nowrap}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pgrid{border:1px solid var(--rule);border-radius:var(--radius-lg);background:var(--paper-card);overflow:hidden}.pgrid-head,.pgrid-row,.pgrid-total{grid-template-columns:20px 38px minmax(0,1.1fr) minmax(0,1.4fr) 64px 92px 28px;align-items:stretch;display:grid}.pgrid-head{background:var(--paper-warm);border-bottom:1px solid var(--rule)}.pgrid-head>div{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-muted);align-items:center;padding:7px 8px;font-size:10px;font-weight:600;display:flex}.pgrid-head .pg-days,.pgrid-head .pg-cost{justify-content:flex-end}.pgrid-row{border-bottom:1px solid var(--rule);transition:background .1s var(--ease), opacity .12s var(--ease)}.pgrid-row:hover{background:#fcfcfa}.pgrid-row.dragging{opacity:.4}.pgrid-row.overlay input{color:var(--ink-muted);font-style:italic}.pgrid-row.free .pg-cost{color:var(--green)}.pgrid-row input{background:0 0;border:1px solid #0000;border-radius:0;width:100%;min-width:0;padding:8px 6px;font-size:13px}.pgrid-row input:hover:not(:disabled){background:var(--paper-warm)}.pgrid-row input:focus{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal);z-index:1;background:#fff;outline:none;position:relative}.pgrid-row input:disabled{color:var(--ink-soft);background:0 0}.pgrid-row .pg-no,.pgrid-row .pg-days,.pgrid-row .pg-cost{text-align:right}.pgrid-row .pg-no{text-align:center;color:var(--ink-muted);font-size:12px}.pgrid-row .pg-cost.derived{color:var(--ink-faint)}.pgrid-row .pg-cost.free{color:var(--green);font-style:italic}.pg-drag{color:var(--ink-faint);cursor:grab;justify-content:center;align-items:center;display:flex}.pg-drag:active{cursor:grabbing}.pg-act{justify-content:center;align-items:center;display:flex}.pg-btn{color:var(--ink-faint);cursor:pointer;opacity:0;transition:opacity .12s var(--ease), color .12s var(--ease);background:0 0;border:none;border-radius:3px;padding:3px;display:flex}.pgrid-row:hover .pg-btn{opacity:1}.pg-btn:hover{color:var(--red);background:var(--red-subtle)}.pgrid-add{width:100%;font-family:var(--font-ui);color:var(--ink-muted);cursor:pointer;border:none;border-bottom:1px solid var(--rule);transition:background .1s var(--ease), color .1s var(--ease);background:0 0;align-items:center;gap:6px;padding:9px 12px;font-size:12.5px;display:flex}.pgrid-add:hover{background:var(--paper-warm);color:var(--ink)}.pgrid-total{background:var(--paper-warm);font-weight:600}.pgrid-total>div{white-space:nowrap;justify-content:flex-end;align-items:center;padding:9px 6px;font-size:13px;display:flex}.pgrid-total .spacer{grid-column:1/5}.paper{color:#1a1a1a;font-family:var(--font-ui);background:#fff;border-radius:2px;min-height:940px;padding:44px 46px 56px;font-size:12px;line-height:1.55;box-shadow:0 1px 3px #1e2d5517,0 12px 36px -14px #1e2d5533}.paper-head{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:18px;display:flex}.paper-mark-name{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink-deep);font-size:17px;font-weight:600}.paper-from{text-align:right;color:#4a4a4a;font-size:10.5px;line-height:1.65}.paper-rule{border:none;border-top:1px solid #d8d6cc;margin:0 0 20px}.paper-title-block{margin-bottom:20px}.paper-title{font-family:var(--font-display);letter-spacing:-.02em;color:#14213d;font-size:24px;font-weight:600;line-height:1.15}.paper-subtitle{color:#5a5a5a;margin-top:3px;font-size:12.5px}.paper-meta{grid-template-columns:max-content 1fr;gap:2px 12px;margin:0 0 20px;font-size:11.5px;display:grid}.paper-meta dt{color:#333;font-weight:600}.paper-meta dd{color:#444;margin:0}.paper-pending{color:#a8a49a;font-style:italic}.paper-block{margin-bottom:20px}.paper-block.footer-note{color:#6a6a6a;border-top:1px solid #e8e6dc;margin-top:26px;padding-top:12px;font-size:10.5px;font-style:italic}.paper-h2{font-family:var(--font-display);color:#14213d;letter-spacing:-.01em;margin:0 0 8px;font-size:14px;font-weight:600}.paper-p{margin:0 0 8px}.paper-p:last-child{margin-bottom:0}.paper-address{line-height:1.5}.paper-table{border-collapse:collapse;width:100%;margin-bottom:6px;font-size:11px}.paper-table th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:#3a3a3a;vertical-align:bottom;border-bottom:1.5px solid #14213d;padding:6px 8px;font-size:10px;font-weight:600}.paper-table td{vertical-align:top;border-bottom:1px solid #e8e6dc;padding:7px 8px}.paper-table th.r,.paper-table td.r{text-align:right}.paper-table tr.overlay td{color:#5a5a5a;font-style:italic}.paper-table tr.total td{border-top:1.5px solid #14213d;border-bottom:none;padding-top:8px}.paper-list{margin:0 0 8px;padding-left:18px}.paper-list.tight li{margin-bottom:1px}.paper-list li{margin-bottom:3px}.paper-sub{color:#5a5a5a;font-size:10.5px}.paper-sub-head{color:#333;margin:6px 0 3px;font-size:10.5px;font-weight:600}.paper-free{color:#2f6f4e;font-weight:500}.paper-milestone{border-left:2px solid #e0ddd2;margin-bottom:14px;padding:2px 0 2px 12px}.paper-milestone-head{justify-content:space-between;align-items:baseline;gap:14px;margin-bottom:4px;display:flex}.paper-output{color:#4a4a4a;margin-top:4px;font-size:10.5px}.paper-inv-title{font-family:var(--font-ui);margin-bottom:14px;font-size:13px;font-weight:700}.paper-inv-table{border-collapse:collapse;width:100%;margin-bottom:16px;font-size:11.5px}.paper-inv-table th,.paper-inv-table td{vertical-align:top;border:1px solid #333;padding:8px 10px}.paper-inv-table th{text-align:left;text-transform:none;letter-spacing:0;font-size:11.5px;font-weight:700}.paper-inv-table th.r,.paper-inv-table td.r{text-align:right}.paper-inv-table tr.total td{font-weight:700}.paper-inv-sub{padding-left:0;display:block}.paper-inv-foot{font-size:11.5px;line-height:1.7}
