:root{
  /* Electric Cut — electric cyan/blue on near-black (editing-tool theme) */
  --bg:#0a0c10; --card:#12161d; --card2:#1b212b; --line:#1f2730;
  --txt:#eaf2ff; --mut:#8a97a8; --acc:#21d4fd; --acc2:#2f6bff; --bad:#ff6b6b;
  --acc-deep:#2f6bff; --acc-lite:#21d4fd; --btn-ink:#04121a;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--txt);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
body{padding-bottom:calc(72px + env(safe-area-inset-bottom))}
.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:10px;
  padding:calc(12px + env(safe-area-inset-top)) 16px 12px;background:rgba(10,12,16,.85);
  backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.logo{width:32px;height:32px;object-fit:contain;display:block}
.wordmark{height:22px;width:auto;object-fit:contain;display:block}
.topbar h1{font-size:18px;margin:0;letter-spacing:.5px}
main{padding:16px;max-width:560px;margin:0 auto}
.page{display:none;animation:fade .2s ease}
.page.active{display:block}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
h2{font-size:22px;margin:4px 0 16px}
h3{font-size:16px;margin:22px 0 10px;color:var(--mut)}
label{display:block;font-size:13px;color:var(--mut);margin:14px 0 6px}
input,select{width:100%;padding:14px;border-radius:12px;border:1px solid var(--line);
  background:var(--card);color:var(--txt);font-size:16px;outline:none}
input:focus,select:focus{border-color:var(--acc);box-shadow:0 0 0 3px rgba(33,212,253,.15)}
.row{display:flex;gap:8px;align-items:center}
.row>input,.row>select{flex:1}
button{font-size:15px;font-weight:600;border:none;border-radius:12px;padding:13px 16px;cursor:pointer}
.primary{background:linear-gradient(135deg,var(--acc-deep),var(--acc-lite));color:var(--btn-ink)}
.primary:active{filter:brightness(.92)}
.big{width:100%;margin-top:20px;padding:16px;font-size:17px}
.ghost{background:var(--card2);color:var(--txt);border:1px solid var(--line);white-space:nowrap}
.hint{font-size:13px;color:var(--mut);margin:8px 0}
.preview{width:84px;height:84px;border-radius:50%;object-fit:cover;margin-top:12px;border:2px solid var(--line)}
.hidden{display:none}
.types,.type{display:block}
.type{display:flex;align-items:center;gap:12px;padding:12px;background:var(--card);
  border:1px solid var(--line);border-radius:12px;margin-bottom:8px}
.type img{width:44px;height:44px;border-radius:50%;object-fit:cover;background:var(--card2)}
.type b{font-size:15px}.type small{color:var(--mut);display:block}
#progress{margin-top:24px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px}
.step{font-weight:700;font-size:15px;margin-bottom:10px;text-transform:capitalize}
.bar{height:10px;border-radius:6px;background:var(--card2);overflow:hidden}
.fill{height:100%;width:0;background:linear-gradient(90deg,var(--acc-deep),var(--acc-lite));transition:width .3s}
.stats{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--mut);margin:10px 0}
.stats b{color:var(--txt)}
.log{max-height:160px;overflow:auto;background:#070a0e;border:1px solid var(--line);border-radius:10px;
  padding:10px;font-size:11px;color:#9fb3c9;white-space:pre-wrap;margin:6px 0 0}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.vid{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:8px;font-size:12px}
.vid .cap{color:var(--txt);margin:6px 2px 2px;line-height:1.3}
.thumb{position:relative;width:100%;aspect-ratio:9/16;border-radius:9px;overflow:hidden;
  cursor:pointer;background:#070a0e;border:1px solid var(--line)}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb .play{position:absolute;inset:0;display:grid;place-items:center;font-size:34px;
  color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.6);background:rgba(0,0,0,.12)}
.thumb .vw{position:absolute;left:6px;bottom:6px;font-size:10px;background:rgba(0,0,0,.6);
  color:#fff;padding:2px 7px;border-radius:20px}
/* brief app toast (e.g. "Template saved") — fades in then out */
.app-toast{position:fixed;left:50%;bottom:calc(86px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(8px);
  z-index:120;background:var(--card2);border:1px solid var(--line);color:var(--txt);
  padding:11px 18px;border-radius:11px;font-size:14px;font-weight:600;box-shadow:0 8px 28px rgba(0,0,0,.5);
  opacity:0;transition:opacity .3s ease,transform .3s ease;pointer-events:none}
.app-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

.modal{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.82);backdrop-filter:blur(6px);
  display:flex;align-items:center;justify-content:center;padding:16px;
  padding-bottom:calc(16px + env(safe-area-inset-bottom))}
.modal.hidden{display:none}  /* must beat .modal's display:flex (equal specificity, later source) */
.modal-card{width:100%;max-width:440px;background:var(--card);border:1px solid var(--line);
  border-radius:18px;padding:14px;position:relative}
/* plain close X — no circle, just a bold X in the top-right corner */
.modal-close{position:absolute;top:8px;right:10px;z-index:10;
  display:flex;align-items:center;justify-content:center;width:34px;height:34px;
  padding:0;border:none;background:none;cursor:pointer;color:var(--txt);
  transition:color .15s ease}
.modal-close:hover{color:var(--acc)}
.modal-close:active{color:var(--acc-lite)}
.modal-close:focus-visible{outline:none;color:var(--acc)}
.modal-card video{width:100%;border-radius:12px;background:#000;max-height:62vh;display:block}
.modal-cap{font-size:14px;color:var(--txt);margin:12px 4px;line-height:1.35}

/* Preview modal: don't let a tall 9:16 video swallow the screen. Cap the card height and
   make only the caption area scroll inline, so the video + Download stay in view. */
#preview .modal-card{max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);display:flex;flex-direction:column}
#preview .modal-card video{max-height:46vh;flex:0 0 auto}
#preview-cap{flex:1 1 auto;min-height:48px;overflow-y:auto;-webkit-overflow-scrolling:touch}
#preview-dl{flex:0 0 auto}
/* the plain X sits over a possibly-bright video — a drop shadow keeps it visible on any bg */
#preview .modal-close svg{filter:drop-shadow(0 1px 3px rgba(0,0,0,.85))}
.modal-card .big{margin-top:6px;display:block;text-align:center;text-decoration:none}
.badge{display:inline-block;font-size:11px;padding:2px 9px;border-radius:20px;
  background:rgba(33,212,253,.14);color:var(--acc);border:1px solid rgba(33,212,253,.32);font-weight:600}
.tabs{position:fixed;left:0;right:0;bottom:0;display:flex;background:rgba(18,22,29,.94);
  backdrop-filter:blur(14px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
.tab{flex:1;background:none;color:var(--mut);display:flex;flex-direction:column;align-items:center;
  gap:3px;font-size:11px;padding:10px 0;font-weight:600}
.tab span{font-size:18px}
.tab-ico{width:20px;height:20px;object-fit:contain;display:block;opacity:.5}
.tab.active .tab-ico{opacity:1}
.tab.active{color:var(--acc)}
/* library: section headers + total count */
.lib-section{margin-bottom:24px}
.lib-section-hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.lib-section-hdr span:first-child{font-size:15px;font-weight:700;color:var(--txt)}
.lib-total{font-size:13px;color:var(--acc);font-weight:600}

/* library: recent strip */
.lib-strip{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;
  padding-bottom:6px;-webkit-overflow-scrolling:touch}
.lib-strip::-webkit-scrollbar{display:none}
.lib-strip-item{flex:0 0 74px;scroll-snap-align:start;cursor:pointer}
.lib-strip-thumb{position:relative;width:74px;height:132px;border-radius:10px;overflow:hidden;
  background:#070a0e;border:1px solid var(--line)}
.lib-strip-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.lib-strip-thumb:active{filter:brightness(1.2)}
.lib-strip-play{position:absolute;inset:0;display:grid;place-items:center;
  font-size:18px;color:rgba(255,255,255,.7);background:rgba(0,0,0,.25);
  opacity:0;transition:opacity .15s}
.lib-strip-item:hover .lib-strip-play,.lib-strip-item:active .lib-strip-play{opacity:1}
.lib-strip-label{font-size:10px;color:var(--mut);margin-top:5px;text-align:center;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* library: account cards */
.acct-card{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;cursor:pointer;
  transition:border-color .15s}
.acct-card:active{filter:brightness(1.1)}
.acct-cover-wrap{position:relative;width:100%;aspect-ratio:1/1}
.acct-cover{width:100%;height:100%;object-fit:cover;display:block;background:#070a0e}
.acct-badge{position:absolute;bottom:8px;right:8px;background:linear-gradient(135deg,var(--acc-deep),var(--acc-lite));
  color:var(--btn-ink);font-size:11px;font-weight:700;padding:3px 8px;border-radius:20px;line-height:1.4}
.acct-meta{padding:10px 12px}
.acct-meta b{font-size:15px;display:block}
.acct-meta small{color:var(--mut)}
/* breadcrumbs */
.crumbs{display:flex;align-items:center;gap:8px;font-size:14px;margin:0 0 14px}
.crumbs a{color:var(--acc);text-decoration:none;cursor:pointer;font-weight:600}
.crumbs span{color:var(--mut)}
.crumbs b{color:var(--txt)}
/* sort segmented control */
.sortrow{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 12px}
.sortrow .hint{margin:0}
.seg{display:inline-flex;background:var(--card2);border:1px solid var(--line);border-radius:10px;padding:3px}
.seg button{background:none;color:var(--mut);font-size:12px;padding:7px 12px;border-radius:8px}
.seg button.on{background:linear-gradient(135deg,var(--acc-deep),var(--acc-lite));color:var(--btn-ink)}
/* pagination */
.pager{display:flex;align-items:center;justify-content:center;gap:14px;margin:18px 0 4px;font-size:13px;color:var(--mut)}
.pager button{background:var(--card2);color:var(--txt);border:1px solid var(--line);padding:9px 14px}
.pager button:disabled{opacity:.4}
.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--mut);border-top-color:var(--acc);
  border-radius:50%;animation:sp .7s linear infinite;vertical-align:-2px;margin-right:6px}
@keyframes sp{to{transform:rotate(360deg)}}
.spin.dark{border-color:rgba(4,18,26,.3);border-top-color:var(--btn-ink)}
/* ---------- auth gate: product visual (desktop) + clean form column ---------- */
.auth-view{position:fixed;inset:0;z-index:100;background:#07090d;display:flex}
.auth-view.hidden{display:none}

/* left: immersive visual — hidden on mobile */
.auth-visual{display:none;flex:1.2;position:relative;overflow:hidden;background:#0a0c10}
.av-glow{position:absolute;width:520px;height:520px;border-radius:50%;filter:blur(120px);opacity:.16;pointer-events:none}
.av-glow.g1{background:#21d4fd;top:-140px;left:-120px}
.av-glow.g2{background:#2f6bff;bottom:-160px;right:-100px}
.av-line{position:absolute;top:14%;left:16%;width:46%;opacity:.5}
.av-card{position:absolute;width:172px;aspect-ratio:9/16;background:#fff;border-radius:16px;
  box-shadow:0 34px 70px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.05);overflow:hidden;
  display:flex;flex-direction:column;animation:avFloat 7s ease-in-out infinite}
.av-card.c1{top:12%;left:12%;transform:rotate(-6deg)}
.av-card.c2{top:34%;right:14%;transform:rotate(4deg);animation-delay:1.4s}
.av-card.c3{bottom:-4%;left:30%;transform:rotate(2deg);animation-delay:2.8s;opacity:.9}
@keyframes avFloat{0%,100%{margin-top:0}50%{margin-top:-14px}}
.av-hook{padding:12px 12px 10px;font-size:10.5px;font-weight:800;line-height:1.3;color:#0a0a0a}
.av-vid{flex:1;margin:0 10px;border-radius:8px;background:linear-gradient(140deg,#16283e,#0d3346);
  display:grid;place-items:center;color:rgba(255,255,255,.85);position:relative;overflow:hidden}
.av-vid::after{content:"";position:absolute;inset:0;
  background:linear-gradient(115deg,transparent 40%,rgba(33,212,253,.25),transparent 62%);
  animation:rdShimmer 3.2s linear infinite}
.av-vid.v2{background:linear-gradient(140deg,#1d2036,#302145)}
.av-vid.v3{background:linear-gradient(140deg,#12303a,#0d1f3c)}
.av-brand{display:flex;align-items:center;gap:7px;padding:10px 12px}
.av-av{width:18px;height:18px;border-radius:50%;background:linear-gradient(135deg,#2f6bff,#21d4fd);flex:0 0 auto}
.av-nm{display:flex;flex-direction:column;gap:3px;flex:1}
.av-nm i{display:block;height:5px;border-radius:3px;background:#dfe5ec;width:56%}
.av-nm i:last-child{width:34%;background:#eef1f5}
.av-tag{position:absolute;z-index:3;display:inline-flex;align-items:center;gap:7px;font-size:12px;
  font-weight:700;color:var(--txt);background:rgba(14,18,25,.88);border:1px solid var(--line);
  padding:7px 13px;border-radius:10px;backdrop-filter:blur(6px);box-shadow:0 10px 26px rgba(0,0,0,.4)}
.av-tag svg{color:var(--acc)}
.av-tag.t1{top:8%;left:10%}
.av-tag.t2{top:30%;right:10%}
.auth-vis-foot{position:absolute;left:40px;bottom:40px;right:40px;max-width:420px;z-index:3}
.auth-vis-foot h3{font-size:26px;margin:0 0 8px;letter-spacing:-.3px}
.auth-vis-foot p{font-size:14px;color:var(--mut);line-height:1.55;margin:0}
.av-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.av-chips span{font-size:10px;font-weight:800;letter-spacing:.8px;color:var(--acc);
  background:rgba(33,212,253,.08);border:1px solid rgba(33,212,253,.25);padding:5px 11px;border-radius:99px}

/* right: open form column (the whole page on mobile) */
.auth-panel{flex:1;display:flex;align-items:center;justify-content:center;overflow-y:auto;
  padding:32px 24px;padding-top:calc(32px + env(safe-area-inset-top));
  padding-bottom:calc(32px + env(safe-area-inset-bottom))}
.auth-panel-inner{width:100%;max-width:352px;text-align:center}
.auth-logo{width:46px;height:46px;display:block;margin:0 auto 20px}
.auth-panel h2{font-size:26px;margin:0 0 8px;letter-spacing:-.3px}
.auth-sub{font-size:14px;color:var(--mut);margin:0 0 28px;line-height:1.5}
.auth-panel label{display:block;text-align:left;margin:14px 0 6px}
.auth-panel #auth-submit{width:100%;margin-top:18px}
.auth-swap{font-size:13.5px;color:var(--mut);margin:18px 0 0}
.auth-swap a{color:var(--acc);font-weight:700;cursor:pointer}
.auth-swap a:hover{text-decoration:underline}
.auth-fine{font-size:11.5px;color:var(--mut);opacity:.75;line-height:1.6;margin:22px 0 0}
@media(min-width:920px){
  .auth-visual{display:block}
}
.credit-badge{margin-left:auto;cursor:pointer}
.credit-badge.hidden{display:none}
/* settings gear in the topbar (next to credits) — bare cyan icon, no circle */
.topbar-set{margin-left:10px;flex:0 0 auto;width:26px;height:26px;padding:0;border:0;background:none;
  display:grid;place-items:center;cursor:pointer;color:var(--acc)}
.topbar-set:active{color:var(--acc-lite)}
.topbar-set svg{display:block;width:22px;height:22px}
/* account / billing */
.creditbox{background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:18px;text-align:center;margin-bottom:8px}
.big-credit{font-size:42px;font-weight:800;line-height:1.1;
  background:linear-gradient(135deg,var(--acc-lite),var(--acc-deep));
  -webkit-background-clip:text;background-clip:text;color:transparent}
#page-account .type button{flex:0 0 auto;margin-left:auto}
/* subscription plan cards */
.plan-card{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:14px;padding:14px;margin-bottom:8px}
.plan-card.cur{border-color:var(--acc);box-shadow:0 0 0 1px rgba(33,212,253,.25)}
.plan-info{flex:1;min-width:0}
.plan-top{display:flex;align-items:baseline;gap:8px}
.plan-top b{font-size:16px}
.plan-price{margin-left:auto;font-size:16px;font-weight:800;color:var(--acc-lite)}
.plan-price span{font-size:11px;color:var(--mut);font-weight:600}
.plan-limits{font-size:13px;color:var(--txt);margin-top:4px}
.plan-blurb{font-size:12px;color:var(--mut);margin-top:3px;line-height:1.4}
.plan-card>button{flex:0 0 auto;min-width:96px}
.big.ghost{margin-top:10px}
/* settings */
.setting-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:6px}
.setting-card .row{margin-bottom:4px}
.setting-card .primary,.setting-card .ghost{margin-top:10px}
.setting-card a.ghost.big{display:block;text-align:center;text-decoration:none}
.sub-label{font-size:12px;color:var(--mut);margin:14px 0 6px;text-transform:uppercase;letter-spacing:.5px}
.danger-h{color:var(--bad)}
.setting-card.danger{border-color:rgba(255,107,107,.4)}
.bad-btn{width:100%;margin-top:8px;background:rgba(255,107,107,.12);color:var(--bad);
  border:1px solid rgba(255,107,107,.4)}
.bad-btn:active{filter:brightness(1.1)}
/* marketplace */
.streamer-row{display:flex;gap:8px;overflow-x:auto;padding:10px 0;margin:4px 0 6px;-webkit-overflow-scrolling:touch}
.chip{flex:0 0 auto;background:var(--card2);border:1px solid var(--line);color:var(--txt);
  border-radius:20px;padding:8px 14px;font-size:13px;font-weight:600;white-space:nowrap;cursor:pointer}
.chip:active{filter:brightness(1.15)}
.chip.sm{padding:3px 9px;font-size:11px;cursor:default;color:var(--mut)}
.mk-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px;cursor:pointer}
.mk-card:active{filter:brightness(1.08)}
.mk-head{display:flex;align-items:center;gap:10px}
.mk-av{width:42px;height:42px;border-radius:50%;object-fit:cover;background:var(--card2);flex:0 0 auto}
.mk-av.lg{width:60px;height:60px}
.mk-id b{font-size:15px;display:block}
.mk-id small{color:var(--mut);font-size:12px}
.mk-stats{font-size:13px;color:var(--mut);margin:10px 0 8px}
.mk-stats b{color:var(--txt)}
.mk-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.mk-add{width:100%;font-size:13px;padding:10px;min-height:42px}
.mk-head{min-width:0}
.mk-id{min-width:0;flex:1}
.mk-id b{font-size:15px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#mk-detail .stats{margin:12px 0}
#mk-detail h3{margin:16px 0 8px}

/* reclip page: "reclipping as" preview + how-it-works */
.run-preview{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);
  border-radius:12px;padding:8px 10px;margin:8px 0 4px}
.run-preview:empty{display:none}
.rp-av{width:42px;height:42px;border-radius:50%;object-fit:cover;background:var(--card2);flex:0 0 auto;border:1px solid var(--line)}
.rp-meta{flex:1;min-width:0}
.rp-meta small{color:var(--mut);font-size:11px;display:block}
.rp-meta b{font-size:14px}
.rp-tplname{display:block;font-size:11px;color:var(--mut);margin-top:1px}
.rp-sw{display:inline-block;width:10px;height:10px;border-radius:50%;border:1px solid var(--line);
  margin-left:2px;vertical-align:middle}
.rp-tpl{width:34px;height:60px;border-radius:6px;object-fit:cover;flex:0 0 auto;border:1px solid var(--line)}
/* reclip options: range + pick toggle */
#run-range{gap:8px;margin-top:8px}
#run-range input[type=date]{flex:1}
.switch-row{display:flex;align-items:center;gap:8px;color:var(--txt);font-size:14px;
  margin:16px 0 6px;cursor:pointer;font-weight:600}
.switch-row input{width:auto;flex:0 0 auto;width:18px;height:18px;accent-color:var(--acc)}
/* select-clips modal */
.sel-card{max-width:460px}
.sel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-height:52vh;overflow-y:auto;margin:10px 0}
/* these must beat .sel-grid/.crumbs/.modal-card .big (all later/higher-specificity
   than the base .hidden rule) so the preview can fully replace the grid view */
.sel-grid.hidden,#sel-crumbs.hidden,#sel-sub.hidden,#sel-go.hidden{display:none}
.sel-item{position:relative;aspect-ratio:9/16;border-radius:10px;overflow:hidden;cursor:pointer;
  background:#070a0e;border:2px solid var(--line)}
.sel-item img{width:100%;height:100%;object-fit:cover;display:block}
.sel-item.on{border-color:var(--acc)}
.sel-check{position:absolute;top:5px;right:5px;width:22px;height:22px;border-radius:50%;
  background:linear-gradient(135deg,var(--acc-deep),var(--acc-lite));color:var(--btn-ink);
  display:none;place-items:center;font-size:13px;font-weight:700}
.sel-item.on .sel-check{display:grid}
.sel-eye{position:absolute;top:5px;left:5px;width:26px;height:26px;border-radius:50%;
  background:rgba(0,0,0,.6);color:#fff;border:none;font-size:12px;display:grid;place-items:center;
  cursor:pointer;padding:0;line-height:1}
.sel-eye:active{filter:brightness(1.3)}
.sel-preview video,.sel-preview img{width:100%;border-radius:12px;background:#000;max-height:58vh;display:block}
.sel-preview .pv-meta{font-size:13px;color:var(--mut);margin:10px 2px}
.sel-preview .pv-link{display:block;text-align:center;margin-top:8px;color:var(--acc);
  text-decoration:none;font-size:13px;font-weight:600}
#sel-go{position:sticky;bottom:0;margin-top:4px}
/* check preview: top videos as thumbnails */
/* .check-grid / .ck / .ck-ph / .ck-v removed — Check no longer shows clip previews */
.ck-ph{display:none}.ck-v{display:none}
/* recent runs — horizontal swipe cards */
.recent{margin-top:22px}
.recent:empty{display:none}
.rr-strip{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 8px;-webkit-overflow-scrolling:touch}
.rr-card{flex:0 0 auto;width:100px;text-align:center;background:var(--card);border:1px solid var(--line);
  border-radius:14px;padding:12px 8px;cursor:pointer}
.rr-card:active{filter:brightness(1.1)}
.rr-av{width:48px;height:48px;border-radius:50%;object-fit:cover;background:var(--card2);
  border:1px solid var(--line);margin:0 auto 8px;display:block}
.rr-h{font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rr-c{font-size:13px;font-weight:700;margin-top:3px}
.rr-st{color:var(--acc)}
.rr-t{font-size:10px;color:var(--mut);margin-top:2px}
.with-info{display:flex;align-items:center;gap:10px}
.info-btn{width:24px;height:24px;border-radius:50%;padding:0;font-size:13px;font-weight:700;font-style:italic;
  background:var(--card2);color:var(--acc);border:1px solid rgba(33,212,253,.4);line-height:1;cursor:pointer}
.info-btn:active{filter:brightness(1.2)}
#info-modal .how-steps{margin-top:10px}
.how-title{font-size:12px;color:var(--mut);text-transform:uppercase;letter-spacing:.6px;margin-bottom:10px}
/* Recent reclips section on the home tab (fills the space under Recent runs) */
#recent-reclips{margin-top:20px}
.rc-hdr{display:flex;align-items:center;justify-content:space-between}
.rc-seeall{color:var(--acc);font-size:11px;font-weight:700;letter-spacing:.4px;text-transform:none;cursor:pointer}
.rc-seeall:active{filter:brightness(1.2)}
.run-empty{margin-top:26px;text-align:center;background:var(--card);border:1px dashed var(--line);
  border-radius:16px;padding:26px 22px}
.run-empty .re-h{font-size:15px;font-weight:700;color:var(--txt);margin-bottom:7px}
.run-empty .re-p{font-size:13px;color:var(--mut);line-height:1.6;max-width:300px;margin:0 auto}
/* Reclips library empty state */
.lib-empty{text-align:center;padding:48px 20px 0}
.lib-empty-ic{width:64px;height:64px;border-radius:50%;margin:0 auto 16px;display:grid;place-items:center;
  background:rgba(33,212,253,.10);border:1px solid rgba(33,212,253,.3);color:var(--acc)}
.lib-empty-ic svg{display:block}
.lib-empty-h{font-size:18px;font-weight:800;margin-bottom:8px}
.lib-empty-p{font-size:14px;color:var(--mut);line-height:1.6;max-width:300px;margin:0 auto 22px}
.lib-empty .big{max-width:320px;margin:0 auto}
/* ---- "how a reclip works" looping demo (new-user empty state) ---- */
.rdemo{display:flex;flex-direction:column;align-items:center;gap:16px;margin-top:18px}
.rdemo-phone{width:150px;height:266px;border-radius:18px;background:#0e1218;border:1px solid var(--line);
  box-shadow:0 14px 40px rgba(0,0,0,.5),inset 0 0 0 4px rgba(255,255,255,.02);
  display:flex;flex-direction:column;overflow:hidden;position:relative}
.rdemo-top{display:flex;align-items:center;gap:6px;padding:9px 10px}
.rdemo-logo{width:18px;height:18px;object-fit:contain}
.rdemo-top span{font-size:11px;font-weight:700;color:var(--txt)}
.rdemo-capband{position:relative;height:46px;margin:0 9px;background:#fff;border-radius:8px;overflow:hidden}
.rdemo-cap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  text-align:center;padding:5px 8px;font-size:10.5px;line-height:1.25;opacity:0}
.rdemo-cap.c1,.rdemo-cap.c2{color:#7a8190;font-style:italic}
.rdemo-cap.c3{color:#0a0a0a;font-weight:800}
.rdemo-cap.c1{animation:rdSeq1 9s infinite}
.rdemo-cap.c2{animation:rdSeq2 9s infinite}
.rdemo-cap.c3{animation:rdSeq3 9s infinite}
.rdemo-vid{position:relative;flex:1;margin:9px;border-radius:10px;overflow:hidden;
  background:linear-gradient(135deg,#142033,#0d2b3a)}
.rdemo-vid::after{content:"";position:absolute;inset:0;
  background:linear-gradient(115deg,transparent 35%,rgba(33,212,253,.28),transparent 65%);
  animation:rdShimmer 2.6s linear infinite}
.rdemo-check{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;z-index:2;
  background:#1fbf73;color:#fff;display:grid;place-items:center;opacity:0;transform:scale(.6);
  animation:rdCheck 9s infinite}
.rdemo-check svg{display:block}
.rdemo-steps{display:flex;align-items:center;gap:8px}
.rdemo-step{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;
  color:var(--mut);background:var(--card2);border:1px solid var(--line);border-radius:20px;padding:6px 11px}
.rdemo-step svg{width:13px;height:13px;display:block}
.rdemo-step.s1{animation:rdStep1 9s infinite}
.rdemo-step.s2{animation:rdStep2 9s infinite}
.rdemo-step.s3{animation:rdStep3 9s infinite}
.rdemo-label{position:relative;height:20px;width:280px;max-width:80vw}
.rdemo-label span{position:absolute;inset:0;text-align:center;font-size:13px;font-weight:600;
  color:var(--txt);opacity:0}
.rdemo-label .l1{animation:rdSeq1 9s infinite}
.rdemo-label .l2{animation:rdSeq2 9s infinite}
.rdemo-label .l3{animation:rdSeq3 9s infinite}
@keyframes rdShimmer{0%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
@keyframes rdSeq1{0%{opacity:0;transform:translateY(5px)}4%{opacity:1;transform:none}28%{opacity:1}33%{opacity:0}100%{opacity:0}}
@keyframes rdSeq2{0%,33%{opacity:0;transform:translateY(5px)}37%{opacity:1;transform:none}61%{opacity:1}66%{opacity:0}100%{opacity:0}}
@keyframes rdSeq3{0%,66%{opacity:0;transform:translateY(5px)}70%{opacity:1;transform:none}96%{opacity:1}99.5%{opacity:0}100%{opacity:0}}
@keyframes rdCheck{0%,66%{opacity:0;transform:scale(.6)}72%{opacity:1;transform:scale(1)}96%{opacity:1;transform:scale(1)}100%{opacity:0}}
@keyframes rdStep1{0%,30%{color:var(--acc);border-color:var(--acc);box-shadow:0 0 0 2px rgba(33,212,253,.16)}33%,100%{color:var(--mut);border-color:var(--line);box-shadow:none}}
@keyframes rdStep2{0%,33%{color:var(--mut);border-color:var(--line)}36%,63%{color:var(--acc);border-color:var(--acc);box-shadow:0 0 0 2px rgba(33,212,253,.16)}66%,100%{color:var(--mut);border-color:var(--line);box-shadow:none}}
@keyframes rdStep3{0%,66%{color:var(--mut);border-color:var(--line)}69%,96%{color:var(--acc);border-color:var(--acc);box-shadow:0 0 0 2px rgba(33,212,253,.16)}100%{color:var(--mut);border-color:var(--line);box-shadow:none}}
@media (prefers-reduced-motion:reduce){.rdemo *{animation:none!important}.rdemo-cap.c3,.rdemo-label .l3{opacity:1}}
/* 2x2 recent-reclips pager */
.rc-pager{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:14px}
.rc-arrow{width:38px;height:38px;border-radius:50%;background:var(--card2);border:1px solid var(--line);
  color:var(--txt);font-size:20px;line-height:1;cursor:pointer;display:grid;place-items:center}
.rc-arrow:disabled{opacity:.35;cursor:default}
.rc-arrow:not(:disabled):active{filter:brightness(1.15)}
.rc-pageno{font-size:13px;color:var(--mut);font-weight:700;min-width:48px;text-align:center}
.rc-arrow svg{display:block}
/* ---- icon polish: consistent sizing/centering for all Lucide-icon buttons ---- */
.tab-ico{width:auto;height:auto;opacity:.55;display:flex;align-items:center;justify-content:center}
.tab-ico svg{display:block}
.tab-ico.logo-ico{width:22px;height:22px;object-fit:contain}   /* RECLIPIT logo on the Reclips tab */
.tab span{font-size:0}                         /* legacy glyph rule no-op for icon spans */
.thumb .play svg,.lib-strip-play svg,.ck-ph svg{display:block}
.modal-close svg,.wiz-x svg{display:block}
.modal-close svg{width:26px;height:26px;stroke-width:2.5}   /* big, obvious X */
.wiz-x svg{width:22px;height:22px}
.wiz-x{display:grid;place-items:center}
.pager button{display:inline-flex;align-items:center;gap:5px}
.pager button svg{display:block}
.btn-ico{display:inline-flex;align-items:center;vertical-align:middle;margin-right:7px}
.btn-ico svg{display:block}
.how-steps{display:flex;flex-direction:column;gap:8px}
.how-step{display:flex;align-items:flex-start;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:12px;padding:13px}
.how-ic{font-size:20px;font-weight:800;line-height:1;
  background:linear-gradient(135deg,var(--acc-lite),var(--acc-deep));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.how-step b{font-size:14px;display:block;margin-bottom:2px}
.how-step small{color:var(--mut);font-size:12px;line-height:1.35}
/* pages "stories" strip (circular avatars + names, horizontal scroll) */
.stories{display:flex;gap:14px;overflow-x:auto;padding:6px 2px 10px;margin:4px 0 8px;
  -webkit-overflow-scrolling:touch}
.story{flex:0 0 auto;width:72px;text-align:center;cursor:pointer}
.story-ring{width:66px;height:66px;border-radius:50%;padding:3px;margin:0 auto;
  background:linear-gradient(135deg,var(--acc-lite),var(--acc-deep))}
.story-ring img{width:100%;height:100%;border-radius:50%;object-fit:cover;
  border:2px solid var(--bg);background:var(--card2);display:block}
.story-ring.add{display:grid;place-items:center;background:var(--card2);
  border:2px dashed var(--line)}
.story-ring.add span{font-size:26px;color:var(--acc);font-weight:600}
.story-name{font-size:12px;color:var(--txt);margin-top:6px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.story:active{filter:brightness(1.1)}
/* downgrade grace: locked pages are greyed out (no access until upgrade) */
.story.locked .story-ring{background:var(--line)}
.story.locked .story-ring img{filter:grayscale(1);opacity:.45}
.story.locked .story-name{color:var(--mut);opacity:.7}
.story-ring{position:relative}
.story-lock{position:absolute;right:-2px;bottom:-2px;width:22px;height:22px;border-radius:50%;
  background:var(--card2);color:var(--mut);border:2px solid var(--bg);
  display:grid;place-items:center;z-index:2}
.story-lock svg{display:block}
/* keep-selection modal (pick pages after a downgrade) */
.keep-h{margin:2px 0 6px}
.keep-sub{margin-bottom:14px}
.keep-list{display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow-y:auto;margin-bottom:10px}
.keep-row{display:flex;align-items:center;gap:12px;background:var(--card2);border:2px solid var(--line);
  border-radius:12px;padding:10px 12px;cursor:pointer}
.keep-row img{width:42px;height:42px;border-radius:50%;object-fit:cover;background:var(--bg);flex:0 0 auto}
.keep-id{flex:1;min-width:0}
.keep-id b{display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.keep-id small{color:var(--mut);font-size:12px}
.keep-check{width:24px;height:24px;border-radius:50%;flex:0 0 auto;display:grid;place-items:center;
  border:2px solid var(--line);color:transparent}
.keep-row.on{border-color:var(--acc)}
.keep-row.on .keep-check{background:linear-gradient(135deg,var(--acc-deep),var(--acc-lite));
  border-color:transparent;color:var(--btn-ink)}
#keep-count{text-align:center;margin:0 0 10px}
/* page dashboard (tap a story circle) */
.story.sel .story-ring{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--acc)}
.pd{animation:fade .2s ease}
.pd-head{display:flex;align-items:center;gap:12px;margin:6px 0 12px}
.pd-pfp{width:64px;height:64px;border-radius:50%;object-fit:cover;background:var(--card2);border:1px solid var(--line);display:block}
.pd-pfp-btn{position:relative;border:0;background:none;padding:0;cursor:pointer;flex:0 0 auto}
.pd-pfp-cam{position:absolute;right:-2px;bottom:-2px;width:24px;height:24px;border-radius:50%;background:var(--acc-lite);
  color:var(--btn-ink,#04121a);display:grid;place-items:center;font-size:11px;border:2px solid var(--bg);box-shadow:0 1px 4px rgba(0,0,0,.5)}
.pd-id b{font-size:18px}
.pd-id small{color:var(--mut);display:block;margin-top:2px}
.pd-name{display:inline-flex;align-items:center;gap:6px}
.pd-pencil{border:0;background:none;color:var(--mut);padding:0;width:20px;height:20px;cursor:pointer;display:inline-grid;place-items:center}
.pd-pencil:hover{color:var(--acc-lite)}
.pd-pfp-cam svg, .pd-pencil svg{display:block}
/* live "reclipping…" tracker card on the Reclip tab */
.aj-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:18px}
.aj-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.aj-spin{width:24px;height:24px;flex:0 0 auto;border-radius:50%;border:3px solid rgba(33,212,253,.2);border-top-color:var(--acc-lite);animation:aj-rot 1s linear infinite}
@keyframes aj-rot{to{transform:rotate(360deg)}}
.aj-tx{flex:1;min-width:0}
.aj-tx b{display:block;font-size:14px}
.aj-tx small{color:var(--mut);font-size:12px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aj-toggle{border:1px solid var(--line);background:var(--card2);color:var(--txt);border-radius:8px;padding:6px 12px;font-size:12px;font-weight:700;cursor:pointer;flex:0 0 auto}
.aj-log{margin:10px 0 0;background:#070a0e;border-radius:10px;padding:10px;font-size:12px;color:var(--mut);max-height:200px;overflow-y:auto;white-space:pre-wrap;line-height:1.6}
.aj-note{margin-top:8px}
/* post caption in the reclip preview */
.pv-hook{font-weight:600;margin:6px 0}
.pv-postcap{margin-top:12px;background:var(--card2);border:1px solid var(--line);border-radius:10px;padding:11px;text-align:left}
.pv-postcap-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--mut);font-weight:700;margin-bottom:6px}
.pv-postcap-tx{font-size:13px;color:var(--txt);white-space:pre-wrap;line-height:1.55}
/* copy button: clearly a button (outline + icon), divided from the caption text above */
.pv-copy{display:inline-flex;align-items:center;justify-content:center;gap:7px;margin-top:12px;
  padding:9px 16px;font-size:13px;font-weight:700;cursor:pointer;color:var(--acc);
  background:rgba(33,212,253,.08);border:1px solid var(--acc);border-radius:10px;
  width:100%;box-sizing:border-box}
.pv-copy svg{width:16px;height:16px;flex:0 0 auto}
.pv-copy:active{filter:brightness(1.15)}
.pv-copy.done{color:#7bf0a8;border-color:#7bf0a8;background:rgba(123,240,168,.10)}
.pd-stats{display:flex;gap:8px;margin:12px 0}
.pd-stats>div{flex:1;background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:10px;text-align:center}
.pd-stats span{display:block;font-size:18px;font-weight:800}
.pd-stats label{font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.5px}
.pd-tpl{font-size:13px;color:var(--txt);margin:4px 0 12px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pd-swatches{display:inline-flex;gap:4px}
.pd-swatch{width:16px;height:16px;border-radius:50%;border:1px solid var(--line);display:inline-block}
.pd-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.pd-actions .primary{flex:1 1 100%}
.pd-actions .ghost{flex:1}
.pd-recent-h{font-size:14px;color:var(--mut);margin:16px 0 6px}
.pd-empty{text-align:center;padding:40px 16px;color:var(--mut)}
.pd-empty img{width:64px;height:64px;opacity:.8;margin-bottom:10px}
.pd-empty .big{margin-top:14px}
/* page setup wizard (swipe steps) */
.wizard.hidden{display:none}
.wiz-head{display:flex;align-items:center;gap:10px;margin:6px 0 12px}
.wiz-x{width:36px;height:36px;border-radius:50%;background:var(--card2);border:1px solid var(--line);
  color:var(--txt);font-size:15px;padding:0}
.wiz-dots{display:flex;gap:6px;margin-left:auto}
.wiz-dots .dot{width:8px;height:8px;border-radius:50%;background:var(--line);transition:all .25s}
.wiz-dots .dot.on{width:20px;border-radius:4px;background:var(--acc)}
.wiz-viewport{overflow:hidden;transition:height .35s ease}
.wiz-track{display:flex;width:400%;transition:transform .35s ease}
.wiz-step{width:25%;flex:0 0 25%;box-sizing:border-box;align-self:flex-start;padding:0 2px}
.wiz-step h3{margin-top:0}
.wiz-nav{gap:8px;margin-top:16px}
.wiz-nav .ghost{flex:0 0 auto}
.wiz-nav .primary{flex:1}
/* profile picture picker */
.pfp-pick{display:flex;justify-content:center;margin:20px 0}
.pfp-circle{width:150px;height:150px;border-radius:50%;object-fit:cover;cursor:pointer;display:block}
.pfp-circle.empty{display:grid;place-items:center;text-align:center;font-size:13px;font-weight:600;
  color:var(--mut);background:var(--card2);border:2px dashed var(--line);padding:16px;line-height:1.3}
.pfp-circle.empty:active{filter:brightness(1.1)}
/* template picker gallery */
/* template step: pick-a-template vs build-your-own choice */
.tpl-choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:10px 0 4px}
.tpl-choice-card{display:flex;flex-direction:column;align-items:stretch;gap:0;text-align:center;
  color:var(--txt);background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px;cursor:pointer}
.tpl-choice-card:active{filter:brightness(1.1);border-color:var(--acc)}
.tpl-choice-card b{font-size:14px;margin:10px 0 2px;color:var(--acc-lite)}
.tpl-choice-card small{font-size:11px;color:var(--mut);line-height:1.35;margin-bottom:2px}
.tpl-choice-prev{position:relative;aspect-ratio:9/16;border-radius:10px;overflow:hidden;background:#070a0e;
  display:flex;align-items:center;justify-content:center}
.tpl-choice-prev img{width:100%;height:100%;object-fit:cover;display:block}
/* "build your own" placeholder mockup */
.tpl-choice-prev.build{background:#fff;display:block}
.tpl-choice-prev.build .ph-pfp{position:absolute;top:14%;left:12%;width:18%;aspect-ratio:1;border-radius:50%;
  background:#dfe5ec;border:1px dashed #b9c2cf}
.tpl-choice-prev.build .ph-line{position:absolute;left:36%;top:17%;width:42%;height:6%;border-radius:3px;background:#dfe5ec}
.tpl-choice-prev.build .ph-line.sm{top:25%;width:30%;height:4.5%;background:#e9edf2}
.tpl-choice-prev.build .ph-hook{position:absolute;left:10%;top:38%;width:80%;height:13%;border-radius:5px;
  background:#eef1f5;border:1px dashed #cdd5e0}
.tpl-choice-prev.build .ph-vid{position:absolute;left:8%;top:56%;width:84%;height:30%;border-radius:6px;
  background:#e3f6fb;border:1px dashed var(--acc);color:var(--acc);display:grid;place-items:center}
.tpl-choice-prev.build .ph-vid svg{display:block}
.tpl-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0 4px}
#ct-tpl-pager{margin:4px 0 6px}
.tpl-card{border:2px solid var(--line);border-radius:12px;overflow:hidden;cursor:pointer;background:var(--card2)}
.tpl-card.on{border-color:var(--acc);box-shadow:0 0 0 3px rgba(33,212,253,.18)}
.tpl-prev{width:100%;aspect-ratio:9/16;object-fit:cover;display:block;background:#070a0e}
.tpl-prev.ph{display:grid;place-items:center;color:var(--mut);font-size:12px;text-align:center;padding:6px}
.tpl-name{padding:8px 10px;font-size:13px;font-weight:600}
/* per-account theme customization */
.customize{margin:6px 0 4px}
.cz-title{font-size:14px;font-weight:700;margin:10px 0 8px}
.cz-row{display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:8px}
.cz-row label{margin:0;color:var(--txt);font-size:14px;font-weight:600}
.cz-color{width:54px;height:38px;padding:0;border:1px solid var(--line);border-radius:10px;
  background:var(--card2);cursor:pointer}
.cz-font{width:auto;min-width:150px;max-width:60%;padding:10px;font-size:14px}

/* ---------- mobile-first / PWA layout ---------- */
/* Marketplace: 1 column on phones, 2-up once there's room. (.grid stays 2-up for
   the 9:16 video thumbnails in Run/Library — only the info-dense market grid changes.) */
#mk-grid{grid-template-columns:1fr}
@media (min-width:560px){
  #mk-grid{grid-template-columns:1fr 1fr}
  main{max-width:680px}
}
/* Sort control must never overflow a narrow screen */
#page-market .sortrow{flex-wrap:wrap;gap:8px}
#mk-sort{overflow-x:auto;max-width:100%;-webkit-overflow-scrolling:touch}
#mk-sort button{white-space:nowrap}
/* account/billing + picker rows wrap cleanly and keep tappable buttons */
.type{flex-wrap:wrap}
.type button{min-height:40px}
/* comfortable touch targets on primary actions */
.primary,.ghost{min-height:42px}
.tab{min-height:52px}
/* let long captions/handles wrap instead of overflowing cards */
.vid .cap,.mk-stats,.acct-meta b{overflow-wrap:anywhere}
/* keep content clear of the iOS home indicator / bottom tab bar */
main{padding-bottom:calc(16px + env(safe-area-inset-bottom))}

/* ---------- settings: hub-and-spoke ---------- */
.set-viewport{position:relative;overflow-x:hidden;min-height:60vh}
.set-page h2{margin-bottom:14px}
/* plan status card */
.pstat{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:15px 16px;
  cursor:pointer;margin-bottom:20px}
.pstat:active{filter:brightness(1.1)}
.pstat-top{display:flex;align-items:center;justify-content:space-between}
.pstat-top b{font-size:16px}
.pstat-chev{display:inline-flex;align-items:center;gap:3px;color:var(--mut)}
.pstat-chev.up{color:var(--acc);font-size:13px;font-weight:800}
.pstat-chev svg{display:block}
.pstat-line{font-size:13px;color:var(--mut);margin:6px 0 10px}
.pstat-bar{height:6px;border-radius:99px;background:var(--card2);overflow:hidden}
.pstat-bar i{display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,var(--acc-deep),var(--acc-lite));transition:width .4s ease}
.pstat-sub{font-size:13px;color:var(--mut);margin-top:4px}
/* grouped rows */
.set-group{margin-bottom:20px}
.set-group-label{font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;
  color:var(--mut);margin:0 4px 8px}
.set-row{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;text-align:left;
  background:var(--card);border:1px solid var(--line);color:var(--txt);
  padding:12px 14px;cursor:pointer;border-radius:0;border-bottom-width:0}
.set-group .set-row:first-of-type{border-radius:14px 14px 0 0}
.set-group .set-row:last-of-type{border-radius:0 0 14px 14px;border-bottom-width:1px}
.set-group .set-row:first-of-type:last-of-type{border-radius:14px}
.set-row:active{filter:brightness(1.12)}
.set-row-ic{color:var(--acc);flex:0 0 auto;display:grid;place-items:center}
.set-row-ic svg{display:block}
.set-row-tx{flex:1;min-width:0}
.set-row-tx b{display:block;font-size:14.5px;font-weight:600}
.set-row-tx small{display:block;font-size:12px;color:var(--mut);margin-top:1px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.set-row-chev{color:var(--mut);flex:0 0 auto}
.set-row-chev svg{display:block}
/* footer */
.set-foot{margin-top:6px}
.set-logout{border-radius:14px !important;border-bottom-width:1px !important;justify-content:center}
.set-logout .set-row-tx{flex:0 0 auto}
.set-delete-link{display:block;margin:22px auto 8px;background:none;border:none;cursor:pointer;
  color:var(--bad);opacity:.75;font-size:13px;padding:8px}
.set-delete-link:active{opacity:1}
/* sub-pages */
.set-subhead{display:flex;align-items:center;gap:6px;margin-bottom:16px}
.set-subhead h3{margin:0;font-size:18px}
.set-back{display:inline-flex;align-items:center;gap:2px;background:none;border:none;cursor:pointer;
  color:var(--acc);font-size:14px;font-weight:700;padding:8px 10px 8px 0}
.set-back svg{display:block}
.set-subbody label{display:block;margin:14px 0 6px}
.set-subbody .primary.big,.set-subbody .ghost.big{width:100%;margin-top:14px}
.set-divider{height:1px;background:var(--line);margin:22px 0}
/* manage plan carousel */
.mp-rule{margin:-8px 0 16px}
.mp-car{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;
  padding:14px 4px;margin:0 -4px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.mp-car::-webkit-scrollbar{display:none}
.mp-card{flex:0 0 76%;max-width:300px;scroll-snap-align:center;position:relative;
  background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px 18px;
  display:flex;flex-direction:column}
.mp-card.cur{border-color:var(--acc);box-shadow:0 0 0 1px rgba(33,212,253,.25)}
.mp-badge{position:absolute;top:-10px;left:16px;font-size:9.5px;font-weight:800;letter-spacing:.8px;
  text-transform:uppercase;background:linear-gradient(135deg,var(--acc-deep),var(--acc-lite));
  color:var(--btn-ink);padding:4px 10px;border-radius:20px}
.mp-name{font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--mut)}
.mp-price{font-size:30px;font-weight:800;margin:6px 0 2px}
.mp-price span{font-size:13px;font-weight:600;color:var(--mut)}
.mp-limits{font-size:13.5px;margin:6px 0 4px}
.mp-blurb{font-size:12.5px;color:var(--mut);line-height:1.45;margin-bottom:12px}
.mp-card button{margin-top:auto;width:100%}
.mp-dots{display:flex;justify-content:center;gap:6px;margin-top:4px}
.mp-dots i{width:7px;height:7px;border-radius:50%;background:var(--line);transition:all .25s}
.mp-dots i.on{width:18px;border-radius:4px;background:var(--acc)}

/* ---------- bottom sheet (shared: top-up, cap-hit) ---------- */
.sheet-ov{position:fixed;inset:0;z-index:140;background:rgba(0,0,0,.6);
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  display:flex;align-items:flex-end;justify-content:center}
.sheet{width:100%;max-width:480px;background:var(--card);border:1px solid var(--line);
  border-bottom:none;border-radius:22px 22px 0 0;padding:8px 18px;
  padding-bottom:calc(18px + env(safe-area-inset-bottom));touch-action:none}
.sheet-grab{width:40px;height:4px;border-radius:99px;background:var(--line);margin:4px auto 10px}
.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.sheet-title{font-size:17px}
.sheet-x{width:32px;height:32px;display:grid;place-items:center;background:none;border:none;
  color:var(--txt);cursor:pointer;padding:0}
.sheet-x svg{width:18px;height:18px}
.sheet-row{display:flex;align-items:center;gap:12px;min-height:52px;
  background:var(--card2);border:1px solid var(--line);border-radius:12px;
  padding:10px 14px;margin-bottom:8px}
.sheet-row-tx{flex:1;min-width:0}
.sheet-row-tx b{display:block;font-size:14.5px}
.sheet-row-tx small{color:var(--mut);font-size:12px}
.sheet-row button{flex:0 0 auto;min-width:76px}
/* cap-hit content */
.cap-lead{font-size:13.5px;color:var(--mut);line-height:1.55;margin:0 0 14px}
.cap-up{width:100%;margin-bottom:10px;text-align:center}
.cap-up small{display:block;font-weight:600;font-size:11.5px;opacity:.8;margin-top:2px}
.cap-ghost{width:100%}

/* ---------- onboarding tour ---------- */
.tour-bd{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.78);pointer-events:all}
.tour-tip{position:fixed;z-index:202;max-width:320px;width:calc(100vw - 32px);
  background:var(--card);border:1px solid var(--acc);border-radius:18px;
  padding:18px 16px 14px;box-shadow:0 8px 40px rgba(33,212,253,.22);pointer-events:auto}
.tour-tip h4{margin:0 0 8px;font-size:16px;font-weight:700;
  background:linear-gradient(135deg,var(--acc-lite),var(--acc-deep));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.tour-tip p{margin:0 0 14px;font-size:14px;color:var(--txt);line-height:1.45}
.tour-foot{display:flex;align-items:center;gap:8px}
.tour-skip{font-size:12px;color:var(--mut);background:none;border:none;cursor:pointer;
  padding:0;min-height:auto;font-weight:normal;white-space:nowrap}
.tour-dots{display:flex;gap:5px;margin:0 auto}
.tour-dot{width:7px;height:7px;border-radius:50%;background:var(--line);transition:all .2s}
.tour-dot.on{width:18px;border-radius:4px;background:var(--acc)}
.tour-nxt{padding:10px 16px;font-size:13px;min-height:auto;white-space:nowrap}
.tour-hl{position:relative!important;z-index:201!important;outline:2px solid var(--acc);
  outline-offset:4px;box-shadow:0 0 0 6px rgba(33,212,253,.12)!important;border-radius:10px}

/* ================================================================
   DESKTOP LAYOUT (≥1024px) — mobile above is untouched.
   Sidebar nav, two-column workspaces, docked preview, two-pane
   settings, hover/keyboard polish. Same DOM, rearranged.
   ================================================================ */
.sidebar{display:none}
#run-desk{display:none}
/* delete button in the reclip preview — shown only in the desktop docked panel */
.pv-del{display:none;margin-top:8px;color:var(--bad);border-color:rgba(255,107,107,.4)}
/* per-page reclip count — desktop rail only (mobile stories stay avatar+name) */
.story-count{display:none}

@media (min-width:1024px){
  /* --- 1. sidebar takes over navigation --- */
  .topbar{display:none}
  .tabs{display:none}
  .sidebar{display:flex;flex-direction:column;position:fixed;left:0;top:0;bottom:0;width:230px;
    background:var(--card);border-right:1px solid var(--line);padding:18px 12px;z-index:40}
  .sb-brand{display:flex;align-items:center;gap:9px;padding:4px 10px 18px}
  .sb-brand img{width:30px;height:30px;object-fit:contain}
  .sb-brand .sb-word{width:auto;height:20px}
  .sb-nav{display:flex;flex-direction:column;gap:4px}
  .sb-item{display:flex;align-items:center;gap:11px;width:100%;padding:11px 12px;border-radius:11px;
    background:none;border:none;color:var(--mut);font-size:14px;font-weight:600;cursor:pointer;
    text-align:left;transition:background .15s ease,color .15s ease}
  .sb-item svg{display:block;flex:0 0 auto}
  .sb-logo-ico{width:19px;height:19px;object-fit:contain;opacity:.55}
  .sb-item:hover{background:var(--card2);color:var(--txt)}
  .sb-item.active{background:rgba(33,212,253,.1);color:var(--acc)}
  .sb-item.active .sb-logo-ico{opacity:1}
  .sb-bottom{margin-top:auto;display:flex;flex-direction:column;gap:8px}
  .sb-plan{background:var(--card2);border:1px solid var(--line);border-radius:12px;
    padding:12px 13px;cursor:pointer;transition:border-color .15s ease}
  .sb-plan:hover{border-color:rgba(33,212,253,.4)}
  .sb-plan b{display:block;font-size:13.5px}
  .sb-plan small{display:block;font-size:11px;color:var(--mut);margin-top:5px}
  .sb-bar{height:5px;border-radius:99px;background:var(--bg);overflow:hidden;margin-top:8px}
  .sb-bar i{display:block;height:100%;border-radius:99px;
    background:linear-gradient(90deg,var(--acc-deep),var(--acc-lite))}

  /* --- main content clears the sidebar, capped + centered on wide screens --- */
  body{padding-bottom:0}                              /* no bottom tab bar to clear */
  main{margin-left:230px;max-width:none;padding:28px 36px 40px}
  .page{max-width:1400px;margin:0 auto}

  /* --- 2. Reclips library: toolbar + dense grid + docked preview panel --- */
  .lib-toolbar{display:flex;gap:10px;align-items:center;margin-bottom:18px}
  .lib-toolbar input[type="search"]{flex:1;max-width:340px;padding:11px 14px}
  .lib-toolbar select{width:auto;padding:11px 34px 11px 12px}
  .grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
  /* preview docks as a right-side panel instead of a centered modal */
  #preview{justify-content:flex-end;align-items:stretch;padding:0;background:rgba(0,0,0,.45)}
  #preview .modal-card{width:380px;max-width:380px;height:100vh;max-height:100vh;
    border-radius:0;border-top:none;border-bottom:none;border-right:none;
    overflow-y:auto;animation:pvSlide .3s cubic-bezier(.22,1,.36,1)}
  #preview .modal-card video{max-height:44vh}
  .pv-del{display:block}

  /* --- 3. Pages: master-detail (left rail of pages, detail fills the right) --- */
  #page-create.active{display:grid;grid-template-columns:280px 1fr;gap:0 30px;align-items:start}
  #page-create h2{grid-column:1/-1}
  #pages-strip{grid-column:1;grid-row:2;display:flex;flex-direction:column;gap:6px;
    overflow-x:visible;overflow-y:auto;max-height:calc(100vh - 140px);
    position:sticky;top:28px;padding:2px 6px 2px 2px;margin:0}
  #page-detail,#page-wizard{grid-column:2;grid-row:2;min-width:0}
  /* stories become rail rows: avatar + name + count */
  #pages-strip .story{width:100%;display:flex;align-items:center;gap:12px;text-align:left;
    padding:9px 10px;border-radius:12px;transition:background .15s ease}
  #pages-strip .story:hover{background:var(--card2)}
  #pages-strip .story.sel{background:rgba(33,212,253,.1)}
  #pages-strip .story.sel .story-ring{box-shadow:none}
  #pages-strip .story-ring{width:42px;height:42px;padding:2px;flex:0 0 auto;margin:0}
  #pages-strip .story-ring.add span{font-size:20px}
  #pages-strip .story-name{flex:1;min-width:0;margin:0;font-size:14px;font-weight:600;text-align:left}
  #pages-strip .story-count{display:block;font-size:11.5px;color:var(--mut);flex:0 0 auto}
  #pages-strip .story.sel .story-name{color:var(--acc)}
  /* the detail pane's recent grid inherits the dense auto-fill .grid */
  .pd-head{margin-top:0}
}
@keyframes pvSlide{from{transform:translateX(60px);opacity:.4}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){
  #preview .modal-card{animation:none}
}

/* ---- desktop wizard modal (iframe host) ---- */
.wizframe{position:fixed;inset:0;z-index:130;background:rgba(4,6,10,.7);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  display:flex;align-items:center;justify-content:center}
.wizframe.hidden{display:none}
.wizframe-card{width:560px;max-width:92vw;height:min(85vh,780px);border-radius:20px;
  overflow:hidden;border:1px solid var(--line);box-shadow:0 40px 90px rgba(0,0,0,.65);
  background:var(--bg);transition:width .3s ease}
.wizframe-card.wide{width:760px}
.wizframe-card iframe{width:100%;height:100%;border:0;display:block}

@media (min-width:1024px){
  /* --- 2b. Reclip home: ONE centered column at any width (no dead rail) ---
     Flow: CTA -> Quick reclip chips -> Recent runs strip (when fresh) ->
     Recent reclips grid (or the zero-reclips demo). Active run card streams
     its logs inline right under the CTA. */
  #page-run.active{display:block;max-width:880px;margin:0 auto}
  #active-jobs{margin-top:22px}
  #run-desk{display:block;margin-top:26px}
  #recent-runs{margin-top:26px}
  #recent-reclips{margin-top:28px}
  .rd-quick .how-title{margin-bottom:10px}
  .rd-chips{display:flex;flex-wrap:wrap;gap:10px}
  .rd-chip{display:inline-flex;align-items:center;gap:10px;padding:9px 14px 9px 9px;
    background:var(--card);border:1px solid var(--line);border-radius:99px;color:var(--txt);
    font-size:13.5px;font-weight:600;cursor:pointer;transition:border-color .18s ease}
  .rd-chip:hover{border-color:var(--acc)}
  .rd-chip img{width:30px;height:30px;border-radius:50%;object-fit:cover;background:var(--card2)}
  .rd-chip svg{color:var(--mut)}

  .aj-toggle{display:none}                 /* logs stream inline on desktop */
  .aj-log{max-height:320px}

  /* --- 5. settings: two-pane --- */
  .set-desk{display:grid;grid-template-columns:340px minmax(0,1fr);gap:0 40px;align-items:start}
  .set-desk-pane{min-width:0;padding-top:52px}
  .set-desk .set-back{display:none}        /* pane swaps are instant; no back needed */
  .set-desk .set-sub .set-subhead{margin-bottom:20px}
  .set-row.on{background:rgba(33,212,253,.1);border-color:rgba(33,212,253,.25)}
  .set-row.on .set-row-tx b{color:var(--acc)}
  /* plan picker: 2x2 grid with the odd last card centered (mobile keeps the carousel).
     The current plan is omitted here — it's the summary card above. */
  .mp-car{display:grid;grid-template-columns:1fr 1fr;overflow:visible;scroll-snap-type:none;
    gap:14px;padding:14px 0;max-width:720px}
  .mp-card{flex:none;width:100%;max-width:none;scroll-snap-align:none}
  .mp-card:last-child:nth-child(odd){grid-column:1/-1;width:calc(50% - 7px);justify-self:center}
  .mp-card .mp-price{font-size:26px}
  .mp-dots{display:none}

  /* --- 6. polish: density --- */
  .set-row{min-height:46px;padding:10px 12px}
  .sheet-row{min-height:46px;padding:8px 12px}
  .type{padding:10px}
  .rr-card{padding:10px 8px}
}

/* --- 6. polish: hover states (desktop pointers only, never touch) --- */
@media (min-width:1024px) and (hover:hover){
  .vid,.acct-card,.rr-card,.mp-card,.plan-card,.keep-row,.sheet-row,.pstat,.lib-strip-item,
  .tpl-card,.story,.mk-card{transition:transform .18s ease,border-color .18s ease,filter .18s ease}
  .vid:hover,.acct-card:hover,.rr-card:hover,.mp-card:hover,.plan-card:hover,.pstat:hover,
  .tpl-card:hover,.mk-card:hover{transform:translateY(-2px);border-color:var(--acc)}
  .sheet-row:hover,.keep-row:hover{border-color:var(--acc)}
  .vid,.thumb,.acct-card,.rr-card,.story,.set-row,.pstat,.lib-strip-item,.tpl-card,
  .sheet-row,.keep-row,.sb-item,.sb-plan{cursor:pointer}
  .set-row:hover{background:var(--card2)}
  .ghost:hover{border-color:var(--acc)}
  .primary:hover{filter:brightness(1.08)}
}
@media (prefers-reduced-motion:reduce){
  .wizframe-card{transition:none}
  .vid,.acct-card,.rr-card,.mp-card,.plan-card,.keep-row,.sheet-row,.pstat,.lib-strip-item,
  .tpl-card,.story,.mk-card{transition:none}
  .vid:hover,.acct-card:hover,.rr-card:hover,.mp-card:hover,.plan-card:hover,.pstat:hover,
  .tpl-card:hover,.mk-card:hover{transform:none}
}

/* --- 6. polish: thin themed scrollbars on desktop --- */
@media (min-width:1024px){
  *{scrollbar-width:thin;scrollbar-color:var(--card2) transparent}
  *::-webkit-scrollbar{width:9px;height:9px}
  *::-webkit-scrollbar-track{background:transparent}
  *::-webkit-scrollbar-thumb{background:var(--card2);border-radius:99px;border:2px solid var(--bg)}
  *::-webkit-scrollbar-thumb:hover{background:var(--line)}
}
/* --- 6. polish: keyboard focus (all layouts) --- */
button:focus-visible,a:focus-visible,select:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--acc);outline-offset:2px}

/* ---- shared RECLIPIT loading spinner (logo in rotating cyan ring) ---- */
.rc-spin{position:relative;display:grid;place-items:center;margin:0 auto}
.rc-spin::before{content:"";position:absolute;inset:0;border-radius:50%;
  border:3px solid rgba(33,212,253,.18);border-top-color:var(--acc-lite);
  animation:rcspin-rot 1s linear infinite}
.rc-spin img{animation:rcspin-pulse 1.25s ease-in-out infinite;object-fit:contain}
.rc-spin.sm::before{border-width:2px}
@keyframes rcspin-rot{to{transform:rotate(360deg)}}
@keyframes rcspin-pulse{0%,100%{transform:scale(.9);opacity:.7}50%{transform:scale(1.05);opacity:1}}
@media (prefers-reduced-motion:reduce){.rc-spin::before,.rc-spin img{animation:none}}
/* calm check-back estimate line */
.rf-checkback,.aj-eta{font-size:13px;color:var(--mut)}
.rf-checkback b,.aj-eta b{color:var(--txt);font-weight:700}

/* settings: notifications toggle switch */
.set-row-static{cursor:default}
.set-switch{position:relative;flex:0 0 auto;width:44px;height:26px;cursor:pointer}
.set-switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.set-switch i{position:absolute;inset:0;border-radius:99px;background:var(--card2);
  border:1px solid var(--line);transition:background .2s ease}
.set-switch i::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;
  border-radius:50%;background:var(--mut);transition:transform .2s ease,background .2s ease}
.set-switch input:checked + i{background:rgba(33,212,253,.25);border-color:var(--acc)}
.set-switch input:checked + i::after{transform:translateX(18px);
  background:linear-gradient(135deg,var(--acc-deep),var(--acc-lite))}
.set-switch input:disabled + i{opacity:.5}
/* compact spinner in the active-job card */
.aj-spinwrap{flex:0 0 auto;display:grid;place-items:center}
.aj-eta{color:var(--acc) !important;margin-top:2px}

/* ---------- "Add to Home Screen" install experience ---------- */
.topbar-install{width:36px;height:36px;border:none;border-radius:10px;background:none;
  color:var(--acc);display:grid;place-items:center;cursor:pointer;padding:0;margin-right:2px}
.topbar-install.hidden{display:none}
.inst-preview{display:flex;flex-direction:column;align-items:center;gap:8px;margin:6px 0 16px}
.inst-tile{width:72px;height:72px;border-radius:18px;overflow:hidden;
  box-shadow:0 10px 30px -8px rgba(33,212,253,.45);border:1px solid var(--line)}
.inst-tile img{width:100%;height:100%;display:block}
.inst-preview span{font-size:12px;color:var(--txt);font-weight:600}

/* ---- iOS animated install guide (fake screen recording, pure CSS/JS) ---- */
.ig-ov{position:fixed;inset:0;z-index:140;background:rgba(4,6,10,.96);
  display:flex;align-items:center;justify-content:center;overflow-y:auto;
  padding:26px 18px calc(20px + env(safe-area-inset-bottom))}
.ig-x{position:fixed;top:calc(12px + env(safe-area-inset-top));right:14px;width:40px;height:40px;
  display:grid;place-items:center;background:none;border:none;color:#fff;cursor:pointer;z-index:2}
.ig-x svg{filter:drop-shadow(0 1px 3px rgba(0,0,0,.8))}
.ig-wrap{width:100%;max-width:340px;margin:auto;display:flex;flex-direction:column;
  align-items:center;gap:18px;text-align:center}
.ig-title{margin:0;font-size:19px;font-weight:800}
.ig-phone{width:216px;height:426px;border-radius:34px;border:3px solid #2a323d;background:#000;
  padding:8px;box-shadow:0 30px 70px -20px rgba(0,0,0,.8)}
.ig-screen{position:relative;width:100%;height:100%;border-radius:24px;overflow:hidden;background:var(--bg)}
/* fake reclipit page + safari bar */
.ig-page{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;padding-top:34px}
.ig-logo{width:44px;height:44px;margin-bottom:14px}
.ig-sk{width:70%;height:11px;border-radius:6px;background:var(--card2);margin:5px 0}
.ig-sk.s2{width:52%}.ig-sk.s3{width:62%}
.ig-safbar{position:absolute;left:0;right:0;bottom:0;height:44px;background:#171c24;
  border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-around}
.ig-sic{color:var(--mut);font-size:15px}
.ig-share{color:var(--acc);display:grid;place-items:center;width:30px;height:30px;border-radius:8px}
.p0 .ig-share{animation:ig-pulse 1.1s ease-in-out infinite}
@keyframes ig-pulse{0%,100%{transform:scale(1);background:none}
  50%{transform:scale(1.22);background:rgba(33,212,253,.18)}}
/* share sheet */
.ig-sheet{position:absolute;left:0;right:0;bottom:0;background:#1b212b;border-radius:16px 16px 0 0;
  padding:8px 10px 14px;transform:translateY(105%);transition:transform .45s cubic-bezier(.34,1.32,.5,1)}
.ig-grab{width:34px;height:4px;border-radius:99px;background:var(--line);margin:2px auto 10px}
.ig-row{display:flex;align-items:center;justify-content:space-between;font-size:12.5px;
  color:var(--txt);padding:11px 10px;border-radius:9px}
.ig-row span{color:var(--mut)}
.p1 .ig-sheet,.p2 .ig-sheet{transform:translateY(0)}
.p1 .ig-aths{background:rgba(33,212,253,.16);animation:ig-hl .9s ease-in-out .5s 2}
.ig-aths .ig-plus{color:var(--acc)}
@keyframes ig-hl{0%,100%{background:rgba(33,212,253,.16)}50%{background:rgba(33,212,253,.38)}}
/* confirm dialog */
.ig-confirm{position:absolute;left:14px;right:14px;top:50%;transform:translateY(-40%) scale(.92);
  opacity:0;background:#232a35;border-radius:14px;padding:14px 14px 10px;
  transition:opacity .3s ease,transform .3s ease;pointer-events:none}
.ig-cf-head{font-size:12.5px;font-weight:700;margin-bottom:10px}
.ig-cf-app{display:flex;align-items:center;gap:9px;background:#1b212b;border-radius:10px;padding:8px}
.ig-cf-app img{width:30px;height:30px;border-radius:8px}
.ig-cf-app span{font-size:12px;font-weight:600}
.ig-cf-btns{display:flex;justify-content:space-between;padding:10px 6px 2px;font-size:12.5px}
.ig-cf-btns span{color:var(--mut)}
.ig-cf-btns .ig-addbtn{color:var(--acc);font-weight:800}
.p2 .ig-confirm{opacity:1;transform:translateY(-50%) scale(1)}
.p2 .ig-addbtn{animation:ig-addpulse 1s ease-in-out .5s 2}
@keyframes ig-addpulse{0%,100%{text-shadow:none}50%{text-shadow:0 0 12px rgba(33,212,253,.9)}}
/* home screen w/ springing icon */
.ig-home{position:absolute;inset:0;background:var(--bg);opacity:0;transition:opacity .3s ease;
  display:grid;grid-template-columns:repeat(4,1fr);gap:12px;align-content:start;
  padding:34px 16px;pointer-events:none}
.ig-ico{aspect-ratio:1;border-radius:12px;background:var(--card2)}
.ig-newico{background:none;overflow:hidden;transform:scale(0);border-radius:12px}
.ig-newico img{width:100%;height:100%;display:block}
.p3 .ig-home{opacity:1}
.p3 .ig-newico{transform:scale(1);transition:transform .55s cubic-bezier(.34,1.56,.64,1) .25s}
/* tap indicator dot */
.ig-tap{position:absolute;width:26px;height:26px;border-radius:50%;
  background:rgba(255,255,255,.35);border:2px solid rgba(255,255,255,.7);
  opacity:0;pointer-events:none;transition:all .3s ease}
.p0 .ig-tap{left:50%;bottom:8px;transform:translateX(-50%);opacity:1;animation:ig-tapin 1.2s ease-in-out .9s infinite}
.p1 .ig-tap{left:50%;bottom:64px;transform:translateX(-50%);opacity:1;animation:ig-tapin 1.2s ease-in-out .7s infinite}
.p2 .ig-tap{right:24px;left:auto;top:56%;opacity:1;animation:ig-tapin 1.2s ease-in-out .7s infinite}
.p3 .ig-tap{opacity:0}
@keyframes ig-tapin{0%,100%{transform:translateX(-50%) scale(1)}50%{transform:translateX(-50%) scale(.72)}}
.p2 .ig-tap{animation-name:ig-tapin2}
@keyframes ig-tapin2{0%,100%{transform:scale(1)}50%{transform:scale(.72)}}
/* static (reduced-motion) variant: share sheet held open, row highlighted */
.ig-screen.static .ig-sheet{transform:translateY(0);transition:none}
.ig-screen.static .ig-share{animation:none;background:rgba(33,212,253,.18)}
.ig-screen.static .ig-aths{background:rgba(33,212,253,.25);animation:none}
.ig-screen.static .ig-tap{display:none}
/* synced step list */
.ig-steps{list-style:none;counter-reset:ig;margin:0;padding:0;width:100%;max-width:300px;text-align:left}
.ig-steps li{counter-increment:ig;display:flex;align-items:center;gap:10px;padding:7px 10px;
  border-radius:10px;font-size:14px;color:var(--mut);transition:color .25s ease,background .25s ease}
.ig-steps li::before{content:counter(ig);flex:0 0 auto;width:22px;height:22px;border-radius:50%;
  display:grid;place-items:center;font-size:12px;font-weight:800;background:var(--card2);color:var(--mut)}
.ig-steps li.on{color:var(--txt);background:rgba(33,212,253,.08)}
.ig-steps li.on::before{background:linear-gradient(135deg,var(--acc-deep),var(--acc-lite));color:var(--btn-ink)}
.ig-done{max-width:300px;width:100%}
@media (prefers-reduced-motion:reduce){
  .ig-sheet,.ig-confirm,.ig-home,.ig-newico,.ig-tap{transition:none;animation:none}
}

/* launch offer on the plan picker */
.mp-strike{text-decoration:line-through;color:var(--mut);font-size:16px;margin-right:7px;font-weight:700}
.mp-fm{display:block;font-size:11.5px;color:var(--mut);font-weight:600;margin-top:2px}
.mp-badge.lo{background:linear-gradient(135deg,var(--acc-deep),var(--acc-lite))}
.cap-fm{font-size:12px;color:var(--mut);margin:-4px 0 10px}

/* settings footer: quiet legal links */
.set-legal{text-align:center;margin-top:14px;font-size:12.5px;color:var(--mut)}
.set-legal a{color:var(--mut);text-decoration:none}
.set-legal a:hover{color:var(--acc)}
.auth-fine a{color:var(--mut);text-decoration:underline}

/* login: forgot-password link */
.auth-forgot{margin:-6px 0 14px;font-size:13.5px;text-align:right}
.auth-forgot a{color:var(--mut);cursor:pointer;text-decoration:underline}
.auth-forgot a:hover{color:var(--acc)}

/* ---------- guided first-run onboarding ---------- */
/* visual-only spotlight: dims everything except the target; never blocks clicks */
.ob-layer{position:fixed;inset:0;z-index:240;pointer-events:none}
.ob-hole{position:fixed;border-radius:14px;transition:all .3s ease;
  box-shadow:0 0 0 9999px rgba(4,6,10,.78),0 0 0 2px rgba(33,212,253,.65),
    0 0 24px rgba(33,212,253,.35)}
.ob-mark{position:fixed;pointer-events:auto;background:var(--card);border:1px solid var(--line);
  border-radius:14px;padding:13px 16px;font-size:14px;line-height:1.55;color:var(--txt);
  box-shadow:0 18px 50px rgba(0,0,0,.55);animation:ob-in .35s cubic-bezier(.34,1.32,.5,1)}
.ob-mark span{display:block}
.ob-skip{display:inline-block;margin-top:8px;font-size:12px;color:var(--mut);
  text-decoration:underline;cursor:pointer}
.ob-skip:hover{color:var(--acc)}
@keyframes ob-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
/* restrained celebration: falling sparks in brand colors */
.ob-party{position:fixed;inset:0;z-index:260;pointer-events:none;overflow:hidden}
.ob-party i{position:absolute;top:-12px;width:7px;height:11px;border-radius:2px;
  animation:ob-fall 2.1s ease-in forwards;opacity:.9}
@keyframes ob-fall{to{transform:translateY(105vh) rotate(340deg);opacity:0}}
/* THE CHOICE dialog (app side) */
.obc-card{max-width:380px;text-align:center;padding:26px 22px}
.obc-card h3{margin:0 0 8px;font-size:20px}
.obc-card .hint{margin:0 0 18px}
.obc-card button{width:100%;margin-top:10px}
@media (prefers-reduced-motion:reduce){
  .ob-mark{animation:none}
  .ob-hole{transition:none}
  .ob-party{display:none}
}

/* ---------- feedback prompt ---------- */
.fb-stars{display:flex;justify-content:center;gap:10px;margin:8px 0 4px}
.fb-star{width:52px;height:52px;font-size:34px;line-height:1;background:none;border:none;
  color:var(--card2);cursor:pointer;padding:0;transition:transform .15s ease,color .15s ease}
.fb-star.on{color:var(--acc);text-shadow:0 0 18px rgba(33,212,253,.45)}
.fb-star:active{transform:scale(1.15)}
.fb-more{margin-top:14px}
.fb-more.hidden{display:none}
.fb-text{width:100%;min-height:88px;resize:vertical;padding:12px 14px;border-radius:12px;
  border:1px solid var(--line);background:var(--card2);color:var(--txt);font:inherit;font-size:14.5px}
.fb-text:focus{outline:none;border-color:var(--acc)}
.fb-submit{width:100%;margin-top:12px}

/* ---------- FIX: mobile reclip preview — fits every phone, X always reachable ---------- */
@media (max-width:1023px){
  #preview{align-items:center;padding:10px;
    padding-top:calc(10px + env(safe-area-inset-top));
    padding-bottom:calc(10px + env(safe-area-inset-bottom))}
  #preview .modal-card{
    max-height:calc(100dvh - 20px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
  /* 9:16 video letterboxed into ~60% of the viewport height, centered */
  #preview .modal-card video{
    max-height:60vh;max-height:60dvh;width:auto;max-width:100%;
    margin:0 auto;object-fit:contain;flex:0 1 auto}
  /* X pinned to the viewport (not the scrolling card): 44px target, inside the safe area */
  #preview .modal-close{
    position:fixed;top:calc(10px + env(safe-area-inset-top));right:12px;
    width:44px;height:44px;background:rgba(10,12,16,.65);border-radius:50%;
    -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
  /* metadata/actions compress before the video does */
  #preview .pv-postcap-txt{max-height:24vh;overflow-y:auto}
}

/* fresh-from-notification renders: subtle glow + NEW badge (this visit only) */
.vid.is-new .thumb{box-shadow:0 0 0 2px rgba(33,212,253,.55),0 0 22px rgba(33,212,253,.3)}
.vid.is-new .thumb::after{content:"NEW";position:absolute;top:6px;left:6px;z-index:3;
  padding:3px 8px;border-radius:7px;font-size:10px;font-weight:800;letter-spacing:1px;
  background:linear-gradient(135deg,var(--acc-deep),var(--acc-lite));color:var(--btn-ink)}

/* launch offer: badges + eligibility sheet bits */
.lo-tag{display:inline-block;margin-left:7px;padding:1px 7px;border-radius:99px;
  font-size:9px;font-weight:800;letter-spacing:.5px;font-style:normal;
  background:linear-gradient(135deg,var(--acc-deep),var(--acc-lite));color:var(--btn-ink);
  vertical-align:1px}
.lo-tag-sb{display:block;margin:8px 0 0;text-align:center;padding:3px 8px;font-size:10px}
.lo-sheet-price{text-align:center;font-size:15px;color:var(--mut);margin:4px 0 14px}
.lo-sheet-price s{opacity:.7}
.lo-sheet-price b{font-size:26px;color:var(--txt);margin:0 6px}
.lo-sheet-price span{display:block;font-size:12.5px;margin-top:3px}
.lo-sheet-meter{margin:0 0 16px;text-align:center}
.lo-sheet-meter small{font-size:12px;font-weight:700;color:var(--txt)}
.lo-track{height:6px;border-radius:99px;background:var(--card2);overflow:hidden;margin-top:6px}
.lo-track i{display:block;height:100%;border-radius:99px;
  background:linear-gradient(90deg,var(--acc-deep),var(--acc-lite))}
