:root{--navy:#0B1F3A;--navy-2:#13294B;--navy-3:#1D3760;--gold:#C9A227;--gold-2:#E3C565;--ivory:#F7F4EC;--paper:#FFFFFF;--ink:#14213D;--muted:#5D6B82;--line:#E4DED0;--ok:#1F7A4D;--warn:#B7791F;--bad:#B42318;--r:12px;--shadow:0 1px 2px rgba(11,31,58,.06),0 8px 24px rgba(11,31,58,.06)}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:'Outfit',system-ui,sans-serif;background:var(--ivory);color:var(--ink);font-size:15px;-webkit-font-smoothing:antialiased}
::selection{background:var(--gold);color:var(--navy)}
h1,h2,h3{font-family:'Fraunces',serif;font-weight:600;letter-spacing:-.01em;margin:0}
h1{font-size:32px}h2{font-size:22px}h3{font-size:17px}
a{color:var(--navy-3)}
button,input,select,textarea{font:inherit;color:inherit}
.hidden{display:none!important}
/* layout */
.shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh}
.side{background:var(--navy);color:#DCE3EE;padding:22px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:4px;overflow:auto}
.brand{display:flex;align-items:center;gap:10px;padding:4px 10px 22px}
.brand img{width:36px;height:36px;object-fit:contain;border-radius:8px;background:#fff1}
.brand .mark{width:36px;height:36px;border-radius:9px;background:var(--gold);color:var(--navy);display:grid;place-items:center;font-family:'Fraunces';font-weight:700}
.brand b{font-family:'Fraunces';font-size:16px;color:#fff;line-height:1.15}
.brand small{display:block;color:var(--gold-2);font-size:11px;letter-spacing:.14em;text-transform:uppercase}
.nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:#C6D0E0;text-decoration:none;transition:background-color .15s,color .15s}
.nav a:hover{background:var(--navy-2);color:#fff}
.nav a.on{background:var(--navy-3);color:#fff;box-shadow:inset 3px 0 0 var(--gold)}
.nav a i{width:18px;height:18px}
.nav .sec{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#7E8DA6;padding:16px 12px 6px}
.nav .badge{margin-left:auto}
.side .me{margin-top:auto;padding:14px 12px;border-top:1px solid #ffffff14;font-size:13px}
.side .me b{display:block;color:#fff}
.main{padding:34px 44px 80px;max-width:1500px;width:100%}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:26px;flex-wrap:wrap}
.head p{margin:6px 0 0;color:var(--muted)}
.eyebrow{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--warn);font-weight:600;margin-bottom:6px}
/* ui */
.btn{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:#fff;padding:9px 16px;border-radius:999px;cursor:pointer;font-weight:500;transition:background-color .15s,border-color .15s,transform .1s;white-space:nowrap;text-decoration:none;color:var(--ink)}
.btn:hover{border-color:var(--navy-3)}
.btn:active{transform:scale(.97)}
.btn.pri{background:var(--navy);border-color:var(--navy);color:#fff}
.btn.pri:hover{background:var(--navy-3)}
.btn.gold{background:var(--gold);border-color:var(--gold);color:var(--navy);font-weight:600}
.btn.gold:hover{background:var(--gold-2)}
.btn.danger{color:var(--bad)}
.btn.sm{padding:5px 11px;font-size:13px}
.btn.icon{padding:7px;border-radius:9px}
.btn[disabled]{opacity:.5;pointer-events:none}
.btn i{width:16px;height:16px}
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:22px;box-shadow:var(--shadow)}
.grid{display:grid;gap:18px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.between{justify-content:space-between}
.stack{display:flex;flex-direction:column;gap:12px}
label.f{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted);font-weight:500}
label.f .req{color:var(--bad)}
input.in,select.in,textarea.in{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 12px;width:100%;color:var(--ink);transition:border-color .15s,box-shadow .15s}
input.in:focus,select.in:focus,textarea.in:focus{outline:none;border-color:var(--navy-3);box-shadow:0 0 0 3px #1D376022}
textarea.in{min-height:90px;resize:vertical}
input[type=color].in{padding:2px;height:40px}
.chk{display:inline-flex;gap:8px;align-items:center;cursor:pointer;font-size:14px}
.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:999px;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}
.b-ok{background:#E3F2EA;color:var(--ok)}.b-warn{background:#FCF1DC;color:var(--warn)}.b-bad{background:#FDE7E5;color:var(--bad)}.b-mute{background:#EEF0F4;color:var(--muted)}.b-navy{background:var(--navy);color:#fff}.b-gold{background:#F6EBC6;color:#7A5D00}
table.t{width:100%;border-collapse:collapse}
table.t th{text-align:left;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;padding:10px 12px;border-bottom:1px solid var(--line)}
table.t td{padding:12px;border-bottom:1px solid #F0ECE2;vertical-align:middle}
table.t tr:hover td{background:#FBFAF6}
.avatar{width:38px;height:38px;border-radius:50%;object-fit:cover;background:var(--line);display:inline-grid;place-items:center;font-weight:600;color:var(--navy);font-size:14px;flex:none}
.stat{padding:20px 22px}
.stat .n{font-family:'Fraunces';font-size:40px;font-weight:600;color:var(--navy)}
.stat .l{color:var(--muted);font-size:13px}
.empty{padding:40px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:var(--r);background:#FFFDF8}
.muted{color:var(--muted)}.small{font-size:13px}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:16px}
.tabs button{border:0;background:none;padding:10px 14px;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;font-weight:500}
.tabs button.on{color:var(--navy);border-color:var(--gold)}
/* toast & modal */
#toasts{position:fixed;right:22px;bottom:22px;display:flex;flex-direction:column;gap:10px;z-index:9999}
.toast{background:var(--navy);color:#fff;padding:12px 18px;border-radius:12px;box-shadow:0 10px 30px #0004;max-width:420px;animation:tin .25s ease;border-left:4px solid var(--gold)}
.toast.err{border-left-color:#F97066}
@keyframes tin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.modal-bg{position:fixed;inset:0;background:#0B1F3A88;backdrop-filter:blur(6px);display:grid;place-items:center;z-index:900;padding:20px;animation:fade .2s}
.modal{background:#fff;border-radius:16px;width:min(760px,100%);max-height:92vh;overflow:auto;padding:26px;box-shadow:0 30px 80px #0005}
.modal.wide{width:min(1150px,100%)}
@keyframes fade{from{opacity:0}to{opacity:1}}
.fade-in{animation:rise .35s ease both}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
/* login */
.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;background:var(--navy)}
.login .art{padding:60px;color:#fff;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.login .art:after{content:'';position:absolute;right:-120px;bottom:-120px;width:460px;height:460px;border-radius:50%;border:60px solid #C9A22722}
.login .art h1{font-size:54px;line-height:1.05;max-width:560px}
.login .art h1 em{color:var(--gold);font-style:italic}
.login .panel{background:var(--ivory);display:grid;place-items:center;padding:40px}
.login form{width:min(380px,100%)}
/* slide hosts */
.sl-host{position:relative;overflow:hidden;background:#000;border-radius:10px;aspect-ratio:16/9;width:100%}
.sl-scale{position:absolute;left:50%;top:50%;width:1600px;height:900px;transform-origin:center}
.sl-stage{position:absolute;inset:0;width:1600px;height:900px;overflow:hidden}
.sl-deco{position:absolute}
.sl-region{position:absolute;display:flex;flex-direction:column;overflow:hidden}
.sl-text{line-height:1.2;max-width:100%;word-wrap:break-word}
ul.sl-text{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.3em}
ul.sl-text li{padding-left:1.1em;position:relative}
ul.sl-text li:before{content:'';position:absolute;left:0;top:.5em;width:.45em;height:.45em;border-radius:2px;background:var(--b)}
.sl-f-contact,.sl-f-intro{white-space:pre-line}
.sl-img{flex:none;overflow:hidden;display:grid;place-items:center}
.sl-img img{width:100%;height:100%;object-fit:cover}
.sl-circle{border-radius:50%}.sl-rounded{border-radius:28px}.sl-square{border-radius:0}
.sl-contain img{object-fit:contain}
.sl-brandlogo{position:absolute;right:60px;bottom:50px;height:90px;max-width:260px;object-fit:contain}
.sl-media{background:#000;display:grid;place-items:center}
.sl-media img,.sl-media video{max-width:1600px;max-height:900px;width:100%;height:100%;object-fit:contain}
.sl-media canvas{max-width:1600px;max-height:900px;height:auto}
.sl-err{color:#fff;font-size:40px}
/* misc components */
.thumb{width:160px;flex:none}
.list-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;transition:border-color .15s,box-shadow .15s}
.list-item:hover{border-color:#cfc6b0}
.list-item.drag{opacity:.4}
.list-item.over{box-shadow:0 -3px 0 var(--gold)}
.handle{cursor:grab;color:#A9A08A}
.seq-feature{background:linear-gradient(90deg,#FFF8E1,#fff);border-color:#E9D58C}
.seq-off{opacity:.55;background:#F6F5F1}
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:#EEF1F6;font-size:13px;border:1px solid #DCE2EC}
.chip button{border:0;background:none;cursor:pointer;padding:0;color:var(--muted);display:inline-flex}
.chip.lock{background:#F6EBC6;border-color:#E9D58C}
.split{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(340px,1fr);gap:22px;align-items:start}
.sticky{position:sticky;top:20px}
.diff{display:grid;grid-template-columns:140px 1fr 1fr;gap:0;font-size:14px;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.diff>div{padding:8px 10px;border-bottom:1px solid #F0ECE2;white-space:pre-line;word-break:break-word}
.diff .h{background:#FBF8F0;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.diff .chg{background:#FFF7E0}
.progress{height:6px;background:#EEE;border-radius:9px;overflow:hidden}.progress>div{height:100%;background:var(--gold);transition:width .2s}
.spinner{width:16px;height:16px;border:2px solid #fff6;border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}
.spinner.dark{border-color:#0002;border-top-color:var(--navy)}
@keyframes spin{to{transform:rotate(360deg)}}
.offline-pill{position:fixed;top:12px;left:50%;transform:translateX(-50%);background:var(--warn);color:#fff;padding:6px 14px;border-radius:999px;font-size:13px;z-index:999}
/* designer */
.dz-canvas{position:relative}
.dz-overlay{position:absolute;inset:0;pointer-events:none}
.dz-box{position:absolute;border:1.5px dashed #C9A227cc;pointer-events:auto;cursor:move;transition:background-color .1s}
.dz-box:hover{background:#C9A22714}
.dz-box.sel{border:2px solid var(--gold);background:#C9A2271f}
.dz-box .tag{position:absolute;left:-1px;top:-20px;background:var(--gold);color:var(--navy);font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px 4px 0 0;white-space:nowrap}
.dz-box .rs{position:absolute;right:-6px;bottom:-6px;width:12px;height:12px;background:var(--gold);border-radius:3px;cursor:nwse-resize}
.ai-box{background:linear-gradient(160deg,var(--navy),var(--navy-3));color:#fff;border-radius:var(--r);padding:20px}
.ai-box textarea{background:#ffffff12;border-color:#ffffff30;color:#fff}
.ai-box textarea::placeholder{color:#ffffff80}
.sugg{display:flex;flex-wrap:wrap;gap:6px}
.sugg button{border:1px solid #ffffff30;background:#ffffff0d;color:#E7ECF4;border-radius:999px;padding:4px 10px;font-size:12px;cursor:pointer}
.sugg button:hover{background:#ffffff22}
.proposal{border:2px solid var(--gold);border-radius:12px;padding:14px;background:#FFFBEF}
/* presenter */
.pres{position:fixed;inset:0;background:#081428;color:#E6ECF5;display:grid;grid-template-rows:auto 1fr;z-index:500;font-family:'Outfit'}
.pres-top{display:flex;align-items:center;gap:12px;padding:10px 18px;border-bottom:1px solid #ffffff12;background:#0B1F3A}
.pres-top h2{font-size:18px;color:#fff}
.pres .btn{background:#13294B;border-color:#ffffff1f;color:#fff}
.pres .btn:hover{border-color:var(--gold)}
.pres .btn.gold{background:var(--gold);color:var(--navy)}
.pres .btn.on{background:var(--gold);color:var(--navy)}
.pres-body{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:16px;padding:16px;min-height:0}
.pres-left{display:grid;grid-template-rows:auto auto auto;gap:12px;min-height:0;overflow:auto;align-content:start}
.pres-views{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:14px;align-items:start}
.pres-label{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#8EA0BC;margin-bottom:6px;display:flex;gap:8px;align-items:center}
.pres-label b{color:var(--gold)}
.pres .sl-host{border:2px solid #ffffff14}
.pres .cur .sl-host{border-color:var(--gold)}
.pres-ctrl{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.pres-ctrl .big{padding:14px 26px;font-size:16px}
.pres-right{display:flex;flex-direction:column;gap:12px;min-height:0}
.panel-d{background:#0E2240;border:1px solid #ffffff14;border-radius:12px;padding:14px}
.timer{font-family:'JetBrains Mono',monospace;font-size:64px;font-weight:600;text-align:center;letter-spacing:-.02em;line-height:1;padding:8px 0;transition:color .2s}
.timer.warn{color:#F5B83D}.timer.over{color:#FF5F57;animation:pulse 1s infinite}
@keyframes pulse{50%{opacity:.55}}
.seq{overflow:auto;flex:1;min-height:120px}
.seq .sg{border-radius:8px;margin-bottom:4px}
.seq .sg-h{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:8px;cursor:pointer;font-size:14px}
.seq .sg-h:hover{background:#ffffff0d}
.seq .sg.cur>.sg-h{background:#C9A22726;box-shadow:inset 3px 0 0 var(--gold)}
.seq .sg.nxt>.sg-h{box-shadow:inset 3px 0 0 #5B8DEF}
.seq .sg.off{opacity:.45}
.seq .sg.feat>.sg-h{color:var(--gold-2)}
.seq .st{padding:4px 9px 4px 34px;font-size:12.5px;color:#9FB0CA;cursor:pointer;border-radius:6px}
.seq .st:hover{background:#ffffff0a}
.seq .st.cur{color:#fff;background:#ffffff14}
.seq .num{width:22px;text-align:right;color:#6F84A5;font-size:12px;flex:none}
.pres input.in{background:#081428;border-color:#ffffff24;color:#fff;padding:6px 8px}
.feat-banner{background:linear-gradient(90deg,#C9A227,#E3C565);color:#0B1F3A;border-radius:10px;padding:10px 14px;display:flex;align-items:center;gap:10px;font-weight:600}
/* audience */
.aud{position:fixed;inset:0;background:#000;cursor:none}
.aud .sl-host{position:absolute;inset:0;border-radius:0;aspect-ratio:auto;width:100%;height:100%}
.aud-timer{position:fixed;right:28px;top:22px;font-family:'JetBrains Mono',monospace;font-size:48px;background:#000a;color:#fff;padding:6px 18px;border-radius:12px;z-index:5}
.aud-timer.warn{color:#F5B83D}.aud-timer.over{color:#FF5F57}
.aud-start{position:fixed;inset:0;display:grid;place-items:center;background:#0B1F3A;color:#fff;z-index:10;cursor:pointer;text-align:center}
.aud-start h1{font-size:44px}
.aud-fade{animation:fade .35s}
@media (max-width:1100px){.split,.pres-body{grid-template-columns:1fr}.g4{grid-template-columns:repeat(2,1fr)}.login{grid-template-columns:1fr}.login .art{display:none}}
@media (max-width:800px){.shell{grid-template-columns:1fr}.side{position:relative;height:auto}.main{padding:20px}.g2,.g3{grid-template-columns:1fr}}
