/* Theme-owned listening room. Audio remains native; every visual is scoped. */
body.republic-player-ready { --republic-player-space:164px; padding-bottom:calc(var(--republic-player-space) + env(safe-area-inset-bottom,0px)); }
body.republic-player-ready.republic-player-error { --republic-player-space:284px; }
body.republic-player-ready.republic-player-collapsed { --republic-player-space:86px; }
.republic-player { --rp-ink:#091b16; --rp-emerald:#07503f; --rp-gold:#d8b978; --rp-ivory:#f6f3e9; --rp-muted:#bdc9bf; --rp-line:#71816d; --rp-violet:#c5adff; font-family:'Segoe UI',Arial,sans-serif; color:var(--rp-ivory); color-scheme:dark; }
.republic-player *, .republic-player *::before, .republic-player *::after { box-sizing:border-box; }
.republic-player [hidden] { display:none !important; }
.republic-player button,.republic-player input,.republic-player a { -webkit-tap-highlight-color:transparent; }
.republic-player button { font-family:inherit; cursor:pointer; }
.republic-player button:disabled { cursor:default; opacity:.42; }
.republic-player :is(button,input,a,summary):focus-visible { outline:3px solid var(--rp-violet); outline-offset:4px; }
.republic-player button:focus:not(:focus-visible) { outline:none; }
.republic-player-icon { display:block; flex:0 0 auto; width:21px; height:21px; }
.republic-player-kicker { margin:0 0 10px; color:var(--rp-gold); font-size:9px; line-height:1.5; font-weight:700; letter-spacing:.15em; }
.republic-player-native { max-width:1000px; margin:30px auto; padding:30px; border:1px solid #8e8156; border-radius:16px; background:#10291f; scroll-margin-top:110px; overflow-wrap:anywhere; }
.republic-player-native h2 { font-family:inherit; font-size:26px; line-height:1.2; font-weight:750; letter-spacing:-.03em; margin:0 0 12px; }
.republic-player-native p { color:var(--rp-muted); font-size:14px; line-height:1.7; }
.republic-player-native audio { display:block; width:100%; min-height:44px; margin:20px 0; color-scheme:light; }
.republic-player-native details { margin-top:22px; }
.republic-player-native summary { cursor:pointer; min-height:44px; padding:10px 0; color:var(--rp-gold); font-size:14px; }
.republic-player-native ul { padding-left:20px; }
.republic-player-native li { margin-bottom:10px; }
.republic-player-native a { display:inline-block; min-height:44px; padding-block:10px; color:var(--rp-ivory); text-decoration:underline; text-underline-offset:3px; font-size:14px; line-height:1.6; }

.republic-player-dock { position:fixed; left:20px; right:20px; bottom:calc(14px + env(safe-area-inset-bottom,0px)); z-index:70; display:grid; grid-template-columns:minmax(180px,1fr) minmax(300px,1.45fr) minmax(270px,1fr); align-items:center; gap:25px; max-width:1520px; margin-inline:auto; padding:17px 22px; min-height:112px; border:1px solid #8a7b52; border-radius:18px; background:rgba(7,23,16,.97); -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px); box-shadow:0 15px 50px #00000060,inset 0 1px #d8b97818; }
.republic-player-identity { display:flex; align-items:center; gap:13px; min-width:0; }
.republic-player-art { position:relative; display:grid; place-items:center; width:62px; height:62px; padding:0; flex:0 0 62px; border:1px solid #9d8a59; border-radius:9px; background:#164334; color:var(--rp-gold); overflow:hidden; }
.republic-player-art img { display:block; width:100%; height:100%; object-fit:cover; }
.republic-player-track { display:flex; flex-direction:column; gap:6px; min-width:0; min-height:48px; padding:6px 0; border:0; background:none; color:var(--rp-ivory); text-align:left; }
.republic-player-track>span { display:block; width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.republic-player-track>[data-player-title] { font-size:13px; line-height:1.45; font-weight:700; }
.republic-player-track>[data-player-artist] { font-size:11px; line-height:1.45; font-weight:400; color:var(--rp-muted); }
.republic-player-transport { display:flex; flex-direction:column; gap:7px; min-width:0; }
.republic-player-buttons { display:flex; justify-content:center; align-items:center; gap:9px; }
.republic-player-control { position:relative; display:inline-grid; place-items:center; width:44px; height:44px; min-height:44px; flex:0 0 44px; padding:10px; border:1px solid transparent; border-radius:50%; background:transparent; color:#d6e0d3; transition:background .15s,color .15s,border-color .15s; }
.republic-player-control:hover:not(:disabled) { background:#d8b97812; border-color:#8b845c; color:var(--rp-gold); }
.republic-player-control[aria-pressed=true],.republic-player-control[aria-expanded=true] { color:var(--rp-gold); }
.republic-player-control[aria-pressed=true]::after { content:''; position:absolute; bottom:2px; left:50%; width:3px; height:3px; margin-left:-1.5px; border-radius:50%; background:var(--rp-gold); }
.republic-player-play { width:52px; height:52px; min-height:52px; flex-basis:52px; padding:14px; border:1px solid #f0d99f; background:linear-gradient(120deg,#ecd6a1,var(--rp-gold)); color:var(--rp-ink); box-shadow:0 3px 18px #d8b97816; }
.republic-player-play .republic-player-icon { width:23px; height:23px; }
.republic-player-play:hover:not(:disabled),.republic-player-play[aria-pressed=true] { color:var(--rp-ink); border-color:#f0d99f; background:#efdaa9; }
.republic-player-play[aria-pressed=true]::after { display:none; }
.republic-player-play[aria-busy=true] { border-style:dashed; }
.republic-player-repeat-one { position:absolute; display:grid; place-items:center; inset:0; margin:auto; width:13px; height:13px; border-radius:50%; color:var(--rp-gold); background:#071710; font-size:9px; font-weight:800; line-height:1; }
.republic-player-progress { display:flex; align-items:center; gap:10px; min-width:0; }
.republic-player-progress>span { min-width:35px; color:var(--rp-muted); font-size:10px; font-variant-numeric:tabular-nums; line-height:1.5; }
.republic-player-progress>span:last-child { text-align:right; }
.republic-player input[type=range] { display:block; width:100%; min-width:0; height:44px; margin:0; padding:0; border:0; border-radius:0; appearance:none; -webkit-appearance:none; background:transparent; cursor:pointer; accent-color:var(--rp-gold); touch-action:pan-y; }
.republic-player input[type=range]::-webkit-slider-runnable-track { height:3px; border-radius:5px; background:linear-gradient(to right,var(--rp-gold) 0 var(--republic-progress,0%),#7f8d7a var(--republic-progress,0%) 100%); }
.republic-player input[type=range]::-moz-range-track { height:3px; border-radius:5px; background:#7f8d7a; }
.republic-player input[type=range]::-moz-range-progress { height:3px; border-radius:5px; background:var(--rp-gold); }
.republic-player input[type=range]::-webkit-slider-thumb { width:12px; height:12px; margin-top:-4.5px; border:1px solid #f7e6bc; border-radius:50%; background:var(--rp-gold); appearance:none; -webkit-appearance:none; }
.republic-player input[type=range]::-moz-range-thumb { width:11px; height:11px; border:1px solid #f7e6bc; border-radius:50%; background:var(--rp-gold); }
.republic-player input[type=range]:disabled { opacity:.5; cursor:default; }
.republic-player-tools { display:flex; justify-content:flex-end; align-items:center; gap:3px; min-width:0; }
.republic-player input.republic-player-volume { width:72px; height:44px; flex:0 1 72px; margin-right:7px; }
.republic-player-status { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(1px,1px,1px,1px); clip-path:inset(50%); white-space:nowrap; }
.republic-player.has-error .republic-player-status { position:static; grid-column:1/-1; width:auto; height:auto; margin:3px 0 0; overflow:visible; clip:auto; clip-path:none; white-space:normal; font-size:12px; line-height:1.7; color:#f6d8bb; text-align:center; }
.republic-player-fallback-link { grid-column:1/-1; justify-self:center; display:inline-flex; align-items:center; min-height:44px; padding:10px; color:var(--rp-gold); font-size:12px; line-height:1.5; text-decoration:underline; text-underline-offset:3px; }

.republic-player-panel { position:fixed; right:20px; bottom:calc(var(--republic-player-space,164px) + env(safe-area-inset-bottom,0px)); z-index:71; width:min(430px,calc(100% - 40px)); max-height:calc(100dvh - var(--republic-player-space,164px) - 25px - env(safe-area-inset-bottom,0px)); overflow:auto; overflow-wrap:anywhere; overscroll-behavior:contain; padding:24px; border:1px solid #8a7b52; border-radius:16px; background:#0a2118; color:var(--rp-ivory); box-shadow:0 15px 60px #00000070; scrollbar-color:#85916f #0a2118; }
.republic-player-panel:focus { outline:2px solid var(--rp-violet); outline-offset:3px; }
.republic-player-panel-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:20px; }
.republic-player-panel-heading h2,.republic-player-details h2 { margin:0; color:var(--rp-ivory); font-family:inherit; font-size:26px; font-weight:750; line-height:1.2; letter-spacing:-.03em; }
.republic-player-panel-heading .republic-player-kicker { margin-top:4px; }
.republic-player-queue-note { margin:0 0 16px; color:var(--rp-muted); font-size:12px; line-height:1.75; }
.republic-player-queue-list { display:flex; flex-direction:column; gap:5px; margin:0; padding:0; list-style:none; }
.republic-player-queue-list li { margin:0; min-width:0; }
.republic-player-queue-list button { display:flex; align-items:center; gap:11px; width:100%; min-height:70px; padding:10px; border:1px solid transparent; border-radius:8px; background:transparent; color:var(--rp-ivory); text-align:left; }
.republic-player-queue-list button:hover { background:#d8b9780e; }
.republic-player-queue-list button[aria-current=true] { border-color:#8e8156; background:#d8b9780c; }
.republic-player-queue-number { flex:0 0 17px; color:var(--rp-muted); font-size:10px; font-variant-numeric:tabular-nums; }
.republic-player-queue-list img { display:block; flex:0 0 44px; width:44px; height:44px; border-radius:5px; object-fit:cover; }
.republic-player-queue-copy { display:flex; flex-direction:column; gap:5px; min-width:0; flex:1; }
.republic-player-queue-copy strong { color:var(--rp-ivory); font-size:12px; font-weight:650; line-height:1.5; overflow-wrap:anywhere; }
.republic-player-queue-copy small { color:var(--rp-muted); font-size:10px; line-height:1.6; overflow-wrap:anywhere; }
.republic-player-queue-play { color:var(--rp-gold); }
.republic-player-queue-play .republic-player-icon { width:16px; height:16px; }
.republic-player-detail-cover { display:block; width:100%; max-height:280px; margin:0 0 24px; border:1px solid #8e8156; border-radius:10px; aspect-ratio:1; object-fit:cover; object-position:50% 30%; }
.republic-player-detail-artist { margin:14px 0 0; color:var(--rp-gold); font-size:13px; line-height:1.7; }
.republic-player-detail-description { margin:18px 0 0; color:var(--rp-muted); font-size:13px; line-height:1.85; white-space:pre-line; overflow-wrap:anywhere; }
.republic-player-download { display:inline-flex; align-items:center; gap:10px; min-height:46px; margin-top:22px; padding:11px 16px; border:1px solid #8e8156; border-radius:6px; color:var(--rp-gold); font-size:12px; line-height:1.5; }
.republic-player-show { position:fixed; right:20px; bottom:calc(18px + env(safe-area-inset-bottom,0px)); z-index:70; display:flex; align-items:center; gap:11px; max-width:calc(100% - 40px); min-height:52px; padding:12px 18px; border:1px solid var(--rp-gold); border-radius:10px; background:#0a2a20f5; color:var(--rp-ivory); box-shadow:0 8px 30px #00000040; font-size:13px; font-weight:650; line-height:1.5; }
.republic-player-show-dot { width:6px; height:6px; flex:0 0 6px; border-radius:50%; background:#92a78e; }
.republic-player.is-playing .republic-player-show-dot { background:var(--rp-gold); }
.republic-player-equalizer { position:absolute; left:0; right:0; bottom:0; display:flex; align-items:flex-end; justify-content:center; gap:3px; height:24px; padding-bottom:5px; background:linear-gradient(transparent,#051b13de); opacity:0; }
.republic-player-equalizer i { display:block; width:3px; height:8px; border-radius:1px; background:var(--rp-gold); }
.republic-player.is-playing .republic-player-equalizer { opacity:1; }
html.republic-motion-enabled .republic-player.is-playing:not(.is-buffering) .republic-player-equalizer i { animation:republic-player-bars 1.1s ease-in-out infinite alternate; }
html.republic-motion-enabled .republic-player.is-playing:not(.is-buffering) .republic-player-equalizer i:nth-child(2) { animation-delay:-.4s; }
html.republic-motion-enabled .republic-player.is-playing:not(.is-buffering) .republic-player-equalizer i:nth-child(3) { animation-delay:-.7s; }
@keyframes republic-player-bars { to { height:15px; } }

@media (max-width:1100px) {
  body.republic-player-ready { --republic-player-space:224px; }
  body.republic-player-ready.republic-player-error { --republic-player-space:314px; }
  body.republic-player-ready.republic-player-collapsed { --republic-player-space:86px; }
  .republic-player-dock { grid-template-columns:minmax(0,1fr) auto; gap:12px 25px; padding:17px 20px; }
  .republic-player-identity { grid-column:1; grid-row:1; }
  .republic-player-tools { grid-column:2; grid-row:1; }
  .republic-player-transport { grid-column:1/-1; grid-row:2; width:min(550px,100%); justify-self:center; }
  .republic-player-art { width:48px; height:48px; flex-basis:48px; }
  .republic-player-track>[data-player-title] { font-size:13px; }
}
@media (max-width:680px) {
  body.republic-player-ready { --republic-player-space:252px; }
  body.republic-player-ready.republic-player-error { --republic-player-space:350px; }
  body.republic-player-ready.republic-player-collapsed { --republic-player-space:86px; }
  .republic-player-dock { left:10px; right:10px; bottom:calc(10px + env(safe-area-inset-bottom,0px)); grid-template-columns:minmax(0,1fr); gap:9px; padding:12px 13px 10px; border-radius:14px; }
  .republic-player-identity { grid-column:1; grid-row:1; gap:12px; }
  .republic-player-art { width:44px; height:44px; flex-basis:44px; }
  .republic-player-track { min-height:44px; gap:4px; }
  .republic-player-track>[data-player-title] { font-size:13px; }
  .republic-player-track>[data-player-artist] { font-size:10px; }
  .republic-player-transport { grid-column:1; grid-row:2; gap:4px; width:100%; }
  .republic-player-buttons { gap:8px; }
  .republic-player-play { width:48px; height:48px; min-height:48px; flex-basis:48px; padding:12px; }
  .republic-player-progress { gap:9px; }
  .republic-player input[type=range] { height:44px; }
  .republic-player-progress>span { font-size:10px; min-width:32px; }
  .republic-player-tools { grid-column:1; grid-row:3; justify-content:space-between; gap:3px; }
  .republic-player input.republic-player-volume { flex:1; max-width:105px; width:auto; margin-right:5px; }
  .republic-player-info { display:none; }
  .republic-player-panel { right:10px; width:calc(100% - 20px); padding:20px; border-radius:12px; max-height:calc(100dvh - var(--republic-player-space,252px) - 20px - env(safe-area-inset-bottom,0px)); }
  .republic-player-panel-heading h2,.republic-player-details h2 { font-size:24px; }
  .republic-player-queue-list button { gap:9px; padding:10px 7px; }
  .republic-player-queue-number { flex-basis:14px; font-size:9px; }
  .republic-player-detail-cover { max-height:220px; }
  .republic-player-show { right:12px; bottom:calc(14px + env(safe-area-inset-bottom,0px)); max-width:calc(100% - 24px); }
  .republic-player-native { margin:20px 12px; padding:22px; }
  .republic-player-native h2 { font-size:24px; }
  .republic-player.has-error .republic-player-status { grid-column:1; margin-top:4px; font-size:11px; }
  .republic-player-fallback-link { grid-column:1; font-size:12px; }
}
@media (max-width:1000px) {
  body.republic-player-ready:not(.republic-player-collapsed) .site-header nav { max-height:calc(100dvh - 82px - var(--republic-player-space,208px) - env(safe-area-inset-bottom,0px)); }
}
@media (prefers-reduced-motion:reduce) {
  .republic-player *, .republic-player *::before, .republic-player *::after { animation:none !important; transition:none !important; }
}
html.republic-motion-paused .republic-player *, html.republic-motion-paused .republic-player *::before, html.republic-motion-paused .republic-player *::after { animation:none !important; }
