/* ============================================================
   OSPanel Spiele – optimiert für 15" Touch-Terminals
   Helles Business-Design, große Touch-Targets, klare UI
   ============================================================ */
:root{
  --violet:#8b3ee2; --violet-d:#6c25c4; --violet-l:#a76bf0;
  --ink:#1a1726; --ink-soft:#4a4660; --muted:#6f6b80;
  --bg:#ffffff; --bg-soft:#f6f4fb; --bg-soft2:#eef0f7; --line:#e7e3f2;
  --grad:linear-gradient(120deg,#8b3ee2 0%,#5b6cff 100%);
  --grad-soft:linear-gradient(120deg,#f3ecff 0%,#eef2ff 100%);
  --shadow:0 18px 50px -18px rgba(86,44,160,.28);
  --shadow-sm:0 8px 26px -12px rgba(86,44,160,.22);
  --radius:22px; --radius-sm:14px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html{font-size:18px}
body{
  font-family:'Manrope',system-ui,sans-serif;color:var(--ink);
  background:linear-gradient(160deg,#f4f2fb 0%,#eef2ff 60%,#f6f4fb 100%);
  min-height:100vh;line-height:1.5;-webkit-font-smoothing:antialiased;
  overflow-x:hidden;touch-action:manipulation;user-select:none;
}
h1,h2,h3{font-family:'Plus Jakarta Sans',sans-serif;letter-spacing:-.02em;line-height:1.1}

/* ---------- Top bar ---------- */
.g-top{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.85);
  backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.g-top-inner{max-width:1700px;margin:0 auto;display:flex;align-items:center;
  justify-content:space-between;padding:.9rem 1.6rem}
.g-brand{display:flex;align-items:center;gap:.8rem}
.g-brand img{height:54px}
.g-brand span{font-family:'Plus Jakarta Sans';font-weight:800;font-size:1.5rem;color:var(--violet-d)}
.g-clock{font-family:'Plus Jakarta Sans';font-weight:700;font-size:1.5rem;color:var(--ink-soft);
  font-variant-numeric:tabular-nums}

/* back button */
.g-back{display:inline-flex;align-items:center;gap:.6rem;padding:.7rem 1.3rem;
  background:#fff;border:2px solid var(--line);border-radius:50px;font-weight:700;
  font-size:1.05rem;color:var(--ink-soft);cursor:pointer;text-decoration:none;transition:.2s}
.g-back:hover,.g-back:active{border-color:var(--violet-l);color:var(--violet-d)}

/* ---------- Home ---------- */
.home-main{max-width:1700px;margin:0 auto;padding:2.5rem 1.6rem 4rem}
.home-hero{text-align:center;margin-bottom:2.6rem}
.home-hero h1{font-size:3rem;margin-bottom:.5rem;background:var(--grad);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.home-hero p{font-size:1.35rem;color:var(--ink-soft)}
.game-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.8rem}
.game-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:2.6rem 2rem;text-align:center;text-decoration:none;color:inherit;
  box-shadow:var(--shadow-sm);transition:transform .18s,box-shadow .18s,border-color .18s;
  position:relative;overflow:hidden}
.game-card::before{content:'';position:absolute;inset:0 0 auto 0;height:7px;background:var(--c)}
.game-card:hover,.game-card:active{transform:translateY(-7px);box-shadow:var(--shadow);border-color:var(--c)}
.gc-ic{font-size:4.6rem;line-height:1;margin-bottom:1rem;filter:drop-shadow(0 6px 14px rgba(0,0,0,.12))}
.game-card h2{font-size:1.9rem;color:var(--ink);margin-bottom:.35rem}
.game-card p{font-size:1.15rem;color:var(--muted)}

/* ---------- Game page shell ---------- */
.game-main{max-width:1700px;margin:0 auto;padding:1.6rem;display:flex;flex-direction:column;align-items:center}
.game-head{width:100%;display:flex;align-items:center;justify-content:space-between;
  gap:1rem;margin-bottom:1.4rem;flex-wrap:wrap}
.game-title{display:flex;align-items:center;gap:.9rem}
.game-title .gt-ic{font-size:2.4rem}
.game-title h1{font-size:2.1rem;color:var(--violet-d)}
.game-actions{display:flex;gap:.9rem;align-items:center;flex-wrap:wrap}

/* buttons */
.btn{font-family:'Plus Jakarta Sans';font-weight:700;font-size:1.1rem;border:none;
  border-radius:50px;padding:.95rem 1.8rem;cursor:pointer;transition:.18s;display:inline-flex;
  align-items:center;gap:.6rem;text-decoration:none}
.btn-primary{background:var(--grad);color:#fff;box-shadow:var(--shadow-sm)}
.btn-primary:hover,.btn-primary:active{transform:translateY(-2px);filter:brightness(1.05)}
.btn-ghost{background:#fff;color:var(--violet-d);border:2px solid var(--line)}
.btn-ghost:hover,.btn-ghost:active{border-color:var(--violet-l)}
.btn-lg{font-size:1.25rem;padding:1.1rem 2.2rem}

/* difficulty pills */
.diff{display:inline-flex;background:#fff;border:2px solid var(--line);border-radius:50px;padding:.3rem;gap:.2rem}
.diff button{border:none;background:none;font-weight:700;font-size:1rem;padding:.55rem 1.2rem;
  border-radius:50px;cursor:pointer;color:var(--muted);transition:.18s;font-family:'Plus Jakarta Sans'}
.diff button.active{background:var(--grad);color:#fff}

/* status / win banner */
.game-status{margin-top:1.2rem;font-size:1.25rem;font-weight:700;color:var(--ink-soft);min-height:1.6em;text-align:center}
.win-pop{position:fixed;inset:0;display:none;align-items:center;justify-content:center;
  background:rgba(26,23,38,.45);backdrop-filter:blur(4px);z-index:100}
.win-pop.show{display:flex;animation:fade .3s}
.win-card{background:#fff;border-radius:var(--radius);padding:3rem 3.5rem;text-align:center;box-shadow:var(--shadow);max-width:90vw}
.win-card .wic{font-size:5rem;margin-bottom:.6rem}
.win-card h2{font-size:2.4rem;color:var(--violet-d);margin-bottom:.5rem}
.win-card p{font-size:1.3rem;color:var(--ink-soft);margin-bottom:1.8rem}
@keyframes fade{from{opacity:0}to{opacity:1}}

.g-foot{text-align:center;padding:1.5rem;color:var(--muted);font-size:.95rem}

/* ============ SUDOKU ============ */
.sudoku-wrap{display:flex;flex-direction:column;align-items:center;gap:1.4rem}
.sudoku{display:grid;grid-template-columns:repeat(9,1fr);background:var(--ink);
  border:4px solid var(--ink);border-radius:10px;overflow:hidden;
  width:min(86vw,560px);aspect-ratio:1}
.sudoku .cell{background:#fff;display:flex;align-items:center;justify-content:center;
  font-size:clamp(1.2rem,4.5vw,2rem);font-weight:700;cursor:pointer;color:var(--violet-d);
  border:1px solid #d8d3e8;transition:background .1s}
.sudoku .cell.fixed{color:var(--ink);font-weight:800;cursor:default;background:var(--bg-soft)}
.sudoku .cell.sel{background:#e6dafc}
.sudoku .cell.err{color:#d6455d}
.sudoku .cell:nth-child(3n){border-right:2px solid var(--ink)}
.sudoku .cell:nth-child(9n){border-right:none}
.sudoku-row-b{box-shadow:inset 0 -2px 0 var(--ink)}
.numpad{display:grid;grid-template-columns:repeat(5,1fr);gap:.6rem;width:min(86vw,560px)}
.numpad button{aspect-ratio:1.4;border:2px solid var(--line);background:#fff;border-radius:12px;
  font-size:1.7rem;font-weight:800;color:var(--violet-d);cursor:pointer;font-family:'Plus Jakarta Sans';transition:.12s}
.numpad button:active{background:var(--violet);color:#fff;transform:scale(.95)}
.numpad button.erase{color:#d6455d;font-size:1.3rem}

/* ============ MEMORY ============ */
.mem-grid{display:grid;gap:.9rem;width:min(92vw,820px);margin:0 auto}
.mem-card{aspect-ratio:1;border-radius:16px;cursor:pointer;position:relative;
  transform-style:preserve-3d;transition:transform .4s}
.mem-card.flip{transform:rotateY(180deg)}
.mem-face{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  backface-visibility:hidden;border-radius:16px;font-size:2.6rem}
.mem-front{background:var(--grad);box-shadow:var(--shadow-sm)}
.mem-front::after{content:'?';color:#fff;font-size:2.4rem;font-weight:800;font-family:'Plus Jakarta Sans'}
.mem-back{background:#fff;border:2px solid var(--line);transform:rotateY(180deg)}
.mem-card.done .mem-back{background:#e9f9f1;border-color:#2bb98a}

/* ============ 2048 ============ */
.g2048{position:relative;width:min(88vw,500px);aspect-ratio:1;background:#cfc7e6;
  border-radius:14px;padding:12px;margin:0 auto}
.g2048-grid{position:absolute;inset:12px;display:grid;grid-template-columns:repeat(4,1fr);
  grid-template-rows:repeat(4,1fr);gap:12px}
.g2048-grid .bg{background:rgba(255,255,255,.5);border-radius:10px}
.tile{position:absolute;display:flex;align-items:center;justify-content:center;
  border-radius:10px;font-weight:800;font-family:'Plus Jakarta Sans';transition:all .12s ease;
  font-size:2rem}
.score-box{display:flex;gap:1rem;justify-content:center;margin-bottom:1rem}
.score{background:#fff;border:2px solid var(--line);border-radius:14px;padding:.6rem 1.4rem;text-align:center;min-width:110px}
.score b{display:block;font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.score span{font-size:1.7rem;font-weight:800;color:var(--violet-d);font-family:'Plus Jakarta Sans'}

/* ============ WORTSUCHE ============ */
.ws-layout{display:flex;gap:2rem;flex-wrap:wrap;justify-content:center;align-items:flex-start}
.ws-grid{display:grid;background:#fff;border:3px solid var(--violet-l);border-radius:14px;
  overflow:hidden;touch-action:none;width:min(86vw,560px);aspect-ratio:1}
.ws-cell{display:flex;align-items:center;justify-content:center;font-weight:800;
  font-size:clamp(.9rem,3.5vw,1.5rem);color:var(--ink);border:1px solid #eee;
  text-transform:uppercase;font-family:'Plus Jakarta Sans'}
.ws-cell.hl{background:var(--violet-l);color:#fff}
.ws-cell.found{background:#2bb98a;color:#fff}
.ws-words{min-width:200px}
.ws-words h3{font-size:1.3rem;margin-bottom:.8rem;color:var(--violet-d)}
.ws-words ul{list-style:none;display:grid;gap:.5rem}
.ws-words li{font-size:1.25rem;font-weight:700;color:var(--ink-soft);padding:.4rem .8rem;border-radius:10px;background:#fff;border:1px solid var(--line)}
.ws-words li.done{text-decoration:line-through;color:#2bb98a;background:#e9f9f1;border-color:#2bb98a}

/* ============ LIGHTS OUT ============ */
.lo-grid{display:grid;gap:.9rem;width:min(82vw,480px);margin:0 auto}
.lo-cell{aspect-ratio:1;border-radius:14px;cursor:pointer;border:none;background:#d9d3ea;
  transition:.12s;box-shadow:inset 0 -4px 0 rgba(0,0,0,.08)}
.lo-cell.on{background:var(--grad);box-shadow:0 6px 18px -6px rgba(139,62,226,.6)}
.lo-cell:active{transform:scale(.94)}
.lo-info{display:flex;gap:1.4rem;justify-content:center;margin-bottom:1rem;font-size:1.2rem;font-weight:700;color:var(--ink-soft)}

/* ============ KREUZWORT ============ */
.cw-layout{display:flex;gap:2rem;flex-wrap:wrap;justify-content:center;align-items:flex-start}
.cw-grid{display:grid;background:var(--ink);border:3px solid var(--ink);border-radius:8px;
  overflow:hidden;width:min(88vw,620px)}
.cw-cell{position:relative;background:#fff;aspect-ratio:1;display:flex;align-items:center;justify-content:center}
.cw-cell.block{background:var(--ink)}
.cw-cell input{width:100%;height:100%;border:none;text-align:center;text-transform:uppercase;
  font-size:clamp(.9rem,3.2vw,1.5rem);font-weight:800;color:var(--violet-d);background:transparent;
  font-family:'Plus Jakarta Sans';outline:none;cursor:pointer}
.cw-cell input:focus{background:#e6dafc}
.cw-cell.ok input{color:#2bb98a}
.cw-num{position:absolute;top:1px;left:3px;font-size:.6rem;font-weight:700;color:var(--muted);line-height:1}
.cw-clues{min-width:260px;max-width:380px}
.cw-clues h3{font-size:1.2rem;color:var(--violet-d);margin:1rem 0 .5rem}
.cw-clues ol{padding-left:1.4rem;display:grid;gap:.45rem}
.cw-clues li{font-size:1.02rem;color:var(--ink-soft);line-height:1.35}
.cw-clues li.solved{color:#2bb98a;text-decoration:line-through}

/* ---------- responsive: kleinere Terminals / Hochformat ---------- */
@media (max-width:860px){
  html{font-size:16px}
  .game-grid{grid-template-columns:repeat(2,1fr);gap:1.2rem}
  .home-hero h1{font-size:2.2rem}
  .ws-layout,.cw-layout{flex-direction:column;align-items:center}
}
@media (max-width:520px){
  .game-grid{grid-template-columns:1fr}
}

/* Querformat 15" (typisch 1920x1080 / 1366x768): mehr Platz nutzen */
@media (min-width:1100px){
  .sudoku,.numpad{width:540px}
  .game-grid{gap:2.2rem}
}
