:root{--bg:#f1f0f7;--card:#fff;--soft:#f7f7fa;--text:#191919;--muted:#8e8e99;--line:#e5e3f0;--pos:#71917d;--neg:#b87872}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.45 Arial,sans-serif}button,input,select{font:inherit;color:inherit}button{cursor:pointer}.app{display:flex;min-height:100vh}.side{width:76px;background:var(--card);padding:20px 12px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;border-right:1px solid var(--line);transition:.25s;z-index:2}.side.expanded{width:210px}.side button{display:flex;align-items:center;gap:13px;text-decoration:none;color:var(--muted);padding:10px;border-radius:8px;white-space:nowrap;border:0;background:transparent;width:100%;text-align:left;margin:3px 0}.brand{color:var(--text)!important;font-weight:700;margin-bottom:37px!important}.brand b{background:var(--text);color:var(--card);width:31px;height:31px;display:grid;place-items:center;border-radius:8px;font:20px Georgia,serif}.side button.active,.side button:hover{background:var(--soft);color:var(--text)}.side span{opacity:0;max-width:0;overflow:hidden;transition:.2s}.expanded span{opacity:1;max-width:140px}.bottom{margin-top:auto}.bottom button{font-size:17px}main{width:min(1440px,100%);margin:auto;padding:24px 52px 60px}.notice{font-size:12px;background:#e7e4f1;border:1px solid #ddd9ea;color:#4d4a61;border-radius:8px;padding:9px 12px;margin-bottom:19px}.view{display:none}.view.active{display:block}header,.hero,.heading,.donutrow{display:flex;justify-content:space-between;gap:22px}header{align-items:flex-start;margin-bottom:22px}.eyebrow{font:10px/1.2 monospace;letter-spacing:.11em;color:var(--muted);margin:0 0 8px}h1{font:600 clamp(28px,3vw,40px)/1.1 Georgia,serif;margin:0}h2{font-size:17px;margin:0}.sub{color:var(--muted);margin:8px 0 0}.plain,.month{border:0;background:transparent;padding:8px 10px;border-radius:7px}.plain:hover{background:var(--soft)}.primary{border:0;border-radius:7px;padding:10px 14px;background:var(--text);color:#fff;font-weight:bold}.hero,.panel,.metrics article,.account-card,.budget-card{background:var(--card);box-shadow:0 10px 30px #231d370e;border-radius:12px}.hero{align-items:end;padding:26px 28px;margin-bottom:16px}.hero strong{font:600 clamp(35px,5vw,54px)/1 Georgia,serif;display:block;margin:4px 0 10px}.pos{color:var(--pos);margin:0}.net{border-left:1px solid var(--line);padding-left:26px;min-width:180px}.net b{font:22px Georgia,serif;display:block}.net small,.metrics small{color:var(--muted);font-size:12px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px}.metrics article{padding:18px 20px;min-height:112px}.metrics b{display:block;font-size:21px;margin:4px 0 7px}.metrics .quiet{background:var(--soft);box-shadow:none}.track{display:block;background:var(--line);height:5px;margin:13px 0 6px;border-radius:4px;overflow:hidden}.track i{display:block;height:100%;background:var(--pos);width:0}.grid{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}.panel{padding:22px}.legend{font-size:11px;color:var(--pos)}.legend span{color:var(--neg);margin-left:14px}.bars{height:170px;display:flex;gap:11px;align-items:end;border-bottom:1px solid var(--line)}.barset{height:100%;flex:1;display:grid;grid-template-columns:1fr 1fr;gap:3px;align-items:end;position:relative;padding-bottom:20px}.bar{min-height:3px;border-radius:4px 4px 0 0}.income{background:var(--pos)}.expense{background:#dfbbb6}.barset small{position:absolute;bottom:1px;left:50%;transform:translateX(-50%);font:10px monospace;color:var(--muted)}.donutrow{align-items:center;margin-top:19px}.donut{width:145px;height:145px;border-radius:50%;display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative}.donut:after{content:'';background:var(--card);width:92px;height:92px;border-radius:50%;position:absolute}.donut b,.donut small{z-index:1}.donut b{font-size:15px}.donut small{font-size:10px;color:var(--muted)}ul{padding:0;margin:0;list-style:none;flex:1}li{display:flex;justify-content:space-between;border-bottom:1px solid var(--soft);padding:6px 0;font-size:12px}li i{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}.tx,.payment{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid var(--soft)}.tx:last-child,.payment:last-child{border:0}.badge,.paydate{width:32px;height:32px;border-radius:8px;background:var(--soft);display:grid;place-items:center}.tx p,.payment p{margin:0;font-weight:bold;font-size:13px}.tx small,.payment small{font-size:11px;color:var(--muted)}.money{font:12px monospace}.paydate{height:35px;text-align:center;font:10px/1 monospace}.paydate b{font-size:13px}.toolbar{display:flex;gap:10px;margin-bottom:16px;align-items:center}.toolbar input{flex:1}.toolbar input,.toolbar select{padding:10px;border:1px solid var(--line);border-radius:7px;background:var(--soft)}.toolbar span{color:var(--muted);font-size:12px}.tablewrap{overflow:auto;padding:0}table{border-collapse:collapse;width:100%;min-width:680px}th,td{padding:14px 18px;text-align:left;border-bottom:1px solid var(--soft);font-size:13px}th{font:10px monospace;letter-spacing:.08em;color:var(--muted)}.right{text-align:right}.type{font-size:11px;padding:4px 7px;border-radius:99px;background:var(--soft);color:var(--muted)}.income-tag{color:var(--pos)}.expense-tag{color:var(--neg)}.row-delete{border:0;background:transparent;color:var(--muted);font-size:17px}.account-grid,.budget-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.account-card,.budget-card{padding:20px}.account-card .symbol{width:38px;height:38px;display:grid;place-items:center;border-radius:10px;background:var(--soft);margin-bottom:16px}.account-card strong,.budget-card strong,.liability strong{display:block;font:25px Georgia,serif;margin:5px 0}.account-card small{color:var(--muted)}.liability{margin-top:16px}.budget-card.over .track i{background:var(--neg)}.budget-card p{margin:0}.budget-card .budget-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:12px;margin-top:10px}.placeholder{padding:50px;background:var(--card);border-radius:12px;min-height:300px}dialog{border:0;border-radius:12px;width:min(510px,calc(100vw - 30px));padding:24px;background:var(--card);color:var(--text);box-shadow:0 25px 70px #0003}dialog::backdrop{background:#19191955}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:20px 0}.formgrid label{display:grid;gap:6px;font-size:12px;font-weight:bold}.formgrid .full{grid-column:1/-1}.formgrid input,.formgrid select{padding:10px;border:1px solid var(--line);border-radius:7px;background:var(--soft)}menu{margin:0;padding:0;display:flex;justify-content:end;gap:8px}.cancel{padding:9px 13px;background:transparent;border:1px solid var(--line);border-radius:7px}#toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,100px);opacity:0;transition:.25s;background:var(--text);color:#fff;padding:10px 14px;border-radius:7px;font-size:12px;z-index:5}#toast.show{opacity:1;transform:translate(-50%,0)}body.dark{--bg:#1d1c23;--card:#27262e;--soft:#302f38;--text:#f4f3f7;--muted:#aaa8b3;--line:#403e4a}body.dark .donut:after{background:var(--card)}@media(max-width:1050px){main{padding:24px 28px}.metrics{grid-template-columns:repeat(2,1fr)}.grid{grid-template-columns:1fr}.account-grid,.budget-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.side{height:58px;width:100%;position:fixed;top:auto;bottom:0;flex-direction:row;padding:6px 10px;border-top:1px solid var(--line);border-right:0}.side nav{display:flex;flex:1;justify-content:space-around}.side .brand,.bottom,.side nav button:nth-of-type(n+5){display:none}.side nav button{display:grid;margin:0;place-items:center;padding:4px;flex:1}.side span{opacity:1;max-width:100%;font-size:9px}main{padding:20px 16px 84px}header,.hero{display:block}.hero{padding:22px}.net{border:0;border-top:1px solid var(--line);padding:18px 0 0;margin-top:20px}.metrics{gap:10px}.metrics article,.panel{padding:16px}.donut{width:125px;height:125px}.donut:after{width:79px;height:79px}.account-grid,.budget-grid{grid-template-columns:1fr}.toolbar{display:grid;grid-template-columns:1fr 1fr}.toolbar input{grid-column:1/-1}}
.goal-grid,.settings-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.goal-card{background:var(--card);padding:22px;border-radius:12px;box-shadow:0 10px 30px #231d370e}.goal-top{display:flex;gap:12px;align-items:center;margin-bottom:22px}.goal-top>span{display:grid;place-items:center;width:40px;height:40px;border-radius:10px;background:var(--soft);font-size:20px}.goal-card strong{font:27px Georgia,serif}.goal-card strong small{font:13px Arial,sans-serif;color:var(--muted)}.goal-card .track{margin:14px 0 0}.settings-grid{grid-template-columns:repeat(3,1fr)}.setting-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.insight{margin-top:16px}@media(max-width:1050px){.settings-grid{grid-template-columns:1fr 1fr}}@media(max-width:700px){.goal-grid,.settings-grid{grid-template-columns:1fr}}
.advisor-grid{display:grid;grid-template-columns:1.35fr .65fr;gap:16px}.offline{font-size:12px;color:var(--muted);padding:8px 10px;background:var(--soft);border-radius:99px}.messages{min-height:290px;display:grid;align-content:start;gap:12px}.message{max-width:85%;padding:12px 14px;border-radius:10px;background:var(--soft);font-size:13px}.message.user{margin-left:auto;background:var(--text);color:var(--card)}.message p{margin:5px 0 0}.advisor-form{display:flex;gap:8px;border-top:1px solid var(--line);padding-top:16px}.advisor-form input{flex:1;min-width:0;padding:10px;border:1px solid var(--line);border-radius:7px;background:var(--soft)}.prompt-list{display:grid;gap:8px;margin:14px 0 25px}.prompt-list button{text-align:left;padding:10px;border:1px solid var(--line);background:transparent;border-radius:7px}.prompt-list button:hover{background:var(--soft)}.advisor-note{margin-top:22px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}@media(max-width:1050px){.advisor-grid{grid-template-columns:1fr}}@media(max-width:700px){.advisor-form{align-items:stretch}.offline{display:inline-block;margin-top:14px}}
.import-table{max-height:280px;margin:16px 0}.import-ok{color:var(--pos)}.import-skip{color:var(--neg)}
.cloud-status{margin-top:18px;padding:10px;border-radius:7px;background:var(--soft);color:var(--muted);font-size:12px}
#authError{color:var(--neg);min-height:18px}.auth-signed-in{color:var(--pos)}
#loanSplitField small{font-weight:normal}.transaction-account{color:var(--muted);font-size:11px}
.manager-actions{display:flex;justify-content:flex-end;gap:2px;margin-top:12px}.manager-actions .plain{padding:4px 7px;font-size:13px}
.period-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:14px 0}.period-grid div{padding:12px;background:var(--soft);border-radius:8px}.period-grid strong{display:block;margin-top:5px;font:18px Georgia,serif}@media(max-width:700px){.period-grid{grid-template-columns:1fr}}
.empty-state{grid-column:1/-1;padding:28px;background:var(--soft);border:1px dashed var(--line);border-radius:10px}.empty-state h2{margin:0}.empty-copy{color:var(--muted);padding:10px 0;text-align:center}

/* Kano editorial refresh — quiet Japanese household-ledger warmth. */
:root{--bg:#f3f1f6;--card:#fff;--soft:#f8f7fa;--text:#25222a;--muted:#77737f;--line:#e9e6ee;--pos:#668b76;--neg:#bd7772;--lavender:#e8e3ee;--lilac-ink:#514a62;--paper:#fdfcfe;--radius:16px}
body{background:var(--bg);font-family:Inter,"Helvetica Neue",Arial,sans-serif;letter-spacing:-.01em}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,#ffffff22 1px,transparent 1px),linear-gradient(#ffffff1b 1px,transparent 1px);background-size:28px 28px;opacity:.38;z-index:-1}.app{max-width:1680px;margin:auto;background:var(--paper);box-shadow:0 0 0 1px #fff8}.side{width:88px;padding:25px 16px;background:#fdfcff;border-right:1px solid #ece9f0;box-shadow:none}.side.expanded{width:238px}.side button{position:relative;min-height:42px;padding:10px 12px;border-radius:11px;font-size:13px;transition:background .2s,color .2s,transform .2s}.side button:hover{background:#f0edf4;transform:translateX(1px)}.side button.active{background:var(--lavender);color:var(--lilac-ink);font-weight:700}.side button.active:before{content:"";position:absolute;left:-16px;width:3px;height:18px;background:var(--lilac-ink);border-radius:0 4px 4px 0}.brand{margin-bottom:48px!important;font-family:Georgia,"Times New Roman",serif;font-size:15px}.brand b{width:36px;height:36px;border-radius:50%;background:var(--lilac-ink);font-size:20px;box-shadow:0 5px 14px #514a6226}.bottom{padding-top:18px;border-top:1px solid var(--line)}
main{width:min(1490px,100%);padding:32px 58px 72px}.notice{display:flex;align-items:center;width:max-content;max-width:100%;background:transparent;border:0;border-radius:0;color:var(--muted);padding:0;margin:0 0 27px;font-size:11px;letter-spacing:.01em}header{margin-bottom:26px}.eyebrow{font-family:Inter,"Helvetica Neue",Arial,sans-serif;font-size:10px;letter-spacing:.13em;font-weight:700;color:#8a8495}h1{font-family:Georgia,"Times New Roman",serif;font-weight:500;letter-spacing:-.045em;font-size:clamp(31px,3vw,45px)}h2{font-size:16px;letter-spacing:-.02em}.sub{line-height:1.55}.primary{border-radius:10px;background:var(--lilac-ink);padding:11px 16px;box-shadow:0 5px 12px #514a621c;transition:transform .18s,box-shadow .18s}.primary:hover{transform:translateY(-1px);box-shadow:0 8px 17px #514a6230}
.hero{position:relative;overflow:hidden;min-height:205px;align-items:flex-end;padding:30px 34px;background:var(--lavender);border:1px solid #dfd9e7;border-radius:var(--radius);box-shadow:none}.hero:after{content:"K";position:absolute;right:30px;top:18px;color:#fff8;font:156px/.8 Georgia,"Times New Roman",serif;pointer-events:none}.hero>div{position:relative;z-index:1}.hero .eyebrow{color:#766d81}.hero strong{font-size:clamp(42px,5.1vw,61px);font-weight:500;letter-spacing:-.07em;margin:6px 0 12px}.pos{font-size:12px;font-weight:700;color:var(--pos);margin:0}.net{border-left:1px solid #cfc6db;padding:0 0 0 29px;margin-bottom:2px}.net b{font-size:26px;font-family:Georgia,"Times New Roman",serif;letter-spacing:-.04em}.net small{display:block;margin-top:7px}
.metrics{grid-template-columns:1.18fr .94fr .94fr 1.12fr;gap:12px;margin:12px 0 20px}.metrics article,.panel,.account-card,.budget-card,.goal-card{border:1px solid var(--line);border-radius:var(--radius);box-shadow:none}.metrics article{min-height:124px;padding:20px;background:#fff}.metrics article:nth-child(1){background:#f9f8fb}.metrics article:nth-child(2){background:#f6faf7}.metrics article:nth-child(3){background:#fff9f8}.metrics .quiet{background:#f7f6f9}.metrics b{font:600 23px/1.1 Georgia,"Times New Roman",serif;letter-spacing:-.045em;margin:8px 0}.metrics small{line-height:1.35}.track{height:6px;border-radius:99px;background:#e4e0e9;margin:15px 0 7px}.track i{border-radius:inherit;background:var(--pos)}
.grid{grid-template-columns:minmax(0,1.34fr) minmax(300px,.86fr);gap:14px}.panel{padding:24px;background:var(--card)}.grid .panel:nth-child(1){min-height:270px}.grid .panel:nth-child(2){background:#fcfbfd}.heading{align-items:flex-start}.heading h2{font:600 19px/1.15 Georgia,"Times New Roman",serif;letter-spacing:-.035em}.heading .plain{font-size:12px;color:var(--lilac-ink);font-weight:700}.legend{margin:21px 0 13px;font-size:10px;font-weight:700;letter-spacing:.04em}.bars{height:172px;border-bottom:1px solid #ddd9e3;gap:13px;background:repeating-linear-gradient(to bottom,transparent 0,transparent 42px,#edeaf0 43px)}.bar{border-radius:6px 6px 0 0}.income{background:#89a896}.expense{background:#dfaba6}.barset small{font-family:Inter,"Helvetica Neue",Arial,sans-serif;font-size:10px}.donutrow{margin-top:23px}.donut{width:151px;height:151px}.donut:after{background:#fcfbfd;width:94px;height:94px}.donut b{font:600 16px Georgia,"Times New Roman",serif}.donut small{font-family:Inter,"Helvetica Neue",Arial,sans-serif}.tx,.payment{padding:13px 0}.badge,.paydate{border-radius:50%;background:#f0edf4;color:var(--lilac-ink)}.tx p,.payment p{font-size:13px}.money{font-family:"SFMono-Regular",Consolas,monospace;font-size:11px;letter-spacing:-.04em}
.toolbar{padding:13px}.toolbar input,.toolbar select,.formgrid input,.formgrid select,.advisor-form input{border-color:#e3dfe8;background:#fbfafd;border-radius:9px}.tablewrap{border:1px solid var(--line);border-radius:var(--radius);background:#fff}.tablewrap.panel{padding:0}th{background:#fbfafd;font-family:Inter,"Helvetica Neue",Arial,sans-serif;font-weight:700;font-size:10px}th,td{border-color:#eeeaf1;padding:15px 18px}.type{background:#f1edf5;color:var(--lilac-ink);font-weight:700}.row-delete{border-radius:7px}.row-delete:hover{background:var(--soft)}
.account-grid,.budget-grid{gap:14px}.account-card,.budget-card,.goal-card{padding:22px;background:#fff;transition:transform .18s,border-color .18s}.account-card:hover,.budget-card:hover,.goal-card:hover{transform:translateY(-2px);border-color:#d9d1e0}.account-card .symbol{width:42px;height:42px;border-radius:50%;background:#eee9f2;color:var(--lilac-ink)}.account-card strong,.budget-card strong,.liability strong{font:500 27px/1.08 Georgia,"Times New Roman",serif;letter-spacing:-.045em}.liability{background:#fbfafc;border-style:dashed}.goal-top>span{border-radius:50%;background:#eee9f2}.settings-grid{gap:14px}.settings-grid .panel{min-height:230px}.cloud-status{border:1px solid var(--line);border-left:3px solid #998eaa;background:#fbfafd;border-radius:10px}.period-grid div{border:1px solid var(--line);border-radius:11px;background:#fbfafd}.period-grid strong{font-family:Georgia,"Times New Roman",serif}.offline{border:1px solid var(--line);background:#fbfafd;color:var(--lilac-ink)}.message{border-radius:12px 12px 12px 3px}.message.user{background:var(--lilac-ink)}
dialog{border:1px solid var(--line);border-radius:18px;box-shadow:0 28px 80px #302b3b38}.cancel{border-radius:10px;border-color:#ded9e5}.plain{border-radius:9px}.empty-state{background:#fbfafd;border-radius:var(--radius);padding:32px}.empty-copy{color:var(--muted)}
body.dark{--bg:#201f25;--card:#29272f;--soft:#33313a;--text:#f4f1f6;--muted:#b5afba;--line:#413e49;--lavender:#393343;--lilac-ink:#ddd3e7;--paper:#242229}body.dark .app,body.dark .side{background:#242229}body.dark .side button.active{background:#393343;color:#f1e9f9}body.dark .hero{border-color:#4d4558}body.dark .hero:after{color:#ffffff08}body.dark .metrics article,body.dark .panel,body.dark .account-card,body.dark .budget-card,body.dark .goal-card,body.dark .tablewrap{background:#29272f}body.dark .metrics article:nth-child(1),body.dark .metrics .quiet,body.dark .grid .panel:nth-child(2),body.dark .liability,body.dark .period-grid div{background:#2e2b34}body.dark .donut:after{background:#2e2b34}body.dark .toolbar input,body.dark .toolbar select,body.dark .formgrid input,body.dark .formgrid select,body.dark .advisor-form input{background:#302d36}
@media(max-width:1050px){main{padding:28px 32px 70px}.metrics{grid-template-columns:repeat(2,1fr)}.metrics article:nth-child(3){background:#fff9f8}}@media(max-width:700px){body:before{display:none}.app{display:block}.side{width:100%;padding:6px 10px;background:#fdfcff}.side button.active:before{display:none}.side nav button.active{box-shadow:inset 0 -2px 0 var(--lilac-ink)}main{padding:21px 16px 86px}.notice{width:100%;margin-bottom:22px;line-height:1.45}header{margin-bottom:20px}.hero{min-height:0;padding:25px 22px}.hero:after{right:14px;top:8px;font-size:118px}.hero strong{font-size:43px}.metrics{gap:10px;margin-top:10px}.metrics article{min-height:113px;padding:16px}.metrics b{font-size:20px}.grid{gap:10px}.panel{padding:18px}.bars{height:150px}.donutrow{gap:12px}.donut{width:128px;height:128px}.donut:after{width:80px;height:80px}.account-grid,.budget-grid{gap:10px}.account-card,.budget-card,.goal-card{padding:18px}.settings-grid{gap:10px}}

/* Dark-mode readability repair: no light hover surfaces beneath light text. */
body.dark{--bg:#18191e;--card:#24262d;--soft:#30323b;--text:#f5f3f7;--muted:#c3c0ca;--line:#484a55;--lavender:#403a4b;--lilac-ink:#e8deef;--paper:#1e2026;--pos:#9cbea7;--neg:#e2a29d}
body.dark .app,body.dark .side{background:#1e2026}body.dark .side{border-color:#393b45}body.dark .side button{color:#c9c5cf}body.dark .side button:hover,body.dark .side button:focus-visible{background:#373942;color:#fff;transform:translateX(1px)}body.dark .side button.active{background:#4b4359;color:#fff}body.dark .side button.active:before{background:#e8deef}.side button:focus-visible,.primary:focus-visible,.plain:focus-visible,.cancel:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #9d8bb5;outline-offset:2px}
body.dark .hero{background:#403a4b;border-color:#595064}.hero .eyebrow{color:#766d81}body.dark .hero .eyebrow{color:#d8cfdf}.hero .net{border-color:#6a6076}body.dark .net small,body.dark .metrics small{color:#c8c4ce}
body.dark .metrics article,body.dark .panel,body.dark .account-card,body.dark .budget-card,body.dark .goal-card,body.dark .tablewrap{background:#24262d}body.dark .metrics article:nth-child(1),body.dark .metrics .quiet,body.dark .grid .panel:nth-child(2),body.dark .liability,body.dark .period-grid div{background:#2a2c34}body.dark .eyebrow{color:#c0bbc8}body.dark .sub,body.dark .empty-copy{color:#c8c4ce}body.dark .donut:after{background:#2a2c34}
body.dark .toolbar input,body.dark .toolbar select,body.dark .formgrid input,body.dark .formgrid select,body.dark .advisor-form input{background:#2e3038;border-color:#4c4e5a;color:#f5f3f7}body.dark th{background:#2d2f37;color:#d2ced8}body.dark th,body.dark td{border-color:#41434d}body.dark .type{background:#403a4b;color:#f1eafa}body.dark .badge,body.dark .paydate{background:#3a3c46;color:#f3ecfa}body.dark .cloud-status,body.dark .empty-state{background:#2b2d35;border-color:#50525d;color:#d0ccd5}body.dark .offline{background:#31333b;border-color:#50525d;color:#f0eafb}
body.dark .plain:hover,body.dark .row-delete:hover,body.dark .prompt-list button:hover{background:#3a3c46;color:#fff}body.dark .prompt-list button{border-color:#4e505c;color:#eeebf1}.prompt-list button:focus-visible{outline:3px solid #9d8bb5;outline-offset:2px}body.dark .cancel{border-color:#565865;color:#f1eef4}.cancel:hover{background:#eeeaf1}.dark .cancel:hover{background:#3a3c46;color:#fff}.dark .primary{background:#ded2e8;color:#28242e}.dark .primary:hover{background:#f0e8f5;color:#211e25}

/* Collapsed navigation repair. */
.side{width:104px;padding:26px 14px}.side.expanded{width:238px}.side nav{display:grid;gap:7px}.side nav button{margin:0;font-size:19px;line-height:1}.side span{font-size:13px;line-height:1.2}.side:not(.expanded) button{width:52px;min-width:52px;height:52px;min-height:52px;margin:0 auto;padding:0;justify-content:center;gap:0}.side:not(.expanded) .brand{width:52px;height:52px;margin:0 auto 46px!important}.side:not(.expanded) .brand b{width:44px;height:44px;font-size:23px}.side:not(.expanded) .bottom{display:grid;justify-content:center;gap:8px;padding-top:19px}.side:not(.expanded) .bottom button{font-size:20px}.side:not(.expanded) #toggle{font-size:24px;color:var(--lilac-ink)}.side.expanded button{justify-content:flex-start;gap:13px}.side.expanded .bottom{display:grid;gap:5px}.side.expanded .bottom button{margin:0}
@media(max-width:700px){.side{width:100%;padding:6px 10px}.side:not(.expanded) button{width:auto;min-width:0;height:auto;min-height:0;margin:0}.side:not(.expanded) .bottom{display:none}.side nav{display:flex;gap:0}.side nav button{font-size:17px}.side span{font-size:9px}}

/* Typography and action-row alignment. */
body,button,input,select{font-family:"DM Sans","Segoe UI Variable","Segoe UI",sans-serif}h1,h2,.hero strong,.net b,.metrics b,.account-card strong,.budget-card strong,.liability strong,.goal-card strong,.period-grid strong{font-family:"DM Serif Display",Georgia,serif;font-weight:400;letter-spacing:-.035em}.eyebrow,th{font-family:"DM Sans","Segoe UI",sans-serif;letter-spacing:.12em}.setting-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:stretch}.setting-actions button{min-height:48px;margin:0;padding:10px 14px;text-align:center;white-space:normal;line-height:1.25}.side:not(.expanded) .bottom{margin-inline:-2px;padding-inline:2px}.side:not(.expanded) .bottom:before{content:"";display:block;width:52px;height:1px;margin:0 auto 8px;background:var(--line)}.side:not(.expanded) .bottom{border-top:0;padding-top:18px}.side:not(.expanded) .bottom button{flex:none}@media(max-width:700px){.setting-actions{grid-template-columns:1fr;gap:10px}.side:not(.expanded) .bottom:before{display:none}}
/* Neue Helvetica typography: use local fonts only. */
body,button,input,select,.eyebrow,th{font-family:'Neue Helvetica','Helvetica Neue',Helvetica,Arial,sans-serif}h1,h2,.hero strong,.net b,.metrics b,.account-card strong,.budget-card strong,.liability strong,.goal-card strong,.period-grid strong{font-family:'Neue Helvetica','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:500;letter-spacing:-.035em}

/* Enforce one local type family throughout the application. */
body{font-family:'Neue Helvetica','Helvetica Neue',Helvetica,Arial,sans-serif}body *{font-family:inherit}body .money,body .paydate,body .barset small{font-family:'Neue Helvetica','Helvetica Neue',Helvetica,Arial,sans-serif;letter-spacing:0}

/* Full-viewport app shell: no decorative side gutters on wide screens. */
.app{width:100%;max-width:none;margin:0;min-height:100vh}

/* Local workspace background controls. */
.background-customizer{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.background-customizer .eyebrow{width:100%;margin:0}.background-customizer small{width:100%;color:var(--muted);font-size:11px}.background-color-control,.background-image-control{min-height:40px;display:inline-flex;align-items:center;gap:9px;padding:7px 11px;border:1px solid var(--line);border-radius:10px;font-size:12px;font-weight:600;background:var(--soft)}.background-color-control input{width:24px;height:24px;padding:0;border:0;border-radius:50%;background:transparent;cursor:pointer}.background-image-control{cursor:pointer}.background-customizer .plain{border:1px solid var(--line);font-size:12px}.has-custom-background .app{background:var(--workspace-background)}.has-workspace-wallpaper .app{background-image:linear-gradient(rgba(253,252,254,.78),rgba(253,252,254,.78)),var(--workspace-wallpaper);background-position:center;background-size:cover;background-attachment:fixed}.dark.has-workspace-wallpaper .app{background-image:linear-gradient(rgba(30,32,38,.84),rgba(30,32,38,.84)),var(--workspace-wallpaper)}body.dark .background-color-control,body.dark .background-image-control{background:#30323b;border-color:#4c4e5a;color:#f3f0f5}
#payments .payment{cursor:pointer}#payments .payment:hover{background:var(--soft)}#payments .payment:focus-visible{outline:3px solid #9d8bb5;outline-offset:2px}

/* Section headings must use the selected Neue Helvetica family. */
.heading h2{font-family:'Neue Helvetica','Helvetica Neue',Helvetica,Arial,sans-serif!important;font-weight:600;letter-spacing:-.025em}

/* Subtle navigation and interaction motion. */
.view.active{animation:kano-view-enter .28s cubic-bezier(.2,.75,.25,1) both}@keyframes kano-view-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}button,.account-card,.budget-card,.goal-card,.payment,.tx{transition:transform .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease}button:active{transform:scale(.98)}.nav{transition:background-color .2s ease,color .2s ease,transform .2s ease}.payment:hover,.tx:hover{transform:translateX(2px)}dialog[open]{animation:kano-dialog-enter .2s ease-out both}@keyframes kano-dialog-enter{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
/* Responsive finish pass: mobile keeps every page reachable and prevents narrow-screen overflow. */
html{min-width:320px;background:var(--bg)}
body{min-width:320px;overflow-x:hidden}
main,.view,.grid,.panel,.toolbar,.heading,.donutrow,.advisor-form{min-width:0}
.tablewrap{max-width:100%;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch}
button,input,select{max-width:100%}
@media(max-width:700px){
  :root{--mobile-nav-height:76px}
  .app{min-height:100dvh}
  .side{height:var(--mobile-nav-height);min-height:var(--mobile-nav-height);display:flex!important;align-items:stretch;gap:6px;padding:6px 7px calc(6px + env(safe-area-inset-bottom));overflow:hidden;box-shadow:0 -5px 18px #302b3b12}
  .side nav{display:flex!important;align-items:stretch;justify-content:flex-start;gap:3px;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;scrollbar-width:none}
  .side nav::-webkit-scrollbar{display:none}
  .side nav button,.side nav button:nth-of-type(n+5),.side:not(.expanded) .side nav button{display:grid!important;flex:0 0 58px;width:58px;min-width:58px;height:62px;min-height:62px;margin:0!important;padding:5px 3px!important;place-content:center;gap:3px;scroll-snap-align:center;border-radius:10px;font-size:17px;line-height:1.05}
  .side nav button span{display:block;max-width:52px!important;overflow:hidden;text-overflow:ellipsis;opacity:1!important;font-size:8px!important;line-height:1.1;text-align:center;white-space:nowrap}
  .side .bottom,.side:not(.expanded) .bottom{display:flex!important;flex:0 0 48px;justify-content:center;align-items:center;gap:0;margin:0!important;padding:0!important;border:0!important}
  .side .bottom:before,.side:not(.expanded) .bottom:before{display:none!important}
  .side .bottom>button:not(.nav){display:none!important}
  .side .bottom .nav,.side:not(.expanded) .bottom .nav{display:grid!important;width:48px;min-width:48px;height:62px;min-height:62px;margin:0!important;padding:5px 2px!important;place-content:center;border-radius:10px;font-size:18px}
  .side .bottom .nav span{display:block;max-width:44px!important;opacity:1!important;font-size:8px!important;line-height:1.1;text-align:center}
  main{width:100%;padding:19px 14px calc(var(--mobile-nav-height) + 22px)}
  .notice{font-size:11px;margin-bottom:18px}
  header{gap:14px;margin-bottom:18px}
  header .primary{width:100%;min-height:46px}
  h1{font-size:clamp(29px,9vw,39px);line-height:1.08}
  .hero{padding:22px 18px;margin-bottom:12px}
  .hero:after{font-size:102px;right:10px;top:11px}
  .hero strong{font-size:clamp(36px,12vw,46px);overflow-wrap:anywhere}
  .net{min-width:0;margin-top:18px;padding-top:16px}
  .metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:10px 0 14px}
  .metrics article{min-width:0;min-height:108px;padding:14px}
  .metrics b{font-size:clamp(18px,5.7vw,22px);overflow-wrap:anywhere}
  .metrics small{font-size:11px;overflow-wrap:anywhere}
  .grid{grid-template-columns:minmax(0,1fr);gap:10px}
  .panel{padding:17px}
  .heading{gap:10px;align-items:flex-start}
  .heading h2{font-size:18px;line-height:1.15}
  .heading .plain{padding:6px 0;white-space:nowrap}
  .legend{margin:17px 0 10px}
  .bars{height:144px;gap:7px}
  .barset{min-width:0}
  .barset small{font-size:8px;white-space:nowrap}
  .donutrow{flex-direction:column;align-items:stretch;gap:16px;margin-top:16px}
  .donut{align-self:center;width:132px;height:132px;flex:none}
  .donut:after{width:82px;height:82px}
  #categories{width:100%}
  #categories li{gap:8px}
  #categories li span{min-width:0;overflow-wrap:anywhere}
  .tx,.payment{grid-template-columns:34px minmax(0,1fr) auto;gap:8px;padding:12px 0}
  .tx div,.payment div{min-width:0}
  .tx p,.payment p,.tx small,.payment small{overflow-wrap:anywhere}
  .money{font-size:11px;white-space:nowrap}
  .toolbar{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;padding:12px}
  .toolbar input,.toolbar select{width:100%;min-width:0}
  .toolbar span{padding:0 2px}
  .tablewrap{position:relative;border-radius:12px}
  .tablewrap table{min-width:590px}
  .tablewrap:after{content:'Swipe sideways to see every column';display:block;padding:8px 12px;color:var(--muted);font-size:10px;border-top:1px solid var(--line);white-space:nowrap}
  th,td{padding:12px 14px}
  .account-grid,.budget-grid,.goal-grid,.settings-grid,.advisor-grid{grid-template-columns:minmax(0,1fr);gap:10px}
  .account-card,.budget-card,.goal-card{padding:17px}
  .liability{margin-top:10px}
  .period-grid{grid-template-columns:minmax(0,1fr);gap:9px}
  .advisor-form{flex-direction:column;gap:9px}
  .advisor-form .primary{width:100%;min-height:44px}
  .messages{min-height:220px}
  .message{max-width:100%;overflow-wrap:anywhere}
  .offline{max-width:100%;line-height:1.3}
  .setting-actions{grid-template-columns:minmax(0,1fr)}
  .setting-actions button{width:100%}
  .background-customizer{align-items:stretch}
  .background-color-control,.background-image-control,.background-customizer .plain{width:100%;justify-content:space-between}
  dialog{width:calc(100vw - 24px);max-height:calc(100dvh - 24px);margin:auto;padding:19px;overflow-y:auto;border-radius:16px}
  dialog .heading{align-items:flex-start}
  .formgrid{grid-template-columns:minmax(0,1fr);gap:12px;margin:16px 0}
  .formgrid .full{grid-column:auto}
  dialog menu{flex-wrap:wrap;justify-content:stretch;gap:8px}
  dialog menu button{flex:1 1 130px;min-height:44px}
  #toast{width:calc(100% - 28px);max-width:420px;text-align:center;bottom:calc(var(--mobile-nav-height) + 13px);overflow-wrap:anywhere}
}
@media(max-width:380px){
  main{padding-inline:12px}
  .metrics{grid-template-columns:minmax(0,1fr)}
  .side nav button,.side nav button:nth-of-type(n+5),.side:not(.expanded) .side nav button{flex-basis:54px;width:54px;min-width:54px}
  .side .bottom,.side:not(.expanded) .bottom{flex-basis:43px}
  .side .bottom .nav,.side:not(.expanded) .bottom .nav{width:43px;min-width:43px}
}
/* Mobile navigation: one continuous rail; Settings joins the scrollable page list. */
.mobile-settings{display:none!important}
@media(max-width:700px){
  .side{gap:0!important;padding-inline:7px!important}
  .side nav{width:100%;flex:1 1 100%!important;padding:0!important}
  .side nav .mobile-settings{display:grid!important}
  .side .bottom,.side:not(.expanded) .bottom{display:none!important}
}
/* Stable mobile navigation: top bar plus a full-height drawer, never a bottom rail. */
.mobile-topbar,.mobile-nav-overlay{display:none}
@media(max-width:700px){
  body.mobile-menu-open{overflow:hidden}
  .mobile-topbar{height:54px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:17px}
  .mobile-home,.mobile-menu-button{display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--text);padding:6px 0;font-weight:600}
  .mobile-home b{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--lilac-ink);color:#fff;font-size:17px}
  .mobile-menu-button{padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);font-size:13px}
  .mobile-nav-overlay{position:fixed;z-index:20;inset:0;background:#15131b66;border:0;opacity:0;pointer-events:none;transition:opacity .22s ease}
  .mobile-nav-overlay.visible{display:block;opacity:1;pointer-events:auto}
  .side,.side:not(.expanded){position:fixed!important;z-index:21;inset:0 0 0 auto;width:min(86vw,320px)!important;height:100dvh!important;min-height:100dvh!important;display:flex!important;flex-direction:column!important;gap:0!important;padding:21px 16px calc(18px + env(safe-area-inset-bottom))!important;overflow-y:auto;overflow-x:hidden;background:var(--card)!important;border:0!important;border-left:1px solid var(--line)!important;box-shadow:-16px 0 42px #211c2d2b;transform:translateX(104%);transition:transform .25s cubic-bezier(.2,.8,.2,1)}
  .side.mobile-open{transform:translateX(0)}
  .side .brand,.side:not(.expanded) .brand{display:flex!important;width:100%!important;height:auto!important;min-height:52px!important;margin:0 0 22px!important;padding:8px 9px!important;justify-content:flex-start!important;gap:11px!important}
  .side .brand b,.side:not(.expanded) .brand b{width:38px!important;height:38px!important;font-size:20px!important}
  .side .brand span{display:block!important;max-width:none!important;opacity:1!important;font-size:15px!important}
  .side nav,.side:not(.expanded) nav{display:grid!important;width:100%!important;flex:0 0 auto!important;gap:5px!important;overflow:visible!important;padding:0!important}
  .side nav button,.side nav button:nth-of-type(n+5),.side:not(.expanded) .side nav button{display:flex!important;width:100%!important;min-width:0!important;height:46px!important;min-height:46px!important;margin:0!important;padding:10px 11px!important;place-content:unset!important;justify-content:flex-start!important;gap:12px!important;font-size:18px!important;text-align:left}
  .side nav button span{display:block!important;max-width:none!important;opacity:1!important;overflow:visible!important;font-size:13px!important;line-height:1.15!important;text-align:left!important;white-space:normal!important}
  .side nav .mobile-settings{display:none!important}
  .side .bottom,.side:not(.expanded) .bottom{display:grid!important;width:100%!important;flex:0 0 auto!important;margin-top:auto!important;padding-top:15px!important;border-top:1px solid var(--line)!important;gap:5px!important}
  .side .bottom:before,.side:not(.expanded) .bottom:before{display:none!important}
  .side .bottom>button,.side:not(.expanded) .bottom>button{display:flex!important;width:100%!important;min-width:0!important;height:46px!important;min-height:46px!important;margin:0!important;padding:10px 11px!important;justify-content:flex-start!important;gap:12px!important;font-size:18px!important}
  .side .bottom button span{display:block!important;max-width:none!important;opacity:1!important;overflow:visible!important;font-size:13px!important;line-height:1.15!important;text-align:left!important}
  main{padding:17px 14px 34px!important}
  .notice{margin-top:0!important}
}
/* Keep uploaded wallpaper on a fixed viewport layer so content height never rescales it. */
body.has-workspace-wallpaper{background:var(--bg)}
body.has-workspace-wallpaper:before{z-index:0;opacity:1;background-image:linear-gradient(rgba(253,252,254,.78),rgba(253,252,254,.78)),var(--workspace-wallpaper);background-repeat:no-repeat;background-position:center;background-size:cover;transform:translateZ(0);will-change:transform}
body.dark.has-workspace-wallpaper:before{background-image:linear-gradient(rgba(30,32,38,.84),rgba(30,32,38,.84)),var(--workspace-wallpaper)}
body.has-workspace-wallpaper .app{position:relative;z-index:1;background:transparent!important;background-image:none!important}
@media(max-width:700px){
  .side,.side:not(.expanded){width:min(80vw,280px)!important}
  body.has-workspace-wallpaper:before{background-position:center center}
}
/* Mobile drawer cleanup: desktop-only controls must not appear in the phone menu. */
@media(max-width:700px){
  .side .bottom,.side:not(.expanded) .bottom{display:block!important;margin-top:auto!important;padding-top:15px!important}
  .side .bottom .nav,.side .bottom #toggle{display:none!important}
  .side .bottom #theme{display:flex!important;width:100%!important;min-width:0!important;height:46px!important;min-height:46px!important;margin:0!important;padding:10px 11px!important;align-items:center;justify-content:flex-start!important;gap:12px!important;font-size:18px!important}
  .side .bottom #theme:after{content:'Theme';font-family:'Neue Helvetica','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:13px;font-weight:500}
}
/* Final mobile drawer rule: do not render the desktop bottom control group. */
.mobile-theme{display:none!important}
@media(max-width:700px){
  .side .bottom,.side:not(.expanded) .bottom,.side.expanded .bottom{display:none!important}
  .side nav .mobile-theme{display:flex!important}
}
/* Explicit wallpaper element: reliable on mobile browsers and independent from page height. */
.workspace-wallpaper-layer{display:none}
body.has-workspace-wallpaper:before{display:none!important}
body.has-workspace-wallpaper .app{isolation:isolate;background:transparent!important}
body.has-workspace-wallpaper .workspace-wallpaper-layer{display:block;position:fixed;inset:0;z-index:0;pointer-events:none;background-image:linear-gradient(rgba(253,252,254,.78),rgba(253,252,254,.78)),var(--workspace-wallpaper);background-repeat:no-repeat;background-position:center;background-size:cover}
body.dark.has-workspace-wallpaper .workspace-wallpaper-layer{background-image:linear-gradient(rgba(30,32,38,.84),rgba(30,32,38,.84)),var(--workspace-wallpaper)}
body.has-workspace-wallpaper .app>main,body.has-workspace-wallpaper .app>.side{position:relative;z-index:1}
/* Keep the phone navigation drawer above the dimmed page content. */
@media(max-width:700px){
  body.has-workspace-wallpaper .app>.side{position:fixed!important;z-index:21!important}
  body.has-workspace-wallpaper .app>.mobile-nav-overlay{z-index:20!important}
  body.has-workspace-wallpaper .app>main{z-index:1!important}
}
/* Kano visual system refinement: two primary accents, a single spacing scale, and restrained motion. */
:root{--bg:#f3f2f6;--card:#ffffff;--soft:#f7f6f8;--text:#24242b;--muted:#74727e;--line:#e4e1e8;--accent:#565064;--accent-soft:#ece9f0;--positive:#758f7b;--negative:#b87974;--radius:14px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px}
body{background:var(--bg);color:var(--text);letter-spacing:-.012em}
body:before{display:none}
.app{background:transparent;box-shadow:none}
.side{background:var(--card);border-color:var(--line);box-shadow:none}
.side button{color:var(--muted);border-radius:10px;font-weight:500}
.side button:hover,.side button:focus-visible{background:var(--soft);color:var(--text);transform:none}
.side button.active{background:var(--accent-soft);color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}
.side button.active:before{display:none}
.side svg{width:18px;height:18px;flex:0 0 18px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.brand{margin-bottom:34px!important;color:var(--text)!important;font-family:'Neue Helvetica','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:14px;letter-spacing:.01em}
.brand b{width:40px;height:40px;background:var(--accent);border:2px solid #fff;box-shadow:0 5px 16px #302a3c22;font-family:Georgia,serif;font-size:22px}
main{max-width:1540px;padding:32px 48px 64px}
.notice{padding:0;margin-bottom:24px;background:transparent;border:0;color:var(--muted)}
header{margin-bottom:24px;gap:var(--space-5)}
h1{font-family:'Neue Helvetica','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:500;letter-spacing:-.052em}
h2,.heading h2{font-family:'Neue Helvetica','Helvetica Neue',Helvetica,Arial,sans-serif!important;font-weight:600;letter-spacing:-.025em}
.eyebrow{color:#85818d;font-weight:700;letter-spacing:.12em}
.primary{background:var(--accent);border:1px solid var(--accent);border-radius:10px;box-shadow:none;font-weight:600}
.primary:hover{background:#403a4a;border-color:#403a4a;transform:translateY(-1px);box-shadow:0 7px 16px #39324224}
.cancel,.plain{border-color:var(--line);border-radius:10px}
.plain{color:var(--accent);font-weight:600}
.plain:hover,.cancel:hover{background:var(--soft);color:var(--text);transform:none}
.hero,.panel,.metrics article,.account-card,.budget-card,.goal-card{border:1px solid var(--line);border-radius:var(--radius);box-shadow:none}
.hero{min-height:184px;padding:28px 30px;background:var(--accent-soft);border-color:#ddd7e4}
.hero:after{color:#ffffff8c;font-family:Georgia,serif}
.hero strong{font-family:'Neue Helvetica','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:500}
.net{border-color:#cfc8d8}
.metrics{gap:12px;margin:12px 0 16px}
.metrics article{min-height:116px;padding:18px;background:var(--card)}
.metrics article:nth-child(n){background:var(--card)}
.metrics .quiet{background:var(--soft)}
.metrics b,.net b,.account-card strong,.budget-card strong,.goal-card strong,.liability strong{font-family:'Neue Helvetica','Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:500}
.grid{gap:12px}.panel{padding:22px;background:var(--card)}
.grid .panel:nth-child(2){background:var(--card)}
.grid .panel:nth-child(1){min-height:0}
.legend{margin:16px 0 10px}.legend,.legend span{color:var(--muted)}.legend:before{color:var(--positive)}
.bars{background:repeating-linear-gradient(to bottom,transparent 0,transparent 42px,#efedf1 43px);border-color:var(--line)}
.income{background:var(--positive)}.expense{background:var(--accent)}
.donut,.donut:after{box-shadow:none}.donut:after{background:var(--card)}
.donutrow{gap:18px}.tx,.payment{border-color:var(--line)}.tx:hover,.payment:hover{background:var(--soft);transform:none}
.badge,.paydate,.account-card .symbol,.goal-top>span{background:var(--accent-soft);color:var(--accent);border-radius:10px}
.tablewrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}
th{background:var(--soft);color:#76717e}th,td{border-color:var(--line)}
.toolbar{border:1px solid var(--line);background:var(--card)}.toolbar input,.toolbar select,.formgrid input,.formgrid select,.advisor-form input{background:var(--soft);border-color:var(--line);border-radius:10px}
.type{background:var(--accent-soft);color:var(--accent)}
.account-grid,.budget-grid,.goal-grid,.settings-grid,.advisor-grid{gap:12px}
.account-card,.budget-card,.goal-card{padding:20px;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.account-card:hover,.budget-card:hover,.goal-card:hover{transform:translateY(-2px);border-color:#cbc4d4;box-shadow:0 10px 24px #332d3d10}
.manager-actions{display:flex;gap:4px;margin-top:14px}.manager-actions .plain{padding:6px 8px;border:1px solid var(--line)}
.budget-summary{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:12px;background:var(--soft)}
.budget-summary h2{font-size:19px}.budget-summary-figure{min-width:150px;padding-left:20px;border-left:1px solid var(--line)}.budget-summary-figure strong{display:block;font-size:24px;font-weight:500}.budget-summary-figure small{color:var(--muted)}.budget-summary.is-over{border-color:#d7aaa6}.budget-summary.is-over h2{color:var(--negative)}
.advisor-chat{display:grid;grid-template-rows:minmax(0,320px) auto;min-height:0}.messages{min-height:0;height:320px;overflow:auto;padding-right:8px;align-content:start}.message{border-radius:12px;background:var(--soft)}.message.user{background:var(--accent);color:#fff}.advisor-form{align-self:end}.prompt-list button{border-color:var(--line);border-radius:10px}.prompt-list button:hover{background:var(--accent-soft);color:var(--accent)}
body.dark{--bg:#202024;--card:#29292f;--soft:#323239;--text:#f5f4f7;--muted:#bbb8c2;--line:#45434d;--accent:#c9bfd5;--accent-soft:#393541;--positive:#9cb4a0;--negative:#e0aaa5}
body.dark .side,body.dark .metrics article,body.dark .panel,body.dark .account-card,body.dark .budget-card,body.dark .goal-card,body.dark .tablewrap{background:var(--card)}
body.dark .hero{background:#373340;border-color:#514b5e}body.dark .donut:after{background:var(--card)}body.dark th,body.dark .toolbar input,body.dark .toolbar select,body.dark .formgrid input,body.dark .formgrid select,body.dark .advisor-form input{background:var(--soft)}body.dark .primary{background:var(--accent);color:#26232b;border-color:var(--accent)}
@media(min-width:701px){
  .app{align-items:stretch}.side{position:sticky!important;top:0!important;align-self:flex-start;height:100dvh!important;min-height:100dvh!important;flex:0 0 104px}.side.expanded{flex-basis:238px}main{width:100%;flex:1;min-width:0;margin:0}
}
@media(max-width:700px){
  main{padding:16px 14px 32px!important}.mobile-topbar{margin-bottom:12px}.side,.side:not(.expanded){width:min(78vw,272px)!important;padding:18px 14px calc(16px + env(safe-area-inset-bottom))!important}.side .brand,.side:not(.expanded) .brand{margin-bottom:14px!important}.side nav{gap:3px!important}.side nav button,.side nav button:nth-of-type(n+5),.side:not(.expanded) .side nav button{height:44px!important;min-height:44px!important;padding:9px 10px!important;gap:10px!important}.side .bottom{display:none!important}.side .bottom,.side:not(.expanded) .bottom,.side.expanded .bottom{display:none!important}.hero{min-height:0;padding:22px 18px}.panel{padding:18px}.budget-summary{align-items:flex-start;flex-direction:column;gap:14px}.budget-summary-figure{padding:12px 0 0;border-left:0;border-top:1px solid var(--line);width:100%}.advisor-chat{grid-template-rows:minmax(0,270px) auto}.messages{height:270px}.advisor-form{padding-top:12px}.mobile-home b{background:var(--accent)}
}
/* Kano product refinement: purposeful hierarchy, fixed spacing rhythm, and compact responsive navigation. */
:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:40px}
.side{padding:24px 14px;background:var(--card)}
.side nav{gap:4px}
.nav-section{display:none;margin:16px 10px 5px;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.side.expanded .nav-section{display:block}
.side.expanded .nav-section:first-child{margin-top:0}
.side.expanded .nav{min-height:40px;padding:9px 10px}
.side.expanded .brand{margin-bottom:28px!important}
.side button.active{box-shadow:inset 3px 0 0 var(--accent)}
.brand b{background:var(--accent);box-shadow:0 7px 18px #302a3c26}
main{padding:36px 48px 72px}
.notice{margin-bottom:var(--space-5)}
header{margin-bottom:var(--space-5)}
header .sub{max-width:560px}
.primary{min-height:42px;padding:10px 15px}
.hero{min-height:176px;padding:26px 30px}
.hero:after{right:26px;top:17px;font-size:142px;opacity:.7}
.metrics{margin:12px 0 16px}
.metrics article{min-height:112px;padding:18px}
.panel{padding:20px}
.grid,.account-grid,.budget-grid,.goal-grid,.settings-grid,.advisor-grid{gap:14px}
.grid>.panel{min-width:0}
.heading{min-height:28px;align-items:center}
.heading h2{font-size:18px}
.heading .plain{padding:6px 0}
.account-card,.budget-card,.goal-card{padding:20px}
.account-card:hover,.budget-card:hover,.goal-card:hover{transform:translateY(-1px);box-shadow:0 8px 20px #332d3d0d}
.budget-summary{padding:20px 22px;margin-bottom:14px}
.budget-summary h2{max-width:560px;line-height:1.2}
.budget-summary-figure{min-width:172px}
.advisor-grid{grid-template-columns:minmax(0,1fr)}
@media(min-width:1051px){.advisor-grid{grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr)}}
.advisor-grid>aside{display:flex;flex-direction:column}
.prompt-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.prompt-list button{min-height:48px;padding:10px 12px;line-height:1.25}
.advisor-note{margin-top:auto;padding-top:20px;border-top:1px solid var(--line)}
.messages{height:300px;padding:2px 8px 2px 0}
.advisor-chat{grid-template-rows:minmax(0,300px) auto}
.message{max-width:78%;padding:12px 14px;line-height:1.45}
.message b{font-size:12px}
@media (hover:hover){.side button:hover{background:var(--soft);color:var(--text)}.primary:hover{transform:translateY(-1px)}.plain:hover,.cancel:hover{background:var(--soft)}}
@media (min-width:701px) and (max-width:1050px){main{padding:30px 30px 64px}.side{flex-basis:92px}.side.expanded{flex-basis:224px}.metrics{gap:10px}.panel{padding:18px}}
@media(max-width:700px){
  main{padding:18px 14px 36px!important}
  .side,.side:not(.expanded){width:min(76vw,264px)!important;padding:18px 12px calc(16px + env(safe-area-inset-bottom))!important}
  .side nav{gap:2px!important}
  .nav-section,.side.expanded .nav-section{display:none!important}
  .side .brand,.side:not(.expanded) .brand{margin-bottom:12px!important}
  .side nav button,.side nav button:nth-of-type(n+5),.side:not(.expanded) .side nav button{height:43px!important;min-height:43px!important;padding:8px 9px!important;gap:10px!important}
  .mobile-topbar{min-height:44px;margin-bottom:14px}
  .notice{margin-bottom:18px;font-size:11px}
  header{margin-bottom:18px;gap:12px}
  .hero{padding:20px 18px}.hero:after{font-size:94px;right:12px;top:15px}
  .metrics{gap:10px;margin:10px 0 14px}.metrics article{min-height:104px;padding:14px}
  .panel{padding:17px}.grid,.account-grid,.budget-grid,.goal-grid,.settings-grid,.advisor-grid{gap:10px}
  .heading h2{font-size:17px}.heading .plain{font-size:12px}
  .budget-summary{padding:18px}.budget-summary-figure{min-width:0}
  .advisor-grid>aside{gap:0}.prompt-list{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}.prompt-list button{min-height:45px;font-size:12px}
  .messages{height:256px}.advisor-chat{grid-template-rows:minmax(0,256px) auto}.message{max-width:88%}
}
@media(max-width:380px){.prompt-list{grid-template-columns:1fr}.hero strong{font-size:38px}.metrics b{font-size:19px}}
/* Kano brand mark: shared by the browser tab and in-product navigation. */
.brand b,.mobile-home b{padding:0!important;overflow:hidden!important;background:transparent!important;border:0!important;box-shadow:none!important}
.brand b img,.mobile-home b img{display:block;width:100%;height:100%;object-fit:contain}
/* Japanese editorial direction: quiet paper, ink contrast, and intentional vertical rhythm. */
:root{--bg:#F4F1EC;--card:#FFFDF9;--soft:#F0ECE6;--text:#252421;--muted:#77736D;--line:#E2DDD5;--accent:#514C5A;--accent-soft:#E9E4EA;--positive:#788E78;--negative:#B97D75;--paper-warm:#F8F5F0}
body{background:var(--bg);color:var(--text)}
.app{background:transparent}.side{background:#FCFAF6;border-color:var(--line)}
.side button.active{background:var(--accent-soft);color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}
.side button:hover,.side button:focus-visible{background:#F3F0EA;color:var(--text)}
.nav-section{color:#8A847D;letter-spacing:.16em}
.notice{color:#716C66}.eyebrow{color:#827C75;letter-spacing:.15em}
.japanese-title{font-family:'Hiragino Sans','Yu Gothic UI','Yu Gothic','Meiryo','Neue Helvetica','Helvetica Neue',sans-serif!important;font-weight:500!important;letter-spacing:.04em!important;line-height:1.22!important}
header>div:first-child .japanese-title{position:relative;padding-left:16px}
header>div:first-child .japanese-title:before{content:'';position:absolute;left:0;top:.17em;width:3px;height:.8em;background:var(--positive);border-radius:999px}
.primary{background:var(--accent);border-color:var(--accent);box-shadow:none}.primary:hover{background:#403B47;border-color:#403B47}
.plain{color:var(--accent)}.plain:hover,.cancel:hover{background:var(--soft)}
.hero{background:#EAE6DF;border-color:#DDD7CF;border-radius:12px}.hero:after{display:none}.hero .eyebrow{color:#756E67}.net{border-color:#CBC3BB}
.metrics article,.panel,.account-card,.budget-card,.goal-card,.tablewrap{background:var(--card);border-color:var(--line);border-radius:12px}
.metrics .quiet{background:#F6F2ED}.grid .panel:nth-child(2){background:var(--card)}
.badge,.paydate,.account-card .symbol,.goal-top>span{background:#EEE9E3;color:var(--accent)}
.toolbar,.toolbar input,.toolbar select,.formgrid input,.formgrid select,.advisor-form input{background:#FCFAF6;border-color:var(--line)}
th{background:#F5F1EB;color:#716C66}.type{background:var(--accent-soft);color:var(--accent)}
.bars{background:repeating-linear-gradient(to bottom,transparent 0,transparent 42px,#EEEAE4 43px);border-color:var(--line)}
.income{background:var(--positive)}.expense{background:var(--accent)}
.budget-summary{background:#F7F3ED}.budget-summary.is-over{border-color:#D9ACA2}
.message{background:#F3F0EA}.message.user{background:var(--accent)}.offline{background:#F7F4EF;border-color:var(--line);color:#615A67}
body.dark{--bg:#22201E;--card:#2B2927;--soft:#35322F;--text:#F5F1EA;--muted:#C4BEB6;--line:#48433F;--accent:#D4C9D8;--accent-soft:#3E3943;--positive:#9EB49C;--negative:#E1AAA0;--paper-warm:#272421}
body.dark .side,body.dark .app{background:#272421}body.dark .side button:hover,body.dark .side button:focus-visible{background:#393531;color:#fff}body.dark .hero{background:#37322F;border-color:#504943}body.dark .metrics .quiet,body.dark .budget-summary,body.dark .toolbar,body.dark th{background:#302D2A}body.dark .message{background:#35322F}
@media(max-width:700px){.japanese-title{font-size:clamp(30px,9vw,39px)!important}.side{background:#FCFAF6}.hero{background:#EAE6DF}.metrics article,.panel,.account-card,.budget-card,.goal-card{border-radius:11px}}
/* Form controls stay single-column on narrow dialog widths; no orphaned empty column. */
.custom-choice{display:none}.custom-choice.is-visible{display:grid}
@media(max-width:760px){dialog{width:min(100vw - 24px,560px);padding:18px}.formgrid{grid-template-columns:minmax(0,1fr)!important;gap:12px}.formgrid .full{grid-column:1}.formgrid label{min-width:0}.formgrid input,.formgrid select{width:100%;min-width:0}.import-table{max-width:100%;overflow-x:auto}.import-table table{min-width:540px}.import-table:after{display:none}}
/* Chart polish: totals stay inside the donut and daily bars disclose their values. */
.donut b{max-width:78%;font-size:clamp(12px,1.05vw,14px)!important;line-height:1.08!important;letter-spacing:-.035em!important;text-align:center;white-space:nowrap}
.barset{cursor:default;outline:0}.barset:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:5px}.barset::after{content:attr(data-total);position:absolute;z-index:4;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%) translateY(4px);width:max-content;max-width:180px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--text);box-shadow:0 8px 20px #2a252010;font-size:11px;font-weight:600;line-height:1.35;white-space:pre-line;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .16s ease,transform .16s ease}.barset:hover::after,.barset:focus-visible::after{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
@media(max-width:700px){.donut b{font-size:12px!important}.barset::after{left:0;transform:translateY(4px);max-width:145px}.barset:hover::after,.barset:focus-visible::after{transform:translateY(0)}}
/* Cloud loading keeps edits visibly paused while a private ledger is being read. */
.cloud-loading .add:disabled,.cloud-loading #addAccount:disabled,.cloud-loading #addBudget:disabled,.cloud-loading #addGoal:disabled,.cloud-loading #addRecurring:disabled,.cloud-loading #chooseImport:disabled,.cloud-loading #resetWorkspace:disabled{opacity:.52;cursor:progress}

/* Recurring ledger: keep its detail and actions aligned instead of crowding the payment name. */
#recurring .tablewrap table{min-width:940px}#recurringRows td:first-child{min-width:235px}#recurringRows td:first-child b{display:block;margin-bottom:4px}.recurring-detail{display:block;line-height:1.35}.manager-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:8px;white-space:nowrap}.manager-actions .plain{min-height:40px;padding:0 12px}.manager-actions .recurring-paid{font-size:.86rem;font-weight:700}@media(max-width:760px){#recurring .tablewrap table{min-width:820px}#recurringRows td:first-child{min-width:190px}.manager-actions{gap:5px}.manager-actions .plain{min-height:36px;padding:0 9px}}
/* The recurring actions column may be wider on small screens; keep controls aligned to its right edge. */
#recurringRows td:last-child{text-align:right}#recurringRows td:last-child .manager-actions{display:flex;width:100%;justify-content:flex-end}
/* Settings: readable import template, spaced actions, and four palette controls. */
.import-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px}.import-actions button{margin:0;white-space:normal}
.csv-format-guide,.palette-settings{margin-top:24px;padding-top:20px;border-top:1px solid var(--line);min-width:0}
.csv-format-guide h3,.palette-settings h3{font-size:15px;font-weight:600;line-height:1.4;margin:0 0 8px}
.csv-format-guide textarea{display:block;width:100%;max-width:100%;resize:vertical;min-height:110px;margin:14px 0 12px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--soft);color:var(--text);font:12px/1.6 Consolas,monospace;white-space:pre;overflow:auto}
.palette-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0}
.palette-grid label{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--soft);font-size:12px}
.palette-grid input{width:32px;height:32px;border:0;padding:0;background:transparent;cursor:pointer;flex-shrink:0}
body .primary,body.dark .primary,body .message.user{background:var(--accent);border-color:var(--accent);color:var(--custom-accent-text,#fff)}
body .primary:hover{background:var(--accent);border-color:var(--accent);filter:brightness(.94)}
body .hero,body.dark .hero,body .side button.active{background:var(--accent-soft)}
body .pos,body .legend:before{color:var(--positive)}body .track i,body .income{background:var(--positive)}body .budget-summary.is-over h2{color:var(--negative)}body .budget-summary.is-over{border-color:var(--negative)}
@media(max-width:450px){.import-actions{flex-direction:column;align-items:stretch}.palette-grid{grid-template-columns:1fr}}
.feedback-form{display:grid;gap:14px;margin-top:20px;min-width:0}.feedback-form label{display:grid;gap:7px;font-size:13px;font-weight:600}.feedback-form input,.feedback-form select,.feedback-form textarea{width:100%;min-width:0;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--soft);color:var(--text);font:inherit}.feedback-form textarea{resize:vertical;min-height:130px}.feedback-form .setting-actions{display:flex;gap:12px;flex-wrap:wrap}.feedback-form .sub{margin:0}.feedback-form button:disabled{opacity:.5;cursor:not-allowed}.feedback-status{overflow-wrap:anywhere}
.feedback-report{padding:20px 0;border-bottom:1px solid var(--line)}.feedback-report:last-child{border-bottom:0}.feedback-report h2,.feedback-report .sub{overflow-wrap:anywhere}.feedback-report-details{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}.feedback-report select,.feedback-filter{padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--soft);color:var(--text)}.feedback-more{margin-top:16px}#feedbackReports .setting-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.feedback-panel>button{margin-top:16px}
/* Feedback inbox: compact overview, balanced controls, individual report cards. */
#feedbackReports{max-width:1120px;margin-inline:auto}
.feedback-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:0 0 22px}
.feedback-stat{padding:20px 22px;border:1px solid var(--line);border-radius:14px;background:var(--card);display:grid;gap:10px}
.feedback-stat span{font-size:12px;color:var(--muted)}.feedback-stat strong{font-size:30px;font-weight:500;line-height:1.1;letter-spacing:-.04em;color:var(--text)}
.feedback-stat[data-status="new"]{border-top:3px solid var(--accent)}.feedback-stat[data-status="in_progress"]{border-top:3px solid var(--muted)}.feedback-stat[data-status="resolved"]{border-top:3px solid var(--positive)}
#feedbackReports .feedback-inbox{padding:24px;background:var(--card)}
.feedback-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.feedback-toolbar h2{font-size:18px;line-height:1.4}.feedback-toolbar .sub{font-size:12px;margin-top:4px}.feedback-toolbar .setting-actions{flex-shrink:0}
#feedbackReports .feedback-toolbar button,#feedbackReports .feedback-filter{min-height:40px;border:1px solid var(--line);border-radius:9px;padding:9px 13px;font:inherit;background:var(--soft);color:var(--text)}
.feedback-summary{font-size:11px;margin:14px 0 18px!important;line-height:1.5}
.feedback-list{display:grid;gap:14px}
#feedbackReports .feedback-report{padding:22px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.feedback-report-top{display:flex;justify-content:space-between;align-items:flex-start;gap:24px}.feedback-report-heading{min-width:0}
.feedback-kind{display:inline-block;font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);border-radius:5px;padding:4px 7px;margin-bottom:10px}
.feedback-report-heading h2{font-size:19px;line-height:1.4;margin:0 0 5px;font-weight:600}.feedback-date{font-size:11px;margin:0!important}
.feedback-status-control{display:grid;gap:6px;flex:0 0 142px}.feedback-status-control>span{font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
#feedbackReports .feedback-status-control select{width:100%;min-height:38px;background:var(--soft);font:inherit;font-size:12px}
#feedbackReports .feedback-report-details{margin:20px 0;line-height:1.7;font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text)}
.feedback-contact{border-top:1px solid var(--line);padding-top:12px;color:var(--muted);font-size:12px}.feedback-contact summary{cursor:pointer;width:fit-content;padding:4px 0;color:var(--muted)}.feedback-contact p{margin:8px 0 0;overflow-wrap:anywhere}
.feedback-empty{text-align:center;padding:42px 20px;background:var(--soft);border-radius:12px}.feedback-empty h3{font-size:17px;font-weight:500;margin:0 0 8px}.feedback-empty p{font-size:13px}
.feedback-more{display:block;margin:20px auto 0}.feedback-more[hidden]{display:none}
@media(max-width:700px){.feedback-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px}.feedback-stat{padding:16px}.feedback-stat strong{font-size:26px}#feedbackReports .feedback-inbox{padding:16px}.feedback-toolbar{align-items:stretch;flex-direction:column;gap:14px}.feedback-toolbar .setting-actions{display:grid!important;grid-template-columns:1fr 1fr}.feedback-filter{width:100%}#feedbackReports .feedback-report{padding:16px}.feedback-report-top{gap:14px}.feedback-status-control{flex-basis:116px}.feedback-report-heading h2{font-size:17px}}
@media(max-width:380px){.feedback-report-top{flex-direction:column}.feedback-status-control{flex-basis:auto;width:100%}}
.transaction-date-range{display:flex;flex-wrap:wrap;align-items:end;gap:12px;margin:12px 0 20px}.transaction-date-range label{display:grid;gap:6px;font-size:12px;color:var(--muted)}.transaction-date-range input{min-height:40px;padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--text);font:inherit;color-scheme:light}body.dark .transaction-date-range input{color-scheme:dark}.transaction-date-range button{min-height:40px}.date-range-error{font-size:12px;margin:0;align-self:center}@media(max-width:500px){.transaction-date-range{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.transaction-date-range input{width:100%;min-width:0}.date-range-error{grid-column:1/-1}}
/* Keep the dashboard and advisor within the same content width as other views. */
#dashboard,#advisor{width:100%;max-width:100%;min-width:0}
#dashboard .grid,#dashboard .metrics,#advisor .advisor-grid{min-width:0;max-width:100%}
#dashboard .grid>*,#dashboard .metrics>*,#advisor .advisor-grid>*{min-width:0;max-width:100%}
#dashboard .tx>div,#dashboard .payment>div{min-width:0;overflow-wrap:anywhere}
#advisor .messages,#advisor .message{min-width:0;overflow-wrap:anywhere}
#advisor .advisor-chat{grid-template-columns:minmax(0,1fr)}
#advisor .advisor-form{min-width:0}#advisor .advisor-form input{min-width:0;width:100%}
@media(max-width:1050px){
  #advisor .advisor-grid{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:700px){
  .app{width:100%;min-width:0}
  .app>main{width:100%;max-width:100%;min-width:0;margin-inline:0}
  #dashboard .grid{grid-template-columns:minmax(0,1fr)}
  #dashboard .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  #dashboard .hero,#dashboard header,#dashboard .panel{width:100%;min-width:0;max-width:100%}
  #dashboard .hero>div{min-width:0;max-width:100%}
  #dashboard .japanese-title{font-size:clamp(27px,7.4vw,36px)!important;line-height:1.35;overflow-wrap:anywhere}
  #dashboard .hero strong{font-size:clamp(30px,10vw,44px);overflow-wrap:anywhere}
  #dashboard .tx,#dashboard .payment{grid-template-columns:32px minmax(0,1fr) auto;gap:8px}
  #dashboard .money{font-size:11px;white-space:nowrap}
  #dashboard .heading{flex-wrap:wrap}
  #dashboard .bars{width:100%;max-width:100%}
  #dashboard .barset{flex:1 1 0;min-width:0}
  #advisor .advisor-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
  #advisor .advisor-chat{width:100%;grid-template-rows:minmax(0,320px) auto}
  #advisor .messages{height:320px;max-height:55svh;overflow-y:auto;overflow-x:hidden}
  #advisor .message{width:fit-content;max-width:92%;word-break:normal}
  #advisor .advisor-form{display:flex;flex-direction:row;gap:10px;align-items:stretch;padding-top:14px}
  #advisor .advisor-form input{flex:1 1 0;min-width:0}
  #advisor .advisor-form button{flex:0 0 auto;width:auto;min-width:64px;min-height:44px}
  #advisor .prompt-list{grid-template-columns:repeat(2,minmax(0,1fr))}
  #advisor .advisor-note{margin-top:12px}
}
/* Mobile overflow containment: daily chart gutters must shrink with 28–31 columns. */
@media(max-width:700px){
  html,body{min-width:0;width:100%;max-width:100%;overflow-x:hidden}
  @supports(overflow:clip){html,body{overflow-x:clip}}
  .app{width:100%;max-width:100%;min-width:0;overflow-x:clip}
  #dashboard{contain:inline-size;overflow-x:clip}
  #dashboard .panel{overflow-x:clip}
  #dashboard .bars{column-gap:2px;min-width:0}
  #dashboard .barset{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:1px;min-width:0;flex:1 1 0}
  #dashboard .bar{min-width:0;width:100%}
  #dashboard .barset small{font-size:8px;white-space:nowrap}
  #dashboard .barset:not(:first-child):not(:nth-child(5n)) small{visibility:hidden}
  #dashboard .barset:first-child small{left:0;transform:none}
  #dashboard .barset:last-child small{left:auto;right:0;transform:none}
  #dashboard .barset:nth-last-child(-n+5)::after{left:auto;right:0}
  .side:not(.mobile-open){visibility:hidden;pointer-events:none}
  .side.mobile-open{visibility:visible;pointer-events:auto}
}