:root{color-scheme:dark;--bg-primary: #000000;--bg-secondary: #09090b;--bg-tertiary: #18181b;--text-primary: #ffffff;--text-secondary: #a1a1aa;--text-muted: #52525b;--accent-primary: #7CFF3F;--accent-secondary: #5ad62e;--success: #7CFF3F;--error: #ef4444;--border-subtle: rgba(255, 255, 255, .06);--border-default: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .15);--surface-hover: rgba(255, 255, 255, .05);--surface-overlay: rgba(0, 0, 0, .8);--accent-bg: rgba(124, 255, 63, .08);--accent-bg-subtle: rgba(124, 255, 63, .04);--accent-bg-strong: rgba(124, 255, 63, .12);--accent-border: rgba(124, 255, 63, .2);--accent-border-strong: rgba(124, 255, 63, .35);--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--space-3xl: 64px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(124, 255, 63, .3), 0 0 40px rgba(124, 255, 63, .1);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace;--max-width: 1200px;--nav-height: 64px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}html,body{margin:0;padding:0;min-height:100%;background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:contain}body{min-height:100dvh}#app{min-height:100dvh;display:flex;flex-direction:column}a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none;padding:0;touch-action:manipulation;-webkit-tap-highlight-color:transparent}img{max-width:100%;height:auto}::selection{background:var(--accent-bg-strong);color:var(--accent-primary)}:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}::view-transition-old(root){animation:vt-out .16s cubic-bezier(.4,0,1,1) both}::view-transition-new(root){animation:vt-in .22s cubic-bezier(0,0,.2,1) both}@keyframes vt-out{to{opacity:0;transform:translateY(-6px)}}@keyframes vt-in{0%{opacity:0;transform:translateY(10px)}}.shell-entering .w-main{animation:page-in .24s cubic-bezier(0,0,.2,1) both}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}}.shell-leaving{opacity:.92;transition:opacity 80ms linear}.shell{min-height:100dvh;display:flex;flex-direction:column;transition:opacity 80ms linear}.shell-entering{opacity:1}.w-topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:var(--space-sm);min-height:calc(52px + env(safe-area-inset-top));padding:calc(8px + env(safe-area-inset-top)) 12px 8px;background:#000000b8;backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);border-bottom:1px solid var(--border-subtle)}.w-back{min-height:44px;min-width:56px;padding:0 8px;border-radius:var(--radius-md);color:var(--text-secondary);font-size:14px;transition:color .12s,background .12s}.w-back:active{background:var(--surface-hover);color:var(--accent-primary)}.w-topbar-title{flex:1;font-size:15px;font-weight:600;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.w-topbar-actions{display:flex;align-items:center}.score-pill{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;background:var(--accent-bg);border:1px solid var(--accent-border);color:var(--accent-primary);font-size:12px;font-weight:600;white-space:nowrap}.w-main{flex:1;width:100%;max-width:720px;margin:0 auto;padding:16px 16px calc(96px + env(safe-area-inset-bottom))}.w-main h1{margin:8px 0 12px;font-size:clamp(22px,5vw,28px);line-height:1.3;font-weight:700;letter-spacing:-.02em}.page-intro{margin:0 0 12px;color:var(--text-secondary);font-size:14px;line-height:1.7}.aside{margin:8px 0;color:var(--text-muted);font-size:13px;line-height:1.65}.legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-bottom:12px;padding:10px 12px;border-radius:var(--radius-lg);background:var(--bg-secondary);border:1px solid var(--border-subtle);color:var(--text-secondary);font-size:12px}.mark{font-weight:700}.mark.penalty{color:#fbbf24}.mark.veto{color:#f87171}.home-hero{position:relative;padding:28px 0 8px;overflow:hidden}.home-hero:before{content:"";position:absolute;inset:-40% -20% auto;height:220px;background:radial-gradient(ellipse at 30% 40%,rgba(124,255,63,.14),transparent 60%);pointer-events:none}.home-eyebrow{position:relative;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-primary);font-weight:600}.home-title{position:relative;margin:8px 0 6px;font-size:clamp(32px,8vw,44px);line-height:1.1;font-weight:800;letter-spacing:-.03em;background:linear-gradient(120deg,#fff 30%,var(--accent-primary));-webkit-background-clip:text;background-clip:text;color:transparent}.home-sub{position:relative;margin:0 0 20px;color:var(--text-secondary);font-size:14px}.score-strip{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.score-cell{padding:12px 8px;border-radius:var(--radius-lg);background:var(--bg-secondary);border:1px solid var(--border-subtle);text-align:center;transition:border-color .16s,transform .16s}.score-cell:hover{border-color:var(--accent-border);transform:translateY(-2px)}.score-cell .k{font-size:11px;color:var(--text-muted);letter-spacing:.06em}.score-cell .v{font-size:26px;font-weight:800;line-height:1.2;color:var(--accent-primary);font-variant-numeric:tabular-nums}.score-cell .n{font-size:11px;color:var(--text-secondary)}.w-section-title{margin:28px 0 12px;font-size:13px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}.card-list{display:flex;flex-direction:column;gap:10px}.w-card{display:block;padding:16px;border-radius:var(--radius-xl);background:var(--bg-secondary);border:1px solid var(--border-subtle);transition:transform .18s cubic-bezier(.2,.8,.2,1),border-color .18s,background .18s;will-change:transform}.w-card:active{transform:scale(.985);background:var(--bg-tertiary)}.w-card:hover{border-color:var(--accent-border)}.w-card-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.w-card-k{font-size:12px;font-weight:600;color:var(--accent-primary);letter-spacing:.04em}.w-card .t{font-size:16px;font-weight:650;margin-bottom:4px}.w-card .m{font-size:13px;color:var(--text-secondary);line-height:1.5}.tag{font-size:11px;padding:3px 8px;border-radius:999px;background:var(--accent-bg-subtle);border:1px solid var(--accent-border);color:var(--accent-primary)}.home-aside{margin-top:24px}.w-chips{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.chip{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border-radius:999px;background:var(--bg-tertiary);border:1px solid var(--border-default);color:var(--text-secondary);font-size:13px;font-weight:500;transition:all .14s ease}.chip:active{transform:scale(.96)}.chip.active{background:var(--accent-bg-strong);border-color:var(--accent-border-strong);color:var(--accent-primary);font-weight:650;box-shadow:var(--shadow-glow)}.w-cta{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 20px;padding:14px;border-radius:var(--radius-xl);background:linear-gradient(160deg,var(--bg-secondary),rgba(124,255,63,.04));border:1px solid var(--border-default)}.w-cta-btn{min-height:44px;padding:0 18px;border-radius:12px;background:var(--accent-primary);color:#04120a;font-size:15px;font-weight:700;letter-spacing:.01em;box-shadow:0 2px 12px #7cff3f40;transition:transform .14s,box-shadow .14s,filter .14s}.w-cta-btn:active{transform:scale(.97)}.w-cta-btn.is-playing,.w-cta-btn.is-active{background:#04120a;color:var(--accent-primary);border:1px solid var(--accent-border-strong);box-shadow:inset 0 0 0 1px #7cff3f33}.w-cta-btn-sec{background:transparent;color:var(--text-primary);border:1px solid var(--border-strong);box-shadow:none;font-weight:600}.w-cta-btn-sec.is-playing,.w-cta-btn-sec.is-active{background:var(--accent-bg-strong);color:var(--accent-primary)}.w-cta-meta{flex-basis:100%;font-size:12px;color:var(--text-muted);text-align:center;margin-top:2px}.sec-title{margin:28px 0 12px;font-size:17px;font-weight:700;color:var(--accent-primary);letter-spacing:-.01em}.sec-rule{border:none;border-top:1px solid var(--border-subtle);margin:24px 0}.blocks{display:flex;flex-direction:column;gap:10px}.beat{position:relative;padding:14px 14px 14px 16px;border-radius:var(--radius-xl);background:var(--bg-secondary);border:1px solid var(--border-subtle);overflow:hidden;transition:border-color .2s,background .2s,box-shadow .26s,transform .2s,opacity .2s}.beat:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:transparent;transition:background .2s}.beat.playing{border-color:var(--accent-border-strong);background:linear-gradient(145deg,var(--bg-tertiary),rgba(124,255,63,.06));box-shadow:var(--shadow-glow);transform:translateY(-1px)}.beat.playing:before{background:var(--accent-primary)}.beat-hidden{opacity:.35;filter:blur(4px);user-select:none;pointer-events:none}.beat.prac-revealed{border-color:var(--accent-border);background:var(--accent-bg-subtle)}.beat-hidden.prac-revealed{opacity:1;filter:none;pointer-events:auto;user-select:auto}.beat-head{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}.beat-no{font-size:13px;font-weight:700;color:var(--accent-primary);font-variant-numeric:tabular-nums}.beat-cond{font-size:12px;color:var(--text-muted);background:var(--bg-tertiary);padding:2px 8px;border-radius:999px}.beat-live{margin-left:auto;width:8px;height:8px;border-radius:50%;background:var(--accent-primary);box-shadow:0 0 #7cff3f99;animation:live-pulse 1.4s ease-out infinite}@keyframes live-pulse{0%{box-shadow:0 0 #7cff3f8c}70%{box-shadow:0 0 0 10px #7cff3f00}to{box-shadow:0 0 #7cff3f00}}.beat p{margin:6px 0 0;font-size:15px;line-height:1.7}.beat .role{display:inline-block;min-width:2.6em;margin-right:8px;font-size:12px;font-weight:700;letter-spacing:.04em;color:var(--text-muted)}.beat .say .role{color:var(--accent-secondary)}.beat .act .role{color:#60a5fa}.beat .line-body{color:var(--text-primary)}.beat.playing .line-body{text-shadow:0 0 24px rgba(124,255,63,.25)}.prac-result{margin-top:10px!important;padding:8px 10px;border-radius:var(--radius-md);background:var(--accent-bg);border:1px solid var(--accent-border);color:var(--accent-primary);font-size:13px!important}.beat.playing{scroll-margin-top:88px}.w-player{position:fixed;left:50%;bottom:calc(64px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:50;display:flex;flex-wrap:wrap;align-items:center;gap:6px;width:min(680px,calc(100vw - 20px));padding:10px 12px;border-radius:18px;background:#121214eb;backdrop-filter:blur(18px) saturate(1.5);-webkit-backdrop-filter:blur(18px) saturate(1.5);border:1px solid var(--border-strong);box-shadow:0 12px 40px #0000008c;animation:dock-in .28s cubic-bezier(0,0,.2,1) both}@keyframes dock-in{0%{opacity:0;transform:translate(-50%) translateY(16px)}}.w-player-progress-track{flex-basis:100%;height:3px;border-radius:99px;background:#ffffff14;overflow:hidden}.w-player-progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-secondary),var(--accent-primary));transition:width .2s linear;border-radius:99px}.w-player-title{flex:1;min-width:0;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.w-player-progress{font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums}.w-player-btn{min-width:40px;min-height:40px;border-radius:12px;background:var(--bg-tertiary);border:1px solid var(--border-default);font-size:15px;display:inline-flex;align-items:center;justify-content:center;transition:transform .12s,background .12s,border-color .12s}.w-player-btn:active{transform:scale(.94)}.w-player-btn.primary{background:var(--accent-primary);color:#04120a;border-color:transparent;font-weight:700}.w-player-btn.is-on{background:var(--accent-bg-strong);border-color:var(--accent-border-strong)}.w-player-panel{flex-basis:100%;display:flex;flex-direction:column;gap:8px;padding-top:8px;border-top:1px solid var(--border-subtle)}.w-player-opt{display:flex;align-items:center;gap:10px;min-height:40px;font-size:14px;color:var(--text-secondary)}.w-player-opt input{width:18px;height:18px;accent-color:var(--accent-primary)}body:has(.w-player){padding-bottom:0}.prac-dock{position:fixed;left:50%;bottom:calc(64px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:55;width:min(680px,calc(100vw - 20px));padding:12px;border-radius:18px;background:#0e100ef0;backdrop-filter:blur(18px) saturate(1.5);-webkit-backdrop-filter:blur(18px) saturate(1.5);border:1px solid var(--accent-border);box-shadow:0 12px 40px #0000008c,var(--shadow-glow);animation:dock-in .28s cubic-bezier(0,0,.2,1) both}.prac-dock-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.prac-step{font-size:14px;font-weight:700;color:var(--accent-primary)}.prac-progress{font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums}.prac-spacer{flex:1}.prac-dock-btn{min-height:40px;padding:0 12px;border-radius:10px;background:var(--bg-tertiary);border:1px solid var(--border-default);font-size:13px;font-weight:600;color:var(--text-secondary);transition:transform .12s,background .12s}.prac-dock-btn:active{transform:scale(.95)}.prac-dock-btn.is-on{background:var(--accent-bg-strong);border-color:var(--accent-border);color:var(--accent-primary)}.prac-dock-rec{background:var(--accent-primary);color:#04120a;border-color:transparent;min-width:88px}.prac-dock-end{color:#fca5a5}.prac-hint{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:13px;color:var(--text-secondary);min-height:20px}.prac-hint.listening{color:var(--accent-primary);font-weight:600}.pulse-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-primary);animation:live-pulse 1.2s ease-out infinite}.prac-bar{margin-top:8px;height:4px;border-radius:99px;background:#ffffff14;overflow:hidden}.prac-bar-fill{height:100%;background:linear-gradient(90deg,var(--accent-secondary),var(--accent-primary));transition:width .24s ease}.prac-settings{display:flex;flex-direction:column;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border-subtle)}.prac-settings-label{font-size:12px;color:var(--text-muted);letter-spacing:.04em}.prac-select{min-height:44px;padding:0 12px;border-radius:10px;background:var(--bg-tertiary);border:1px solid var(--border-default);color:var(--text-primary)}.prac-settings-opt{display:flex;align-items:center;gap:10px;min-height:40px;font-size:14px;color:var(--text-secondary)}.prac-settings-opt input{width:18px;height:18px;accent-color:var(--accent-primary)}.prac-device{font-size:11px;color:var(--text-muted);line-height:1.5}.wx-open-browser{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:24px;background:#000000b8;backdrop-filter:blur(6px);animation:fade-in .16s ease both}@keyframes fade-in{0%{opacity:0}}.wx-open-card{width:min(360px,100%);padding:24px;border-radius:20px;background:var(--bg-secondary);border:1px solid var(--border-strong);text-align:center}.wx-open-title{font-size:18px;font-weight:700;margin-bottom:10px}.wx-open-body{font-size:14px;color:var(--text-secondary);line-height:1.7;margin-bottom:18px}.wx-open-close{min-height:44px;width:100%;border-radius:12px;background:var(--accent-primary);color:#04120a;font-weight:700}.w-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;justify-content:space-around;gap:2px;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:#000000e0;backdrop-filter:blur(18px) saturate(1.5);-webkit-backdrop-filter:blur(18px) saturate(1.5);border-top:1px solid var(--border-subtle)}.w-tabbar .tab{flex:1;max-width:88px;min-height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:12px;font-weight:600;color:var(--text-muted);border-radius:12px;transition:color .14s,background .14s}.w-tabbar .tab-dot{width:5px;height:5px;border-radius:50%;background:transparent;transition:background .14s,box-shadow .14s}.w-tabbar .tab.active{color:var(--accent-primary);background:var(--accent-bg-subtle)}.w-tabbar .tab.active .tab-dot{background:var(--accent-primary);box-shadow:0 0 8px var(--accent-primary)}.w-footer{display:none}@media(min-width:768px){.w-footer{display:flex;justify-content:center;gap:24px;padding:20px 16px calc(72px + env(safe-area-inset-bottom));border-top:1px solid var(--border-subtle);font-size:13px;color:var(--text-muted)}.w-footer a.active{color:var(--accent-primary)}}.doc-body{margin-top:16px;font-size:15px;line-height:1.75;color:var(--text-secondary)}.doc-body h1{display:none}.doc-body h2{margin:28px 0 12px;font-size:18px;color:var(--text-primary);padding-bottom:8px;border-bottom:1px solid var(--border-subtle)}.doc-body h3{margin:20px 0 8px;font-size:16px;color:var(--accent-primary)}.doc-body h4,.doc-body h5,.doc-body h6{margin:16px 0 6px;font-size:15px;color:var(--text-primary)}.doc-body p{margin:8px 0}.doc-body ul,.doc-body ol{margin:8px 0;padding-left:1.35em}.doc-body li{margin:4px 0}.doc-body strong{color:var(--text-primary);font-weight:700}.doc-body blockquote{margin:12px 0;padding:8px 14px;border-left:3px solid var(--accent-primary);background:var(--accent-bg-subtle);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--text-secondary)}.doc-body table{display:block;width:100%;overflow-x:auto;border-collapse:collapse;margin:12px 0;font-size:13px;-webkit-overflow-scrolling:touch}.doc-body th,.doc-body td{padding:8px 10px;border:1px solid var(--border-default);text-align:left;white-space:nowrap}.doc-body th{background:var(--bg-tertiary);color:var(--accent-primary);font-weight:650}.doc-body code{font-family:var(--font-mono);font-size:.9em;padding:1px 6px;border-radius:6px;background:var(--bg-tertiary);border:1px solid var(--border-subtle)}.doc-body pre{overflow-x:auto;padding:12px;border-radius:var(--radius-lg);background:var(--bg-secondary);border:1px solid var(--border-subtle)}.doc-body pre code{padding:0;border:none;background:none}.doc-body hr{border:none;border-top:1px solid var(--border-subtle);margin:20px 0}.doc-body a{color:var(--accent-primary);text-decoration:underline;text-underline-offset:3px}@media(min-width:960px){.w-main{max-width:800px}.score-strip{gap:12px}}
