:root{
  --bg:#0e1a1e;--bg2:#15262b;--line:#2a4047;--ink:#eef4f1;--mut:#9db2b1;
  --amber:#f2b441;--cyan:#6fd3e0;--good:#7fdc8e;--bad:#ff7a66;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Noto Sans Mono CJK KR",monospace;
  --sans:"Pretendard","Apple SD Gothic Neo","Noto Sans KR","Noto Sans CJK KR","Malgun Gothic",system-ui,sans-serif;
}
*{box-sizing:border-box}
html{background:var(--bg);-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.6 var(--sans);word-break:keep-all;overflow-wrap:anywhere}
[hidden]{display:none!important}
button{font:inherit;color:inherit;background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:10px 14px;cursor:pointer;min-height:44px}
button:hover{border-color:var(--cyan)}
button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}
button.primary{background:var(--amber);border-color:var(--amber);color:#1b1505;font-weight:700}
button.primary:hover{background:#ffc75c}
.link-btn{min-height:32px;padding:2px 10px;font:12px var(--mono);color:var(--mut)}
.muted{color:var(--mut)}

/* 첫 화면 */
#home{max-width:980px;margin:0 auto;padding:max(14px,env(safe-area-inset-top)) 16px 0}
.hero-visual{height:clamp(210px,48vw,430px);margin:12px -16px 0;background:url(brand/hero.jpg) center 96%/cover;position:relative}
.hero-visual::after{content:'';position:absolute;inset:auto 0 0;height:14%;background:linear-gradient(transparent,var(--bg))}
@media (min-width:1012px){.hero-visual{border-radius:16px;margin-inline:0}}
.hero-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px}
.eyebrow{font:12px var(--mono);letter-spacing:.08em;color:var(--cyan)}
h1{font-size:clamp(44px,12vw,84px);line-height:1.05;letter-spacing:-.03em;margin:6px 0 14px;font-weight:800}
.lede{max-width:34em;color:#cfdcd9;margin:0 0 20px}
.hero-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.hero-actions .primary{padding:12px 22px}
.chapter{border-top:1px solid var(--line);padding:22px 0 8px;margin-top:18px}
.chapter h2{font-size:20px;margin:0;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.chapter h2 small{font:12px var(--mono);color:var(--amber)}
.chapter p{margin:2px 0 12px;color:var(--mut);font-size:14px}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.tile{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:10px 12px;min-height:78px;background:var(--bg2)}
.tile .no{font:12px var(--mono);color:var(--mut)}
.tile .nm{font-size:14px;line-height:1.35;font-weight:600}
.tile .st{font-size:13px;color:var(--amber);letter-spacing:1px;margin-top:auto}
.tile.done{border-color:#3d5f55}
.brand-foot{margin-top:36px;padding:20px 0 28px;border-top:1px solid var(--line)}
.fine{font-size:13px;color:var(--mut);margin:0 0 6px}
.brand-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--mut);margin-top:16px}
.brand-row a{color:var(--mut)}
.brand-row img{display:block}
.version{font-family:var(--mono)}

/* 게임 화면 */
#game{display:flex;flex-direction:column;height:100dvh;max-width:880px;margin:0 auto;padding:0 12px max(10px,env(safe-area-inset-bottom))}
.bar{display:flex;align-items:center;gap:10px;padding:10px 0 4px}
.icon-btn{width:44px;padding:0;font-size:18px;flex:none}
.bar-title{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.bar-title strong{font-size:17px}
.tag{font:12px var(--mono);color:var(--cyan)}
.bar-count{text-align:right;line-height:1.1;font-family:var(--mono);flex:none}
.bar-count span{display:block;font-size:24px;font-weight:700}
.bar-count small{color:var(--mut);font-size:12px}
.mission{margin:4px 0 6px;font-size:15px;line-height:1.5;color:#dbe6e3;min-height:3em}
#stage-wrap{flex:1;min-height:300px;position:relative;border-radius:14px;overflow:hidden;background:linear-gradient(#12232a,#0d191d 72%,#0a1417);border:1px solid #1f3339}
#gl,#stage{position:absolute;inset:0;width:100%;height:100%;display:block}
#stage{touch-action:none;cursor:pointer}
.gl-error{margin:12px 16px;padding:12px;border:1px solid var(--bad);border-radius:10px}
.status{margin:6px 0;min-height:2.9em;font-size:14px;line-height:1.45;color:var(--amber)}
.tools{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.tools button{padding:8px 4px;font-size:14px}
.tools button:disabled{opacity:.4;cursor:default}

/* 결과 */
.sheet{position:fixed;inset:0;z-index:5;display:flex;align-items:flex-end;justify-content:center;background:rgba(5,12,14,.62)}
.sheet-card{width:100%;max-width:560px;max-height:88dvh;overflow:auto;background:#16282e;border:1px solid var(--line);border-bottom:0;border-radius:18px 18px 0 0;padding:20px 18px max(18px,env(safe-area-inset-bottom));animation:rise .28s ease-out}
.sheet.bad .sheet-card{border-color:var(--bad)}
@keyframes rise{from{transform:translateY(24px);opacity:0}}
.stars{font-size:28px;letter-spacing:4px;color:var(--amber);min-height:0}
.sheet-card h2{margin:2px 0 2px;font-size:22px}
.sheet-card h3{margin:14px 0 2px;font-size:13px;color:var(--cyan);font-family:var(--mono);font-weight:500}
.sheet-card p{margin:0}
.sheet-actions{display:flex;gap:8px;margin-top:18px}
.sheet-actions button{flex:1}
@media (min-width:700px){.sheet{align-items:center}.sheet-card{border-radius:18px;border-bottom:1px solid var(--line)}}
@media (max-height:640px){.mission{min-height:0;font-size:14px}.status{min-height:1.5em}}
@media (prefers-reduced-motion:reduce){.sheet-card{animation:none}}

/* 구축 방법 */
.notes-page main{max-width:760px;margin:0 auto;padding:24px 16px}
.notes-page h1{font-size:30px;letter-spacing:-.01em}
.notes-page h2{font-size:16px;margin:24px 0 6px;color:var(--amber)}
.notes-page li{margin:4px 0;font-size:15px}
.notes-page ul{padding-left:20px;margin:0}
.notes-page a{color:var(--cyan)}
.notes-page .brand-foot{max-width:760px;margin:24px auto 0;padding:20px 16px 28px}
