: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))}

/* ---------- 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}
