/* ======================================================================
   Presentation Studio — editor chrome + template-driven slide rendering.
   The slide "stage" is a fixed 1280×720 coordinate space (96px = 1in, so it
   mirrors the 13.333"×7.5" PPTX export) scaled to fit its container. Slide
   visuals are driven entirely by CSS custom properties the JS sets from the
   chosen template palette + [data-style].
   ====================================================================== */

:root{
  --ps-bg:#0e0f14; --ps-panel:#16181f; --ps-panel2:#1d2029; --ps-line:#2a2e39;
  --ps-ink:#eceef4; --ps-mut:#9aa0ad; --ps-ac:#6c8cff; --ps-ac2:#c46cff;
  --ps-danger:#ff5d6c;
}
[data-theme="light"]{
  --ps-bg:#eef0f4; --ps-panel:#ffffff; --ps-panel2:#f4f5f8; --ps-line:#e2e5ec;
  --ps-ink:#1a1d24; --ps-mut:#6a7180; --ps-ac:#4b5bd6; --ps-ac2:#8b3bd6;
}

.ps-topbar{position:relative;z-index:20}
body{background:var(--ps-bg)}

.ps-app{display:flex;flex-direction:column;height:calc(100vh - 58px);
  background:var(--ps-bg);color:var(--ps-ink);
  font-family:"Inter",system-ui,sans-serif;overflow:hidden}
.rg-embed .ps-app{height:calc(100vh - 8px)}

/* ---------------- toolbar ---------------- */
.ps-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:.5rem .8rem;background:var(--ps-panel);border-bottom:1px solid var(--ps-line);
  flex:0 0 auto}
.ps-tb-left{display:flex;align-items:center;gap:.7rem;min-width:0}
.ps-title-in{background:transparent;border:1px solid transparent;border-radius:8px;
  color:var(--ps-ink);font-weight:700;font-size:1rem;padding:.35rem .5rem;
  font-family:inherit;max-width:44vw;min-width:120px}
.ps-title-in:hover{border-color:var(--ps-line)}
.ps-title-in:focus{outline:none;border-color:var(--ps-ac);background:var(--ps-panel2)}
.ps-tb-meta{font-size:.78rem;color:var(--ps-mut);white-space:nowrap}
.ps-tb-right{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}

.ps-btn{display:inline-flex;align-items:center;gap:.4rem;border:1px solid var(--ps-line);
  background:var(--ps-panel2);color:var(--ps-ink);font-family:inherit;font-weight:600;
  font-size:.85rem;padding:.5rem .8rem;border-radius:9px;cursor:pointer;transition:.15s;white-space:nowrap}
.ps-btn:hover{border-color:var(--ps-ac);transform:translateY(-1px)}
.ps-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.ps-btn-primary{background:linear-gradient(100deg,#f5921e,#ff5d8f,#7b4fc4,#5b5bf0);
  border:0;color:#fff;box-shadow:0 6px 18px -8px rgba(123,79,196,.6)}
.ps-btn-ai{background:linear-gradient(100deg,#5b5bf0,#8b3bd6);border:0;color:#fff}
.ps-btn-ai.wide{width:100%;justify-content:center;margin-top:.4rem}
.ps-btn-ai.big{font-size:.95rem;padding:.7rem 1.3rem}
.ps-btn-danger{color:var(--ps-danger);border-color:transparent}
.ps-btn-danger:hover{border-color:var(--ps-danger)}
.ps-btn span{font-size:.9em}

/* ---------------- ribbon ---------------- */
.ps-ribbon{flex:0 0 auto;background:var(--ps-panel);border-bottom:1px solid var(--ps-line);position:relative;z-index:30}
.ps-rb-top{display:flex;align-items:center;gap:.6rem;padding:.35rem .7rem;border-bottom:1px solid var(--ps-line)}
.ps-rb-tabs{display:flex;gap:.1rem;margin-left:.4rem}
.ps-rb-tab{background:transparent;border:0;color:var(--ps-mut);font-family:inherit;font-weight:600;font-size:.82rem;
  padding:.45rem .8rem;border-radius:8px 8px 0 0;cursor:pointer;position:relative;top:1px}
.ps-rb-tab:hover{color:var(--ps-ink);background:var(--ps-panel2)}
.ps-rb-tab.is-on{color:var(--ps-ink);background:var(--ps-panel2)}
.ps-rb-tab.ps-rb-fmt{color:#c46cff}
.ps-rb-quick{margin-left:auto;display:flex;gap:.45rem}
.ps-rb-body{position:relative;min-height:76px}
.ps-rb-panel{display:none;align-items:stretch;gap:0;padding:.35rem .5rem;overflow-x:auto}
.ps-rb-panel.is-on{display:flex}
.ps-grp{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:0 .6rem;
  border-right:1px solid var(--ps-line);position:relative;justify-content:center}
.ps-grp:last-child{border-right:0}
.ps-grp-grow{flex:1;min-width:180px}
.ps-grp-lbl{font-size:.62rem;color:var(--ps-mut);white-space:nowrap;margin-top:auto}
.ps-tool-row{display:flex;gap:.2rem;align-items:center}
.ps-tool{display:flex;flex-direction:column;align-items:center;gap:.15rem;min-width:52px;padding:.3rem .4rem;
  border:1px solid transparent;border-radius:8px;background:transparent;color:var(--ps-ink);
  font-family:inherit;font-size:.66rem;font-weight:500;line-height:1.05;cursor:pointer;text-align:center}
.ps-tool i{font-size:1.15rem;font-style:normal;line-height:1}
.ps-tool:hover{background:var(--ps-panel2);border-color:var(--ps-line)}
.ps-tool-ai{color:#fff;background:linear-gradient(135deg,#5b5bf0,#8b3bd6);border:0}
.ps-tool-ai:hover{filter:brightness(1.08)}
.ps-tool-danger{color:var(--ps-danger)}
.ps-ico{min-width:30px;height:28px;padding:0 .4rem;border:1px solid var(--ps-line);background:var(--ps-panel2);
  color:var(--ps-ink);font-family:inherit;font-size:.82rem;border-radius:6px;cursor:pointer;display:inline-flex;
  align-items:center;justify-content:center;gap:.25rem}
.ps-ico.sm{font-size:.72rem;min-width:26px}
.ps-ico.wide{min-width:74px}
.ps-ico:hover{border-color:var(--ps-ac);color:var(--ps-ac)}
.ps-ico.on{background:var(--ps-ac);color:#fff;border-color:var(--ps-ac)}
.ps-in.sm{width:118px;padding:.3rem .4rem;font-size:.78rem}
.ps-in.xs{width:48px;padding:.3rem .3rem;font-size:.78rem;text-align:center}
.ps-colorbtn{position:relative;flex-direction:column;gap:1px;font-size:.66rem;font-weight:700;padding:.15rem .35rem;overflow:hidden}
.ps-colorbtn span{display:block;width:20px;height:4px;border-radius:2px}
.ps-colorbtn input[type=color]{position:absolute;inset:0;opacity:0;cursor:pointer}
.ps-rb-needsel.is-disabled{opacity:.4;pointer-events:none}
.ps-tpl-strip{display:flex;gap:.35rem;overflow-x:auto;padding:.1rem}
.ps-tpl-chip{width:44px;height:40px;border-radius:7px;border:1px solid var(--ps-line);cursor:pointer;
  display:grid;place-items:center;font-weight:800;font-size:.85rem;flex:0 0 auto}
.ps-tpl-chip:hover{outline:2px solid var(--ps-ac)}
.ps-trans{display:flex;gap:.35rem;flex-wrap:wrap}
.ps-trans-item{padding:.4rem .7rem;border:1px solid var(--ps-line);background:var(--ps-panel2);color:var(--ps-ink);
  font-family:inherit;font-size:.76rem;border-radius:7px;cursor:pointer}
.ps-trans-item:hover{border-color:var(--ps-ac)}
.ps-trans-item.on{background:var(--ps-ac);color:#fff;border-color:var(--ps-ac)}
.ps-shapes-fly{position:absolute;z-index:70;top:100%;left:230px;background:var(--ps-panel);border:1px solid var(--ps-line);
  border-radius:12px;padding:.5rem;box-shadow:0 20px 50px -20px rgba(0,0,0,.6);
  display:grid;grid-template-columns:repeat(6,1fr);gap:.3rem;width:250px}
.ps-shapes-fly[hidden]{display:none}
.ps-shapes-fly button{width:34px;height:34px;border:1px solid var(--ps-line);background:var(--ps-panel2);
  color:var(--ps-ink);font-size:1.1rem;border-radius:7px;cursor:pointer}
.ps-shapes-fly button:hover{border-color:var(--ps-ac);color:var(--ps-ac)}

.ps-export-more{position:relative}
#btnExportMore{padding:.4rem .5rem}
.ps-export-fly{position:absolute;z-index:70;top:100%;right:0;margin-top:.3rem;background:var(--ps-panel);
  border:1px solid var(--ps-line);border-radius:10px;padding:.35rem;box-shadow:0 20px 50px -20px rgba(0,0,0,.6);
  display:flex;flex-direction:column;gap:.2rem;min-width:230px}
.ps-export-fly[hidden]{display:none}
.ps-export-fly button{text-align:left;padding:.5rem .6rem;border:0;background:transparent;color:var(--ps-ink);
  font-family:inherit;font-size:.8rem;border-radius:7px;cursor:pointer;white-space:nowrap}
.ps-export-fly button:hover{background:var(--ps-panel2);color:var(--ps-ac)}

/* ---------------- free-form elements on the stage ---------------- */
.s-elements{position:absolute;inset:0;z-index:5}
.s-el{position:absolute;cursor:move}
.s-el-txt{width:100%;height:100%;outline:none;overflow:hidden;display:flex;flex-direction:column;justify-content:center;
  word-break:break-word;line-height:1.25}
.s-el-txt.shape{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:6px}
.s-el-media{width:100%;height:100%;display:block;border-radius:4px}
.s-el-shape svg,.s-el-line svg{width:100%;height:100%;display:block;overflow:visible}
.ps-stage.editing .s-el{outline:1px dashed transparent}
.ps-stage.editing .s-el:hover{outline:1px dashed color-mix(in srgb,var(--ps-ac) 60%,transparent)}
.ps-stage.editing .s-el.editing{cursor:text}

/* selection frame + handles (screen-space overlay in the holder) */
.ps-selbox{position:absolute;z-index:20;border:1.5px solid var(--ps-ac);pointer-events:none}
.ps-selbox[hidden]{display:none}
.ps-h{position:absolute;width:10px;height:10px;background:#fff;border:1.5px solid var(--ps-ac);border-radius:2px;
  pointer-events:auto}
.ps-h-nw{left:-5px;top:-5px;cursor:nwse-resize}.ps-h-n{left:calc(50% - 5px);top:-5px;cursor:ns-resize}
.ps-h-ne{right:-5px;top:-5px;cursor:nesw-resize}.ps-h-e{right:-5px;top:calc(50% - 5px);cursor:ew-resize}
.ps-h-se{right:-5px;bottom:-5px;cursor:nwse-resize}.ps-h-s{left:calc(50% - 5px);bottom:-5px;cursor:ns-resize}
.ps-h-sw{left:-5px;bottom:-5px;cursor:nesw-resize}.ps-h-w{left:-5px;top:calc(50% - 5px);cursor:ew-resize}

/* present-mode transitions */
.ps-tr-fade{animation:pstf .5s ease}
@keyframes pstf{from{opacity:0}to{opacity:1}}
.ps-tr-slide{animation:psts .45s cubic-bezier(.22,.8,.2,1)}
@keyframes psts{from{transform:translateX(6%) scale(var(--sc,1));opacity:0}}
.ps-tr-push{animation:pstp .45s cubic-bezier(.22,.8,.2,1)}
@keyframes pstp{from{transform:translateY(6%);opacity:.2}}
.ps-tr-zoom{animation:pstz .45s cubic-bezier(.22,.8,.2,1)}
@keyframes pstz{from{transform:scale(.92);opacity:0}}
.ps-tr-flip{animation:pstfl .55s ease}
@keyframes pstfl{from{transform:perspective(1200px) rotateY(20deg);opacity:0}}
/* per-element animations (Animations tab; play back in Present mode) */
.ps-anim-pane{display:flex;flex-direction:column;gap:.25rem;max-height:120px;overflow-y:auto;min-width:220px}
.ps-anim-row{display:flex;align-items:center;gap:.4rem;padding:.3rem .45rem;border:1px solid var(--ps-line);
  border-radius:6px;background:var(--ps-panel2);cursor:pointer;font-size:.74rem}
.ps-anim-row.is-on{border-color:var(--ps-ac);background:color-mix(in srgb,var(--ps-ac) 12%,var(--ps-panel2))}
.ps-anim-row .n{width:18px;height:18px;border-radius:50%;background:var(--ps-ac);color:#fff;display:grid;
  place-items:center;font-size:.66rem;font-weight:700;flex:0 0 auto}
.ps-anim-row .lbl{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ps-anim-row .eff{opacity:.65;font-size:.68rem}
.ps-anim-row button{border:0;background:transparent;color:var(--ps-ink);cursor:pointer;opacity:.6;padding:0 .15rem}
.ps-anim-row button:hover{opacity:1;color:var(--ps-ac)}
.ps-anim-empty{opacity:.5;font-size:.76rem;padding:.3rem}

.s-el.ps-a-anim{transition:opacity .45s cubic-bezier(.22,.8,.2,1),transform .45s cubic-bezier(.22,.8,.2,1)}
.s-el[data-haslink]::after{content:"🔗";position:absolute;top:-9px;right:-9px;font-size:12px;
  background:var(--ps-panel);border:1px solid var(--ps-line);border-radius:50%;width:18px;height:18px;
  display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:5}
.ps-present .s-el[data-haslink]{cursor:pointer}
.ps-present .s-el[data-elid][data-has-action]{cursor:pointer}

.ps-tr-rise{animation:pstr .5s cubic-bezier(.22,.8,.2,1)}
@keyframes pstr{from{transform:translateY(10%);opacity:0}}

/* ---------------- three-pane ---------------- */
.ps-body{display:flex;flex:1 1 auto;min-height:0}

/* slide rail */
.ps-rail{flex:0 0 210px;background:var(--ps-panel);border-right:1px solid var(--ps-line);
  display:flex;flex-direction:column;min-height:0}
.ps-rail-head{display:flex;align-items:center;justify-content:space-between;
  padding:.65rem .8rem;font-size:.72rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ps-mut);border-bottom:1px solid var(--ps-line)}
.ps-mini{width:26px;height:26px;border-radius:7px;border:1px solid var(--ps-line);
  background:var(--ps-panel2);color:var(--ps-ink);font-size:1rem;line-height:1;cursor:pointer}
.ps-mini:hover{border-color:var(--ps-ac);color:var(--ps-ac)}
.ps-thumbs{flex:1 1 auto;overflow-y:auto;padding:.6rem;display:flex;flex-direction:column;gap:.55rem}
.ps-thumb{position:relative;border-radius:9px;cursor:pointer;transition:.15s;
  border:2px solid transparent;background:var(--ps-panel2)}
.ps-thumb.is-on{border-color:var(--ps-ac)}
.ps-thumb:hover{transform:translateY(-1px)}
.ps-thumb .ps-thumb-no{position:absolute;left:-2px;top:-2px;z-index:3;background:var(--ps-ac);
  color:#fff;font-size:.62rem;font-weight:700;padding:.05rem .3rem;border-radius:7px 0 7px 0}
.ps-thumb .ps-thumb-holder{border-radius:8px;overflow:hidden;pointer-events:none;display:block}
.ps-thumb.drag-over{border-color:var(--ps-ac2)}
.ps-thumb-tools{position:absolute;right:4px;top:4px;display:flex;gap:2px;opacity:0;transition:.15s;z-index:4}
.ps-thumb:hover .ps-thumb-tools{opacity:1}
.ps-thumb-tools button{width:20px;height:20px;border:0;border-radius:5px;cursor:pointer;
  background:rgba(0,0,0,.55);color:#fff;font-size:.7rem;line-height:1;display:grid;place-items:center}
.ps-thumb-tools button:hover{background:var(--ps-ac)}

/* canvas */
.ps-canvas{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;padding:1.4rem;gap:.8rem;overflow:auto}
.ps-stage-wrap{width:100%;max-width:1000px;display:flex;justify-content:center}
.ps-holder{position:relative;box-shadow:0 24px 60px -24px rgba(0,0,0,.55);border-radius:6px;overflow:hidden}
.ps-hint-bar{font-size:.76rem;color:var(--ps-mut);text-align:center}

/* inspector */
.ps-inspector{flex:0 0 300px;background:var(--ps-panel);border-left:1px solid var(--ps-line);
  display:flex;flex-direction:column;min-height:0}
.ps-insp-tabs{display:flex;border-bottom:1px solid var(--ps-line)}
.ps-tab{flex:1;background:transparent;border:0;border-bottom:2px solid transparent;
  color:var(--ps-mut);font-family:inherit;font-weight:600;font-size:.82rem;padding:.7rem 0;cursor:pointer}
.ps-tab.is-on{color:var(--ps-ink);border-bottom-color:var(--ps-ac)}
.ps-insp-body{flex:1 1 auto;overflow-y:auto;padding:1rem}
.ps-pane{display:none}.ps-pane.is-on{display:block}
.ps-pane h4{font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;
  color:var(--ps-mut);margin:1.1rem 0 .5rem}
.ps-pane h4:first-child{margin-top:0}
.ps-in{width:100%;background:var(--ps-panel2);border:1px solid var(--ps-line);border-radius:8px;
  color:var(--ps-ink);font-family:inherit;font-size:.85rem;padding:.55rem .65rem}
.ps-in:focus{outline:none;border-color:var(--ps-ac)}
.ps-in.ta{min-height:90px;resize:vertical;line-height:1.5}
.ps-in.sel{cursor:pointer}
.ps-field{display:flex;flex-direction:column;gap:.4rem}

.ps-layouts{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}
.ps-lay{border:1px solid var(--ps-line);background:var(--ps-panel2);border-radius:8px;
  padding:.5rem;cursor:pointer;font-size:.75rem;font-weight:600;color:var(--ps-ink);
  display:flex;flex-direction:column;align-items:center;gap:.35rem;transition:.15s}
.ps-lay:hover{border-color:var(--ps-ac)}
.ps-lay.is-on{border-color:var(--ps-ac);background:color-mix(in srgb,var(--ps-ac) 14%,transparent)}
.ps-lay svg{width:40px;height:24px}
.ps-lay svg rect,.ps-lay svg line{stroke:var(--ps-mut)}

.ps-slide-actions{display:flex;gap:.5rem;margin-top:1.2rem}
.ps-slide-actions .ps-btn{flex:1;justify-content:center}

.ps-notes{width:100%;min-height:150px;resize:vertical;background:var(--ps-panel2);
  border:1px solid var(--ps-line);border-radius:8px;color:var(--ps-ink);
  font-family:inherit;font-size:.85rem;padding:.6rem;line-height:1.55}
.ps-notes.sm{min-height:70px}
.ps-notes:focus{outline:none;border-color:var(--ps-ac)}

/* template gallery */
.ps-tpl-grid{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.ps-tpl{border:2px solid var(--ps-line);border-radius:10px;overflow:hidden;cursor:pointer;transition:.15s;background:var(--ps-panel2)}
.ps-tpl:hover{transform:translateY(-2px)}
.ps-tpl.is-on{border-color:var(--ps-ac);box-shadow:0 0 0 3px color-mix(in srgb,var(--ps-ac) 22%,transparent)}
.ps-tpl-swatch{height:56px;position:relative;display:flex;align-items:flex-end;padding:6px}
.ps-tpl-swatch .dot{width:14px;height:14px;border-radius:50%;box-shadow:0 0 0 2px rgba(255,255,255,.25)}
.ps-tpl-swatch .aa{font-family:var(--tf);font-weight:800;font-size:1.1rem;position:absolute;top:6px;left:8px}
.ps-tpl-name{font-size:.72rem;font-weight:600;padding:.35rem .5rem;color:var(--ps-ink)}
.ps-tpl-cat{font-size:.62rem;color:var(--ps-mut);padding:0 .5rem .4rem}

/* ======================================================================
   THE SLIDE STAGE — 1280×720 design space, scaled by transform (--sc).
   All colours/fonts come from CSS vars the JS sets per template.
   ====================================================================== */
.ps-stage{position:absolute;top:0;left:0;width:1280px;height:720px;
  transform-origin:top left;overflow:hidden;
  font-family:var(--body-font,"Inter"),sans-serif;background:var(--bg,#fff);color:var(--ink,#111)}
.ps-stage *{box-sizing:border-box}
.ps-stage .ed{outline:none}
.ps-stage.editing .ed:hover{box-shadow:0 0 0 1.5px color-mix(in srgb,var(--ac) 55%,transparent);border-radius:4px}
.ps-stage.editing .ed:focus{box-shadow:0 0 0 2px var(--ac);border-radius:4px;background:color-mix(in srgb,var(--ac) 7%,transparent)}

/* hero-family layouts (title / section / statement / quote / closing) */
.ps-stage[data-fam="hero"]{background:var(--hero-bg);color:var(--hero-ink)}
.s-tick{position:absolute;left:86px;top:86px;width:104px;height:8px;background:var(--ac);border-radius:2px}
.s-hero{position:absolute;left:96px;right:96px;top:0;bottom:0;display:flex;flex-direction:column;
  justify-content:center;gap:16px}
.s-hero.center{align-items:center;text-align:center}
.s-kicker{font-size:15px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--ac)}
.s-mark{font-family:var(--head-font),sans-serif;font-weight:800;font-size:96px;color:var(--ac);line-height:.9}
.s-htitle{font-family:var(--head-font),sans-serif;font-weight:800;line-height:1.05;
  font-size:60px;color:var(--hero-ink)}
.s-htitle.sm{font-size:44px}
.s-hsub{font-size:23px;color:var(--hero-mut);font-weight:500;max-width:60ch}
.s-uline{width:96px;height:7px;background:var(--ac);border-radius:3px;margin-top:6px}
.s-quote-mark{font-family:var(--head-font),sans-serif;font-size:150px;color:var(--ac);
  line-height:.6;font-weight:800;opacity:.85}
.s-quote{font-family:var(--head-font),sans-serif;font-style:italic;font-weight:600;
  font-size:42px;line-height:1.25;color:var(--hero-ink);max-width:26ch}
.s-quote-src{font-size:20px;color:var(--ac);font-weight:600;margin-top:10px}
.s-statement{font-family:var(--head-font),sans-serif;font-weight:800;font-size:52px;
  line-height:1.12;color:var(--hero-ink)}

/* content layouts (bullets / two-column / agenda) */
.s-band{position:absolute;left:0;top:0;right:0;height:8px;background:var(--ac)}
.s-tick2{position:absolute;left:86px;top:62px;width:46px;height:9px;background:var(--ac);border-radius:2px}
.s-ck{position:absolute;left:86px;top:52px;font-size:13px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--ac)}
.s-head{position:absolute;left:86px;right:86px;top:90px;font-family:var(--head-font),sans-serif;
  font-weight:800;font-size:36px;line-height:1.12;color:var(--ink)}
.s-head.has-ck{top:112px}
.s-sub{position:absolute;left:86px;right:86px;top:172px;font-size:20px;color:var(--muted);font-weight:500}
.s-body{position:absolute;left:86px;right:86px;top:214px;bottom:70px;display:flex;gap:44px}
.s-body.has-sub{top:236px}
.s-col{flex:1;min-width:0}
.s-bullets{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:16px}
.s-bullets li{position:relative;padding-left:30px;font-size:23px;line-height:1.34;color:var(--ink)}
.s-bullets li::before{content:"";position:absolute;left:2px;top:11px;width:11px;height:11px;
  border-radius:3px;background:var(--ac)}
.s-visual{position:absolute;left:86px;bottom:34px;font-size:14px;font-style:italic;color:var(--ac2)}
.s-pageno{position:absolute;right:40px;bottom:28px;font-size:14px;color:var(--muted);font-weight:600}
.s-agenda li{font-size:26px;padding-left:52px;line-height:1.3}
.s-agenda li::before{content:none}
.s-agenda .an{position:absolute;left:2px;top:0;font-family:var(--head-font),sans-serif;
  font-weight:800;font-size:24px;color:var(--ac)}

/* editorial style — serif accents + hairline */
.ps-stage[data-style="editorial"] .s-band{height:0}
.ps-stage[data-style="editorial"] .s-head{border-bottom:2px solid var(--ac);padding-bottom:14px}
.ps-stage[data-style="editorial"] .s-body{top:250px}
/* soft style — panel behind body */
.ps-stage[data-style="soft"] .s-body{background:var(--panel);border-radius:20px;padding:34px;
  left:70px;right:70px}
/* bold style — chunky band */
.ps-stage[data-style="bold"] .s-band{height:16px}
.ps-stage[data-style="bold"] .s-head{font-weight:900;text-transform:uppercase;letter-spacing:-.01em}
/* sidebar style — accent rail on the left */
.ps-stage[data-style="sidebar"] .s-band{width:14px;height:100%;right:auto}
.ps-stage[data-style="sidebar"] .s-tick2,.ps-stage[data-style="sidebar"] .s-ck{left:120px}
.ps-stage[data-style="sidebar"] .s-head{left:120px}
.ps-stage[data-style="sidebar"] .s-sub,.ps-stage[data-style="sidebar"] .s-body,
.ps-stage[data-style="sidebar"] .s-visual{left:120px}
/* tech style — subtle grid dots */
.ps-stage[data-style="tech"]{background-image:radial-gradient(color-mix(in srgb,var(--ac) 22%,transparent) 1px,transparent 1px);
  background-size:34px 34px}
.ps-stage[data-style="tech"] .s-head{font-family:var(--head-font),sans-serif}

/* ---------------- insert menu ---------------- */
.ps-insert-wrap{position:relative}
.ps-insert-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:60;
  background:var(--ps-panel);border:1px solid var(--ps-line);border-radius:12px;
  padding:.35rem;box-shadow:0 20px 50px -20px rgba(0,0,0,.6);min-width:190px;display:flex;flex-direction:column}
.ps-insert-menu[hidden]{display:none}
.ps-insert-menu button{display:flex;align-items:center;gap:.6rem;background:transparent;border:0;
  color:var(--ps-ink);font-family:inherit;font-size:.85rem;font-weight:500;padding:.55rem .6rem;
  border-radius:8px;cursor:pointer;text-align:left}
.ps-insert-menu button:hover{background:var(--ps-panel2)}
.ps-insert-menu button span{width:20px;text-align:center;opacity:.8}

/* ---------------- AI copilot ---------------- */
.ps-copilot{display:flex;flex-direction:column;height:100%;min-height:420px}
.ps-cop-log{flex:1 1 auto;overflow-y:auto;display:flex;flex-direction:column;gap:.6rem;padding-bottom:.5rem}
.ps-cop-msg{font-size:.85rem;line-height:1.5;padding:.6rem .75rem;border-radius:12px;max-width:95%}
.ps-cop-msg.bot{background:var(--ps-panel2);border:1px solid var(--ps-line);align-self:flex-start;border-bottom-left-radius:4px}
.ps-cop-msg.me{background:var(--ps-ac);color:#fff;align-self:flex-end;border-bottom-right-radius:4px}
.ps-cop-msg.err{background:color-mix(in srgb,var(--ps-danger) 14%,transparent);border:1px solid var(--ps-danger);color:var(--ps-ink)}
.ps-cop-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.55rem}
.ps-cop-chips button{background:var(--ps-panel);border:1px solid var(--ps-line);color:var(--ps-ink);
  font-family:inherit;font-size:.74rem;padding:.32rem .55rem;border-radius:999px;cursor:pointer;text-align:left}
.ps-cop-chips button:hover{border-color:var(--ps-ac);color:var(--ps-ac)}
.ps-cop-typing{display:inline-flex;gap:3px}
.ps-cop-typing i{width:6px;height:6px;border-radius:50%;background:var(--ps-mut);animation:psblink 1s infinite}
.ps-cop-typing i:nth-child(2){animation-delay:.15s}.ps-cop-typing i:nth-child(3){animation-delay:.3s}
@keyframes psblink{0%,60%,100%{opacity:.25}30%{opacity:1}}
.ps-cop-input{flex:0 0 auto;padding-top:.6rem;border-top:1px solid var(--ps-line);margin-top:.4rem}
.ps-cop-input .ps-in{min-height:64px;resize:vertical;margin-bottom:.5rem}

/* slide flash when the copilot edits it */
.ps-holder.ps-flash{animation:psflash .9s ease}
@keyframes psflash{0%{box-shadow:0 0 0 0 var(--ps-ac),0 24px 60px -24px rgba(0,0,0,.55)}
  35%{box-shadow:0 0 0 5px var(--ps-ac),0 24px 60px -24px rgba(0,0,0,.55)}
  100%{box-shadow:0 0 0 0 transparent,0 24px 60px -24px rgba(0,0,0,.55)}}
.ps-thumb.ps-flash{animation:psflasht .9s ease}
@keyframes psflasht{0%,100%{box-shadow:none}40%{box-shadow:0 0 0 3px var(--ps-ac2)}}

/* ---------------- floating format bar ---------------- */
.ps-fmtbar{position:fixed;z-index:550;display:flex;align-items:center;gap:2px;
  background:#1b1d26;border:1px solid #333;border-radius:10px;padding:4px;
  box-shadow:0 12px 30px -10px rgba(0,0,0,.7)}
.ps-fmtbar[hidden]{display:none}
.ps-fmtbar button{width:30px;height:30px;border:0;border-radius:7px;background:transparent;color:#eceef4;
  font-size:.95rem;cursor:pointer}
.ps-fmtbar button:hover{background:rgba(255,255,255,.12)}
.ps-fmt-sep{width:1px;height:20px;background:#3a3d48;margin:0 2px}
.ps-fmt-color{position:relative;display:grid;place-items:center;width:30px;height:30px;border-radius:7px;
  color:#eceef4;font-weight:700;cursor:pointer;overflow:hidden}
.ps-fmt-color:hover{background:rgba(255,255,255,.12)}
.ps-fmt-color input{position:absolute;inset:0;opacity:0;cursor:pointer}

/* ---------------- images / formulae on the stage ---------------- */
.s-imgcol{display:flex;align-items:center;justify-content:center;overflow:hidden}
.s-img{max-width:100%;max-height:100%;object-fit:contain;border-radius:8px}
.s-hero-img{max-width:52%;max-height:180px;object-fit:contain;margin-top:10px}
.ps-stage[data-fam="hero"] .s-img,.ps-stage[data-fam="hero"] .s-hero-img{filter:none}

/* formula modal preview */
.ps-modal-sm{max-width:520px}
.ps-fx-examples{display:flex;flex-wrap:wrap;gap:.35rem;margin:.6rem 0}
.ps-fx-examples button{background:var(--ps-panel2);border:1px solid var(--ps-line);color:var(--ps-ink);
  font-family:"IBM Plex Mono",monospace;font-size:.72rem;padding:.3rem .5rem;border-radius:7px;cursor:pointer}
.ps-fx-examples button:hover{border-color:var(--ps-ac)}
.ps-fx-preview{min-height:80px;display:grid;place-items:center;background:#fff;border:1px solid var(--ps-line);
  border-radius:10px;margin:.4rem 0 1rem;padding:.6rem}
.ps-fx-preview img{max-width:100%;max-height:120px}
.ps-fx-hint{color:#9aa0ad;font-size:.82rem}

/* chart element (canvas render) */
.s-el-chart-wrap{width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  background:#fff;border-radius:8px}
.s-el-chart-wrap svg{width:100%;height:100%}

/* chart modal */
.ps-modal-lg{max-width:900px}
.ps-chart-types{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.8rem}
.ps-chart-type-btn{background:var(--ps-panel2);border:1px solid var(--ps-line);color:var(--ps-ink);
  font-family:inherit;font-size:.8rem;font-weight:600;padding:.45rem .8rem;border-radius:8px;cursor:pointer}
.ps-chart-type-btn:hover{border-color:var(--ps-ac)}
.ps-chart-type-btn.is-on{background:var(--ps-ac);color:#fff;border-color:var(--ps-ac)}
.ps-chart-body{display:grid;grid-template-columns:1.15fr 1fr;gap:1rem;margin:.9rem 0}
@media(max-width:760px){.ps-chart-body{grid-template-columns:1fr}}
.ps-chart-gridhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:.4rem}
.ps-chart-gridhead>span:first-child{font-size:.78rem;font-weight:700;color:var(--ps-mut)}
.ps-chart-gridbtns{display:flex;gap:.35rem}
.ps-chart-grid{display:grid;gap:.3rem;max-height:260px;overflow:auto;padding-right:.2rem}
.ps-chart-row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(70px,1fr);gap:.3rem;align-items:center}
.ps-chart-row .ps-chart-namecell{grid-column:1;position:sticky;left:0}
.ps-chart-cell{background:var(--ps-panel2);border:1px solid var(--ps-line);border-radius:6px;
  color:var(--ps-ink);font-family:inherit;font-size:.78rem;padding:.35rem .4rem;width:100%;min-width:0}
.ps-chart-cell:focus{outline:none;border-color:var(--ps-ac)}
.ps-chart-cell.ps-chart-headcell{font-weight:700}
.ps-chart-rowdel{background:transparent;border:0;color:var(--ps-danger);cursor:pointer;font-size:.9rem;
  width:22px;flex:none}
.ps-chart-paste{margin-top:.7rem;font-size:.78rem;color:var(--ps-mut)}
.ps-chart-paste summary{cursor:pointer;font-weight:600}
.ps-chart-paste textarea{margin:.5rem 0;font-family:"IBM Plex Mono",monospace;font-size:.74rem}
.ps-chart-preview{background:#fff;border:1px solid var(--ps-line);border-radius:12px;padding:.6rem;
  display:flex;align-items:center;justify-content:center;min-height:220px}
.ps-chart-preview svg{width:100%;height:100%;max-height:280px}

/* ======================================================================
   modals + present overlay
   ====================================================================== */
.ps-modal-ov{position:fixed;inset:0;z-index:400;background:rgba(6,7,12,.62);backdrop-filter:blur(6px);
  display:grid;place-items:center;padding:1.2rem;animation:psf .18s ease}
@keyframes psf{from{opacity:0}to{opacity:1}}
.ps-modal-ov[hidden]{display:none}
.ps-modal{position:relative;width:100%;max-width:640px;max-height:92vh;overflow-y:auto;
  background:var(--ps-panel);color:var(--ps-ink);border:1px solid var(--ps-line);
  border-radius:20px;padding:1.7rem;box-shadow:0 40px 90px -30px rgba(0,0,0,.6)}
.ps-modal h3{font-size:1.4rem;font-weight:800;font-family:"Poppins",sans-serif;letter-spacing:-.02em}
.ps-modal-sub{color:var(--ps-mut);font-size:.9rem;margin:.35rem 0 1.1rem}
.ps-modal-x{position:absolute;top:1rem;right:1.1rem;border:0;background:transparent;
  color:var(--ps-mut);font-size:1.5rem;cursor:pointer;line-height:1}
.ps-seg{display:inline-flex;background:var(--ps-panel2);border:1px solid var(--ps-line);
  border-radius:10px;padding:3px;margin-bottom:1rem}
.ps-seg button{border:0;background:transparent;color:var(--ps-mut);font-family:inherit;font-weight:600;
  font-size:.85rem;padding:.5rem 1rem;border-radius:7px;cursor:pointer}
.ps-seg button.is-on{background:var(--ps-ac);color:#fff}
.ps-gen-field{margin-bottom:1rem}
.ps-gen-field label{display:block;font-size:.78rem;font-weight:700;color:var(--ps-mut);margin-bottom:.35rem}
.ps-drop{border:1.5px dashed var(--ps-line);border-radius:10px;padding:1rem;text-align:center;
  color:var(--ps-mut);font-size:.85rem;cursor:pointer;margin-bottom:.5rem}
.ps-drop:hover,.ps-drop.drag{border-color:var(--ps-ac);color:var(--ps-ink)}
.ps-drop-status{font-size:.76rem;color:var(--ps-mut);margin-top:.35rem}
.ps-gen-opts{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin-bottom:1.2rem}
.ps-gen-opts label{font-size:.78rem;font-weight:700;color:var(--ps-mut);display:flex;flex-direction:column;gap:.3rem}
.ps-gen-foot{display:flex;align-items:center;justify-content:flex-end;gap:1rem}
.ps-gen-err{color:var(--ps-danger);font-size:.82rem;margin-right:auto}

.ps-present{position:fixed;inset:0;z-index:500;background:#000;display:flex;
  align-items:center;justify-content:center;flex-direction:column}
.ps-present[hidden]{display:none}
.ps-present-stage{position:relative;box-shadow:0 0 80px rgba(0,0,0,.6)}
.ps-present-bar{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);
  display:flex;align-items:center;gap:1rem;background:rgba(20,20,26,.85);
  padding:.5rem 1rem;border-radius:999px;color:#fff;font-size:.9rem}
.ps-present-bar button{width:34px;height:34px;border-radius:50%;border:0;cursor:pointer;
  background:rgba(255,255,255,.14);color:#fff;font-size:1.2rem;line-height:1}
.ps-present-bar button:hover{background:rgba(255,255,255,.28)}

/* ── PowerPoint-parity additions: draw / review / view / tables / guides ── */
.ps-ico.is-disabled,.ps-tool.is-disabled{opacity:.4;pointer-events:none}
.ps-ico.sm2{font-size:.72rem;padding:0 .5rem;width:auto;white-space:nowrap}
.ps-ico.is-on{background:var(--ps-ac);color:#fff;border-color:var(--ps-ac)}
.ps-swatch{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;
  padding:0;position:relative;display:inline-grid;place-items:center;color:#fff;font-size:.7rem}
.ps-swatch.is-on{border-color:var(--ps-ink);box-shadow:0 0 0 2px var(--ps-panel)}
.ps-swatch-custom{background:conic-gradient(red,yellow,lime,cyan,blue,magenta,red);overflow:hidden}
.ps-swatch-custom input{position:absolute;inset:0;opacity:0;cursor:pointer}
.ps-zoom-lbl{font-size:.68rem;color:var(--ps-mut);text-align:center;width:100%}
.ps-stats{display:flex;flex-direction:column;gap:.1rem;font-size:.7rem;color:var(--ps-mut);padding:0 .3rem}
.ps-stats b{color:var(--ps-ink)}

/* ink layer + tools cursors */
.ps-inklayer{position:absolute;inset:0;z-index:40;touch-action:none}
.ps-inking .ps-inklayer{cursor:crosshair}
.ps-erasing .ps-inklayer{cursor:cell}
.s-el-ink{pointer-events:auto}

/* smart guides */
.ps-guide{position:absolute;z-index:60;pointer-events:none;background:#ff4fa3}
.ps-guide-v{top:0;bottom:0;width:1.5px}
.ps-guide-h{left:0;right:0;height:1.5px}

/* grid overlay */
#holder.ps-grid-on::after{content:"";position:absolute;inset:0;z-index:35;pointer-events:none;
  background-image:linear-gradient(to right,rgba(120,130,180,.16) 1px,transparent 1px),
    linear-gradient(to bottom,rgba(120,130,180,.16) 1px,transparent 1px);
  background-size:5% 8.888%}

/* table element */
.s-el-table{width:100%;height:100%;border-collapse:collapse;table-layout:fixed;background:#fff}
.s-el-table th,.s-el-table td{border:1.5px solid;padding:.35em .5em;vertical-align:top;
  overflow:hidden;word-wrap:break-word;outline:none}
.s-el-table th{font-weight:700;text-align:left}

/* review pane */
.ps-rv-summary{margin:.6rem 0;font-size:.82rem;color:var(--ps-mut)}
.ps-rv-summary b{color:var(--ps-ink)}
.ps-rv-ok{color:#1f9d57;font-weight:600}
.ps-rv-bad{color:#d83a52}
.ps-rv-busy{color:var(--ps-mut)}
.ps-mini-link{background:none;border:none;color:var(--ps-ac);font-weight:700;cursor:pointer;font-size:.8rem;padding:0}
.ps-rv-list{display:flex;flex-direction:column;gap:.4rem}
.ps-rv-item{display:flex;gap:.5rem;align-items:flex-start;padding:.5rem .55rem;border:1px solid var(--ps-line);
  border-radius:9px;cursor:pointer;transition:.15s}
.ps-rv-item:hover{border-color:var(--ps-ac)}
.ps-rv-item.done{opacity:.45;text-decoration:none}
.ps-rv-slide{flex:none;font-size:.62rem;font-weight:700;color:#fff;background:var(--ps-ac);
  border-radius:6px;padding:.15rem .35rem;margin-top:.1rem}
.ps-rv-txt{flex:1;font-size:.78rem;line-height:1.45;color:var(--ps-ink)}
.ps-rv-txt s{color:#d83a52}
.ps-rv-txt small{display:block;color:var(--ps-mut);font-size:.68rem}

/* toasts */
.ps-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);
  background:var(--ps-ink);color:var(--ps-bg);padding:.7rem 1.2rem;border-radius:10px;
  font-size:.85rem;font-weight:600;z-index:600;opacity:0;transition:.25s;pointer-events:none}
.ps-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* responsive: collapse side panes on small screens */
@media(max-width:1024px){
  .ps-rail{flex-basis:150px}
  .ps-inspector{flex-basis:250px}
}
@media(max-width:820px){
  .ps-body{flex-direction:column;overflow-y:auto}
  .ps-rail{flex:0 0 auto;flex-direction:row;border-right:0;border-bottom:1px solid var(--ps-line)}
  .ps-rail-head{writing-mode:horizontal-tb;border-bottom:0;border-right:1px solid var(--ps-line)}
  .ps-thumbs{flex-direction:row;overflow-x:auto}
  .ps-thumb{flex:0 0 150px}
  .ps-inspector{flex:0 0 auto;border-left:0;border-top:1px solid var(--ps-line)}
}
/* phones: the ribbon rows scroll inside themselves — the page itself must
   never grow past the viewport (it was 797px wide at 390) */
@media(max-width:640px){
  .ps-toolbar{flex-wrap:wrap;gap:.4rem;padding:.45rem .6rem}
  .ps-title-in{max-width:40vw;min-width:90px;font-size:.9rem}
  .ps-tb-meta{display:none}
  .ps-rb-top{overflow-x:auto;scrollbar-width:thin;gap:.4rem;padding:.35rem .5rem}
  .ps-rb-tabs,.ps-rb-quick{flex:none}
  .ps-rb-quick{margin-left:.4rem}
}
