:root{color-scheme:light;--ink: #18212f;--muted: #5e6a78;--paper: #fffdf7;--surface: #ffffff;--line: #d8e0e8;--accent: #0f8b8d;--accent-dark: #07696b;--danger: #e04444;--gold: #f0a62b;--cell-hidden: #9fc4d6;--cell-hidden-dark: #78a4ba;--cell-open: #edf3f6;--shadow: 0 18px 40px rgba(32, 45, 58, .16);font-family:ui-rounded,Hiragino Maru Gothic ProN,Hiragino Sans,Yu Gothic,Meiryo,sans-serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{background:linear-gradient(135deg,rgba(15,139,141,.14),transparent 34%),radial-gradient(circle at 85% 12%,rgba(240,166,43,.22),transparent 26%),linear-gradient(180deg,#f9fbf4,#e7f3f4);color:var(--ink)}a{color:inherit}button,input,select{font:inherit}.page-shell{min-height:100vh;padding:28px clamp(14px,4vw,40px)}.challenge-frame{display:grid;grid-template-columns:minmax(280px,380px) minmax(0,1fr);gap:clamp(20px,4vw,44px);align-items:start;max-width:1180px;margin:0 auto}.hero-panel{position:sticky;top:24px;padding:24px}.brand-mark{display:inline-flex;align-items:center;gap:10px;color:var(--accent-dark);font-weight:800;letter-spacing:0}.brand-dot{width:18px;height:18px;border:3px solid var(--accent);border-radius:4px;background:var(--gold);box-shadow:inset 0 0 0 3px #ffffff8c}.hero-title{margin:26px 0 12px;font-size:clamp(2.15rem,5vw,4.5rem);line-height:.96}.hero-copy{margin:0;color:var(--muted);font-size:1.05rem;line-height:1.75}.challenge-card{width:100%;border:1px solid rgba(24,33,47,.08);border-radius:8px;background:#ffffffc7;box-shadow:var(--shadow);backdrop-filter:blur(12px)}.challenge-card-inner{padding:clamp(14px,3vw,24px)}.game-panel{overflow:hidden}.game-toolbar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:14px}.stat{min-width:0;border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:10px 12px}.stat-label{display:block;color:var(--muted);font-size:.74rem;line-height:1.2}.stat-value{display:block;margin-top:4px;font-size:clamp(1.1rem,3vw,1.55rem);font-weight:900;line-height:1}.board-wrap{overflow:auto;padding:8px;border:1px solid var(--line);border-radius:8px;background:#ffffff9e}.board{--board-size: min(78vw, 680px);display:grid;width:var(--board-size);max-width:100%;aspect-ratio:1;margin:0 auto;gap:2px;touch-action:manipulation}.cell{display:grid;place-items:center;min-width:0;min-height:0;border:0;border-radius:5px;color:var(--ink);font-weight:900;line-height:1;aspect-ratio:1;cursor:pointer;user-select:none}.cell-hidden{background:linear-gradient(145deg,var(--cell-hidden),var(--cell-hidden-dark));box-shadow:inset 0 2px #ffffff6b,inset 0 -2px #1f425433}.cell-open{background:var(--cell-open);box-shadow:inset 0 0 0 1px #5e6a781f;cursor:default}.cell-hit{background:#ffd4d4}.cell-content{font-size:clamp(.62rem,calc(var(--board-size) / 34),1.15rem);text-shadow:0 1px 0 rgba(255,255,255,.7)}.cell-bomb,.cell-flag{font-size:clamp(.62rem,calc(var(--board-size) / 31),1.18rem);text-shadow:none}.controls{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.button{min-height:44px;border:1px solid transparent;border-radius:8px;padding:0 16px;background:var(--ink);color:#fff;font-weight:800;cursor:pointer}.button-secondary{border-color:var(--line);background:var(--surface);color:var(--ink)}.button-accent{background:var(--accent)}.button[aria-pressed=true]{background:var(--gold);color:var(--ink)}.result-banner{display:grid;gap:8px;margin:14px 0 0;border-radius:8px;padding:14px;background:#132031;color:#fff}.result-banner strong{font-size:1.22rem}.result-banner p{margin:0;color:#ffffffc7}.difficulty-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.difficulty-links a{display:inline-flex;align-items:center;min-height:38px;border:1px solid var(--line);border-radius:8px;padding:0 12px;background:#ffffff9e;text-decoration:none;font-weight:800}@media(max-width:820px){.page-shell{padding:18px 12px}.challenge-frame{grid-template-columns:1fr;gap:14px}.hero-panel{position:static;padding:12px 4px 0}.hero-title{margin-top:16px}.hero-copy{font-size:.96rem}.game-toolbar{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.stat{padding:8px}.board{--board-size: min(94vw, 560px)}}
