:root{
  --bg:#fff7ec; --card:#fff; --ink:#2b2d42; --muted:#7b8194;
  --blue:#4c6ef5; --blue-l:#edf2ff; --green:#2f9e44; --green-l:#ebfbee;
  --red:#e03131; --red-l:#fff0f0; --orange:#f08c00; --yellow:#ffd43b; --line:#e6e0d6;
  --r:20px;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:"Andika",system-ui,sans-serif;-webkit-tap-highlight-color:transparent}
body{padding:10px 12px 40px;min-height:100vh;background:radial-gradient(circle at 10% 0%,#ffe8cc 0,transparent 40%),radial-gradient(circle at 100% 30%,#e7f5ff 0,transparent 45%),var(--bg)}
#app{max-width:720px;margin:0 auto}
button{font:inherit;color:inherit;cursor:pointer}
input,textarea{font:inherit;color:var(--ink)}
.card{background:var(--card);border-radius:var(--r);box-shadow:0 3px 0 #efe4d3,0 6px 18px rgba(80,60,30,.08)}
h1,h2,h3{margin:0}

/* ---------- barre du haut ---------- */
.topbar{display:flex;align-items:center;gap:10px;margin:2px 0 12px}
.topbar h2{flex:1;font-size:1.3rem;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.iconbtn{width:44px;height:44px;border-radius:14px;border:none;background:#fff;box-shadow:0 2px 0 #efe4d3;font-size:1.3rem;flex:none}
.coins{flex:none;background:#fff3bf;border:2px solid #fcc419;border-radius:999px;padding:6px 14px;font-size:1.15rem;box-shadow:0 2px 0 #f2c94c}
.coins.bump{animation:bump .4s}
@keyframes bump{50%{transform:scale(1.25)}}
.fly{position:fixed;z-index:50;transform:translateX(-50%);font-weight:700;color:#e67700;font-size:1.2rem;pointer-events:none;animation:flyup 1.1s ease-out forwards}
@keyframes flyup{from{opacity:1;transform:translate(-50%,0)}to{opacity:0;transform:translate(-50%,40px)}}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#2b2d42;color:#fff;padding:12px 18px;border-radius:14px;z-index:60;font-size:1.05rem;max-width:90vw;text-align:center;animation:pop .25s}

/* ---------- boutons ---------- */
.btn{border:none;border-radius:14px;padding:12px 18px;font-weight:700;font-size:1.1rem;box-shadow:0 3px 0 rgba(0,0,0,.15)}
.btn:active,.opt:active,.game-card:active,.item:active{transform:translateY(2px);box-shadow:0 1px 0 rgba(0,0,0,.15)}
.btn.main{background:var(--blue);color:#fff}
.btn.sec{background:#eef0f5}
.btn.danger{background:#ffe3e3;color:var(--red)}
.btn.small{padding:7px 12px;font-size:.95rem}
.btn.shopbtn{background:linear-gradient(#ffd43b,#fab005);color:#5c3c00;font-size:1.25rem;padding:14px 22px}
.btn:disabled{opacity:.4}

/* ---------- avatar ---------- */
.avatar-svg{display:block;width:100%;height:auto}
.avatar-big{width:min(220px,46vw);flex:none}
.avatar-mid{width:160px;margin:0 auto}
.bounce{animation:bounce 1s ease-in-out infinite alternate}
@keyframes bounce{to{transform:translateY(-8px)}}
@keyframes pop{0%{transform:translateX(-50%) scale(.6);opacity:0}100%{transform:translateX(-50%) scale(1);opacity:1}}

/* ---------- accueil ---------- */
.welcome{text-align:center;padding:24px 18px;margin-top:20px}
.welcome .avatar-big{margin:0 auto 10px}
.welcome form{display:flex;gap:8px;justify-content:center;margin-top:8px}
.welcome input{font-size:1.3rem;padding:10px 14px;border-radius:14px;border:2px solid var(--line);width:200px}
.gpick{display:flex;gap:12px;justify-content:center;margin:6px 0 4px}
.gcard{display:flex;flex-direction:column;align-items:center;gap:6px;width:140px;padding:10px;border-radius:18px;border:4px solid var(--line);background:#fff;font-size:1.15rem}
.gcard .mini{width:100%}
.gcard.cur{border-color:var(--blue);background:var(--blue-l)}
.hero{display:flex;gap:16px;align-items:center;padding:14px}
.hero-side{flex:1;display:flex;flex-direction:column;gap:14px;align-items:flex-start}
.hello{margin:0;font-size:1.1rem;line-height:1.35}
.section-title{margin:18px 4px 10px;font-size:1.2rem}
.games{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.game-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:14px;border-radius:var(--r);border:none;background:#fff;box-shadow:0 3px 0 #efe4d3;border-top:6px solid var(--gc,#ccc);min-height:150px}
.game-card .gicon{font-size:2.3rem}
.game-card .gtitle{font-weight:700;font-size:1.15rem}
.game-card .gdesc{color:var(--muted);font-size:.95rem;line-height:1.2;flex:1}
.game-card .gbest{font-size:.85rem;color:#e67700}
.game-card .gbest.new{color:var(--green);font-weight:700}
.game-card.soon{opacity:.55;border-top-color:#ddd;cursor:default}

/* ---------- boutique ---------- */
.shop-top{display:flex;justify-content:center;margin-bottom:10px}
.tabs{display:flex;gap:6px;overflow-x:auto;padding:2px 2px 8px;scrollbar-width:thin}
.tab{flex:none;display:flex;flex-direction:column;align-items:center;gap:2px;border:none;border-radius:14px;background:#fff;padding:8px 10px;font-size:.85rem;box-shadow:0 2px 0 #efe4d3;min-width:70px}
.tab span{font-size:1.4rem}
.tab.cur{background:var(--blue);color:#fff}
.items{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;margin-top:6px}
.item{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px;border-radius:16px;border:3px solid transparent;background:#fff;box-shadow:0 3px 0 #efe4d3}
.item.on{border-color:var(--green)}
.item .mini{width:100%;max-width:110px}
.iname{font-size:.95rem;font-weight:700;text-align:center;line-height:1.1;min-height:1.1em}
.ibtn{font-size:.95rem;border-radius:10px;padding:4px 10px;font-weight:700}
.ibtn.eq{background:var(--green-l);color:var(--green)}
.ibtn.own{background:var(--blue-l);color:var(--blue)}
.ibtn.buy{background:#fff3bf;color:#a86a00}
.ibtn.buy.poor{background:#f1f3f5;color:#adb5bd}

/* ---------- fin de partie ---------- */
.finish{text-align:center;padding:20px 16px;display:flex;flex-direction:column;align-items:center;gap:10px}
.finish h1{font-size:1.8rem}
.finish .score{font-size:2.4rem;font-weight:700;margin:0}
.finish .earned{font-size:1.3rem;margin:0;color:#e67700}
.finish .earned small{display:block;font-size:.85rem;color:var(--muted)}
.row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}

/* ---------- parents (modal) ---------- */
.modal-bg{position:fixed;inset:0;background:rgba(30,30,50,.45);display:grid;place-items:center;z-index:40;padding:16px}
.modal{width:min(440px,100%);padding:20px;display:flex;flex-direction:column;gap:12px;max-height:90vh;overflow:auto}
.modal form{display:flex;gap:8px}
.modal input:not([type=checkbox]),.modal textarea{width:100%;padding:8px 10px;border-radius:10px;border:2px solid var(--line);font-size:1.05rem}
.modal textarea{font-family:monospace;font-size:.75rem;margin:6px 0}
.fld{display:flex;flex-direction:column;gap:4px}
.fld.chk{flex-direction:row;align-items:center;gap:8px}
.small{font-size:.9rem}.muted{color:var(--muted)}

/* ============================================================
   ÉLÉMENTS COMMUNS AUX JEUX
   ============================================================ */
.game{display:flex;flex-direction:column;gap:12px}
.panel{background:#fff;border-radius:var(--r);box-shadow:0 3px 0 #efe4d3;padding:16px}
.progress{height:12px;background:#f1e7d8;border-radius:99px;overflow:hidden}
.progress>div{height:100%;background:linear-gradient(90deg,#69db7c,#2f9e44);border-radius:99px;transition:width .3s}
.pcount{text-align:right;font-size:.9rem;color:var(--muted);margin-top:-6px}
.q{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}
.q .prompt{font-size:1.25rem;font-weight:700}
.emoji.big{font-size:6rem;line-height:1.1}
.swatch{display:inline-block;width:110px;height:110px;border-radius:24px;border:4px solid #dee2e6}
.qword{font-size:2.2rem;font-weight:700}
.opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}
.opt{border:3px solid #dbe4ff;background:#fff;border-radius:16px;padding:16px 10px;font-size:1.35rem;font-weight:700;box-shadow:0 3px 0 #dbe4ff}
.opt small{display:block;font-size:.8rem;color:var(--muted);font-weight:400}
.opt.ok{background:var(--green-l);border-color:var(--green);color:var(--green)}
.opt.bad{background:var(--red-l);border-color:var(--red);color:var(--red)}
.opt.dim{opacity:.45}
.opt:disabled{cursor:default}
.feedback{min-height:1.6em;text-align:center;font-size:1.15rem;font-weight:700}
.feedback.ok{color:var(--green)} .feedback.bad{color:var(--red)}
.feedback .tip{display:block;font-weight:400;font-size:1rem;color:var(--ink);margin-top:4px}
.say{border:none;background:var(--blue-l);border-radius:14px;font-size:1.6rem;padding:8px 16px}
.typein{display:flex;gap:8px;width:100%;max-width:420px}
.typein input{flex:1;min-width:0;font-size:1.4rem;padding:10px 14px;border-radius:14px;border:3px solid var(--line);outline:none}
.typein input:focus{border-color:var(--blue)}
.typein input.ok{border-color:var(--green);background:var(--green-l)}
.typein input.bad{border-color:var(--red);background:var(--red-l)}
.modepick h3{margin-bottom:10px}
.choices{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.choice{border:3px solid var(--line);background:#fff;border-radius:14px;padding:10px 14px;font-size:1.05rem}
.choice.cur{border-color:var(--blue);background:var(--blue-l);color:var(--blue);font-weight:700}
.startbtn{width:100%;font-size:1.3rem;padding:16px}
.note{font-size:.9rem;color:var(--muted);text-align:center}

/* ---------- Het lichaam ---------- */
.g-lichaam .titleRow{display:flex;gap:8px}
.g-lichaam .titleRow input{flex:1;min-width:0;font-size:1.3rem;padding:10px 12px;border-radius:12px;border:3px solid var(--line);outline:none}
.g-lichaam .titleRow input:focus{border-color:var(--blue)}
.g-lichaam .titleRow input.ok{border-color:var(--green);background:var(--green-l)}
.g-lichaam .titleRow input.bad{border-color:var(--red);background:var(--red-l)}
.g-lichaam .titleRow input.almost{border-color:var(--orange);background:#fff4e0}
.g-lichaam .ib{flex:none;width:48px;border-radius:12px;border:2px solid var(--line);background:#fff;font-size:1.3rem}
.g-lichaam .step{display:flex;align-items:center;gap:8px;font-weight:700;margin:2px 0 8px;font-size:1.05rem}
.g-lichaam .num{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--blue);color:#fff;font-size:.9rem;flex:none}
.g-lichaam .tfb{min-height:1.4em;margin:6px 2px 10px}
.g-lichaam .tfb.ok{color:var(--green)}.g-lichaam .tfb.bad{color:var(--red)}.g-lichaam .tfb.almost{color:var(--orange)}.g-lichaam .tfb.hint{color:var(--blue);letter-spacing:.06em}
.figure{position:relative;width:100%;aspect-ratio:520/480;container-type:inline-size;user-select:none;-webkit-user-select:none}
.figure svg{position:absolute;inset:0;width:100%;height:100%}
.slot{position:absolute;border:2px dashed #9fb0c8;border-radius:10px;background:rgba(255,255,255,.88);display:flex;align-items:center;justify-content:center;font-size:clamp(10px,3.1cqw,17px)}
.slot.hover{border-color:var(--blue);background:var(--blue-l)}
.slot.ok{border:2px solid var(--green);background:var(--green-l)}
.slot.bad{border:2px solid var(--red);background:var(--red-l)}
.slot .chip{width:100%;height:100%;border:none;border-radius:8px;padding:0 3px;font-size:inherit;box-shadow:none;background:transparent}
.bank{display:flex;flex-wrap:wrap;gap:8px;min-height:56px;padding:10px;border-radius:14px;background:#f8f1e6;border:2px dashed transparent}
.bank.hover{border-color:var(--blue)}
.chip{display:inline-flex;align-items:center;justify-content:center;text-align:center;line-height:1.05;padding:9px 13px;border-radius:12px;background:#fff;border:2px solid var(--blue);font-size:1.1rem;cursor:grab;touch-action:none;box-shadow:0 2px 0 #c5cff0}
.chip.sel{background:#ffe98a;border-color:#e0a800}
.chip.ghost{opacity:.3}
.drag{position:fixed;z-index:1000;pointer-events:none;transform:translate(-50%,-50%) rotate(-3deg);box-shadow:0 8px 20px rgba(0,0,0,.25)!important;background:#fff!important;border:2px solid var(--blue)!important;padding:8px 12px!important;font-size:1.05rem!important}

/* ---------- België ---------- */
.mapwrap{position:relative}
.map{width:100%;height:auto;display:block;touch-action:manipulation}
.map .prov{fill:#fff8e8;stroke:#8d7b5f;stroke-width:1.4;stroke-linejoin:round;transition:fill .15s}
.map.clickable .prov{cursor:pointer}
.map.clickable .prov:hover{fill:#e7f0ff}
.map .prov.hl{fill:#ffd43b}
.map .prov.ok{fill:#8ce99a}
.map .prov.bad{fill:#ffa8a8}
.map .prov.vl{fill:#ffe066}.map .prov.wa{fill:#ff8787}.map .prov.br{fill:#74c0fc}
.map .prov.sel{stroke:#2b2d42;stroke-width:4}
.map .city{fill:#2b2d42;stroke:#fff;stroke-width:2}
.map .lbl{font-size:15px;font-weight:700;fill:#2b2d42;paint-order:stroke;stroke:#fff;stroke-width:4px;stroke-linejoin:round;pointer-events:none;font-family:"Andika",system-ui,sans-serif}
.map .lbl.small{font-size:13px}
.legend{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;font-size:.95rem}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:16px;height:16px;border-radius:4px;display:inline-block;border:1px solid #8d7b5f}
.infobox{min-height:4.2em;text-align:center;font-size:1.1rem;line-height:1.45}
.infobox b{font-size:1.25rem}
