@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700&display=swap');
:root{--bg:#dfeeff;--panel:#a9cbf7;--ink:#2124a0;--navy:#021b3a;--blue:#2f7bff;--pink:#f0ccff;--white:#fff;--muted:#63739a;--line:#d9e4f3;--warn:#e0573a;--green:#168b67;--shadow:0 18px 50px rgba(33,36,160,.12);--radius:24px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:linear-gradient(180deg,#dfeeff 0,#edf5ff 55%,#f7faff 100%);color:var(--navy);font-family:Poppins,system-ui,sans-serif;-webkit-font-smoothing:antialiased}button{font:inherit;border:0;cursor:pointer;color:inherit;-webkit-tap-highlight-color:transparent}button:active{transform:scale(.985)}button:focus{outline:none}button:focus-visible{outline:3px solid rgba(47,123,255,.35);outline-offset:2px}
.app{width:min(100%,1040px);margin:auto;min-height:100vh;padding:0 22px 124px}.app-header{height:74px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:10px}.brand img{width:40px;height:40px;border-radius:12px;box-shadow:0 6px 16px rgba(47,123,255,.2)}.brand strong{display:block;font-size:1.05rem;color:var(--ink)}.brand span{display:block;font-size:.62rem;color:var(--muted);margin-top:-2px}.header-icon,.avatar,.mini-icon{background:rgba(255,255,255,.7);border:1px solid rgba(255,255,255,.8);box-shadow:0 8px 20px rgba(33,36,160,.08)}.header-icon{width:42px;height:42px;border-radius:14px;position:relative;font-size:20px;color:var(--ink)}.notif-dot{position:absolute}.header-icon i{position:absolute;right:8px;top:8px;width:7px;height:7px;background:var(--warn);border:2px solid #fff;border-radius:50%}
main{display:block}.screen{display:none;animation:screenIn .32s ease}.screen.active{display:block}@keyframes screenIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.greeting{display:flex;justify-content:space-between;align-items:center;margin:12px 0 18px}.greeting h1,.page-title h1{margin:2px 0 2px;font-size:1.7rem;line-height:1.2;letter-spacing:-.04em;color:var(--ink)}.greeting p,.page-title p{margin:0;color:var(--muted);font-size:.78rem}.eyebrow{font-size:.62rem!important;letter-spacing:.15em;font-weight:700;color:var(--blue)!important}.avatar{width:42px;height:42px;border-radius:50%;font-size:.68rem;font-weight:700;color:var(--ink)}
.cash-card{background:linear-gradient(145deg,var(--ink),#354fdf);border-radius:30px;padding:22px;color:#fff;box-shadow:0 22px 45px rgba(33,36,160,.22);position:relative;overflow:hidden}.cash-card:after{content:'';position:absolute;width:190px;height:190px;border-radius:50%;right:-90px;top:-100px;background:rgba(255,255,255,.1)}.cash-card-top{display:flex;justify-content:space-between;color:#c9d6ff;font-size:.73rem;position:relative;z-index:1}.mini-icon{width:30px;height:30px;border-radius:10px;background:rgba(255,255,255,.12);color:#fff;border:0;font-size:18px}.cash-card>strong{display:block;font-size:2.5rem;letter-spacing:-.055em;margin:7px 0 5px;position:relative;z-index:1}.cash-status{display:flex;gap:7px;align-items:center;font-size:.66rem;color:#dbe5ff;position:relative;z-index:1}.status-dot{width:7px;height:7px;border-radius:50%;background:#66e4bf;box-shadow:0 0 0 4px rgba(102,228,191,.12)}.divider{opacity:.4}.mini-chart{height:82px;margin-top:12px;position:relative;z-index:1;overflow:hidden}.mini-chart svg,.large-chart svg{width:100%;height:100%;display:block;overflow:hidden}.chart-line{fill:none;stroke:#fff;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round}.chart-area{fill:rgba(255,255,255,.12)}.chart-grid{stroke:rgba(255,255,255,.13);stroke-width:1}.buffer-line{stroke:rgba(240,204,255,.9);stroke-width:1.5;stroke-dasharray:5 5}.buffer-label,.low-mark text,.end-label,.x-label{font-family:Poppins,system-ui,sans-serif;font-size:10px;fill:var(--muted)}.mini-svg .buffer-line{stroke:rgba(255,255,255,.35)}.mini-svg .buffer-label,.mini-svg .low-mark text,.mini-svg .end-label,.mini-svg .x-label{display:none}.chart-point{fill:#fff;stroke:var(--blue);stroke-width:3}
.attention-card{width:100%;display:flex;align-items:center;gap:11px;text-align:left;margin:13px 0;background:#fff1eb;border:1px solid #ffd8cd;border-radius:20px;padding:14px;box-shadow:0 8px 25px rgba(224,87,58,.07)}.attention-icon{width:34px;height:34px;border-radius:11px;background:#ffe0d7;color:var(--warn);display:grid;place-items:center;font-weight:800;flex:none}.attention-copy{flex:1}.attention-copy b{display:block;font-size:.78rem;color:#9d3826}.attention-copy small{display:block;color:#7e7280;font-size:.63rem;line-height:1.45;margin-top:2px}.chevron{font-size:1.35rem;color:#c28b7f}
.section-head{display:flex;align-items:center;justify-content:space-between;margin:22px 2px 10px}.section-head h2{font-size:.88rem;margin:0;color:var(--navy)}.text-btn{font-size:.68rem;color:var(--blue);font-weight:700;background:none}.quick-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.quick-card{background:rgba(255,255,255,.82);border:1px solid rgba(255,255,255,.9);border-radius:24px;padding:14px;text-align:left;box-shadow:0 7px 20px rgba(33,36,160,.05)}.quick-icon{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;font-weight:700;font-size:1.05rem;margin-bottom:9px}.quick-icon.blue{background:#e2edff;color:var(--blue)}.quick-icon.purple{background:#eae4ff;color:#6a55dc}.quick-icon.pink{background:var(--pink);color:#8a45b0}.quick-icon.navy{background:#dce5f2;color:var(--navy)}.quick-card b{display:block;font-size:.76rem}.quick-card small{display:block;color:var(--muted);font-size:.59rem;margin-top:2px}
.activity-list,.event-list,.document-list,.signal-list{display:grid;gap:9px}.activity-item,.event-item,.doc-item,.signal-item,.notification-item{display:flex;align-items:center;gap:11px;background:rgba(255,255,255,.74);border:1px solid rgba(255,255,255,.9);border-radius:17px;padding:12px}.activity-icon,.doc-icon{width:34px;height:34px;border-radius:10px;background:#e8f1ff;color:var(--ink);display:grid;place-items:center;flex:none}.activity-item b,.event-item b,.doc-item b,.signal-item b,.notification-item b{display:block;font-size:.72rem}.activity-item small,.event-item small,.doc-item small,.signal-item small,.notification-item small{display:block;color:var(--muted);font-size:.58rem;margin-top:2px}.amount{margin-left:auto;font-size:.68rem;font-weight:700}.amount.out{color:var(--warn)}.amount.in{color:var(--green)}
.page-title{margin:13px 2px 18px}.page-title h1{font-size:1.7rem}.page-title>p:last-child{max-width:44ch;line-height:1.55}.segmented{display:flex;background:rgba(255,255,255,.55);border-radius:15px;padding:4px;margin-bottom:11px}.segmented button{flex:1;padding:8px;border-radius:11px;background:transparent;color:var(--muted);font-size:.68rem;font-weight:700}.segmented button.active{background:#fff;color:var(--ink);box-shadow:0 3px 10px rgba(33,36,160,.08)}.white-card{background:rgba(255,255,255,.88);border:1px solid rgba(255,255,255,.95);border-radius:22px;padding:16px;box-shadow:0 9px 25px rgba(33,36,160,.06);margin-bottom:11px}.card-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.card-title h2{font-size:.85rem;margin:0}.card-title span{font-size:.61rem;color:var(--muted)}.card-title strong{display:block;font-size:1.45rem;color:var(--ink);letter-spacing:-.04em}.pill{padding:5px 9px;border-radius:99px;font-size:.58rem;font-weight:700}.pill.warn{background:#fff0e9;color:var(--warn)}.pill.ok{background:#e7f8f1;color:var(--green)}.large-chart{height:280px;min-height:240px;overflow:hidden;border-radius:16px}.large-chart .chart-line{stroke:var(--blue);stroke-width:3.2}.large-chart .chart-area{fill:rgba(47,123,255,.1)}.large-chart .chart-grid{stroke:#dce7f6}.large-chart .chart-point{fill:#fff;stroke:var(--blue)}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:11px}.metric{background:rgba(255,255,255,.64);border:1px solid rgba(255,255,255,.8);border-radius:16px;padding:11px}.metric span{display:block;font-size:.55rem;color:var(--muted)}.metric b{display:block;font-size:.72rem;margin-top:4px;color:var(--ink)}.event-item .date{font-size:.58rem;font-weight:700;color:var(--blue);width:34px}.finance-banner{background:linear-gradient(135deg,var(--navy),#162e58);color:#fff;border-radius:28px;padding:17px;margin-top:11px;box-shadow:var(--shadow)}.finance-banner h2{margin:4px 0;font-size:1rem}.finance-banner p{font-size:.61rem;line-height:1.55;color:#c8d6ef;margin:5px 0 13px}.finance-banner .eyebrow{color:#78a9ff!important}
.upload-hero{width:100%;display:flex;align-items:center;gap:11px;background:linear-gradient(135deg,#fff,#eef6ff);border:1.5px dashed #a9c7ed;border-radius:21px;padding:15px;text-align:left;margin-bottom:12px}.upload-symbol{width:40px;height:40px;border-radius:13px;background:#e4efff;color:var(--blue);display:grid;place-items:center;font-size:1.25rem}.upload-hero div{flex:1}.upload-hero b,.upload-hero small{display:block}.upload-hero b{font-size:.75rem}.upload-hero small{font-size:.58rem;color:var(--muted);margin-top:2px}.filter-row{display:flex;gap:7px;overflow:auto;margin-bottom:12px}.filter{white-space:nowrap;background:rgba(255,255,255,.6);border-radius:99px;padding:7px 11px;color:var(--muted);font-size:.6rem;font-weight:700}.filter.active{background:var(--ink);color:#fff}.doc-icon.statement{background:#e2edff}.doc-icon.invoice{background:var(--pink)}.doc-icon.receipt{background:#e7f7f0}.doc-meta{flex:1}.doc-item>span:last-child{font-size:1rem;color:#b1bdd3}.tax-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:13px}.tax-summary>div{background:rgba(255,255,255,.72);border-radius:17px;padding:11px}.tax-summary span{display:block;font-size:.55rem;color:var(--muted)}.tax-summary b{display:block;margin-top:3px;color:var(--ink);font-size:.75rem}.signal-item{align-items:flex-start}.signal-mark{width:36px;height:36px;border-radius:11px;background:var(--pink);color:#8a45b0;display:grid;place-items:center;flex:none}.signal-copy{flex:1}.signal-copy b{font-size:.72rem}.signal-copy small{line-height:1.45}.signal-amount{font-size:.67rem;font-weight:700;color:var(--ink)}.report-button{width:100%;display:flex;align-items:center;gap:10px;text-align:left}.report-button div{flex:1}.report-icon{width:36px;height:36px;border-radius:11px;background:#e4efff;color:var(--blue);display:grid;place-items:center}.report-button b,.report-button small{display:block}.report-button b{font-size:.72rem}.report-button small{font-size:.58rem;color:var(--muted);margin-top:2px}.disclaimer{background:#f6f8fc;border-radius:17px;padding:12px;margin-top:10px}.disclaimer b{font-size:.64rem}.disclaimer p{font-size:.58rem;color:var(--muted);line-height:1.5;margin:4px 0 0}.finance-card{background:linear-gradient(145deg,#2124a0,#2f7bff);color:#fff;border-radius:25px;padding:20px;margin-bottom:11px;box-shadow:0 20px 45px rgba(47,123,255,.2)}.finance-card .eyebrow{color:#c9d8ff!important}.finance-card>strong{display:block;font-size:2.25rem;letter-spacing:-.05em;margin:3px 0 15px}.gap-row{display:flex;justify-content:space-between;border-top:1px solid rgba(255,255,255,.18);padding:10px 0 0;margin-top:8px;font-size:.62rem;color:#d6e0ff}.gap-row b{color:#fff}.steps{list-style:none;padding:0;margin:13px 0 0;display:grid;gap:13px}.steps li{display:flex;gap:10px}.steps li>span{width:25px;height:25px;border-radius:50%;background:#e4efff;color:var(--blue);display:grid;place-items:center;font-size:.6rem;font-weight:800;flex:none}.steps b,.steps small{display:block}.steps b{font-size:.7rem}.steps small{font-size:.58rem;color:var(--muted);margin-top:2px}.consent-card{background:#fff5f1;border:1px solid #ffe0d7;border-radius:21px;padding:15px}.check{display:flex;gap:9px;align-items:flex-start}.check input{position:absolute;opacity:0}.check span{width:20px;height:20px;border:1.5px solid #b9a9a5;border-radius:6px;background:#fff;flex:none}.check input:checked+span{background:var(--blue);border-color:var(--blue);box-shadow:inset 0 0 0 4px #fff}.check p{font-size:.61rem;line-height:1.5;margin:0;color:#6c5d5a}.primary{background:var(--ink);color:#fff;border-radius:14px;padding:12px 16px;font-size:.68rem;font-weight:700;box-shadow:0 8px 18px rgba(33,36,160,.18)}.primary.full{width:100%;margin-top:12px}.secondary{background:#fff;border:1px solid var(--line);border-radius:14px;padding:11px 16px;font-size:.68rem;font-weight:700}.fineprint{text-align:center;color:#8a7772;font-size:.54rem;margin:9px 0 0}.settings-list{display:grid;gap:8px}.settings-list button{background:#fff;border-radius:18px;padding:15px;text-align:left;display:flex;justify-content:space-between;gap:10px;box-shadow:0 6px 18px rgba(33,36,160,.05)}.settings-list span{font-size:.7rem}.settings-list b{font-size:.6rem;color:var(--muted)}.brand-note{display:flex;align-items:center;gap:11px;margin:22px 2px;padding:14px;background:rgba(255,255,255,.58);border-radius:18px}.brand-note img{width:43px;height:43px;border-radius:13px}.brand-note b,.brand-note small{display:block}.brand-note b{font-size:.78rem;color:var(--ink)}.brand-note small{font-size:.59rem;color:var(--muted)}
.fab{position:fixed;left:50%;bottom:96px;transform:translateX(-50%);width:90px;height:90px;border-radius:28px;background:var(--blue);color:#fff;box-shadow:0 16px 34px rgba(47,123,255,.38),0 0 0 6px rgba(223,238,255,.9);z-index:30;font-size:1.65rem;border:5px solid #edf5ff;transition:box-shadow .2s ease,filter .2s ease}.fab span{display:grid;place-items:center;width:100%;height:100%;font-size:2.7rem;line-height:1;transition:transform .22s ease}.fab:active{transform:translateX(-50%) scale(.98)}.fab.open span{transform:rotate(45deg)}.fab:focus-visible{outline:none;box-shadow:0 16px 34px rgba(47,123,255,.38),0 0 0 6px rgba(223,238,255,.9),0 0 0 9px rgba(47,123,255,.18)}.bottom-nav{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);width:min(920px,calc(100% - 24px));height:94px;background:rgba(2,27,58,.98);border-radius:30px;display:grid;grid-template-columns:1fr 1fr 1fr 1fr 1fr;align-items:center;z-index:29;box-shadow:0 18px 42px rgba(2,27,58,.3);padding:0 14px}.nav-item{background:none;color:#9aabc5;display:grid;justify-items:center;align-content:center;gap:7px;font-size:30px;padding:8px 8px;min-height:78px;border-radius:20px;transition:background .18s ease,color .18s ease}.nav-item small{font-size:.76rem;font-weight:600;letter-spacing:.01em}.nav-spacer{background:none;min-width:0}.nav-item.active{color:#fff;background:rgba(47,123,255,.17);box-shadow:inset 0 0 0 1px rgba(114,165,255,.14)}.nav-item:focus-visible{outline:none;box-shadow:inset 0 0 0 2px rgba(114,165,255,.7)}.nav-icon{width:34px;height:34px;display:grid;place-items:center}.nav-icon svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}.nav-item.active .nav-icon{color:#72a5ff}.nav-item.active small{color:#fff}.sheet-backdrop{position:fixed;inset:0;background:rgba(2,27,58,.5);z-index:40;opacity:0;pointer-events:none;transition:.25s}.sheet-backdrop.show{opacity:1;pointer-events:auto}.sheet{position:fixed;left:50%;bottom:0;transform:translate3d(-50%,105%,0);width:min(680px,calc(100% - 20px));max-height:88vh;overflow:auto;background:#fff;border-radius:28px 28px 0 0;padding:12px 20px 28px;z-index:41;box-shadow:0 -20px 60px rgba(2,27,58,.2);transition:transform .3s ease;will-change:transform}.sheet.open{transform:translate3d(-50%,0,0)}.sheet-handle{width:38px;height:4px;background:#d7deeb;border-radius:99px;margin:2px auto 14px}.sheet-close{position:absolute;right:18px;top:12px;background:#f2f5fa;width:31px;height:31px;border-radius:10px;color:#72809b;font-size:1.1rem}.sheet h2{color:var(--ink);font-size:1.2rem;margin:3px 0}.sheet .muted{font-size:.68rem;color:var(--muted)}.dropzone{margin-top:15px;border:1.7px dashed #a9c7ed;border-radius:20px;padding:22px 10px;display:grid;justify-items:center;text-align:center;cursor:pointer;background:#f8fbff}.drop-icon{width:44px;height:44px;border-radius:14px;background:#e4efff;color:var(--blue);display:grid;place-items:center;font-size:1.25rem;margin-bottom:7px}.dropzone b{font-size:.74rem}.dropzone small{font-size:.58rem;color:var(--muted);margin-top:3px}.selected{font-size:.62rem;color:var(--muted);padding:8px 2px}.upload-message{font-size:.62rem;color:var(--green);min-height:18px}.report-body{display:grid;gap:8px;margin:15px 0}.report-row{background:#f7f9fd;border-radius:14px;padding:11px}.report-row b,.report-row small{display:block}.report-row b{font-size:.68rem}.report-row small{font-size:.57rem;color:var(--muted);margin-top:2px}.notification-item{margin-top:10px;align-items:flex-start}.notification-item>div{flex:1}.toast{position:fixed;left:50%;bottom:142px;transform:translate(-50%,18px);background:var(--navy);color:#fff;padding:10px 15px;border-radius:13px;font-size:.62rem;opacity:0;pointer-events:none;z-index:60;transition:.25s;box-shadow:0 10px 30px rgba(2,27,58,.25)}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(min-width:700px){body{padding:18px 0}.app{background:rgba(255,255,255,.35);border:1px solid rgba(255,255,255,.65);border-radius:34px;box-shadow:0 30px 80px rgba(33,36,160,.12);padding:0 30px 132px}.app>main{max-width:760px;margin:0 auto}.app-header{height:88px}.bottom-nav{bottom:24px;height:96px}.fab{bottom:108px}.sheet{border-radius:28px;bottom:24px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* Finvia production polish */
.header-icon{width:42px;height:42px;border-radius:14px;background:rgba(255,255,255,.72);display:grid;place-items:center;color:var(--navy);position:relative;border:1px solid rgba(33,36,160,.08);box-shadow:0 6px 18px rgba(33,36,160,.06)}
.header-icon .bell{width:22px;height:22px;display:grid;place-items:center;color:var(--ink)}
.header-icon .bell svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.chart-note{font-size:.58rem;color:var(--muted);line-height:1.45;margin:8px 2px 0}
.fab{width:82px;height:82px;bottom:103px;border-radius:25px;border:4px solid #edf5ff;box-shadow:0 18px 36px rgba(47,123,255,.32),0 0 0 5px rgba(223,238,255,.88)}
.fab span{font-size:2.45rem;font-weight:300}
.bottom-nav{height:88px;border-radius:28px;padding:0 10px;grid-template-columns:1fr 1fr 1fr 1fr 1fr}
.nav-item{min-height:72px;padding:7px 6px;gap:5px}
.nav-item small{font-size:.7rem}
.nav-icon,.nav-icon svg{width:29px;height:29px}
.nav-spacer{pointer-events:none}
.sheet{padding-bottom:max(28px,env(safe-area-inset-bottom));}
@media(max-width:699px){.bottom-nav{width:calc(100% - 20px);bottom:10px}.fab{bottom:87px}.app{padding-bottom:125px}.sheet{width:calc(100% - 12px);max-height:86vh}}
@media(min-width:700px){.fab{bottom:102px}.bottom-nav{bottom:22px}.app{padding-bottom:130px}}


/* Forecast + Tax Centre layout fixes */
.large-chart{position:relative;background:#fff}
.large-svg{overflow:visible!important}
.large-chart .low-mark circle{fill:#021b3a;stroke:#fff;stroke-width:2.5}
.large-chart .low-mark text,.large-chart .end-label{fill:#63739a;font-size:10px;font-weight:500}
.large-chart .x-label{fill:#63739a;font-size:10px}
.report-button{margin-top:12px;margin-bottom:11px;min-height:74px;box-sizing:border-box;position:relative;z-index:1;border:1px solid rgba(255,255,255,.95);appearance:none;-webkit-appearance:none;padding:14px 16px}
.signal-list + .report-button{margin-top:13px}
.report-button:hover{background:#fff}
@media(max-width:699px){.large-chart{height:270px}.report-button{min-height:78px}}

/* ===== v1.3: cash outlook, available cash, laptop layout ===== */
.pos{color:var(--green)}.neg{color:var(--warn)}
.upload-message.error{color:var(--warn)}.upload-message.ok{color:var(--green)}
.upload-message{font-size:.72rem;line-height:1.45}
.empty{font-size:.7rem;color:var(--muted);line-height:1.5;padding:6px 2px}

/* Home */
.home-grid{display:grid;gap:0}
.cash-card{cursor:pointer;transition:transform .15s ease,box-shadow .2s ease}
.cash-card:hover{box-shadow:0 26px 50px rgba(33,36,160,.28)}
.cash-card:focus-visible{outline:3px solid rgba(47,123,255,.5);outline-offset:3px}
.cash-more{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:11px;border-top:1px solid rgba(255,255,255,.16);font-size:.68rem;color:#dbe5ff;position:relative;z-index:1}
.cash-more span:last-child{font-size:1.2rem;line-height:1}
.mini-chart{height:88px}

/* Cash outlook */
.cf-grid{display:grid;gap:0}
.cf-card{padding:18px}
.cf-hero{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px}
.cf-hero .muted{display:block;font-size:.7rem;color:var(--muted)}
.cf-hero strong{display:block;font-size:2rem;letter-spacing:-.045em;color:var(--ink);margin-top:2px;line-height:1.15}
.cf-delta{display:block;font-size:.72rem;font-weight:600;margin-top:2px}
.pill{font-size:.66rem;padding:6px 11px}
.large-chart{position:relative;height:auto!important;min-height:0;overflow:visible;background:transparent;border-radius:0;touch-action:pan-y}
.large-chart svg{display:block;width:100%;height:auto;overflow:visible}
.large-chart .g{stroke:#e3ecf8;stroke-width:1}
.large-chart .yl,.large-chart .xl,.large-chart .bl,.large-chart .lowm text{font-family:Poppins,system-ui,sans-serif;font-size:11px;fill:var(--muted)}
.large-chart .bl{fill:#a45ac8;font-weight:600}
.large-chart .lowm text{fill:var(--navy);font-weight:600}
.large-chart .band{fill:rgba(47,123,255,.1);stroke:none}
.large-chart .area{fill:url(#gArea);stroke:none}
.large-chart .ln{fill:none;stroke:var(--blue);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.large-chart .buf{stroke:#c58be8;stroke-width:1.6;stroke-dasharray:6 5}
.large-chart .ev{stroke:#fff;stroke-width:2}
.large-chart .ev.in{fill:var(--green)}.large-chart .ev.out{fill:var(--warn)}
.large-chart .lowm circle{fill:var(--navy);stroke:#fff;stroke-width:2.5}
.large-chart .cl{stroke:var(--ink);stroke-width:1;opacity:.35}
.large-chart .cd{fill:var(--ink);stroke:#fff;stroke-width:2.5}
.large-chart .hit{cursor:crosshair}
.tip{position:absolute;display:none;pointer-events:none;background:var(--navy);color:#fff;border-radius:12px;padding:8px 11px;font-size:.7rem;line-height:1.4;box-shadow:0 10px 26px rgba(2,27,58,.28);white-space:nowrap;z-index:3}
.tip b,.tip span{display:block}.tip b{font-size:.62rem;color:#a9cbf7;font-weight:600}.tip span{font-size:.9rem;font-weight:700}
.tip small{display:block;font-size:.62rem;margin-top:2px;color:#cfe0ff}.tip small.in{color:#7ee8c4}.tip small.out{color:#ffb3a1}
.chart-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:10px 2px 0;font-size:.62rem;color:var(--muted)}
.chart-legend span{display:inline-flex;align-items:center;gap:6px}
.chart-legend i{display:inline-block;width:14px;height:3px;border-radius:2px;background:var(--blue)}
.chart-legend .lg-band{height:9px;background:rgba(47,123,255,.18)}
.chart-legend .lg-buf{background:none;border-top:2px dashed #c58be8;height:0}
.chart-legend .lg-in,.chart-legend .lg-out{width:9px;height:9px;border-radius:50%}
.chart-legend .lg-in{background:var(--green)}.chart-legend .lg-out{background:var(--warn)}
.chart-note{font-size:.68rem;line-height:1.55;margin:10px 2px 0}
.metric-grid{grid-template-columns:repeat(2,1fr);gap:10px}
.metric{padding:13px 14px}
.metric span{font-size:.64rem}.metric b{font-size:1.02rem;margin-top:5px;letter-spacing:-.02em}
.metric em{display:block;font-style:normal;font-size:.6rem;color:var(--muted);margin-top:2px}
.card-title h2{font-size:.95rem}.card-title span{font-size:.66rem}
.week-bars{display:grid;gap:12px}
.wk{display:grid;grid-template-columns:1fr auto;grid-template-areas:"l b" "t t" "e e";gap:5px 10px;align-items:center}
.wk-l{grid-area:l;font-size:.72rem;font-weight:600;color:var(--navy)}
.wk b{grid-area:b;font-size:.78rem}
.wk-track{grid-area:t;height:9px;background:#eaf1fb;border-radius:99px;overflow:hidden}
.wk-track i{display:block;height:100%;border-radius:99px}
.wk-track i.pos{background:linear-gradient(90deg,#4cc9a0,var(--green))}.wk-track i.neg{background:linear-gradient(90deg,#f19a85,var(--warn))}
.wk small{grid-area:e;font-size:.62rem;color:var(--muted)}
.insight-list{display:grid;gap:12px}
.insight{display:flex;gap:11px;align-items:flex-start}
.insight i{width:9px;height:9px;border-radius:50%;margin-top:6px;flex:none;background:var(--blue)}
.insight.warn i{background:var(--warn)}.insight.ok i{background:var(--green)}
.insight b{display:block;font-size:.76rem}.insight small{display:block;font-size:.66rem;color:var(--muted);line-height:1.5;margin-top:2px}
.event-item{padding:12px 14px}
.event-item b{font-size:.8rem}.event-item small{font-size:.66rem;line-height:1.45}
.event-item .date{width:38px;text-align:center;font-size:.58rem;font-weight:700;color:var(--blue);text-transform:uppercase;line-height:1.1}
.event-item .date b{display:block;font-size:1.05rem;color:var(--ink)}
.amount{font-size:.78rem}
.activity-item b{font-size:.8rem}.activity-item small{font-size:.66rem}

/* Available cash sheet */
.sheet-lg{width:min(720px,calc(100% - 12px));max-height:92vh}
.cs-top{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin:4px 0 0}
.cs-top strong{font-size:2.3rem;letter-spacing:-.05em;color:var(--ink);line-height:1.1}
.cs-delta{font-size:.78rem;font-weight:600}
.sheet-lg .muted{font-size:.72rem;margin:2px 0 8px}
.cs-chart{margin:6px -4px 4px;min-height:120px}.cs-chart svg{display:block;width:100%;height:auto}
.cs-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:8px 0 4px}
.cs-stat{background:#f4f8ff;border-radius:16px;padding:12px 14px}
.cs-stat span{display:block;font-size:.64rem;color:var(--muted)}.cs-stat b{display:block;font-size:1.05rem;color:var(--ink);margin:3px 0 1px;letter-spacing:-.02em}.cs-stat small{font-size:.58rem;color:var(--muted)}
.cs-h{font-size:.82rem;color:var(--navy);margin:20px 0 10px}
.cs-flow,.cs-cats{display:grid;gap:11px}
.fl,.cat{display:grid;grid-template-columns:104px 1fr 92px;gap:10px;align-items:center;font-size:.72rem}
.fl>div,.cat>div{height:9px;background:#eaf1fb;border-radius:99px;overflow:hidden}
.fl i,.cat i{display:block;height:100%;border-radius:99px}
.fl i.pos{background:var(--green)}.fl i.neg{background:var(--warn)}.cat i{background:linear-gradient(90deg,var(--blue),var(--ink))}
.fl b,.cat b{font-size:.74rem;text-align:right}
.cs-actions{display:flex;gap:10px;margin-top:22px}.cs-actions .primary,.cs-actions .secondary{flex:1;padding:13px 16px;font-size:.78rem}
.sheet .secondary{border:1px solid var(--line)}
.dropzone b,.selected{word-break:break-all}

/* Laptop */
@media(min-width:1000px){
  html{font-size:17px}
  .app{width:min(100%,1180px);padding:0 40px 140px}
  .app>main{max-width:1060px}
  .home-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);grid-template-areas:"cash quick" "attn quick" "act act";column-gap:28px}
  .hg-cash{grid-area:cash}.hg-attn{grid-area:attn}.hg-quick{grid-area:quick}.hg-act{grid-area:act}
  .hg-quick .section-head{margin-top:0}
  .hg-act .activity-list{grid-template-columns:repeat(3,1fr)}
  .mini-chart{height:120px}
  .cf-grid{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);column-gap:16px;align-items:start}
  .segmented{max-width:420px}
  .sheet-lg{width:min(760px,calc(100% - 40px))}
  .cs-stats{grid-template-columns:repeat(4,1fr)}
}
@media(min-width:700px) and (max-width:999px){
  .app>main{max-width:860px}
  .cf-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);column-gap:14px;align-items:start}
  .home-grid{grid-template-columns:1fr 1fr;grid-template-areas:"cash cash" "attn attn" "quick act";column-gap:18px}
  .hg-cash{grid-area:cash}.hg-attn{grid-area:attn}.hg-quick{grid-area:quick}.hg-act{grid-area:act}
}
@media(max-width:420px){
  .cf-hero strong{font-size:1.75rem}.cs-top strong{font-size:2rem}
  .fl,.cat{grid-template-columns:88px 1fr auto}
  .chart-legend{font-size:.58rem}
}
html.lock{overflow:hidden}
.intro{position:fixed;inset:0;z-index:100;background:var(--bg);display:grid;place-content:center;justify-items:center;gap:24px;overflow:hidden;border-radius:0 0 50% 50%/0 0 9vh 9vh;animation:introOut .85s 2.65s cubic-bezier(.7,0,.2,1) forwards}
.intro.skip{animation-delay:0s;animation-duration:.5s}
.intro:before,.intro:after{content:"";position:absolute;border-radius:50%;animation:introBlob 1.4s cubic-bezier(.2,.7,.2,1) both}
.intro:before{width:62vmin;height:62vmin;left:-14vmin;bottom:-22vmin;background:var(--panel);opacity:.7}
.intro:after{width:34vmin;height:34vmin;right:-6vmin;top:-10vmin;background:var(--pink);opacity:.75;animation-delay:.15s}
.in-c{position:relative;display:flex;align-items:center;height:clamp(84px,15vw,128px)}
.in-c img{height:100%;width:auto;display:block}
.in-mark{animation:inMark .9s .15s cubic-bezier(.2,1.4,.4,1) both}
.in-word{animation:inWord .9s .55s cubic-bezier(.2,.7,.2,1) both}
.in-tag{position:relative;margin:0;font-weight:500;font-size:clamp(14px,2vw,18px);color:#4a5aa8;animation:introUp .7s 1.1s both}
.in-bar{position:relative;width:min(220px,52vw);height:4px;border-radius:4px;background:rgba(33,36,160,.14);overflow:hidden}
.in-bar i{display:block;height:100%;background:var(--blue);transform-origin:left;animation:introBar 2.2s .3s cubic-bezier(.4,0,.2,1) both}
.in-skip{position:absolute;right:24px;bottom:max(24px,env(safe-area-inset-bottom));z-index:1;background:transparent;border:2px solid var(--panel);color:var(--ink);border-radius:999px;padding:7px 18px;font:600 13px Poppins,sans-serif;cursor:pointer;transition:background .15s}
.in-skip:hover{background:var(--panel)}
@keyframes introOut{to{transform:translateY(-104%);visibility:hidden}}
@keyframes inMark{from{opacity:0;transform:scale(.4) rotate(-16deg)}}
@keyframes inWord{from{opacity:0;transform:translateX(-30px);clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes introBlob{from{transform:scale(.2);opacity:0}}
@keyframes introBar{from{transform:scaleX(0)}}
@keyframes introUp{from{opacity:0;transform:translateY(26px)}}
#app:not(.ready){display:none!important}

/* iOS "Add to Home Screen" guide */
.sheet-ios{bottom:76px;max-height:calc(100vh - 100px);border-radius:28px;transform:translate3d(-50%,calc(100% + 120px),0);visibility:hidden;pointer-events:none;transition:transform .3s ease,visibility 0s linear .3s}
.sheet-ios.open{transform:translate3d(-50%,0,0);visibility:visible;pointer-events:auto;transition:transform .3s ease,visibility 0s}
.ios-steps{list-style:none;margin:14px 0 6px;padding:0;display:grid;gap:10px}
.ios-steps li{display:flex;align-items:center;gap:12px;background:#f4f8ff;border:1px solid var(--line);border-radius:17px;padding:12px}
.ios-n{flex:none;width:28px;height:28px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:.75rem;font-weight:700}
.ios-steps div{flex:1;min-width:0}
.ios-steps b{display:block;font-size:.8rem;color:var(--navy);line-height:1.35}
.ios-steps small{display:block;font-size:.66rem;color:var(--muted);line-height:1.45;margin-top:2px}
.ios-ic{flex:none;width:38px;height:38px;border-radius:12px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;color:var(--blue)}
.ios-ic svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.ios-ic.ok{color:var(--green)}
.ios-warn{font-size:.68rem;background:#fff1eb;color:var(--warn);border-radius:12px;padding:8px 11px;margin:10px 0 0}
.sheet-ios .secondary.full{width:100%;margin-top:8px;padding:13px;border-radius:14px;background:#fff;font-size:.78rem;font-weight:700;color:var(--ink)}
/* bouncing arrow pointing at Safari's Share button; sits right after the sheet in the DOM */
.ios-arrow{position:fixed;left:50%;bottom:max(4px,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:42;display:flex;flex-direction:column;align-items:center;gap:0;color:#fff;font-size:.62rem;font-weight:700;letter-spacing:.03em;opacity:0;pointer-events:none;transition:opacity .25s;animation:iosBounce 1.1s ease-in-out infinite}
.ios-arrow svg{width:34px;height:34px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 2px 6px rgba(2,27,58,.45))}
.ios-arrow span{background:var(--blue);padding:2px 10px;border-radius:99px;box-shadow:0 4px 12px rgba(47,123,255,.4)}
.sheet-ios.open~.ios-arrow{opacity:1}
/* iPad: Share lives at the top-right, so point up there */
.ios-arrow.up{top:max(6px,env(safe-area-inset-top));bottom:auto;left:auto;right:64px;transform:none;flex-direction:column-reverse;animation:iosBounceUp 1.1s ease-in-out infinite}
.ios-arrow.up svg{transform:rotate(180deg)}
.ios-arrow.hide{display:none}
@keyframes iosBounce{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,9px)}}
@keyframes iosBounceUp{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
/* iOS 26 Safari: Share is inside the bottom-right "..." menu, so point there */
.ios-arrow.right{left:auto;right:max(10px,env(safe-area-inset-right));transform:none;align-items:center;animation:iosBounceY 1.1s ease-in-out infinite}
@keyframes iosBounceY{0%,100%{transform:translateY(0)}50%{transform:translateY(9px)}}
/* Closed sheets must be fully hidden */
.sheet:not(.open){transform:translate3d(-50%,calc(100% + 140px),0);visibility:hidden;pointer-events:none;transition:transform .3s ease,visibility 0s linear .3s}
.sheet.open{visibility:visible}
