:root{--bg-start: #0f1226;--bg-end: #090c1a;--panel: rgba(255, 255, 255, .08);--panel-border: rgba(255, 255, 255, .12);--text: #e6e9f0;--muted: #9aa0b4;--accent: #7c5cff;--accent-2: #22d3ee;--correct: #22c55e;--present: #eab308;--absent: #475569}@media (prefers-color-scheme: light){:root{--bg-start: #f7f8fc;--bg-end: #f0f2f8;--panel: rgba(255, 255, 255, .8);--panel-border: rgba(0, 0, 0, .06);--text: #0f172a;--muted: #475569}}@font-face{font-family:PretendardVariable;src:local("Pretendard Variable");font-weight:100 900;font-style:normal;font-display:swap}html,body,#root{height:100%}@supports (height: 100dvh){html,body,#root{height:100dvh}}body{margin:0;color:var(--text);font-family:PretendardVariable,system-ui,-apple-system,Segoe UI,Roboto,Noto Sans KR,Arial,sans-serif;background:radial-gradient(1200px 800px at 20% -10%,var(--accent) 0%,transparent 40%),radial-gradient(1200px 800px at 120% 10%,var(--accent-2) 0%,transparent 40%),linear-gradient(160deg,var(--bg-start),var(--bg-end))}.app{width:100%;max-width:520px;margin:0 auto;padding:16px 14px calc(12px + env(safe-area-inset-bottom));box-sizing:border-box;text-align:center;display:flex;flex-direction:column;gap:10px;min-height:auto}.app-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-radius:14px;background:var(--panel);border:1px solid var(--panel-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);margin-bottom:16px}.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:.4px;font-size:18px}.brand .logo{width:28px;height:28px;border-radius:8px;background:linear-gradient(135deg,var(--accent),var(--accent-2));box-shadow:0 6px 20px #7c5cff59}.header-actions{display:flex;gap:8px}.chip{font-size:12px;color:var(--muted);border:1px solid var(--panel-border);background:#ffffff0f;padding:6px 10px;border-radius:999px}.segmented{display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:999px;background:#ffffff0f;border:1px solid var(--panel-border)}.segmented-item{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--muted);font-weight:800;padding:6px 10px;border-radius:999px;cursor:pointer;transition:background .2s ease,color .2s ease,transform .06s ease}.segmented-item:hover{transform:translateY(-1px)}.segmented-item.active{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#0b1020}.panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:18px;padding:12px 10px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 10px 30px #00000040;display:block}.board{display:flex;flex-direction:column;gap:8px;margin-top:4px}.row{display:flex;gap:8px;justify-content:center}.board.board-len-8 .row{gap:6px}.board.board-len-8 .cell{width:clamp(30px,8vw,50px);height:clamp(30px,8vw,50px);font-size:clamp(14px,3.6vw,20px)}.board.board-len-7 .cell{width:clamp(33px,8.6vw,54px);height:clamp(33px,8.6vw,54px);font-size:clamp(15px,3.9vw,21px)}.row.shake{animation:shake .5s ease}.cell{width:clamp(36px,9vw,58px);height:clamp(36px,9vw,58px);border-radius:12px;border:1px solid var(--panel-border);background:#ffffff0a;display:flex;align-items:center;justify-content:center;font-size:clamp(16px,4.2vw,22px);font-weight:700;text-transform:none;box-shadow:inset 0 0 0 1px #ffffff05}.cell.reveal{animation:flip .6s ease forwards;transform-style:preserve-3d}.cell.correct{background:var(--correct);color:#0b1b10;border-color:transparent}.cell.present{background:var(--present);color:#1f1400;border-color:transparent}.cell.absent{background:var(--absent);color:#e2e8f0;border-color:transparent}.cell.win-bounce{animation:pop .42s ease forwards}.keyboard{margin-top:10px;padding-bottom:env(safe-area-inset-bottom)}.keyboard-rows{display:flex;flex-direction:column;gap:6px}.key-row{display:flex;justify-content:center;gap:6px}.keyboard .actions{margin-top:8px;display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.key{padding:8px 10px;min-width:40px;border-radius:12px;border:1px solid var(--panel-border);background:#ffffff0f;color:var(--text);font-weight:700;cursor:pointer;transition:transform .06s ease,background .2s ease,box-shadow .2s ease;box-shadow:0 4px 14px #0000002e;flex:0 1 auto}.key:hover{transform:translateY(-1px);background:#ffffff1a}.key:active{transform:translateY(0)}.key.action{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#0b1020;border:none}.key.action:hover{filter:brightness(1.05)}.key.state-correct{background:var(--correct);color:#0b1b10;border:none}.key.state-present{background:var(--present);color:#1f1400;border:none}.key.state-absent{background:var(--absent);color:#e2e8f0;border:none}.status{position:fixed;top:18px;left:50%;transform:translate(-50%);padding:10px 14px;border-radius:10px;background:#111827e0;color:#e5e7eb;border:1px solid rgba(255,255,255,.06);box-shadow:0 10px 30px #00000059;pointer-events:none;opacity:0;animation:toast 1.6s ease forwards}.debug{margin-top:12px;color:var(--muted);font-size:12px;opacity:.8}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.overlay:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#00000059}.overlay-card{position:relative;z-index:1;min-width:260px;padding:20px 18px;border-radius:16px;background:var(--panel);border:1px solid var(--panel-border);box-shadow:0 20px 50px #00000059;text-align:center}.overlay-title{font-weight:800;font-size:20px;margin-bottom:6px}.overlay-sub{color:var(--muted);margin-bottom:16px}.overlay-actions{display:flex;justify-content:center}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2}.history-card{max-width:520px}.history-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:8px 0 12px}.stat{padding:10px;border-radius:12px;background:#ffffff0d;border:1px solid var(--panel-border);text-align:center}.stat-num{font-size:18px;font-weight:800}.stat-label{color:var(--muted);font-size:12px}.history-actions{display:flex;gap:10px;justify-content:flex-end;margin-bottom:12px}.history-empty{color:var(--muted);padding:10px 0}.history-list{display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow:auto;text-align:left}.history-item{padding:10px 12px;border-radius:12px;background:#ffffff0d;border:1px solid var(--panel-border)}.history-item.grid{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center}.history-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.badge{padding:4px 8px;border-radius:999px;font-weight:800;font-size:12px}.badge-win{background:var(--correct);color:#0b1b10}.badge-lose{background:#ef4444;color:#fff}.muted{color:var(--muted);font-size:12px}.answer{font-weight:800;letter-spacing:2px;font-size:14px}.chip-alt{padding:4px 8px;border:1px solid var(--panel-border);border-radius:10px;background:#ffffff0a}@keyframes flip{0%{transform:rotateX(0)}45%{transform:rotateX(90deg)}55%{transform:rotateX(90deg)}to{transform:rotateX(0)}}@keyframes shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-8px)}40%,60%{transform:translate(8px)}}@keyframes toast{0%{opacity:0;transform:translate(-50%,-6px)}12%{opacity:1;transform:translate(-50%)}88%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-6px)}}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.12)}to{transform:scale(1)}}@media (max-width: 480px){.app{gap:8px;padding:12px 10px calc(10px + env(safe-area-inset-bottom))}.app-header{padding:8px 10px;margin-bottom:8px}.brand{font-size:16px}.board,.row{gap:6px}.key-row{gap:5px}.key{min-width:34px;padding:7px 8px;font-size:14px}.keyboard{margin-top:6px}.debug{display:none}.overlay-card{width:92vw;max-width:440px}.segmented{gap:2px;padding:3px}.segmented-item{padding:6px 8px;font-size:12px}}@media (max-width: 360px){.key{min-width:30px;padding:6px;font-size:13px}.cell{border-radius:10px}}.achievements-card{max-width:620px}.achievements-header{margin-bottom:16px;text-align:center}.achievements-counter{padding:8px 16px;border-radius:20px;background:#ffffff1a;border:1px solid var(--panel-border);display:inline-block}.counter-text{font-weight:600;color:var(--accent)}.achievements-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;max-height:65vh;overflow-y:auto;text-align:left}.achievement-badge{padding:12px;border-radius:12px;border:1px solid var(--panel-border);background:#ffffff0d;display:flex;align-items:center;gap:12px;transition:all .2s ease}.achievement-badge.unlocked{background:#7c5cff1a;border-color:#7c5cff4d}.achievement-badge.locked{opacity:.6}.achievement-badge.locked .achievement-icon{filter:grayscale(1);opacity:.5}.achievement-icon{font-size:24px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.achievement-content{flex:1;min-width:0}.achievement-name{font-weight:600;font-size:14px;margin-bottom:2px;color:var(--text)}.achievement-description{font-size:12px;color:var(--muted);line-height:1.4}.achievement-date{font-size:11px;color:var(--accent);margin-top:4px;font-weight:500}.achievement-toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--panel);border:1px solid var(--panel-border);border-radius:12px;padding:12px 16px;box-shadow:0 10px 30px #0000004d;z-index:9999;opacity:0;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.achievement-toast.visible{opacity:1;transform:translate(-50%) translateY(0)}.toast-content{display:flex;align-items:center;gap:12px}.toast-icon{font-size:20px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.toast-text{flex:1}.toast-title{font-size:12px;color:var(--accent);font-weight:600;margin-bottom:2px}.toast-name{font-size:14px;font-weight:600;color:var(--text)}@media (max-width: 480px){.achievements-grid{grid-template-columns:1fr;gap:8px}.achievement-badge{padding:10px;gap:10px}.achievement-icon{font-size:20px;width:28px;height:28px}.achievement-toast{left:12px;right:12px;transform:none;bottom:calc(12px + env(safe-area-inset-bottom))}.achievement-toast.visible{transform:none}}
