:root{--ink:#0c2422;--teal-deep:#0f3d3a;--teal:#1a5c57;--teal-mid:#2a7a73;--mist:#e8f0ee;--fog:#d3e4df;--paper:#f4faf7;--amber:#c4783a;--amber-soft:#e8b07a;--coral:#b85c4a;--line:#0f3d3a1f;--shadow:0 18px 40px #0c242214;--radius:14px;--font-display:"Fraunces", Georgia, serif;--font-body:"Manrope", system-ui, sans-serif;--nav-h:64px;color:var(--ink);background:var(--mist);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;line-height:1.5}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background-color:#0000;background-image:radial-gradient(90% 60% at 10% -10%,#c4783a2e,#0000 55%),radial-gradient(70% 50% at 100% 0,#2a7a7338,#0000 50%),linear-gradient(165deg,#eef6f3 0%,#e2ebe8 45%,#dce8e4 100%);background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:auto,auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box}a{color:var(--teal);text-decoration:none}button,input,select,textarea{font:inherit}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 .4rem;font-weight:700}.app-shell{grid-template-rows:auto 1fr auto;min-height:100vh;display:grid}.topbar{z-index:20;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);background:#f4faf7c7;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1.25rem;display:flex;position:sticky;top:0}.brand{align-items:baseline;gap:.55rem;animation:.7s both rise-in;display:flex}.brand-mark{font-family:var(--font-display);color:var(--teal-deep);font-size:1.55rem;line-height:1}.brand-tag{letter-spacing:.08em;text-transform:uppercase;color:var(--amber);font-size:.72rem;font-weight:600}.nav-links{flex-wrap:wrap;gap:.35rem;display:flex}.nav-links a{color:var(--ink);opacity:.72;border-radius:999px;padding:.4rem .7rem;font-size:.88rem;font-weight:500;transition:background .2s,opacity .2s,transform .2s}.nav-links a:hover{opacity:1;background:#0f3d3a0f}.nav-links a.active{opacity:1;background:var(--teal-deep);color:var(--paper)}.auth-chip{text-overflow:ellipsis;white-space:nowrap;max-width:12rem;color:var(--teal-deep);border:1px solid var(--line);background:#0f3d3a14;border-radius:999px;padding:.35rem .75rem;font-size:.75rem;font-weight:600;display:none;overflow:hidden}@media (width>=900px){.auth-chip{display:block}}.auth-callout{color:var(--ink);background:#c4783a1f;border:1px solid #c4783a47;border-radius:10px;margin:0 0 1rem;padding:.75rem .85rem;font-weight:500}.auth-panel{animation:.55s both rise-in}.main{width:min(1100px,100%);margin:0 auto;padding:1.5rem 1.15rem 3rem;animation:.55s both fade-up}.page-hero{margin-bottom:1.5rem}.page-hero h1{color:var(--teal-deep);font-size:clamp(1.8rem,4vw,2.6rem)}.page-hero p{color:#0c2422b8;max-width:38rem;margin:0}.panel{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:#f4faf7b8;padding:1.1rem 1.15rem}.grid-2{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;display:grid}.stat-row{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.85rem;margin-bottom:1.25rem;display:grid}.stat{border-radius:var(--radius);color:var(--paper);background:linear-gradient(145deg,#0f3d3af2,#1a5c57e0);padding:1rem 1.1rem;animation:.65s both rise-in}.stat:nth-child(2){background:linear-gradient(145deg,#c4783af2,#b85c4ae0);animation-delay:80ms}.stat:nth-child(3){animation-delay:.16s}.stat .label{letter-spacing:.06em;text-transform:uppercase;opacity:.8;font-size:.75rem}.stat .value{font-family:var(--font-display);margin-top:.25rem;font-size:1.55rem}.btn{appearance:none;background:var(--teal-deep);color:var(--paper);cursor:pointer;border:none;border-radius:999px;padding:.55rem 1.1rem;font-weight:600;transition:transform .15s,background .2s,box-shadow .2s}.btn:hover{transform:translateY(-1px);box-shadow:0 8px 18px #0f3d3a33}.btn.secondary{color:var(--teal-deep);border:1px solid var(--line);background:0 0}.btn.danger{background:var(--coral)}.btn.ghost{color:var(--teal);background:0 0;padding-inline:.6rem}.form-grid{gap:.75rem;display:grid}.form-grid label{gap:.3rem;font-size:.86rem;font-weight:600;display:grid}.form-grid input,.form-grid select,.form-grid textarea{border:1px solid var(--line);background:#ffffffb3;border-radius:10px;width:100%;padding:.55rem .7rem}.form-grid textarea{resize:vertical;min-height:88px}.check-row{align-items:center;gap:.55rem;font-weight:600;display:flex!important}.check-row input{width:auto}.split-panel{border:1px solid var(--line);background:#0f3d3a0a;border-radius:12px;gap:.55rem;padding:.75rem .85rem;display:grid}.split-panel-head{justify-content:space-between;align-items:center;gap:.75rem;font-size:.9rem;font-weight:700;display:flex}.split-hint{margin:0;font-size:.8rem}.split-row{grid-template-columns:1fr minmax(4.5rem,6rem) auto;align-items:center;gap:.45rem;font-weight:600;display:grid!important}.split-row input{border:1px solid var(--line);background:#ffffffbf;border-radius:10px;width:100%;padding:.45rem .55rem}.rate-band-row{grid-template-columns:auto minmax(4.5rem,1fr) auto minmax(4rem,5.5rem) auto;align-items:center;gap:.4rem;font-weight:600;display:grid!important}.rate-band-label{color:#0c24229e;white-space:nowrap;font-size:.78rem}.rate-band-row input{border:1px solid var(--line);background:#ffffffbf;border-radius:10px;width:100%;padding:.45rem .55rem}@media (width<=560px){.rate-band-row{grid-template-columns:auto 1fr}.rate-band-row .btn{grid-column:1/-1;justify-self:start}}.form-error{color:var(--coral);margin:0;font-size:.86rem;font-weight:600}.list{gap:.65rem;display:grid}.list-row{border:1px solid var(--line);background:#ffffff73;border-radius:12px;justify-content:space-between;align-items:flex-start;gap:.75rem;padding:.85rem .95rem;transition:transform .15s,border-color .2s;display:flex}.list-row:hover{border-color:#0f3d3a47;transform:translateY(-1px)}.list-row .meta{color:#0c24229e;font-size:.82rem}.notes-preview{color:#0c2422b3;white-space:pre-wrap;margin-top:.25rem;font-size:.84rem}.toolbar{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1rem;display:flex}.segmented{border:1px solid var(--line);background:#ffffff80;border-radius:999px;display:inline-flex;overflow:hidden}.segmented button{cursor:pointer;color:#0c2422a6;background:0 0;border:none;padding:.4rem .85rem;font-weight:600}.segmented button.active{background:var(--teal-deep);color:var(--paper)}.muted{color:#0c24229e}.coming-soon{text-align:center;place-items:center;min-height:40vh;padding:2rem;display:grid}.coming-soon .orb{background:radial-gradient(circle at 30% 30%, var(--amber-soft), var(--teal-mid));border-radius:50%;width:72px;height:72px;margin:0 auto 1rem;animation:2.8s ease-in-out infinite pulse}.empty{text-align:center;color:#0c242299;padding:1.5rem}.modal-backdrop{z-index:1000;overscroll-behavior:contain;background:#0c242273;place-items:center;width:100vw;height:100dvh;padding:1rem;animation:.2s fade-in;display:grid;position:fixed;inset:0;overflow-y:auto}.modal{overscroll-behavior:contain;background:var(--paper);width:min(520px,100%);max-height:calc(100dvh - 2rem);box-shadow:var(--shadow);border-radius:16px;padding:1.25rem;animation:.25s rise-in;overflow-y:auto}.modal-actions{justify-content:flex-end;gap:.5rem;margin-top:1rem;display:flex}.chart-wrap{width:100%;height:280px}.footer-bar{text-align:center;color:#0c242280;padding:.85rem 1.25rem 1.25rem;font-size:.78rem}.mobile-nav{display:none}@media (width<=820px){.nav-links{display:none}.mobile-nav{z-index:20;padding:.55rem .6rem calc(.55rem + env(safe-area-inset-bottom));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f4faf7eb;gap:.2rem;display:flex;position:sticky;bottom:0;overflow-x:auto}.mobile-nav a{text-align:center;color:#0c2422a6;border-radius:10px;flex:1 0 auto;padding:.45rem .4rem;font-size:.72rem;font-weight:600}.mobile-nav a.active{background:var(--teal-deep);color:var(--paper)}}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pulse{0%,to{filter:saturate();transform:scale(1)}50%{filter:saturate(1.15);transform:scale(1.06)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
