*,:before,:after{box-sizing:border-box}:root{--sans:system-ui, "Segoe UI", Roboto, "Noto Sans KR", sans-serif;--mono:ui-monospace, Consolas, monospace;font-family:var(--sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px}html,body{overscroll-behavior:none;touch-action:none;background:#111118;width:100%;height:100%;margin:0;padding:0;overflow:hidden}#root{width:100%;height:100dvh}#app{touch-action:none;-webkit-user-select:none;user-select:none;background:#111118;width:100vw;height:100vh;position:relative;overflow:hidden}#game-canvas{width:100%;height:100%;display:block}.overlay{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.start-screen{cursor:pointer;-webkit-user-select:none;user-select:none;background:#0a0814e0}.start-content{text-align:center;color:#eee}.game-title{letter-spacing:.15em;color:#fff;text-shadow:0 0 24px #a078ffb3;margin:0 0 .2em;font-size:clamp(2.4rem,6vw,4rem);font-weight:700}.game-subtitle{letter-spacing:.4em;color:#aaa;margin:0 0 2.5em;font-size:clamp(.9rem,2vw,1.2rem)}.start-hint{color:#ccc;margin-bottom:2em;font-size:clamp(.8rem,1.5vw,1rem);animation:1.6s ease-in-out infinite blink}.settings-hint{color:#666;text-align:center;letter-spacing:.05em;margin-top:.5em;font-size:.7rem}.verse2-toggle{cursor:pointer;justify-content:center;align-items:center;gap:.6em;margin:.6em 0 1em;display:flex}.verse2-btn{color:#aaa;letter-spacing:.1em;background:#ffffff12;border:1px solid #ffffff40;border-radius:6px;padding:.3em 1em;font-size:.85rem;transition:background .15s,border-color .15s,color .15s}.verse2-btn.active{color:#fff;background:#a078ff4d;border-color:#a078ffb3}.verse2-label{color:#666;letter-spacing:.05em;font-size:.72rem}.hud{pointer-events:none;position:absolute;inset:0}.hud-top{justify-content:space-between;align-items:center;padding:1em 1.4em;display:flex}.pause-btn{color:#fff;cursor:pointer;pointer-events:all;background:#ffffff1a;border:1px solid #ffffff40;border-radius:6px;justify-content:center;align-items:center;width:2.4em;height:2.4em;font-size:1.1rem;transition:background .15s;display:flex}.pause-btn:hover{background:#fff3}.pause-overlay{pointer-events:all;background:#0a0814d1;flex-direction:column;justify-content:center;align-items:center;gap:1.2em;display:flex;position:absolute;inset:0}.pause-actions{flex-direction:column;align-items:center;gap:.5em;margin-top:.4em;display:flex}.pause-actions-row{gap:1em;display:flex}.pause-label{letter-spacing:.3em;color:#fff;margin:0;font-size:clamp(2rem,6vw,4rem);font-weight:800}.key-guide{letter-spacing:.05em;opacity:.7;pointer-events:none;flex-direction:column;align-items:flex-end;gap:.4em;font-size:.78rem;display:flex;position:absolute;bottom:1.2em;right:1.4em}.type-legend{gap:1em;display:flex}.lane-keys{justify-content:flex-end;gap:.6em;display:flex}.key-guide kbd,.lane-keys kbd{color:#ddd;background:#ffffff12;border:1px solid #fff6;border-radius:3px;padding:1px 7px;font-family:inherit;font-size:.9em;display:inline-block}.settings-guide{letter-spacing:.05em;opacity:.7;pointer-events:none;flex-direction:column;align-items:flex-start;gap:.4em;font-size:.78rem;display:flex;position:absolute;bottom:1.2em;left:1.4em}.settings-guide-row{color:#ddd;align-items:center;gap:.3em;display:flex}.settings-guide-row kbd{color:#ddd;background:#ffffff12;border:1px solid #fff6;border-radius:3px;padding:1px 7px;font-family:inherit;font-size:.9em;display:inline-block}.pause-icon{font-size:.85em}.settings-guide-label{color:#888;letter-spacing:.1em;font-size:.72em}.touch-zones{pointer-events:none;display:flex;position:absolute;inset:0}.touch-zone{pointer-events:all;touch-action:none;-webkit-tap-highlight-color:transparent;flex:1;height:100%}.key-guide-start{justify-content:center;gap:1.5em;margin-bottom:.4em;font-size:.85rem;display:flex}.lane-keys-start{justify-content:center;gap:1em;margin-bottom:1.6em;display:flex}.lane-keys-start kbd{color:#ccc;background:#ffffff0f;border:1px solid #ffffff4d;border-radius:4px;padding:3px 10px;font-family:inherit;font-size:.9rem;display:inline-block}.hud-combo{flex-direction:column;align-items:flex-start;display:flex}.combo-number{color:#fff;text-shadow:0 0 12px #fff6;font-size:clamp(1.8rem,4vw,3rem);font-weight:700;line-height:1}.combo-label{letter-spacing:.2em;color:#aaa;margin-top:2px;font-size:.65rem}.hud-accuracy{color:#ddd;text-shadow:0 0 8px #ffffff4d;font-size:clamp(1.2rem,2.5vw,2rem);font-weight:600}.hud-center{text-align:center;flex-direction:column;align-items:center;gap:.5em;display:flex;position:absolute;top:30%;left:50%;transform:translate(-50%)}.prompt-text{letter-spacing:.06em;text-shadow:0 0 20px;font-size:clamp(2rem,5vw,3.6rem);font-weight:900}.prompt-appear{animation:.15s ease-out promptPop}.prompt-holding{animation:.6s ease-in-out infinite alternate holdPulse}.judgment-text{letter-spacing:.12em;text-shadow:0 0 12px;font-size:clamp(1rem,2.5vw,1.8rem);font-weight:700;animation:.6s ease-out forwards judgeFade}.result-screen{background:#0a0814eb}.result-content{text-align:center;color:#eee;flex-direction:column;align-items:center;gap:1em;display:flex}.grade-display{text-shadow:0 0 40px;font-size:clamp(5rem,14vw,10rem);font-weight:900;line-height:1}.grade-bounce{animation:.5s ease-out gradeBounce}.accuracy-display{color:#fff;font-size:clamp(1.6rem,4vw,2.8rem);font-weight:600}.stats-grid{flex-direction:column;gap:.4em;min-width:260px;margin:.5em 0;display:flex}.stat-row{color:#aaa;border-bottom:1px solid #ffffff14;justify-content:space-between;padding-bottom:.3em;font-size:1rem;display:flex}.stat-row.perfect .stat-value{color:gold}.stat-row.good .stat-value{color:#8df}.stat-row.miss .stat-value{color:#f66}.stat-value{color:#fff;font-weight:600}.stat-label{letter-spacing:.1em}.result-actions{gap:.8em;margin-top:.8em;display:flex}.retry-btn{letter-spacing:.15em;color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff4d;border-radius:6px;padding:.7em 2.5em;font-size:1rem;transition:background .2s}.retry-btn:hover{background:#fff3}.countdown-overlay{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.countdown-number{color:#fff;text-shadow:0 0 40px #c8a0ffe6,0 0 80px #8c5aff80;font-size:clamp(8rem,22vw,14rem);font-weight:900;line-height:1;animation:.45s cubic-bezier(.22,.61,.36,1) forwards countIn}@keyframes countIn{0%{opacity:0;transform:scale(2.2)}to{opacity:1;transform:scale(1)}}.settings-panel{background:#ffffff0d;border:1px solid #ffffff1a;border-radius:10px;flex-direction:column;gap:.9em;min-width:300px;margin:1.6em auto 2em;padding:1.2em 1.8em;display:flex}.setting-row{justify-content:space-between;align-items:center;gap:1em;display:flex}.setting-label{letter-spacing:.25em;color:#888;min-width:60px;font-size:.7rem}.setting-controls{align-items:center;gap:.5em;display:flex}.setting-btn{color:#ccc;cursor:pointer;letter-spacing:.05em;background:#ffffff14;border:1px solid #fff3;border-radius:5px;padding:.3em .7em;font-family:inherit;font-size:.85rem;transition:background .15s,border-color .15s}.setting-btn:hover{background:#ffffff2e;border-color:#fff6}.setting-btn.active{color:#fff;background:#a078ff4d;border-color:#a078ffb3}.setting-value{text-align:center;color:#ddd;font-variant-numeric:tabular-nums;min-width:64px;font-size:.85rem}.loading-screen{color:#888;letter-spacing:.2em;justify-content:center;align-items:center;font-size:1.1rem;display:flex;position:absolute;inset:0}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}@keyframes promptPop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}@keyframes holdPulse{0%{opacity:.85;transform:scale(1)}to{opacity:1;transform:scale(1.06)}}@keyframes judgeFade{0%{opacity:1;transform:translateY(0)}70%{opacity:1;transform:translateY(-8px)}to{opacity:0;transform:translateY(-16px)}}@keyframes gradeBounce{0%{opacity:0;transform:scale(.4)}60%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}.editor-dropdown-wrap{margin-bottom:.6em;display:inline-block;position:relative}.editor-open-btn{color:#aaa;cursor:pointer;letter-spacing:.08em;background:#ffffff0a;border:1px solid #ffffff2e;border-radius:6px;padding:.3em 1.2em;font-family:inherit;font-size:.78rem;transition:background .15s,border-color .15s,color .15s}.editor-open-btn:hover,.editor-open-btn.open{color:#ddd;background:#ffffff1a;border-color:#a078ff73}.editor-dropdown-panel{z-index:50;white-space:nowrap;background:#120e24f5;border:1px solid #a078ff4d;border-radius:8px;flex-direction:column;gap:3px;min-width:90px;margin-left:8px;padding:4px;display:flex;position:absolute;top:0;left:100%}.editor-dropdown-item{color:#999;cursor:pointer;letter-spacing:.06em;text-align:left;background:0 0;border:1px solid #0000;border-radius:5px;padding:.38em 1em;font-family:inherit;font-size:.82rem;transition:background .12s,color .12s}.editor-dropdown-item:hover{color:#eee;background:#ffffff14}.editor-dropdown-item.active{color:#fff;background:#a078ff33;border-color:#a078ff80}.chart-editor{color:#eee;-webkit-user-select:none;user-select:none;background:#0d0b1e;font-size:.85rem;display:flex;position:absolute;inset:0}.editor-toolbar{background:#111126;border-right:1px solid #ffffff14;flex-direction:column;flex-shrink:0;gap:14px;width:110px;padding:12px 8px;display:flex;overflow-y:auto}.editor-main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.editor-lane-header{background:#111126;border-bottom:1px solid #ffffff1a;flex-shrink:0;height:30px;display:flex}.editor-lane-label{letter-spacing:.12em;flex:1;justify-content:center;align-items:center;font-size:.9rem;font-weight:700;display:flex}.editor-timeline{cursor:crosshair;flex:1;overflow:hidden auto}.editor-transport{background:#111126;border-top:1px solid #ffffff1a;flex-shrink:0;align-items:center;gap:8px;height:44px;padding:0 10px;display:flex}.editor-right{background:#111126;border-left:1px solid #ffffff14;flex-direction:column;flex-shrink:0;align-items:stretch;gap:8px;width:110px;padding:12px 8px;display:flex}.editor-section-label{letter-spacing:.2em;color:#555;text-align:center;margin-bottom:1px;font-size:.6rem}.editor-tool-section{flex-direction:column;gap:4px;display:flex}.editor-tool-btn{color:#888;cursor:pointer;letter-spacing:.05em;background:#ffffff0a;border:1px solid #ffffff1f;border-radius:5px;width:100%;padding:6px 0;font-family:inherit;font-size:.72rem;transition:background .15s,border-color .15s,color .15s}.editor-tool-btn.active{background:color-mix(in srgb, var(--tool-color,#aaa) 20%, transparent);border-color:color-mix(in srgb, var(--tool-color,#aaa) 60%, transparent);color:#fff}.editor-action-btn{color:#888;cursor:pointer;letter-spacing:.04em;text-align:center;background:#ffffff08;border:1px solid #ffffff1a;border-radius:4px;width:100%;padding:5px 0;font-family:inherit;font-size:.68rem;transition:background .15s;display:block}.editor-action-btn:hover{color:#ccc;background:#ffffff1a}.editor-zoom-val{color:#666;text-align:center;font-size:.65rem}.editor-play-btn{color:#fff;cursor:pointer;background:#ffffff14;border:1px solid #ffffff40;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:.8rem;transition:background .15s;display:flex}.editor-play-btn:hover{background:#ffffff2e}.editor-time{color:#888;font-variant-numeric:tabular-nums;flex-shrink:0;min-width:84px;font-size:.68rem}.editor-scrub{accent-color:#a078ffe6;flex:1;min-width:0;height:3px}.editor-note-count{color:#555;text-align:right;flex-shrink:0;min-width:40px;font-size:.65rem}.editor-testplay-btn{color:#cbb0ff;cursor:pointer;letter-spacing:.05em;background:#a078ff1f;border:1px solid #a078ff80;border-radius:6px;padding:8px 0;font-family:inherit;font-size:.74rem;transition:background .15s}.editor-testplay-btn:hover:not(:disabled){background:#a078ff47}.editor-testplay-btn:disabled{opacity:.35;cursor:not-allowed}.editor-home-btn{color:#777;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff1f;border-radius:5px;padding:7px 0;font-family:inherit;font-size:.72rem;transition:background .15s}.editor-home-btn:hover{color:#bbb;background:#ffffff1a}.editor-hint{border-top:1px solid #ffffff0f;margin-top:auto;padding-top:8px}.editor-hint p{color:#444;margin:3px 0;font-size:.6rem;line-height:1.4}.editor-modal-overlay{z-index:100;background:#000000bf;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.editor-modal{background:#1a1830;border:1px solid #ffffff24;border-radius:10px;min-width:360px;max-width:90vw;padding:1.4em 1.6em}.editor-modal h3{color:#fff;letter-spacing:.1em;margin:0 0 .4em;font-size:.95rem}.editor-json-textarea{color:#ccc;resize:vertical;box-sizing:border-box;background:#0006;border:1px solid #ffffff1f;border-radius:5px;outline:none;width:100%;padding:8px;font-family:monospace;font-size:.75rem}@supports (height:100dvh){#app{height:100dvh}}@media (width<=600px){.hud-top{padding:.6em 1em;padding-top:max(.6em, env(safe-area-inset-top,0px))}.touch-zones{padding-bottom:env(safe-area-inset-bottom,16px);box-sizing:border-box}.editor-dropdown-panel{margin-top:4px;margin-left:0;top:100%;left:0;right:auto}.pause-btn{width:3em;height:3em;font-size:1.3rem}.key-guide,.settings-guide,.lane-keys-start,.key-guide-start{display:none}.game-title{margin-bottom:.15em}.game-subtitle{margin-bottom:1.2em}.start-hint{margin-bottom:1em}.stats-grid{width:80vw;min-width:0}.result-actions{flex-wrap:wrap;justify-content:center}.retry-btn{padding:.7em 1.8em}.settings-panel{width:80vw;min-width:0;padding:1em 1.2em}.pause-actions-row{flex-direction:column;width:100%}.pause-actions-row .retry-btn,.pause-actions>.retry-btn{box-sizing:border-box;width:100%}}@media (width<=380px){.pause-label{font-size:2rem}.grade-display{font-size:5rem}.accuracy-display{font-size:1.6rem}}
