/* Structure et composants existants — administration conservée. */
:root{color-scheme:dark;--bg:#10110f;--panel:#191a17;--line:#343630;--text:#e9e9df;--muted:#a0a296;--red:#ff4c36}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif}.shell{max-width:1120px;margin:auto;padding:0 42px}a{color:inherit;text-decoration:none}header{height:112px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.brand{display:flex;gap:15px;align-items:center;font-weight:900;letter-spacing:2px;font-size:19px}.brand small{display:block;font:9px monospace;letter-spacing:1.5px;color:var(--muted);margin-top:7px}.brand-icon{font-size:27px;letter-spacing:-4px;border:1px solid #646659;padding:11px 15px 11px 11px;transform:skew(-6deg)}.brand-icon span{color:var(--red)}.signal,.eyebrow,.section-heading,.episode-meta,.episode-bottom,footer,.admin summary,.hint{font-family:monospace}.signal{font-size:10px;letter-spacing:1px;display:flex;align-items:center;gap:9px}.signal i{width:6px;height:6px;background:var(--red);border-radius:50%;box-shadow:0 0 12px #ff4c3655}.hero{padding:52px 0 40px;position:relative}.eyebrow{display:flex;gap:24px;font-size:10px;letter-spacing:2px;color:var(--muted)}.eyebrow span:first-child{color:var(--red)}h1{font-size:clamp(42px,6.8vw,82px);line-height:1.03;letter-spacing:-4px;font-weight:950;margin:29px 0 20px}h1>span{color:#8d9083}.intro{display:flex;justify-content:space-between;align-items:center}.intro p{color:var(--muted);font-size:15px;line-height:1.7}.reticle{position:relative;border:1px solid #43483d;border-radius:50%;width:86px;height:86px;margin-right:22px;color:var(--red);display:grid;place-items:center;background:repeating-linear-gradient(0deg,transparent,transparent 7px,#24261e 8px)}.reticle:before,.reticle:after{content:'';position:absolute;background:#646c55}.reticle:before{height:1px;width:110px}.reticle:after{height:110px;width:1px}.reticle b{font-size:35px;z-index:1;background:var(--bg);line-height:27px;font-weight:300}.reticle small{position:absolute;bottom:-24px;color:var(--muted);font:9px monospace;letter-spacing:2px}.section-heading{border-top:1px solid var(--line);padding:23px 0;display:flex;justify-content:space-between;align-items:center;letter-spacing:1px}.section-heading h2{font-size:12px;margin:0}.section-heading>span{color:var(--muted);font-size:10px}.episode{display:grid;grid-template-columns:210px 1fr;gap:29px;padding:26px 0;border-bottom:1px solid var(--line);scroll-margin-top:24px}.cover{position:relative;align-self:start;aspect-ratio:1;background:#262920;border:1px solid var(--line)}.cover img{width:100%;height:100%;object-fit:cover;display:block}.cover>span{position:absolute;bottom:10px;left:10px;background:#10110fe8;padding:7px 9px;font:10px monospace;letter-spacing:1px}.episode-meta{display:flex;justify-content:space-between;gap:14px;font-size:9px;letter-spacing:1px;color:var(--muted);margin:3px 0 15px}.episode-meta>span{color:var(--red)}.episode h3{font-size:25px;letter-spacing:-.5px;margin:0 0 12px;overflow-wrap:anywhere}.description{font-size:14px;color:#b9bbaf;line-height:1.7;margin:0 0 20px;white-space:pre-wrap;overflow-wrap:anywhere}audio{display:block;width:100%;height:42px}.episode-bottom{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-top:14px;font-size:9px;color:var(--muted)}button{font:700 11px monospace;letter-spacing:.7px;padding:15px 19px;background:var(--red);color:#10110f;border:0;cursor:pointer;min-height:44px}button:hover{filter:brightness(1.15)}button:disabled{opacity:.6;cursor:wait}.share,.footer-link{background:transparent;color:var(--text);padding:4px 0;font-size:9px;min-height:32px}.empty{text-align:center;padding:54px 15px 64px;background:linear-gradient(130deg,#1c1f17,#141511);border:1px solid var(--line);margin:0 0 30px}.empty-icon{font-size:43px;color:var(--red)}.empty h3{font-size:24px;letter-spacing:-.6px}.empty p{color:var(--muted);font-size:14px}footer{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:32px 0 36px;font-size:8px;letter-spacing:1px;color:var(--muted)}footer b{font-weight:400;padding-left:8px}footer form{margin:0}.admin{margin:25px 0 32px;border:1px solid var(--line);background:var(--panel)}.admin summary{cursor:pointer;display:flex;justify-content:space-between;gap:15px;padding:22px;font-size:11px}.admin summary span:last-child{color:var(--muted);font-size:9px}.admin form{padding:0 24px 24px}.admin label{display:block;font-size:13px;margin:18px 0;color:#d1d4c5}.admin input:not([type=hidden]),textarea{display:block;width:100%;margin-top:9px;background:#10110f;border:1px solid #45483d;color:var(--text);padding:13px;font:14px Arial;line-height:1.5;border-radius:0}textarea{resize:vertical}.file-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.file small{display:block;color:var(--muted);margin-top:7px;font-size:11px}.file input{font-size:11px!important}.hint{font-size:10px;color:var(--muted)}.login{max-width:540px;padding-top:22px}.login h2,.login>p{margin:0 24px 18px}.login>p{font-size:14px;line-height:1.6;color:var(--muted)}.error,.notice{padding:18px;border:1px solid var(--red);font-size:14px;line-height:1.6}.notice{border-color:#788365}.upload-status{font:12px monospace;color:var(--muted)}:focus-visible{outline:2px solid var(--red);outline-offset:4px}@media(max-width:650px){.shell{padding:0 20px}header{height:90px}.brand{font-size:15px}.brand small{font-size:7px}.signal{font-size:8px}.brand-icon{font-size:22px}.hero{padding-top:36px}h1{letter-spacing:-2px;font-size:clamp(35px,9vw,58px)}.eyebrow{font-size:8px;gap:15px}.reticle{width:55px;height:55px;margin-right:12px}.reticle:before{width:75px}.reticle:after{height:75px}.episode{grid-template-columns:80px 1fr;gap:16px}.cover>span{font-size:8px;left:4px;bottom:4px;padding:4px}.episode h3{font-size:21px}.episode-meta{flex-wrap:wrap;font-size:8px;gap:7px}.episode-body{min-width:0}.description{font-size:13px}.episode-bottom{flex-wrap:wrap}.file-grid{grid-template-columns:1fr;gap:0}footer{flex-wrap:wrap;line-height:1.7}footer>span:nth-child(2){display:none}.admin summary{padding:18px 15px}.admin form{padding:0 15px 20px}}

/* Longue réplique du bandeau, lisible sur mobile. */
h1>span{font-size:.78em}
@media(max-width:650px){.brand{font-size:13px;letter-spacing:1px}.brand small{letter-spacing:.7px}.signal{letter-spacing:0}}

/* Lecteur, playlists et outils d’administration. */
.podcast-modal-open{overflow:hidden}
/* Minuteur nuit : anneau du temps restant, sans modifier la lecture. */
.podcast-dock .dock-sleep{position:relative;display:flex;flex-direction:row;align-items:center;gap:10px;flex-wrap:nowrap;min-width:130px}
.dock-sleep select[hidden],.sleep-options[hidden]{display:none}
.podcast-dock .sleep-moon{position:relative;display:grid;place-items:center;flex-shrink:0;width:58px;height:58px;min-height:58px;padding:0;border:0;border-radius:50%;background:#24271f;color:#c9ceba;cursor:pointer;transition:background .3s,box-shadow .4s,transform .25s}
.sleep-moon:hover{transform:translateY(-2px);background:#33382c}.sleep-moon:active{transform:scale(.94)}
.sleep-moon svg{display:block;width:56px;height:56px;overflow:visible}.sleep-ring-track{fill:none;stroke:#444b39;stroke-width:2}.sleep-ring{fill:none;stroke:#ff8167;stroke-width:2.6;stroke-linecap:round;transition:stroke-dashoffset 1s linear;filter:drop-shadow(0 0 3px #ff705c66)}
.sleep-crescent{fill:currentColor;transition:fill .4s,transform .4s;transform-origin:28px 28px}.sleep-star{fill:#ff8167;opacity:.45;transition:opacity .4s}
.sleep-active .sleep-moon{background:#332820;color:#ffe1bd;animation:moon-breathe 4s ease-in-out infinite}.sleep-active .sleep-star{opacity:1}.sleep-moon:hover .sleep-crescent{transform:rotate(-12deg)}
.sleep-text{display:flex;flex-direction:column;gap:6px;min-width:0}.sleep-caption{font:8px monospace;letter-spacing:1.5px;color:#aaa997;white-space:nowrap}.dock-sleep .sleep-countdown{font:12px monospace;letter-spacing:.4px;min-height:15px;color:#d3d5c4;white-space:nowrap}.sleep-active .sleep-countdown{color:#ffd4b3}
.sleep-options{position:absolute;right:0;bottom:calc(100% + 18px);z-index:2;width:260px;max-width:calc(100vw - 36px);padding:22px;background:linear-gradient(145deg,#2a2c24,#191b17);border:1px solid #64624e;border-radius:18px;box-shadow:0 18px 60px #0009;animation:sleep-reveal .22s cubic-bezier(.2,.8,.2,1);transform-origin:bottom right;color:#e9e9df}
.sleep-options>strong{display:block;font:700 18px Arial;letter-spacing:-.4px}.sleep-options>p{font:12px/1.6 Arial;color:#b5b7a6;margin:8px 0 18px}.sleep-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sleep-choices button{border:1px solid #454b3c;border-radius:10px;background:#30342a;color:#dce1cd;font:12px monospace;letter-spacing:0;padding:13px 8px;transition:transform .2s,background .2s,border-color .2s}
.sleep-choices button:hover{transform:translateY(-2px);border-color:#c09b75;background:#3b3f31}.sleep-choices button:active{transform:scale(.95)}.sleep-choices button[aria-pressed=true]{background:#ff8167;border-color:#ff8167;color:#221b15}
.sleep-options .sleep-cancel{display:block;width:100%;margin-top:12px;padding:10px 0;background:transparent;color:#b5b7a6;font:11px Arial;letter-spacing:0;border:0}.sleep-options .sleep-cancel:hover{color:#ffe1bd}
@keyframes moon-breathe{0%,100%{box-shadow:0 0 0 0 #ff816700,0 0 18px #ff81670a}50%{box-shadow:0 0 0 5px #ff816708,0 0 24px #ff816720}}
@keyframes sleep-reveal{from{opacity:0;transform:translateY(9px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:650px){.podcast-dock .dock-sleep{justify-content:center;gap:12px}.sleep-options{right:50%;transform:translateX(50%);transform-origin:bottom center;animation:sleep-reveal-mobile .22s ease-out}.podcast-dock .sleep-moon{width:50px;height:50px;min-height:50px}.sleep-moon svg{width:50px;height:50px}.sleep-text{gap:4px}}
@keyframes sleep-reveal-mobile{from{opacity:0;transform:translate(50%,9px) scale(.96)}to{opacity:1;transform:translate(50%,0) scale(1)}}
@media(prefers-reduced-motion:reduce){.sleep-active .sleep-moon,.sleep-options{animation:none}.sleep-moon,.sleep-crescent,.sleep-star,.sleep-ring,.sleep-choices button{transition:none}}
.dock-sleep{display:flex;flex-direction:column;gap:5px;min-width:120px;grid-column:1/-1;align-items:flex-start}
.dock-sleep label{font:9px monospace;letter-spacing:1px;color:#ff755f}
.dock-sleep select{background:#24271f;color:#e9e9df;border:1px solid #535a47;border-radius:4px;padding:7px 9px;min-height:36px;font:12px Arial}
.sleep-countdown{font:10px monospace;color:#bfc5b2;min-height:12px;font-variant-numeric:tabular-nums}
@media(min-width:651px){.podcast-dock .dock-inner{grid-template-columns:44px minmax(90px,200px) 48px minmax(130px,1fr) 130px;gap:14px}.podcast-dock .dock-sleep{grid-column:5;grid-row:1}.podcast-dock .dock-cover{width:44px;height:44px}}
@media(max-width:650px){.podcast-dock .dock-sleep{flex-direction:row;align-items:center;gap:10px;flex-wrap:wrap}.dock-sleep select{min-height:36px}.podcast-dock-visible{padding-bottom:210px!important}.podcast-dock-visible .podcast-dialog{max-height:calc(100dvh - 245px)!important;margin-bottom:215px!important}}
.storage-content{padding:0 24px 24px}.storage-intro{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 0 24px}
.storage-kicker{color:#ff4c36;font:10px monospace;letter-spacing:2px}.storage-intro h2{font-size:36px;letter-spacing:-1px;margin:10px 0}.storage-intro p{font-size:13px;color:#a0a296;line-height:1.6}.storage-count{font:11px monospace;color:#a0a296;white-space:nowrap}
.storage-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.storage-cards>div{padding:22px 18px;background:#10110f;border:1px solid #3b4034;transition:border-color .2s,transform .2s}
.storage-cards>div:hover{border-color:#7c876c;transform:translateY(-2px)}.storage-cards span,.storage-cards small{display:block;color:#a0a296;font-size:11px;line-height:1.5}.storage-cards strong{display:block;font:700 30px/1.4 monospace;color:#e9e9df;margin:10px 0;font-variant-numeric:tabular-nums}.storage-cards .storage-savings{border-color:#ff4c36}.storage-savings strong{color:#ff755f}
.storage-breakdown{margin:24px 0}.storage-breakdown>div{display:grid;grid-template-columns:180px 1fr 100px;align-items:center;gap:16px;margin:12px 0;font:11px monospace;color:#bfc5b2}.storage-breakdown progress{width:100%;height:7px;accent-color:#ff4c36}.storage-breakdown b{text-align:right;font-weight:400}
.admin .cleanup-form{padding:0}.cleanup-toolbar{display:flex;align-items:end;gap:12px;flex-wrap:wrap;padding:18px 0;border-top:1px solid #343630}.cleanup-toolbar label{flex:1;min-width:180px;margin:0}.cleanup-toolbar select{display:block;width:100%;background:#10110f;border:1px solid #45483d;color:#e9e9df;margin-top:9px;padding:12px;font-size:13px}
.cleanup-list{max-height:380px;overflow:auto;border-top:1px solid #343630;margin:16px 0}.admin .cleanup-row{display:flex;align-items:center;gap:14px;padding:16px 12px;border-bottom:1px solid #343630;margin:0;transition:background .2s;cursor:pointer}.cleanup-row:has(input:checked){background:#30221d}.cleanup-row>span{flex:1;min-width:0;overflow-wrap:anywhere}.cleanup-row small{display:block;color:#a0a296;font-size:11px;margin-top:7px}.cleanup-row>b{font:11px monospace;white-space:nowrap}
.cleanup-review{padding:22px;background:#10110f;border:1px solid #494338}.cleanup-review h3{margin-top:0}.cleanup-review>p{font-size:12px;line-height:1.7;overflow-wrap:anywhere}.admin .cleanup-confirm{display:flex;align-items:start;gap:12px;font-size:13px;line-height:1.6}.storage-panel[open] .storage-content{animation:storage-enter .25s ease-out}
@keyframes storage-enter{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:650px){.storage-content{padding:0 15px 20px}.storage-cards{grid-template-columns:1fr}.storage-cards>div{padding:16px}.storage-cards strong{font-size:28px}.storage-intro h2{font-size:30px}.storage-breakdown>div{grid-template-columns:1fr 90px;gap:8px}.storage-breakdown progress{grid-column:1/-1;grid-row:auto}.storage-breakdown b{grid-column:2;grid-row:auto}.storage-count{display:none}}
@media(prefers-reduced-motion:reduce){.storage-panel[open] .storage-content{animation:none}.storage-cards>div,.cleanup-row{transition:none}}
@media(max-width:650px){.storage-breakdown>div{grid-template-areas:"label amount" "bar bar"}.storage-breakdown span{grid-area:label}.storage-breakdown progress{grid-area:bar}.storage-breakdown b{grid-area:amount}}
.episode-order-list{list-style:none;margin:20px 0;padding:0}
.episode-order-list li{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid #343630;background:#191a17}
.episode-order-list li>span{flex:1;min-width:0;overflow-wrap:anywhere;font-size:14px}
.episode-order-list small{display:block;margin-top:6px;font:10px monospace;color:#a0a296}
.episode-order-list button{min-width:44px;padding:8px;background:#292d24;color:#e9e9df;font-size:18px}
.episode-order-list .order-handle{cursor:grab;touch-action:none;font-size:26px;color:#ff4c36}
.episode-order-list .is-dragging{opacity:.6;outline:1px solid #ff4c36}
.playlist-cover-manager{padding:0 24px 24px}
.admin .playlist-cover-form{padding:22px 0;border-top:1px solid #343630}
.playlist-cover-heading{display:flex;align-items:center;gap:16px;overflow-wrap:anywhere}
.playlist-cover-heading img{width:86px;height:86px;object-fit:cover;flex-shrink:0}
@media(max-width:650px){.playlist-cover-manager{padding:0 15px 20px}}
.episode[hidden]{display:none}
.playlist-section{margin:8px 0 36px}.playlist-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.playlist-card{display:block;background:#191a17;border:1px solid #343630;transition:border-color .15s}
.playlist-card:hover{border-color:#ff4c36}.playlist-card>img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover}
.playlist-card>div{padding:18px}.playlist-card small,.playlist-card span{font:10px monospace;letter-spacing:1px;color:#a0a296}.playlist-card span{color:#ff4c36}
.playlist-card h3{font-size:22px;margin:12px 0 18px;overflow-wrap:anywhere}.playlist-back{display:inline-block;margin:0 0 22px;font:12px monospace;color:#ff4c36}
.manage-list{padding:0 24px 24px}.manage-row{padding:18px 0;border-top:1px solid #343630;display:flex;align-items:start;gap:16px;flex-wrap:wrap}
.manage-row>div{flex:1;min-width:180px}.manage-row strong{display:block;overflow-wrap:anywhere}.manage-row small{display:block;margin-top:8px;color:#a0a296}
.manage-edit,.admin-cancel{display:inline-block;font:11px monospace;color:#ff4c36;padding:14px 0;min-height:44px}.admin-cancel{margin-left:20px}
.delete-details{max-width:100%;font:11px monospace}.admin .delete-details>summary{padding:14px 0;font-size:11px;color:#ff9f91;cursor:pointer}
.admin .delete-form{padding:0;max-width:340px}.admin .delete-confirm{display:flex;align-items:start;gap:10px;line-height:1.5}
.admin input[type=checkbox]{width:auto;flex-shrink:0;margin:3px 0 0;accent-color:#ff4c36}.delete-form button{font-size:10px}
.edit-current{display:flex;align-items:center;gap:20px;font-size:13px}.edit-current img{width:70px;height:70px;object-fit:cover}
.admin input[list]{width:100%}.section-heading h2{overflow-wrap:anywhere;max-width:75%}
@media(max-width:650px){.playlist-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.playlist-card>div{padding:12px}.playlist-card h3{font-size:18px}.playlist-card small{font-size:8px}.manage-list{padding:0 15px 20px}.manage-row{gap:8px 16px}}
@media(max-width:360px){.playlist-grid{grid-template-columns:1fr}}
.podcast-listened{display:inline-block;margin:0 0 12px;padding:5px 9px;border:1px solid #61734b;background:#26301f;color:#c5dda6;font:11px/1.4 monospace;border-radius:3px}
.podcast-listened[hidden]{display:none}
.podcast-dock-visible{padding-bottom:130px}
.podcast-dock-visible .podcast-dialog{max-height:calc(100dvh - 180px);margin-top:24px;margin-bottom:150px}
.podcast-dock[hidden],.dock-error[hidden]{display:none}
.podcast-dock{position:fixed;bottom:0;left:0;right:0;z-index:1000;background:#171914;border-top:1px solid #ff4c36;box-shadow:0 -12px 40px #0007;padding:16px 24px calc(16px + env(safe-area-inset-bottom));color:#e9e9df;font-family:Arial,Helvetica,sans-serif}
.dock-inner{max-width:1100px;margin:auto;display:grid;grid-template-columns:52px minmax(100px,240px) 48px minmax(160px,1fr);align-items:center;gap:18px}
.dock-cover{width:52px;height:52px;object-fit:cover;border:1px solid #45483d}
.dock-info{min-width:0}.dock-info>span{display:block;color:#ff4c36;font:9px monospace;letter-spacing:2px;margin-bottom:5px}
.dock-title{display:block;background:transparent;color:#e9e9df;font:700 13px Arial;text-align:left;letter-spacing:0;border:0;padding:0;min-height:28px;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;cursor:pointer}
.dock-toggle{display:grid;place-items:center;width:48px;height:48px;padding:0;border:0;border-radius:50%;background:#ff4c36;color:#10110f;font-size:18px;cursor:pointer}
.dock-timeline{display:flex;gap:12px;align-items:center;min-width:0;font:11px monospace;color:#bbc0ad;font-variant-numeric:tabular-nums}
.dock-timeline>span{min-width:36px;text-align:center}
.dock-seek{flex:1;min-width:30px;width:100%;height:32px;margin:0;accent-color:#ff4c36;cursor:pointer}
.dock-error{grid-column:1/-1;font-size:12px;margin:0;color:#ff9f91}
@media(max-width:650px){.podcast-dock{padding:12px 18px calc(12px + env(safe-area-inset-bottom))}.dock-inner{grid-template-columns:42px 1fr 44px;gap:8px 12px}.dock-cover{width:42px;height:42px}.dock-toggle{width:44px;height:44px}.dock-timeline{grid-column:1/-1;gap:8px}.podcast-dock-visible{padding-bottom:155px}.podcast-dock-visible .podcast-dialog{max-height:calc(100dvh - 190px);margin-top:14px;margin-bottom:160px}}
.brand .site-icon{display:block;width:48px;height:48px;object-fit:contain;flex-shrink:0}
.podcast-progress[hidden]{display:none}
.podcast-dialog{box-sizing:border-box;width:min(640px,calc(100% - 28px));max-height:90vh;max-height:90dvh;overflow:auto;margin:auto;padding:28px;border:1px solid #505346;background:#191a17;color:#e9e9df;box-shadow:0 24px 100px #000b;color-scheme:dark}
.podcast-dialog::backdrop{background:#000d}
.podcast-dialog-cover{display:block;width:150px;height:150px;object-fit:cover;margin:16px 0 24px;border:1px solid #45483d}
.podcast-dialog h2{font-size:28px;line-height:1.2;overflow-wrap:anywhere;margin:0 0 18px}
.podcast-dialog .description{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7}
.podcast-dialog audio{width:100%}
.podcast-close{display:block;margin-left:auto}
.podcast-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}
.podcast-secondary{background:transparent;color:#e9e9df;border:1px solid #505346;font:11px monospace;padding:12px;min-height:44px;cursor:pointer}
.podcast-progress{font:11px/1.6 monospace;color:#a0a296;margin:12px 0}
.podcast-title-button{padding:0;border:0;background:transparent;color:inherit;font:inherit;letter-spacing:inherit;text-align:left;cursor:pointer;min-height:44px;overflow-wrap:anywhere;max-width:100%}
.podcast-title-button:hover{color:#ff4c36}
@media(max-width:650px){.podcast-dialog{padding:20px}.podcast-dialog h2{font-size:23px}.podcast-dialog-cover{width:110px;height:110px}}
