:root{--ink:#263c36;--muted:#6c7971;--paper:#f6f5ef;--line:#dfe4d9;--lime:#d7f280;--white:#fff;--red:#ac3f35}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:system-ui,-apple-system,'Apple SD Gothic Neo','Noto Sans KR',sans-serif;letter-spacing:-.035em}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #718d32;outline-offset:3px}button:disabled{cursor:default;opacity:.45}[hidden]{display:none!important}header{max-width:1000px;margin:auto;padding:28px 28px;display:flex;justify-content:space-between;align-items:center}.brand{color:var(--ink);font-size:18px;font-weight:850;text-decoration:none}.brand span{font-size:inherit;font-weight:500;margin-left:8px}.edition{font-size:12px;color:var(--muted)}main{max-width:460px;margin:25px auto 0;padding:0 20px}.screen{animation:appear .18s ease}.intro{margin-bottom:28px}.eyebrow{font-size:13px;color:var(--muted);font-weight:650}h1{font-size:42px;line-height:1.15;letter-spacing:-.06em;margin:12px 0}p{line-height:1.6}.intro p{margin:12px 0;color:var(--muted);font-size:15px}.example{border-radius:20px;background:var(--ink);color:var(--lime);display:flex;align-items:center;justify-content:space-between;padding:25px 24px;margin-bottom:28px}.example b{font-size:34px;letter-spacing:-.06em;font-variant-numeric:tabular-nums}.example span{font-size:13px;color:#d4dec8}.tabs{display:flex;border-bottom:1px solid var(--line);margin-bottom:24px}.tabs button{width:50%;border:0;background:none;padding:12px;color:var(--muted);font-weight:700}.tabs button.active{border-bottom:3px solid var(--ink);color:var(--ink)}label{font-size:13px;font-weight:650;display:block;margin-bottom:10px}.courses{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.courses button{border:1px solid var(--line);border-radius:13px;background:transparent;color:var(--ink);padding:14px 5px}.courses button.chosen{background:#e9eedc;border:2px solid var(--ink);padding:13px 4px}.courses small,.courses strong{display:block}.courses small{font-size:12px;font-weight:500;margin-bottom:7px}.courses strong{font-size:18px}.rule{display:flex;align-items:flex-start;gap:10px;margin:22px 0}.rule-mark{background:#e8eddc;border-radius:50%;padding:2px 6px;font-size:12px;margin-top:4px}.rule p{font-size:13px;color:var(--muted);margin:0}.rule strong{color:var(--ink);font-weight:600}.primary,.secondary{border:0;border-radius:12px;font-weight:750;min-height:52px;padding:14px 18px;width:100%}.primary{background:var(--ink);color:var(--lime)}.primary span{float:right}.secondary{background:#e6edda;color:var(--ink)}.note{font-size:12px;color:var(--muted);line-height:1.7}.bottom-links{display:flex;justify-content:space-between;margin-top:20px;padding:0 3px}.bottom-links button,.text-button{background:none;border:0;color:var(--ink);padding:12px 0;font-size:13px}.full{width:100%;margin-top:8px}footer{text-align:center;font-size:11px;color:var(--muted);padding:30px 12px 20px}.custom{display:grid;grid-template-columns:1fr 1fr;gap:14px}input:not([type=checkbox]),select{width:100%;padding:13px;margin-top:9px;border:1px solid var(--line);border-radius:10px;background:white;color:var(--ink);font-size:16px}.play-top{display:flex;justify-content:space-between;align-items:center;font-size:12px}.play-top time{font-variant-numeric:tabular-nums;font-weight:700}.progress{height:4px;background:var(--line);border-radius:9px;margin:10px 0 25px;overflow:hidden}.progress div{width:0;height:100%;background:#739842;transition:width .15s}.mission{text-align:center;margin:0;font-size:20px;font-weight:400}.mission strong{font-weight:800}.current{font-size:90px;font-weight:800;letter-spacing:-.07em;text-align:center;line-height:1.2;margin-top:12px;font-variant-numeric:tabular-nums}#count{text-align:center;margin:8px 0 18px}.answer-wrap{height:63px;border:1px solid #ccd6c0;border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:center}#answer{font-size:30px;font-weight:650;font-variant-numeric:tabular-nums}#answer:empty{font-size:15px}#answer.placeholder{font-size:15px;color:#87907f;font-weight:400}.feedback{height:22px;text-align:center;color:var(--red);font-size:13px;margin:8px 0}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.keypad button{height:58px;background:#fff;border:1px solid var(--line);border-radius:12px;color:var(--ink);font-size:25px;font-weight:600}.keypad button:active,.keypad button.pressed{background:var(--lime);border-color:#a1bc52;transform:translateY(2px) scale(.97);box-shadow:inset 0 2px 3px #263c3618}.keypad .utility{font-size:23px;background:#eaece4}.result-time{margin:30px 0;text-align:center}.result-time strong{font-size:76px;letter-spacing:-.07em}.result-time span{margin-left:9px}.stats{display:flex;justify-content:space-around;padding:22px 0;border-block:1px solid var(--line)}.stats div{text-align:center}.stats strong,.stats span{display:block}.stats strong{font-size:24px}.stats span{font-size:12px;color:var(--muted);margin-top:6px}.publish{padding:20px;background:#eaf0e0;border-radius:16px;margin:22px 0}.consent{display:flex;gap:8px;align-items:center;font-size:12px;line-height:1.5;margin:16px 0}.consent input{width:18px;height:18px;flex:none}.row{padding:17px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px}.row strong{font-size:15px}.row small{display:block;color:var(--muted);font-size:12px;margin-top:4px}.row .score{text-align:right;flex:none}.empty{padding:32px 20px;border:1px dashed #c9d4bf;border-radius:14px;margin-top:20px;line-height:1.7;color:var(--muted);font-size:14px}dialog{border:0;border-radius:20px;padding:25px;max-width:360px;color:var(--ink)}dialog::backdrop{background:#10221bbb}dialog h2{font-size:20px}dialog p{font-size:14px}dialog>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}dialog>div button{width:100%;min-width:0;padding-inline:10px}#result>.primary{margin-top:20px}@keyframes appear{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media(max-width:520px){header{padding:20px}.edition{font-size:10px}main{margin-top:12px}h1{font-size:38px}footer{padding-bottom:calc(20px + env(safe-area-inset-bottom))}body:has(#play:not([hidden])) header{padding-block:12px}body:has(#play:not([hidden])) main{margin-top:0}body:has(#play:not([hidden])) footer{display:none}}@media(max-height:740px){#play .current{font-size:68px}#play .progress{margin-bottom:12px}#play #count{margin-bottom:10px}.keypad button{height:48px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.course-label{font-size:13px;font-weight:650;margin:0 0 10px}

#answer.wrong{color:var(--red)}
.answer-wrap:has(.wrong){border-color:var(--red);background:#fff2ee}
#answer.shake{animation:wrong-shake .28s ease}
.auto-hint{text-align:center;margin:8px 0}
#randomSettings{margin-top:12px}
@keyframes wrong-shake{0%,100%{transform:translateX(0)}20%,60%{transform:translateX(-7px)}40%,80%{transform:translateX(7px)}}

#home .intro{margin-bottom:20px}
.game-preview{max-width:280px;margin:0 auto 24px;padding:16px 20px;background:#edf0e5;border:1px solid #d9e0cf;border-radius:20px;user-select:none}
.preview-top{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);margin-bottom:12px}
.game-preview .mission{font-size:14px}
.game-preview .current{font-size:52px;margin:4px 0 10px}
.game-preview .answer-wrap{height:34px;font-size:11px;color:var(--muted);border-radius:8px}
.preview-keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:8px}
.preview-keypad span{background:white;border:1px solid var(--line);border-radius:6px;text-align:center;padding:4px;font-size:13px;font-weight:600}
.preview-keypad span:nth-child(10),.preview-keypad span:nth-child(12){font-size:10px;line-height:18px}
#home .courses{margin-bottom:14px}
#home .courses strong{font-size:18px}
#home .courses small{font-size:10px;margin:7px 0 0;white-space:nowrap}
#homeStatus:empty{display:none}

.rank-step-label{margin-top:16px}

#play .current{margin-bottom:18px}

.rank-search{margin-top:20px}.rank-search>div{display:flex;gap:8px;align-items:center}.rank-search input{margin:0;min-width:0;flex:1}.rank-search .secondary{width:auto;min-height:48px;padding:10px 14px}.rank-search .text-button{flex:none}
