:root{color:#f7f7f8;font-synthesis:none;text-rendering:optimizelegibility;--bg:#08090d;--panel:#12141ceb;--panel-soft:#1a1d27bd;--line:#ffffff16;--text-muted:#9297a6;--accent:#8c5cff;--accent-strong:#7243ef;--green:#32d583;--red:#ff4d67;--amber:#ffb020;background:#08090d;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 10% 0%, #7041ef2e, transparent 28rem), radial-gradient(circle at 100% 20%, #1a6ff01f, transparent 30rem), var(--bg);min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.app-shell{width:min(1480px,100% - 40px);margin:0 auto;padding:24px 0 32px}.topbar{justify-content:space-between;align-items:center;gap:24px;padding:10px 0 26px;display:flex}.brand-block,.status-group,.panel-heading,.scene-row,.audio-row,.footer,.live-state{align-items:center;display:flex}.brand-block{gap:14px}.brand-mark,.loading-mark{background:linear-gradient(145deg, var(--accent), #4264f5);border-radius:15px;place-items:center;width:48px;height:48px;font-size:24px;font-weight:900;display:grid;box-shadow:0 14px 36px #7041ef4d}.brand-block h1,.hero h2,.panel h2{margin:0}.brand-block h1{font-size:21px}.eyebrow{color:#aeb3c2;letter-spacing:.13em;text-transform:uppercase;margin-bottom:4px;font-size:11px;font-weight:800;display:block}.status-group{flex-wrap:wrap;justify-content:flex-end;gap:10px}.status-pill{border:1px solid var(--line);color:var(--text-muted);background:#12141cd6;border-radius:999px;align-items:center;gap:8px;padding:9px 12px;font-size:13px;font-weight:700;display:inline-flex}.status-pill.is-on{color:#d8ffe9}.status-dot,.live-dot,.idle-dot{border-radius:50%;width:9px;height:9px}.status-pill.is-on .status-dot,.live-dot{background:var(--green);box-shadow:0 0 14px #32d583d9}.status-pill.is-off .status-dot,.idle-dot{background:#5f6472}.alert-banner{color:#ffdce2;background:#ff4d671a;border:1px solid #ff4d6747;border-radius:14px;margin-bottom:20px;padding:14px 16px}.hero{border:1px solid var(--line);background:linear-gradient(100deg,#8c5cff21,#0000 44%),#0f1117e6;border-radius:24px;justify-content:space-between;align-items:flex-end;gap:30px;padding:30px;display:flex;box-shadow:0 20px 50px #00000038}.hero h2{letter-spacing:-.055em;font-size:clamp(30px,5vw,54px)}.hero p{color:var(--text-muted);margin:10px 0 0}.live-state{border:1px solid var(--line);background:#07080cad;border-radius:16px;gap:12px;min-width:180px;padding:15px 18px}.live-state div{flex-direction:column;display:flex}.live-state small{color:var(--text-muted);text-transform:uppercase;font-size:11px;font-weight:700}.metrics-grid{grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0;display:grid}.metric-card,.panel{border:1px solid var(--line);background:var(--panel);box-shadow:0 12px 38px #0000002e}.metric-card{border-radius:18px;flex-direction:column;justify-content:space-between;min-height:134px;padding:20px;display:flex}.metric-label,.metric-hint,.scene-copy span,.audio-title span{color:var(--text-muted)}.metric-label{font-size:13px;font-weight:700}.metric-value{letter-spacing:-.045em;font-size:30px}.metric-hint{font-size:12px}.dashboard-grid{grid-template-columns:minmax(0,1.65fr) minmax(310px,.7fr);gap:18px;display:grid}.side-column{flex-direction:column;gap:18px;display:flex}.panel{border-radius:20px;padding:22px}.panel-heading{justify-content:space-between;gap:20px;margin-bottom:20px}.panel h2{font-size:23px}.scene-count{color:var(--text-muted);font-size:13px}.program-preview-grid{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px;display:grid}.program-box,.preview-box{border-radius:16px;min-height:110px;padding:18px}.program-box{background:#ff4d6714;border:1px solid #ff4d6742}.preview-box{background:#32d58312;border:1px solid #32d58338}.program-box span,.preview-box span{color:var(--text-muted);text-transform:uppercase;margin-bottom:12px;font-size:12px;font-weight:800;display:block}.program-box strong,.preview-box strong{font-size:20px}.scene-list,.audio-list{flex-direction:column;gap:9px;display:flex}.scene-row,.audio-row{border:1px solid var(--line);background:var(--panel-soft);border-radius:14px;gap:16px;padding:13px 14px}.scene-row.is-program{border-color:#ff4d6752}.scene-row.is-preview{border-color:#32d58347}.scene-copy,.audio-title{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.scene-copy strong,.audio-title strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.scene-copy span,.audio-title span{font-size:12px}.scene-actions{gap:8px;display:flex}.button{color:#fff;border:0;border-radius:11px;padding:10px 13px;font-weight:800}.button-primary{background:linear-gradient(135deg, var(--accent), var(--accent-strong))}.button-secondary{border:1px solid var(--line);background:#ffffff0f}.button-transition{background:linear-gradient(135deg,#0b9961,#27bf7d);margin-top:10px}.full-width{width:100%}.studio-state{background:var(--panel-soft);border-radius:13px;justify-content:space-between;margin-bottom:16px;padding:14px;display:flex}.feedback-message{color:#c9cddd;margin:14px 0 0;font-size:13px}.output-buttons{gap:10px;display:grid}.output-button{border:1px solid var(--line);background:var(--panel-soft);color:#fff;border-radius:14px;justify-content:space-between;align-items:center;min-height:70px;padding:14px 16px;display:flex}.output-button span{color:var(--text-muted);text-transform:uppercase;font-size:12px}.output-button.is-live,.output-button.is-recording{background:#ff4d671a;border-color:#ff4d6759}.output-button.needs-confirmation{background:#ffb0201f;border-color:#ffb0208c}.audio-panel{margin-top:18px}.audio-row{grid-template-columns:minmax(150px,.7fr) minmax(230px,1.6fr) 88px;display:grid}.audio-control{grid-template-columns:1fr 76px;align-items:center;gap:14px;display:grid}.audio-control input[type=range]{width:100%;accent-color:var(--accent)}.audio-control output{color:#d7dae4;text-align:right;font-variant-numeric:tabular-nums}.mute-button{color:#d8ffe9;background:#32d58314;border:1px solid #32d58340;border-radius:10px;padding:9px;font-weight:800}.mute-button.is-muted{color:#ffdce2;background:#ff4d671a;border-color:#ff4d674d}.footer{color:var(--text-muted);justify-content:space-between;gap:20px;padding:26px 4px 0;font-size:12px}.loading-screen{min-height:100vh;color:var(--text-muted);place-content:center;justify-items:center;gap:18px;display:grid}.loading-mark.is-error{background:linear-gradient(145deg, var(--red), #c62f49)}@media (width<=980px){.metrics-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.side-column{grid-template-columns:1fr 1fr;display:grid}}@media (width<=700px){.app-shell{width:min(100% - 22px,1480px);padding-top:12px}.topbar,.hero,.scene-row{flex-direction:column;align-items:stretch}.status-group{justify-content:flex-start}.hero{padding:22px}.live-state{min-width:0}.metrics-grid,.program-preview-grid,.side-column{grid-template-columns:1fr}.scene-actions{width:100%}.scene-actions .button{flex:1}.audio-row{grid-template-columns:1fr}.footer{flex-direction:column;align-items:flex-start}}.auth-screen{place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{border:1px solid var(--line);background:linear-gradient(145deg, #8c5cff14, transparent 55%), var(--panel);text-align:center;border-radius:24px;flex-direction:column;align-items:center;gap:18px;width:min(100%,520px);padding:34px;display:flex;box-shadow:0 24px 70px #00000057,0 0 60px #7041ef14}.auth-card h1{letter-spacing:-.045em;margin:0;font-size:clamp(26px,4vw,38px)}.auth-card p{color:var(--text-muted);margin:0;line-height:1.6}.auth-logo{background:linear-gradient(145deg, var(--accent), #4264f5);border-radius:20px;place-items:center;width:64px;height:64px;font-size:30px;font-weight:900;display:grid;box-shadow:0 18px 42px #7041ef57}.auth-logo-error{background:linear-gradient(145deg, var(--red), #c62f49)}.auth-logo-denied{background:linear-gradient(145deg, var(--amber), #d77f00)}.auth-eyebrow{color:#aeb3c2;letter-spacing:.13em;text-transform:uppercase;margin-bottom:6px;font-size:11px;font-weight:800;display:block}.auth-spinner{border:3px solid #ffffff1f;border-top-color:var(--accent);border-radius:50%;width:34px;height:34px;animation:.8s linear infinite auth-spin}@keyframes auth-spin{to{transform:rotate(360deg)}}.auth-card-error{background:linear-gradient(145deg, #ff4d6714, transparent 55%), var(--panel);border-color:#ff4d674d}.auth-card-denied{background:linear-gradient(145deg, #ffb02014, transparent 55%), var(--panel);border-color:#ffb0204d}.auth-details{gap:10px;width:100%;margin:4px 0 0;display:grid}.auth-details div{border:1px solid var(--line);background:var(--panel-soft);text-align:left;border-radius:12px;grid-template-columns:150px 1fr;gap:12px;padding:12px 14px;display:grid}.auth-details dt{color:var(--text-muted);text-transform:uppercase;font-size:12px;font-weight:800}.auth-details dd{overflow-wrap:anywhere;color:#f1f2f6;margin:0}.auth-help{background:#ffb0200f;border:1px solid #ffb0202e;border-radius:12px;padding:12px 14px}.auth-actions{gap:10px;width:100%;display:flex}.auth-actions .button{flex:1}@media (width<=600px){.auth-screen{padding:14px}.auth-card{border-radius:20px;padding:26px 20px}.auth-details div{grid-template-columns:1fr;gap:5px}.auth-actions{flex-direction:column}}.topbar-actions{justify-content:flex-end;align-items:center;gap:14px;display:flex}.user-menu-wrapper{position:relative}.user-menu-trigger{border:1px solid var(--line);color:#fff;text-align:left;background:#12141ce6;border-radius:15px;align-items:center;gap:11px;min-width:210px;padding:7px 10px 7px 7px;transition:border-color .18s,background .18s,transform .18s;display:flex}.user-menu-trigger:hover{background:#1d1f2bf5;border-color:#8c5cff73}.user-menu-trigger:active{transform:translateY(1px)}.user-avatar{background:linear-gradient(145deg, var(--accent), #4264f5);color:#fff;letter-spacing:.04em;border-radius:12px;flex:none;place-items:center;width:38px;height:38px;font-size:13px;font-weight:900;display:grid;box-shadow:0 8px 24px #7041ef47}.user-avatar.is-large{border-radius:15px;width:48px;height:48px;font-size:16px}.user-menu-copy{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.user-menu-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.user-menu-copy small{color:var(--text-muted);font-size:11px}.user-menu-chevron{color:var(--text-muted);font-size:13px;transition:transform .18s}.user-menu-chevron.is-open{transform:rotate(180deg)}.user-menu-dropdown{z-index:100;border:1px solid var(--line);background:linear-gradient(145deg,#8c5cff12,#0000 48%),#0f1117fa;border-radius:18px;width:min(340px,100vw - 28px);position:absolute;top:calc(100% + 10px);right:0;overflow:hidden;box-shadow:0 28px 70px #0000007a}.user-menu-header{border-bottom:1px solid var(--line);align-items:center;gap:13px;padding:18px;display:flex}.user-menu-header>div{flex-direction:column;gap:4px;min-width:0;display:flex}.user-menu-header strong,.user-menu-header span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.user-menu-header strong{font-size:14px}.user-menu-header div>span{color:var(--text-muted);font-size:12px}.user-menu-section{border-bottom:1px solid var(--line);padding:15px 18px}.user-menu-label{color:var(--text-muted);letter-spacing:.11em;text-transform:uppercase;margin-bottom:9px;font-size:10px;font-weight:800;display:block}.role-badge,.user-role-chip{border-radius:999px;align-items:center;font-weight:800;display:inline-flex}.role-badge{border:1px solid var(--line);padding:7px 10px;font-size:12px}.role-admin{color:#dfd2ff;background:#8c5cff1f;border-color:#8c5cff52}.role-operator{color:#d8ffe9;background:#32d5831a;border-color:#32d58347}.role-observer{color:#dce4ff;background:#4264f51a;border-color:#4264f54d}.role-aucun{color:#ffe4b0;background:#ffb0201a;border-color:#ffb0204d}.user-role-list{flex-wrap:wrap;gap:7px;display:flex}.user-role-chip{color:#d7dae4;background:#ffffff0f;padding:5px 8px;font-size:11px}.user-role-empty{color:var(--text-muted);font-size:12px}.user-permissions-summary ul{gap:7px;margin:0;padding:0;list-style:none;display:grid}.user-permissions-summary li{color:var(--text-muted);justify-content:space-between;gap:12px;font-size:12px;display:flex}.user-permissions-summary strong{color:#f1f2f6}.user-logout-button{color:#ffdce2;text-align:left;background:0 0;border:0;width:100%;padding:14px 18px;font-weight:800;transition:background .18s}.user-logout-button:hover{background:#ff4d671a}@media (width<=980px){.topbar{align-items:flex-start}.topbar-actions{flex-direction:column-reverse;align-items:flex-end}}@media (width<=700px){.topbar-actions{align-items:stretch;width:100%}.user-menu-wrapper,.user-menu-trigger{width:100%}.user-menu-dropdown{width:100%;left:0;right:auto}}
