/* NightCast finishing pass: stable page end + accessible cosmic audio dock */
:root{--nc-dock-height:clamp(88px,10vh,112px);--nc-dock-safe:env(safe-area-inset-bottom,0px)}
html,body{min-height:100%;overscroll-behavior-y:contain}
body{padding-bottom:0!important}
main{min-height:0}
.nc-footer{margin-block-end:0!important;padding-block-end:max(24px,env(safe-area-inset-bottom,0px))!important}
.nc-footer::after,.nc-footer::before{pointer-events:none}
body:has(.player.show){padding-bottom:calc(var(--nc-dock-height) + var(--nc-dock-safe))!important}
body:has(.player.show) .mobile-nav{bottom:calc(var(--nc-dock-height) + var(--nc-dock-safe))!important}
.player{position:fixed!important;z-index:1200!important;inset-inline:clamp(10px,2.2vw,30px)!important;bottom:calc(10px + var(--nc-dock-safe))!important;width:auto!important;max-width:1500px;margin-inline:auto!important;overflow:hidden;border:1px solid rgba(151,202,255,.24)!important;border-radius:22px!important;background:linear-gradient(115deg,rgba(7,13,33,.97),rgba(17,22,54,.96) 52%,rgba(9,19,43,.98))!important;box-shadow:0 -8px 35px rgba(0,0,0,.18),0 16px 65px rgba(0,0,0,.48),inset 0 1px rgba(255,255,255,.08)!important;backdrop-filter:blur(26px) saturate(140%)!important;-webkit-backdrop-filter:blur(26px) saturate(140%)!important;transform:translateY(calc(100% + 28px));opacity:0;visibility:hidden;pointer-events:none;transition:transform .38s cubic-bezier(.2,.8,.2,1),opacity .28s ease,visibility .28s ease}
.player.show{transform:translateY(0);opacity:1;visibility:visible;pointer-events:auto}
.player:before{content:"";position:absolute;inset:0 0 auto;height:2px;background:linear-gradient(90deg,transparent,#6fe3ff 25%,#a89cff 65%,#f0c987 90%,transparent);opacity:.95;pointer-events:none}
.player:after{content:"";position:absolute;width:240px;height:240px;right:22%;top:-190px;border-radius:50%;background:radial-gradient(circle,rgba(105,134,255,.17),transparent 68%);pointer-events:none}
.player-inner{position:relative;z-index:1;display:grid!important;grid-template-columns:minmax(150px,1fr) auto minmax(220px,1.15fr)!important;align-items:center;gap:clamp(12px,2vw,28px)!important;width:100%;max-width:none!important;min-height:var(--nc-dock-height);padding:12px clamp(14px,2vw,28px)!important}
.player .track{min-width:0;display:flex;align-items:center;gap:12px;direction:rtl}
.player .track-cover{width:clamp(46px,5vw,62px)!important;height:clamp(46px,5vw,62px)!important;flex:0 0 auto;object-fit:cover;border-radius:14px!important;border:1px solid rgba(170,214,255,.32);box-shadow:0 4px 22px rgba(0,0,0,.36),0 0 20px rgba(100,157,255,.12)}
.player .track-text{min-width:0;direction:rtl;text-align:right}
.player .track-title{font-size:clamp(.82rem,1vw,.98rem)!important;font-weight:800;color:#f4f7ff;line-height:1.55;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.player .track-author{font-size:clamp(.7rem,.85vw,.8rem)!important;color:#aab8d8;line-height:1.6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.player .controls{display:flex!important;align-items:center;justify-content:center;gap:clamp(7px,1vw,14px)!important;direction:ltr!important;flex-wrap:nowrap}
.player .control-btn{display:grid;place-items:center;width:40px;height:40px;flex:0 0 auto;border-radius:50%;background:rgba(164,198,255,.08)!important;border:1px solid rgba(173,206,255,.12)!important;color:#d9eaff!important;transition:transform .2s,background .2s,box-shadow .2s}
.player .control-btn:hover{transform:translateY(-2px);background:rgba(126,187,255,.16)!important}
.player .control-btn.main{width:48px;height:48px;border:0!important;border-radius:50%;background:linear-gradient(135deg,#a7edff,#a9b6ff)!important;color:#071021!important;box-shadow:0 0 0 5px rgba(151,191,255,.09),0 0 28px rgba(110,174,255,.25)!important}
.player .control-btn i{font-size:1rem}
.player .control-btn.main i{font-size:1.05rem}
.player .player-progress{min-width:0;display:grid!important;grid-template-columns:auto minmax(60px,1fr) auto minmax(48px,.35fr)!important;align-items:center;gap:10px!important;direction:ltr!important}
.player .player-progress span{font-variant-numeric:tabular-nums;direction:ltr;text-align:center;color:#aebbd7;font-size:.72rem;white-space:nowrap}
.player input[type=range]{min-width:0;accent-color:#8ce5ff;cursor:pointer}
.player .progress{width:100%;height:4px}
.player .volume{width:100%;max-width:100px;height:4px}
.player .nc-player-like{flex:0 0 auto}
body.player-open{--nc-player-visible:1}
@media(max-width:760px){
 :root{--nc-dock-height:104px}
 body:has(.player.show){padding-bottom:calc(var(--nc-dock-height) + 76px + var(--nc-dock-safe))!important}
 body:has(.player.show) .mobile-nav{bottom:calc(var(--nc-dock-height) + var(--nc-dock-safe) + 8px)!important}
 .player{inset-inline:8px!important;bottom:calc(8px + var(--nc-dock-safe))!important;border-radius:18px!important}
 .player-inner{grid-template-columns:minmax(0,1fr) auto!important;grid-template-areas:"track controls" "progress progress";gap:8px 10px!important;min-height:0;padding:10px 12px 11px!important}
 .player .track{grid-area:track;gap:9px}
 .player .track-cover{width:43px!important;height:43px!important;border-radius:11px!important}
 .player .track-title{font-size:.8rem!important}
 .player .track-author{font-size:.68rem!important}
 .player .controls{grid-area:controls;gap:6px!important}
 .player .control-btn{width:33px;height:33px}
 .player .control-btn.main{width:42px;height:42px}
 .player .control-btn i{font-size:.85rem}
 .player .player-progress{grid-area:progress;grid-template-columns:36px minmax(30px,1fr) 36px!important;gap:7px!important}
 .player .volume{display:none!important}
}
@media(max-width:380px){
 .player-inner{padding-inline:9px!important}
 .player .track-cover{width:38px!important;height:38px!important}
 .player .control-btn{width:30px;height:30px}
 .player .control-btn.main{width:38px;height:38px}
}
@media(prefers-reduced-motion:reduce){.player{transition:none!important}}


/* Responsive player composition: metadata, visualization, transport controls and timeline
   each receive a deliberate region instead of competing for the top row. */
.player-inner{
  grid-template-columns:minmax(190px,1fr) minmax(90px,.55fr) auto!important;
  grid-template-areas:"track visualizer controls" "progress progress progress"!important;
  row-gap:10px!important;
}
.player .track{grid-area:track}
.player .nc-audio-visualizer-wrap{grid-area:visualizer;min-width:0;width:100%;max-width:210px;justify-self:center}
.player .nc-audio-visualizer{display:block;width:100%;max-width:210px;height:36px}
.player .nc-visualizer-status{font-size:.65rem;line-height:1.2}
.player .controls{grid-area:controls}
.player .player-progress{grid-area:progress}
@media(max-width:900px){
  :root{--nc-dock-height:218px}
  body:has(.player.show){padding-bottom:calc(var(--nc-dock-height) + 76px + var(--nc-dock-safe))!important}
  body:has(.player.show) .mobile-nav{bottom:calc(var(--nc-dock-height) + var(--nc-dock-safe) + 8px)!important}
  .player{inset-inline:10px!important;bottom:calc(8px + var(--nc-dock-safe))!important;border-radius:22px!important}
  .player-inner{
    grid-template-columns:minmax(0,1fr)!important;
    grid-template-areas:"track" "controls" "progress"!important;
    gap:13px!important;
    min-height:0!important;
    padding:16px 18px 15px!important;
  }
  .player .track{width:100%;gap:12px;justify-content:flex-start}
  .player .track-cover{width:58px!important;height:58px!important;border-radius:15px!important}
  .player .track-text{flex:1;min-width:0}
  .player .track-title{font-size:1rem!important;line-height:1.65;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .player .track-author{font-size:.84rem!important;white-space:nowrap}
  .player .controls{width:100%;justify-content:center;gap:22px!important;padding-block:2px}
  .player .control-btn{width:48px;height:48px}
  .player .control-btn.main{width:62px;height:62px}
  .player .control-btn i{font-size:1.05rem}
  .player .control-btn.main i{font-size:1.25rem}
  .player .player-progress{width:100%;grid-template-columns:42px minmax(0,1fr) 42px!important;gap:9px!important}
  .player .player-progress span{font-size:.78rem}
  .player .progress{height:6px}
  .player .volume{display:none!important}
  .player .nc-audio-visualizer-wrap{display:none!important}
}
@media(max-width:420px){
  :root{--nc-dock-height:204px}
  .player-inner{padding:13px 13px 12px!important;gap:11px!important}
  .player .track-cover{width:50px!important;height:50px!important}
  .player .controls{gap:18px!important}
  .player .control-btn{width:44px;height:44px}
  .player .control-btn.main{width:56px;height:56px}
  .player .track-title{font-size:.94rem!important}
  .player .track-author{font-size:.78rem!important}
}
@media(prefers-reduced-motion:reduce){.player,.player .control-btn{transition:none!important}}


/* Compact spider-web spectrum: retained on mobile/tablet without crowding controls. */
.player .nc-audio-visualizer-wrap{
  display:flex!important;align-items:center;justify-content:center;gap:8px;
  width:clamp(76px,10vw,124px)!important;max-width:124px!important;min-width:76px;
  height:42px;margin-inline:auto;padding:3px 7px;border:1px solid rgba(130,198,255,.19);
  border-radius:14px;background:radial-gradient(ellipse at center,rgba(74,117,194,.13),rgba(6,13,33,.14) 72%);
  box-shadow:inset 0 0 16px rgba(99,153,255,.07),0 0 14px rgba(104,181,255,.04);
}
.player .nc-audio-visualizer{width:38px!important;height:34px!important;flex:0 0 38px;display:block!important;overflow:visible}
.player .nc-visualizer-status{max-width:66px;color:#a9c7e9;font-size:.56rem;line-height:1.35;text-align:center}
@media(max-width:900px){
 .player-inner{grid-template-areas:"track" "visualizer" "controls" "progress"!important;gap:8px!important}
 .player .nc-audio-visualizer-wrap{grid-area:visualizer;display:flex!important;width:auto!important;max-width:100%!important;min-width:0;height:42px;justify-self:center;gap:8px;padding-inline:10px}
 .player .nc-audio-visualizer{width:42px!important;height:36px!important;flex-basis:42px}
 .player .nc-visualizer-status{max-width:none;font-size:.62rem}
}
@media(max-width:420px){
 .player .nc-audio-visualizer-wrap{height:34px;padding:1px 8px}
 .player .nc-audio-visualizer{width:32px!important;height:30px!important;flex-basis:32px}
 .player .nc-visualizer-status{font-size:.56rem}
}
@media(prefers-reduced-motion:reduce){.player .nc-audio-visualizer-wrap{scroll-behavior:auto}}


/* Dual synchronized frequency visualizers flank the transport buttons. */
.player-inner{
  grid-template-columns:minmax(0,1fr) auto!important;
  grid-template-areas:"track controls" "progress progress"!important;
}
.player .controls{
  grid-area:controls;
  display:flex!important;
  align-items:center;
  justify-content:center;
  flex-wrap:nowrap;
  gap:clamp(5px,.65vw,9px)!important;
  min-width:0;
}
.player .controls .nc-audio-visualizer-wrap{
  display:flex!important;
  position:relative;
  flex:0 0 38px;
  width:38px!important;
  min-width:38px!important;
  max-width:38px!important;
  height:34px;
  margin:0!important;
  padding:0!important;
  overflow:hidden;
  border:1px solid rgba(130,198,255,.19);
  border-radius:10px;
  align-items:center;
  justify-content:center;
  gap:0;
}
.player .controls .nc-audio-visualizer-wrap--previous .nc-audio-visualizer{
  transform:scaleX(-1);
  transform-origin:center;
}
.player .controls .nc-audio-visualizer{
  display:block!important;
  width:34px!important;
  height:30px!important;
  max-width:none!important;
  flex:0 0 34px!important;
}
.player .controls .nc-visualizer-status{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}
@media(max-width:900px){
  .player-inner{
    grid-template-columns:minmax(0,1fr)!important;
    grid-template-areas:"track" "controls" "progress"!important;
    gap:10px!important;
  }
  .player .controls{
    width:100%;
    gap:clamp(5px,1.6vw,10px)!important;
    padding-block:0!important;
  }
  .player .controls .nc-audio-visualizer-wrap{
    flex-basis:34px;
    width:34px!important;
    min-width:34px!important;
    max-width:34px!important;
    height:32px;
  }
  .player .controls .nc-audio-visualizer{
    width:30px!important;
    height:28px!important;
    flex-basis:30px!important;
  }
}
@media(max-width:380px){
  .player .controls{gap:4px!important}
  .player .controls .nc-audio-visualizer-wrap{
    flex-basis:28px;
    width:28px!important;
    min-width:28px!important;
    max-width:28px!important;
    height:29px;
  }
  .player .controls .nc-audio-visualizer{
    width:25px!important;
    height:25px!important;
    flex-basis:25px!important;
  }
}

/* Force transport order independent of inherited RTL direction: mirrored copy, Previous, Play, Next, main copy. */
.player .controls{
  flex-direction:row!important;
  direction:ltr!important;
}

/* Higher-specificity safeguard: inherited RTL styling must never reverse the transport row. */
html body .player .player-inner .controls{
  display:flex!important;
  flex-direction:row!important;
  direction:ltr!important;
  justify-content:center!important;
}
html body .player .player-inner .controls > .nc-audio-visualizer-wrap--previous{order:0!important}
html body .player .player-inner .controls > #prevBtn{order:1!important}
html body .player .player-inner .controls > #playButton{order:2!important}
html body .player .player-inner .controls > #nextBtn{order:3!important}
html body .player .player-inner .controls > .nc-audio-visualizer-wrap--next{order:4!important}


/* Minimal numeric readiness meter: always above the player's movement/transport area. */
.player{position:fixed}
.nc-audio-load-feedback{
  position:absolute;z-index:8;top:7px;inset-inline:clamp(12px,2vw,24px);
  display:none;align-items:center;gap:10px;pointer-events:none;
  direction:rtl;font-family:inherit;
}
.nc-audio-load-feedback.is-visible{display:flex}
.nc-audio-load-percent{
  flex:0 0 auto;min-width:38px;text-align:center;direction:rtl;
  font-size:11px;line-height:1;font-weight:900;font-variant-numeric:tabular-nums;
  color:#e8f5ff;text-shadow:0 0 10px rgba(99,217,255,.35);
}
.nc-audio-load-track{
  position:relative;display:block;flex:1;min-width:0;height:4px;overflow:hidden;
  border-radius:999px;background:rgba(220,235,255,.16);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.035);
}
.nc-audio-load-fill{
  display:block;width:0;height:100%;border-radius:inherit;
  background:linear-gradient(90deg,#63d9ff,#a8a4ff 58%,#f0d49a);
  box-shadow:0 0 10px rgba(99,217,255,.55);transition:width .24s ease;
}
.player-inner{padding-top:24px!important}
@media(max-width:900px){
  .nc-audio-load-feedback{top:7px;inset-inline:14px;gap:9px}
  .nc-audio-load-percent{min-width:35px;font-size:10px}
  .nc-audio-load-track{height:4px}
  .player-inner{padding-top:25px!important}
}
@media(max-width:420px){
  .nc-audio-load-feedback{top:6px;inset-inline:12px}
  .player-inner{padding-top:23px!important}
}
@media(prefers-reduced-motion:reduce){.nc-audio-load-fill{transition:none}}
