
*{box-sizing:border-box}body{margin:0;background:#070914;color:#f4f6ff;font-family:Inter,system-ui,-apple-system,"Microsoft YaHei",sans-serif}button,input{font:inherit}button{cursor:pointer;color:inherit}
:root{--bg:#070914;--card:rgba(18,23,42,.78);--line:rgba(255,255,255,.09);--muted:#8e96af;--a:#aebaff;--teal:#98ddd7}
.app{min-height:100vh;display:grid;grid-template-columns:220px 1fr;position:relative;z-index:1;background:linear-gradient(180deg,#0d112422,#06081255)}
.side{padding:22px 14px;border-right:1px solid var(--line);background:#0a0e1a59;backdrop-filter:blur(18px);position:sticky;top:0;height:100vh}.brand{padding:6px 8px 25px;display:flex;gap:10px;align-items:center}.logo{width:42px;height:42px;display:grid;place-items:center;border-radius:15px;background:#aebaff18;border:1px solid var(--line)}.brand b{font-size:14px}.brand small{display:block;color:var(--muted);font-size:9px;margin-top:4px}.nav{display:grid;gap:6px}.nav button{background:transparent;border:1px solid transparent;border-radius:15px;padding:12px;text-align:left;color:#7e879f}.nav button.active{background:#aebaff12;border-color:#aebaff28;color:#eef0ff}.nav button span{font-size:17px;margin-right:9px}.nav button small{font-size:11px}.side-note{position:absolute;bottom:20px;left:14px;right:14px;padding:13px;border-radius:16px;background:#fff1;border:1px solid var(--line);font-size:10px;color:var(--muted)}
.main{min-width:0}.top{height:68px;border-bottom:1px solid #fff0;padding:0 30px;display:flex;align-items:center;justify-content:space-between}.online{color:var(--muted);font-size:11px}.online i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--teal);margin-right:7px;box-shadow:0 0 13px var(--teal)}.login{border:1px solid var(--line);background:#fff1;padding:8px 13px;border-radius:99px}
.page{width:min(1180px,calc(100% - 48px));margin:auto;padding:25px 0 100px}.view{display:none}.view.active{display:block}
.hero{min-height:350px;border:1px solid var(--line);border-radius:30px;padding:42px;position:relative;overflow:hidden;background:radial-gradient(circle at 73% 35%,#9eaaff1c,transparent 27%),linear-gradient(135deg,#ffffff0c,#ffffff03);box-shadow:0 24px 80px #0005}.hero h1{font-size:34px;margin:18px 0 8px}.hero p{color:#a7aec3;margin:0;font-size:13px}.clock{font-size:76px;font-weight:200;letter-spacing:4px}.moon{position:absolute;right:10%;top:45px;width:190px;height:190px;border-radius:50%;background:radial-gradient(circle at 35% 32%,#eef1ff,#929bbb 58%,#555d7d);box-shadow:0 0 80px #aebaff33}.moon:after{content:"";position:absolute;right:-20px;top:-10px;width:170px;height:170px;border-radius:50%;background:#10152b}.actions{display:flex;gap:9px;margin-top:25px}.primary,.ghost{border:1px solid var(--line);padding:11px 15px;border-radius:15px}.primary{background:#aebaff20;border-color:#aebaff3d}.ghost{background:#fff1}
.head{display:flex;justify-content:space-between;align-items:end;margin:27px 2px 13px}.head h2{font-size:22px;margin:0}.head span{font-size:10px;color:var(--muted)}
.scenes{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.scene{min-height:120px;text-align:left;padding:15px;border-radius:19px;border:1px solid var(--line);background-color:#0a0e1a;background-size:cover;background-position:center;position:relative;z-index:0}.scene::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:linear-gradient(180deg,rgba(5,7,15,.2),rgba(5,7,15,.9))}.scene.active{background-color:#141a30;border-color:#aebaff88}.scene .ico{font-size:25px;filter:drop-shadow(0 2px 6px #000b)}.scene b{display:block;margin-top:10px;font-size:12px;text-shadow:0 1px 8px #000d}.scene small{display:block;color:#c9cfe2;font-size:9px;margin-top:4px;text-shadow:0 1px 6px #000c}
.two{display:grid;grid-template-columns:1.3fr .8fr;gap:12px;margin-top:13px}.card{padding:18px;border-radius:22px;background:var(--card);border:1px solid var(--line);box-shadow:0 14px 45px #0003}.title{display:flex;justify-content:space-between;margin-bottom:10px}.title b{font-size:13px}.title span{color:var(--muted);font-size:9px}.mix{display:grid;grid-template-columns:28px 1fr 160px;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid #fff0}.mix:last-child{border:0}.mix label{font-size:11px}.mix input{width:100%;accent-color:var(--a)}.master{display:grid;grid-template-columns:65px 1fr;gap:10px;color:var(--muted);font-size:10px;margin-top:10px}
.actions2{display:grid;gap:8px}.action{border:1px solid var(--line);background:#fff1;border-radius:15px;padding:12px;text-align:left}.action b{font-size:11px}.action small{display:block;color:var(--muted);font-size:9px;margin-top:4px}
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:11px}.asmr{padding:17px;border-radius:20px;background:var(--card);border:1px solid var(--line);min-height:165px}.asmr .big{font-size:28px}.asmr h3{font-size:13px;margin:11px 0 5px}.asmr p{color:var(--muted);font-size:10px;line-height:1.6;min-height:34px}.tiny{padding:7px 10px;border-radius:10px;background:#fff1;border:1px solid var(--line);font-size:10px}
.player{display:grid;grid-template-columns:76px 1fr auto;gap:14px;align-items:center}.cover{width:76px;height:76px;border-radius:18px;display:grid;place-items:center;font-size:34px;background:radial-gradient(circle at 30% 25%,#65719b,#20253b 60%,#101422)}.track b{font-size:14px}.track small{display:block;color:var(--muted);margin:5px 0 11px;font-size:10px}.controls{display:flex;gap:6px}.controls button{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:#fff1}.file{margin-top:12px;display:flex;gap:8px}.file input{flex:1}.song{display:flex;justify-content:space-between;padding:11px 13px;border-radius:13px;background:#fff1;margin-top:7px;font-size:11px}
.form textarea,.form input{width:100%;background:#03050b99;border:1px solid var(--line);border-radius:14px;color:white;padding:12px;outline:none}.form textarea{min-height:145px;margin:10px 0}.moods{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:3px}.mood{padding:8px 11px;border-radius:99px;background:#fff1;border:1px solid var(--line);font-size:10px}.mood.active{background:#aebaff1b;border-color:#aebaff55}.entry{padding:13px;border-radius:14px;background:#fff1;border:1px solid #fff1;margin-top:7px;font-size:11px}.entry p{color:#bcc2d2;line-height:1.7}.entry small{color:var(--muted);font-size:9px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat{text-align:center;padding:22px;border-radius:20px;background:#fff1;border:1px solid var(--line)}.stat b{font-size:30px;display:block}.stat small{color:var(--muted)}
.mobile-nav{display:none}
@media(max-width:850px){.app{grid-template-columns:180px 1fr}.scenes{grid-template-columns:repeat(3,1fr)}.grid{grid-template-columns:repeat(2,1fr)}.moon{right:-30px;opacity:.4}}
@media(max-width:650px){.app{display:block}.side{display:none}.top{height:58px;padding:0 14px}.page{width:calc(100% - 22px);padding-top:12px;padding-bottom:95px}.hero{padding:28px 18px;min-height:355px;border-radius:24px}.clock{font-size:53px}.hero h1{font-size:25px}.moon{width:150px;height:150px;right:-40px;top:30px;opacity:.3}.moon:after{width:135px;height:135px}.scenes{display:flex;overflow:auto}.scene{min-width:145px}.two{grid-template-columns:1fr}.grid{grid-template-columns:1fr 1fr}.player{grid-template-columns:62px 1fr}.cover{width:62px;height:62px}.controls{grid-column:1/-1;justify-content:center}.mix{grid-template-columns:26px 1fr 105px}.file{flex-direction:column}.mobile-nav{position:fixed;display:flex;z-index:20;bottom:7px;left:7px;right:7px;background:#0b0e19ed;border:1px solid var(--line);border-radius:20px;padding:6px;backdrop-filter:blur(18px)}.mobile-nav button{flex:1;background:transparent;border:0;color:#7f879d;padding:7px 2px;font-size:16px;border-radius:14px}.mobile-nav button.active{background:#aebaff14;color:#eef0ff}#biliFloat{bottom:88px;right:10px}.mobile-nav small{display:block;font-size:8px}.actions{flex-wrap:wrap}.stats{gap:6px}.stat{padding:17px 5px}}

#toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,18px);opacity:0;pointer-events:none;z-index:100;padding:10px 15px;border-radius:999px;background:#171c2dE8;border:1px solid #ffffff1a;color:#eef0ff;font-size:11px;box-shadow:0 12px 40px #0007;transition:.25s}#toast.show{opacity:1;transform:translate(-50%,0)}
.modal-mask{position:fixed;inset:0;background:#05070fd0;backdrop-filter:blur(6px);display:grid;place-items:center;z-index:90;opacity:0;pointer-events:none;transition:.25s}.modal-mask.show{opacity:1;pointer-events:auto}
.modal{width:min(360px,92vw);background:#12172ae8;border:1px solid var(--line);border-radius:22px;padding:22px;box-shadow:0 24px 80px #000a}
.modal-input{display:block;width:100%;margin:0 0 10px;background:#03050b99;border:1px solid var(--line);border-radius:12px;color:#fff;padding:11px;outline:none}
.breath-box{text-align:center}
.breath-circle{width:150px;height:150px;margin:16px auto;border-radius:50%;background:radial-gradient(circle at 35% 30%,#aebaff55,#98ddd722 60%,transparent);border:1px solid #aebaff44;display:grid;place-items:center;transition-property:transform;transition-timing-function:ease-in-out;transform:scale(1)}
.breath-circle span{font-size:17px;color:#dfe4ff}
.breath-hint{color:var(--muted);font-size:10px;margin-bottom:14px;line-height:1.7}
.recipe-hint{color:#8e96af;font-size:10px;padding:10px 0;line-height:1.7}
/* ===== 动态效果与点击反馈 ===== */
button{transition:transform .15s ease,background .2s,border-color .2s,box-shadow .2s}
button:active{transform:scale(.95)}
.scene:active,.asmr:active,.stat:active,.action:active{transform:scale(.97)}
.primary:hover{background:#aebaff30;border-color:#aebaff66;box-shadow:0 6px 22px #aebaff26}
.ghost:hover,.login:hover,.tiny:hover{background:#ffffff18;border-color:#ffffff30}
.tiny,.mood{overflow:hidden}
.nav button{transition:transform .18s ease,background .2s,border-color .2s,color .2s}
.nav button:hover{color:#eef0ff;transform:translateX(4px)}
.card{transition:transform .25s ease,border-color .25s,box-shadow .25s}
.card:hover{transform:translateY(-2px);border-color:#ffffff22}
.scene{transition:transform .22s ease,border-color .22s,box-shadow .25s;overflow:hidden}
.scene:hover{transform:translateY(-3px);border-color:#aebaff44;box-shadow:0 12px 34px #0005}
.scene.active{border-color:#aebaff66;animation:sceneGlow 3s ease-in-out infinite}
@keyframes sceneGlow{0%,100%{box-shadow:0 0 0 1px #aebaff44,0 12px 34px #aebaff12}50%{box-shadow:0 0 0 1px #aebaff77,0 12px 40px #aebaff2b}}
.asmr{transition:transform .22s ease,border-color .22s,box-shadow .25s;overflow:hidden}
.asmr:hover{transform:translateY(-3px);border-color:#aebaff3a;box-shadow:0 12px 30px #0004}
.asmr .big{transition:transform .3s ease;display:inline-block}
.asmr:hover .big{transform:scale(1.18) rotate(-5deg)}
.action{transition:transform .18s ease,border-color .2s,background .2s;overflow:hidden}
.action:hover{border-color:#aebaff3d;transform:translateX(3px)}
.mood{transition:transform .15s ease,background .2s,border-color .2s}
.mood:hover{transform:scale(1.07)}
.mood.active{box-shadow:0 0 12px #aebaff33}
.song{transition:border-color .2s,background .2s;overflow:hidden;position:relative}
.song:hover{border-color:#ffffff26}
.song.now{border-color:#aebaff55;background:#aebaff10}
.entry{animation:entryIn .35s ease both;transition:border-color .2s}
.entry:hover{border-color:#ffffff20}
@keyframes entryIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.stat{transition:transform .2s ease,border-color .2s}
.stat:hover{transform:translateY(-3px);border-color:#ffffff22}
.view.active{animation:viewIn .35s ease both}
@keyframes viewIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.modal-mask.show .modal{animation:modalIn .32s cubic-bezier(.2,.9,.3,1.2) both}
@keyframes modalIn{from{opacity:0;transform:scale(.92) translateY(14px)}to{opacity:1;transform:none}}
.moon{animation:moonGlow 7s ease-in-out infinite}
@keyframes moonGlow{0%,100%{box-shadow:0 0 80px #aebaff33}50%{box-shadow:0 0 120px #aebaff59}}
.hero::before{content:"";position:absolute;inset:0;pointer-events:none;background-image:radial-gradient(1.4px 1.4px at 12% 22%,#ffffffb0,transparent 60%),radial-gradient(1px 1px at 28% 68%,#ffffff90,transparent 60%),radial-gradient(1.6px 1.6px at 45% 18%,#ffffffa0,transparent 60%),radial-gradient(1px 1px at 58% 82%,#ffffff80,transparent 60%),radial-gradient(1.3px 1.3px at 68% 40%,#ffffff95,transparent 60%),radial-gradient(1px 1px at 82% 64%,#ffffff85,transparent 60%),radial-gradient(1.5px 1.5px at 90% 25%,#ffffffa5,transparent 60%),radial-gradient(1px 1px at 36% 42%,#ffffff70,transparent 60%),radial-gradient(1.2px 1.2px at 8% 78%,#ffffff80,transparent 60%),radial-gradient(1px 1px at 52% 58%,#ffffff75,transparent 60%);animation:twinkle 5s ease-in-out infinite alternate}
@keyframes twinkle{from{opacity:.45}to{opacity:1}}
.hero h1{animation:viewIn .6s ease both}
.hero .clock{text-shadow:0 0 34px #aebaff40}
.ripple{position:absolute;border-radius:50%;background:radial-gradient(circle,#ffffff45 0%,#ffffff18 45%,transparent 70%);transform:scale(0);animation:ripple .65s ease-out forwards;pointer-events:none}
@keyframes ripple{to{transform:scale(2.4);opacity:0}}
.mix input[type=range],.master input[type=range],.track input[type=range]{-webkit-appearance:none;appearance:none;background:transparent;height:20px;cursor:pointer}
.mix input[type=range]::-webkit-slider-runnable-track,.master input[type=range]::-webkit-slider-runnable-track,.track input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:99px;background:linear-gradient(90deg,#aebaff59,#98ddd740)}
.mix input[type=range]::-webkit-slider-thumb,.master input[type=range]::-webkit-slider-thumb,.track input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;margin-top:-5px;border-radius:50%;background:#e8ecff;border:2px solid #aebaff;box-shadow:0 0 8px #aebaff77;transition:transform .15s}
.mix input[type=range]:hover::-webkit-slider-thumb,.master input[type=range]:hover::-webkit-slider-thumb,.track input[type=range]:hover::-webkit-slider-thumb{transform:scale(1.25)}
.mix input[type=range]::-moz-range-track,.master input[type=range]::-moz-range-track,.track input[type=range]::-moz-range-track{height:4px;border-radius:99px;background:linear-gradient(90deg,#aebaff59,#98ddd740)}
.mix input[type=range]::-moz-range-thumb,.master input[type=range]::-moz-range-thumb,.track input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:#e8ecff;border:2px solid #aebaff;box-shadow:0 0 8px #aebaff77}
#mixToggle.on{background:#aebaff2a;border-color:#aebaff66;animation:btnPulse 2.4s ease-in-out infinite}
@keyframes btnPulse{0%,100%{box-shadow:0 0 10px #aebaff22}50%{box-shadow:0 0 22px #aebaff55}}
.breath-circle{box-shadow:0 0 40px #98ddd722}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#ffffff14;border-radius:99px}
::-webkit-scrollbar-thumb:hover{background:#ffffff2b}
@media(max-width:650px){.nav button:hover{transform:none}.card:hover{transform:none}}
/* ===== 晚安电台 ===== */
.quote-box p{min-height:20px}
.quote-actions{display:flex;gap:8px;margin-top:14px}
#radioPlay.on{color:#dfe4ff;border-color:#aebaff77;background:#aebaff1f;animation:btnPulse 2s ease-in-out infinite}
/* ===== 背景音乐角落开关 ===== */
#bgmBtn{position:fixed;right:18px;bottom:18px;z-index:60;display:flex;align-items:center;padding:10px 15px;border-radius:99px;background:#12172ae8;border:1px solid var(--line);backdrop-filter:blur(12px);box-shadow:0 10px 30px #0006;font-size:11px;color:#cdd3e8}
#bgmBtn:hover{border-color:#aebaff44}
#bgmBtn.on{border-color:#aebaff66;background:#aebaff1a;animation:btnPulse 2.4s ease-in-out infinite}
#bgmBtn .bars{display:inline-flex;gap:2px;align-items:flex-end;height:12px;margin-right:7px}
#bgmBtn .bars i{width:3px;height:4px;background:#8e96af;border-radius:2px;transition:background .2s}
#bgmBtn.on .bars i{background:#aebaff;animation:eq .9s ease-in-out infinite}
#bgmBtn.on .bars i:nth-child(2){animation-delay:.2s}
#bgmBtn.on .bars i:nth-child(3){animation-delay:.4s}
@keyframes eq{0%,100%{height:4px}50%{height:12px}}
@media(max-width:650px){#bgmBtn{bottom:86px;right:12px;padding:9px 13px}}
/* ===== 动态夜空背景 ===== */
#nightSky{position:fixed;inset:0;z-index:0;pointer-events:none}
#sceneBgA,#sceneBgB{position:fixed;inset:-40px;z-index:0;background-size:cover;background-position:center;opacity:0;transition:opacity 1.5s ease;pointer-events:none;will-change:transform,opacity}
#sceneBgA.on{opacity:1;animation:bgDrift 42s ease-in-out infinite alternate}
#sceneBgB.on{opacity:1;animation:bgDriftR 42s ease-in-out infinite alternate}
@keyframes bgDrift{from{transform:scale(1.05) translate(.9%,-.7%)}to{transform:scale(1.17) translate(-2%,1.6%)}}
@keyframes bgDriftR{from{transform:scale(1.17) translate(-2%,1.6%)}to{transform:scale(1.05) translate(.9%,-.7%)}}
#sceneBgDim{position:fixed;inset:0;z-index:0;background:linear-gradient(180deg,rgba(5,7,15,.8),rgba(5,7,15,.86));opacity:0;transition:opacity 1.5s ease;pointer-events:none}
/* ===== ASMR 视频 ===== */
.video-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.vcard{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:14px;transition:transform .22s ease,border-color .22s,box-shadow .25s}
.vcard:hover{transform:translateY(-3px);border-color:#aebaff3a;box-shadow:0 12px 30px #0004}
.vwrap{position:relative;border-radius:14px;overflow:hidden;background:#000;aspect-ratio:16/9;margin-bottom:10px}
.vwrap video,.vwrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.vcard b{font-size:12px}
@media(max-width:650px){.video-grid{grid-template-columns:1fr}}
/* ===== ASMR 标签页 ===== */
.tabs{display:flex;gap:8px;margin:0 2px 14px}
.tab{padding:9px 17px;border-radius:99px;background:#fff1;border:1px solid var(--line);font-size:11px;color:#9aa2bd}
.tab:hover{border-color:#aebaff44;color:#dfe4ff}
.tab.active{background:#aebaff1c;border-color:#aebaff55;color:#eef0ff;box-shadow:0 0 14px #aebaff22}
.tab-panel{display:none}
.tab-panel.active{display:block;animation:viewIn .3s ease both}
/* ===== 音轨增删 ===== */
.mix{grid-template-columns:24px 1fr 130px 22px}
.mix-del{background:transparent;border:0;color:#5d6480;font-size:10px;padding:2px 3px;border-radius:6px;line-height:1;align-self:center}
.mix-del:hover{color:#ff9c9c;background:#ffffff10}
.add-track{margin-top:4px}
.add-panel{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}
@media(max-width:650px){.mix{grid-template-columns:22px 1fr 90px 18px}}
/* ===== B站 ASMR 精选 ===== */
.bili-player{margin-bottom:14px}
.bscreen{position:relative;border-radius:18px;overflow:hidden;background:#000;aspect-ratio:16/9;border:1px solid var(--line);box-shadow:0 18px 44px #0006}
.bscreen iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.bempty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#8e96af;font-size:26px;background:radial-gradient(ellipse at 50% 130%,#1a2248,#05070f)}
.bempty span{font-size:12px;color:#6f7ba6;letter-spacing:2px}
.bbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;color:#a6aec3;font-size:11px;min-height:26px}
.bbar .bext{color:#8e96af;text-decoration:none;font-size:10px}
.bbar .bext:hover{color:#aebaff}
.bchips{display:flex;gap:8px;flex-wrap:wrap;margin:4px 0 12px}
.bsearch{display:flex;gap:8px;margin:4px 0 12px}
.bsearch input{flex:1;min-width:0;background:#03050b99;border:1px solid var(--line);border-radius:12px;color:#fff;padding:9px 13px;outline:none;font-size:11px;font-family:inherit;transition:border-color .2s}
.bsearch input:focus{border-color:#aebaff55}
.bsearch input::placeholder{color:#5d6580}
.bsearch .tiny{flex:none;cursor:pointer}
.bsearch .tiny:disabled{opacity:.6;cursor:wait}
.bchip{background:#0d1122cc;border:1px solid var(--line);color:#a6aec3;border-radius:999px;padding:6px 14px;font-size:11px;cursor:pointer;transition:all .2s;font-family:inherit}
.bchip:hover{border-color:#aebaff55;color:#dfe4ff}
.bchip.active{background:linear-gradient(135deg,#4a5ac7,#7a5fd0);border-color:transparent;color:#fff;box-shadow:0 6px 18px #4a5ac766}
.bcard{display:flex;flex-direction:column;align-items:stretch;gap:0;cursor:pointer;min-width:0;transition:transform .22s ease,border-color .22s,box-shadow .25s}
.bcard:hover{transform:translateY(-3px)}
.bcover{position:relative;aspect-ratio:16/9;border-radius:12px;overflow:hidden;background:#141a33;margin-bottom:10px;border:1px solid var(--line)}
.bcover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.bcard:hover .bcover img{transform:scale(1.07)}
.bfallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:30px}
.bdur{position:absolute;right:6px;bottom:6px;background:#05070fd0;padding:2px 7px;border-radius:7px;font-size:9px;color:#dfe4ff;z-index:2}
.bmeta{flex:1;min-width:0}
.bmeta b{display:block;font-size:12px;margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.btag{font-size:9px;color:#9aa6d8;background:#232b52;border-radius:999px;padding:3px 9px}
.bup{font-size:9px;color:#8e96af;margin-left:7px}
.bplay{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:36px;height:36px;border-radius:50%;border:1px solid #ffffff2a;background:#05070fa8;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;font-size:10px;color:#c9d2f2;transition:all .2s;z-index:2}
.bcard:hover .bplay{border-color:#aebaff88;color:#fff;box-shadow:0 0 14px #aebaff44}
.bcard.playing{border-color:#7a8cff88;box-shadow:0 0 0 1px #7a8cff55,0 12px 30px #0004}
.bcard.playing .bplay{background:linear-gradient(135deg,#4a5ac7,#7a5fd0);border-color:transparent;color:#fff}
#biliFloat{position:fixed;right:18px;bottom:18px;width:min(320px,74vw);z-index:86;transform:translateY(16px) scale(.96);opacity:0;pointer-events:none;transition:transform .28s ease,opacity .28s}
#biliFloat.show{transform:none;opacity:1;pointer-events:auto;filter:drop-shadow(0 18px 44px #000a)}
#biliScreenHome.float{position:fixed;right:18px;bottom:18px;width:min(320px,74vw);z-index:85;border-radius:14px;box-shadow:0 18px 44px #000a;animation:floatIn .28s ease}
@keyframes floatIn{from{transform:translateY(14px) scale(.96);opacity:.4}to{transform:none;opacity:1}}
.bfbar{display:flex;justify-content:space-between;align-items:center;gap:8px;background:linear-gradient(180deg,#0c1020e6,#0c1020b3);border-radius:14px 14px 0 0;padding:7px 11px;font-size:10px;color:#c9d2f2;position:relative;z-index:1}
.bfbar>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bfbtns{flex:none}
.bfbtns button{background:#fff1;border:1px solid var(--line);color:#aab3d0;border-radius:8px;width:22px;height:22px;font-size:10px;cursor:pointer;margin-left:5px;transition:all .2s;font-family:inherit}
.bfbtns button:hover{border-color:#aebaff88;color:#fff}
/* ===== 深夜钢琴 ===== */
.piano-hint{color:var(--muted);font-size:10px;margin-top:9px;line-height:1.8}
.rec-item{display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:13px;background:#fff1;border:1px solid var(--line);margin-top:7px;font-size:11px;transition:border-color .2s}
.rec-item:hover{border-color:#aebaff33}
.rec-item b{flex:1;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rec-item small{color:var(--muted);flex-shrink:0}
.rec-item button{border:1px solid var(--line);background:#fff1;border-radius:9px;padding:5px 10px;font-size:11px;flex-shrink:0;transition:background .15s}
.rec-item button:hover{background:#aebaff1c}
#recBtn.recording,#recStop.recording{background:#ff5b6a22;border-color:#ff5b6a55;animation:recPulse 1.3s ease-in-out infinite}
@keyframes recPulse{0%,100%{box-shadow:0 0 0 0 #ff5b6a00}50%{box-shadow:0 0 16px 2px #ff5b6a55}}
.canon-sheet{margin-top:10px;padding:13px 15px;border-radius:14px;background:#fff1;border:1px solid var(--line);font-size:12px;line-height:2.1;max-height:300px;overflow-y:auto}
.canon-sheet p{margin:0}
.canon-sheet small{color:var(--muted)}
.instr-item{display:flex;align-items:center;gap:11px;padding:10px 12px;border-radius:14px;background:#fff1;border:1px solid var(--line);margin-top:8px;transition:border-color .2s,background .2s}
.instr-item:hover{border-color:#aebaff33}
.instr-item.playing{border-color:#aebaff55;background:#aebaff10}
.instr-play{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:#fff2;font-size:12px;flex-shrink:0;transition:background .15s}
.instr-play:hover{background:#aebaff26}
.instr-info{flex:1;min-width:0}
.instr-info b{font-size:12px;font-weight:500;display:block}
.instr-info small{color:var(--muted);font-size:10px}
.instr-add{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;padding-top:11px;border-top:1px dashed var(--line)}
.instr-add-label{font-size:11px;font-weight:600;flex-shrink:0}
.instr-chips{display:flex;flex-wrap:wrap;gap:6px}
.instr-add small{color:var(--muted);font-size:9px;width:100%}
.instr-add .tiny:disabled{opacity:.55;cursor:default}
.piano-scroll{overflow-x:auto;padding-bottom:6px}
.piano{position:relative;height:172px;background:linear-gradient(#241d33,#0f0b18);border:1px solid #ffffff14;border-radius:14px;padding:7px 7px 13px;box-shadow:inset 0 -10px 26px #0009,0 16px 40px #0006}
.p-whites{display:flex;height:100%;position:relative}
.pkey{position:relative;flex:1;min-width:0;background:linear-gradient(#fbfbff,#dcdce8);border:1px solid #1a1a24;border-top:0;border-radius:0 0 5px 5px;cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none;transition:background .07s,transform .07s;box-shadow:0 3px 5px #0004}
.pkey span{position:absolute;bottom:6px;left:50%;transform:translateX(-50%);font-size:8px;color:#777c92;pointer-events:none}
.pkey.black{position:absolute;top:0;background:linear-gradient(#454552,#0d0d14);height:61%;border:1px solid #000;border-top:0;border-radius:0 0 4px 4px;z-index:2;box-shadow:0 4px 7px #0009}
.pkey.black span{display:none}
.pkey:hover{filter:brightness(.97)}
.pkey.down{background:linear-gradient(#ffd9a3,#ffb163)!important;transform:translateY(2px);box-shadow:0 1px 3px #0006}
.pkey.black.down{background:linear-gradient(#e8b877,#c98d3f)!important}
.pkey[data-kbd]:after{content:attr(data-kbd);position:absolute;top:5px;left:50%;transform:translateX(-50%);font-size:8px;font-weight:700;color:#6a5acd;background:#e9e6ff;padding:1px 4px;border-radius:4px;line-height:1.3;pointer-events:none}
.pkey.black[data-kbd]:after{top:auto;bottom:5px;color:#e8ecff;background:#3a3a55ee;font-size:8px;font-weight:700;padding:1px 4px;border-radius:4px;line-height:1.3;pointer-events:none}
@media(min-width:900px){.piano{height:250px}}
.piano-tips p{color:#bcc2d2;font-size:11px;line-height:1.9;margin:0;padding:7px 0;border-bottom:1px solid #fff1}
.piano-tips p:last-child{border:0}
.piano-tips b{color:#dfe4ff}
/* ===== 入睡打卡 ===== */
.sleep-hero{display:flex;justify-content:center}
.sleep-btn{font-size:14px;padding:13px 34px;border-radius:99px;letter-spacing:2px;transition:all .25s}
.sleep-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 10px 26px #4a5ac777}
.sleep-btn:disabled{opacity:.75;cursor:default;background:linear-gradient(135deg,#3a4480,#554a86)}
.sleep-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;color:#8e96af;font-size:10px;min-height:24px}
/* ===== 温柔提醒 ===== */
.warm-tip{margin-top:12px;padding:14px 18px;border-radius:16px;font-size:12px;line-height:1.8;color:#dfe4ff;background:linear-gradient(135deg,rgba(74,90,199,.16),rgba(122,95,208,.10));border:1px solid rgba(174,186,255,.22);box-shadow:0 8px 24px rgba(0,0,0,.25),inset 0 0 30px rgba(174,186,255,.05);position:relative;overflow:hidden;animation:tipIn .5s ease both}
.warm-tip::before{content:"🌙";position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:22px;opacity:.35}
@keyframes tipIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
/* ===== 深夜电台 ===== */
.show-preview{color:#a6aec3;font-size:12px;line-height:1.8;margin:0 0 10px}
.show-box{max-width:560px;width:92%}
.show-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.show-top b{font-size:14px;color:#eef0ff}
.show-wave{display:flex;gap:3px;align-items:flex-end;height:18px}
.show-wave i{width:3px;height:6px;border-radius:2px;background:#aebaff;opacity:.35;transition:height .3s,opacity .3s}
.show-wave.on i{animation:wave 1s ease-in-out infinite;opacity:.9}
.show-wave.on i:nth-child(2){animation-delay:.15s}
.show-wave.on i:nth-child(3){animation-delay:.3s}
.show-wave.on i:nth-child(4){animation-delay:.45s}
@keyframes wave{0%,100%{height:6px}50%{height:18px}}
.show-text{min-height:110px;font-size:15px;line-height:2.1;color:#dfe4ff;letter-spacing:.5px;transition:opacity .45s ease;text-align:center;display:flex;align-items:center;justify-content:center;padding:6px 4px}
.show-dots{display:flex;gap:7px;justify-content:center;margin:10px 0 14px}
.show-dots i{width:6px;height:6px;border-radius:50%;background:#ffffff1f;transition:.3s}
.show-dots i.on{background:#aebaff;box-shadow:0 0 8px #aebaffaa}
/* ===== 歌词 · 迷你播放 ===== */
.cover img{width:100%;height:100%;border-radius:inherit;object-fit:cover}
.lyric-box{margin-top:12px;max-height:170px;overflow-y:auto;text-align:center;font-size:12px;line-height:2.3;color:#7f88a8;scrollbar-width:thin}
.lyric-box div{transition:color .35s,text-shadow .35s}
.lyric-box div.on{color:#eef0ff;text-shadow:0 0 14px #aebaff88}
#miniPlayer{position:fixed;left:14px;bottom:14px;z-index:60;display:flex;align-items:center;gap:10px;background:#0d1226f0;border:1px solid var(--line);border-radius:16px;padding:9px 12px;box-shadow:0 14px 40px #000b;backdrop-filter:blur(10px);transform:translateY(90px);opacity:0;pointer-events:none;transition:transform .35s ease,opacity .35s ease;max-width:290px}
#miniPlayer.show{transform:none;opacity:1;pointer-events:auto}
#miniCover{width:38px;height:38px;border-radius:10px;object-fit:cover;background:#1a2040;flex:none}
.mini-info{flex:1;min-width:0;cursor:pointer}
.mini-info b{display:block;font-size:11px;color:#eef0ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.mini-info small{display:block;font-size:9px;color:#8e96af;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
#miniPlayer button{background:#ffffff10;border:1px solid var(--line);color:#dfe4ff;width:30px;height:30px;border-radius:50%;cursor:pointer;font-size:10px;flex:none}
#miniPlayer button:hover{border-color:#aebaff66}
@media(max-width:650px){#miniPlayer{left:10px;bottom:64px;max-width:250px}body.bili-on #miniPlayer{bottom:312px;transition:bottom .3s ease}}
/* ===== 导入小窗 ===== */
.file-drop{display:flex;flex-direction:column;align-items:center;gap:6px;padding:26px 16px;border:1.5px dashed #aebaff44;border-radius:16px;background:#aebaff08;cursor:pointer;transition:all .25s;font-size:26px;color:#aebaff}
.file-drop:hover{border-color:#aebaff88;background:#aebaff12}
.file-drop span{font-size:12px;color:#dfe4ff}
.file-drop small{font-size:9px;color:#8e96af}
.file-drop input{display:none}
/* ===== 歌单分区 ===== */
.pl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.pl-card{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:12px;cursor:pointer;transition:all .22s}
.pl-card:hover{transform:translateY(-2px);border-color:#aebaff3a;box-shadow:0 10px 26px #0005}
.pl-card.open{border-color:#7a8cff88;box-shadow:0 0 0 1px #7a8cff44}
.pl-cover{width:48px;height:48px;border-radius:12px;background:#141a33;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:20px;overflow:hidden;flex:none}
.pl-cover img{width:100%;height:100%;object-fit:cover}
.pl-meta{flex:1;min-width:0}
.pl-meta b{display:block;font-size:12px;color:#eef0ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pl-meta small{display:block;font-size:9px;color:#8e96af;margin-top:4px}
.pl-arrow{color:#5d6480;font-size:14px;transition:transform .25s}
.pl-card.open .pl-arrow{transform:rotate(90deg);color:#aebaff}
.pl-view-head{display:flex;align-items:center;gap:10px}
.pl-view-head b{font-size:13px;color:#eef0ff}
.pl-view-head span{font-size:10px;color:#8e96af}

/* ===== 深夜塔罗 ===== */
.trow{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin:18px 0 6px}
.tcol{display:flex;flex-direction:column;align-items:center;gap:6px}
.tlabel{font-size:10px;color:#8e96af;letter-spacing:2px}
.tcard{width:150px;height:252px;perspective:900px;cursor:pointer}
.tinner{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .8s cubic-bezier(.2,.7,.3,1)}
.tcard.flip .tinner{transform:rotateY(180deg)}
.tback,.tface{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:12px;text-align:center}
.tback{background:linear-gradient(160deg,#1b2140,#2a2f55);border:1px solid #3d4470;box-shadow:0 8px 22px rgba(0,0,0,.45)}
.tback span{font-size:36px;filter:drop-shadow(0 0 10px rgba(174,186,255,.6));animation:tmoon 3.2s ease-in-out infinite}
@keyframes tmoon{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.tcard:not(.flip):hover .tinner{transform:rotateY(12deg)}
.tface{background:linear-gradient(165deg,#171b36,#20264a);border:1px solid #4a5280;transform:rotateY(180deg);box-shadow:0 8px 22px rgba(0,0,0,.45);padding:0;overflow:hidden;justify-content:flex-start}
.tovl{position:absolute;left:0;right:0;bottom:0;padding:32px 10px 10px;display:flex;flex-direction:column;gap:2px;text-align:center;background:linear-gradient(to top,rgba(7,9,20,.95) 58%,rgba(7,9,20,0))}
.tpos{font-size:9px;color:#8e96af;letter-spacing:3px}
.tname{font-size:15px;font-weight:700;color:#eef0ff}
.timg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:0;transition:transform .8s}
.tcard.rev .timg{transform:rotate(180deg)}
.torient{font-size:10px;color:#9aa3c7}
.tmeaning{font-size:11px;color:#c6cbe4;line-height:1.7}

#tarotQ{background:#12162b;border:1px solid #2e3450;border-radius:9px;padding:9px 12px;color:#dfe3f5;font-size:12px;outline:none;transition:border-color .25s}
#tarotQ:focus{border-color:#4a5280;box-shadow:0 0 0 3px rgba(90,100,160,.12)}

#recipeName{width:100%;background:#12162b99;border:1px solid var(--line);border-radius:10px;padding:9px 12px;color:#dfe3f5;font-size:12px;outline:none;transition:border-color .25s}
#recipeName:focus{border-color:#4a5280;box-shadow:0 0 0 3px rgba(90,100,160,.12)}
#recipeName::placeholder,#tarotQ::placeholder{color:#5d6580}

/* ===== 个人主页 ===== */
.pf-row{display:grid;grid-template-columns:56px 1fr;gap:10px;align-items:center;margin-top:10px}
.pf-row small{color:var(--muted);font-size:10px}
.pf-row b{font-size:12px;color:#eef0ff}

.pf-tags{display:flex;flex-wrap:wrap;gap:7px;min-height:28px;align-items:center}
.pf-tags .mood{cursor:pointer}
.zgrid{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.fo-score{display:flex;flex-direction:column;gap:10px;margin:6px 0 12px}
.fo-row{display:grid;grid-template-columns:38px 1fr 30px;align-items:center;gap:10px}
.fo-row span{font-size:11px;color:#9aa2bd}
.fo-row b{font-size:13px;color:#eef0ff;text-align:right}
.fo-bar{height:8px;border-radius:99px;background:#ffffff12;overflow:hidden}
.fo-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#6f7bd6,#aebaff);box-shadow:0 0 10px #aebaff66;transition:width .8s ease}
.fo-bar.sm{height:6px}
.fo-line{font-size:12px;line-height:1.9;color:#c9cfe2;margin:6px 0}
.fo-luck{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.fo-luck span{font-size:10px;color:#9aa2bd;background:#ffffff08;border:1px solid var(--line);border-radius:11px;padding:8px 10px}
.zlist{display:flex;flex-direction:column;gap:7px;margin-top:6px}
.zrow{display:grid;grid-template-columns:110px 1fr 30px;align-items:center;gap:10px;padding:7px 10px;border-radius:12px;background:#ffffff06;border:1px solid transparent}
.zrow.me{border-color:#aebaff55;background:#aebaff12}
.zrow span{font-size:11px;color:#c9cfe2;white-space:nowrap}
.zrow b{font-size:12px;color:#eef0ff;text-align:right}
.zrow.me span,.zrow.me b{color:#aebaff}
#sleepShade{position:fixed;inset:0;background:#010208;opacity:0;pointer-events:none;z-index:210}
