/* ===== Screen transitions ===== */
.screen{position:absolute;inset:0;z-index:1;opacity:0;visibility:hidden;transform:translateY(10px);transition:opacity .35s cubic-bezier(.22,.61,.36,1),transform .35s cubic-bezier(.22,.61,.36,1),visibility .35s;}
.screen.active{opacity:1;visibility:visible;transform:none;z-index:2;}

/* ===== Top bar ===== */
.topbar{display:flex;justify-content:space-between;align-items:flex-start;padding-top:max(env(safe-area-inset-top,18px),20px);margin-bottom:6px;}
.greeting-sub{font-size:13px;color:var(--text-secondary);margin-top:7px;display:flex;align-items:center;gap:6px;letter-spacing:-0.005em;}
.section-title{display:flex;justify-content:space-between;align-items:center;margin:24px 0 12px;}
.see-all{font-size:13px;color:var(--accent);cursor:pointer;}

/* ===== Home ===== */
.orb-wrap{display:flex;flex-direction:column;align-items:center;padding:18px 0 6px;}
.orb-hint{text-align:center;color:var(--text-secondary);font-size:13px;margin-top:14px;min-height:18px;letter-spacing:-0.005em;}
.recent{display:flex;align-items:center;gap:12px;margin:20px 0 6px;padding:12px 14px;}
.recent .cov{width:48px;height:48px;border-radius:13px;flex:none;font-size:20px;}
.recent .rmeta{flex:1;min-width:0;}
.recent .rmeta .rt{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-0.01em;}
.recent .rmeta .rs{font-size:12px;color:var(--text-secondary);margin-top:3px;}
.recent .rplay{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;flex:none;color:var(--accent);}
.footstat{display:flex;justify-content:center;gap:10px;margin:26px 0 8px;flex-wrap:wrap;}
.stat-pill{display:flex;align-items:center;gap:7px;padding:9px 15px;border-radius:999px;font-size:13px;font-weight:600;color:var(--text-secondary);background:var(--glass-bg);border:1px solid var(--glass-border);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);}
.stat-pill b{color:var(--text-primary);}
.stat-pill .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent);}

/* ===== Covers (gradient placeholders + icon) ===== */
.cov{flex:none;display:grid;place-items:center;color:rgba(255,255,255,0.95);position:relative;overflow:hidden;box-shadow:inset 0 1px 0 rgba(255,255,255,0.18),inset 0 -8px 14px rgba(0,15,40,0.35);}
.cov svg{display:block;position:relative;z-index:1;filter:drop-shadow(0 1px 3px rgba(0,15,40,0.4));}
.cov-g1{background:radial-gradient(circle at 28% 22%,rgba(255,255,255,0.3),transparent 55%),linear-gradient(135deg,#1e3a5f,#6db8ff);}
.cov-g2{background:radial-gradient(circle at 28% 22%,rgba(255,255,255,0.3),transparent 55%),linear-gradient(135deg,#1d3557,#8fd0ff);}
.cov-g3{background:radial-gradient(circle at 28% 22%,rgba(255,255,255,0.3),transparent 55%),linear-gradient(135deg,#4a9eff,#9bd6ff);}
.cov-g4{background:radial-gradient(circle at 28% 22%,rgba(255,255,255,0.3),transparent 55%),linear-gradient(135deg,#143a6b,#5a9eff);}
.cov-g5{background:radial-gradient(circle at 28% 22%,rgba(255,255,255,0.3),transparent 55%),linear-gradient(135deg,#0a2540,#a8dbff);}

/* ===== Library ===== */
.lib-search{display:flex;align-items:center;gap:10px;margin-top:12px;padding:0 14px;border-radius:21px;background:var(--glass-bg);border:1px solid var(--glass-border);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:inset 0 1px 0 var(--glass-hi);}
.lib-search [data-icon]{color:var(--text-tertiary);display:grid;place-items:center;}
.lib-search input{flex:1;height:44px;background:transparent;border:none;outline:none;color:var(--text-primary);font-size:15px;font-family:inherit;letter-spacing:-0.01em;}
.lib-search input::placeholder{color:var(--text-tertiary);}
.lib-card{display:flex;align-items:center;gap:14px;padding:12px;margin-bottom:12px;}
.lib-card .lcov{width:56px;height:56px;border-radius:15px;font-size:24px;}
.lib-card .lmeta{flex:1;min-width:0;}
.lib-card .lt{font-size:16px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-0.012em;}
.lib-card .ls{font-size:12px;color:var(--text-secondary);margin-top:4px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.lib-card .ltag{font-size:10px;padding:2px 8px;border-radius:999px;background:rgba(255,255,255,0.09);color:var(--text-secondary);}
.lib-card .lwave{margin-top:9px;height:24px;}
.lib-card .lfav{width:34px;height:34px;display:grid;place-items:center;cursor:pointer;color:var(--text-tertiary);transition:color .2s,transform .15s;}
.lib-card .lfav:active{transform:scale(0.85);}
.lib-card .lfav.on{color:var(--accent);}
.lib-card .lplay{width:40px;height:40px;border-radius:50%;flex:none;display:grid;place-items:center;color:var(--accent);background:rgba(255,255,255,0.07);border:1px solid var(--glass-border);}

/* ===== Mini player ===== */
.miniplayer{position:absolute;left:12px;right:12px;bottom:calc(var(--safe-bottom) - 14px);z-index:21;display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:17px;background:linear-gradient(160deg,rgba(16,32,60,0.82),rgba(10,22,44,0.7));backdrop-filter:blur(22px) saturate(170%);-webkit-backdrop-filter:blur(22px) saturate(170%);border:1px solid var(--glass-border);box-shadow:inset 0 1px 0 var(--glass-hi),0 10px 30px rgba(0,0,0,0.45);transform:translateY(180%);transition:transform .42s cubic-bezier(.22,.61,.36,1);cursor:pointer;}
.miniplayer.show{transform:translateY(0);}
.miniplayer .mcov{width:40px;height:40px;border-radius:11px;font-size:18px;}
.miniplayer .mmeta{flex:1;min-width:0;}
.miniplayer .mtitle{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.miniplayer .martist{font-size:11px;color:var(--text-secondary);margin-top:1px;}
.miniplayer .mbar{height:3px;border-radius:999px;background:rgba(255,255,255,0.16);margin-top:6px;overflow:hidden;}
.miniplayer .mbar i{display:block;height:100%;background:linear-gradient(90deg,var(--glow-soft),var(--glow-bright));}
.miniplayer .mpbtn{font-size:0;width:34px;height:34px;display:grid;place-items:center;color:var(--text-primary);}

/* ===== Player overlay ===== */
.player{position:absolute;inset:0;z-index:30;display:flex;flex-direction:column;background:radial-gradient(120% 70% at 50% 0%,rgba(20,44,82,0.55),transparent 60%),linear-gradient(165deg,rgba(8,20,42,0.96),rgba(10,42,84,0.97));backdrop-filter:blur(36px);-webkit-backdrop-filter:blur(36px);transform:translateY(100%);transition:transform .46s cubic-bezier(.22,.61,.36,1);padding:0 26px;padding-top:max(env(safe-area-inset-top,22px),22px);padding-bottom:max(env(safe-area-inset-bottom,16px),24px);}
.player.open{transform:translateY(0);}
.player .phead{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;}
.player .phead .plabel{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.14em;font-weight:600;}
.player .porb{flex:1;display:flex;justify-content:center;align-items:center;padding:6px 0 14px;}
.player .ptrack{text-align:center;margin-bottom:20px;}
.player .ptrack .ptitle{font-size:22px;font-weight:700;letter-spacing:-0.022em;}
.player .ptrack .partist{font-size:14px;color:var(--text-secondary);margin-top:5px;letter-spacing:-0.005em;}
.player .ptime{display:flex;justify-content:space-between;font-size:12px;color:var(--text-tertiary);margin-top:8px;font-variant-numeric:tabular-nums;}
.player .prow{display:flex;align-items:center;justify-content:center;gap:24px;margin:22px 0;}
.timer-row{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:14px;}
.timer-chip{padding:6px 13px;border-radius:999px;font-size:12px;font-weight:600;color:var(--text-secondary);background:var(--glass-bg);border:1px solid var(--glass-border);cursor:pointer;transition:.2s;}
.timer-chip.active{color:#06243f;background:linear-gradient(135deg,var(--glow-soft),var(--glow));border-color:transparent;box-shadow:var(--shadow-glow);}
.subtitle{margin:16px 18px 0;padding:14px 16px;border-radius:16px;background:var(--glass-bg);border:1px solid var(--glass-border);font-size:13px;line-height:1.65;color:var(--text-secondary);text-align:center;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);}

/* ===== Record ===== */
.rec-options{display:flex;flex-direction:column;gap:14px;margin-top:12px;}
.rec-opt{display:flex;align-items:center;gap:16px;padding:18px;cursor:pointer;}
.rec-opt .ric{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;font-size:24px;flex:none;color:rgba(255,255,255,0.95);box-shadow:inset 0 1px 0 rgba(255,255,255,0.18),inset 0 -8px 14px rgba(0,15,40,0.35);}
.rec-opt .rometa .rt{font-size:16px;font-weight:600;letter-spacing:-0.012em;}
.rec-opt .rometa .rs{font-size:12px;color:var(--text-secondary);margin-top:3px;}
.rec-opt .go{color:var(--text-tertiary);display:grid;place-items:center;}
.rec-tagline{text-align:center;margin:32px 0 10px;color:var(--text-secondary);font-size:14px;line-height:1.7;letter-spacing:-0.005em;}
.rec-tagline b{color:var(--accent);font-weight:600;}
.rec-stage{display:none;flex-direction:column;align-items:center;gap:20px;margin-top:26px;}
.rec-stage.show{display:flex;}
.rec-timer{font-size:36px;font-weight:300;letter-spacing:0.06em;font-variant-numeric:tabular-nums;color:var(--text-primary);}
.rec-orb{position:relative;}
.rec-actions{display:flex;gap:20px;align-items:center;}
.rec-dot{width:14px;height:14px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent);animation:recBlink 1.2s ease-in-out infinite;}
@keyframes recBlink{0%,100%{opacity:1;}50%{opacity:0.3;}}

.rec-preview{display:none;flex-direction:column;align-items:center;gap:16px;margin-top:22px;}
.rec-preview.show{display:flex;}
.rp-cov{width:84px;height:84px;border-radius:22px;font-size:36px;margin-bottom:2px;}
.rp-title{width:100%;text-align:center;height:48px;border-radius:14px;border:1px solid var(--glass-border);background:var(--glass-bg);color:var(--text-primary);font-size:16px;padding:0 16px;outline:none;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-family:inherit;letter-spacing:-0.01em;}
.rp-title:focus{border-color:rgba(124,196,255,0.5);box-shadow:0 0 0 3px rgba(124,196,255,0.12);}
.rp-tags{display:flex;gap:10px;}
.rp-tag{padding:8px 16px;border-radius:999px;font-size:13px;background:var(--glass-bg);border:1px solid var(--glass-border);color:var(--text-secondary);cursor:pointer;transition:.2s;}
.rp-tag.active{background:rgba(124,196,255,0.18);border-color:rgba(124,196,255,0.5);color:#fff;}
.rp-player{display:flex;align-items:center;gap:12px;width:100%;}
.rp-bar{flex:1;height:4px;border-radius:999px;background:rgba(255,255,255,0.16);overflow:hidden;}
.rp-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--glow-soft),var(--glow-bright));}
.rp-time{font-size:12px;color:var(--text-tertiary);font-variant-numeric:tabular-nums;min-width:64px;text-align:right;}
.rp-actions{display:flex;gap:14px;width:100%;}
.rp-actions .btn{flex:1;height:48px;border-radius:14px;}
/* ===== Creator-mode gate (record screen) ===== */
.rec-notice{display:none;align-items:center;gap:8px;margin:14px 4px 0;padding:11px 14px;border-radius:14px;background:rgba(255,255,255,0.035);border:1px dashed var(--glass-border);color:var(--text-secondary);font-size:12.5px;line-height:1.45;}
.rec-notice .rn-ic{display:grid;place-items:center;color:var(--accent);flex:none;}
body:not(.creator-mode) #recOptions{opacity:0.4;pointer-events:none;}
body:not(.creator-mode) #recNotice{display:flex;}
body.creator-mode #recNotice{display:none;}
/* ===== Heard feedback (已听 ❤️) ===== */
.heard-row{display:flex;align-items:center;justify-content:center;gap:8px;margin:14px 0 4px;padding:11px 16px;border-radius:14px;background:var(--glass-bg);border:1px solid var(--glass-border);font-size:13px;color:var(--text-secondary);transition:.2s;}
.heard-row.tap{cursor:pointer;color:var(--text-primary);}
.heard-row.tap:active{transform:scale(0.98);}
.heard-row.heard{color:var(--accent);border-color:rgba(168,219,255,0.3);background:rgba(168,219,255,0.08);}
.heard-row .hr-ic{display:grid;place-items:center;}
.ltag.heard-tag{display:inline-flex;align-items:center;gap:3px;background:rgba(168,219,255,0.15);color:var(--accent);}
.heard-card{display:flex;align-items:center;gap:13px;margin:14px 0 6px;padding:14px 16px;}
.heard-card .hc-ic{width:42px;height:42px;border-radius:13px;flex:none;display:grid;place-items:center;color:#fff;background:linear-gradient(140deg,rgba(109,184,255,0.3),rgba(168,219,255,0.12));border:1px solid rgba(168,219,255,0.2);}
.heard-card .hc-meta{flex:1;min-width:0;}
.heard-card .hc-t{font-size:14px;font-weight:600;letter-spacing:-0.01em;}
.heard-card .hc-s{font-size:12px;color:var(--text-secondary);margin-top:3px;}
.ltag.cached-tag{display:inline-flex;align-items:center;gap:3px;background:rgba(127,214,176,0.15);color:#7fd6b0;}
#downloadBtn.cached{color:#7fd6b0;border-color:rgba(127,214,176,0.40);background:rgba(127,214,176,0.10);}
/* ===== Voice Clone card ===== */
#voiceCloneCard{display:none;}
body.creator-mode #voiceCloneCard{display:block;}
.vc-card{padding:18px;margin-top:12px;}
.vc-card.cloned{border-color:rgba(127,214,176,0.35);}
.vc-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;}
.vc-ic{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--glass-bg-strong);color:var(--accent);flex:none;}
.vc-meta{flex:1;}
.vc-title{font-size:16px;font-weight:700;}
.vc-status{font-size:13px;color:var(--text-secondary);margin-top:2px;}
.vc-card.cloned .vc-status{color:#7fd6b0;}
.vc-mm-status{font-size:12px;padding:4px 0 8px;margin:0;line-height:1.4;opacity:0.85;border-radius:6px;}
.vc-mm-status.checking{color:var(--text-muted,#8a9bb4);}
.vc-mm-status.ok{color:#7fd6b0;}
.vc-mm-status.insufficient_balance{color:#ff9a8b;}
.vc-mm-status.invalid_key{color:#ff9a8b;}
.vc-mm-status.error{color:#ff9a8b;}
.vc-mm-status.not_configured{color:var(--text-muted,#8a9bb4);}
.vc-idle,.vc-rec,.vc-preview{display:flex;flex-direction:column;align-items:center;gap:12px;}
.vc-rec,.vc-preview{display:none;}
.vc-rec.show,.vc-preview.show{display:flex;}
.vc-btn{width:100%;justify-content:center;}
.vc-hint{font-size:12px;color:var(--text-tertiary);text-align:center;line-height:1.5;}
.vc-timer{font-size:32px;font-weight:700;letter-spacing:-0.02em;}

/* Anniversary modal */
.stat-pill.tap{cursor:pointer;transition:opacity .2s;}
.stat-pill.tap:active{opacity:0.6;}
.stat-pill.unset{color:var(--glow,#6db8ff);font-weight:500;}
.modal-overlay{position:fixed;inset:0;background:rgba(5,12,28,.7);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:9999;opacity:0;pointer-events:none;transition:opacity .25s;padding:24px;}
.modal-overlay.show{opacity:1;pointer-events:auto;}
.modal-card{max-width:340px;width:100%;padding:28px 24px;text-align:center;border-radius:20px;}
.modal-title{font-size:18px;font-weight:600;margin-bottom:8px;color:var(--text,#e8f0ff);}
.modal-hint{font-size:13px;color:var(--text-muted,#8a9bb4);margin-bottom:20px;}
.modal-input{width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--glass-border,rgba(255,255,255,.12));background:rgba(255,255,255,.06);color:var(--text,#e8f0ff);font-size:16px;font-family:inherit;outline:none;margin-bottom:20px;color-scheme:dark;}
.modal-input:focus{border-color:var(--glow,#6db8ff);}
.modal-actions{display:flex;gap:10px;}
.modal-actions .btn{flex:1;justify-content:center;}

/* Sleep timer countdown */
.sleep-countdown{font-size:12px;color:var(--accent,#6db8ff);min-height:0;text-align:center;opacity:0;transition:opacity .3s;margin-top:2px;}
.sleep-countdown.show{opacity:1;min-height:16px;}
