:root{--toss-blue: #3182f6;--toss-dark: #191f28;--toss-gray: #8b95a1;--toss-light: #f2f4f6;--toss-white: #ffffff;--toss-red: #f04452;--toss-yellow: #f59f00;--toss-success: #00c471;--radius: 16px;--shadow: 0 2px 8px rgba(0,0,0,.08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,Pretendard,Noto Sans KR,sans-serif;background:var(--toss-light);color:var(--toss-dark);min-height:100vh;min-height:100dvh;overflow:hidden;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.screen{display:none;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding:20px;opacity:1}.screen.active{opacity:1}.menu-title{font-size:48px;font-weight:800;color:var(--toss-blue);margin-bottom:8px;letter-spacing:-1px}.menu-subtitle{font-size:18px;color:var(--toss-gray);margin-bottom:48px}.menu-buttons{display:flex;flex-direction:column;gap:12px;width:100%;max-width:320px}.btn{display:flex;align-items:center;justify-content:center;padding:16px 24px;border:none;border-radius:var(--radius);font-size:17px;font-weight:600;cursor:pointer;transition:all .2s ease;gap:8px}.btn:active{transform:scale(.97)}.btn-primary{background:var(--toss-blue);color:#fff}.btn-secondary{background:var(--toss-white);color:var(--toss-dark);box-shadow:var(--shadow)}.btn-small{padding:10px 16px;font-size:14px;border-radius:12px}.game-header{display:flex;justify-content:space-between;align-items:center;width:100%;max-width:480px;padding:12px 0}.mode-label{font-size:14px;color:var(--toss-gray)}.lives-display{font-size:18px}.timer-container{width:100%;max-width:480px;height:6px;background:#e5e8eb;border-radius:3px;margin:8px 0;overflow:hidden}.timer-fill{height:100%;background:var(--toss-blue);border-radius:3px;transition:width 1s linear}.timer-fill.warning{background:var(--toss-yellow)}.timer-fill.danger{background:var(--toss-red);animation:pulse .5s infinite}.timer-text{font-size:13px;color:var(--toss-gray);margin-bottom:12px}.ta-timer{font-size:20px;font-weight:700;color:var(--toss-red)}.choseong-container{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;width:100%;max-width:480px;min-height:200px}.choseong-display{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;align-items:center;margin:24px 0}.choseong-char{display:inline-flex;align-items:center;justify-content:center;width:64px;height:72px;background:var(--toss-white);border-radius:16px;font-size:36px;font-weight:800;color:var(--toss-blue);box-shadow:0 2px 12px #3182f61f;animation:charPop .4s ease forwards;opacity:0;transform:translateY(10px)}.combo-display{font-size:22px;font-weight:800;color:var(--toss-red);margin:8px 0}.combo-pop{animation:comboPop .5s ease}.hints-area{display:flex;flex-direction:column;gap:8px;width:100%;max-width:480px;margin:8px 0}.hint-box{padding:10px 16px;background:#fff8e1;border-radius:12px;font-size:15px;font-weight:500;color:#b8860b;text-align:center}.feedback{padding:12px 24px;border-radius:12px;font-size:18px;font-weight:700;text-align:center}.feedback.correct{background:#e8f5e9;color:var(--toss-success)}.feedback.wrong{background:#ffeef0;color:var(--toss-red)}.input-area{display:flex;gap:8px;width:100%;max-width:480px;padding:16px 0;padding-bottom:env(safe-area-inset-bottom,16px)}.input-area input{flex:1;padding:14px 18px;border:2px solid #e5e8eb;border-radius:14px;font-size:18px;font-weight:500;outline:none;transition:border-color .2s;background:var(--toss-white)}.input-area input:focus{border-color:var(--toss-blue)}.submit-btn{padding:14px 20px;background:#e5e8eb;color:var(--toss-gray);border:none;border-radius:14px;font-size:16px;font-weight:700;cursor:pointer}.submit-btn.active{background:var(--toss-blue);color:#fff}.game-actions{display:flex;gap:8px;width:100%;max-width:480px;margin:4px 0}.game-actions .btn{flex:1;font-size:13px;padding:10px 8px}.score-area{display:flex;align-items:center;gap:4px;font-size:20px;font-weight:700}.gameover-content{text-align:center;background:var(--toss-white);border-radius:24px;padding:40px 32px;box-shadow:0 4px 24px #0000001a;max-width:360px;width:100%}.gameover-title{font-size:28px;font-weight:800;margin-bottom:24px}.gameover-stats{display:flex;flex-direction:column;gap:16px;margin-bottom:32px}.stat-row{display:flex;justify-content:space-between;font-size:16px}.stat-label{color:var(--toss-gray)}.stat-value{font-weight:700}.gameover-buttons{display:flex;flex-direction:column;gap:10px}.category-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;max-width:400px;margin:24px 0}.category-btn{display:flex;flex-direction:column;align-items:center;gap:6px;padding:20px 12px;background:var(--toss-white);border:none;border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer}.category-btn:active{transform:scale(.96)}.cat-icon{font-size:32px}.cat-name{font-size:15px;font-weight:700}.cat-count{font-size:12px;color:var(--toss-gray)}.ranking-tabs{display:flex;gap:8px;margin-bottom:16px}.rank-tab{padding:8px 16px;border:none;border-radius:20px;background:var(--toss-white);color:var(--toss-gray);font-size:14px;font-weight:600;cursor:pointer}.rank-tab.active{background:var(--toss-blue);color:#fff}.ranking-list{width:100%;max-width:400px;background:var(--toss-white);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.ranking-item{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid var(--toss-light)}.ranking-item:last-child{border:none}.rank{font-weight:800;color:var(--toss-blue);width:30px}.rank-score{font-weight:700;flex:1;text-align:right;margin-right:12px}.rank-date{color:var(--toss-gray);font-size:13px}.ranking-empty{text-align:center;padding:24px;color:var(--toss-gray)}.section-title{font-size:24px;font-weight:800;margin-bottom:8px}.section-subtitle{font-size:15px;color:var(--toss-gray);margin-bottom:16px}.back-btn{align-self:flex-start;background:none;border:none;font-size:16px;color:var(--toss-gray);cursor:pointer;padding:8px 0;margin-bottom:16px}@keyframes charPop{0%{opacity:0;transform:translateY(10px) scale(.8)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes comboPop{0%{transform:scale(1)}50%{transform:scale(1.3)}to{transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}@media(max-width:480px){.choseong-char{width:52px;height:60px;font-size:28px}.menu-title{font-size:36px}.choseong-display{gap:8px}}@media(max-height:600px){.choseong-container{min-height:120px}.choseong-char{width:44px;height:52px;font-size:24px}}@supports (padding: env(safe-area-inset-bottom)){.input-area{padding-bottom:calc(env(safe-area-inset-bottom) + 8px)}}
