:root{--bg:#f8fafc;--ink:#0f172a;--muted:#64748b;--card:#fff;--line:#e2e8f0;--brand:#111827;--accent:#2563eb;--good:#16a34a;--warn:#f97316;--bad:#dc2626}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink)}button,input,select{font:inherit}.topbar{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.9);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.wrap{max-width:1180px;margin:0 auto;padding:0 18px}.topbar .wrap{height:68px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;gap:12px;align-items:center}.logo{width:44px;height:44px;border-radius:16px;background:#111827;color:white;display:grid;place-items:center;font-size:22px;box-shadow:0 10px 20px rgba(15,23,42,.15)}h1,h2,h3,p{margin-top:0}.brand strong{display:block;font-size:18px}.brand span{font-size:12px;color:var(--muted)}.hero{padding:30px 0}.hero-grid{display:grid;grid-template-columns:1fr 360px;gap:18px}.hero-card{border-radius:28px;background:linear-gradient(135deg,#111827,#1e3a8a 55%,#0f766e);color:white;padding:34px;box-shadow:0 20px 45px rgba(15,23,42,.18);min-height:220px}.pill{display:inline-flex;gap:8px;align-items:center;border-radius:999px;background:rgba(255,255,255,.12);padding:7px 12px;font-size:14px;margin-bottom:16px}.hero-card h1{font-size:clamp(34px,5vw,58px);line-height:1.02;margin-bottom:14px}.hero-card p{font-size:18px;line-height:1.65;color:#dbeafe;max-width:760px}.panel{border:1px solid var(--line);background:var(--card);border-radius:28px;box-shadow:0 12px 28px rgba(15,23,42,.06)}.panel-pad{padding:20px}.alias-row{display:flex;gap:8px;flex-direction:column}.input,.select{min-height:44px;border:1px solid #cbd5e1;border-radius:16px;padding:0 14px;outline:none;background:white}.input:focus,.select:focus{box-shadow:0 0 0 3px #bfdbfe}.btn{min-height:42px;border:0;border-radius:16px;padding:0 16px;font-weight:800;cursor:pointer;background:#111827;color:white;transition:.18s}.btn:hover{transform:translateY(-1px);background:#263244}.btn.secondary{background:white;color:#111827;border:1px solid #cbd5e1}.btn.secondary:hover{background:#f8fafc}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.main-grid{display:grid;grid-template-columns:1fr 360px;gap:18px;margin-bottom:22px}.section-head{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:14px}.games{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.game-card{text-align:left;border:1px solid var(--line);background:white;border-radius:24px;padding:18px;cursor:pointer;box-shadow:0 10px 24px rgba(15,23,42,.05);transition:.18s}.game-card:hover{transform:translateY(-2px);box-shadow:0 16px 32px rgba(15,23,42,.09)}.game-card.active{outline:3px solid #111827}.game-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:12px}.cover{font-size:46px}.tag{font-size:12px;font-weight:800;border-radius:999px;background:#f1f5f9;color:#475569;padding:6px 10px}.game-card h3{font-size:21px;margin-bottom:8px}.game-card p{font-size:14px;line-height:1.55;color:var(--muted);min-height:66px}.leader-item{display:grid;grid-template-columns:44px 1fr 90px;gap:10px;padding:9px 8px;border-bottom:1px solid var(--line);align-items:center}.leader-item:last-child{border-bottom:0}.rank{font-weight:900;color:#64748b}.score{text-align:right;font-weight:900}.game-shell{margin-bottom:38px}.game-title{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}.alias-box{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:#fff7ed;border:1px solid #fed7aa;border-radius:18px;padding:12px;margin-bottom:14px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}.stat{background:rgba(255,255,255,.92);border:1px solid rgba(226,232,240,.8);border-radius:18px;padding:10px;box-shadow:0 8px 20px rgba(15,23,42,.07)}.stat small{font-size:11px;color:#64748b;text-transform:uppercase;font-weight:900}.stat b{display:block;font-size:24px}.game-frame{position:relative;overflow:hidden;border-radius:26px;border:1px solid var(--line);background:#111827;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);user-select:none}.runner-frame{height:540px;min-width:900px}.runner-scroll{overflow-x:auto;padding-bottom:4px}.runner-bg{position:absolute;inset:0;background:linear-gradient(180deg,#93c5fd 0%,#dbeafe 38%,#fde68a 66%,#166534 100%)}.sun{position:absolute;right:15%;top:9%;width:82px;height:82px;border-radius:50%;background:#fef9c3;box-shadow:0 0 60px #fde68a}.clouds{position:absolute;top:48px;height:90px;width:2400px;background-image:radial-gradient(ellipse at 8% 45%,rgba(255,255,255,.75) 0 4%,transparent 5%),radial-gradient(ellipse at 24% 35%,rgba(255,255,255,.65) 0 5%,transparent 6%),radial-gradient(ellipse at 42% 52%,rgba(255,255,255,.7) 0 5%,transparent 6%),radial-gradient(ellipse at 67% 38%,rgba(255,255,255,.66) 0 5%,transparent 6%),radial-gradient(ellipse at 90% 50%,rgba(255,255,255,.72) 0 6%,transparent 7%)}.hills{position:absolute;bottom:118px;height:230px;width:2400px;opacity:.95;background:radial-gradient(ellipse at 7% 100%,#1e3a8a 0 14%,transparent 15%),radial-gradient(ellipse at 18% 100%,#2563eb 0 16%,transparent 17%),radial-gradient(ellipse at 32% 100%,#0f766e 0 15%,transparent 16%),radial-gradient(ellipse at 48% 100%,#166534 0 18%,transparent 19%),radial-gradient(ellipse at 64% 100%,#1e40af 0 14%,transparent 15%),radial-gradient(ellipse at 82% 100%,#15803d 0 17%,transparent 18%),radial-gradient(ellipse at 96% 100%,#0f766e 0 15%,transparent 16%)}.ground{position:absolute;bottom:0;height:108px;width:2400px;background:repeating-linear-gradient(90deg,#365314 0 54px,#4d7c0f 54px 112px,#166534 112px 168px)}.ground-line{position:absolute;left:0;right:0;bottom:92px;height:4px;background:rgba(217,249,157,.72)}.scene-label{position:absolute;left:16px;top:16px;border-radius:16px;background:rgba(255,255,255,.86);padding:8px 13px;font-weight:900;font-size:13px;box-shadow:0 8px 18px rgba(15,23,42,.12)}.unicorn-img{position:absolute;z-index:30;left:120px;width:112px;height:auto;filter:drop-shadow(0 10px 9px rgba(15,23,42,.25));transition:transform .9s ease-out}.unicorn-img.run{animation:unibob .55s infinite steps(2)}.unicorn-img.crash{transform:translateX(24px) rotate(82deg) scale(1.04)}@keyframes unibob{0%{transform:translateY(0)}50%{transform:translateY(-4px)}100%{transform:translateY(0)}}.obstacle{position:absolute;z-index:20;display:block;filter:drop-shadow(0 9px 8px rgba(15,23,42,.28))}.obstacle svg{display:block}.overlay{position:absolute;inset:0;z-index:40;display:grid;place-items:center;background:rgba(0,0,0,.45);backdrop-filter:blur(5px);padding:20px}.overlay.soft{background:transparent;backdrop-filter:none;pointer-events:none}.modal{background:white;border-radius:24px;padding:22px;text-align:center;max-width:430px;box-shadow:0 24px 60px rgba(15,23,42,.28)}.modal .big{font-size:58px;line-height:1}.controls{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.hint{font-size:13px;color:var(--muted);margin-top:10px}.memory-area{background:radial-gradient(circle at 12% 10%,#dbeafe,transparent 28%),linear-gradient(135deg,#f8fafc,#e0f2fe);border-radius:24px;padding:18px;border:1px solid var(--line)}.memory-top{display:flex;gap:10px;flex-wrap:wrap;align-items:center;justify-content:space-between;margin-bottom:14px}.memory-grid{display:grid;grid-template-columns:repeat(4,minmax(58px,1fr));gap:12px;max-width:640px;margin:0 auto}.card-tile{aspect-ratio:1/1;border:0;background:transparent;perspective:800px;cursor:pointer}.card-inner{position:relative;width:100%;height:100%;transition:transform .38s;transform-style:preserve-3d}.card-tile.open .card-inner,.card-tile.matched .card-inner{transform:rotateY(180deg)}.card-face{position:absolute;inset:0;border-radius:18px;backface-visibility:hidden;display:grid;place-items:center;box-shadow:0 10px 24px rgba(15,23,42,.12);border:1px solid rgba(255,255,255,.75)}.card-back{background:linear-gradient(135deg,#111827,#1d4ed8);color:white}.card-back img{width:54%;height:54%;object-fit:contain}.card-front{background:white;transform:rotateY(180deg);overflow:hidden}.card-front svg{width:84%;height:84%}.placeholder{min-height:280px;display:grid;place-items:center;text-align:center;background:linear-gradient(135deg,#f8fafc,#e2e8f0);border-radius:24px;color:#64748b}.foot-note{font-size:13px;color:#64748b;line-height:1.6}.steps{background:white;border:1px solid var(--line);border-radius:24px;padding:18px;margin:24px 0}.steps h3{margin-bottom:8px}.steps ol{margin:0;padding-left:22px;color:#475569;line-height:1.7}@media (max-width:900px){.hero-grid,.main-grid{grid-template-columns:1fr}.games{grid-template-columns:1fr}.runner-scroll{margin-left:-18px;margin-right:-18px;padding-left:18px}.runner-frame{width:900px}.memory-grid{gap:8px}.hero-card{padding:24px}.stats{grid-template-columns:1fr 1fr 1fr}}@media (max-width:520px){.topbar .wrap{height:auto;padding-top:10px;padding-bottom:10px}.brand strong{font-size:16px}.hero{padding-top:18px}.section-head{align-items:stretch;flex-direction:column}.memory-grid{gap:7px}.card-face{border-radius:13px}.stats{grid-template-columns:1fr}.controls .btn{flex:1}.hero-card h1{font-size:34px}}
.memory-start{max-width:460px;margin:0 auto;text-align:center;display:grid;gap:12px;padding:18px}.memory-start .big{font-size:64px;line-height:1}.memory-theme{width:100%}.card-tile:disabled{cursor:default;opacity:1}.steps{display:none!important}


/* v16 memory board sizes and bigger card art */
.memory-grid.size-4{grid-template-columns:repeat(4,minmax(70px,1fr));}
.memory-grid.size-5{grid-template-columns:repeat(5,minmax(58px,1fr));}
.memory-grid.size-6{grid-template-columns:repeat(6,minmax(48px,1fr));}
.memory-grid.size-4 .card-tile{min-height:112px;}
.memory-grid.size-5 .card-tile{min-height:92px;}
.memory-grid.size-6 .card-tile{min-height:76px;}
.card-front svg{width:82%;height:82%;}
.card-front{font-size:52px;}
.size-5 .card-front{font-size:44px;}
.size-6 .card-front{font-size:36px;}
.card-tile.free .card-front{background:#dcfce7;}
@media(max-width:700px){
  .memory-grid.size-4 .card-tile{min-height:82px;}
  .memory-grid.size-5 .card-tile{min-height:66px;}
  .memory-grid.size-6 .card-tile{min-height:52px;}
}


/* v17 fixes */
.card-tile.free { cursor: default; }
.card-tile.free .card-front {
  background: radial-gradient(circle at 50% 35%, #fef3c7 0 30%, #dcfce7 65%, #bbf7d0 100%);
  border: 2px solid #facc15;
}
.card-tile.free .card-front svg {
  width: 86%;
  height: 86%;
}


/* v18: keep runner pause/result popup visible on mobile even when the game frame is horizontally scrollable */
@media(max-width: 900px){
  .runner-frame > .overlay:not(.soft){
    position: fixed;
    inset: 0;
    z-index: 9999;
    display: grid;
    place-items: center;
    padding: 18px;
  }
  .runner-frame > .overlay:not(.soft) .modal{
    width: min(92vw, 430px);
    max-width: 92vw;
  }
}

/* v18: larger, clearly different memory-card art */
.card-front svg{
  width: 88%;
  height: 88%;
}
.memory-grid.size-4 .card-front svg{width:90%;height:90%;}
.memory-grid.size-5 .card-front svg{width:88%;height:88%;}
.memory-grid.size-6 .card-front svg{width:86%;height:86%;}
.card-tile.free .card-front{
  background: radial-gradient(circle at 50% 35%, #fef3c7 0 30%, #dcfce7 68%, #bbf7d0 100%);
  border: 2px solid #facc15;
}

.card-tile.free{cursor:default;}
