:root{--ink:#1f2421;--paper:#f4efe6;--tomato:#d9532c;--sage:#5b7f6a;--mustard:#e0a93b;--line:#d8d0c2;--input:#fff7e0;--card:#fbf8f2;--tomato-ink:#b8401d}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.55 "Atkinson Hyperlegible",system-ui,sans-serif}
h1,h2,h3{font-family:"Bricolage Grotesque","Atkinson Hyperlegible",sans-serif;font-weight:700;line-height:1.12;margin:0 0 .5em;letter-spacing:-.01em}
h1{font-size:clamp(2rem,6vw,3.2rem)}h2{font-size:1.5rem}h3{font-size:1.15rem}
a{color:var(--tomato-ink)}a:hover{color:var(--ink)}
:focus-visible{outline:3px solid var(--ink);outline-offset:2px}
.wrap{max-width:1040px;margin:0 auto;padding:0 16px}
.narrow{max-width:680px}
header.site{border-bottom:2px solid var(--ink)}
header.site .wrap{display:flex;flex-wrap:wrap;gap:8px 24px;align-items:center;justify-content:space-between;padding-top:14px;padding-bottom:14px}
.brand{font:700 1.25rem "Bricolage Grotesque",sans-serif;color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:10px}
.brand i{display:inline-block;width:14px;height:14px;background:var(--tomato);box-shadow:5px 5px 0 var(--sage)}
nav.main a{margin-right:18px;color:var(--ink);text-decoration:none;font-weight:700}
nav.main a:hover,nav.main a[aria-current]{text-decoration:underline;text-decoration-color:var(--tomato);text-decoration-thickness:3px;text-underline-offset:5px}
.hero{padding:40px 0 20px}
.hero p.lead{font-size:1.2rem;max-width:34em;margin:0}
.crumb{font-size:.95rem;margin:22px 0 0}
.tool{display:grid;gap:20px;margin:24px 0 8px}
@media(min-width:860px){.tool{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:start}}
.panel{background:var(--card);border:2px solid var(--ink);padding:20px}
.panel h2{margin-bottom:14px}
label{display:block;font-weight:700;margin:14px 0 4px}
label small{font-weight:400;color:#4a524d;display:block}
input[type=number],input[type=text],select{width:100%;font:inherit;padding:9px 10px;border:2px solid var(--ink);background:var(--input);border-radius:0;color:var(--ink)}
.row{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:end}
.check{display:flex;gap:10px;align-items:center;font-weight:700;margin:16px 0 0}
.check input{width:20px;height:20px;accent-color:var(--tomato)}
.btn{display:inline-block;font:700 1rem "Atkinson Hyperlegible",sans-serif;background:var(--tomato);color:#fff;border:2px solid var(--ink);padding:10px 18px;cursor:pointer;text-decoration:none;box-shadow:4px 4px 0 var(--ink)}
.btn:hover{background:var(--tomato-ink);color:#fff}
.btn:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink)}
.btn.alt{background:var(--paper);color:var(--ink)}
.btn.alt:hover{background:var(--input);color:var(--ink)}
.btn.small{padding:6px 12px;font-size:.9rem;box-shadow:3px 3px 0 var(--ink)}
.receipt{background:#fff;border:2px solid var(--ink);padding:20px;font-variant-numeric:tabular-nums;position:relative}
.receipt::after{content:"";position:absolute;left:-2px;right:-2px;bottom:-12px;height:10px;background:linear-gradient(-45deg,transparent 7px,#fff 0) 0 0/14px 10px,linear-gradient(45deg,transparent 7px,#fff 0) 0 0/14px 10px;filter:drop-shadow(0 2px 0 var(--ink))}
.big{font:700 2.4rem/1 "Bricolage Grotesque",sans-serif;color:var(--tomato-ink)}
.big small{font:400 1rem "Atkinson Hyperlegible",sans-serif;color:var(--ink);display:block;margin-top:6px}
dl.lines{margin:14px 0 0}
dl.lines div{display:flex;justify-content:space-between;gap:16px;padding:7px 0;border-bottom:1px dashed var(--line)}
dl.lines dt{margin:0}dl.lines dd{margin:0;font-weight:700;text-align:right}
dl.lines .total{border-bottom:2px solid var(--ink);border-top:2px solid var(--ink);font-size:1.1rem}
.good{color:var(--sage)}
.msg{border-left:6px solid var(--mustard);background:#fdf1d0;padding:10px 14px;margin:14px 0}
.msg.err{border-color:var(--tomato);background:#f9dfd5}
.maths{margin-top:18px;font-size:.97rem}
.maths summary{cursor:pointer;font-weight:700}
.maths ol{padding-left:20px;margin:10px 0 0}
.maths li{margin:6px 0}
.explain{margin:44px 0 10px}
.explain p{max-width:40em}
.next{border:2px solid var(--ink);background:var(--sage);color:#fff;padding:20px;margin:32px 0}
.next a{color:#fff}
.next a.btn{color:var(--ink);background:var(--mustard)}
.next p{margin:0 0 12px;max-width:36em}
.cards{display:grid;gap:18px;margin:24px 0 40px}
@media(min-width:760px){.cards{grid-template-columns:repeat(3,1fr)}}
.card{background:var(--card);border:2px solid var(--ink);padding:20px;display:flex;flex-direction:column}
.card p{margin:0 0 16px;flex:1}
.card .btn{align-self:flex-start}
.card h3 a{color:var(--ink)}
table.data{width:100%;border-collapse:collapse;font-size:.95rem}
table.data td,table.data th{padding:4px 4px;text-align:left;vertical-align:middle}
table.data input{padding:7px 8px}
.debts{overflow-x:auto}
.debts table{min-width:520px}
canvas,svg.chart{width:100%;height:auto;display:block;background:#fff;border:2px solid var(--ink)}
.legend{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.92rem;margin:8px 0}
.legend span::before{content:"";display:inline-block;width:12px;height:12px;margin-right:6px;background:var(--c);vertical-align:-1px}
.cols2{display:grid;gap:20px}
@media(min-width:760px){.cols2{grid-template-columns:1fr 1fr}}
.order ol{margin:6px 0 0;padding-left:22px}
footer.site{margin-top:60px;background:var(--ink);color:var(--paper);padding:28px 0}
footer.site a{color:var(--paper)}
footer.site .wrap{display:flex;flex-wrap:wrap;gap:10px 28px;justify-content:space-between}
footer.site p{margin:0}
.note{font-size:.92rem;color:#3d4540}
.sr{position:absolute;left:-9999px}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
.tool>*,.cols2>*,.cards>*{min-width:0}
.panel,.receipt{max-width:100%}
@media(max-width:640px){
.debts table{min-width:0}
.debts thead{position:absolute;left:-9999px}
.debts tbody tr{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px 0;border-bottom:2px dashed var(--line)}
.debts tbody td{display:block;padding:0}
.debts tbody td:first-child{grid-column:1/3}
.debts tbody td[data-label]::before{content:attr(data-label);display:block;font-size:.8rem;font-weight:700;margin:0 0 3px}
}
.debts tbody td:last-child .btn{width:100%;height:100%}
/* calculators */
:root{--sage-ink:#3e6250}
.yr{border:2px solid var(--ink);background:#fff;padding:6px 14px 14px;margin:14px 0 0;min-width:0}
.yr legend{font:700 1.1rem "Bricolage Grotesque",sans-serif;padding:0 6px}
.yr legend small{font:400 .9rem "Atkinson Hyperlegible",sans-serif;color:#4a524d;margin-left:6px}
.money{position:relative}
.money>span{position:absolute;left:11px;top:50%;transform:translateY(-50%);font-weight:700;pointer-events:none}
.money input{padding-left:26px}
.seg{display:flex;border:2px solid var(--ink);background:var(--input)}
.seg label{flex:1;margin:0;font-weight:700;position:relative}
.seg input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}
.seg span{display:block;text-align:center;padding:9px 6px;line-height:1.25}
.seg input:checked+span{background:var(--ink);color:var(--paper)}
.seg input:focus-visible+span{outline:3px solid var(--tomato);outline-offset:-3px}
.answer{border:2px solid var(--ink);padding:18px;background:#fff}
.answer.yes{background:var(--tomato-ink);color:#fff}
.answer.no{background:var(--sage-ink);color:#fff}
.answer .big{color:inherit;font-size:clamp(1.7rem,6.5vw,2.3rem);margin:0 0 8px}
.answer p{margin:0}
.answer p+p{margin-top:6px}
.result>*+*{margin-top:18px}
.result h3{margin:0 0 8px}
ul.dates{list-style:none;margin:0;padding:0}
ul.dates li{padding:9px 0;border-bottom:1px dashed var(--line);display:grid;gap:2px}
ul.dates strong{font-size:1.1rem}
ul.dates span{font-size:.93rem;color:#3d4540}
table.work{width:100%;border-collapse:collapse;font-size:.93rem;font-variant-numeric:tabular-nums}
table.work th,table.work td{padding:6px 5px;text-align:left;border-bottom:1px dashed var(--line);vertical-align:top}
table.work th{font-weight:700;border-bottom:2px solid var(--ink)}
table.work td.n,table.work th.n{text-align:right}
.tag{display:inline-block;font-weight:700;padding:1px 7px;border:2px solid var(--ink);font-size:.85rem}
.tag.y{background:var(--tomato-ink);color:#fff}.tag.n{background:#fff}
.honest{border:2px solid var(--ink);background:var(--input);padding:14px 18px;margin:28px 0 0}
.honest p{margin:0;max-width:44em}.honest p+p{margin-top:6px}
.checked{margin:10px 0 0;font-size:.95rem}
.faq{margin:44px 0 0}
.faq h3{margin:22px 0 4px}
.faq p{max-width:42em;margin:0}
.soon{font-size:.95rem;margin:18px 0 0}
.card.lead-card{background:#fff}
@media(min-width:760px){.card.lead-card{grid-column:1/-1;flex-direction:row;align-items:center;gap:24px}.card.lead-card>div{flex:1}.card.lead-card h3{font-size:1.5rem}.card.lead-card p{margin:0}}
.answerbar{display:none}
@media(max-width:859px){
.answerbar.show{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:5;background:var(--ink);color:#fff;padding:10px 16px;gap:12px;align-items:center;justify-content:space-between;border-top:3px solid var(--tomato)}
.answerbar a{color:#fff;font-weight:700;white-space:nowrap}
.answerbar b{font-family:"Bricolage Grotesque",sans-serif;font-size:1.05rem;line-height:1.2}
body.has-bar{padding-bottom:64px}
}
.trips{list-style:none;margin:10px 0 0;padding:0}
.trips li{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed var(--line)}
.trips li span{flex:1}
.hide{display:none!important}
dl.lines dd{white-space:nowrap}
.check input{flex:none}

.signup{border:2px solid var(--ink);background:#fff;padding:20px;margin:32px 0}
.signup h2{margin:0 0 8px}
.signup p{max-width:38em}
.signup label{display:block;font-weight:700;margin:12px 0 6px}
.signup .row{display:flex;gap:10px;flex-wrap:wrap}
.signup input{flex:1 1 220px;min-width:0;font:inherit;padding:12px;border:2px solid var(--ink);background:var(--paper)}
.signup input[aria-invalid=true]{border-color:var(--tomato)}
.signup .small{font-size:.9rem;margin:10px 0 0}
.signup .done .btn{margin-top:8px}
.guides-h{margin:36px 0 0}
.ing{display:grid;grid-template-columns:22px 1fr 1fr 1fr;gap:6px;align-items:center;margin:0 0 6px}
.ing .ingn{font-weight:700;text-align:center}
.ing input{min-width:0;padding:9px 6px}
.ingh{margin:6px 0 4px;font-size:.85rem}
details.more{margin:6px 0 0}details.more summary{cursor:pointer;font-weight:700;margin:4px 0 8px}
.receipt.second{margin-top:26px}.receipt.second h3{margin:0 0 10px}
.vatnote{margin:12px 0 0;font-size:.95rem}.vatnote p{margin:0}
.soon{font-weight:700}
table.eg{width:100%;max-width:560px;border-collapse:collapse;margin:14px 0 6px;background:var(--card);border:2px solid var(--ink)}
table.eg th,table.eg td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--line)}
table.eg .n{text-align:right;white-space:nowrap}table.eg tr.tot td{border-top:2px solid var(--ink);font-weight:700;background:var(--input)}
table.eg caption{text-align:left;font-weight:700;padding:0 0 6px}
table.eg.wide{max-width:none}table.eg.wide td,table.eg.wide th{vertical-align:top}
.vatlink{margin:18px 0 0}
@media(max-width:620px){table.eg.wide,table.eg.wide tbody{display:block}table.eg.wide tr:first-child{display:none}table.eg.wide tr{display:block;padding:10px 12px;border-bottom:1px solid var(--line)}table.eg.wide td{display:block;padding:0;border:0}table.eg.wide td:first-child{font-weight:700}table.eg.wide td:nth-child(2){color:var(--tomato-ink);font-weight:700;margin:2px 0}table.eg.wide caption{display:block}}
table.eg.wide.cat td:nth-child(2){color:inherit;font-weight:400}
table.eg.wide.cat small{font-weight:400;color:#4a524d}
@media(max-width:620px){table.eg.wide.cat td[data-label]+td[data-label]::before,table.eg.wide.cat td:nth-child(2)::before,table.eg.wide.cat td:nth-child(3)::before{content:attr(data-label);display:block;font-size:.8rem;font-weight:700;margin-top:6px}table.eg.wide.cat td:nth-child(2){margin:0}}
.ytdh{margin:24px 0 0}
ul.trips{list-style:none;padding:0;margin:10px 0 0}
table.eg.sf{max-width:none;border:0;margin:14px 0 0}table.eg.sf td,table.eg.sf th{padding:8px 6px;border-bottom:1px solid var(--line)}
.rooms{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}.rooms label{margin:8px 0 3px;font-weight:400}
.row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.row3 label{margin:8px 0 3px;font-weight:400}
