:root{
  --paper:#fff7ea;
  --paper-2:#fffdf8;
  --paper-3:#f9edd5;
  --ink:#5d321e;
  --ink-soft:#85583f;
  --gold:#d6862d;
  --gold-2:#f2c46f;
  --line:rgba(164,103,45,.33);
  --shadow:0 18px 45px rgba(84,48,19,.16);
  --shadow-soft:0 10px 25px rgba(84,48,19,.12);
  --radius:28px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{font-family:Georgia,'Times New Roman',serif;color:var(--ink);background:
  radial-gradient(circle at top, rgba(255,255,255,.75), transparent 30%),
  linear-gradient(180deg,#f8ecd6 0%,#f5e0bf 100%);
}
button,a,input{font:inherit}
button{border:0}
a{text-decoration:none;color:inherit}
.game-shell{min-height:100vh;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px max(12px,env(safe-area-inset-right)) 10px max(12px,env(safe-area-inset-left));background:rgba(255,249,239,.93);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.top-actions{display:flex;gap:8px;flex-wrap:wrap}
.icon-btn,.ghost,.primary,.secondary,.chip{border:1px solid var(--line);min-height:44px;padding:10px 16px;border-radius:999px;background:rgba(255,255,255,.7);color:var(--ink);cursor:pointer;box-shadow:0 4px 12px rgba(84,48,19,.08);transition:.18s transform,.18s background,.18s box-shadow}
.primary{background:linear-gradient(180deg,#eab052,#c9781f);border-color:#c9781f;color:#fff;font-weight:700}
.secondary{background:linear-gradient(180deg,#fffaf1,#f4e5c8)}
.ghost:hover,.icon-btn:hover,.secondary:hover,.chip:hover{background:#fff}
.primary:hover{box-shadow:0 8px 20px rgba(184,106,24,.28)}
.icon-btn:active,.ghost:active,.primary:active,.secondary:active,.chip:active{transform:translateY(1px)}
main{width:min(1160px,100%);margin:0 auto;padding:22px clamp(12px,3vw,32px) 40px}
.game-head{text-align:center;max-width:860px;margin:0 auto 18px}
.game-head h1{font-size:clamp(34px,5vw,58px);margin:0 0 8px;line-height:1;color:#6b3823}
.game-head p{margin:0;color:var(--ink-soft);font-size:clamp(17px,2vw,24px)}
.panel{position:relative;background:rgba(255,252,246,.84);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.hud{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:12px 16px;background:rgba(255,248,237,.84);border-bottom:1px solid var(--line)}
.score{font-weight:700;white-space:nowrap}
.meter{flex:1;height:12px;background:#e6d4b6;border-radius:999px;overflow:hidden}
.meter>span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--gold-2),var(--gold));transition:width .25s}
.level-badge{white-space:nowrap;padding:8px 14px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.65);font-weight:700}
.board{position:relative;min-height:540px;background-size:cover;background-position:center}
.board::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,248,237,.08),rgba(255,248,237,.1));pointer-events:none}
.bottom-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 16px;background:rgba(255,248,237,.8);border-top:1px solid var(--line)}
.tip{font-size:17px;font-weight:700;color:#8b613e;min-height:24px}
.hero-character{position:absolute;left:16px;bottom:12px;width:160px;z-index:5;pointer-events:none;filter:drop-shadow(0 12px 16px rgba(45,24,14,.18))}
.hero-character img{width:100%;display:block;object-fit:contain}
.dialog-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:rgba(42,24,14,.42);backdrop-filter:blur(7px);padding:16px}
.dialog{width:min(460px,96vw);background:var(--paper-2);border:1px solid var(--line);border-radius:30px;box-shadow:0 25px 80px rgba(30,18,10,.32);padding:26px;text-align:center}
.dialog .orb{width:84px;height:84px;margin:0 auto 14px;border-radius:50%;display:grid;place-items:center;font-size:42px;background:radial-gradient(circle,#fff 0 15%,#ffeab4 40%,#e1a23e 75%);box-shadow:0 0 34px rgba(255,207,102,.75)}
.dialog h2{margin:0 0 10px;font-size:36px;color:#6b3823}
.dialog p{margin:0 0 20px;font-size:19px;color:var(--ink-soft)}
.dialog-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.floating-bubble{position:absolute;left:18px;bottom:18px;z-index:6;max-width:min(300px,50%);padding:16px 18px;background:rgba(255,249,240,.94);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow-soft);font-size:18px;line-height:1.35}
.floating-bubble small{display:block;color:#9b6e4c;font-weight:700;margin-bottom:6px}
.sparkle{position:absolute;pointer-events:none;animation:sparkPop .65s forwards;font-size:22px;z-index:25}
@keyframes sparkPop{from{opacity:1;transform:translate(-50%,-50%) scale(.7)}to{opacity:0;transform:translate(-50%,-80px) scale(1.7)}}
.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px}
.home-card{padding:18px;display:flex;flex-direction:column;gap:10px;min-height:220px;background:linear-gradient(180deg,rgba(255,255,255,.7),rgba(255,248,237,.92));border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow-soft)}
.home-card h3{margin:0;font-size:30px;color:#6b3823}
.home-card p{margin:0;line-height:1.45;color:var(--ink-soft);font-size:18px}
.home-card .meta{margin-top:auto;color:#9d6f4c;font-weight:700}
.home-hero{margin-bottom:22px;padding:28px;display:grid;grid-template-columns:1.3fr .9fr;gap:16px;align-items:center;background:linear-gradient(180deg,rgba(255,255,255,.6),rgba(255,246,230,.92));}
.home-hero img{width:100%;max-height:320px;object-fit:cover;border-radius:22px;border:1px solid var(--line)}
.notice{padding:14px 16px;border:1px solid var(--line);background:rgba(255,248,236,.92);border-radius:20px;color:var(--ink-soft);line-height:1.5}
@media (max-width:820px){.home-hero{grid-template-columns:1fr}.hero-character{width:120px}.board{min-height:470px}.floating-bubble{max-width:58%;font-size:16px}}
@media (max-width:640px){main{padding-top:14px}.topbar{align-items:stretch;flex-direction:column}.top-actions{display:grid;grid-template-columns:1fr 1fr}.hud{flex-wrap:wrap}.meter{order:3;flex-basis:100%}.level-badge{width:max-content;margin-left:auto}.board{min-height:430px}.hero-character{width:96px;left:10px;bottom:10px}.game-head h1{font-size:36px}.game-head p{font-size:18px}.floating-bubble{left:10px;bottom:10px;padding:12px 14px;max-width:62%;font-size:15px}}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* Fullscreen runtime: expand the game document itself, not only the browser viewport. */
html:fullscreen,html:fullscreen body{width:100%;min-width:100%;min-height:100%;background:var(--paper)}
html:fullscreen .game-shell{width:100vw;min-height:100vh}
html:fullscreen main{width:100%;max-width:none;min-height:calc(100vh - 64px);margin:0;padding-inline:max(12px,4vw)}
html:fullscreen .panel{width:100%}
html:fullscreen .board{min-height:calc(100vh - 220px)}
