@font-face{font-family:Vazirmatn;src:url(../fonts/Vazirmatn-400.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Vazirmatn;src:url(../fonts/Vazirmatn-500.woff2) format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Vazirmatn;src:url(../fonts/Vazirmatn-700.woff2) format('woff2');font-weight:700;font-display:swap}

:root{
  /* پالت: شب لاجوردی + زعفران + یشم — برگرفته از کاشی و نگارگری ایرانی */
  --ink:#090C14;
  --ink-2:#101623;
  --card:#151B2A;
  --line:rgba(226,206,160,.12);
  --text:#F0EDE4;
  --text-2:#8E8B84;
  --accent:#D8A441;
  --jade:#5FA79E;
  --turquoise:var(--accent);   /* نام قدیمی، رنگ تازه */
  --saffron:var(--jade);
  --rose:#C96A7C;
  --bar:rgba(9,12,20,.78);
  --sheet:#151B24;
  --fill:rgba(255,255,255,.08);
  --fill-2:rgba(255,255,255,.14);
  --track:rgba(255,255,255,.16);
  --on:255,255,255;
  --lyric-dim:#B2B6BA;
  --lyric-past:#8A8F95;
  --lyric-bg:rgba(0,0,0,.30);
  --tab-h:58px;
  --shell:480px;
  --ease:cubic-bezier(.32,.72,0,1);
  --safe-b:env(safe-area-inset-bottom,0px);
  --safe-pad:max(4px, calc(env(safe-area-inset-bottom,0px) - 12px));
  --safe-t:env(safe-area-inset-top,0px);
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;margin:0;overscroll-behavior-y:none}
body{
  font-family:Vazirmatn,system-ui,sans-serif;
  background:var(--ink);color:var(--text);
  direction:rtl;
  font-size:15px;line-height:1.75;
  -webkit-font-smoothing:antialiased;
  user-select:none;
}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer;padding:0}
input,textarea{user-select:text}
svg{display:block}
.hidden{display:none!important}

/* ---------------- shell ---------------- */
#app{height:100dvh;display:flex;flex-direction:column;overflow:hidden;position:relative;
  max-width:var(--shell);margin:0 auto}
@media (min-width:640px){
  body{background:#050709}
  #app{border-inline:1px solid var(--line);box-shadow:0 0 60px rgba(0,0,0,.5)}
  html[data-theme="light"] body{background:#E7E2D6}
}

.topbar{
  flex:0 0 auto;position:relative;z-index:30;
  padding:calc(var(--safe-t) + 10px) 16px 9px;
  display:flex;align-items:center;gap:12px;
  background:var(--bar);
  backdrop-filter:saturate(180%) blur(24px);
  -webkit-backdrop-filter:saturate(180%) blur(24px);
  border-bottom:1px solid transparent;
  transition:border-color .3s
}
.topbar.scrolled{border-bottom-color:var(--line)}
.topbar h1{font-size:19px;font-weight:600;margin:0;letter-spacing:-.01em;flex:1}
.topbar .actions{display:flex;gap:6px;align-items:center}
.icon-btn{
  width:36px;height:36px;border-radius:12px;
  display:grid;place-items:center;color:var(--text);
  transition:background .18s var(--ease),transform .18s var(--ease)
}
.icon-btn:active{background:var(--fill-2);transform:scale(.9)}
.icon-btn.on{color:var(--turquoise)}

.stack{flex:1;position:relative;overflow:hidden}
.view{
  position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;max-width:100%;
  -webkit-overflow-scrolling:touch;
  padding:4px 16px calc(var(--tab-h) + var(--safe-pad) + 86px);
  opacity:0;pointer-events:none;transform:scale(.985);
  transition:opacity .28s var(--ease),transform .28s var(--ease)
}
.view.active{opacity:1;pointer-events:auto;transform:none}

/* pushed sub page (iOS style) */
.page{
  position:absolute;inset:0;z-index:40;background:var(--ink);
  overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:0 0 calc(var(--tab-h) + var(--safe-b) + 90px);
  transform:translateX(-100%);
  transition:transform .42s var(--ease);
  box-shadow:8px 0 40px rgba(0,0,0,.5)
}
.page.open{transform:none}
.page-head{
  position:sticky;top:0;z-index:5;
  padding:calc(var(--safe-t) + 10px) 16px 10px;
  display:flex;align-items:center;gap:10px;
  background:var(--bar);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)
}
.page-head .t{font-weight:600;font-size:15.5px;flex:1;text-align:center;padding-inline-end:36px}
.back{display:flex;align-items:center;gap:2px;color:var(--turquoise);font-size:15px}

.topsearch{
  flex:1;min-width:0;background:var(--fill);border:1px solid var(--line);
  border-radius:12px;padding:9px 14px;font-size:16px;outline:none;
  transform-origin:right center;animation:sgrow .3s var(--ease)
}
.topsearch:focus{border-color:var(--accent)}
.topsearch::-webkit-search-cancel-button{display:none}
@keyframes sgrow{from{opacity:0;transform:scaleX(.85)}to{opacity:1;transform:none}}

/* ---------------- tab bar ---------------- */
.tabbar{
  flex:0 0 auto;z-index:50;
  height:calc(var(--tab-h) + var(--safe-pad));
  padding-bottom:var(--safe-pad);
  display:flex;align-items:stretch;
  background:var(--bar);
  backdrop-filter:saturate(180%) blur(28px);
  -webkit-backdrop-filter:saturate(180%) blur(28px);
  border-top:1px solid var(--line)
}
.tabbar button{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  color:var(--text-2);transition:color .2s
}
.tabbar button .lbl{font-size:9.5px;opacity:0;height:0;transition:opacity .2s}
.tabbar button.active{color:var(--turquoise)}
.tabbar button svg{transition:transform .3s var(--ease)}
.tabbar button:active svg{transform:scale(.82)}
.tabbar button.active svg{transform:translateY(-1px)}

/* ---------------- mini player ---------------- */
.mini{
  position:absolute;left:8px;right:8px;bottom:calc(var(--tab-h) + var(--safe-pad) + 8px);
  z-index:45;height:60px;border-radius:18px;
  background:var(--sheet);
  backdrop-filter:blur(28px) saturate(180%);-webkit-backdrop-filter:blur(28px) saturate(180%);
  border:1px solid var(--line);
  display:flex;align-items:center;gap:10px;padding:0 10px;
  transform:translateY(140%);transition:transform .42s var(--ease);
  box-shadow:0 10px 30px rgba(0,0,0,.45)
}
.mini.show{transform:none}
.mini img{width:44px;height:44px;border-radius:10px;object-fit:contain;background:var(--card)}
.mini .meta{flex:1;min-width:0}
.mini .meta b{display:block;font-size:13.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini .meta span{display:block;font-size:11.5px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini .bar{position:absolute;bottom:0;left:0;height:2px;background:var(--turquoise);border-radius:2px;transition:width .25s linear}

/* ---------------- lists / grids ---------------- */
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 14px;margin-top:6px}
.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 10px}
.grid.cols-3 b{font-size:12.5px;margin-top:6px}
.grid.cols-3 span{font-size:11px}

.grid.list-mode{grid-template-columns:1fr;gap:2px}
.album{text-align:right;min-width:0;max-width:100%;transition:transform .25s var(--ease)}
.album:active{transform:scale(.95)}
.album .art{
  width:100%;aspect-ratio:1;border-radius:12px;object-fit:contain;
  background:linear-gradient(150deg,#1d2733,#141a22);
  box-shadow:0 6px 20px rgba(0,0,0,.4)
}
.album b{display:block;min-width:0;font-size:13.5px;font-weight:500;margin-top:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.album span{display:block;font-size:12px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.grid.list-mode .album{display:flex;align-items:center;gap:12px;padding:8px 4px;border-bottom:1px solid var(--line)}
.grid.list-mode .album .art{width:52px;height:52px;flex:0 0 auto}
.grid.list-mode .album .txt{min-width:0;flex:1}
.grid.list-mode .album b{margin-top:0}

.row{
  display:flex;align-items:center;gap:12px;padding:11px 4px;
  border-bottom:1px solid var(--line);transition:background .18s
}
.row:active{background:var(--fill)}
.row .num{width:22px;text-align:center;color:var(--text-2);font-size:13px;flex:0 0 auto}
.row .art{width:48px;height:48px;border-radius:9px;object-fit:contain;background:var(--card);flex:0 0 auto}
.row .txt{flex:1;min-width:0}
.row .txt b{display:block;font-weight:500;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .txt span{display:block;font-size:12px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .dur{color:var(--text-2);font-size:12px;font-variant-numeric:tabular-nums}
.row.playing .txt b{color:var(--turquoise)}

.grid-head{
  grid-column:1 / -1;
  display:flex;align-items:center;gap:10px;
  margin:14px 0 -4px;font-size:11.5px;color:var(--text-2);letter-spacing:.02em
}
.grid-head:first-child{margin-top:0}
.grid-head::after{content:'';flex:1;height:1px;background:var(--line)}
.list-mode .grid-head{margin:16px 0 4px}

.avatar{
  position:relative;border-radius:50%;overflow:hidden;flex:0 0 auto;
  background:var(--card);display:grid;place-items:center;color:var(--text-2)
}
.avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}

/* ۱) سرتیتر گروه در فهرست‌ها — همان ظرافت سرتیتر سال‌ها */
.list-head{
  display:flex;align-items:center;gap:10px;
  margin:18px 0 6px;font-size:11.5px;color:var(--text-2);letter-spacing:.02em
}
.list-head:first-child{margin-top:4px}
.list-head::after{content:'';flex:1;height:1px;background:var(--line)}

.section-title{font-size:12px;color:var(--text-2);margin:20px 2px 8px;font-weight:500;letter-spacing:.01em}
.empty{text-align:center;color:var(--text-2);padding:70px 24px;font-size:14px}
.empty b{display:block;color:var(--text);font-size:16px;margin-bottom:6px}

/* chips */
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
/* یک سطر ثابت زیر نام قطعه — همیشه هست، حتی وقتی خالی است */
.pl-info{
  flex:0 0 auto;margin-top:8px;height:22px;
  display:flex;align-items:baseline;gap:6px;
  font-size:12.5px;white-space:nowrap;overflow:hidden
}
.pl-info .k{color:var(--text-2);flex:0 0 auto}
.pl-info .bar{color:var(--line);flex:0 0 auto;padding:0 4px}
.pl-info .v{min-width:0;max-width:44%;overflow:hidden;text-overflow:ellipsis}
.pl-info .v a{color:var(--accent);cursor:pointer}
.pl-info .v .sep{color:var(--text-2)}
.link{color:var(--accent);cursor:pointer}
.chip{
  padding:6px 13px;border-radius:999px;font-size:12.5px;
  background:var(--fill);border:1px solid var(--line);
  transition:transform .18s var(--ease),background .18s
}
.chip:active{transform:scale(.93)}
.chip.gold{color:var(--saffron);border-color:rgba(227,169,60,.35);background:rgba(227,169,60,.1)}
.chip.on{background:var(--turquoise);color:#062522;border-color:transparent;font-weight:500}

/* ---------------- player ---------------- */
#view-player{padding:0;display:flex;flex-direction:column;overflow:hidden}
.player-bg{
  position:absolute;inset:0;z-index:-1;overflow:hidden;
}
.player-bg img{
  width:130%;height:130%;margin:-15%;object-fit:cover;
  filter:blur(56px) saturate(180%) brightness(.55);
  transition:opacity .6s
}
.player-inner{padding:4px 20px 8px;display:flex;flex-direction:column;flex:1;min-height:0;position:relative}

.seg{
  display:flex;background:var(--fill);border-radius:11px;padding:2.5px;
  align-self:center;margin:2px 0 12px;position:relative;width:200px;flex:0 0 auto
}
.seg button{flex:1;padding:6px 0;font-size:13px;border-radius:9px;color:var(--text-2);z-index:2;transition:color .25s}
.seg button.on{color:var(--text);font-weight:500}
.seg .thumb{
  position:absolute;top:2.5px;bottom:2.5px;inset-inline-start:2.5px;width:calc(50% - 2.5px);
  background:var(--fill-2);border-radius:9px;
  transition:transform .38s var(--ease);
  box-shadow:0 2px 8px rgba(0,0,0,.3)
}

/* جعبه‌ی مربعِ کاور: ارتفاعش با فضای باقی‌مانده کوچک و بزرگ می‌شود */
.stage{flex:1 1 0;min-height:90px;max-height:calc(var(--shell) - 44px);display:flex;justify-content:center;align-items:center}
.stage-box{position:relative;height:100%;aspect-ratio:1;max-width:100%}
.covers{
  display:flex;overflow-x:auto;scroll-snap-type:x mandatory;direction:ltr;
  height:100%;border-radius:16px;
  scrollbar-width:none;-webkit-overflow-scrolling:touch
}
.covers::-webkit-scrollbar{display:none}
.covers img{
  min-width:100%;width:100%;height:100%;object-fit:contain;scroll-snap-align:center;
  border-radius:16px;background:var(--card);
  box-shadow:0 18px 50px rgba(0,0,0,.55)
}
.dots{display:flex;gap:6px;justify-content:center;margin-top:10px;height:7px;flex:0 0 auto;direction:ltr}

/* نشانگر بلندی صدا: میله‌ی باریک عمودی، سمت راستِ فیزیکی کاور */
.volbar{
  position:absolute;right:6px;top:24%;height:44%;width:4px;z-index:4;pointer-events:none;
  opacity:0;transform:translateX(16px) scaleY(.7);transform-origin:center;
  transition:opacity .26s var(--ease),transform .42s var(--ease)
}
.volbar.show{opacity:1;transform:none}
.volbar .track{position:absolute;inset:0;border-radius:4px;background:var(--track);overflow:hidden}
.volbar .fill{
  position:absolute;left:0;right:0;bottom:0;height:0;
  background:var(--text);border-radius:4px      /* بدون transition — وگرنه با انگشت جا می‌ماند */
}
.volbar .num{
  position:absolute;right:11px;bottom:0;transform:translateY(50%);
  font-size:11px;color:var(--text-2);font-variant-numeric:tabular-nums;white-space:nowrap
}
.dots i{width:6.5px;height:6.5px;border-radius:50%;background:var(--track);transition:background .25s,transform .25s var(--ease)}
.dots i.on{background:var(--text);transform:scale(1.15)}

.lyricsbox{
  position:absolute;inset:0;border-radius:16px;overflow-y:auto;
  padding:36% 6px;-webkit-overflow-scrolling:touch;
  background:var(--lyric-bg);
  scrollbar-width:none
}
.lyricsbox::-webkit-scrollbar{display:none}
.lyricsbox p{
  margin:0 0 16px;font-size:19px;font-weight:700;line-height:1.9;
  color:var(--lyric-dim);
  transition:color .45s var(--ease),transform .45s var(--ease),text-shadow .45s;
  transform-origin:right center
}
.lyricsbox p.on{color:var(--text);transform:scale(1.02);text-shadow:0 0 16px rgba(var(--on),.35)}
.lyricsbox p.past{color:var(--lyric-past)}
.lyricsbox.no-timing p{color:var(--text)}

.lyric-tools{
  position:absolute;bottom:10px;left:10px;z-index:3;
  display:flex;gap:6px
}
.lyric-tools button{
  width:32px;height:32px;border-radius:10px;display:grid;place-items:center;
  background:rgba(var(--on),.10);color:var(--text);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border:1px solid var(--line);transition:background .2s,color .2s,transform .18s var(--ease)
}
.lyric-tools button:active{transform:scale(.88)}
.lyric-tools button.on{background:var(--accent);color:#1B1305;border-color:transparent}

/* حالت نوشتن شعر */
.lyric-edit{
  position:absolute;inset:0;border-radius:16px;padding:44px 14px 14px;
  background:rgba(var(--on),.05);border:0;outline:none;resize:none;
  font-family:inherit;font-size:16px;line-height:2.3;color:var(--text);
  direction:rtl;text-align:right
}

/* حالت زمان‌بندی */
.lyricsbox.timing{padding:12px 6px 24px}
.lyricsbox.timing p{
  font-size:15.5px;font-weight:500;line-height:1.9;text-shadow:none;
  color:var(--text-2);margin:0 0 4px;padding:8px 10px;border-radius:10px;
  display:flex;align-items:center;gap:10px;cursor:pointer;
  border:1px dashed transparent
}
.lyricsbox.timing p:active{background:rgba(var(--on),.08)}
.lyricsbox.timing p.on{color:var(--text);transform:none;background:rgba(var(--on),.07)}
.lyricsbox.timing p .stamp{
  flex:0 0 auto;width:52px;font-size:11px;font-variant-numeric:tabular-nums;
  color:var(--accent);background:rgba(216,164,65,.13);border:1px solid transparent;
  border-radius:7px;padding:4px 2px;text-align:center;direction:ltr
}
.lyricsbox.timing p .stamp:focus{border-color:var(--accent);outline:none}
.lyricsbox.timing p .stamp.unset{color:var(--text-2);background:rgba(var(--on),.06)}
.lyricsbox.timing p .line{flex:1;min-width:0;cursor:pointer}

.track-head{display:flex;align-items:flex-end;gap:12px;margin-top:12px;flex:0 0 auto}
.track-head .t{flex:1;min-width:0}
.track-head h2{margin:0;font-size:18px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.track-head p{margin:2px 0 0;color:var(--text-2);font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.scrub{margin-top:12px;flex:0 0 auto;direction:ltr}
.scrub .hit{padding:11px 0;touch-action:none;cursor:pointer;-webkit-user-select:none;user-select:none}
.scrub .track{height:6px;border-radius:6px;background:var(--track);position:relative}
.scrub .fill::after{
  content:'';position:absolute;right:0;top:50%;
  transform:translate(50%,-50%) scale(1);
  width:13px;height:13px;border-radius:50%;background:var(--text);
  box-shadow:0 1px 5px rgba(0,0,0,.45);transition:transform .18s var(--ease)
}
.scrub.dragging .fill::after{transform:translate(50%,-50%) scale(1.35)}
.scrub.dragging .track{background:rgba(var(--on),.26)}
.scrub .fill{position:absolute;top:0;bottom:0;left:0;background:var(--text);border-radius:6px;width:0}
.scrub .times{display:flex;justify-content:space-between;margin-top:2px;font-size:11.5px;color:var(--text-2);font-variant-numeric:tabular-nums}

.controls{display:flex;align-items:center;justify-content:space-between;margin-top:10px;flex:0 0 auto;direction:ltr}
.controls button{color:var(--text);display:grid;place-items:center;transition:transform .2s var(--ease),opacity .2s}
.controls button:active{transform:scale(.85);opacity:.6}
.controls .play{
  width:62px;height:62px;border-radius:50%;
  background:var(--fill-2);backdrop-filter:blur(10px)
}
.controls .side{opacity:.85}
.seekbtn{position:relative;color:var(--text);opacity:.9}
.seekbtn span{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-42%);
  font-size:8.5px;font-weight:500;pointer-events:none
}
.controls .side.on{color:var(--turquoise);opacity:1}

.extra{display:flex;justify-content:space-around;align-items:center;margin-top:8px;flex:0 0 auto}
.extra button{color:var(--text-2);width:40px;height:40px;border-radius:12px;display:grid;place-items:center;transition:transform .2s var(--ease),color .2s}
.extra button:active{transform:scale(.86)}
.extra button.on{color:var(--turquoise)}

.volrow{display:none}
input[type=range]{
  -webkit-appearance:none;appearance:none;flex:1;height:5px;border-radius:5px;
  background:var(--track);outline:none
}
input[type=range]::-webkit-slider-thumb{
  -webkit-appearance:none;width:17px;height:17px;border-radius:50%;background:#fff;
  box-shadow:0 1px 4px rgba(0,0,0,.5)
}
input[type=range]::-moz-range-thumb{width:17px;height:17px;border:0;border-radius:50%;background:#fff}

/* ---------------- cover manager ---------------- */
.covers-edit{display:flex;gap:10px;flex-wrap:wrap;touch-action:none}
.cov{
  position:relative;width:76px;height:76px;border-radius:11px;overflow:visible;
  transition:transform .18s var(--ease),opacity .18s
}
.cov img{width:100%;height:100%;border-radius:11px;object-fit:contain;display:block;background:var(--card);pointer-events:none}
.cov .rm{
  position:absolute;top:-6px;left:-6px;background:var(--rose);color:#fff;
  width:22px;height:22px;border-radius:50%;display:grid;place-items:center
}
.cov .main{
  position:absolute;bottom:4px;right:4px;font-size:9px;padding:2px 6px;border-radius:6px;
  background:var(--accent);color:#1B1305;font-weight:500
}
.cov.dragging{opacity:.85;z-index:5;transform:scale(1.08);box-shadow:0 12px 28px rgba(0,0,0,.5)}
.cov.shift{transform:translateX(0)}
.cov-add{
  width:76px;height:76px;border-radius:11px;flex:0 0 auto;
  border:1.5px dashed var(--line);color:var(--text-2);
  display:grid;place-items:center;cursor:pointer;
  transition:border-color .2s,color .2s,transform .18s var(--ease)
}
.cov-add:active{transform:scale(.94)}
.cov-add:hover{border-color:var(--accent);color:var(--accent)}

/* ---------------- image cropper ---------------- */
.crop-stage{
  position:relative;width:100%;aspect-ratio:1;overflow:hidden;border-radius:14px;
  background:#000;touch-action:none;cursor:grab;user-select:none
}
.crop-stage.grabbing{cursor:grabbing}
.crop-stage canvas{position:absolute;inset:0;display:block;pointer-events:none}
.crop-ring{
  position:absolute;inset:0;pointer-events:none;
  border-radius:50%;box-shadow:inset 0 0 0 2px rgba(255,255,255,.85)
}
.crop-tools{display:flex;align-items:center;gap:10px;margin-top:14px;color:var(--text-2)}

/* ---------------- modal box ---------------- */
.modal-wrap{
  position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;
  padding:24px 18px;background:rgba(0,0,0,.5);
  backdrop-filter:blur(6px) saturate(120%);-webkit-backdrop-filter:blur(6px) saturate(120%);
  opacity:0;pointer-events:none;transition:opacity .3s var(--ease)
}
.modal-wrap.show{opacity:1;pointer-events:auto}
.modal{
  width:100%;max-width:390px;max-height:82dvh;display:flex;flex-direction:column;
  background:var(--sheet);border:1px solid var(--line);border-radius:20px;
  box-shadow:0 24px 60px rgba(0,0,0,.55);
  transform:scale(.94);opacity:0;transition:transform .32s var(--ease),opacity .32s var(--ease)
}
.modal-wrap.show .modal{transform:none;opacity:1}
.modal header{display:flex;align-items:center;padding:16px 18px 10px;gap:10px;flex:0 0 auto}
.modal header h3{margin:0;font-size:15.5px;font-weight:600;flex:1}
.modal header button{color:var(--text-2);width:30px;height:30px;border-radius:9px;display:grid;place-items:center}
.modal .body{overflow-y:auto;padding:0 18px 20px;-webkit-overflow-scrolling:touch}

/* ---------------- sheet ---------------- */
.scrim{
  position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:80;
  opacity:0;pointer-events:none;transition:opacity .35s var(--ease);
  backdrop-filter:blur(2px)
}
.scrim.show{opacity:1;pointer-events:auto}
.sheet{
  position:fixed;left:50%;bottom:0;z-index:90;width:100%;max-width:var(--shell);
  max-height:88dvh;display:flex;flex-direction:column;
  background:var(--sheet);border-radius:20px 20px 0 0;
  border-top:1px solid var(--line);
  transform:translate(-50%,100%);
  transition:transform .44s var(--ease);
  padding-bottom:var(--safe-b);
  box-shadow:0 -12px 44px rgba(0,0,0,.5)
}
.sheet.open{transform:translate(-50%,0)}
.sheet .grip{width:38px;height:5px;border-radius:5px;background:var(--track);margin:9px auto 4px;flex:0 0 auto}
.sheet header{display:flex;align-items:center;padding:6px 18px 12px;gap:10px;flex:0 0 auto}
.sheet header h3{margin:0;font-size:15.5px;font-weight:600;flex:1}
.sheet .body{overflow-y:auto;padding:0 18px 22px;-webkit-overflow-scrolling:touch}
.sheet .done{color:var(--text-2);width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:0 0 auto}

.opt{display:flex;align-items:center;gap:12px;padding:13px 2px;border-bottom:1px solid var(--line);width:100%;text-align:right}
.opt:last-child{border-bottom:0}
.opt .g{flex:1}
.opt .check{color:var(--turquoise);opacity:0;transition:opacity .2s}
.opt.on .check{opacity:1}

/* equalizer */
.eq-bands{display:flex;gap:6px;justify-content:space-between;height:190px;margin:16px 0 4px}
.eq-band{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px}
.eq-band .v{font-size:10px;color:var(--text-2);font-variant-numeric:tabular-nums}
.eq-band input{
  -webkit-appearance:slider-vertical;appearance:slider-vertical;
  width:8px;flex:1;writing-mode:vertical-lr;direction:rtl
}
.eq-band label{font-size:10px;color:var(--text-2)}

/* forms */
.field{margin-bottom:14px}
.field label{display:block;font-size:12.5px;color:var(--text-2);margin-bottom:6px}
.field input,.field textarea,.field select{
  width:100%;padding:12px 14px;border-radius:12px;
  background:var(--fill);border:1px solid var(--line);
  font-size:15px;outline:none;transition:border-color .2s
}
.field input:focus,.field textarea:focus{border-color:var(--turquoise)}
.field textarea{min-height:170px;resize:vertical;line-height:2.1}
.btn{
  display:block;width:100%;padding:14px;border-radius:14px;text-align:center;
  background:var(--turquoise);color:#062522;font-weight:700;font-size:15px;
  transition:transform .18s var(--ease),opacity .2s
}
.btn:active{transform:scale(.97)}
.btn.ghost{background:var(--fill);color:var(--text)}
.btn.danger{background:rgba(210,97,122,.16);color:var(--rose)}
.btn:disabled{opacity:.45}

/* lyric editor */
.led-line{
  display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)
}
.led-line .tm{
  width:66px;flex:0 0 auto;font-size:12px;color:var(--turquoise);
  font-variant-numeric:tabular-nums;text-align:center;
  background:rgba(49,198,180,.1);border-radius:8px;padding:5px 0
}
.led-line .tm.unset{color:var(--text-2);background:rgba(255,255,255,.05)}
.led-line .tx{flex:1;font-size:14px;min-width:0}
.led-line.cur{background:rgba(49,198,180,.07);border-radius:8px}

.toast{
  position:fixed;bottom:calc(var(--tab-h) + var(--safe-pad) + 84px);left:50%;transform:translate(-50%,20px);
  background:var(--sheet);backdrop-filter:blur(20px);
  padding:11px 20px;border-radius:14px;font-size:13.5px;z-index:200;
  opacity:0;transition:all .3s var(--ease);border:1px solid var(--line);
  pointer-events:none;max-width:86vw;text-align:center
}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ---------------- auth ---------------- */
.auth{
  position:fixed;inset:0;z-index:300;overflow-y:auto;
  background:
    radial-gradient(120% 70% at 70% 0%, #14203A 0%, transparent 62%),
    radial-gradient(90% 50% at 10% 100%, #16121C 0%, transparent 60%),
    var(--ink);
  display:flex;flex-direction:column;
  padding:calc(var(--safe-t) + 18px) 28px calc(var(--safe-b) + 26px)
}
@media (min-width:640px){
  .auth{padding-inline:calc(50% - 190px)}
}

/* شمسه و سیم‌های تار */
.auth-art{position:relative;height:172px;flex:0 0 auto}
.auth-art svg{width:100%;height:100%;overflow:visible}
.auth-art .shamse *{fill:none;stroke:var(--jade);stroke-width:1;opacity:0;animation:sh-in 1.6s ease forwards .45s}
@keyframes sh-in{to{opacity:.17}}
.auth-art .strings line{
  stroke:var(--accent);stroke-linecap:round;opacity:.9;
  stroke-dasharray:346;stroke-dashoffset:346;
  animation:pluck 1s var(--ease) forwards;
  animation-delay:calc(var(--i) * .085s + .1s)
}
@keyframes pluck{to{stroke-dashoffset:0}}
.auth-art .peg{fill:var(--accent);opacity:0;animation:sh-in .6s ease forwards calc(var(--i) * .085s + .8s)}

.auth-brand{margin:2px 0 30px}
.auth-brand h1{margin:0;font-size:48px;font-weight:700;letter-spacing:-.045em;line-height:1}
.auth-brand .rule{width:46px;height:2px;background:var(--accent);border-radius:2px;margin:16px 0 12px}
.auth-brand p{margin:0;color:var(--text-2);font-size:14px;max-width:30ch;line-height:1.9}

.auth .field{margin-bottom:20px}
.auth .field label{font-size:12px;letter-spacing:.01em}
.auth .field input{
  background:transparent;border:0;border-bottom:1px solid var(--line);
  border-radius:0;padding:10px 2px;font-size:16px;
  transition:border-color .25s var(--ease)
}
.auth .field input:focus{border-bottom-color:var(--accent)}
.auth .btn{background:var(--accent);color:#1B1305;border-radius:12px;margin-top:6px}
.auth .switch{text-align:center;margin-top:22px;color:var(--text-2);font-size:13.5px}
.auth .switch b{color:var(--accent);font-weight:500}
.auth .err{color:var(--rose);font-size:13px;min-height:22px;margin-bottom:6px}

/* ---------------- تم‌ها ---------------- */
html[data-theme="black"]{
  --ink:#000;--ink-2:#0A0A0A;--card:#101010;--bar:rgba(0,0,0,.82);--sheet:#111;
  --line:rgba(255,255,255,.11)
}
html[data-theme="gray"]{
  --ink:#16181B;--ink-2:#1E2126;--card:#24272D;--bar:rgba(22,24,27,.82);--sheet:#20232A;
  --line:rgba(255,255,255,.10)
}
html[data-theme="red"]{
  --ink:#130809;--ink-2:#1D0E10;--card:#261417;--bar:rgba(19,8,9,.82);--sheet:#221114;
  --line:rgba(255,210,205,.12)
}
html[data-theme="green"]{
  --ink:#07120D;--ink-2:#0E1B15;--card:#14241C;--bar:rgba(7,18,13,.82);--sheet:#11201A;
  --line:rgba(205,255,230,.12)
}
html[data-theme="light"]{
  --lyric-dim:#6B6862;--lyric-past:#8F8C85;--lyric-bg:rgba(255,255,255,.55);
  --ink:#F6F3EC;--ink-2:#FFFFFF;--card:#FFFFFF;--sheet:#FFFFFF;
  --bar:rgba(246,243,236,.86);
  --line:rgba(0,0,0,.12);
  --text:#171512;--text-2:#6E6A62;
  --accent:#A9761A;--jade:#2E7C72;--rose:#B04156;
  --fill:rgba(0,0,0,.05);--fill-2:rgba(0,0,0,.09);--track:rgba(0,0,0,.14);
  --on:0,0,0
}
html[data-theme="light"] .album .art{background:linear-gradient(150deg,#EDE7DA,#E3DCCB)}
html[data-theme="light"] .player-bg img{filter:blur(56px) saturate(150%) brightness(1.25)}
html[data-theme="light"] .btn{color:#FFF8EC}
html[data-theme="light"] .chip.on{color:#FFF8EC}

@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
