:root{color-scheme:dark;--bg:#12141b;--surface:#1b1e27;--text:#f3f3ee;--muted:#9296a7;--line:#2b2f3c;--accent:#d9f36c;--radius:18px;font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text)}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}button{color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:5px}button{border:0}button:disabled{cursor:wait;opacity:.5}[hidden]{display:none!important}.skip-link{position:fixed;left:20px;top:-100px;background:var(--accent);color:#171a10;padding:12px;z-index:100}.skip-link:focus{top:10px}.site-header{border-bottom:1px solid var(--line)}.header-inner{max-width:1280px;padding:0 38px;margin:auto;display:flex;align-items:center;height:96px;gap:55px}.brand{display:flex;align-items:center;gap:11px;font-size:29px;letter-spacing:1px;font-weight:800;line-height:1.08}.brand-mark{color:var(--accent);font-size:48px;line-height:1}.brand-en{display:block;font-size:8px;letter-spacing:2px;margin-top:8px;font-weight:600}.main-nav{display:flex;height:100%;gap:32px}.nav-item{background:none;padding:0;position:relative;font-size:14px;color:var(--muted);font-weight:600}.nav-item.active{color:var(--text)}.nav-item.active:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:var(--accent)}.nav-item span{background:#2a2e39;padding:2px 6px;border-radius:4px;font-size:10px;margin-left:4px}.random-button{margin-left:auto;display:flex;align-items:center;gap:9px;background:transparent;border:1px solid #4d5260;padding:12px 16px;border-radius:9px;font-size:12px;white-space:nowrap}.random-button svg,.search svg,.icon-button svg{width:20px;height:20px}.random-button:hover{border-color:var(--accent);color:var(--accent)}.page-shell{max-width:1280px;margin:auto;padding:48px 38px 0}.hero{display:grid;grid-template-columns:.85fr 1.15fr;gap:40px;align-items:center;margin-bottom:62px}.eyebrow{font-size:10px;letter-spacing:2.1px;font-weight:700;display:flex;align-items:center;gap:9px;color:var(--accent)}.eyebrow span{display:inline-block;background:var(--accent);height:5px;width:5px;border-radius:50%}h1{font-size:59px;line-height:1.17;letter-spacing:-2px;margin:23px 0 19px;font-weight:850}.highlight{color:var(--accent)}.hero-copy p{font-size:14px;line-height:1.9;color:#aeb2bf;margin:0 0 24px}.primary-button{display:inline-flex;align-items:center;gap:37px;background:var(--accent);color:#171b10;font-size:13px;font-weight:700;padding:15px 20px;border-radius:9px;transition:transform .2s}.primary-button:hover{transform:translateY(-2px);background:#e7ff85}.primary-button span{font-size:22px;line-height:1}.hero-note{display:flex;align-items:center;font-size:10px;color:var(--muted);gap:8px;margin-top:22px}.online-dot{height:5px;width:5px;background:var(--accent);border-radius:50%}.note-separator{margin:0 4px;color:#484d60}.hero-feature{display:block;position:relative;text-align:left;overflow:hidden;border-radius:20px;background:#223140;padding:0;height:355px;width:100%;isolation:isolate;box-shadow:0 15px 40px #0003}.hero-feature:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(10,18,28,.95) 0%,rgba(10,18,28,.06) 60%);z-index:0}.hero-feature img{width:100%;height:100%;object-fit:cover;transition:transform .55s}.hero-feature:hover img{transform:scale(1.035)}.featured-label{position:absolute;top:20px;left:20px;font-size:10px;font-weight:650;display:flex;gap:7px;align-items:center;background:#161b24db;border:1px solid #ffffff20;padding:8px 11px;border-radius:6px;z-index:1}.featured-label>span{color:var(--accent);font-size:15px}.feature-bottom{position:absolute;bottom:26px;left:28px;right:25px;z-index:1;display:flex;align-items:end;justify-content:space-between}.feature-bottom small{display:block;color:#c4d69d;font-size:8px;letter-spacing:1.9px;margin-bottom:10px}.feature-bottom strong{display:block;font-size:27px;letter-spacing:-.5px}.feature-subtitle{display:block;color:#c1c7ce;font-size:11px;margin-top:6px}.round-play{display:flex;align-items:center;justify-content:center;width:52px;height:52px;border:1px solid #fff6;border-radius:50%;font-size:16px;padding-left:3px;background:#ffffff10;backdrop-filter:blur(8px)}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;gap:20px}.subtle{color:#73798c;font-size:9px}h2{font-size:25px;letter-spacing:-.7px;margin:9px 0 0;line-height:1.3}.search{height:42px;width:245px;background:#1a1d26;border:1px solid #303440;border-radius:9px;display:flex;align-items:center;gap:10px;padding:0 13px;color:#7e8395}.search input{width:100%;background:none;border:0;color:var(--text);font-size:12px;padding:9px 0;outline:none}.search:focus-within{border-color:var(--accent)}.search input::placeholder{color:#7e8395}.filter-row{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:25px}.filters{display:flex;gap:9px;flex-wrap:wrap}.filter{background:#1d2029;padding:9px 15px;border-radius:7px;font-size:11px;border:1px solid transparent;color:#b0b4c1}.filter span{margin-left:7px;font-size:9px;opacity:.65}.filter.active{background:#d9f36c18;color:var(--accent);border-color:#d9f36c50}.filter:hover{color:var(--text);border-color:#5c6378}.result-count{font-size:10px;color:#737b90;white-space:nowrap}.game-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.game-card{border:1px solid var(--line);border-radius:var(--radius);background:#1a1d26;overflow:hidden;transition:transform .2s,border-color .2s}.game-card:hover{transform:translateY(-4px);border-color:#576074}.card-art{display:block;width:100%;position:relative;background:var(--game-color);aspect-ratio:1.85;overflow:hidden;padding:0;text-align:left}.card-art>img{width:100%;height:100%;object-fit:cover;transition:transform .4s}.card-art:hover>img{transform:scale(1.06)}.game-card[data-id="epic-city-driver"] .card-art>img{object-position:center}.game-card[data-id="epic-blocollapse"] .card-art>img{object-position:50% 30%}.category-tag{position:absolute;left:13px;top:13px;background:#171c26cc;border:1px solid #ffffff20;border-radius:5px;padding:5px 8px;color:#fff;font-size:9px;font-weight:500;backdrop-filter:blur(8px)}.card-play{position:absolute;right:15px;bottom:15px;width:36px;height:36px;border-radius:50%;background:#12141be0;border:1px solid #ffffff40;display:grid;place-content:center;font-size:10px;padding-left:2px;transition:background .2s}.card-art:hover .card-play{background:var(--accent);color:#12141b}.card-content{padding:18px 18px 16px}.card-title-row{display:flex;align-items:center;gap:10px;min-width:0}.game-icon{height:42px;width:42px;object-fit:cover;border-radius:10px;border:1px solid #ffffff15;flex-shrink:0;background:#313743}.card-title{min-width:0;flex:1}.card-title h3{font-size:14px;font-weight:700;line-height:1.4;margin:0 0 4px;letter-spacing:-.1px}.card-title p{font-size:10px;color:var(--muted);margin:0}.favorite-button{background:none;border:0;color:#7e8498;font-size:25px;padding:0 2px;line-height:1;flex-shrink:0}.favorite-button.saved{color:var(--accent)}.favorite-button:hover{color:var(--accent)}.card-description{font-size:11px;color:#8e94a6;line-height:1.8;margin:14px 0 16px;min-height:38px}.card-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:13px;border-top:1px solid #ffffff0b}.card-bottom span{font-size:9px;color:#828a9e}.card-bottom button{font-size:11px;font-weight:650;padding:3px 0;background:none;display:flex;align-items:center;gap:13px}.card-bottom button:hover{color:var(--accent)}.card-bottom button span{color:inherit;font-size:15px}.library-note{text-align:center;color:#6c7385;font-size:11px;margin:33px 0 45px}.library-note span{color:#949e70;margin-right:7px}.empty-state{text-align:center;border:1px dashed var(--line);border-radius:18px;padding:55px 20px}.empty-state>span{color:var(--accent);font-size:42px}.empty-state h3{font-size:18px}.empty-state p{color:var(--muted);font-size:13px}.secondary-button{background:var(--surface);border:1px solid #4d566b;padding:10px 15px;border-radius:7px;font-size:12px}.secondary-button:hover{border-color:var(--accent)}footer{border-top:1px solid var(--line)}.footer-inner{max-width:1280px;margin:auto;padding:30px 38px;display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#6d7488}.footer-brand{color:#a9afbd;font-size:19px;font-weight:700;display:flex;align-items:center;gap:15px}.footer-brand span{font-size:8px;font-weight:500;letter-spacing:1.5px}.footer-last{font-size:8px;letter-spacing:1.3px}.player-dialog{padding:0;width:min(1160px,96vw);max-width:none;max-height:95dvh;border:1px solid #464e63;border-radius:15px;background:#161923;color:var(--text);box-shadow:0 30px 100px #000b;overflow:auto}.player-dialog::backdrop{background:#060912d9;backdrop-filter:blur(10px)}body:has(.player-dialog[open]){overflow:hidden}.player-topbar{padding:15px 19px;display:flex;align-items:center;justify-content:space-between;gap:15px}.player-heading{display:flex;align-items:center;gap:12px}.player-heading img{width:40px;height:40px;object-fit:cover;border-radius:9px}.player-heading h2{font-size:17px;margin:0;letter-spacing:0}.player-heading p{font-size:10px;color:var(--muted);margin:4px 0 0}.player-actions{display:flex;gap:6px;align-items:center}.icon-button{background:#282e3d;height:34px;width:34px;border-radius:7px;display:grid;place-items:center;font-size:22px;color:#b9c0d2}.icon-button:hover{background:#3b4356;color:white}.icon-button.saved{color:var(--accent)}.close-button{font-size:14px;margin-left:6px}.player-stage{position:relative;background:#080a10;min-height:300px;height:min(66dvh,660px);display:flex;align-items:center;justify-content:center;overflow:hidden}.player-stage:fullscreen{width:100vw;height:100dvh;min-height:0}.player-stage #frame-host{width:100%;height:100%;display:flex;justify-content:center}.player-stage.portrait #frame-host{max-width:450px}.player-stage iframe{width:100%;height:100%;border:0;display:block;background:#000}.player-loading{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;gap:13px;z-index:1;background:#12141b;pointer-events:none;font-size:12px;color:var(--muted)}.spinner{width:24px;height:24px;border:2px solid #424b60;border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}.player-bottom{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;font-size:11px;gap:10px;color:#a6aec3}.player-bottom p{margin:0}.player-bottom>span{color:#68728a;font-size:10px}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:200;background:var(--accent);color:#19210e;padding:12px 20px;border-radius:8px;font-size:12px;box-shadow:0 5px 25px #0004;max-width:90vw}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:1500px){.header-inner,.page-shell,.footer-inner{max-width:1360px}.hero-feature{height:390px}.hero{gap:60px}h1{font-size:67px}}@media(max-width:900px){.header-inner{gap:30px;padding:0 25px;height:82px}.page-shell{padding:35px 25px 0}.hero{gap:25px;grid-template-columns:.9fr 1.1fr;margin-bottom:45px}h1{font-size:46px}.hero-feature{height:330px}.hero-copy p{font-size:12px}.hero-copy .eyebrow{font-size:8px;letter-spacing:1.3px}.feature-bottom strong{font-size:22px}.game-grid{gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.main-nav{gap:20px}.brand{font-size:25px}.brand-mark{font-size:40px}.footer-inner{padding:25px}.footer-last{display:none}}@media(max-width:600px){.header-inner{height:76px;padding:0 18px;gap:20px}.brand{font-size:22px;gap:7px}.brand-mark{font-size:36px}.brand-en{font-size:6px;letter-spacing:1.3px;margin-top:6px}.main-nav{margin-left:auto;gap:18px}.nav-item{font-size:11px}.random-button{position:fixed;right:18px;bottom:18px;background:var(--accent);color:#15200d;z-index:10;padding:13px;border:0;box-shadow:0 5px 22px #0006;font-size:11px}.random-button svg{height:18px;width:18px}.page-shell{padding:27px 18px 0}.hero{grid-template-columns:1fr;gap:27px;margin-bottom:38px}.hero-copy{position:relative}.hero-copy .eyebrow{font-size:8px;letter-spacing:1.4px}h1{font-size:48px;margin-top:16px;margin-bottom:14px;line-height:1.17}.hero-copy p{font-size:12px;margin-bottom:20px}.hero-note{font-size:9px;margin-top:17px}.hero-feature{height:245px;border-radius:15px}.feature-bottom{left:20px;bottom:20px;right:20px}.feature-bottom strong{font-size:24px}.feature-bottom small{font-size:7px}.round-play{width:42px;height:42px;font-size:12px}.featured-label{top:14px;left:14px}.section-heading{flex-wrap:wrap;gap:19px;margin-bottom:18px}.section-heading>div{width:100%}h2{font-size:24px}.search{width:100%;height:42px}.filter-row{gap:8px;align-items:start;margin-bottom:18px}.filters{gap:7px}.filter{font-size:10px;padding:8px 11px}.filter span{display:none}.result-count{display:none}.game-grid{gap:15px;grid-template-columns:1fr}.card-art{aspect-ratio:1.9}.card-content{padding:18px}.card-title h3{font-size:15px}.game-icon{width:46px;height:46px}.card-description{font-size:11px;min-height:0}.card-bottom{padding-top:13px}.card-bottom button{font-size:12px}.footer-inner{padding:24px 18px 80px;align-items:start;gap:16px;flex-direction:column}.footer-brand{font-size:20px}.library-note{margin-bottom:30px}.player-dialog{width:100vw;height:100dvh;max-height:100dvh;margin:0;border:0;border-radius:0}.player-topbar{padding:13px;gap:8px}.player-heading{gap:8px}.player-heading h2{font-size:13px}.player-heading img{width:32px;height:32px}.player-heading p{font-size:9px}.player-actions{gap:4px}.icon-button{height:29px;width:29px;font-size:19px}.icon-button svg{width:16px;height:16px}.close-button{font-size:12px;margin-left:1px}.player-stage{height:calc(100dvh - 135px);min-height:250px}.player-bottom{padding:13px;font-size:10px;line-height:1.6}.player-bottom>span{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}.spinner{animation-duration:2s}}

/* Mobile player: use the available viewport, including landscape phones. */
.player-heading{min-width:0;flex:1}
.player-heading>div{min-width:0}
.player-heading h2{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.player-actions{flex-shrink:0}
@media(max-width:600px),(max-height:600px) and (orientation:landscape){
  .player-dialog{
    width:100vw;height:100vh;height:var(--player-viewport-height,100dvh);
    max-height:var(--player-viewport-height,100dvh);
    margin:0;inset:0;border:0;border-radius:0;overflow:hidden;
    padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);
  }
  .player-dialog[open]{display:flex;flex-direction:column}
  .player-topbar,.player-bottom{flex:0 0 auto}
  .player-stage{flex:1 1 0;min-height:0;height:auto;min-width:0}
  .player-stage #frame-host{min-height:0;min-width:0}
  .player-stage:fullscreen{flex:none;width:100vw;height:100dvh}
  .player-topbar{padding:9px 12px;gap:8px}
  .player-heading{gap:8px}
  .player-heading img{width:32px;height:32px;flex-shrink:0}
  .player-heading h2{font-size:13px}
  .player-heading p{font-size:9px}
  .player-actions{gap:4px}
  .icon-button{width:34px;height:34px;font-size:20px}
  .icon-button svg{width:17px;height:17px}
  .close-button{font-size:12px;margin-left:0}
  .player-bottom{padding:8px 12px;font-size:10px;line-height:1.4}
  .player-bottom>span{display:none}
}
@media(max-height:600px) and (orientation:landscape){
  .player-topbar{padding:4px 10px;min-height:40px}
  .player-heading img{width:28px;height:28px;border-radius:7px}
  .player-heading h2{font-size:12px}
  .player-heading p,.player-bottom{display:none}
  .icon-button{width:32px;height:32px;font-size:19px}
  .close-button{font-size:12px}
}

@media(max-width:600px) and (orientation:portrait){
  .player-stage:not(.portrait) #frame-host{height:auto;aspect-ratio:16/9;max-height:100%}
}
.load-more-row{text-align:center;margin:26px 0}
.filters{flex-wrap:wrap}
.filter-row{align-items:flex-start}
@media(max-width:600px){.filters{max-width:100%;gap:7px}.filter{white-space:nowrap}}

/* Reviewed player frame fitting: keep the game inside the viewport. */
.player-stage #frame-host{flex:0 0 auto;align-self:center}

/* Compact two-column game cards on phones. */
@media(max-width:600px){
  .game-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .game-card{position:relative;border-radius:12px;min-width:0}
  .card-art{aspect-ratio:1.85}
  .card-content{padding:10px 9px 8px}
  .card-title-row{gap:6px;align-items:flex-start}
  .game-icon{width:30px;height:30px;border-radius:8px}
  .card-title h3{font-size:12px;line-height:1.45;letter-spacing:0;margin-bottom:3px;overflow-wrap:anywhere}
  .card-title p{font-size:9px;line-height:1.5;overflow-wrap:anywhere}
  .favorite-button{position:absolute;top:7px;right:7px;z-index:2;width:34px;height:34px;padding:0;display:grid;place-items:center;font-size:22px;background:#12141be0;border:1px solid #ffffff40;border-radius:8px}
  .category-tag{top:8px;left:8px;max-width:calc(100% - 54px);padding:4px 6px;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .card-play{right:8px;bottom:7px;width:28px;height:28px;font-size:9px}
  .card-description{display:none}
  .card-bottom{padding-top:6px;margin-top:8px}
  .card-bottom>span{display:none}
  .card-bottom button{width:100%;min-height:40px;justify-content:center;gap:8px;font-size:11px;padding:6px 0}
}

/* Battle City two-player invitation entry. */
.netplay-entry{display:inline-flex;align-items:center;gap:9px;margin-top:14px;padding:8px 12px;border:1px solid #d9f36c55;border-radius:8px;color:var(--accent);background:#d9f36c0a;font-size:12px;font-weight:600;min-height:42px}.netplay-entry img{width:24px;height:24px;object-fit:cover;image-rendering:pixelated;border-radius:4px}.netplay-entry:hover{background:#d9f36c1a}.netplay-entry span{margin-left:4px}
