:root{--bg:#05050a;--paneel:#0e0f1a;--lijn:#22243a;--tekst:#eceef8;--zacht:#8c8fae;--onder:#3dffa8;--boven:#ff3d7f;--bal:#ffd23d;--kop:58px}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--tekst);font:15px/1.45 system-ui,-apple-system,"Segoe UI",sans-serif}
button,input{font:inherit;color:inherit}
button{background:#1a1c2c;border:1px solid var(--lijn);border-radius:8px;padding:6px 12px;cursor:pointer}
button:hover{border-color:var(--bal)}button:focus-visible,input:focus-visible{outline:2px solid var(--bal);outline-offset:2px}
input{background:#12131f;border:1px solid var(--lijn);border-radius:8px;padding:6px 10px}
.kop{height:var(--kop);display:flex;align-items:center;gap:16px;padding:0 16px;border-bottom:1px solid var(--lijn);background:#07080f}
.logo{font-weight:900;font-size:24px;letter-spacing:.14em;text-decoration:none;background:linear-gradient(90deg,var(--boven),var(--bal),var(--onder));-webkit-background-clip:text;background-clip:text;color:transparent}
.kamer{display:flex;align-items:center;gap:8px;color:var(--zacht)}.kamer b{color:var(--tekst);letter-spacing:.2em;font-family:ui-monospace,monospace;font-size:17px}
.retro{flex:1;display:flex;align-items:center;gap:10px;min-width:0;justify-content:center}
.retro-label{color:var(--zacht);font-size:12px;text-transform:uppercase;letter-spacing:.1em}
#jaar{flex:1;max-width:420px;accent-color:var(--bal);padding:0;background:none;border:0}
#jaarTekst{font:800 22px ui-monospace,monospace;color:var(--bal);min-width:3.2em;text-align:center}
.tijdperk{color:var(--zacht);font-size:13px;white-space:nowrap}
.ikoon{width:38px;padding:6px 0}
.spel{display:grid;grid-template-columns:minmax(0,1fr) 340px;height:calc(100% - var(--kop))}
.speelveld{position:relative;overflow:hidden;display:grid;place-items:center;background:radial-gradient(ellipse at center,#0d0f1f 0%,#05050a 70%);touch-action:none;cursor:crosshair}
#c2d{display:block;image-rendering:pixelated;box-shadow:0 0 0 1px var(--lijn),0 20px 60px rgba(0,0,0,.6);border-radius:6px;transition:opacity .25s}
.laag3d{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .25s}.laag3d canvas{display:block;width:100%!important;height:100%!important}
.melding{position:absolute;top:12px;left:50%;transform:translateX(-50%);background:rgba(14,15,26,.92);border:1px solid var(--lijn);border-radius:10px;padding:8px 14px;max-width:90%;text-align:center}
.vbalk{position:absolute;right:10px;bottom:10px;width:10px;height:10px;border-radius:50%;background:#555}.vbalk.aan{background:var(--onder);box-shadow:0 0 8px var(--onder)}
.paneel{border-left:1px solid var(--lijn);background:var(--paneel);overflow:auto;padding:12px 14px;display:flex;flex-direction:column;gap:14px}
.paneel h2{margin:0 0 8px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--zacht)}
.plekken{display:grid;gap:6px}
.plek{border:1px solid var(--lijn);border-left:4px solid var(--kleur);border-radius:8px;padding:7px 9px;display:grid;grid-template-columns:1fr auto;gap:4px 8px;align-items:center}
.plek.onder{--kleur:var(--onder)}.plek.boven{--kleur:var(--boven)}.plek.ik{background:rgba(255,210,61,.07);border-color:var(--bal)}
.plek .titel{font-weight:600}.plek .wie{color:var(--zacht);font-size:13px}.plek .knoppen{display:flex;gap:4px;grid-row:span 2}
.plek button{padding:3px 8px;font-size:13px}.plek .joy{grid-column:1/-1;font-size:12px;color:var(--zacht)}.plek .joy b{font-family:ui-monospace,monospace;color:var(--tekst);letter-spacing:.12em}
.plek .joy a{color:var(--onder)}.plek .joy .actief{color:var(--onder)}
.naam{display:flex;flex-direction:column;gap:4px;margin-top:8px;color:var(--zacht);font-size:13px}
.rij{display:flex;gap:6px}.rij input{flex:1;min-width:0}
.chat{list-style:none;margin:0 0 6px;padding:0;max-height:200px;overflow:auto;font-size:14px}.chat li{padding:2px 0}.chat b{color:var(--bal)}
.av-tegels{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-bottom:6px}.av-tegels:empty{display:none}
.av-tegels figure{margin:0;position:relative;aspect-ratio:4/3;background:#000;border-radius:8px;overflow:hidden}.av-tegels video{width:100%;height:100%;object-fit:cover}
.av-tegels figcaption{position:absolute;left:6px;bottom:4px;font-size:12px;text-shadow:0 1px 2px #000}
.klein{font-size:13px;color:var(--zacht)}.klein code{color:var(--tekst)}
@media (max-width:900px){
  .kop{flex-wrap:wrap;height:auto;padding:8px 16px;gap:8px}.retro{order:3;flex-basis:100%}.tijdperk{display:none}
  .spel{grid-template-columns:1fr;height:auto}.speelveld{height:72vh}.paneel{border-left:0;border-top:1px solid var(--lijn)}
}
@media (prefers-reduced-motion:reduce){#c2d,.laag3d{transition:none}}
.demo .paneel,.demo .kamer,.demo #geluid{display:none}.demo .spel{grid-template-columns:1fr}
.optie{display:flex;gap:8px;align-items:flex-start;cursor:pointer;line-height:1.35}.optie input{margin-top:3px;accent-color:var(--onder)}.optie .klein{display:block}
.uitleg p{margin:0 0 6px;font-size:13px;line-height:1.45;color:var(--tekst)}.uitleg .lbl{display:block;color:var(--zacht);font-size:11px;text-transform:uppercase;letter-spacing:.08em}
.uitleg .jaarkop{font-size:15px}.uitleg .jaarkop b{font:800 18px ui-monospace,monospace;color:var(--bal)}
.optie-rij{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}.optie-rij select{background:#12131f;color:var(--tekst);border:1px solid var(--lijn);border-radius:8px;padding:5px 8px;font:inherit;max-width:60%}
.jaarflits{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);background:rgba(5,5,10,.85);border:1px solid var(--bal);color:var(--tekst);border-radius:999px;padding:8px 16px;font-size:14px;max-width:92%;text-align:center;pointer-events:none}

/* ---- mobiel (gemeten met tests/e2e/mobiel.py) ---- */
html{-webkit-text-size-adjust:100%}
.speelveld{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
button,select,input{touch-action:manipulation}
.kop{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}
@media (max-width:900px){.speelveld{height:72dvh}}
/* smalle telefoon, staand: kop in twee rijen — merk/kamer/geluid boven, retroschuif over de volle breedte eronder */
@media (max-width:600px){
  .kop{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"logo kamer geluid" "retro retro retro";gap:8px 10px;padding:8px 12px}
  .logo{grid-area:logo;font-size:20px}.kamer{grid-area:kamer;justify-self:end;gap:6px;min-width:0}.kamer>span{display:none}.kamer b{font-size:15px}
  .kamer button{padding:6px 10px;min-height:40px}#geluid{grid-area:geluid;min-height:40px}
  .retro{grid-area:retro;gap:8px}.retro-label,.tijdperk,.lang{display:none}#jaar{max-width:none;min-width:0}#jaarTekst{font-size:19px;min-width:2.6em}
  #reis{min-height:40px;padding:6px 14px}
  .paneel{padding:12px}
}
/* telefoon liggend: compacte kop, veld zo hoog mogelijk, paneel ernaast */
@media (orientation:landscape) and (max-height:520px){
  :root{--kop:46px}
  .kop{display:flex;flex-wrap:nowrap;height:var(--kop);padding-top:0;padding-bottom:0;gap:10px}
  .logo{font-size:18px}.kamer>span,.retro-label,.tijdperk,.lang{display:none}.kamer b{font-size:14px}
  .kamer button,#reis,#geluid{min-height:36px;padding:4px 10px}
  #jaarTekst{font-size:17px}
  .spel{grid-template-columns:minmax(0,1fr) min(320px,42vw);height:calc(100dvh - var(--kop))}
  .speelveld{height:auto}
  .paneel{border-top:0;border-left:1px solid var(--lijn);padding-right:max(12px,env(safe-area-inset-right))}
}

.kop button{white-space:nowrap}
/* smal paneel (telefoon staand of liggend naast het veld): plek-kaart in één kolom, knoppen eronder */
@media (max-width:600px),(orientation:landscape) and (max-height:520px){
  .plek{grid-template-columns:minmax(0,1fr)}.plek .knoppen{grid-row:auto;flex-wrap:wrap}.plek .titel{line-height:1.25}
}
.kop>.logo,.kop>.kamer,.kop>#geluid,.kamer button{flex-shrink:0}.kop>.retro{min-width:0}
@media (orientation:landscape) and (max-height:520px) and (max-width:600px){.logo{font-size:16px;letter-spacing:.08em}.kamer b{letter-spacing:.1em}}
.merkblok p{margin:0}.merkblok a{color:var(--onder)}
.logo{display:inline-flex;align-items:center;gap:6px}.logo img{height:26px;width:auto;flex-shrink:0}
@media (max-width:600px),(orientation:landscape) and (max-height:520px){.logo img{height:22px}}
/* kop: knoppen krimpen nooit; tijdperknaam alleen op brede schermen (staat ook in het uitlegpaneel) */
.retro>*:not(#jaar){flex-shrink:0}#jaar{min-width:60px}
.tijdperk{min-width:0;overflow:hidden;text-overflow:ellipsis}
@media (max-width:1180px){.tijdperk{display:none}}

.kamer{position:relative}
.deelmenu{position:absolute;top:calc(100% + 6px);left:0;z-index:20;display:flex;flex-direction:column;min-width:170px;background:var(--paneel);border:1px solid var(--lijn);border-radius:10px;padding:6px;box-shadow:0 12px 30px rgba(0,0,0,.5)}
.deelmenu a,.deelmenu button{display:block;text-align:left;padding:10px 12px;min-height:44px;border:0;border-radius:8px;background:none;color:var(--tekst);text-decoration:none;font-size:15px;cursor:pointer}
.deelmenu a:hover,.deelmenu button:hover{background:#1a1c2c;color:var(--bal)}
@media (max-width:600px){.deelmenu{left:auto;right:0}}
.gestopt{position:absolute;inset:0;z-index:15;display:grid;place-content:center;gap:12px;text-align:center;background:rgba(5,5,10,.88);padding:24px}.gestopt p{margin:0;font-size:17px}
[hidden]{display:none!important}
