/* Five layouts based on the chosen Ameslay Media designs. */
html[data-theme="bleu"]{color-scheme:dark;--bg:#061b43;--panel:#071e46;--panel2:#092958;--line:#12477f;--text:#f1f7ff;--muted:#abc7e9;--accent:#178dff;--accent-strong:#0873ed;--accent-text:#fff;--active:#073871;--soft:#0c2b57;--title-font:system-ui,-apple-system,"Segoe UI",sans-serif;--still:url('./assets/bleu-djurdjura.png');--still-size:150.5% 162%;--still-position:7.5% 34.1%}
html[data-theme="olivier"]{color-scheme:dark;--bg:#11190e;--panel:#182113;--panel2:#1c2817;--line:#495039;--text:#f7eddb;--muted:#bfbaa7;--accent:#df9a68;--accent-strong:#c78352;--accent-text:#182014;--active:#333c29;--soft:#28321f;--title-font:Georgia,serif;--still:url('./assets/jardin-olivier.png');--still-size:129.9% 140%;--still-position:98.7% 26.8%}
html[data-theme="cinema"]{color-scheme:dark;--bg:#090909;--panel:#101010;--panel2:#151410;--line:#52432d;--text:#f7ecda;--muted:#c1b6a3;--accent:#e8b766;--accent-strong:#d49a48;--accent-text:#19130b;--active:#252016;--soft:#1c1913;--title-font:Georgia,serif;--still:url('./assets/cinema-noir-or.png');--still-size:142.8% 148.9%;--still-position:11.6% 32.7%}
html[data-theme="ivoire"]{color-scheme:light;--bg:#f6efe5;--panel:#f9f3ea;--panel2:#f3e4d6;--line:#e6d5c5;--text:#1c3653;--muted:#69788b;--accent:#c45c3b;--accent-strong:#b95032;--accent-text:#fff;--active:#f1dccc;--soft:#f3e6da;--title-font:Georgia,serif;--still:url('./assets/ivoire-terre-cuite.png');--still-size:160.8% 164.8%;--still-position:37.7% 28.7%}
html[data-theme="mosaique"]{color-scheme:light;--bg:#f8efdf;--panel:#fff7e9;--panel2:#fdf0d8;--line:#eadac2;--text:#083985;--muted:#697783;--accent:#0756bb;--accent-strong:#0345a3;--accent-text:#fff;--active:#ffeac5;--soft:#f8e8d1;--title-font:system-ui,-apple-system,"Segoe UI",sans-serif;--still:url('./assets/mosaique-contemporaine.png');--still-size:138.4% 143.4%;--still-position:96.1% 28.8%}

body{min-height:100vh;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,"Segoe UI",sans-serif}
button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.sprites{position:absolute;width:0;height:0;overflow:hidden}svg{fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}button svg,.side-head svg,.play-icon svg{width:22px;height:22px;flex:none}
.shell{position:relative;max-width:1800px;min-height:100vh;margin:auto;padding:0 24px 12px;overflow:hidden}
.top{height:85px;display:flex;align-items:center;gap:25px;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;z-index:2}
.brand{display:flex;align-items:center;gap:11px;min-width:235px}.mark{width:49px;height:55px;display:grid;place-items:center;border:0;border-radius:0;background:none;color:var(--accent);font-size:45px;font-family:Arial,sans-serif;line-height:1}.olive-mark{display:none}.brand strong{font-family:var(--title-font);font-size:clamp(22px,2vw,31px);letter-spacing:-.02em;white-space:nowrap;color:var(--text)}.brand strong span{color:var(--accent)}.brand small{font-size:9px;letter-spacing:.14em;color:var(--muted);text-transform:uppercase;margin-top:3px}
.headnav{display:flex;align-items:center;gap:8px;margin-right:auto}.head-button,.rail-button{display:flex;align-items:center;gap:9px;color:var(--muted);background:transparent;border:1px solid transparent;border-radius:10px;padding:10px 13px}.head-button.selected,.head-button:hover,.rail-button.selected,.rail-button:hover{background:var(--active);border-color:var(--line);color:var(--text)}
.topright{display:flex;gap:10px;align-items:center}.header-open,.open-control{display:flex;align-items:center;justify-content:center;gap:9px;border:1px solid var(--line);background:var(--soft);color:var(--text);border-radius:10px;padding:10px 14px;font-weight:700;font-size:13px;white-space:nowrap}.header-open:hover,.open-control:hover{border-color:var(--accent)}
.theme-switch{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 12px;border-radius:11px;border:1px solid var(--line);background:var(--panel);white-space:nowrap}.theme-label{color:var(--text);font-size:12px;font-weight:700}.theme-switch select{max-width:205px;padding:7px 25px 7px 8px;border:0;border-radius:7px;color:var(--text);background-color:var(--soft);font-size:12px;font-weight:600;cursor:pointer}
.layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,29%);grid-template-areas:"stage side" "controls controls";gap:12px;padding-top:13px;align-items:stretch}
#player{display:contents}.theme-rail{display:none}.stage{grid-area:stage;position:relative;aspect-ratio:16/8.9;min-width:0;border-radius:12px;background:#081010;overflow:hidden;display:flex;align-items:center;justify-content:center}.stage video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.stage video:not(.visible){visibility:hidden}.stage.drag{outline:3px dashed var(--accent);outline-offset:-9px}
.empty{position:absolute;inset:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-image:linear-gradient(0deg,rgba(4,12,18,.74),rgba(4,12,18,.28)),var(--still);background-size:100% 100%,var(--still-size);background-position:center,var(--still-position);background-repeat:no-repeat;color:#fff}.empty:before,.empty:after{display:none}.empty-content{text-align:center;z-index:1;padding:22px 28px;border-radius:18px;background:#07140ec4;box-shadow:0 10px 40px #0004}.play-icon{width:70px;height:70px;margin:0 auto 14px;display:grid;place-items:center;border:1px solid #fff9;border-radius:50%;background:#ffffff1c;color:#fff;padding:0}.play-icon svg{width:28px;height:28px;margin-left:4px}.empty h2{font-family:var(--title-font);font-size:26px;color:#fff;margin:0 0 8px}.empty p{font-size:13px;line-height:1.5;color:#edf4ec;margin:0 0 16px}.empty button{display:inline-flex;align-items:center;gap:8px;border:1px solid #ffffffa8;color:white;border-radius:9px;background:#0005;padding:10px 15px;font-weight:700}.empty button:hover{background:#0009}.empty button svg{width:18px;height:18px}.audio-badge{color:#fff}.audio-badge .wave{font-size:62px}
.controls{grid-area:controls;min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:13px 18px}.track-title{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:8px}.track-info{min-width:0}.track-title strong{color:var(--text);font-size:13px;font-weight:700}.track-title small{font-size:11px;color:var(--muted)}.time{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.bar,.volume{accent-color:var(--accent);cursor:pointer}.bar{width:100%;height:5px}.controlrow{display:flex;align-items:center;gap:14px;justify-content:space-between;margin-top:12px}.transport,.extras{display:flex;align-items:center;gap:5px}.transport{justify-content:center;flex:1}.icon{display:grid;place-items:center;border:0;background:transparent;color:var(--text);border-radius:9px;min-width:37px;height:37px;padding:7px}.icon:hover,.icon.selected{background:var(--active);color:var(--accent)}.icon svg{width:20px;height:20px}.primary{width:56px;height:56px;border:1px solid var(--accent);border-radius:50%;background:var(--accent);color:var(--accent-text);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 13%,transparent)}.primary svg{width:25px;height:25px}.primary:hover{background:var(--accent-strong);color:var(--accent-text)}.volume{width:80px}.speed{background:var(--soft);color:var(--text);border:1px solid var(--line);border-radius:7px;padding:6px;font-size:12px}.media-toggle{display:flex;align-items:center;padding:4px;border:1px solid var(--line);border-radius:99px;background:var(--soft)}.media-toggle button{display:grid;place-items:center;border:0;border-radius:99px;background:transparent;color:var(--muted);height:34px;min-width:42px}.media-toggle button.selected,.media-toggle button:hover{background:var(--accent);color:var(--accent-text)}.message{min-height:0;font-size:12px;color:var(--accent);margin:0}.message:not(:empty){margin-top:10px}
.compat{display:block;border-top:1px solid var(--line);margin-top:10px;padding-top:9px;color:var(--muted)}.compat summary{cursor:pointer;font-size:12px;color:var(--muted);width:max-content;max-width:100%}.compat-content{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:9px}.compat .explain{color:var(--muted);font-size:11px;line-height:1.5;min-width:180px;flex:1}.compat button{background:var(--soft);color:var(--text);border:1px solid var(--line);padding:8px 12px;border-radius:8px;font-size:12px}.compat progress{accent-color:var(--accent)}
.side{grid-area:side;position:relative;display:flex;flex-direction:column;min-width:0;min-height:340px;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden}.side-head{position:relative;z-index:1;padding:18px 16px 14px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:8px}.side-head h2{display:flex;align-items:center;gap:9px;font-family:var(--title-font);font-size:18px;color:var(--text);margin:0}.side-head h2 svg{color:var(--accent)}.side-head p{font-size:11px;color:var(--muted);margin:5px 0 0}.count{font-size:10px;padding:6px 8px;border-radius:7px;background:var(--soft);color:var(--muted);white-space:nowrap}
.playlist{position:relative;z-index:1;list-style:none;padding:9px;margin:0;flex:1;overflow:auto;max-height:min(53vw,560px)}.list-empty{text-align:center;color:var(--muted);font-size:12px;line-height:1.65;padding:50px 12px}.item{display:flex;align-items:center;gap:6px;border:1px solid transparent;border-radius:10px;padding:8px;margin:3px 0}.item.active{background:var(--active);border-color:var(--line)}.item button{background:transparent;border:0;color:var(--text)}.item .pick{min-width:0;flex:1;display:flex;align-items:center;gap:10px;text-align:left;padding:0}.item .preview{width:96px;flex:0 0 96px;aspect-ratio:16/9;overflow:hidden;display:grid;place-items:center;border-radius:7px;background:var(--soft);border:1px solid var(--line);color:var(--accent);font-size:18px}.item .preview img{width:100%;height:100%;object-fit:cover;display:block}.item .details{min-width:0;display:block;flex:1}.item .pick .details strong{display:block;color:var(--text);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0 0 5px}.item .pick .details span{display:block;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item .pick:hover .preview{border-color:var(--accent)}.item .remove{color:var(--muted);font-size:19px;min-width:25px;min-height:34px;border-radius:6px}.item .remove:hover{background:var(--soft);color:var(--text)}
.side-actions{position:relative;z-index:1;border-top:1px solid var(--line);padding:10px;display:grid;grid-template-columns:1fr 1fr;gap:7px}.side-actions button{display:flex;align-items:center;gap:6px;min-width:0;background:var(--soft);color:var(--text);border:1px solid var(--line);border-radius:8px;text-align:left;padding:9px;font-size:11px}.side-actions button:hover{border-color:var(--accent)}.side-actions button svg{width:15px;height:15px}.side-actions button>span:last-child{margin-left:auto}.url-symbol{font-size:16px}
.footer{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:13px 3px 5px;color:var(--muted);font-size:10px}.footer strong{color:var(--text);font-weight:600}.tip{line-height:1.5}.dialog{border:1px solid var(--line);border-radius:16px;background:var(--panel);color:var(--text);padding:24px;width:min(440px,90vw)}.dialog::backdrop{background:#000b}.dialog h2{font-family:var(--title-font);margin:0 0 10px}.dialog p{color:var(--muted);font-size:13px;line-height:1.5}.dialog input{border:1px solid var(--line);background:var(--soft);color:var(--text)}.dialog-actions button{border:1px solid var(--line);background:var(--soft);color:var(--text)}.dialog-actions button[type=submit]{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}
#player:fullscreen{display:flex;position:fixed;inset:0;background:var(--bg);flex-direction:column;justify-content:center;padding:14px;gap:10px}#player:fullscreen .stage{flex:1;min-height:0;aspect-ratio:auto}#player:fullscreen .controls{background:var(--panel)}

/* Blue Djurdjura: cinematic blue, playlist to the right. */
html[data-theme="bleu"] body{background:radial-gradient(ellipse at 90% 0%,#06468f 0,#061b43 40%,#04152f 100%)}
html[data-theme="bleu"] .top{background-image:url('./assets/mountains-blue.svg');background-repeat:no-repeat;background-position:right bottom;background-size:48% auto;border-bottom:0}
html[data-theme="bleu"] .head-button.selected{border-color:#006ad5;box-shadow:0 0 15px #0077ff40}
html[data-theme="bleu"] .controls{border:0;background:#041a3e;border-radius:0 0 12px 12px}
html[data-theme="bleu"] .open-control{background:linear-gradient(135deg,#068aff,#0056d4);border:0;color:#fff;padding:15px 20px;order:4}
html[data-theme="bleu"] .primary{background:#07386a;border-color:#53c4ff;color:#fff}
html[data-theme="bleu"] .footer{border-top:1px solid #0e4077}

/* Olive grove: playlist on the left and copper transport. */
html[data-theme="olivier"] .layout{grid-template-columns:minmax(250px,23%) minmax(0,1fr);grid-template-areas:"side stage" "side controls";gap:0;padding-top:0}
html[data-theme="olivier"] .top{border:0;height:72px}.olive-mark{display:none}html[data-theme="olivier"] .olive-mark{display:block;font-size:50px;color:#b4a268}html[data-theme="olivier"] .amazigh-mark{display:none}
html[data-theme="olivier"] .brand strong span{color:var(--text)}html[data-theme="olivier"] .brand small{display:none}
html[data-theme="olivier"] .side{border-radius:10px 0 0 10px;min-height:550px;background:#141e11}
html[data-theme="olivier"] .side:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:240px;background:url('./assets/olive-branch.svg') left bottom/230px auto no-repeat;pointer-events:none}
html[data-theme="olivier"] .side-head{border:0;padding-top:24px}html[data-theme="olivier"] .stage{border-radius:0 10px 0 0}
html[data-theme="olivier"] .controls{border-radius:0 0 10px 0;background:#182314}html[data-theme="olivier"] .primary{background:transparent;color:var(--accent);box-shadow:none}
html[data-theme="olivier"] .open-control{border-color:#998b60;background:#505740;color:#fff0d6}html[data-theme="olivier"] .side-actions{grid-template-columns:1fr}

/* Black and gold: an engraved edge and a right-hand playlist. */
html[data-theme="cinema"] .shell{padding-left:48px}html[data-theme="cinema"] .shell:before{content:"";position:absolute;left:0;top:0;bottom:0;width:36px;background:url('./assets/berber-gold.svg') repeat-y}
html[data-theme="cinema"] .top{border:0}html[data-theme="cinema"] .brand small{display:none}html[data-theme="cinema"] .side{background:#0b0b0b}
html[data-theme="cinema"] .stage{border-radius:10px 10px 0 0}html[data-theme="cinema"] .controls{border-color:#2f2a20;background:#0d0d0d}
html[data-theme="cinema"] .primary{background:transparent;color:var(--accent);border-color:var(--accent);box-shadow:none}
html[data-theme="cinema"] .open-control{background:#0b0b0b;border-color:#9d7842;color:var(--accent);order:-1}

/* Ivory and terracotta: side navigation plus a playlist to the right. */
html[data-theme="ivoire"] .layout{grid-template-columns:195px minmax(0,1fr) minmax(230px,22%);grid-template-areas:"rail stage side" "rail controls side";gap:12px}
html[data-theme="ivoire"] .theme-rail{grid-area:rail;display:flex;flex-direction:column;gap:8px;position:relative;min-height:480px;padding-top:2px}
html[data-theme="ivoire"] .rail-button{font-family:Georgia,serif;justify-content:flex-start;width:100%;font-size:14px;color:var(--text)}
html[data-theme="ivoire"] .rail-button.selected,html[data-theme="ivoire"] .rail-button:hover{background:var(--accent);color:white;border-color:var(--accent)}
html[data-theme="ivoire"] .rail-art{position:absolute;bottom:0;left:0;right:0;height:180px;background:url('./assets/olive-branch.svg') left bottom/175px auto no-repeat;pointer-events:none}
html[data-theme="ivoire"] .rail-art span{position:absolute;bottom:12px;right:18px;font-size:46px;color:#be6548;opacity:.6}
html[data-theme="ivoire"] .controls{border:0;background:transparent;padding-left:5px;padding-right:5px}html[data-theme="ivoire"] .side{background:transparent}
html[data-theme="ivoire"] .open-control{background:var(--accent);border-color:var(--accent);color:white;order:-1}
html[data-theme="ivoire"] .shell{padding-bottom:36px}html[data-theme="ivoire"] .shell:after{content:"";position:absolute;bottom:0;left:0;right:0;height:25px;background:url('./assets/woven-ivory.svg') repeat-x}
html[data-theme="ivoire"] .top{border-bottom:1px solid #ead7c3}

/* Contemporary mosaic: bolder shapes and a left-hand playlist. */
html[data-theme="mosaique"] .shell{padding-left:82px}html[data-theme="mosaique"] .shell:before{content:"";position:absolute;top:0;bottom:0;left:0;width:68px;background:#08469d url('./assets/mosaic-rail.svg') center top/68px auto repeat-y}
html[data-theme="mosaique"] .layout{grid-template-columns:minmax(250px,25%) minmax(0,1fr);grid-template-areas:"side stage" "side controls";gap:12px}
html[data-theme="mosaique"] .top{border:0}html[data-theme="mosaique"] .brand small{display:none}
html[data-theme="mosaique"] .mark{color:#e39b11}html[data-theme="mosaique"] .brand strong span{color:#1261bd}
html[data-theme="mosaique"] .side{background:#fff8ed;border:0;box-shadow:0 2px 14px #8d66100f}
html[data-theme="mosaique"] .side-head{border:0}html[data-theme="mosaique"] .item.active{border:0}
html[data-theme="mosaique"] .controls{background:#fff6e8;border:0;box-shadow:0 8px 22px #7f5a2029}
html[data-theme="mosaique"] .open-control{background:var(--accent);color:white;border:0;order:-1}

@media(max-width:1150px){.headnav{gap:2px}.head-button{padding:9px}.header-open span{display:none}.brand{min-width:auto}.layout{grid-template-columns:minmax(0,1fr) minmax(240px,28%)}html[data-theme="ivoire"] .layout{grid-template-columns:150px minmax(0,1fr) minmax(210px,25%)}html[data-theme="ivoire"] .rail-button{font-size:12px;padding:9px}.controlrow{gap:6px}.volume{width:60px}}
@media(max-width:850px){.shell,html[data-theme="cinema"] .shell,html[data-theme="mosaique"] .shell{padding:0 14px 14px}.top{height:auto;min-height:76px;flex-wrap:wrap;gap:10px;padding:10px 0}.brand strong{font-size:23px}.brand small{display:none}.mark{width:36px;height:42px;font-size:35px}.headnav{order:3;width:100%;margin:0}.head-button{font-size:12px;padding:7px 10px}.topright{margin-left:auto}.theme-switch{gap:4px}.theme-label{font-size:11px}.theme-switch select{max-width:138px}.layout,html[data-theme="olivier"] .layout,html[data-theme="ivoire"] .layout,html[data-theme="mosaique"] .layout{display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"stage" "controls" "side";gap:10px;padding-top:10px}.theme-rail,html[data-theme="ivoire"] .theme-rail{display:none}.stage,html[data-theme="olivier"] .stage{border-radius:10px}.side,html[data-theme="olivier"] .side{min-height:220px;border-radius:12px}.playlist{max-height:300px}.controls,html[data-theme="olivier"] .controls{border-radius:12px}.controlrow{flex-wrap:wrap}.transport{order:1;flex:1}.extras{order:2}.open-control{order:3!important}.media-toggle{order:4}.footer{align-items:flex-start;flex-direction:column}.shell:before,html[data-theme="cinema"] .shell:before,html[data-theme="mosaique"] .shell:before{display:none}html[data-theme="ivoire"] .shell:after{display:none}}
@media(max-width:520px){.topright{width:100%}.theme-switch{flex:1;justify-content:space-between}.theme-switch select{max-width:none}.header-open span{display:inline}.headnav{justify-content:flex-start}.head-button{flex:1;justify-content:center}.empty-content{padding:15px;max-width:85%}.empty h2{font-size:20px}.empty p{font-size:11px}.play-icon{width:48px;height:48px;margin-bottom:8px}.play-icon svg{width:20px;height:20px}.empty button{padding:7px 10px;font-size:11px}.controls{padding:12px}.controlrow{gap:5px}.transport{width:100%;flex:auto;justify-content:space-around}.extras{flex:1}.icon{min-width:32px;height:34px;padding:6px}.primary{width:48px;height:48px}.volume{width:52px}.open-control{font-size:11px;padding:9px}.media-toggle button{min-width:34px}.side-actions{grid-template-columns:1fr 1fr!important}.item .preview{width:80px;flex-basis:80px}}
