/* ============================================================
   HAPPY WALLET · SAMURAI INK THEME
   A dark, grunge graphic-novel treatment. All original selectors
   preserved; colours re-skin to the void / blood / gold palette.
   ============================================================ */
:root{
  --ink:#e9dfc6;            /* primary text · bone paper    */
  --muted:#9d8f74;          /* secondary text · aged gold   */
  --paper:#0a0907;          /* page · deep void             */
  --cream:#161310;          /* alt surface · coal           */
  --line:#342a1d;           /* borders · tea-stained line   */
  --green:#dfb25c;          /* primary accent · obanan gold */
  --mint:#241c10;           /* hover wash                   */
  --purple:#a78bce;         /* charts                       */
  --orange:#e07a4f;
  --bone:#e9dfc6;
  --bone-dim:#9d8f74;
  --blood:#b62026;
  --blood-hi:#e64a2e;
  --gold:#dfb25c;
  --gold-dim:#a98c46;
  --shadow:0 14px 40px rgba(0,0,0,.5);
}
*{box-sizing:border-box}
body{
  margin:0;background:var(--paper);color:var(--ink);font-size:14px;
  font-family:"DM Sans",sans-serif;
  background:
    radial-gradient(90% 55% at 50% -5%,rgba(122,20,26,.16),transparent 60%),
    radial-gradient(70% 45% at 105% 100%,rgba(182,32,38,.08),transparent 55%),
    var(--paper);
}
/* film grain over everything */
body::before{
  content:"";position:fixed;inset:0;z-index:45;pointer-events:none;opacity:.05;mix-blend-mode:overlay;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='260' height='260'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23g)'/></svg>") repeat;
}
/* scanlines + vignette */
body::after{
  content:"";position:fixed;inset:0;z-index:46;pointer-events:none;
  background:
    repeating-linear-gradient(to bottom,transparent 0 3px,rgba(0,0,0,.22) 3px 4px),
    radial-gradient(110% 90% at 50% 38%,transparent 45%,rgba(0,0,0,.55) 100%);
  opacity:.5;
}
/* water kanji wash — decorative only */
.wash{position:fixed;z-index:0;pointer-events:none;user-select:none;
  right:-3vw;top:10vh;font-family:"Yu Mincho","Hiragino Mincho ProN","MS PMincho",serif;
  font-size:42vh;line-height:1;color:transparent;opacity:.05;
  -webkit-text-stroke:1px rgba(223,178,92,.22);transform:rotate(-8deg)}
.app-shell{display:flex;min-height:100vh;position:relative;z-index:1}
.sidebar{width:244px;background:
  linear-gradient(180deg,#131009 0%,#0e0c08 100%);
  border-right:1px solid #2c2418;
  padding:29px 16px 20px;display:flex;flex-direction:column;position:fixed;height:100vh}
.sidebar::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.08;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='260' height='260'><filter id='g'><feTurbulence type='fractalNoise' baseFrequency='0.95' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23g)'/></svg>") repeat}
.brand{color:var(--ink);font-size:21px;font-weight:700;letter-spacing:-1px;text-decoration:none;display:flex;align-items:center;gap:10px;padding:0 10px;position:relative;z-index:1}
.brand-mark{display:grid;place-items:center;background:linear-gradient(135deg,var(--gold),#8a6a24);color:#1a1208;
  width:28px;height:28px;border-radius:4px;font-family:Georgia,serif;font-style:italic;font-size:17px;font-weight:800;
  box-shadow:0 0 14px rgba(223,178,92,.35),inset 0 -2px 0 rgba(0,0,0,.25)}
.nav-links{margin-top:43px;display:grid;gap:5px;position:relative;z-index:1}
.nav-links a{height:43px;color:#a89a7e;text-decoration:none;display:flex;align-items:center;gap:13px;padding:0 12px;border-radius:6px;font-weight:500;border-left:2px solid transparent}
.nav-links a span{width:17px;text-align:center;font-size:18px}
.nav-links a:hover,.nav-links a.active{background:linear-gradient(90deg,rgba(223,178,92,.10),transparent);color:var(--gold);border-left-color:var(--blood);box-shadow:none}
.nav-links b{margin-left:auto;background:#7c1418;font-size:10px;color:#f0d9c0;border-radius:8px;padding:2px 6px}
.sidebar-bottom{margin-top:auto;position:relative;z-index:1}
.text-button{border:0;background:none;color:#93856a;padding:11px;font:inherit;cursor:pointer}
.text-button:hover{color:var(--gold)}
.profile{border:0;border-top:1px solid #2c2418;background:transparent;margin-top:14px;padding:18px 8px 0;width:100%;display:flex;align-items:center;text-align:left;gap:9px;color:var(--ink)}
.profile strong,.profile small{display:block}
.profile small{font-size:11px;color:var(--muted);margin-top:2px}
.profile i{font-style:normal;color:var(--gold);margin-left:auto}
.avatar{background:linear-gradient(135deg,#7c1418,#3a0c0e);color:#f0d9c0;border-radius:50%;font-size:10px;font-weight:bold;width:29px;height:29px;display:grid;place-items:center;box-shadow:0 0 0 1px #5a4030 inset}
main{margin-left:244px;width:calc(100% - 244px)}
.topbar{height:76px;border-bottom:1px solid var(--line);padding:0 5.5%;display:flex;align-items:center;justify-content:space-between;background:rgba(10,9,7,.7);backdrop-filter:blur(3px)}
.date-picker{display:flex;gap:14px;align-items:center;color:var(--bone);font-size:15px;font-weight:700;font-family:Georgia,serif;letter-spacing:.02em}
.date-picker button,.icon-button,.more{border:0;background:none;color:inherit;font:inherit;cursor:pointer}
.date-picker button{font-size:23px;line-height:12px;color:var(--gold-dim)}
.top-actions{display:flex;gap:18px;align-items:center}
.icon-button{font-size:21px;position:relative;color:var(--bone-dim)}
.icon-button em{position:absolute;background:var(--blood-hi);width:6px;height:6px;border-radius:50%;top:3px;right:1px;box-shadow:0 0 6px rgba(230,74,46,.8)}
.add-button,.fix-button,.save-button{border:0;background:linear-gradient(135deg,var(--gold),#a5822f);color:#1a1208;border-radius:5px;
  padding:11px 16px;font:700 13px "DM Sans";cursor:pointer;box-shadow:inset 0 -2px 0 rgba(0,0,0,.22),0 4px 14px rgba(223,178,92,.16);letter-spacing:.02em}
.add-button:hover,.fix-button:hover,.save-button:hover{filter:brightness(1.08)}
.mobile-menu{display:none}
.bottom-nav{display:none}
.page-content{padding:54px 5.5% 72px;max-width:1450px;margin:auto}
.page-content::before{content:"";display:block;height:2px;width:74px;background:linear-gradient(90deg,var(--blood),var(--gold));margin-bottom:26px;opacity:.8}
.eyebrow{font-size:10px;font-weight:700;color:var(--gold-dim);letter-spacing:2.5px;text-transform:uppercase}
.title-row{display:flex;justify-content:space-between;align-items:end;margin-top:9px}
.title-row h1{font:700 36px/1.1 Fraunces,serif;letter-spacing:-1.2px;margin:0;color:var(--bone)}
.subtitle{margin:8px 0 0;color:var(--muted);font-size:15px}
.privacy-pill{color:#efc98f;font-size:12px;background:rgba(182,32,38,.14);border:1px solid rgba(223,178,92,.25);padding:6px 12px;border-radius:20px}
.attention-card{margin:31px 0 26px;border:1px solid #5a4a24;background:linear-gradient(90deg,rgba(223,178,92,.10),transparent);min-height:75px;border-radius:7px;display:flex;align-items:center;padding:15px 19px;gap:13px;border-left:3px solid var(--gold)}
.attention-icon{width:25px;height:25px;background:#7c1418;color:#f0d9c0;border-radius:50%;display:grid;place-items:center;font-weight:bold}
.attention-card strong{font-size:13px;color:var(--bone)}
.attention-card p{margin:4px 0 0;color:var(--muted);font-size:12px}
.attention-card button{margin-left:auto;background:transparent;border:0;color:var(--gold);font-weight:700;font:inherit;white-space:nowrap;cursor:pointer}
.attention-card button span{font-size:18px;margin-left:6px}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}
.metric-card{background:#12100c;border:1px solid var(--line);border-radius:7px;padding:19px;min-height:175px;overflow:hidden;position:relative;
  box-shadow:0 10px 26px rgba(0,0,0,.35)}
.metric-card::after{content:"";position:absolute;top:0;right:0;border-style:solid;border-width:0 0 26px 26px;border-color:transparent transparent rgba(223,178,92,.12) transparent}
.metric-card.primary{background:linear-gradient(135deg,#241c10,#171208);border-color:#6a5420;color:var(--bone);box-shadow:0 14px 34px rgba(0,0,0,.5),inset 0 1px 0 rgba(223,178,92,.18)}
.metric-label{color:var(--muted);font-size:12px}
.primary .metric-label{color:#cfb98a}
.info{border:1px solid #5a4c32;background:none;color:var(--muted);font-size:9px;border-radius:50%;margin-left:3px}
.metric-number{font:500 26px Fraunces,serif;letter-spacing:-.6px;margin-top:15px;color:var(--bone)}
.metric-foot{font-size:11px;color:var(--muted);margin-top:9px}
.metric-foot strong{color:var(--bone)}
.positive{color:#6ecfa0}
.primary .positive{color:#9fe3bd}
.metric-foot span{color:#84785f}
.primary .metric-foot span{color:#c9b993}
.sparkline{position:absolute;right:0;left:0;bottom:8px;height:50px;color:var(--gold);opacity:.8}
.mini-bars{display:flex;gap:4px;position:absolute;bottom:21px;align-items:end;height:22px}
.mini-bars i{width:13px;background:rgba(223,178,92,.22);border-radius:2px;height:var(--h,10px)}
.mini-bars i:nth-child(2n){height:17px}
.mini-bars i:nth-child(3n){height:22px;background:rgba(223,178,92,.5)}
.allocation{height:7px;border-radius:5px;display:flex;gap:2px;overflow:hidden;margin-top:27px}
.allocation span:nth-child(1){background:#b62026;flex:61}
.allocation span:nth-child(2){background:#a78bce;flex:26}
.allocation span:nth-child(3){background:#e0a94d;flex:13}
.allocation-label{display:flex;justify-content:space-between;font-size:9px;color:var(--muted);margin-top:5px}
.allocation-label i{font-style:normal}
.progress{height:6px;background:#241d12;border-radius:6px;margin-top:26px;overflow:hidden}
.progress span{height:100%;display:block;border-radius:5px;background:linear-gradient(90deg,var(--blood),var(--gold))}
.content-grid{display:grid;grid-template-columns:1.25fr .95fr;gap:15px;margin-top:15px}
.panel,.spending-section{background:linear-gradient(160deg,#14110d,#100d09);border:1px solid var(--line);border-radius:7px;padding:22px;
  position:relative;box-shadow:0 10px 26px rgba(0,0,0,.35)}
.panel::before{content:"";position:absolute;top:-1px;left:22px;height:3px;width:52px;background:linear-gradient(90deg,var(--blood),var(--gold))}
.panel-header{display:flex;justify-content:space-between;align-items:start}
.panel-header h2,.section-heading h2{font:600 19px Fraunces,serif;letter-spacing:-.3px;margin:0;color:var(--bone)}
.panel-header p,.section-heading p{font-size:12px;color:var(--muted);margin:5px 0 0}
.more{font-size:12px;font-weight:600;color:var(--gold);white-space:nowrap}
.more:hover{color:var(--blood-hi)}
.timeline{margin-top:17px}
.timeline-item{border-top:1px solid #2a2116;display:grid;grid-template-columns:39px 31px 1fr auto;gap:11px;align-items:center;padding:10px 0}
.day{text-align:center;border-right:1px solid #2c2418}
.day b{display:block;font:500 15px Fraunces;color:var(--bone)}
.day span{font-size:8px;color:#6f6248}
.item-icon{width:27px;height:27px;display:grid;place-items:center;border-radius:5px;font-size:14px}
.purple{color:#c3ace8;background:rgba(167,139,206,.16)}
.green{color:#7fd6a4;background:rgba(63,158,120,.16)}
.orange{color:#f0906b;background:rgba(224,122,79,.16)}
.beige{color:#d9bc7c;background:rgba(223,178,92,.14)}
.item-copy strong,.item-copy span{display:block}
.item-copy strong{font-size:12px;color:var(--bone)}
.item-copy span{font-size:10px;color:var(--muted);margin-top:2px}
.amount{font:500 12px "DM Mono";color:var(--bone-dim)}
.amount.income{color:#6ecfa0}
.incomplete{opacity:.75}
.fix-button{font-size:10px;padding:7px 9px;background:rgba(223,178,92,.12);color:var(--gold)}
.earnings{display:flex;justify-content:space-between;align-items:center;background:rgba(223,178,92,.08);border:1px solid #4a3a1c;padding:12px;border-radius:6px;margin:17px 0 8px}
.earnings span{display:block;color:var(--muted);font-size:11px}
.earnings strong{display:block;font:500 18px Fraunces;color:var(--gold);margin-top:4px}
.rate-badge{color:#efcf93!important;background:#3a270f;padding:4px 7px;border-radius:4px;font-size:10px!important;font-weight:600}
.account-row{display:flex;align-items:center;gap:9px;padding:11px 1px;border-bottom:1px solid #262014}
.account-row:hover{background:rgba(255,255,255,.02)}
.bank-logo{width:29px;height:29px;border-radius:5px;display:grid;place-items:center;font-size:9px;font-weight:700}
.ing{background:#f36e28;color:#fff}
.revo{background:#e8e2d8;color:#141414;font-size:14px}
.account-row>div:nth-child(2){flex:1}
.account-row strong,.account-row small{display:block}
.account-row strong{font-size:11px;color:var(--bone)}
.account-row small{font-size:9px;color:var(--muted);margin-top:3px}
.account-row>span{font:500 11px "DM Mono";color:var(--bone)}
.account-row>span small{display:inline}
.source-note{font-size:9px;color:var(--muted);margin-top:12px}
.source-note button{color:var(--gold);font:inherit;font-weight:700;background:none;border:0;padding:0;cursor:pointer}
.section-heading{display:flex;justify-content:space-between;align-items:end;margin:44px 0 16px}
.recommendation-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}
.recommendation{border:1px solid var(--line);background:#12100c;border-radius:7px;padding:20px;min-height:205px;box-shadow:0 10px 26px rgba(0,0,0,.3)}
.rec-top{display:flex;justify-content:space-between;align-items:center}
.rec-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:6px;font-size:17px}
.savings{background:rgba(63,158,120,.16);color:#7fd6a4}
.invest{background:rgba(167,139,206,.16);color:#c3ace8}
.spend{background:rgba(224,122,79,.16);color:#f0906b}
.confidence{font-size:8px;color:#7fd6a4;background:rgba(63,158,120,.14);padding:4px 6px;border-radius:3px;letter-spacing:.4px}
.confidence.medium{color:#e0c06a;background:rgba(223,178,92,.12)}
.recommendation h3{font:600 16px Fraunces;margin:17px 0 7px;color:var(--bone)}
.recommendation p{font-size:12px;line-height:1.45;color:var(--muted);margin:0}
.recommendation p strong{color:var(--bone)}
.evidence{font-size:9px;color:var(--muted);border-top:1px solid #2a2116;margin-top:16px;padding-top:11px}
.evidence span{color:var(--gold);margin-right:4px}
.evidence button{border:0;background:none;color:var(--gold);font:600 9px "DM Sans";float:right;cursor:pointer}
.spending-section{margin-top:15px}
.spending-content{display:flex;align-items:center;gap:50px;margin-top:20px}
.donut{width:150px;height:150px;flex:0 0 auto;border-radius:50%;background:conic-gradient(#7c1418 0 61%,#e07a4f 61% 81%,#dfb25c 81% 94%,#3f8f86 94%);display:grid;place-items:center}
.donut>div{height:109px;width:109px;background:#0f0d0a;border-radius:50%;display:grid;place-content:center;text-align:center}
.donut strong{font:500 18px Fraunces;color:var(--bone)}
.donut span{font-size:10px;color:var(--muted)}
.category-list{display:grid;gap:11px;flex:1}
.category-list>div{display:grid;grid-template-columns:12px 1fr 60px 35px;align-items:center;gap:8px;font-size:12px}
.category-list strong{font:500 11px "DM Mono";text-align:right;color:var(--bone)}
.category-list small{text-align:right;color:var(--muted);font-size:10px}
.category-dot{width:8px;height:8px;border-radius:50%}
.home{background:#b62026}
.family{background:#e07a4f}
.living{background:#dfb25c}
.self{background:#3f8f86}
.modal-backdrop{position:fixed;inset:0;background:rgba(4,4,3,.7);display:none;align-items:center;justify-content:center;padding:20px;z-index:9;backdrop-filter:blur(2px)}
.modal-backdrop.show{display:flex}
.modal{background:#14110d;width:min(540px,100%);border-radius:9px;padding:30px;position:relative;box-shadow:0 28px 90px rgba(0,0,0,.7),inset 0 0 0 1px #2c2418,inset 0 3px 0 var(--blood)}
.modal::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--blood),var(--gold))}
.close{position:absolute;right:18px;top:15px;border:0;background:none;font-size:25px;color:var(--muted);cursor:pointer}
.close:hover{color:var(--blood-hi)}
.modal-icon{width:39px;height:39px;display:grid;place-items:center;background:rgba(223,178,92,.12);color:var(--gold);border-radius:6px;font-size:23px}
.modal h2{font:600 26px Fraunces;margin:10px 0 6px;color:var(--bone)}
.modal-intro{font-size:13px;color:var(--muted);line-height:1.5;margin:0}
.add-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:21px}
.add-options button{border:1px solid var(--line);background:#100d09;border-radius:6px;text-align:left;padding:13px;cursor:pointer;color:var(--ink)}
.add-options button:hover{border-color:#6a5420;background:#171208;box-shadow:0 0 0 1px rgba(223,178,92,.25)}
.add-options span,.add-options strong,.add-options small{display:block}
.add-options span{color:var(--gold);font-size:18px}
.add-options strong{font-size:12px;margin-top:6px;color:var(--bone)}
.add-options small{font-size:10px;color:var(--muted);margin-top:3px}
.form-area{display:none;margin-top:18px;border-top:1px solid var(--line);padding-top:16px}
.form-area.show{display:flex;gap:10px;align-items:end}
.form-area label{flex:1;font-size:11px;color:var(--muted)}
.form-area input{width:100%;display:block;margin-top:5px;border:1px solid #4a3b26;border-radius:5px;padding:9px;font:14px "DM Mono";background:#0d0b08;color:var(--bone);outline:none}
.form-area input:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(223,178,92,.18)}
.save-button{padding:10px 13px}
/* scrollbars */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#3a2f20;border-radius:6px;border:2px solid #0d0b08}
::-webkit-scrollbar-track{background:transparent}
::selection{background:rgba(182,32,38,.6);color:var(--bone)}
@media(max-width:1020px){
  .metric-grid{grid-template-columns:repeat(2,1fr)}
  .recommendation-grid{grid-template-columns:1fr}
  .recommendation{min-height:0}
  .content-grid{grid-template-columns:1fr}
  .cash-panel{min-height:0}
}
@media(max-width:700px){
  .sidebar{display:none}
  .bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:8;background:#0d0b08;border-top:1px solid var(--line);padding:5px 4px calc(5px + env(safe-area-inset-bottom))}
  .bottom-nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0 3px;color:#93856a;text-decoration:none;font-size:9px;font-weight:600}
  .bottom-nav a span:first-child{font-size:20px;line-height:1}
  .bottom-nav a.active{color:var(--gold);text-shadow:0 0 12px rgba(223,178,92,.5)}
  main{margin:0;width:100%}
  .topbar{height:auto;min-height:63px;padding:calc(10px + env(safe-area-inset-top)) 18px 10px}
  .mobile-menu{display:block;border:0;background:none;font-size:20px;color:var(--bone)}
  .date-picker{display:none}
  .page-content{padding:35px 17px calc(96px + env(safe-area-inset-bottom))}
  .title-row{align-items:start}
  .title-row h1{font-size:30px}
  .privacy-pill{display:none}
  .attention-card{align-items:start;margin:25px 0 17px;padding:13px}
  .attention-card p{line-height:1.35}
  .attention-card button{font-size:0;padding:4px}
  .attention-card button span{font-size:18px}
  .metric-grid{gap:9px}
  .metric-card{padding:14px;min-height:145px}
  .metric-number{font-size:22px}
  .content-grid{margin-top:9px;gap:9px}
  .panel,.spending-section{padding:16px}
  .section-heading{margin-top:30px}
  .section-heading .more{display:none}
  .recommendation-grid{gap:9px}
  .spending-content{gap:18px}
  .donut{width:120px;height:120px}
  .donut>div{width:86px;height:86px}
  .category-list>div{grid-template-columns:10px 1fr 54px}
  .category-list small{display:none}
  .top-actions{gap:10px}
  .icon-button{display:none}
  .add-button{padding:9px 11px}
  .modal{padding:24px 18px}
  .add-options{grid-template-columns:1fr}
  .form-area.show{display:block}
  .save-button{margin-top:10px;width:100%}
  .modal-backdrop{align-items:flex-end;padding:0}
  .modal{width:100%;max-height:88vh;overflow:auto;border-radius:12px 12px 0 0;padding:24px 18px calc(18px + env(safe-area-inset-bottom))}
  .proj-row{flex-wrap:wrap}
  .proj-cell{min-width:60px}
}