/* Editorial v3: interaction and material only. Existing layout/type stays in v1/v2. */
html:not(.site-enhanced) .editorial-v3 .reveal-card { opacity: 1; translate: none; }
#main-content.transition-page { opacity: 1; transform: translateY(0); filter: none; }
/* blur(0) would still create a Backdrop Root, cutting Soft Liquid off from
   the forest behind main. The resting state must be none, not zero blur. */
html.is-changing #main-content.transition-page {
    transition: opacity 180ms cubic-bezier(.4,0,.2,1), transform 220ms cubic-bezier(.2,.8,.2,1), filter 180ms ease;
}
html.is-rendering #main-content.transition-page { transition-duration: 250ms, 250ms, 220ms; }
html.is-animating #main-content.transition-page { opacity: 0; transform: translateY(7px); filter: blur(1.5px); }

/* Strong = existing lens. Soft = same renderer at .40, quieter tint/edges. */
.editorial-v3 [data-liquid-strength="soft"].liquid-surface {
    background: rgba(6,20,30,.42) !important;
    border-color: rgba(255,255,255,.10);
    box-shadow: 0 5px 18px rgba(0,0,0,.14), 0 1px 0 inset rgba(255,255,255,.035);
}
.editorial-v3 .micro-lift,
.editorial-v3 .micro-pop,
.editorial-v3 .spring-button,
.editorial-v3 .icon-action,
.editorial-v3 .dock-top,
.editorial-v3 .nav-link {
    --hover-lift: 0px;
    --hover-scale: 1;
    transform: translate3d(var(--magnet-x,0px),calc(var(--magnet-y,0px) + var(--hover-lift,0px)),0) scale(var(--hover-scale,1));
    transition: transform 260ms cubic-bezier(.2,.85,.25,1.12), border-color 200ms ease, background 200ms ease, color 180ms ease;
}
.editorial-v3 :is(.micro-lift,.micro-pop,.spring-button,.icon-action,.dock-top,.nav-link):hover,
.editorial-v3 .home-map a.home-map-node.micro-lift {
    transform: translate3d(var(--magnet-x,0px),calc(var(--magnet-y,0px) + var(--hover-lift,0px)),0) scale(var(--hover-scale,1));
}
.editorial-v3 .software-download-button {
    --hover-lift: 0px; --hover-scale: 1;
    transform: translateY(var(--hover-lift)) scale(var(--hover-scale));
    transition: transform 260ms cubic-bezier(.2,.85,.25,1.12), background 180ms ease;
}
.editorial-v3 .micro-lift:hover,
.editorial-v3 .spring-button:hover,
.editorial-v3 .icon-action:hover { --hover-lift: 0px; --hover-scale: 1; }
.editorial-v3 .resource-card:hover .resource-icon { transform: none; }
.editorial-v3 .topbar.liquid-surface { --hover-scale: 1; --hover-lift: 0px; transform: none; }
@media (hover: hover) and (pointer: fine) {
    .editorial-v3 .micro-lift:hover { --hover-lift: -2px; --hover-scale: 1.014; border-color: rgba(255,255,255,.18); }
    .editorial-v3 .micro-pop:not(:disabled):hover,
    .editorial-v3 .spring-button:hover,
    .editorial-v3 .icon-action:hover { --hover-lift: -1px; --hover-scale: 1.035; }
    .editorial-v3 .dock-top:hover { --hover-lift: -1px; --hover-scale: 1.03; }
    .editorial-v3 .nav-link:hover { --hover-scale: 1.02; }
    .editorial-v3 .resource-card:hover .resource-icon { transform: scale(1.025); }
    .editorial-v3 .player-play:not(:disabled):hover { --hover-scale: 1.035; }
    .editorial-v3 .software-download-button:hover { --hover-scale: 1.035; --hover-lift: -1px; }
}
.editorial-v3 .micro-lift:active,
.editorial-v3 .micro-pop:not(:disabled):active,
.editorial-v3 .spring-button:active,
.editorial-v3 .icon-action:active,
.editorial-v3 .dock-top:active,
.editorial-v3 [data-liquid-pressable].is-liquid-pressed {
    --hover-scale: .988;
    --hover-lift: -1px;
    transform: translate3d(var(--magnet-x,0px),calc(var(--magnet-y,0px) + var(--hover-lift,0px)),0) scale(var(--hover-scale,1));
    transition-duration: 110ms;
}
.editorial-v3 .player-play:not(:disabled):active,
.editorial-v3 .player-play.is-liquid-pressed { --hover-scale: .96; }
.editorial-v3 .software-download-button:active { --hover-scale: .988; --hover-lift: -1px; transition-duration: 110ms; }
.editorial-v3 :focus-visible { outline: 2px solid var(--cyan); outline-offset: 4px; }
/* Clear the obsolete fixed-dock stacking level without changing its design. */
body.editorial-v3 .site-dock { z-index: auto; }

/* One persisted root and one audio. Home slot reserves its original place,
   while the live player is outside the animated main to avoid fixed containing
   blocks and inherited opacity/filter during content transitions. */
:root {
    --player-footer-lift: 0px;
    --player-footer-gap: 16px;
    --player-shadow-clearance: 24px;
}
.editorial-v3 .player-home-slot { width: min(100%, 380px); min-height: 190px; }
.editorial-v3 .global-music-player {
    --player-shadow-clearance: 16px;
    --vinyl-size: 92px;
    --vinyl-left: -23px;
    --vinyl-bottom: 88px;
    --vinyl-hover-scale: 1.035;
    position: fixed;
    left: var(--vinyl-left);
    bottom: calc(var(--vinyl-bottom) + var(--player-footer-lift, 0px));
    width: var(--vinyl-size);
    height: var(--vinyl-size);
    padding: 0;
    z-index: 90;
    border-radius: 20px;
    color: var(--ink);
    transform: none;
    text-shadow: none;
    opacity: 1;
    visibility: visible;
    transition: opacity 280ms cubic-bezier(.22,1,.36,1), visibility 0s;
}
/* Hide only UI, never the persisted audio. Hide immediately; reveal fades. */
body.intro-running .global-music-player,
html.intro-enabled body:has(#intro-overlay) .global-music-player {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: none;
}
.editorial-v3 .player-full-ui.liquid-surface {
    width: 100%;
    padding: 18px;
    border-radius: 20px;
    transform: none;
    background: rgba(8,30,40,.42) !important;
    border-color: rgba(210,245,248,.15);
    box-shadow: 0 14px 34px rgba(0,8,18,.16), inset 0 1px 0 rgba(230,255,255,.07);
    backdrop-filter: blur(16px) saturate(1.12);
    -webkit-backdrop-filter: blur(16px) saturate(1.12);
}
.editorial-v3 .player-full-ui.liquid-surface[data-liquid-renderer="svg"] {
    background: linear-gradient(135deg, rgba(137,220,226,.10), rgba(10,35,43,.16) 55%, rgba(6,24,34,.20)) !important;
}
.editorial-v3:not([data-current-page="home"]) .dock-top {
    bottom: calc(var(--player-height, 76px) + var(--player-footer-lift, 0px) + 28px);
}
.editorial-v3 .global-music-player.is-home-mode,
.editorial-v3[data-current-page="home"] .global-music-player:not([data-player-ready]) {
    position: absolute;
    left: var(--player-home-left, 0px);
    top: var(--player-home-top, 0px);
    bottom: auto;
    width: var(--player-home-width, 380px);
    max-width: none;
    height: auto;
}
.player-full-ui { position: absolute; visibility: hidden; opacity: 0; pointer-events: none; }
.player-vinyl-ui { visibility: visible; opacity: 1; }
.is-home-mode .player-full-ui,
body[data-current-page="home"] .global-music-player:not([data-player-ready]) .player-full-ui {
    position: relative; visibility: visible; opacity: 1; pointer-events: auto;
}
.is-home-mode .player-vinyl-ui,
body[data-current-page="home"] .global-music-player:not([data-player-ready]) .player-vinyl-ui {
    position: absolute; visibility: hidden; opacity: 0; pointer-events: none;
}
/* The disc remains in the DOM when hidden: paused animation keeps its angle. */
.editorial-v3 .player-vinyl-ui {
    display: block; width: var(--vinyl-size); height: var(--vinyl-size);
    padding: 0; border: 0; background: transparent; border-radius: 50%;
    color: #e7f5f5; cursor: pointer;
    transition: transform 280ms cubic-bezier(.22,1,.36,1);
}
.player-vinyl-disc {
    display: block; position: relative; width: 100%; height: 100%; border-radius: 50%;
    border: 1px solid rgba(255,255,255,.10);
    background: repeating-radial-gradient(circle at center, transparent 0 2px, rgba(255,255,255,.035) 2px 2.6px, transparent 2.6px 4px),
        radial-gradient(circle at 32% 25%, #202427, #111416 50%, #080a0b 82%, #0b0e10);
    box-shadow: 0 12px 30px rgba(0,0,0,.28);
    animation: player-vinyl-spin 9s linear infinite;
    animation-play-state: paused;
}
.is-vinyl-mode.is-playing .player-vinyl-disc { animation-play-state: running; }
.player-vinyl-label {
    position: absolute; left: 30%; top: 30%; width: 40%; height: 40%;
    border-radius: 50%; object-fit: cover;
}
.player-vinyl-hole {
    position: absolute; left: calc(50% - 2.5px); top: calc(50% - 2.5px);
    width: 5px; height: 5px; background: #101416; border-radius: 50%;
}
.player-vinyl-state {
    position: absolute; left: calc(50% - 16px); top: calc(50% - 16px);
    display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%;
    border: 1px solid rgba(255,255,255,.14); background: rgba(4,15,20,.42);
    backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); pointer-events: none;
}
.player-vinyl-state svg { width: 16px; height: 16px; }
.player-vinyl-state path { fill: currentColor; stroke: none; }
.is-playing .player-vinyl-state path { fill: none; stroke: currentColor; stroke-width: 3; }
@keyframes player-vinyl-spin { to { transform: rotate(360deg); } }
@media (hover: hover) and (pointer: fine) {
    .editorial-v3 .global-music-player.is-vinyl-mode { transition: left 320ms cubic-bezier(.22,1,.36,1), opacity 280ms cubic-bezier(.22,1,.36,1); }
    .editorial-v3 .global-music-player.is-vinyl-mode:has(.player-vinyl-ui:not(:disabled):hover) { left: -12px; }
    .editorial-v3 .player-vinyl-ui:not(:disabled):hover { transform: scale(var(--vinyl-hover-scale)); }
}
body.intro-running .global-music-player :is(.player-full-ui,.player-vinyl-ui),
html.intro-enabled body:has(#intro-overlay) .global-music-player :is(.player-full-ui,.player-vinyl-ui) { visibility: hidden !important; }
.player-head { display: grid; grid-template-columns: 48px minmax(0,1fr) 36px 20px; gap: 10px; align-items: center; }
.player-cover { display: block; width: 48px; height: 48px; border-radius: 12px; object-fit: cover; border: 1px solid rgba(255,255,255,.08); box-shadow: 0 6px 18px rgba(0,0,0,.20); }
.player-meta { min-width: 0; }
.player-meta h2 { margin: 0; font-family: var(--font-sans); font-size: 14px; line-height: 1.45; letter-spacing: .015em; font-weight: 600; }
.player-meta h2 { font-family: inherit; color: rgba(244,250,252,.96); }
.player-meta p { margin: 4px 0 0; color: rgba(210,225,230,.70); font-size: 11px; line-height: 1.5; }
.player-play {
    display: grid; place-items: center; padding: 0; cursor: pointer;
    color: #d9f6f8; border: 1px solid rgba(255,255,255,.16); background: rgba(195,238,243,.10);
}
.player-play { width: 36px; height: 36px; border-radius: 50%; }
.editorial-v3 .player-play { transition: transform 220ms cubic-bezier(.22,1,.36,1), background 220ms ease, border-color 220ms ease; }
.player-play svg { width: 18px; height: 18px; }
.player-play path { fill: currentColor; stroke: none; }
.player-play.is-playing path { fill: none; stroke: currentColor; stroke-width: 3; }
.global-music-player [hidden] { display: none; }
.global-music-player button:disabled { opacity: .45; cursor: not-allowed; }
.global-music-player .player-controls {
    display: grid;
    grid-template-rows: 1fr;
}
.player-controls-inner { min-height: 0; overflow: hidden; }
/* Preserve the original home controls' spacing. */
.player-controls-inner::before { content: ""; display: block; height: 9px; }
.player-full-ui .player-head { grid-template-columns: 64px minmax(0,1fr) 44px; gap: 12px; }
.player-full-ui .player-cover { width: 64px; height: 64px; border-radius: 14px; }
.player-full-ui .player-meta h2 { font-size: 18px; }
.player-full-ui .player-meta p { font-size: 12px; }
.player-full-ui .player-play { width: 44px; height: 44px; }
.player-timeline { display: grid; grid-template-columns: 32px minmax(0,1fr) 32px; gap: 8px; align-items: center; margin-top: 0; font-size: 11px; color: var(--ink-faint); font-variant-numeric: tabular-nums; }
.player-timeline > span:last-child { text-align: right; }
.player-volume { display: grid; grid-template-columns: 16px minmax(0,1fr) 32px; gap: 8px; align-items: center; margin-top: 4px; font-size: 11px; color: var(--ink-faint); }
.player-volume > span { text-align: right; }
.player-volume svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.6; }
.global-music-player input[type="range"] {
    display: block; width: 100%; min-width: 0; height: 26px; margin: 0; padding: 0;
    appearance: none; -webkit-appearance: none; background: transparent; cursor: pointer; touch-action: pan-y;
}
.global-music-player input[type="range"]::-webkit-slider-runnable-track {
    height: 3px; border-radius: 3px;
    background: linear-gradient(to right, #b5e7ec var(--range-progress,0%), rgba(255,255,255,.13) var(--range-progress,0%));
}
.global-music-player input[type="range"]::-webkit-slider-thumb {
    appearance: none; -webkit-appearance: none; width: 10px; height: 10px; margin-top: -3.5px;
    border: 0; border-radius: 50%; background: #d3f5ff;
}
.global-music-player input[type="range"]::-moz-range-track { height: 3px; border-radius: 3px; background: rgba(255,255,255,.13); }
.global-music-player input[type="range"]::-moz-range-progress { height: 3px; background: #b5e7ec; }
.global-music-player input[type="range"]::-moz-range-thumb { width: 10px; height: 10px; border: 0; border-radius: 50%; background: #d3f5ff; }
.player-error { font-size: 11px; color: #ffd2bf; margin: 8px 0 0; }
html:not(.site-enhanced) .editorial-v3[data-current-page="home"] .global-music-player {
    position: relative; left: auto; top: auto; width: min(100%,380px); margin: 0 auto; height: auto;
}
.editorial-v3:not([data-current-page="home"]) { padding-bottom: calc(var(--player-height, 92px) + 24px); }
/* Shared with the home actions; no second icon-button design. */
.editorial-v3 .social-icon-action { width: 46px; height: 46px; border-radius: 50%; }
.editorial-v3 .social-icon-action .profile-action-logo { width: 19px; height: 19px; }
.editorial-v3 .about-social-actions { display: flex; align-items: center; gap: 13px; margin-top: 28px; }
.editorial-v3 .section-heading.section-heading--solo {
    grid-template-columns: minmax(0,1fr); gap: 0; min-height: 128px; margin-bottom: 24px;
}
.editorial-v3 .articles-intro .section-heading--solo { margin-bottom: 0; }
@media (max-width: 820px) {
    html:not(.site-enhanced) .editorial-v3 .topbar { display: flex; flex-wrap: wrap; }
    html:not(.site-enhanced) .editorial-v3 .topbar > .nav-links {
        position: static; display: flex; flex-wrap: wrap; flex-basis: 100%;
        opacity: 1; visibility: visible; transform: none;
    }
    html:not(.site-enhanced) .editorial-v3 .menu-toggle { display: none; }
    .editorial-v3 .topbar > .nav-links.liquid-surface { position: absolute; overflow: hidden; transform: translateY(-6px); }
    .editorial-v3 .topbar > .nav-links.liquid-surface.is-open { transform: none; }
    .editorial-v3 .topbar > .nav-links.liquid-surface[data-liquid-strength="soft"] { background: rgba(6,20,30,.42) !important; }
    .editorial-v3 .global-music-player { --vinyl-size: 72px; --vinyl-left: -18px; --vinyl-bottom: max(72px, calc(env(safe-area-inset-bottom) + 58px)); }
    .editorial-v3:not([data-current-page="home"]) .dock-top { bottom: calc(var(--player-height, 76px) + var(--player-footer-lift, 0px) + 28px + env(safe-area-inset-bottom)); }
    .editorial-v3 .player-home-slot { width: min(100%, 380px); }
}
@media (max-width: 560px) {
    .editorial-v3 .section-heading.section-heading--solo { min-height: 100px; margin-bottom: 22px; }
    .editorial-v3 .articles-intro .section-heading--solo { margin-bottom: 0; }
}
@media (prefers-reduced-motion: reduce) {
    html.is-changing #main-content.transition-page { transition: none; }
    html.is-animating #main-content.transition-page { opacity: 1; transform: none; filter: none; }
    .editorial-v3 .micro-lift, .editorial-v3 .micro-pop, .editorial-v3 .spring-button,
    .editorial-v3 .icon-action, .editorial-v3 .dock-top, .editorial-v3 .nav-link,
    .editorial-v3 [data-liquid-pressable], .editorial-v3 .liquid-surface,
    .editorial-v3 .software-download-button, .editorial-v3 .home-map a.home-map-node.micro-lift {
        --hover-scale: 1 !important; --hover-lift: 0px !important;
        --magnet-x: 0px !important; --magnet-y: 0px !important;
        transform: none !important; transition: none !important;
    }
    .editorial-v3 .resource-card:hover .resource-icon { transform: none; }
    .editorial-v3 .global-music-player, .editorial-v3 .player-vinyl-ui { transition: none !important; }
    .player-vinyl-disc { animation-play-state: paused !important; }
}
