/* Kasboek: the existing paper cash book, refined as a quiet, readable ledger.
   Reference: our v2 printed-bank-statement / bookkeeper's cashbook direction.
   Keep Source Serif 4, pale ledger-green paper, ruled rows and ink. */
:root{color-scheme:light;--paper:#eff2e9;--sheet:#f8f9f4;--wash:#e5eadf;--ink:#242c21;--muted:#596250;--faint:#65705e;--line:#c8d0bd;--soft:#dde3d5;--green:#2d5e3c;--red:#a32d22;--amber:#79500f;--overlay:rgba(23,31,19,.45);--shadow:0 16px 64px rgba(20,30,16,.18)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark;--paper:#1a1f18;--sheet:#242b20;--wash:#30392b;--ink:#eaeede;--muted:#bdc8b2;--faint:#a5b19a;--line:#4d5a43;--soft:#35402e;--green:#afd0a9;--red:#f5a298;--amber:#dfbd81;--overlay:rgba(10,15,9,.65);--shadow:0 16px 64px rgba(0,0,0,.4)}}
:root[data-theme="dark"]{color-scheme:dark;--paper:#1a1f18;--sheet:#242b20;--wash:#30392b;--ink:#eaeede;--muted:#bdc8b2;--faint:#a5b19a;--line:#4d5a43;--soft:#35402e;--green:#afd0a9;--red:#f5a298;--amber:#dfbd81;--overlay:rgba(10,15,9,.65);--shadow:0 16px 64px rgba(0,0,0,.4)}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:20px}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Source Serif 4",Georgia,serif;font-size:17px;line-height:1.5;font-optical-sizing:auto}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button,a,input,select,textarea,summary{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--green)}button{border:0;background:none}button:disabled{cursor:wait;opacity:.55}input,select,textarea{min-width:0}input[type="checkbox"],input[type="radio"]{accent-color:var(--green)}[hidden]{display:none!important}h1,h2,p{margin:0}h1,h2{font-weight:600}.num{font-variant-numeric:tabular-nums lining-nums;white-space:nowrap}.muted{color:var(--muted)}.error{color:var(--red)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip{position:absolute;left:-9999px;top:12px;padding:10px 16px;background:var(--ink);color:var(--paper);z-index:30}.skip:focus{left:12px}.book{max-width:960px;margin:0 auto;padding:38px 42px 20px}.head{border-bottom:2px solid var(--ink);padding-bottom:18px}.masthead{display:flex;justify-content:space-between;align-items:center;gap:18px}.masthead h1{font-size:48px;line-height:1;letter-spacing:-2px}.masthead h1 span{color:var(--green)}.dateline{display:flex;justify-content:space-between;gap:16px;align-items:baseline;margin-top:14px;font-size:15px;color:var(--muted)}#sync{font-size:13px;font-style:italic}#sync.off{color:var(--red)}.button{min-height:46px;border:1px solid var(--line);border-radius:3px;padding:10px 18px;font-size:16px;font-weight:600;background:var(--sheet);transition:background .15s}.button:hover{background:var(--wash)}.button.primary{background:var(--green);border-color:var(--green);color:var(--paper)}.button.danger{background:var(--red);color:var(--paper);border-color:var(--red)}.add-button{display:flex;align-items:center;gap:8px}.add-button span{font-size:23px;font-weight:400;line-height:1}.text-button{min-height:44px;padding:8px 0;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px;text-decoration-color:var(--line);font-size:15px;font-weight:600}.text-button:hover{text-decoration-color:currentColor}.standing{padding:25px 0 21px}.standing-label{display:flex;justify-content:space-between;gap:20px;align-items:baseline}.standing-label h2{font-size:16px;font-weight:500}.standing-label span{font-size:14px}.forecast-title{font-size:34px;line-height:1.2;letter-spacing:-.65px;max-width:720px;margin-top:11px;text-wrap:balance}.forecast-title em{font-weight:400;color:var(--muted)}.forecast-title .negative{color:var(--red)}.forecast-title .amount{font-weight:600;color:var(--green)}.forecast-title .amount.negative{color:var(--red)}.forecast-explain{font-size:16px;color:var(--muted);margin-top:9px;max-width:680px}.cash-line{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-top:17px;border-top:1px solid var(--soft);padding-top:7px;font-size:16px}.cash-line strong{font-weight:600}.cash-date{margin-left:8px;color:var(--muted);font-size:14px}.flow-line{font-size:15px;color:var(--muted)}.flow-line strong{font-weight:500;color:var(--ink)}.review-link{display:block;text-align:left;font-size:15px;min-height:44px;padding:10px 0 0;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:4px;color:var(--amber)}.banner{padding:16px;margin-top:18px;border:1px solid currentColor;display:flex;gap:14px;align-items:center;justify-content:space-between;font-size:16px}.banner .text-button{white-space:nowrap}.overdue{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:2px 0 24px}.overdue summary,.history summary{min-height:58px;padding:13px 0;display:flex;align-items:center;justify-content:space-between;gap:14px;cursor:pointer;font-size:16px;font-weight:600;list-style:none}.overdue summary{color:var(--red)}summary::-webkit-details-marker{display:none}.disclosure{display:inline-flex;align-items:center;justify-content:center;width:18px;font-size:21px;line-height:1;font-weight:400;margin-right:6px}details[open]>summary .disclosure{transform:rotate(45deg)}.count{font-weight:400;margin-left:3px;font-size:14px}.section-note{color:var(--muted);font-size:14px;margin:0 0 8px 26px;max-width:680px}.viewbar{display:flex;justify-content:space-between;align-items:center;gap:16px;border-bottom:1px solid var(--line);margin-top:2px}.views{display:flex;gap:24px;align-items:center}.views button{font-size:16px;min-height:52px;padding:10px 0;border-bottom:2px solid transparent;color:var(--muted);margin-bottom:-1px;white-space:nowrap}.views button[aria-pressed="true"]{border-color:var(--green);color:var(--ink);font-weight:600}.views button span{font-size:13px;margin-left:3px}.find-toggle{font-weight:400}.find-fields{display:grid;grid-template-columns:minmax(0,1fr) 190px auto;gap:16px;align-items:end;padding:16px 0;border-bottom:1px solid var(--soft)}.list-intro{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin:25px 0 9px}.list-intro h2{font-size:20px}.list-intro p{font-size:14px;color:var(--muted)}.column-head{display:grid;grid-template-columns:46px minmax(0,1fr) 120px 125px;gap:15px;border-bottom:1px solid var(--ink);padding-bottom:8px;color:var(--faint);font-size:13px}.column-head span:nth-child(n+3){text-align:right}.lines{list-style:none;margin:0;padding:0}.line{display:grid;grid-template-columns:46px minmax(0,1fr) 120px 125px;gap:15px;align-items:center;text-align:left;width:100%;padding:16px 0;border-bottom:1px solid var(--soft);background:transparent;transition:background .15s}.line:hover{background:var(--sheet)}.line .date{display:flex;flex-direction:column;text-align:center;line-height:1.2}.date .day{font-size:22px;font-weight:500}.date .month{font-size:12px;color:var(--muted)}.line.overdue-line .date{color:var(--red)}.line.overdue-line .date .month{color:var(--red)}.line .description{min-width:0}.line .name{font-size:17px;font-weight:600;overflow-wrap:anywhere;line-height:1.35}.line .meta{display:block;color:var(--muted);font-size:13px;margin-top:4px;line-height:1.45;overflow-wrap:anywhere}.line .check-label{font-style:italic;font-size:13px;color:var(--amber);font-weight:400;white-space:nowrap}.line .money{font-size:17px;font-weight:500;text-align:right}.line.income .money{color:var(--green)}.line .after{display:block;text-align:right;color:var(--muted);font-size:15px;border-left:1px solid var(--soft);padding-left:12px}.line .after.negative{color:var(--red)}.after small{display:none;font-size:11px;font-weight:400}.line.projected .name{font-weight:400}.line.projected .meta{font-style:italic}.line.settled .name{font-weight:400}.line.settled .money{color:var(--muted)}.line.deleted-line .name{text-decoration:line-through;font-weight:400}.line.deleted-line .money{color:var(--muted)}.month-rule{display:flex;justify-content:space-between;gap:12px;margin:22px 0 0;padding:7px 0;border-bottom:1px solid var(--line);font-size:15px;color:var(--muted)}.month-rule strong{font-weight:600;color:var(--ink)}.empty{padding:30px 12px 32px 0;color:var(--muted);font-size:17px;max-width:580px}.empty em{display:block;color:var(--ink);font-size:24px;line-height:1.3;margin-bottom:8px}.empty button{display:block;margin-top:5px}.list-foot{color:var(--muted);font-size:13px;max-width:680px;margin:11px 0 22px}.history{border-top:1px solid var(--line);margin-top:18px}.history summary{font-weight:500}.history summary>.muted{font-size:14px}.history .line{grid-template-columns:46px minmax(0,1fr) 120px}.history .line .after{display:none}.more{margin:10px 0}.endline{display:flex;justify-content:space-between;gap:15px;align-items:center;margin:22px 0 12px;border-top:1px dashed var(--line);padding-top:8px}.endline>span{font-style:italic;color:var(--faint);font-size:14px}footer{border-top:2px solid var(--ink);padding-top:13px;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:14px;margin-top:24px}.footer-brand{font-style:italic;padding-top:8px}.footer-tools{display:flex;gap:24px}.footer-tools .text-button{font-weight:400;font-size:13px}dialog{border:0;padding:0;background:transparent;width:100%;max-width:none;max-height:none;margin:0;color:var(--ink)}dialog::backdrop{background:var(--overlay);backdrop-filter:blur(3px)}.sheet{position:fixed;bottom:24px;left:0;right:0;margin:auto;background:var(--sheet);border:1px solid var(--line);border-top:3px solid var(--green);width:calc(100% - 32px);max-width:600px;padding:24px 28px;max-height:calc(100dvh - 48px);overflow-y:auto;overscroll-behavior:contain;box-shadow:var(--shadow);border-radius:4px}.sheet-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:15px}.sheet h2{font-size:28px;line-height:1.2;letter-spacing:-.4px}.close-button{min-width:44px;min-height:44px;font-size:28px;font-weight:400;color:var(--muted);margin:-8px -8px -8px 0}.eyebrow{font-size:15px;font-style:italic;color:var(--muted)}.sheet-sub{color:var(--muted);font-size:16px;margin:12px 0 18px;line-height:1.5}.item-amount{font-size:38px;margin-top:8px;line-height:1.3;letter-spacing:-1px}.item-note{font-size:16px;padding:12px 0;border-top:1px solid var(--line);margin-bottom:14px;white-space:pre-wrap;overflow-wrap:anywhere}.actions{display:grid;gap:8px;margin-top:20px}.action{display:flex;justify-content:space-between;align-items:center;gap:16px;width:100%;min-height:50px;padding:12px 15px;background:var(--sheet);border:1px solid var(--line);border-radius:3px;text-align:left;font-size:17px;font-weight:500}.action:hover{background:var(--wash)}.action small{font-size:13px;max-width:48%;font-weight:400;text-align:right;color:var(--muted)}.action.primary{background:var(--green);color:var(--paper);border-color:var(--green)}.action.primary small{color:inherit}.action.danger{color:var(--red)}form{display:grid;gap:15px}.field{display:grid;gap:5px}.field label{font-size:15px;font-weight:500}.field input,.field select,.field textarea{width:100%;font-size:17px;border:1px solid var(--line);background:var(--paper);border-radius:3px;min-height:48px;padding:10px 12px}.field textarea{resize:vertical}.field input::placeholder,.field textarea::placeholder{color:var(--faint);opacity:1}.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}.seg{border:0;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:0}.seg input{position:absolute;opacity:0;width:1px;height:1px}.seg label{padding:10px;min-height:46px;text-align:center;border:1px solid var(--line);background:var(--paper);cursor:pointer;font-size:16px}.seg input:checked+label{background:var(--green);color:var(--paper);border-color:var(--green)}.seg input:focus-visible+label{outline:2px solid var(--green);outline-offset:3px}.form-actions{display:grid;grid-template-columns:1fr 1.4fr;gap:10px;margin-top:4px;position:sticky;bottom:-24px;background:var(--sheet);padding:12px 0 3px}.form-actions .button{min-height:48px}.form-error{min-height:0;font-size:15px}.form-error:empty{display:none}.form-hint{font-size:14px;color:var(--muted);line-height:1.5;margin-bottom:3px}.checkbox{display:flex;align-items:center;gap:10px;min-height:44px;font-size:15px}.checkbox input{width:20px;height:20px;flex-shrink:0}.toast{position:fixed;z-index:100;bottom:max(20px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);display:flex;gap:18px;align-items:center;max-width:calc(100% - 28px);width:max-content;background:var(--ink);color:var(--paper);padding:10px 15px;border-radius:4px;box-shadow:var(--shadow);font-size:15px}.toast>span{flex:1}.toast button{color:inherit;min-height:44px;white-space:nowrap;text-decoration:underline;text-underline-offset:4px;font-weight:600}.toast-close{font-size:22px;font-weight:400!important;min-width:30px;text-decoration:none!important}
@media(min-width:1200px){.book{padding-top:52px}.standing{padding-top:30px;padding-bottom:26px}.forecast-title{font-size:39px}.line{padding:18px 0}.head{padding-bottom:22px}}
@media(max-width:700px){.book{padding:25px 20px 14px}.masthead h1{font-size:39px;letter-spacing:-1.5px}.add-button{padding:8px 12px;min-height:44px;font-size:15px}.dateline{font-size:14px;margin-top:13px}.head{padding-bottom:16px}.standing{padding:21px 0 17px}.standing-label h2{font-size:15px}.standing-label span{font-size:12px}.forecast-title{font-size:30px;letter-spacing:-.6px;margin-top:12px}.forecast-explain{font-size:15px}.cash-line{font-size:15px;align-items:center;gap:16px;margin-top:17px}.cash-date{display:block;margin:1px 0 0;font-size:12px}.cash-line .text-button{font-size:14px;white-space:nowrap}.flow-line{font-size:14px;line-height:1.55;margin-top:4px}.review-link{font-size:14px}.overdue{margin-bottom:17px}.overdue summary{font-size:15px}.count{font-size:12px}.views{gap:18px}.views button{font-size:15px}.viewbar{gap:10px}.find-toggle{font-size:14px}.find-fields{grid-template-columns:minmax(0,1fr) 125px;gap:10px}.find-fields .text-button{grid-column:1/-1;justify-self:start;min-height:32px}.find-fields label{font-size:13px}.find-fields input,.find-fields select{font-size:16px;padding-inline:9px}.list-intro{margin-top:21px}.list-intro h2{font-size:20px}.list-intro p{font-size:12px}.column-head{grid-template-columns:32px minmax(0,1fr) 100px;gap:11px;font-size:12px}.column-head span:nth-child(4){display:none}.column-head span:nth-child(3){text-align:right}.line{grid-template-columns:32px minmax(0,1fr) 100px;grid-template-rows:auto auto;gap:0 11px;padding:14px 0;align-items:start}.line .date{grid-column:1;grid-row:1/3;padding-top:3px}.date .day{font-size:21px}.date .month{font-size:11px}.line .description{grid-column:2;grid-row:1/3}.line .name{font-size:16px}.line .meta{font-size:12px;margin-top:4px}.line .money{grid-column:3;grid-row:1;font-size:16px;padding-top:1px}.line .after{grid-column:3;grid-row:2;border:0;padding:0;margin-top:4px;font-size:12px;line-height:1.35}.after small{display:inline;margin-right:3px}.line .check-label{font-size:12px;white-space:normal}.history .line{grid-template-columns:32px minmax(0,1fr) 100px}.history .line .money{grid-row:1/3}.list-foot{font-size:12px}.endline>span{font-size:12px}.endline .text-button{font-size:15px}.sheet{bottom:0;width:100%;border-radius:10px 10px 0 0;border-left:0;border-right:0;padding:20px 20px calc(20px + env(safe-area-inset-bottom));max-height:94dvh}.sheet h2{font-size:26px}.sheet .two{gap:12px}.form-actions{bottom:calc(-20px - env(safe-area-inset-bottom));padding-bottom:calc(10px + env(safe-area-inset-bottom))}.sheet-sub{font-size:15px}.action{font-size:16px}.action small{font-size:12px}.toast{gap:12px}.toast>span{font-size:14px}.banner{font-size:15px;padding:12px}}
@media(max-width:370px){.book{padding-inline:14px}.views{gap:13px}.views button{font-size:14px}.line{grid-template-columns:29px minmax(0,1fr) 95px;column-gap:9px}.column-head{grid-template-columns:29px minmax(0,1fr) 95px;column-gap:9px}.cash-line{gap:8px}.cash-line .text-button{font-size:13px}.sheet .two{grid-template-columns:1fr}.endline>span{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Keep the first upcoming lines within reach on a phone. */
.forecast-title .amount{font-size:1.18em}.forecast-qualifier{font-size:20px;letter-spacing:0;font-style:italic;font-weight:400;color:var(--muted)}.forecast-explain{max-width:760px}.cash-line{margin-top:13px}
@media(min-width:701px){.standing{padding-top:22px;padding-bottom:18px}.forecast-title{font-size:35px;margin-top:8px}.forecast-title .amount{margin-right:8px}.book{padding-top:32px}.head{padding-bottom:16px}}
@media(max-width:700px){.forecast-title{font-size:31px;line-height:1.15}.forecast-qualifier{font-size:18px;white-space:nowrap}.forecast-explain{font-size:14px;margin-top:8px}.standing{padding-bottom:14px}.review-link{padding-top:6px}.list-intro{margin-top:18px}}
