:root{
  --ink:#0A0E14;--ink2:#151B25;--ink3:#252E3B;--canvas:#F1F4F3;--surface:#fff;--line:#DCE3E1;--line2:#EAEFED;
  --text:#18292F;--muted:#62767C;--accent:#F0147C;--accent-d:#C80A63;--link:#C20A63;--link-bg:#FDE6F1;
  --ok:#1E9E6A;--bad:#D64545;--warn:#D98A00;--r:8px;--shadow:0 1px 2px rgba(16,36,43,.06),0 4px 14px rgba(16,36,43,.06);
  --font:"Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,Roboto,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font:14px/1.45 var(--font);color:var(--text);background:var(--canvas);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{margin:0;letter-spacing:-.01em;line-height:1.2}
h1{font-size:22px;font-weight:650}h2{font-size:17px;font-weight:650}h3{font-size:14px;font-weight:650}
a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.muted{color:var(--muted)}.small{font-size:12px}.right{margin-left:auto}.nowrap{white-space:nowrap}
.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:10px}
.grow{flex:1;min-width:0}.hide{display:none!important}
.mono{font-variant-numeric:tabular-nums}

/* ---------- Auth ---------- */
.auth{min-height:100%;display:grid;grid-template-columns:minmax(320px,1fr) minmax(360px,520px)}
.auth-art{background:radial-gradient(ellipse at 75% 85%,rgba(240,20,124,.45),transparent 60%),radial-gradient(ellipse at 20% 0%,rgba(240,20,124,.18),transparent 55%),#0A0E14;color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.auth-art h1{font-size:34px;line-height:1.1;font-weight:700;max-width:14ch;letter-spacing:-.03em;text-shadow:0 2px 20px #000}
.auth-art p{color:#d6c2cd;text-shadow:0 2px 14px #000;max-width:36ch;font-size:15px}
.auth-art .screens{display:none;position:absolute;right:-60px;bottom:-40px;display:grid;grid-template-columns:repeat(2,200px);gap:14px;transform:rotate(-6deg);opacity:.9}
.auth-art .screens i{display:block;height:116px;border-radius:6px;border:3px solid #2c4d57;background:linear-gradient(135deg,#1f4a55,#0c1d22)}
.auth-art .screens i:nth-child(2){background:linear-gradient(135deg,var(--accent),#b66f00)}
.auth-art .screens i:nth-child(3){height:150px;grid-row:span 1;background:linear-gradient(135deg,#2a6b60,#123a35)}
.auth-art .brand{font-weight:700;font-size:18px;display:flex;gap:10px;align-items:center}
.auth-form{display:flex;align-items:center;justify-content:center;padding:32px;background:var(--surface)}
.auth-form form{width:100%;max-width:340px;display:flex;flex-direction:column;gap:14px}
@media(max-width:800px){.auth{grid-template-columns:1fr}.auth-art{display:none}}

/* ---------- Shell ---------- */
.app{display:grid;grid-template-columns:236px 1fr;min-height:100%}
.side{background:var(--ink);color:#cfe0e3;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}
.side .logo{padding:18px 18px 10px;font-weight:700;color:#fff;font-size:17px;display:flex;align-items:center;gap:10px}
.logo-img{display:block;height:auto;width:150px;max-width:100%}
.auth-art .logo-img{width:220px}
.logo-mark{width:30px;height:30px;border-radius:7px;background:center/cover url(/logo-icon.png) #000;flex:none}
.org-switch{margin:6px 12px 10px;padding:9px 10px;border-radius:var(--r);background:var(--ink2);border:1px solid var(--ink3);cursor:pointer;display:flex;gap:9px;align-items:center;color:#fff;text-align:left;width:calc(100% - 24px)}
.org-switch:hover{background:var(--ink3)}
.org-chip{width:10px;height:28px;border-radius:3px;flex:none}
.org-switch b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.org-switch small{color:#8aa5ab;display:block}
.nav{display:flex;flex-direction:column;padding:4px 10px;gap:1px}
.nav a{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:7px;color:#b9cfd3;font-weight:500;text-decoration:none}
.nav a svg{width:18px;height:18px;flex:none;opacity:.85}
.nav a:hover{background:var(--ink2);color:#fff}
.nav a.on{background:var(--accent);color:#fff}
.nav a.on svg{opacity:1}
.nav .sep{height:1px;background:var(--ink3);margin:8px 6px}
.nav .cnt{margin-left:auto;font-size:11px;background:var(--ink3);color:#cfe0e3;border-radius:9px;padding:0 7px}
.side .foot{margin-top:auto;padding:12px;border-top:1px solid var(--ink3);display:flex;align-items:center;gap:8px}
.side .foot button{background:none;border:0;color:#b9cfd3;cursor:pointer;display:flex;gap:9px;align-items:center;flex:1;text-align:left;padding:6px;border-radius:7px}
.side .foot2{padding:0 12px 14px}
.side .foot2 button{width:100%;display:flex;gap:8px;align-items:center;justify-content:center;background:none;border:1px solid var(--ink3);color:#b9cfd3;cursor:pointer;padding:6px 10px;border-radius:8px;font-size:13px}
.side .foot2 svg{width:16px;height:16px;flex:none}
.side .foot2 button:hover{background:var(--ink2);color:#fff}
.side .foot button:hover{background:var(--ink2);color:#fff}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--ink3);color:#fff;display:grid;place-items:center;font-weight:650;font-size:12px;flex:none}
.main{min-width:0}
.topbar{display:none}
.page{padding:26px 30px 60px;max-width:1400px}
.page-head{display:flex;align-items:flex-start;gap:14px;margin-bottom:20px;flex-wrap:wrap}
.page-head .sub{color:var(--muted);margin-top:3px}
.page-head .actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
@media(max-width:900px){
  .app{grid-template-columns:1fr}
  .side{position:fixed;left:0;top:0;bottom:0;width:260px;z-index:40;transform:translateX(-100%);transition:transform .2s}
  .side.open{transform:none}
  .topbar{display:flex;align-items:center;gap:12px;background:var(--ink);color:#fff;padding:10px 14px;position:sticky;top:0;z-index:30}
  .topbar button{background:none;border:0;color:#fff;cursor:pointer;padding:4px}
  .page{padding:18px 16px 60px}
}

/* ---------- Controls ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:7px 14px;border-radius:7px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font-weight:550;white-space:nowrap;min-height:34px}
.btn:hover{background:var(--line2)}
.btn svg{width:16px;height:16px}
.btn.primary{background:var(--accent);border-color:var(--accent-d);color:#fff}
.btn.primary:hover{background:#ff2b8c}
.btn.dark{background:var(--ink);border-color:var(--ink);color:#fff}.btn.dark:hover{background:var(--ink2)}
.btn.danger{color:var(--bad);border-color:#efc3c3}.btn.danger:hover{background:#fbeeee}
.btn.danger.solid{background:var(--bad);color:#fff;border-color:var(--bad)}
.btn.ghost{border-color:transparent;background:transparent}.btn.ghost:hover{background:var(--line2)}
.btn.sm{padding:3px 9px;min-height:28px;font-size:13px}
.btn.icon{padding:6px;min-height:32px;width:32px}
.btn[disabled]{opacity:.5;pointer-events:none}
.field{display:flex;flex-direction:column;gap:5px}
.field>label,.lbl{font-weight:600;font-size:13px}
.field .hint{color:var(--muted);font-size:12px}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=time],input[type=search],input[type=url],select,textarea{
  width:100%;padding:7px 10px;border:1px solid #c9d3d1;border-radius:7px;background:#fff;min-height:34px}
textarea{resize:vertical;min-height:80px}
input[type=color]{width:42px;height:34px;padding:2px;border:1px solid #c9d3d1;border-radius:7px;background:#fff}
input[type=checkbox],input[type=radio]{accent-color:var(--ink);width:16px;height:16px}
input:disabled,select:disabled{background:var(--line2);color:var(--muted)}
.check{display:flex;align-items:center;gap:8px;cursor:pointer}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px 18px}
.seg{display:inline-flex;border:1px solid #c9d3d1;border-radius:7px;overflow:hidden;background:#fff}
.seg button{border:0;background:none;padding:6px 12px;cursor:pointer;font-weight:550;border-right:1px solid var(--line)}
.seg button:last-child{border-right:0}
.seg button.on{background:var(--ink);color:#fff}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.card>.hd{padding:13px 16px;border-bottom:1px solid var(--line2);display:flex;align-items:center;gap:10px}
.card>.bd{padding:16px}
.badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:1px 8px;border-radius:10px;background:var(--line2);color:var(--muted)}
.badge.ok{background:#dff3ea;color:#116b47}.badge.bad{background:#fbe4e4;color:#9b2a2a}.badge.warn{background:#fcefd2;color:#7a5200}.badge.info{background:var(--link-bg);color:var(--link)}
.dot{width:9px;height:9px;border-radius:50%;background:#b4c0be;display:inline-block;flex:none}
.dot.ok{background:var(--ok);box-shadow:0 0 0 3px #1e9e6a22}.dot.bad{background:var(--bad)}.dot.warn{background:var(--warn)}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto}
.tabs button{background:none;border:0;border-bottom:3px solid transparent;padding:9px 14px;cursor:pointer;font-weight:550;color:var(--muted);white-space:nowrap;margin-bottom:-1px}
.tabs button:hover{color:var(--text)}
.tabs button.on{color:var(--text);border-bottom-color:var(--accent)}
.empty{padding:44px 20px;text-align:center;color:var(--muted);display:flex;flex-direction:column;align-items:center}
.empty b{display:block;color:var(--text);font-size:15px;margin-bottom:4px}
.empty .btn{margin-top:14px;align-self:center}
.notice{padding:10px 14px;border-radius:7px;background:#fcefd2;border:1px solid #f0d58f;color:#6b4a00}
.notice.err{background:#fbe4e4;border-color:#efc3c3;color:#8a2323}
.notice.info{background:var(--link-bg);border-color:#bfe3dc;color:#0b5c50}

/* ---------- Tables ---------- */
.table-wrap{overflow-x:auto}
table.t{width:100%;border-collapse:collapse}
.t th{text-align:left;font-weight:600;color:var(--muted);font-size:12.5px;padding:9px 12px;border-bottom:1px solid var(--line);background:#f8faf9;white-space:nowrap}
.t td{padding:10px 12px;border-bottom:1px solid var(--line2);vertical-align:middle}
.t tr:last-child td{border-bottom:0}
.t tbody tr:hover{background:#fafcfb}
.t .actions{text-align:right;white-space:nowrap}

/* ---------- Dashboard ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:18px}
.stat{padding:16px;display:flex;flex-direction:column;gap:2px}
.stat .n{font-size:30px;font-weight:700;letter-spacing:-.03em;line-height:1.1}
.stat .l{color:var(--muted)}
.bar{height:8px;border-radius:5px;background:var(--line2);overflow:hidden;margin-top:8px}
.bar>i{display:block;height:100%;background:var(--link);border-radius:5px}
.bar.warn>i{background:var(--warn)}.bar.bad>i{background:var(--bad)}
.dash-grid{display:grid;grid-template-columns:minmax(0,3fr) minmax(280px,2fr);gap:18px}
@media(max-width:1000px){.dash-grid{grid-template-columns:1fr}}
#map,.map{height:340px;border-radius:0 0 var(--r) var(--r);z-index:0}
.act{list-style:none;margin:0;padding:0}
.act li{padding:8px 16px;border-bottom:1px solid var(--line2);display:flex;gap:10px}
.act li:last-child{border:0}.act time{color:var(--muted);font-size:12px;white-space:nowrap}

/* ---------- Media ---------- */
.lib-layout{display:grid;grid-template-columns:210px 1fr;gap:18px}
@media(max-width:900px){.lib-layout{grid-template-columns:1fr}}
.folders{padding:8px}
.folders button{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:0;background:none;padding:7px 9px;border-radius:6px;cursor:pointer}
.folders button:hover{background:var(--line2)}.folders button.on{background:var(--link-bg);color:var(--link);font-weight:600}
.folders .sub{padding-left:16px}
.folders svg{width:16px;height:16px;flex:none}
.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(176px,1fr));gap:14px}
.mcard{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;cursor:pointer;position:relative;display:flex;flex-direction:column}
.mcard:hover{box-shadow:var(--shadow);border-color:#c5d0ce}
.mcard.sel{outline:3px solid var(--accent);outline-offset:-1px}
.mcard .th{aspect-ratio:16/10;background:#e8eeec center/cover no-repeat;display:grid;place-items:center;color:#7c9096;position:relative}
.mcard .th svg{width:34px;height:34px}
.mcard .th .k{position:absolute;left:6px;bottom:6px;background:rgba(16,36,43,.78);color:#fff;font-size:11px;padding:0 6px;border-radius:4px;font-weight:600}
.mcard .th .d{position:absolute;right:6px;bottom:6px;background:rgba(16,36,43,.78);color:#fff;font-size:11px;padding:0 6px;border-radius:4px}
.mcard .meta{padding:8px 10px}
.mcard .meta b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.mcard .ck{position:absolute;left:6px;top:6px;z-index:2;opacity:0;background:#fff;border-radius:4px}
.mcard:hover .ck,.mcard.sel .ck,.selecting .mcard .ck{opacity:1}
.dropzone{border:2px dashed #b6c5c2;border-radius:var(--r);padding:26px;text-align:center;color:var(--muted);background:#fafcfb;margin-bottom:16px}
.dropzone.over{border-color:var(--accent);background:#fff0f7;color:var(--text)}
.bulkbar{position:sticky;top:0;z-index:5;background:var(--ink);color:#fff;border-radius:var(--r);padding:8px 12px;margin-bottom:14px;display:flex;gap:8px;align-items:center}
.bulkbar .btn{background:var(--ink2);border-color:var(--ink3);color:#fff}.bulkbar .btn.danger{color:#ff9d9d}
.uploads{position:fixed;right:16px;bottom:16px;width:320px;max-height:50vh;overflow:auto;z-index:60;display:flex;flex-direction:column;gap:6px}
.uploads .u{background:var(--ink);color:#fff;border-radius:8px;padding:9px 12px;box-shadow:var(--shadow)}
.uploads .u .bar{background:var(--ink3);height:5px}.uploads .u .bar>i{background:var(--accent)}
.preview-box{background:#0b1417;border-radius:8px;display:grid;place-items:center;min-height:260px;overflow:hidden}
.preview-box img,.preview-box video{max-width:100%;max-height:380px}
.preview-box iframe{width:100%;height:380px;border:0;background:#fff}

/* ---------- Apps ---------- */
.app-types{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin-bottom:24px}
.apptype{padding:16px;display:flex;flex-direction:column;gap:8px;cursor:pointer;text-align:left;border:1px solid var(--line);background:#fff;border-radius:var(--r)}
.apptype:hover{border-color:var(--accent);box-shadow:var(--shadow)}
.apptype .ic{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;font-size:21px;background:var(--link-bg)}
.apptype b{font-size:15px}
.frame169{aspect-ratio:16/9;width:100%;border:1px solid var(--line);border-radius:8px;background:#000;overflow:hidden}
.frame169 iframe{width:100%;height:100%;border:0}

/* ---------- Playlist editor ---------- */
.pl-top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:start;margin-bottom:16px}
.pl-name{font-size:22px;font-weight:650;border:1px solid transparent;background:transparent;padding:4px 8px;margin-left:-8px;border-radius:7px;width:100%}
.pl-name:hover,.pl-name:focus{border-color:#c9d3d1;background:#fff}
.strip-wrap{padding:14px;min-height:190px}
.strip{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-start}
.item{width:152px;background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden;position:relative;cursor:grab;box-shadow:0 1px 2px rgba(0,0,0,.05)}
.item.dragging{opacity:.35}.item.before::before,.item.after::after{content:"";position:absolute;top:0;bottom:0;width:4px;background:var(--accent);z-index:3}
.item.before::before{left:-1px}.item.after::after{right:-1px}
.item .th{height:86px;background:#e8eeec center/cover no-repeat;display:grid;place-items:center;color:#7c9096;position:relative;font-size:26px}
.item .th svg{width:30px;height:30px}
.item .x{position:absolute;right:4px;top:4px;width:22px;height:22px;border-radius:50%;border:0;background:rgba(16,36,43,.78);color:#fff;cursor:pointer;display:grid;place-items:center;font-size:14px;line-height:1}
.item .cfg{position:absolute;left:4px;top:4px;height:22px;padding:0 6px;border-radius:11px;border:0;background:rgba(16,36,43,.78);color:#fff;cursor:pointer;font-size:11px}
.item .cfg.on{background:var(--accent);color:#fff}
.item .nm{padding:6px 8px 2px;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.item .dur{display:flex;align-items:center;gap:3px;padding:3px 6px 8px}
.item .dur button{width:24px;height:24px;border:1px solid var(--line);background:#fff;border-radius:5px;cursor:pointer;font-weight:700;line-height:1}
.item .dur input{width:100%;text-align:center;padding:2px;min-height:24px;font-size:13px}
.item .dur .nat{flex:1;text-align:center;font-size:12px;color:var(--muted)}
.item.missing{border-color:var(--bad)}
.addhere{width:152px;height:150px;border:2px dashed #b6c5c2;border-radius:8px;display:grid;place-items:center;color:var(--muted);text-align:center;padding:10px;font-size:13px}
.strip.over .addhere{border-color:var(--accent);background:#fff0f7}
.pl-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;margin-top:16px}
@media(max-width:1100px){.pl-layout{grid-template-columns:1fr}}
.libpanel .hd{flex-wrap:wrap}
.libpanel .items{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;padding:12px;max-height:360px;overflow:auto}
.libi{border:1px solid var(--line);border-radius:7px;overflow:hidden;cursor:grab;background:#fff;position:relative}
.libi:hover{border-color:var(--accent)}
.libi .th{height:64px;background:#e8eeec center/cover;display:grid;place-items:center;font-size:22px;color:#7c9096}
.libi .th svg{width:24px;height:24px}
.libi span{display:block;padding:4px 7px;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.libi .add{position:absolute;right:3px;top:3px;width:22px;height:22px;border-radius:50%;border:0;background:var(--accent);color:#fff;font-weight:800;cursor:pointer;opacity:0}
.libi:hover .add,.libi:focus-within .add{opacity:1}
.totalbar{display:flex;gap:16px;align-items:center;padding:8px 14px;border-top:1px solid var(--line2);background:#f8faf9;color:var(--muted);border-radius:0 0 8px 8px}
.dirty{color:var(--warn);font-weight:600}

/* ---------- Compositions ---------- */
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.tpl{border:1px solid var(--line);background:#fff;border-radius:8px;padding:10px;cursor:pointer;text-align:left}
.tpl:hover{border-color:var(--accent);box-shadow:var(--shadow)}
.mini{position:relative;background:#14272e;border-radius:4px;width:100%}
.mini.l{aspect-ratio:16/9}.mini.p{aspect-ratio:9/16;width:52%;margin:0 auto}
.mini i{position:absolute;border:1.5px solid #14272e;border-radius:2px;background:linear-gradient(135deg,#3e7c8a,#2a5864)}
.mini i:nth-child(2n){background:linear-gradient(135deg,var(--accent),#c58306)}
.mini i:nth-child(3n){background:linear-gradient(135deg,#45a58f,#26705f)}
.co-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}
@media(max-width:1000px){.co-layout{grid-template-columns:1fr}}
.canvas-wrap{padding:16px;background:#e5ebe9;border-radius:8px;display:grid;place-items:center}
.canvas{position:relative;background:#000;box-shadow:0 6px 24px rgba(0,0,0,.25);user-select:none;touch-action:none}
.canvas.l{width:100%;aspect-ratio:16/9}.canvas.p{height:520px;aspect-ratio:9/16}
.zone{position:absolute;border:2px solid var(--accent);background:rgba(240,20,124,.2);color:#fff;cursor:move;display:flex;align-items:center;justify-content:center;text-align:center;font-size:12px;overflow:hidden}
.zone.sel{background:rgba(240,20,124,.4);border-color:#fff;z-index:2}
.zone .zl{background:rgba(0,0,0,.65);padding:2px 7px;border-radius:4px;max-width:92%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zone .hdl{position:absolute;right:0;bottom:0;width:16px;height:16px;background:#fff;cursor:nwse-resize;border-radius:3px 0 0 0}
.zlist button{display:flex;gap:8px;align-items:center;width:100%;text-align:left;border:1px solid var(--line);background:#fff;border-radius:7px;padding:7px 10px;cursor:pointer;margin-bottom:6px}
.zlist button.on{border-color:var(--accent);background:#fff0f7}

/* ---------- Calendar ---------- */
.cal{display:grid;grid-template-columns:54px repeat(7,minmax(90px,1fr));border:1px solid var(--line);border-radius:8px;background:#fff;overflow:auto}
.cal .hdc{padding:8px;font-weight:600;border-bottom:1px solid var(--line);background:#f8faf9;text-align:center;position:sticky;top:0;z-index:3}
.cal .hdc.today{background:var(--accent);color:#fff}
.cal .hr{height:44px;border-bottom:1px solid var(--line2);font-size:11px;color:var(--muted);padding:2px 6px;text-align:right}
.cal .daycol{position:relative;border-left:1px solid var(--line2);height:calc(44px * 24)}
.cal .daycol .ln{position:absolute;left:0;right:0;border-top:1px solid var(--line2)}
.cal .ev{position:absolute;left:3px;right:3px;border-radius:5px;padding:3px 6px;font-size:12px;color:#fff;overflow:hidden;cursor:pointer;border:1px solid rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2);line-height:1.2}
.cal .ev.off{opacity:.45}
.cal .now{position:absolute;left:0;right:0;border-top:2px solid var(--bad);z-index:2}
.cal-scroll{max-height:640px;overflow:auto;border:1px solid var(--line);border-radius:8px}
.cal-scroll .cal{border:0;overflow:visible}
.days{display:flex;gap:5px;flex-wrap:wrap}
.days label{border:1px solid #c9d3d1;border-radius:6px;padding:4px 10px;cursor:pointer;font-weight:550;background:#fff}
.days input{display:none}.days label:has(input:checked){background:var(--ink);color:#fff;border-color:var(--ink)}

/* ---------- Screens ---------- */
.screen-layout{display:grid;grid-template-columns:330px minmax(0,1fr);gap:20px;align-items:start}
@media(max-width:1000px){.screen-layout{grid-template-columns:1fr}}
.shot{aspect-ratio:16/9;background:#0b1417;border-radius:8px;display:grid;place-items:center;color:#7c9096;overflow:hidden;position:relative}
.shot img{width:100%;height:100%;object-fit:contain}
.shot.p{aspect-ratio:9/16;max-height:420px;margin:0 auto}
.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 14px}
.kv dt{color:var(--muted)}.kv dd{margin:0;word-break:break-word}
.rule-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:10px;border:1px solid var(--line);border-radius:7px;margin-bottom:8px;background:#fafcfb}
.orient{display:flex;gap:10px;flex-wrap:wrap}
.orient button{border:2px solid var(--line);background:#fff;border-radius:8px;padding:10px 14px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px;min-width:84px}
.orient button.on{border-color:var(--accent);background:#fff0f7}
.orient .tv{width:46px;height:28px;border:3px solid var(--ink);border-radius:3px;display:grid;place-items:center;font-size:11px;font-weight:700}
.alert-preview{border-radius:10px;padding:26px;text-align:center;font-size:24px;font-weight:700;min-height:120px;display:grid;place-items:center}

/* ---------- Modal / toast ---------- */
.overlay{position:fixed;inset:0;background:rgba(10,22,26,.55);z-index:80;display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;overflow:auto}
.modal{background:#fff;border-radius:12px;width:100%;max-width:560px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.modal.wide{max-width:860px}.modal.xl{max-width:1080px}
.modal>.hd{padding:16px 20px;border-bottom:1px solid var(--line2);display:flex;align-items:center;gap:10px}
.modal>.bd{padding:18px 20px;max-height:70vh;overflow:auto}
.modal>.ft{padding:12px 20px;border-top:1px solid var(--line2);display:flex;gap:8px;justify-content:flex-end;background:#fafcfb;border-radius:0 0 12px 12px}
.toasts{position:fixed;left:50%;transform:translateX(-50%);top:14px;z-index:100;display:flex;flex-direction:column;gap:8px;align-items:center}
.toast{background:var(--ink);color:#fff;padding:9px 16px;border-radius:8px;box-shadow:var(--shadow);animation:tin .18s ease-out}
.toast.err{background:var(--bad)}
@keyframes tin{from{transform:translateY(-8px);opacity:0}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.pick-list{max-height:300px;overflow:auto;border:1px solid var(--line);border-radius:7px}
.pick-list button{display:flex;gap:10px;align-items:center;width:100%;border:0;border-bottom:1px solid var(--line2);background:#fff;padding:8px 12px;cursor:pointer;text-align:left}
.pick-list button svg{width:18px;height:18px;flex:none;opacity:.75}
.pick-list button:hover{background:var(--line2)}.pick-list button.on{background:#fff0f7}

.org-switch svg{width:16px;height:16px;flex:none;opacity:.7}

/* garde-fou : une icône sans règle de taille reste petite */
svg.ico{width:18px;height:18px;flex:none}
