/* Free tools (/free): calculators, bank statement check, templates. Tokens: values from design/tokens.css. */
:root{
  --paper:#efede7;--white:#fff;--fill:#f5f4ef;--line:#dfdcd2;--line-soft:#ebe8e0;
  --ink:#16160f;--ink-2:#3c3c34;--ink-3:#5b5b52;
  --gold:#c8a84b;--gold-hover:#d8b85c;--gold-ink:#7a5c00;--gold-tint:#f3ead0;--carbon:#131310;
  --on-dark:#f5f3ec;--on-dark-2:#bdb9ad;
  --pos:#1b6b45;--warn:#8a5a00;--neg:#9e2b2b;
  --shadow:0 1px 2px #14120c0f,0 8px 24px -12px #14120c26;
  --r-lg:22px;--r-md:14px;
  --sans:Inter,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  --stencil:'Big Shoulders Stencil Display',Impact,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --ease:cubic-bezier(.2,.8,.2,1);
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.5 var(--sans);-webkit-font-smoothing:antialiased;min-height:100vh;display:flex;flex-direction:column}
button,input,select{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
a{color:var(--gold-ink)}
.wrap{width:100%;max-width:1040px;margin:0 auto;padding:0 20px}
.num{font-variant-numeric:tabular-nums}

.top{background:var(--carbon);color:var(--on-dark)}
.top .wrap{display:flex;align-items:center;gap:16px;height:60px}
.brand{display:flex;align-items:center;gap:10px;color:var(--gold-hover);text-decoration:none;font:800 20px/1 var(--stencil);letter-spacing:.04em}
.brand svg{width:26px;height:26px}
.top nav{margin-left:auto;display:flex;gap:18px;font-size:15px}
.top nav a{color:var(--on-dark-2);text-decoration:none}
.top nav a:hover,.top nav a[aria-current]{color:var(--on-dark)}
@media (max-width:520px){.top nav .hide-s{display:none}}
.top nav.langs{margin-left:0;gap:2px;font:600 12px/1 var(--mono);letter-spacing:.06em}
.top nav.langs a{padding:6px 7px;border-radius:8px}
.top nav.langs a[aria-current]{color:var(--carbon);background:var(--gold)}
.brand{white-space:nowrap}
@media (max-width:420px){.top .wrap{gap:10px}.top nav{gap:12px;font-size:13px;line-height:1.2}}

main{flex:1;padding:32px 0 64px}
.intro{background:var(--carbon);color:var(--on-dark);border-radius:var(--r-lg);padding:40px;background-image:radial-gradient(90% 80% at 90% 10%,#4a3a12 0%,transparent 60%)}
.eyebrow{font:700 12px/1 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--gold-ink);margin:0 0 14px}
.intro .eyebrow{color:var(--gold-hover);margin-bottom:20px}
.intro h1{font:800 clamp(38px,7vw,60px)/.95 var(--stencil);text-transform:uppercase;letter-spacing:.01em;margin:0}
.intro p{color:var(--on-dark-2);font-size:19px;max-width:620px;margin:16px 0 0}
.private{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:var(--ink-3);margin:16px 4px 0}
.private::before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:var(--pos);margin-top:7px}

/* Calculator: form left, result right (sticky); stacked on phones */
.calc{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:20px;margin-top:20px;align-items:start}
@media (max-width:820px){.calc{grid-template-columns:1fr}}
.panel{background:var(--white);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:28px}
.panel h2{font-size:20px;margin:0 0 4px}
.panel > p{color:var(--ink-3);font-size:15px;margin:0 0 18px}
.field{display:grid;gap:6px;padding:14px 0;border-top:1px solid var(--line-soft)}
.field:first-of-type{border-top:0}
.field label{font-weight:600;font-size:16px}
.field .hint{font-size:14px;color:var(--ink-3);margin:0}
.money,.pct{position:relative}
.money input,.pct input,.int input,.field select{width:100%;height:50px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--fill);padding:0 14px;font-size:18px;font-variant-numeric:tabular-nums}
.money input{padding-left:30px}
.pct input{padding-right:34px}
.money::before{content:"$";position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--ink-3)}
.pct::after{content:"%";position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--ink-3)}
.money input:focus,.pct input:focus,.int input:focus,.field select:focus{outline:none;border-color:var(--gold);background:var(--white);box-shadow:0 0 0 3px var(--gold-tint)}
.minus label::before{content:"\2212\00a0";color:var(--neg)}
.example{background:none;border:0;padding:0;color:var(--gold-ink);text-decoration:underline;cursor:pointer;font-size:15px}

.result{position:sticky;top:20px;background:var(--carbon);color:var(--on-dark);border-radius:var(--r-lg);padding:28px;background-image:radial-gradient(90% 80% at 100% 0%,#4a3a12 0%,transparent 60%)}
.result .eyebrow{color:var(--gold-hover)}
.big{font:600 clamp(40px,7vw,56px)/1 var(--sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin:6px 0 4px}
.big.neg{color:#e58a7f}
.sub{color:var(--on-dark-2);font-size:15px;margin:0}
.verdict{margin:18px 0 0;padding:14px 16px;border-radius:var(--r-md);background:#ffffff12;font-size:16px}
.verdict b{color:var(--on-dark)}
.rows{list-style:none;margin:20px 0 0;padding:0;display:grid;gap:10px}
.rows li{display:grid;grid-template-columns:1fr auto;gap:4px 12px;font-size:15px;color:var(--on-dark-2)}
.rows li b{color:var(--on-dark);font-weight:600;font-variant-numeric:tabular-nums}
.rows li i{grid-column:1/-1;display:block;height:6px;border-radius:99px;background:#ffffff1a;overflow:hidden}
.rows li i span{display:block;height:100%;background:var(--gold);border-radius:99px;transition:width .4s var(--ease)}
.rows li.total{border-top:1px solid #ffffff26;padding-top:10px;color:var(--on-dark)}
.result .note{font-size:13px;color:var(--on-dark-2);margin:18px 0 0}

/* Call to action */
.cta{margin-top:20px;background:var(--white);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:28px;display:flex;flex-wrap:wrap;align-items:center;gap:16px 28px;border-left:6px solid var(--gold)}
.cta div{flex:1;min-width:240px}
.cta h3{font-size:21px;margin:0}
.cta p{color:var(--ink-2);margin:6px 0 0;font-size:15px}
.btn{display:inline-flex;align-items:center;justify-content:center;height:52px;padding:0 24px;border-radius:var(--r-md);background:var(--gold);color:var(--carbon);font-weight:600;text-decoration:none;border:0;cursor:pointer}
.btn:hover{background:var(--gold-hover)}
.btn.ghost{background:none;box-shadow:inset 0 0 0 1px var(--line);color:var(--ink)}
.btn.ghost:hover{background:var(--fill)}
.more{margin-top:28px}
.more h2{font-size:20px;margin:0 0 12px}

/* Hub cards */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:16px;margin-top:20px}
.card{background:var(--white);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:24px;display:flex;flex-direction:column;gap:8px;text-decoration:none;color:var(--ink);border-top:4px solid transparent;transition:transform .2s var(--ease),border-color .2s}
.card:hover{transform:translateY(-2px);border-top-color:var(--gold)}
.card .tag{font:700 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--gold-ink)}
.card h3{font-size:20px;margin:4px 0 0}
.card p{margin:0;color:var(--ink-2);font-size:15px}
.card .go{margin-top:auto;padding-top:10px;font-weight:600;color:var(--gold-ink)}
.card.feature{grid-column:1/-1;background:var(--carbon);color:var(--on-dark);background-image:radial-gradient(70% 120% at 100% 0%,#4a3a12 0%,transparent 60%)}
.card.feature p{color:var(--on-dark-2)}
.card.feature .tag{color:var(--gold-hover)}
.card .art{display:block;margin:-8px -8px 8px;border-radius:var(--r-md);background:var(--paper);overflow:hidden}
.card .art img{display:block;width:100%;height:auto;transition:transform .3s var(--ease)}
.card:hover .art img{transform:scale(1.03)}
.card.feature{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:center;gap:8px 32px;padding:32px}
.card.feature .art{order:2;margin:0;background:none;border-radius:var(--r-md)}
.card.feature .body{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.card.feature h3{font-size:26px}
.card.feature .go.btn{margin-top:8px;padding:0 28px;color:var(--carbon);font-size:17px}
.card.feature:hover .go.btn{background:var(--gold-hover)}
.card.feature:hover{border-top-color:transparent;box-shadow:0 0 0 2px var(--gold),var(--shadow)}
@media (max-width:700px){.card.feature{grid-template-columns:1fr;padding:24px}.card.feature .art{order:0;max-width:360px}.card.feature .go.btn{width:100%}}
@media (prefers-reduced-motion:reduce){.card,.card .art img{transition:none}.card:hover,.card:hover .art img{transform:none}}

/* Templates */
.tpl{display:grid;grid-template-columns:auto 1fr auto;gap:8px 20px;align-items:center}
.tpl .ico{width:52px;height:52px;border-radius:var(--r-md);background:var(--gold-tint);color:var(--gold-ink);display:grid;place-items:center;font:700 13px/1 var(--mono)}
.tpl h3{margin:0;font-size:19px}
.tpl p{margin:4px 0 0;color:var(--ink-2);font-size:15px}
@media (max-width:640px){.tpl{grid-template-columns:auto 1fr}.tpl .btn{grid-column:1/-1}}

/* Bank statement check */
.drop{margin-top:20px;border:2px dashed var(--line);border-radius:var(--r-lg);background:var(--white);padding:36px 24px;text-align:center;transition:border-color .2s,background .2s}
.drop.over{border-color:var(--gold);background:var(--gold-tint)}
.drop h2{margin:0;font-size:22px}
.drop p{margin:8px auto 0;color:var(--ink-3);font-size:15px;max-width:560px}
.drop .btn{margin-top:18px}
.files{list-style:none;padding:0;margin:14px 0 0;display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.files li{background:var(--fill);border-radius:99px;padding:6px 12px;font-size:14px}
.howto{margin-top:12px;font-size:15px;color:var(--ink-2)}
.howto summary{cursor:pointer;font-weight:600;color:var(--ink)}
.cols{text-align:left;max-width:760px;margin:16px auto 0}
.howto ul{margin:10px 0 0;padding-left:20px}
.map{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:12px}
.map label{display:grid;gap:4px;font-size:14px;font-weight:600}
.map select{height:44px;border:1px solid var(--line);border-radius:10px;background:var(--fill);padding:0 10px}
.check{display:flex;gap:10px;align-items:center;margin-top:14px;font-size:15px}
.err{color:var(--neg);font-size:15px;margin-top:12px}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:20px}
@media (max-width:820px){.kpis{grid-template-columns:repeat(2,1fr)}}
.kpi{background:var(--white);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:18px 20px}
.kpi .k{font:700 11px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.kpi .v{font-size:26px;font-weight:600;margin-top:8px;font-variant-numeric:tabular-nums}
.kpi .v.pos{color:var(--pos)}.kpi .v.neg{color:var(--neg)}
.kpi .s{font-size:13px;color:var(--ink-3);margin-top:2px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}
@media (max-width:820px){.two{grid-template-columns:1fr}}
.cats{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.cats li{display:grid;grid-template-columns:1fr auto;gap:4px 12px;font-size:15px}
.cats li b{font-variant-numeric:tabular-nums}
.cats li small{color:var(--ink-3)}
.cats li i{grid-column:1/-1;display:block;height:8px;border-radius:99px;background:var(--line-soft);overflow:hidden}
.cats li i span{display:block;height:100%;border-radius:99px;background:var(--gold)}
.cats li.unsorted i span{background:var(--ink-3)}
.cats li.personal i span{background:var(--neg)}
table.list{width:100%;border-collapse:collapse;font-size:15px}
table.list th,table.list td{text-align:left;padding:9px 6px;border-bottom:1px solid var(--line-soft);vertical-align:top}
table.list th{font:700 11px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
table.list td.r,table.list th.r{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.scroll{overflow-x:auto}
.flags{display:grid;gap:12px;margin-top:20px}
.flag{background:var(--white);border-radius:var(--r-lg);box-shadow:var(--shadow);padding:18px 22px;border-left:5px solid var(--gold)}
.flag.bad{border-left-color:var(--neg)}
.flag h3{margin:0;font-size:17px}
.flag p{margin:6px 0 0;color:var(--ink-2);font-size:15px}
.again{margin-top:18px;background:none;border:0;color:var(--ink-3);text-decoration:underline;cursor:pointer;font-size:15px;padding:0}

/* Category quiz */
.quiz{margin-top:20px}
.q-top{display:flex;justify-content:space-between;align-items:center;gap:12px}
.q-top .eyebrow{margin:0}
.q-score{font-size:14px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.q-bar{height:6px;border-radius:99px;background:var(--line-soft);margin:14px 0 22px;overflow:hidden}
.q-bar span{display:block;height:100%;width:0;background:var(--gold);border-radius:99px;transition:width .4s var(--ease)}
.bankline{display:grid;grid-template-columns:auto 1fr auto;gap:6px 16px;align-items:center;background:var(--fill);border:1px solid var(--line);border-radius:var(--r-md);padding:16px 18px;font-size:16px}
.bankline .date{color:var(--ink-3);font-size:14px}
.bankline .desc{font:600 15px/1.3 var(--mono);overflow-wrap:anywhere}
.bankline .amt{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.bankline .amt.in{color:var(--pos)}
@media (max-width:520px){.bankline{grid-template-columns:1fr auto}.bankline .date{grid-column:1/-1}}
.ctx{margin:12px 2px 0;color:var(--ink-2);font-size:16px}
.quiz h2{margin:24px 0 12px;font-size:18px}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:620px){.opts{grid-template-columns:1fr}}
.opt{min-height:54px;text-align:left;padding:12px 16px;border-radius:var(--r-md);border:1px solid var(--line);background:var(--white);cursor:pointer;font-size:16px;font-weight:500;transition:border-color .15s,background .15s}
.opt:hover:not(:disabled){border-color:var(--gold);background:var(--gold-tint)}
.opt:disabled{cursor:default;color:var(--ink-3)}
.opt .cat{display:block}
.opt .gl{display:block;margin-top:2px;font-size:13px;font-weight:400;color:var(--ink-3)}
.opt.right::before,.opt.wrong::before{float:left}
.m-gl{font-size:14px;color:var(--ink-3)}
.opt.right{border-color:var(--pos);background:#1b6b4514;color:var(--ink);box-shadow:inset 0 0 0 1px var(--pos)}
.opt.wrong{border-color:var(--neg);background:#9e2b2b12;color:var(--ink);box-shadow:inset 0 0 0 1px var(--neg)}
.opt.right::before{content:"\2713\00a0";color:var(--pos);font-weight:700}
.opt.wrong::before{content:"\2715\00a0";color:var(--neg);font-weight:700}
.fb{margin-top:18px;padding:18px 20px;border-radius:var(--r-md);background:var(--fill);border-left:5px solid var(--pos)}
.fb.no{border-left-color:var(--neg)}
.fb p{margin:8px 0 0;color:var(--ink-2);font-size:15px}
.fb .fb-h{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;color:var(--ink);font-size:17px}
.fb .cost{color:var(--neg)}
.kind{display:inline-block;font:700 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;padding:6px 8px;border-radius:99px;background:var(--gold-tint);color:var(--gold-ink)}
.k-notexpense,.k-notincome{background:var(--line-soft);color:var(--ink-2)}
.q-intro .rules{list-style:none;margin:0 0 16px;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
@media (max-width:520px){.q-intro .rules{grid-template-columns:1fr}}
.q-intro .rules li{background:var(--fill);border-radius:var(--r-md);padding:16px;display:grid;gap:4px}
.q-intro .rules b{font:800 40px/1 var(--stencil);color:var(--gold-ink)}
.q-intro .rules span{font-size:15px;color:var(--ink-2)}
.q-intro p{color:var(--ink-2);font-size:15px;margin:0 0 18px}
.q-clockrow{position:relative;display:flex;align-items:center;gap:14px;margin:12px 0 18px}
.q-clock{font:600 32px/1 var(--sans);font-variant-numeric:tabular-nums;min-width:84px}
.q-clock.low{color:var(--neg)}
.q-clockrow .q-bar{flex:1;margin:0}
.q-bar span{transition:none}
.q-bonus{position:absolute;left:84px;top:-6px;font-weight:700;color:var(--pos);opacity:0;pointer-events:none}
.q-bonus.pop{animation:q-pop .9s var(--ease)}
@keyframes q-pop{0%{opacity:0;transform:translateY(6px)}20%{opacity:1}100%{opacity:0;transform:translateY(-14px)}}
.bankline{grid-template-columns:1fr auto}
.m-ctx{margin-top:4px!important;color:var(--ink-3);font-size:14px}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.q-done{margin-top:20px}
.q-done .result{position:static}
.q-done .big:focus{outline:none}
.missed{list-style:none;margin:0;padding:0;display:grid;gap:0}
.missed li{padding:16px 0;border-top:1px solid var(--line-soft)}
.missed li:first-child{border-top:0;padding-top:0}
.missed p{margin:0}
.m-line{display:flex;justify-content:space-between;gap:12px;font:600 14px/1.3 var(--mono)}
.m-a{font-family:var(--sans);font-variant-numeric:tabular-nums;white-space:nowrap}
.m-fix{margin-top:8px!important;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-size:15px}
.m-why{margin-top:6px!important;color:var(--ink-2);font-size:15px}

/* Category quiz: leaderboard */
.jgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
@media (max-width:620px){.jgrid{grid-template-columns:1fr}}
.join .field:first-of-type{border-top:1px solid var(--line-soft)}
.join input{width:100%;height:50px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--fill);padding:0 14px;font-size:17px}
.join input:focus{outline:none;border-color:var(--gold);background:var(--white);box-shadow:0 0 0 3px var(--gold-tint)}
.join input[aria-invalid]{border-color:var(--neg)}
.join .opt-l{font-weight:400;color:var(--ink-3)}
.join .btn{margin-top:12px}
.join .btn:disabled{opacity:.6;cursor:wait}
.joined{margin:4px 0 0;padding:14px 16px;border-radius:var(--r-md);background:var(--gold-tint);color:var(--ink);font-weight:600}
.board{margin-top:20px}
.b-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:12px 20px}
.b-head h2{margin:0}
.b-filters{display:flex;flex-wrap:wrap;gap:10px}
.b-filters label{display:grid;gap:4px;font-size:13px;font-weight:600;color:var(--ink-3)}
.b-filters select{height:42px;border:1px solid var(--line);border-radius:10px;background:var(--fill);padding:0 10px;font-size:15px;color:var(--ink);max-width:200px}
.b-note{margin:8px 0 12px!important}
#b-table td:first-child,#b-table th:first-child{width:44px;color:var(--ink-3);font-variant-numeric:tabular-nums}
#b-table td:nth-child(2){font-weight:600;white-space:nowrap}
#b-table td{white-space:nowrap}
#b-table tr.me td{background:var(--gold-tint)}
.b-empty{color:var(--ink-3);font-size:15px;margin:12px 0 0}
@media (max-width:520px){#b-table th:nth-child(4),#b-table td:nth-child(4){display:none}}

.fine{font-size:13px;color:var(--ink-3);margin-top:18px}
footer{padding:24px 0 32px;font-size:13px;color:var(--ink-3)}
footer a{color:inherit}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
