:root{--tile:#0E4C73;--rope:#F2C230;--aqua:#7FD3E6;--bg:#EEF6F9;--card:#fff;--ink:#10283A;--muted:#5B7486;--line:#D3E3EB;--in:#1F8A5B;--out:#C23D35;--open:#B7791F;color-scheme:light dark}
@media (prefers-color-scheme:dark){:root{--bg:#071A26;--card:#0F2636;--ink:#E6F2F7;--muted:#8FA9B8;--line:#1F3B4E;--in:#4CC38A;--out:#F07A72;--open:#E9B44C}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;padding-bottom:env(safe-area-inset-bottom)}
a{color:inherit}
.wrap{max-width:760px;margin:0 auto;padding:0 16px}
.num{font-family:"Barlow Condensed","Roboto Condensed","Arial Narrow",sans-serif;font-stretch:condensed;font-variant-numeric:tabular-nums}
nav.top{background:var(--tile);color:#fff;padding-top:env(safe-area-inset-top)}
.navrow{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:12px;padding-bottom:12px}
.brand{font-weight:700;text-decoration:none;color:var(--aqua)}
.navlinks{display:flex;gap:14px;font-size:.95rem}
.navlinks a{color:#fff;text-decoration:none}
.hero{background:var(--tile);color:#fff;position:relative;padding:4px 0 34px}
.hero.solo{padding-top:calc(env(safe-area-inset-top) + 40px)}
.hero::after{content:"";position:absolute;left:0;right:0;bottom:0;height:10px;background:repeating-linear-gradient(90deg,var(--rope) 0 18px,#fff 18px 22px,#C23D35 22px 40px,#fff 40px 44px)}
.balance{font-weight:700;font-size:clamp(3rem,14vw,5rem);line-height:1;margin:14px 0 4px}
.balance.neg{color:#FFB3AD}
.teamtitle{font-weight:700;font-size:2.2rem;line-height:1.1}
.sub{color:#CFE7F0}
.stats{display:flex;gap:24px;flex-wrap:wrap;margin-top:14px;font-size:.85rem;color:#CFE7F0}
.stats b{display:block;font-size:1.35rem;color:#fff}
h2{font-size:1.3rem;margin:28px 0 10px}
.flash{margin-top:14px;padding:10px 14px;border-radius:8px;background:var(--card);border-left:4px solid var(--in)}
.flash.err{border-left-color:var(--out)}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;margin-top:14px}
.list{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.row{display:grid;grid-template-columns:auto 1fr auto;gap:8px 12px;align-items:center;padding:12px 14px;border-top:1px solid var(--line)}
.row:first-child{border-top:0}
.row.single{grid-template-columns:1fr}
.full{grid-column:1/-1}
.thumb{width:44px;height:44px;border-radius:8px;background:var(--bg);border:1px solid var(--line);display:grid;place-items:center;overflow:hidden;font-size:1.1rem;text-decoration:none;color:var(--muted);font-weight:600}
.thumb img{width:100%;height:100%;object-fit:cover}
.desc{min-width:0}
.desc strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.desc small{color:var(--muted)}
.amt{text-align:right;font-weight:700;font-size:1.2rem;white-space:nowrap}
.amt.in{color:var(--in)}.amt.out{color:var(--out)}.amt.open{color:var(--open)}
.tools{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap;margin-top:6px}
.tools.start{justify-content:flex-start}
.tools form{margin:0}
.inline-form{display:flex;gap:6px}
.inline-form input{width:170px;padding:4px 8px}
.btn{display:inline-block;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:10px;padding:10px 14px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;text-align:center}
.btn.primary{background:var(--rope);border-color:var(--rope);color:#10283A}
.btn.small{padding:4px 10px;font-size:.85rem;border-radius:6px;font-weight:500}
.btn.ok{border-color:var(--in);color:var(--in)}
.btn.danger{color:var(--out)}
.btnrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
details.panel{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-top:10px}
details.panel summary{padding:14px 16px;cursor:pointer;font-weight:600}
details.panel .body{padding:0 16px 16px}
label{display:block;font-size:.9rem;font-weight:500;margin:12px 0 4px}
label.inline{display:flex;gap:8px;align-items:center;font-weight:400}
input,select,textarea{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);font:inherit}
input[type=checkbox]{width:auto}
textarea{margin-top:8px}
.checks{display:grid;grid-template-columns:1fr 1fr;gap:2px 12px}
.checks label{display:flex;gap:8px;align-items:center;font-weight:400;margin:4px 0}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.chips a{border:1px solid var(--line);border-radius:999px;padding:4px 14px;text-decoration:none;color:var(--muted)}
.chips a.on{background:var(--tile);border-color:var(--tile);color:#fff}
.members{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}
.member{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:.9rem;color:var(--muted)}
.member strong{display:block;font-size:1rem;color:var(--ink)}
.due{color:var(--open);font-weight:600}
.muted{color:var(--muted);font-size:.9rem}
.empty{padding:20px 16px;text-align:center;color:var(--muted)}
.login{max-width:400px;margin:0 auto;padding:8px 16px 40px}
footer{margin:32px 0;color:var(--muted);font-size:.85rem}
:focus-visible{outline:3px solid var(--aqua);outline-offset:2px}
/* kasboek-datefix: iOS datumveld gelijk aan andere velden */
input[type=date]{-webkit-appearance:none;appearance:none;display:block;min-width:0;max-width:100%;min-height:46px;text-align:left}
input[type=date]::-webkit-date-and-time-value{text-align:left;margin:0}
input[type=date]::-webkit-datetime-edit{padding:0}
/* kasboek-mailcss */
.flash.warn{border-left-color:var(--open)}
.flash a{font-weight:600}
.linkrow{margin:14px 0 0;font-size:.9rem}
.linkrow a{color:var(--muted)}
.inline-form{flex-wrap:wrap;margin-top:6px}
.inline-form input{flex:1 1 170px;width:auto}
/* kasboek-logocss */
.hero .wrap{position:relative}
.hero-logo{position:absolute;right:16px;top:14px;height:64px;width:auto;pointer-events:none}
.login-logo{display:block;height:110px;width:auto;max-width:100%;margin-bottom:14px}
@media (max-width:420px){.hero-logo{height:46px;top:18px}}
/* kasboek-aanmeldcss */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
/* kasboek-betaalcss */
.iban{font-size:1.4rem;font-weight:700;margin:6px 0 2px;letter-spacing:.02em}
.bad{color:var(--out)}
/* kasboek-uitnodigcss */
.row.pick{cursor:pointer;margin:0;font-weight:400;font-size:1rem}
.row.pick input{width:auto;margin-right:6px}
/* kasboek-vrijcss */
.checks.one{grid-template-columns:1fr}
.checks input[type=radio]{width:auto}
.vrij-bedrag{flex:0 1 130px;width:130px;padding:4px 8px}
.amt.vrij{font-size:1rem}
/* kasboek-naamcss */
details.mini-edit{margin-top:4px}
details.mini-edit summary{font-size:.85rem;color:var(--muted);cursor:pointer}
/* kasboek-overzetcss */
details.mini-edit{margin-top:4px}
details.mini-edit summary{font-size:.85rem;color:var(--muted);cursor:pointer}
.tools details.overzet{flex-basis:100%;text-align:right}
.overzet .inline-form{justify-content:flex-end}
.overzet select{width:auto;flex:1 1 140px;padding:4px 8px}
/* kasboek-rijcss: knoppen onder de naam, volledige naam zichtbaar */
.row > div:not([class]){display:contents}
.row > div:not([class]) > .amt{grid-column:3;grid-row:1}
.row > div:not([class]) > .tools{grid-column:2 / -1;grid-row:2;justify-content:flex-start;align-items:center;margin-top:0}
.row > div:not([class]) > .tools details.overzet{flex-basis:auto;text-align:left;margin-top:0}
.row > div:not([class]) > .tools details.overzet[open]{flex-basis:100%}
.overzet .inline-form{justify-content:flex-start}
.desc strong{white-space:normal;overflow:visible;text-overflow:clip}
/* kasboek-snackcss */
.brand{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.navlinks{gap:12px;flex-shrink:0}
.coins{font-size:1.9rem;margin:12px 0 2px;letter-spacing:6px}
.coin.used{opacity:.25;filter:grayscale(1)}
.trophy,.snackteaser{display:flex;gap:14px;align-items:center;text-decoration:none}
.trophy .big,.snackteaser .big{font-size:2.2rem;line-height:1}
.toplist{list-style:none;margin:0;padding:0}
.toplist li{display:grid;grid-template-columns:22px 1fr 60px 52px;gap:8px;align-items:center;padding:6px 0}
.toplist .pos{font-weight:700;color:var(--muted)}
.toplist .tm{text-align:right;font-weight:700}
.bar{height:8px;background:var(--bg);border-radius:99px;overflow:hidden}
.bar span{display:block;height:100%;background:var(--rope);border-radius:99px}
.snackgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.snack{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:6px;scroll-margin-top:20px}
.snack.gekozen{border-color:var(--rope);box-shadow:inset 0 0 0 2px var(--rope)}
.snackname{font-weight:600;line-height:1.25}
.snackmeta{font-size:.8rem;color:var(--muted)}
.vote{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:auto}
.vote form{margin:0}
.coinbtn{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:1.3rem;font-weight:700;cursor:pointer;line-height:1}
.coinbtn.plus{background:var(--rope);border-color:var(--rope);color:#10283A}
.coinbtn:disabled{opacity:.35;cursor:not-allowed}
.mine{font-size:1.05rem;min-height:1.3em;text-align:center}
.linkbtn{background:none;border:0;padding:0;color:var(--muted);font-size:.8rem;text-decoration:underline;cursor:pointer}
/* kasboek-uitlegcss */
details.uitleg summary{cursor:pointer}
details.uitleg ol{margin:10px 0 6px;padding-left:22px}
details.uitleg li{margin:4px 0}
details.uitleg p{margin:6px 0 0}
/* kasboek-meercss */
.btnrow.meer{justify-content:center;margin-top:12px}
/* kasboek-layoutcss */
:root{--tabon:#0E4C73}
@media (prefers-color-scheme:dark){:root{--tabon:#7FD3E6}}
nav.top .navrow{padding-top:10px;padding-bottom:10px}
nav.top .brand{font-size:1rem}
.navlinks a.on{color:var(--aqua)}
.hi{display:none;color:#CFE7F0;font-size:.9rem;white-space:nowrap}
.tabbar{display:none}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:16px;max-width:520px}
.stats > div{background:rgba(255,255,255,.1);border-radius:10px;padding:8px 10px;display:flex;flex-direction:column-reverse;gap:2px;font-size:.8rem;color:#CFE7F0}
.stats > div b{display:block;font-size:1.15rem;color:#fff;white-space:nowrap}
.stats > div.hot{background:var(--rope);color:#10283A}
.stats > div.hot b{color:#10283A}
.balance.laag{color:var(--rope)}
@media (max-width:700px){
  nav.top .navlinks{display:none}
  .hi{display:inline}
  .tabbar{display:grid;grid-template-columns:repeat(var(--tabs,4),1fr);position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--card);border-top:1px solid var(--line);padding:6px 0 calc(6px + env(safe-area-inset-bottom))}
  .tabbar a{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 0;font-size:.72rem;color:var(--muted);text-decoration:none}
  .tabbar a.on{color:var(--tabon);font-weight:600}
  .tabbar svg{width:24px;height:24px}
  body{padding-bottom:calc(72px + env(safe-area-inset-bottom))}
  .stats > div b{font-size:1rem}
}
/* kasboek-rolcss */
.rolform{margin:0}
.rolform label.inline{margin:0;font-size:.85rem}
/* kasboek-snacklogocss */
.snackhero .teamtitle,.snackhero .teamtitle + .sub{padding-right:120px}
@media (max-width:420px){.snackhero .teamtitle,.snackhero .teamtitle + .sub{padding-right:100px}}
/* kasboek-logopos: logo en inhoud van de kop overal op dezelfde hoogte */
.hero:not(.solo) .wrap{padding-top:14px}
.hero:not(.solo) .balance{margin-top:0}
.hero:not(.solo) .hero-logo{top:28px}
@media (max-width:420px){.hero:not(.solo) .hero-logo{top:32px}}
/* kasboek-huiskleuren: Watervlo geel + donkerblauw */
:root{--wv-geel:#F8EC60;--wv-blauw:#1C2C58;--tile:#1C2C58;--rope:#F8EC60;--aqua:#F8EC60;--tabon:#1C2C58;--barkleur:#1C2C58;
  --bg:#F3F4F8;--ink:#16213F;--muted:#5A6380;--line:#DADDE6}
@media (prefers-color-scheme:dark){:root{--tabon:#F8EC60;--barkleur:#F8EC60;--bg:#0D1326;--card:#172042;--ink:#E8EBF5;--muted:#9AA3C0;--line:#2A3563}}
nav.top{background:var(--wv-blauw)}
nav.top .brand{color:var(--wv-geel)}
.hero{background:var(--wv-geel);color:var(--wv-blauw)}
.hero .sub{color:#3B4A78}
.hero::after{background:repeating-linear-gradient(90deg,var(--wv-blauw) 0 18px,#fff 18px 22px)}
.stats > div{background:rgba(28,44,88,.08);color:#3B4A78}
.stats > div b{color:var(--wv-blauw)}
.stats > div.hot{background:var(--wv-blauw);color:#DDE3F5}
.stats > div.hot b{color:var(--wv-geel)}
.balance.neg{color:#B3261E}
.balance.laag{color:#B3261E}
.btn.primary{background:var(--wv-geel);border-color:#E3D54A;color:var(--wv-blauw)}
.chips a.on{background:var(--wv-blauw);border-color:var(--wv-blauw);color:var(--wv-geel)}
.bar span{background:var(--barkleur)}
.snack.gekozen{border-color:var(--wv-blauw);box-shadow:inset 0 0 0 2px var(--wv-geel)}
.coinbtn.plus{background:var(--wv-geel);border-color:#E3D54A;color:var(--wv-blauw)}
.coin.used{opacity:.3}
:focus-visible{outline-color:var(--wv-blauw)}
/* kasboek-kophoogte: gele kop overal even hoog */
.hero:not(.solo){box-sizing:border-box;min-height:216px}
@media (min-width:701px){.hero:not(.solo){min-height:200px}}
/* kasboek-kophoogte2: ruimer, zodat beide koppen er altijd binnen passen */
.snackhero .coins{line-height:1.1;margin:8px 0 2px}
.hero:not(.solo){min-height:232px}
@media (min-width:701px){.hero:not(.solo){min-height:256px}}
/* kasboek-balcss: waterpolobal */
.bal{display:inline-block;width:1em;height:1em;background:url(bal.svg?v=1) center/contain no-repeat;vertical-align:-0.15em}
.coins{letter-spacing:0}
.coins .coin{margin-right:8px}
.coin.used{filter:grayscale(1);opacity:.35}
.mine .bal{margin:0 1px}
/* kasboek-hofcss */
.hof .hofamt{font-size:1rem;color:var(--ink)}
.hofbadge{display:inline-block;margin-left:6px;padding:0 8px;border-radius:99px;background:var(--wv-geel,#F8EC60);color:var(--wv-blauw,#1C2C58);font-size:.8rem;font-weight:700;vertical-align:1px}
/* kasboek-acctcss: accounts als tegels */
.accounts{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:10px}
.acct{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:10px}
.acct.admin{border-top:4px solid var(--wv-geel,#F8EC60)}
.acct.inactief{opacity:.6}
.accthead{display:flex;gap:10px;align-items:center}
.accthead strong{display:block;line-height:1.25}
.accthead small{color:var(--muted)}
.avatar{width:42px;height:42px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;font-weight:700;background:var(--wv-blauw,#1C2C58);color:var(--wv-geel,#F8EC60)}
.acct.admin .avatar{background:var(--wv-geel,#F8EC60);color:var(--wv-blauw,#1C2C58)}
.badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.badges:empty{display:none}
.badge{font-size:.75rem;font-weight:600;padding:2px 9px;border-radius:99px}
.badge.geel{background:var(--wv-geel,#F8EC60);color:var(--wv-blauw,#1C2C58)}
.badge.grijs{background:var(--line);color:var(--ink)}
.acct .inline-form{margin:0}
.acct .tools{justify-content:flex-start;align-items:center;gap:8px;margin:0}
.acct .tools > .inline-form{flex-basis:100%}
.mini{display:block;flex-basis:100%;margin:0 0 -4px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
/* kasboek-admincss: backups, logboek, overzicht */
.adminlinks{display:flex;gap:8px;flex-wrap:wrap}
pre.code{background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:10px;overflow-x:auto;font-size:.8rem;white-space:pre}
.logzoek{display:flex;gap:8px}
.logzoek input[name=q]{flex:1}
.logrij .desc strong{white-space:normal}
.logdetail{display:block;color:var(--ink)!important}
.badge.logsoort{background:var(--line);color:var(--ink);font-size:.7rem;padding:1px 7px;border-radius:99px;font-weight:600}
.kpis{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@media (min-width:640px){.kpis{grid-template-columns:repeat(4,minmax(0,1fr))}}
.kpis > div{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column}
.kpis span{font-size:.8rem;color:var(--muted)}
.kpis b{font-size:1.25rem}
.kpis b.pos{color:var(--in)} .kpis b.neg{color:var(--out)}
.grafiekkaart{padding:10px}
.grafiek{width:100%;height:160px;display:block}
.grafiek polyline{fill:none;stroke:var(--barkleur,#1C2C58);stroke-width:2.5;vector-effect:non-scaling-stroke}
.grafiek .nul{stroke:var(--out);stroke-dasharray:4 4;vector-effect:non-scaling-stroke}
.tabel{width:100%;border-collapse:collapse;font-size:.92rem}
.tabel th,.tabel td{padding:7px 6px;border-top:1px solid var(--line);text-align:left}
.tabel thead th{border-top:0;color:var(--muted);font-weight:600;font-size:.8rem}
.tabel .r{text-align:right;white-space:nowrap}
.printkop{margin-top:14px}
@media print{
  nav,.tabbar,.noprint,.linkrow,.flash{display:none!important}
  body{background:#fff;color:#000;padding:0}
  .card,.kpis > div{border-color:#ccc;box-shadow:none;break-inside:avoid}
}
/* kasboek-grafiek2css: grafiek met assen */
.grafiek2{display:grid;grid-template-columns:auto 1fr;grid-template-rows:190px 22px;column-gap:8px;padding:6px 8px 0 0}
.gy{position:relative;grid-column:1;grid-row:1;min-width:48px}
.gy span{position:absolute;right:0;transform:translateY(-50%);font-size:.72rem;color:var(--muted);white-space:nowrap}
.gp{position:relative;grid-column:2;grid-row:1;border-left:1px solid var(--line);border-bottom:1px solid var(--line)}
.gp svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.gp .raster{stroke:var(--line);stroke-width:1;vector-effect:non-scaling-stroke}
.gp .nul{stroke:var(--out);stroke-width:1;stroke-dasharray:4 4;vector-effect:non-scaling-stroke}
.gp polyline{fill:none;stroke:var(--barkleur,#1C2C58);stroke-width:2.5;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.gp polygon{fill:var(--barkleur,#1C2C58);opacity:.08}
.gdot{position:absolute;width:10px;height:10px;border-radius:50%;background:var(--barkleur,#1C2C58);border:2px solid var(--card);transform:translate(-50%,-50%)}
.glabel{position:absolute;transform:translate(calc(-100% - 8px),calc(-100% - 6px));font-size:.75rem;font-weight:700;background:var(--card);color:var(--ink);padding:2px 7px;border:1px solid var(--line);border-radius:6px;white-space:nowrap}
.glabel.onder{transform:translate(calc(-100% - 8px),6px)}
.gx{position:relative;grid-column:2;grid-row:2}
.gx span{position:absolute;top:4px;transform:translateX(-50%);font-size:.72rem;color:var(--muted);white-space:nowrap}
.gx span.links{transform:none}
.gx span.rechts{transform:translateX(-100%)}
.gsamen{margin:10px 0 0;font-size:.85rem}
/* kasboek-bonlezercss */
.catchip{display:inline-flex;gap:6px;align-items:center;margin:3px 6px 3px 0;padding:4px 10px;border-radius:99px;background:var(--bg);border:1px solid var(--line);font-size:.85rem}
.uitgavekop{display:flex;gap:14px;align-items:flex-start}
.bonvoorbeeld{width:96px;max-height:160px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.regel{grid-template-columns:1fr auto}
.regelrechts{display:flex;gap:8px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.regelrechts select{width:auto;padding:4px 8px;font-size:.85rem}
.regelrechts form{margin:0}
.catrij{display:grid;grid-template-columns:minmax(120px,1.2fr) 1fr auto;gap:10px;align-items:center;padding:6px 0}
.catbedrag{text-align:right;font-weight:700;white-space:nowrap}
.catbedrag small{font-weight:400;color:var(--muted)}
/* kasboek-snackfotocss */
.snackfoto{position:relative;margin:-12px -12px 4px;aspect-ratio:4/3;border-radius:12px 12px 0 0;overflow:hidden;background:var(--bg);display:grid;place-items:center}
.snackfoto img{width:100%;height:100%;object-fit:cover;display:block}
.snackemoji{font-size:2.6rem;opacity:.85}
.fotoform{position:absolute;right:6px;bottom:6px;margin:0}
.fotoknop{display:grid;place-items:center;width:34px;height:34px;margin:0;border-radius:50%;background:rgba(255,255,255,.9);border:1px solid var(--line);font-size:1rem;cursor:pointer}
.fotoweg{position:absolute;left:6px;bottom:6px;margin:0}
.fotoweg button{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:rgba(255,255,255,.9);color:#B3261E;cursor:pointer;font-size:.8rem}
.vh{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;pointer-events:none}
.fotoprev{display:block;max-width:160px;border-radius:10px;margin-top:8px}
/* kasboek-fotowachtcss */
.fotowacht{position:absolute;left:6px;top:6px;padding:2px 8px;border-radius:99px;background:rgba(255,255,255,.92);color:#1C2C58;font-size:.72rem;font-weight:600;text-decoration:none;border:1px solid var(--line)}
/* kasboek-stemmerscss */
details.stemmers summary{font-size:.8rem;color:var(--muted);cursor:pointer;list-style:none}
details.stemmers summary::-webkit-details-marker{display:none}
details.stemmers ul{list-style:none;margin:6px 0 0;padding:0;font-size:.82rem}
details.stemmers li{display:flex;justify-content:space-between;gap:6px;padding:2px 0;border-top:1px solid var(--line)}
details.stemmers li:first-child{border-top:0}
.stemballen{white-space:nowrap}
/* kasboek-snackwijzigcss */
.snackwijzig form{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.snackwijzig input,.snackwijzig select{padding:6px 8px;font-size:.85rem}
/* kasboek-pwatipcss */
.pwatip{display:flex;gap:12px;align-items:flex-start;margin-top:24px}
.pwatip[hidden]{display:none}
.pwatip .big{font-size:1.8rem;line-height:1}
.pwatip .btnrow{margin-top:8px}
/* kasboek-hiddenfix */
[hidden]{display:none!important}
/* kasboek-pwabadgecss */
.badge.app{background:var(--bg);border:1px solid var(--line);color:var(--ink)}
/* kasboek-grafiekklikcss */
.gp{cursor:crosshair;touch-action:pan-y}
.gcur{position:absolute;top:0;bottom:0;width:0;pointer-events:none;z-index:2}
.gcur .gline{position:absolute;top:0;bottom:0;left:0;border-left:1px dashed var(--muted)}
.gcur .gdot2{position:absolute;left:0;width:12px;height:12px;border-radius:50%;background:var(--wv-geel,#F8EC60);border:2px solid var(--barkleur,#1C2C58);transform:translate(-50%,-50%)}
.gtip{position:absolute;top:0;left:10px;min-width:150px;max-width:230px;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:10px;padding:7px 9px;font-size:.78rem;line-height:1.35;box-shadow:0 6px 16px rgba(0,0,0,.14)}
.gtip.links{left:auto;right:10px}
.gtip strong{display:block}
.gtip .gsaldo{font-weight:700;margin-bottom:3px}
/* kasboek-statusbalkcss: strakke donkerblauwe statusbalk in de app */
body::before{content:"";position:fixed;top:0;left:0;right:0;height:env(safe-area-inset-top,0px);background:var(--wv-blauw,#1C2C58);z-index:1000;pointer-events:none}
/* kasboek-stickynavcss: kopbalk blijft bovenaan; voorkomt de iOS 26-vervaging in de app */
nav.top{position:sticky;top:0;z-index:60}
html{scroll-padding-top:calc(env(safe-area-inset-top,0px) + 64px)}
.snack{scroll-margin-top:calc(env(safe-area-inset-top,0px) + 70px)}
/* kasboek-deelcss */
.deelkaart{border:2px solid var(--wv-geel,#F8EC60)}
.deelkaart textarea{margin-top:8px;font-size:.92rem;line-height:1.45}
/* kasboek-adminlinkscss: beheerknoppen in een net raster */
.adminlinks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.adminlinks a.btn{display:flex;align-items:center;justify-content:flex-start;gap:10px;min-height:52px;padding:10px 14px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adminlinks a.btn:last-of-type:nth-of-type(odd){grid-column:1/-1}
.adminlinks .flash{grid-column:1/-1}
@media (min-width:700px){.adminlinks{grid-template-columns:repeat(3,minmax(0,1fr))}.adminlinks a.btn:last-of-type:nth-of-type(odd){grid-column:auto}}
/* kasboek-printhintcss */
.printhint{border:2px solid var(--wv-geel,#F8EC60);margin-top:14px}
/* kasboek-onlinecss */
.card.online{padding:10px 14px}
.onlinerij{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.onlinelabel{display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:.9rem;margin-right:4px}
.groen{width:9px;height:9px;border-radius:50%;background:#2EB67D;box-shadow:0 0 0 3px rgba(46,182,125,.2)}
.avatar.klein{width:30px;height:30px;font-size:.75rem}
.onlinevandaag{display:block;margin-top:4px}
/* kasboek-uitgavenaamcss */
.uitgavenaam{margin:-4px 0 10px}
.uitgavenaam .card{margin-top:8px}
/* kasboek-kortingcss */
.kortingkaart{border-left:4px solid #2EB67D}
/* kasboek-prijzencss */
.prijsgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}
.prijskaart{margin-top:0;display:flex;flex-direction:column;gap:4px}
.prijsrij{display:flex;justify-content:space-between;gap:8px;padding:3px 0;border-top:1px solid var(--line);font-size:.92rem}
.prijsrij.goedkoopst{font-weight:700}
.prijsrij small{color:var(--out);font-weight:400}
.actierij small b{color:var(--ink)}
/* kasboek-hernoemcss */
.hernoem{margin-top:4px}
.hernoem .inline-form{margin-top:6px}
.hernoem input[name=nieuw]{flex:1 1 160px}
/* kasboek-potcss */
.potinfo{border-left:4px solid var(--wv-geel,#F8EC60);font-size:.92rem}
/* kasboek-potformcss */
.inline-form input[type=number]{flex:0 0 64px;width:64px;text-align:center}
/* kasboek-datumregelcss */
.desc small.datumregel,.desc small.omsregel{display:block;line-height:1.35}
.desc small.datumregel{font-variant-numeric:tabular-nums}
/* kasboek-tabeldatumcss: datums op één regel in de kascontrole-tabellen */
.tabel td.nw,.tabel th.nw,.tabel .r{white-space:nowrap}
.tabel td.nw{font-variant-numeric:tabular-nums}
.tabel td.noprint,.tabel th.noprint{white-space:nowrap}
.tabel td:nth-child(2):not(.r):not(.noprint){overflow-wrap:anywhere}
@media (max-width:480px){.tabel{font-size:.86rem}.tabel th,.tabel td{padding:7px 4px}}
/* kasboek-wedstrijdcss */
.wk{padding:0;overflow:hidden;margin-top:14px}
.wk .wkkop{background:var(--wv-geel,#F8EC60);color:var(--wv-blauw,#1C2C58);padding:10px 14px;display:flex;justify-content:space-between;align-items:center;gap:8px;font-weight:700}
.wk .wkkop small{font-weight:400}
.wk section{padding:12px 14px;border-top:1px solid var(--line)}
.wk .lab{display:block;font-size:.78rem;color:var(--muted);margin-bottom:4px}
.wk .rij{display:flex;justify-content:space-between;align-items:center;gap:10px}
.wk .score{font-size:1.5rem;font-weight:700;white-space:nowrap}
.wk .wkstats{display:flex;gap:8px;text-align:center}
.wk .wkstats > div{flex:1 1 0;min-width:0}
.wk .wkstats b{display:block;font-size:1.1rem}
.wk .fun{margin-top:8px;font-size:.92rem}
.wk .knoppen{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.wk .wkvoet{display:flex;justify-content:space-between;gap:8px;align-items:center;flex-wrap:wrap;font-size:.9rem}
.wk .wkmv{background:rgba(248,236,96,.18)}
.chipuitslag{display:inline-block;padding:2px 10px;border-radius:99px;font-size:.78rem;font-weight:600}
.chipuitslag.w{background:#DCF5E8;color:#17623E}
.chipuitslag.g{background:#FFF3C4;color:#7A5B00}
.chipuitslag.v{background:#FDE3E1;color:#9C2B23}
@media (prefers-color-scheme:dark){.chipuitslag.w{background:rgba(46,182,125,.2);color:#7EDDB1}.chipuitslag.g{background:rgba(248,236,96,.2);color:#F8EC60}.chipuitslag.v{background:rgba(240,122,114,.2);color:#F5A8A2}}
.kandidaten{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-top:10px}
.kand{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--ink);cursor:pointer;text-align:left;font:inherit}
.kand.gekozen{border-color:var(--wv-blauw,#1C2C58);box-shadow:inset 0 0 0 2px var(--wv-geel,#F8EC60);font-weight:600}
.titelrij{display:flex;justify-content:space-between;gap:8px;padding:5px 0;border-top:1px solid var(--line)}
.titelrij:first-child{border-top:0}
.tabel tr.mijnteam{background:rgba(248,236,96,.25);font-weight:600}
/* kasboek-routerij */
.routerij{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:100%}
.routerij .btn{display:flex;align-items:center;justify-content:center;gap:4px;margin:0;white-space:nowrap;text-align:center}
