:root{--bg:#1a0f0a;--paper:#2b1810;--paper-2:#3a241a;--copper:#b87333;--copper-soft:#d4915f;--ivory:#f5ecd9;--muted:#a89078;--danger:#c85a54}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:radial-gradient(ellipse at top,#3a241a 0,#1a0f0a 60%),#1a0f0a;color:var(--ivory);font-family:"Noto Serif SC","Source Han Serif SC",Georgia,serif;min-height:100vh;font-feature-settings:"liga" 1;-webkit-font-smoothing:antialiased}.wrap{max-width:720px;margin:0 auto;padding:48px 24px 80px}.wrap-wide{max-width:1100px}.top-nav{justify-content:space-between;margin-bottom:8px;gap:16px}.top-nav,.top-nav-right{display:flex;align-items:center}.top-nav-right{gap:12px}.lang-switch{display:inline-flex;border:1px solid var(--paper-2);border-radius:3px;overflow:hidden}.lang-opt{padding:4px 10px;color:var(--muted);text-decoration:none;font-size:12px;letter-spacing:2px;background:transparent;transition:all .15s}.lang-opt:hover{color:var(--copper-soft)}.lang-opt-active{background:var(--copper);color:#1a0f0a;font-weight:600}.quota-badge{font-size:11px;letter-spacing:1.5px;color:var(--copper-soft);border:1px solid var(--paper-2);padding:4px 10px;border-radius:12px;background:rgba(184,115,51,.08)}.quota-badge.quota-empty{color:var(--danger);border-color:rgba(200,90,84,.4);background:rgba(200,90,84,.08)}.turnstile-slot{margin-top:20px;display:flex;justify-content:center;min-height:0;transition:min-height .2s}.turnstile-slot:not(:empty):has(.cf-turnstile-host>*){min-height:65px}.cf-turnstile-host{min-height:0}.turnstile-slot.turnstile-passed{display:none}.back-link{color:var(--copper);text-decoration:none;font-size:13px;letter-spacing:2px;border:1px solid transparent;padding:4px 8px;border-radius:3px;transition:background .15s}.back-link:hover{background:rgba(184,115,51,.12)}.brand-sm{font-size:12px;letter-spacing:3px}.brand{font-size:14px;letter-spacing:4px;color:var(--copper);text-transform:uppercase}.title{font-size:44px;font-weight:400;margin:8px 0;color:var(--ivory)}.subtitle{color:var(--muted);margin-bottom:40px;font-size:15px}.card{background:var(--paper);border:1px solid var(--paper-2);border-radius:4px;padding:24px;box-shadow:0 8px 32px rgba(0,0,0,.4)}textarea{width:100%;background:var(--bg);color:var(--ivory);border:1px solid var(--paper-2);border-radius:3px;padding:14px 16px;font-size:15px;font-family:inherit;resize:vertical;min-height:80px;outline:none;transition:border-color .2s}textarea:focus{border-color:var(--copper)}.card>button{margin-top:20px;width:100%;background:linear-gradient(180deg,var(--copper-soft) 0,var(--copper) 100%);color:#1a0f0a;border:none;padding:14px;font-size:15px;font-weight:600;letter-spacing:2px;border-radius:3px;cursor:pointer;font-family:inherit;transition:transform .1s,opacity .2s}.card>button:hover:not(:disabled){transform:translateY(-1px)}.card>button:disabled{opacity:.5;cursor:not-allowed}.pill-group{margin-top:16px}.pill-label{font-size:11px;letter-spacing:3px;color:var(--muted);text-transform:uppercase;margin-bottom:8px}.pill-row{display:flex;flex-wrap:wrap;gap:6px}.pill{background:transparent;border:1px solid var(--paper-2);color:var(--muted);padding:6px 12px;font-size:13px;border-radius:20px;cursor:pointer;font-family:inherit;letter-spacing:.5px;transition:all .15s;width:auto;margin:0}.pill:hover:not(:disabled){border-color:var(--copper);color:var(--copper-soft);transform:none}.pill-active{background:var(--copper);border-color:var(--copper);color:#1a0f0a;font-weight:600}.pill-active:hover:not(:disabled){background:var(--copper-soft);color:#1a0f0a}.pill:disabled{opacity:.4;cursor:not-allowed}.progress{margin-top:24px;text-align:center;color:var(--copper-soft);font-size:14px}.progress-panel{margin-top:28px;background:var(--paper);border:1px solid var(--paper-2);border-left:3px solid var(--copper);border-radius:3px;padding:20px 24px;box-shadow:0 8px 32px rgba(0,0,0,.4)}.stepper{justify-content:space-between;gap:6px;margin-bottom:20px;padding-bottom:16px;border-bottom:1px dashed var(--paper-2)}.step,.stepper{display:flex;align-items:center}.step{flex:1 1;gap:8px;color:var(--muted);font-size:12px;letter-spacing:2px;transition:color .3s}.step-dot{width:22px;height:22px;border-radius:50%;border:1px solid var(--paper-2);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;flex-shrink:0;transition:all .3s}.step-pending .step-dot{background:transparent;color:var(--muted)}.step-active{color:var(--copper)}.step-active .step-dot{background:var(--copper);border-color:var(--copper);color:#1a0f0a;animation:step-pulse 1.4s ease-in-out infinite}.step-done{color:var(--copper-soft)}.step-done .step-dot{background:transparent;border-color:var(--copper);color:var(--copper)}@keyframes step-pulse{0%,to{box-shadow:0 0 0 0 rgba(184,115,51,.5)}50%{box-shadow:0 0 0 6px rgba(184,115,51,0)}}.live-panel{animation:fade-in .25s ease-out}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.live-label{display:flex;align-items:center;gap:8px;color:var(--copper-soft);font-size:13px;letter-spacing:1px;margin-bottom:12px}.live-sub{margin-top:10px;font-size:12px;color:var(--muted);letter-spacing:1px}.pulse-dot{width:8px;height:8px;border-radius:50%;background:var(--copper);animation:dot-pulse 1.2s ease-in-out infinite;flex-shrink:0}@keyframes dot-pulse{0%,to{opacity:.35;transform:scale(.9)}50%{opacity:1;transform:scale(1.2)}}.live-lyrics{background:var(--bg);padding:14px 16px;border-radius:3px;border-left:2px solid var(--copper);font-family:inherit;font-size:14px;line-height:1.85;color:var(--ivory);white-space:pre-wrap;margin:0;max-height:280px;overflow-y:auto;min-height:80px}.caret{display:inline-block;width:8px;height:16px;background:var(--copper);vertical-align:-2px;margin-left:2px;animation:caret-blink 1s steps(2) infinite}@keyframes caret-blink{50%{opacity:0}}.bar{width:100%;height:8px;background:var(--bg);border-radius:4px;overflow:hidden;border:1px solid var(--paper-2)}.bar-fill{height:100%;background:linear-gradient(90deg,var(--copper) 0,var(--copper-soft) 100%);transition:width .8s ease-out;position:relative}.bar-fill:after{content:"";position:absolute;top:0;bottom:0;right:0;width:20px;background:linear-gradient(90deg,transparent,hsla(41,58%,91%,.4));animation:bar-shimmer 1.5s ease-in-out infinite}@keyframes bar-shimmer{0%{transform:translateX(-20px);opacity:0}50%{opacity:1}to{transform:translateX(0);opacity:0}}.result{margin-top:32px}.result h3{color:var(--copper);font-weight:400;font-size:22px;margin:0 0 4px}.result .meta{color:var(--muted);font-size:12px;margin-bottom:16px}.result pre{background:var(--bg);padding:16px;border-radius:3px;border-left:2px solid var(--copper);color:var(--ivory);font-family:inherit;font-size:14px;line-height:1.8;white-space:pre-wrap;margin:0 0 20px;max-height:360px;overflow:auto}audio{width:100%;margin-top:8px}.player-label{margin-top:16px;font-size:12px;letter-spacing:2px;color:var(--copper-soft);text-transform:uppercase}.unlock{margin-top:20px;padding:14px 16px;border:1px dashed var(--copper);border-radius:3px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.btn-ghost{color:var(--copper);text-decoration:none;font-weight:600;letter-spacing:1px;border:1px solid var(--copper);padding:8px 14px;border-radius:3px;transition:background .15s}.btn-ghost:hover{background:rgba(184,115,51,.12)}.unlock-hint{color:var(--muted);font-size:12px}.paid-key-panel{margin-top:12px;display:flex;flex-direction:column;gap:6px}.paid-key-input{width:100%;background:var(--bg);color:var(--ivory);border:1px dashed var(--copper);border-radius:3px;padding:10px 14px;font-size:13px;font-family:inherit;outline:none;transition:border-color .2s;letter-spacing:.5px}.paid-key-input:focus{border-color:var(--copper-soft);border-style:solid}.paid-key-input::placeholder{color:var(--muted)}.error{margin-top:16px;padding:12px 16px;background:rgba(200,90,84,.1);border-left:2px solid var(--danger);color:var(--danger);font-size:13px;border-radius:3px;word-break:break-all}.footer{margin-top:48px;text-align:center;color:var(--muted);font-size:12px;letter-spacing:2px}.song-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-gap:20px;gap:20px;margin-top:32px}.song-card{background:var(--paper);border:1px solid var(--paper-2);border-top:3px solid var(--copper);border-radius:3px;padding:18px 20px;display:flex;flex-direction:column;gap:12px;box-shadow:0 4px 16px rgba(0,0,0,.3);transition:transform .15s,border-color .15s}.song-card:hover{transform:translateY(-2px);border-top-color:var(--copper-soft)}.song-head{display:flex;flex-direction:column;gap:4px}.song-title{margin:0;font-size:20px;font-weight:400;color:var(--ivory)}.song-meta{font-size:11px;letter-spacing:1px;color:var(--muted)}.tag-row{display:flex;flex-wrap:wrap;gap:6px}.tag{font-size:11px;padding:2px 8px;border:1px solid var(--paper-2);color:var(--copper-soft);border-radius:10px;letter-spacing:.5px}.choice-row{display:flex;flex-wrap:wrap;gap:6px}.choice-chip{font-size:11px;padding:3px 10px;background:var(--copper);color:#1a0f0a;border-radius:10px;letter-spacing:.5px;font-weight:600}.song-card audio{margin-top:4px}.song-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:2px}.btn-ghost-sm{display:inline-block;color:var(--copper);text-decoration:none;font-size:12px;letter-spacing:1px;border:1px solid var(--copper);padding:5px 12px;border-radius:3px;transition:background .15s}.btn-ghost-sm:hover{background:rgba(184,115,51,.12)}.badge-free{font-size:10px;padding:3px 8px;background:rgba(184,115,51,.15);color:var(--copper-soft);border-radius:2px;letter-spacing:1px;text-transform:uppercase}.lyrics-fold{margin-top:4px;border-top:1px dashed var(--paper-2);padding-top:10px}.lyrics-fold summary{cursor:pointer;color:var(--copper-soft);font-size:12px;letter-spacing:1px;list-style:none}.lyrics-fold summary::marker{content:""}.lyrics-fold summary:before{content:"▸ ";transition:transform .15s;display:inline-block}.lyrics-fold[open] summary:before{content:"▾ "}.lyrics-fold pre{background:var(--bg);padding:12px;border-left:2px solid var(--copper);font-family:inherit;font-size:13px;line-height:1.7;color:var(--ivory);white-space:pre-wrap;margin-top:10px;max-height:260px;overflow:auto}.pager{margin-top:36px;display:flex;justify-content:center;align-items:center;gap:18px}.pg-btn{color:var(--copper);text-decoration:none;font-size:13px;letter-spacing:1px;padding:6px 14px;border:1px solid var(--paper-2);border-radius:3px;transition:border-color .15s,background .15s}.pg-btn:hover{border-color:var(--copper);background:rgba(184,115,51,.08)}.pg-btn.disabled{pointer-events:none;opacity:.35}.pg-info{font-size:12px;letter-spacing:1px}.empty,.pg-info{color:var(--muted)}.empty{margin-top:48px;padding:40px;text-align:center;border:1px dashed var(--paper-2);border-radius:3px;font-size:14px}.library-key-panel{margin:24px 0 8px;padding:14px 18px;border:1px solid var(--paper-2);border-radius:4px;background:rgba(184,115,51,.04);display:flex;flex-wrap:wrap;align-items:center;gap:12px;transition:border-color .2s,background .2s}.library-key-panel-armed{border-color:rgba(184,115,51,.4);background:rgba(184,115,51,.09)}.library-key-label{font-size:11px;letter-spacing:2px;color:var(--copper-soft);text-transform:uppercase}.library-key-input{flex:1 1;min-width:200px;background:var(--bg);color:var(--ivory);border:1px solid var(--paper-2);border-radius:3px;padding:8px 12px;font-size:13px;font-family:inherit;outline:none;letter-spacing:.5px;transition:border-color .15s}.library-key-input:focus{border-color:var(--copper-soft)}.library-key-input::placeholder{color:var(--muted)}.library-key-masked{flex:1 1;min-width:180px;font-family:Courier New,monospace;color:var(--ivory);font-size:13px;letter-spacing:1px}.library-key-credits{font-size:12px;letter-spacing:1px;color:var(--copper);padding:4px 10px;border:1px solid rgba(184,115,51,.3);border-radius:12px;background:rgba(184,115,51,.08)}.library-key-credits-low{color:var(--danger);border-color:rgba(200,90,84,.4);background:rgba(200,90,84,.08)}.library-key-headline{font-size:15px;font-weight:600;color:var(--copper);letter-spacing:.5px}.library-key-headline strong{font-size:22px;color:var(--copper-soft);margin:0 4px}.library-key-headline-low,.library-key-headline-low strong{color:var(--danger)}.library-key-clear{font-size:12px;letter-spacing:1px;color:var(--muted);background:none;border:1px solid var(--paper-2);border-radius:3px;padding:5px 10px;cursor:pointer;font-family:inherit;transition:color .15s,border-color .15s}.library-key-clear:hover{color:var(--copper);border-color:var(--copper)}.library-key-hint{font-size:12px;color:var(--muted);width:100%}.library-key-hint a{color:var(--copper);text-decoration:none}.library-key-hint a:hover{color:var(--copper-soft)}.library-key-error{color:var(--danger);font-size:12px;width:100%}.song-card-unlocked{border-color:rgba(184,115,51,.35)}.song-card-unlocked-mark{font-size:10px;letter-spacing:1.5px;color:var(--copper);text-transform:uppercase}.btn-ghost-sm[disabled]{opacity:.45;cursor:not-allowed;pointer-events:none}.btn-ghost-sm-ghosted{color:var(--muted);border-color:var(--paper-2)}.confirm-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;padding:24px;z-index:100}.confirm-dialog{background:var(--paper);border:1px solid var(--copper);border-top:3px solid var(--copper);border-radius:4px;padding:24px 28px;max-width:440px;width:100%;box-shadow:0 16px 48px rgba(0,0,0,.6)}.confirm-title{font-size:18px;color:var(--ivory);margin:0 0 12px;font-weight:500}.confirm-body{font-size:14px;color:var(--muted);line-height:1.6;margin-bottom:20px}.confirm-body strong{color:var(--copper-soft)}.confirm-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.confirm-actions button{font-family:inherit;cursor:pointer;font-size:13px;letter-spacing:.5px;padding:8px 16px;border-radius:3px;transition:background .15s,border-color .15s}.confirm-btn-yes{background:var(--copper);color:#1a0f0a;border:1px solid var(--copper);font-weight:600}.confirm-btn-yes:hover{background:var(--copper-soft);border-color:var(--copper-soft)}.confirm-btn-no{background:transparent;color:var(--muted);border:1px solid var(--paper-2)}.confirm-btn-no:hover{color:var(--ivory);border-color:var(--muted)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg);border-radius:3px}::-webkit-scrollbar-thumb{background:var(--paper-2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--copper)}@keyframes spin{to{transform:rotate(1turn)}}.spinner{display:inline-block;width:14px;height:14px;border:2px solid var(--copper-soft);border-top:2px solid transparent;border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px;margin-right:8px}