:root{
  --bg:hsl(210 20% 98%); --fg:hsl(220 13% 18%); --card:#fff;
  --primary:hsl(235 78% 57%); --primary-soft:hsl(248 55% 97%); --primary-tint:hsl(235 78% 57% / .08);
  --muted:hsl(220 14% 95%); --mfg:hsl(220 9% 40%); --border:hsl(220 13% 90%);
  --green:hsl(152 55% 32%); --green-soft:hsl(150 45% 95%);
  --amber:hsl(32 85% 38%); --amber-soft:hsl(40 90% 95%);
  --red:hsl(0 62% 45%);
  --shadow-card:0 1px 3px rgb(0 0 0 / .05),0 1px 1px rgb(0 0 0 / .03);
  --shadow-float:0 10px 30px -10px rgb(20 20 50 / .16),0 2px 8px -2px rgb(0 0 0 / .05);
  --display:"Fraunces",Georgia,serif; --prose:"Source Serif 4",Georgia,serif;
  --ui:"Geist",-apple-system,system-ui,sans-serif; --mono:"Geist Mono",ui-monospace,monospace;
  --ease:cubic-bezier(.22,1,.36,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--bg);color:var(--fg);font-family:var(--ui);font-size:16px;-webkit-font-smoothing:antialiased;overflow-x:hidden}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
input,textarea,select{font:inherit;color:inherit}
a{color:var(--primary);text-decoration:none}
svg.i{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex:none}



/* ---------- member site ---------- */
.m-shell{display:grid;grid-template-columns:256px 1fr;min-height:100vh}
.m-side{background:var(--bg);border-right:1px solid var(--border);padding:18px 12px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:9px;padding:2px 8px 20px}
.brand img{width:24px;height:auto}
.brand b{font-family:var(--display);font-style:italic;font-weight:600;font-size:21px;letter-spacing:-.01em}
.m-nav a{display:flex;align-items:center;gap:12px;width:100%;padding:10px 10px;border-radius:10px;font-size:15.5px;color:hsl(220 9% 30%);text-align:left}
.m-nav a:hover{background:var(--muted)}
.m-nav a.on{background:var(--primary-tint);color:var(--fg);font-weight:500}
.m-nav a.on svg{color:var(--primary)}
.m-user{margin-top:auto;border-top:1px solid var(--border);padding:14px 8px 0;display:flex;align-items:center;gap:10px;font-size:15px}
.av{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:hsl(235 60% 94%);color:var(--primary);font-weight:600;font-size:13px;flex:none}
.m-main{min-width:0}
.m-top{display:none}
.page{max-width:1080px;margin:0 auto;padding:48px 48px 80px}
.h1{font-family:var(--display);font-weight:600;font-size:40px;line-height:1.12;letter-spacing:-.02em}
.lede{font-family:var(--prose);font-size:19px;line-height:1.55;color:hsl(220 9% 32%);margin-top:10px;max-width:640px}
.h2{font-family:var(--display);font-weight:600;font-size:24px;letter-spacing:-.01em;line-height:1.25}
.sub{color:var(--mfg);font-size:15px;line-height:1.5}
.panel{background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-card)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 20px;border-radius:12px;font-weight:500;font-size:15.5px;white-space:nowrap;transition:background .2s var(--ease)}
.btn.pri{background:var(--primary);color:#fff;box-shadow:0 1px 2px rgb(40 40 140 / .25)}
.btn.pri:hover{background:hsl(235 72% 52%)}
.btn.sec{background:#fff;border:1px solid var(--border);box-shadow:var(--shadow-card)}
.btn.sec:hover{background:var(--muted)}
.btn.ghost{color:var(--primary);padding:0 6px;height:auto}
.btn.sm{height:36px;padding:0 14px;font-size:14.5px;border-radius:10px}
.pill{font-family:var(--ui);display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500;padding:3px 10px;border-radius:999px;background:var(--muted);color:hsl(220 9% 32%);white-space:nowrap}
.pill.g{background:var(--green-soft);color:var(--green)}
.pill.a{background:var(--amber-soft);color:var(--amber)}
.pill.p{background:var(--primary-soft);color:var(--primary)}
.pill.r{background:hsl(0 70% 96%);color:var(--red)}
.dot{width:7px;height:7px;border-radius:50%;background:currentColor}

/* connect */
.checklist{margin-top:36px;max-width:720px}
.step{display:flex;gap:18px;padding:22px 0;border-bottom:1px solid var(--border)}
.step:last-child{border-bottom:0}
.tick{width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center;border:1.5px solid hsl(220 13% 82%);margin-top:1px}
.step.done .tick{background:var(--green);border-color:var(--green);color:#fff}
.step.now .tick{border-color:var(--primary);box-shadow:0 0 0 5px var(--primary-tint)}
.step.now .tick::after{content:"";width:9px;height:9px;border-radius:50%;background:var(--primary);animation:pulse 1.8s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35}}
.step h3{font-size:18px;font-weight:600;line-height:1.35}
.step.done h3{color:hsl(220 9% 38%);font-weight:500}
.step p{font-size:15.5px;color:var(--mfg);line-height:1.55;margin-top:4px}
.step .when{margin-left:auto;font-size:14px;color:var(--green);white-space:nowrap;padding-left:12px;padding-top:3px}
.step-body{flex:1;min-width:0}
.now-box{margin-top:18px;display:flex;flex-direction:column;gap:14px}
.or{font-size:14.5px;color:var(--mfg)}
.copyline{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--border);border-radius:12px;padding:8px 8px 8px 16px;box-shadow:var(--shadow-card)}
.copyline code{font-family:var(--ui);font-size:15px;flex:1;min-width:0;overflow-wrap:anywhere;color:var(--fg)}
.wait{display:flex;align-items:center;gap:10px;font-size:14.5px;color:var(--primary)}
.wait .dot{animation:pulse 1.4s infinite}

/* home */
.home-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:48px;margin-top:36px}
.pickup{padding:24px 26px;background:linear-gradient(180deg,#fff, hsl(240 60% 99%));}
.pickup .say{font-family:var(--prose);font-size:21px;line-height:1.45;margin:10px 0 18px}
.pickup .row{display:flex;gap:10px;flex-wrap:wrap}
.sec-h{display:flex;align-items:baseline;justify-content:space-between;margin:44px 0 6px;gap:12px}
.book{display:flex;gap:20px;padding:22px 0;border-bottom:1px solid var(--border);align-items:center}
.book:last-child{border-bottom:0}
.thumb{width:62px;height:92px;border-radius:3px 6px 6px 3px;flex:none;position:relative;overflow:hidden;box-shadow:0 6px 14px -6px rgb(0 0 0 / .35),0 1px 2px rgb(0 0 0 / .2);display:flex;flex-direction:column;justify-content:space-between;padding:8px 6px;color:#fff}
.thumb::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(90deg,rgb(0 0 0 / .22),transparent)}
.thumb .t{font-family:var(--display);font-size:10px;line-height:1.1;font-weight:600}
.thumb .a{font-size:6px;letter-spacing:.08em;text-transform:uppercase;opacity:.8}
.book-info{flex:1;min-width:0}
.book-info h3{font-family:var(--display);font-size:21px;font-weight:600;letter-spacing:-.01em}
.book-info .where{font-size:15px;color:var(--mfg);margin-top:3px}
.track{display:flex;gap:4px;margin-top:12px;max-width:440px}
.track span{flex:1;height:5px;border-radius:3px;background:hsl(220 14% 91%)}
.track span.f{background:var(--primary)}
.track span.h{background:linear-gradient(90deg,var(--primary) 50%,hsl(220 14% 91%) 50%)}
.track-l{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;max-width:440px;font-size:12.5px;color:hsl(220 9% 52%);margin-top:6px}
.activity li{list-style:none;display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);font-size:15px;line-height:1.45}
.activity li:last-child{border:0}
.activity .t{color:var(--mfg);font-size:13.5px;margin-top:2px}
.activity .bul{width:8px;height:8px;border-radius:50%;background:hsl(235 60% 80%);margin-top:7px;flex:none}
.asks{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.ask{display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:#fff;font-family:var(--prose);font-size:16px;line-height:1.35}
.ask:hover{border-color:hsl(235 60% 80%)}
.ask span.c{font-family:var(--ui);font-size:13px;color:var(--primary);white-space:nowrap}

/* plan */
.owned{margin-top:32px}
.owned .row{display:flex;gap:24px;padding:26px 28px;align-items:flex-start}
.owned .row+.row{border-top:1px solid var(--border)}
.owned h3{font-family:var(--display);font-size:22px;font-weight:600}
.owned p{font-size:15.5px;color:var(--mfg);line-height:1.55;margin-top:6px;max-width:560px}
.owned .meta{margin-left:auto;text-align:right;flex:none}
.owned .meta .big{font-size:15.5px;font-weight:500;margin-top:8px}
.owned .meta .s{font-size:14px;color:var(--mfg);margin-top:2px}
.teaser{margin-top:40px;border-radius:20px;padding:40px 44px;background:radial-gradient(120% 140% at 100% 0%,hsl(244 70% 96%) 0%,hsl(36 60% 97%) 55%,#fff 100%);border:1px solid hsl(240 40% 92%);display:grid;grid-template-columns:1fr auto;gap:40px;align-items:center}
.teaser h2{font-family:var(--display);font-size:30px;line-height:1.15;font-weight:600;letter-spacing:-.015em}
.teaser p{font-family:var(--prose);font-size:18px;line-height:1.6;color:hsl(220 12% 28%);margin-top:12px;max-width:560px}
.teaser .price{font-size:15px;color:var(--mfg);margin-top:16px}
.stack{position:relative;width:200px;height:190px}
.stack .thumb{position:absolute;width:104px;height:154px;padding:12px 10px}
.stack .thumb .t{font-size:15px}.stack .thumb .a{font-size:8px}

/* settings */
.set{margin-top:32px;display:flex;flex-direction:column;gap:20px;max-width:760px}
.set .panel{padding:28px}
.set h2{font-family:var(--display);font-size:22px;font-weight:600;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.set .p{font-size:15.5px;color:var(--mfg);line-height:1.6;margin-top:8px}
.field{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.input{flex:1;min-width:200px;height:46px;border:1px solid var(--border);border-radius:12px;padding:0 14px;background:#fff;font-family:var(--mono);font-size:15px;box-shadow:inset 0 1px 1px rgb(0 0 0 / .03)}
.how{margin-top:18px;padding-top:16px;border-top:1px solid var(--border);font-size:15px;line-height:1.6;color:hsl(220 9% 32%)}
.how b{font-weight:600;color:var(--fg)}
.kv{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid var(--border);font-size:15.5px}
.kv:last-child{border-bottom:0}
.kv .k{color:var(--mfg)}
.toggle{width:46px;height:28px;border-radius:999px;background:hsl(220 13% 85%);position:relative;flex:none;transition:background .25s var(--ease)}
.toggle::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgb(0 0 0 / .2);transition:transform .25s var(--ease)}
.toggle.on{background:var(--primary)}
.toggle.on::after{transform:translateX(18px)}
.device{display:flex;align-items:center;gap:16px;margin-top:18px;padding-top:18px;border-top:1px solid var(--border)}
.device .n{font-weight:500}
.device .s{font-size:14px;color:var(--mfg);margin-top:2px}

/* help */
.search{margin-top:28px;display:flex;align-items:center;gap:12px;height:60px;padding:0 20px;background:#fff;border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-float);max-width:760px}
.search input{border:0;outline:0;flex:1;font-family:var(--prose);font-size:18px;background:none;min-width:0}
.hint{font-size:15px;color:var(--mfg);margin-top:14px;line-height:1.55;max-width:760px}
.results{margin-top:8px;max-width:760px}
.res{display:flex;gap:16px;padding:16px 0;border-bottom:1px solid var(--border);align-items:center}
.res .k{font-size:13px;color:var(--mfg);width:64px;flex:none}
.res .tt{font-size:16.5px;font-weight:500}
.res .d{font-size:14.5px;color:var(--mfg);margin-top:3px}
.vids{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:16px}
.vid .frame{aspect-ratio:16/9;border-radius:12px;position:relative;overflow:hidden;display:flex;align-items:flex-end;padding:14px}
.vid .frame .ttl{font-family:var(--display);color:#fff;font-size:19px;line-height:1.15;font-weight:600;max-width:75%;text-shadow:0 1px 8px rgb(0 0 0 / .2)}
.play{position:absolute;right:14px;bottom:14px;width:40px;height:40px;border-radius:50%;background:rgb(255 255 255 / .94);display:grid;place-items:center;box-shadow:0 4px 14px rgb(0 0 0 / .18)}
.play::after{content:"";border-left:11px solid var(--fg);border-top:7px solid transparent;border-bottom:7px solid transparent;margin-left:3px}
.vid .cap{font-size:15px;font-weight:500;margin-top:10px}
.vid .len{font-size:13.5px;color:var(--mfg);margin-top:2px}
.tickets .tk{display:flex;gap:16px;align-items:center;padding:18px 0;border-bottom:1px solid var(--border)}
.tickets .tk:last-child{border:0}
.tk .tt{font-size:16px;font-weight:500}
.tk .d{font-size:14px;color:var(--mfg);margin-top:3px}

/* member mobile */
@media (max-width:860px){
  .m-shell{grid-template-columns:1fr;background:var(--bg)}
  .m-side{display:none}
  .m-top{display:block;position:sticky;top:0;z-index:20;background:rgb(247 248 250 / .94);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
  .m-top .bar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 4px}
  .m-top .brand{padding:0}
  .m-tabs{display:flex;gap:2px;overflow-x:auto;padding:6px 10px 10px;scrollbar-width:none}
  .m-tabs::-webkit-scrollbar{display:none}
  .m-tabs a{flex:1;padding:8px 6px;border-radius:999px;font-size:15px;color:hsl(220 9% 32%);white-space:nowrap}
  .m-tabs a.on{background:#fff;color:var(--fg);font-weight:500;box-shadow:var(--shadow-card);border:1px solid var(--border)}
  .page{padding:28px 16px 64px}
  .h1{font-size:31px}
  .lede{font-size:17.5px}
  .home-grid{grid-template-columns:1fr;gap:8px;margin-top:24px}
  .pickup{padding:20px}
  .pickup .say{font-size:19px}
  .book{gap:16px;align-items:flex-start}
  .thumb{width:54px;height:80px}
  .book-info h3{font-size:19px}
  .owned .row{flex-direction:column;gap:6px;padding:22px 20px}
  .owned .meta{margin-left:0;text-align:left}
  .teaser{grid-template-columns:1fr;padding:28px 22px;gap:20px}
  .teaser .stack{display:none}
  .teaser h2{font-size:25px}
  .teaser p{font-size:17px}
  .set .panel{padding:22px 20px}
  .vids{grid-template-columns:1fr;gap:20px}
  .step .when{display:none}
  .search{height:56px}
  .search input{font-size:16.5px}
  .res .k{display:none}
  .kv{flex-wrap:wrap}
  .field .input{flex-basis:100%}
  .field .btn{flex:1}
  .device{flex-wrap:wrap}
  .device .btn{width:100%}
  .device>div{flex:1}
}

/* ---------- admin ---------- */
.ad{display:grid;grid-template-columns:232px 1fr;min-height:100vh;background:linear-gradient(90deg,var(--bg) 0 232px,#fff 232px)}
.ad-side{padding:18px 12px;background:var(--bg);border-right:1px solid var(--border);position:sticky;top:0;height:100vh}
.ad-side .brand{padding-bottom:6px}
.ad-side .team{font-size:13.5px;color:var(--mfg);padding:0 8px 18px 41px}
.ad-main{min-width:0;padding:28px 32px 60px}
.ad-h{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.ad-h h1{font-family:var(--display);font-size:28px;font-weight:600;letter-spacing:-.015em}
.ad-search{display:flex;align-items:center;gap:8px;height:38px;border:1px solid var(--border);border-radius:10px;padding:0 12px;width:300px;color:var(--mfg);font-size:14px;background:#fff}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font-weight:500;color:var(--mfg);font-size:13px;padding:9px 12px;border-bottom:1px solid var(--border);white-space:nowrap;background:#fff}
.tbl td{padding:11px 12px;border-bottom:1px solid hsl(220 13% 94%);vertical-align:top;line-height:1.45}
.tbl tr.sel td{background:var(--primary-tint)}
.tbl tr.click{cursor:pointer}
.tbl tr.click:hover td{background:hsl(220 20% 97.5%)}
.tbl .sm{color:var(--mfg);font-size:13px}
.mono{font-family:var(--mono);font-size:12.5px}
.src{display:inline-block;font-size:12px;font-weight:500;padding:2px 8px;border-radius:6px;border:1px solid var(--border);background:#fff}
.src.stripe{color:hsl(245 60% 50%);border-color:hsl(245 60% 88%);background:hsl(245 70% 98%)}
.src.whop{color:hsl(15 75% 45%);border-color:hsl(15 70% 88%);background:hsl(15 80% 98%)}
.src.split{color:hsl(170 60% 28%);border-color:hsl(170 40% 85%);background:hsl(170 50% 97%)}
.src.manual{color:hsl(220 9% 35%);background:var(--muted)}
.md{display:grid;grid-template-columns:380px minmax(0,1fr);gap:0;border:1px solid var(--border);border-radius:14px;overflow:hidden;min-height:760px}
.md-list{border-right:1px solid var(--border);background:var(--bg)}
.md-list .tbl th{background:var(--bg)}
.md-list .tbl td{background:transparent}
.md-detail{padding:26px 30px;min-width:0}
.mem-h{display:flex;align-items:flex-start;gap:16px;padding-bottom:20px;border-bottom:1px solid var(--border)}
.mem-h .av{width:46px;height:46px;font-size:16px}
.mem-h h2{font-family:var(--display);font-size:24px;font-weight:600}
.mem-h .s{font-size:14px;color:var(--mfg);margin-top:2px}
.mem-h .acts{margin-left:auto;display:flex;gap:8px}
.blk{padding:20px 0;border-bottom:1px solid var(--border)}
.blk:last-child{border:0}
.blk-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:12px}
.blk-h h3{font-size:15.5px;font-weight:600}
.two{display:grid;grid-template-columns:1fr 1fr;gap:32px}
.stepper{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:9px;overflow:hidden}
.stepper button{width:32px;height:32px;color:var(--mfg);font-size:17px}
.stepper span{min-width:36px;text-align:center;font-weight:600;font-size:15px;border-left:1px solid var(--border);border-right:1px solid var(--border);line-height:32px}
.lbl-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;font-size:14px;gap:12px}
.lbl-row .k{color:var(--mfg)}
.matrix td.c,.matrix th.c{text-align:center}
.yes{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--green-soft);color:var(--green)}
.no{color:hsl(220 13% 80%)}
.editor{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:32px}
.fl{margin-bottom:18px}
.fl label{display:block;font-size:13.5px;font-weight:500;margin-bottom:6px}
.fl .help{font-size:13px;color:var(--mfg);margin-top:5px}
.fi{width:100%;border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:14.5px;background:#fff}
textarea.fi{font-size:14.5px;line-height:1.65;min-height:360px;resize:vertical}
.ver li{list-style:none;padding:10px 0;border-bottom:1px solid hsl(220 13% 94%);font-size:13.5px}
.ver .sm{color:var(--mfg);font-size:12.5px}
.status-box .lbl-row{display:grid;grid-template-columns:130px 1fr;justify-content:start}
.status-box{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:14px 16px;font-size:14px}
.convo{font-size:14.5px;line-height:1.6}
.convo .who{font-size:12.5px;color:var(--mfg);margin-bottom:3px}
.convo .m{padding:12px 0;border-bottom:1px solid hsl(220 13% 94%)}
.reply{margin-top:14px;border:1px solid var(--border);border-radius:12px;padding:12px 14px;min-height:96px;color:var(--mfg);font-size:14.5px}

/* ================= v2: Chapter brand for the member site ================= */
.brand img.lockup{width:auto;height:26px}
.mv{--bg:#F6EEDC;--fg:#1E1A16;--card:#FFFBF1;--mfg:#6B5F52;--border:rgb(30 26 22 / .12);--muted:rgb(30 26 22 / .05);
  --primary:#5B3FE0;--primary-soft:#EEE8FB;--primary-tint:rgb(91 63 224 / .09);
  --green:#2F6B47;--green-soft:#E3EEDD;--amber:#94590F;--amber-soft:#F6E6C4;
  --display:"EB Garamond",Garamond,Georgia,serif;--prose:"Literata",Georgia,serif;--ui:"Literata",Georgia,serif;
  --grad:linear-gradient(90deg,#4A2FC4,#6D47F0 45%,#5531D8);
  --shadow-card:0 1px 0 rgb(255 255 255 / .7) inset,0 14px 34px -22px rgb(70 45 10 / .35);
  --noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .32 0 0 0 0 .25 0 0 0 0 .15 0 0 0 .08 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background:var(--bg) var(--noise);color:var(--fg);font-family:var(--prose)}
.mv .m-shell{background:linear-gradient(90deg,transparent 0 255px,var(--border) 255px 256px,transparent 256px)}
.mv .m-side{background:transparent}
.mv .m-nav a{font-size:16.5px;color:#4A4036;padding:11px 12px}
.mv .m-nav a:hover{background:rgb(30 26 22 / .04)}
.mv .m-nav a.on{background:var(--card);box-shadow:0 1px 2px rgb(60 40 10 / .08),0 0 0 1px var(--border);color:var(--fg);font-weight:500}
.mv .m-user{font-size:16px}
.mv .av{background:#E7DDF9;color:#4A2FC4;font-family:var(--prose)}
.mv .h1{font-family:var(--display);font-weight:500;font-size:52px;letter-spacing:-.015em;line-height:1.05}
.mv .lede{font-family:var(--prose);font-size:19px;color:#4A4036;line-height:1.6}
.mv .h2{font-family:var(--display);font-weight:500;font-size:30px;letter-spacing:-.01em}
.mv .sub{color:var(--mfg);font-size:16px}
.mv .panel{background:var(--card);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow-card)}
.mv .btn{border-radius:999px;font-family:var(--prose);font-size:16px;height:46px;padding:0 22px}
.mv .btn.sm{height:38px;padding:0 16px;font-size:15px}
.mv .btn.pri{background:var(--grad);color:#fff;box-shadow:0 8px 18px -10px rgb(74 47 196 / .8)}
.mv .btn.pri:hover{filter:brightness(1.06)}
.mv .btn.sec{background:transparent;border:1px solid rgb(30 26 22 / .28);box-shadow:none}
.mv .btn.sec:hover{background:rgb(30 26 22 / .04)}
.mv .btn.dark{background:#1E1A16;color:#FFFBF1}
.mv .btn.ghost{color:var(--primary);padding:0;height:auto}
.mv .pill{font-size:13.5px}
.mv .book-info h3{font-family:var(--display);font-weight:500;font-size:26px}
.mv .book-info .where{font-size:16px}
.mv .track span{background:rgb(30 26 22 / .1)}
.mv .track span.f{background:var(--primary)}
.mv .track span.h{background:linear-gradient(90deg,var(--primary) 50%,rgb(30 26 22 / .1) 50%)}
.mv .track-l{color:#8A7E70;font-size:13px}
.mv .pickup{background:var(--card)}
.mv .pickup .say{font-style:italic;font-size:22px}
.mv .ask{background:var(--card);border-color:var(--border);font-size:16.5px}
.mv .ask span.c{font-family:var(--prose)}
.mv .activity li{font-size:15.5px}
.mv .activity .bul{background:#B9A6F0}
.mv .input{background:#fff;border-color:rgb(30 26 22 / .18)}
.mv .search{background:#fff;border-color:var(--border);border-radius:999px;padding:0 24px}
.mv .toggle.on{background:var(--primary)}
.mv .teaser{background:radial-gradient(120% 140% at 100% 0%,#E9E1FB 0%,#F8F0E0 60%,var(--card) 100%);border:1px solid rgb(91 63 224 / .18)}
.mv .teaser h2{font-family:var(--display);font-weight:500;font-size:36px}
.mv .teaser .ill{width:230px;height:auto;display:block}
.mv .owned h3{font-family:var(--display);font-weight:500;font-size:27px}
.mv .set h2{font-family:var(--display);font-weight:500;font-size:27px}
.home-head{display:flex;align-items:flex-end;justify-content:space-between;gap:32px}
.home-head img{width:170px;height:auto;margin:-24px 0 -8px}
/* continue watching on home */
.cw{display:flex;gap:14px;align-items:center;padding:14px;border-radius:16px;background:var(--card);border:1px solid var(--border);margin-top:12px;color:var(--fg)}
.cw .th{width:112px;flex:none}
.cw .tt{font-size:16px;line-height:1.35}
.cw .d{font-size:14px;color:var(--mfg);margin-top:4px}
.prog{height:4px;border-radius:2px;background:rgb(30 26 22 / .1);margin-top:8px;overflow:hidden}
.prog i{display:block;height:100%;background:var(--primary);border-radius:2px}
/* thumbnails */
.th{aspect-ratio:16/9;border-radius:12px;position:relative;overflow:hidden;display:block}
.th img{position:absolute;right:6%;bottom:-6%;height:96%;width:auto}
.th .play{width:34px;height:34px;left:10px;bottom:10px;right:auto}
.th .play::after{border-left-width:9px;border-top-width:6px;border-bottom-width:6px}
.th .len{position:absolute;left:10px;top:10px;font-size:12px;color:#fff;background:rgb(20 14 10 / .55);padding:2px 7px;border-radius:999px;font-family:var(--prose)}
.t-violet{background:linear-gradient(150deg,#3A2A94,#5B3FE0)}
.t-navy{background:linear-gradient(150deg,#17224A,#2D3D7A)}
.t-forest{background:linear-gradient(150deg,#20402F,#3C6A50)}
.t-clay{background:linear-gradient(150deg,#8E3F22,#C26A3D)}
.t-cream{background:linear-gradient(150deg,#E7D8BA,#F3E8D2)}
.t-plum{background:linear-gradient(150deg,#4C2246,#7A3A6E)}
/* videos library */
.feat{display:grid;grid-template-columns:1.25fr 1fr;gap:0;overflow:hidden;margin-top:32px}
.feat .poster{min-height:340px;border-radius:0;aspect-ratio:auto}
.feat .poster img{height:92%;right:8%;bottom:-4%}
.feat .poster .play{width:64px;height:64px;left:28px;bottom:28px}
.feat .poster .play::after{border-left-width:16px;border-top-width:10px;border-bottom-width:10px;margin-left:5px}
.feat .copy{padding:36px 36px 32px;display:flex;flex-direction:column;justify-content:center}
.feat h2{font-family:var(--display);font-weight:500;font-size:34px;line-height:1.1}
.feat p{font-size:17px;line-height:1.6;color:#4A4036;margin-top:12px}
.feat .meta{font-size:15px;color:var(--mfg);margin-top:16px}
.feat .acts{display:flex;gap:12px;margin-top:22px;flex-wrap:wrap;align-items:center}
.vrow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin-top:16px}
.vrow.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.vt{color:var(--fg);display:block}
.vt .tt{font-size:16.5px;line-height:1.35;margin-top:12px}
.vt .d{font-size:14px;color:var(--mfg);margin-top:4px;display:flex;align-items:center;gap:6px}
.vt .d .ok{color:var(--green)}
.topic{margin-top:52px}
.topic-h{display:flex;align-items:baseline;justify-content:space-between;gap:16px;border-bottom:1px solid var(--border);padding-bottom:10px}
.topic-h .n{font-size:15px;color:var(--mfg)}
.vteaser{margin-top:56px;display:grid;grid-template-columns:auto 1fr;gap:36px;align-items:center;padding:30px 40px;border-radius:22px;background:radial-gradient(120% 140% at 100% 0%,#E9E1FB 0%,#F8F0E0 60%,var(--card) 100%);border:1px solid rgb(91 63 224 / .18)}
.vteaser img{width:150px}
.vteaser h2{font-family:var(--display);font-weight:500;font-size:30px;line-height:1.15}
.vteaser p{font-size:17px;line-height:1.6;color:#4A4036;margin-top:8px;max-width:620px}
/* player */
.player-wrap{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:44px;margin-top:20px}
.player{aspect-ratio:16/9;border-radius:18px;position:relative;overflow:hidden;box-shadow:0 30px 60px -30px rgb(40 20 80 / .55)}
.player img{position:absolute;right:4%;bottom:-3%;height:90%}
.player .play{width:76px;height:76px;left:50%;top:50%;right:auto;bottom:auto;transform:translate(-50%,-50%)}
.player .play::after{border-left-width:20px;border-top-width:12px;border-bottom-width:12px;margin-left:6px}
.player .bar{position:absolute;left:0;right:0;bottom:0;padding:18px 22px;background:linear-gradient(0deg,rgb(10 6 30 / .65),transparent);color:#fff;font-size:14px;display:flex;align-items:center;gap:14px;font-family:var(--prose)}
.player .bar .line{flex:1;height:4px;border-radius:2px;background:rgb(255 255 255 / .3);position:relative}
.player .bar .line i{position:absolute;left:0;top:0;bottom:0;width:38%;background:#fff;border-radius:2px}
.vid-title{font-family:var(--display);font-weight:500;font-size:40px;line-height:1.1;margin-top:28px}
.vid-meta{font-size:15px;color:var(--mfg);margin-top:8px}
.vid-desc{font-size:17.5px;line-height:1.65;color:#3A3129;margin-top:16px;max-width:720px}
.chap{margin-top:30px}
.chap h3,.next h3{font-family:var(--display);font-weight:500;font-size:24px;margin-bottom:6px}
.chap button{display:flex;gap:18px;width:100%;text-align:left;padding:13px 0;border-bottom:1px solid var(--border);font-size:16.5px;font-family:var(--prose)}
.chap button .ts{font-variant-numeric:tabular-nums;color:var(--primary);width:46px;flex:none}
.chap button.now{font-weight:600}
.next .vt{display:grid;grid-template-columns:128px 1fr;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}
.next .vt .tt{margin-top:0;font-size:15.5px}
.back{font-size:15.5px;color:var(--primary);display:inline-flex;gap:6px;align-items:center}

/* ================= v2: not-connected onboarding ================= */
.ob{min-height:100vh}
.ob-top{display:flex;align-items:center;justify-content:space-between;padding:22px 40px;max-width:1200px;margin:0 auto}
.ob-top .who{display:flex;align-items:center;gap:12px;font-size:16px}
.ob-top .so{color:var(--mfg);font-size:15px;margin-left:10px}
.ob-main{max-width:760px;margin:0 auto;padding:28px 24px 90px}
.ob-main .h1{font-size:54px;text-align:center}
.ob-main .lede{text-align:center;margin:14px auto 0}
.ob-video{margin-top:36px;aspect-ratio:16/9;border-radius:22px;position:relative;overflow:hidden;background:radial-gradient(90% 120% at 30% 20%,#5B3FE0 0%,#3A2A94 55%,#231A63 100%);box-shadow:0 34px 70px -34px rgb(40 20 100 / .6)}
.ob-video img{position:absolute;right:7%;bottom:-2%;height:88%}
.ob-video .cap{position:absolute;left:44px;top:44px;color:#FFFBF1;max-width:52%}
.ob-video .cap .k{font-size:16px;opacity:.8}
.ob-video .cap .t{font-family:var(--display);font-size:42px;line-height:1.05;margin-top:8px}
.ob-video .play{left:44px;bottom:44px;right:auto;width:72px;height:72px;background:#FFFBF1}
.ob-video .play::after{border-left:19px solid #3A2A94;border-top:12px solid transparent;border-bottom:12px solid transparent;margin-left:6px}
.ob-video .len{position:absolute;left:132px;bottom:66px;color:#FFFBF1;font-size:16px}
.ob-list{margin-top:44px}
.ob .step{padding:28px 0;border-bottom:1px solid var(--border)}
.ob .step h3{font-family:var(--display);font-weight:500;font-size:28px;line-height:1.2}
.ob .step.done h3{color:#5A5046;font-weight:500}
.ob .step p{font-size:17px;line-height:1.6;color:#4A4036;margin-top:6px}
.ob .tick{width:34px;height:34px;border-color:rgb(30 26 22 / .25);background:var(--card);margin-top:2px}
.ob .step.done .tick{background:var(--green);border-color:var(--green)}
.ob .step.now .tick{border-color:var(--primary);box-shadow:0 0 0 6px rgb(91 63 224 / .12)}
.ob .when{font-size:15px;color:var(--green);padding-top:8px}
.ob .acts{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}
.ob .copyline{background:#fff;border-radius:16px;padding:10px 10px 10px 18px;border-color:rgb(30 26 22 / .14);margin-top:16px}
.ob .copyline code{font-family:var(--prose);font-size:17px}
.ob .then{margin-top:16px;padding:16px 18px;border-radius:14px;background:rgb(91 63 224 / .06);font-size:16.5px;line-height:1.6;color:#3A3129}
.ob .wait{margin-top:14px;font-size:16px}
.ob .step.done .wait,.ob .step.done .then{display:none}
.ob-help{text-align:center;margin-top:40px;font-size:16px;color:var(--mfg)}
.ob-done{display:none;text-align:center;padding:10px 0 6px}
.ob-done img{width:300px;max-width:80%;height:auto}
.ob-done .h1{margin-top:6px}
.ob-done .btn{margin-top:22px}
.ob.all .ob-done{display:block}
.ob.all .ob-intro,.ob.all .ob-video{display:none}
.ob.all .ob-list{margin-top:36px}
.ob .step:not(.done) .when,.ob .step:not(.done) .tick svg{display:none}
.mv a.btn.sec,.mv a.btn.dark{color:inherit}.mv a.btn.dark{color:#FFFBF1}
.ob.all .step-body>*:not(h3),.ob.all .ob-help{display:none}
.ob.all .step{padding:16px 0;align-items:center}.ob.all .step h3{font-size:22px}.ob.all .tick{margin-top:0}.ob.all .when{padding-top:0}
.admin{--primary:#5B3FE0;--primary-tint:rgb(91 63 224 / .08);--primary-soft:#EEE8FB}
.admin .ad-side .team{padding-left:10px}

@media (max-width:860px){
  .mv .m-shell{background:none}
  .mv .m-top{background:rgb(246 238 220 / .92)}
  .mv .m-tabs a.on{background:var(--card)}
  .mv .h1{font-size:36px}
  .mv .lede{font-size:17.5px}
  .home-head img{display:none}
  .mv .pickup .say{font-size:19.5px}
  .mv .teaser h2{font-size:28px}
  .feat{grid-template-columns:1fr}
  .feat .poster{min-height:0;aspect-ratio:16/9}
  .feat .poster .play{width:52px;height:52px;left:16px;bottom:16px}
  .feat .copy{padding:22px 20px 24px}
  .feat h2{font-size:27px}
  .vrow,.vrow.three{grid-template-columns:1fr;gap:0}
  .vrow .vt{display:grid;grid-template-columns:136px 1fr;gap:14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}
  .vrow .vt .tt{margin-top:0;font-size:16px}
  .topic{margin-top:40px}
  .vteaser{grid-template-columns:1fr;padding:24px 22px;gap:14px}
  .vteaser img{width:110px}
  .vteaser h2{font-size:25px}
  .player-wrap{grid-template-columns:1fr;gap:12px}
  .player{border-radius:14px}
  .player .play{width:58px;height:58px}
  .vid-title{font-size:30px;margin-top:20px}
  .ob-top{padding:16px}
  .ob-top .nm,.ob-top .so{display:none}
  .ob-main{padding:12px 16px 70px}
  .ob-main .h1{font-size:35px}
  .ob-video{border-radius:16px;margin-top:26px}
  .ob-video .cap{left:20px;top:20px;max-width:58%}
  .ob-video .cap .k{font-size:13.5px}
  .ob-video .cap .t{font-size:23px}
  .ob-video .play{left:20px;bottom:20px;width:52px;height:52px}
  .ob-video .play::after{border-left-width:14px;border-top-width:9px;border-bottom-width:9px;margin-left:4px}
  .ob-video .len{left:84px;bottom:36px;font-size:14px}
  .ob .step{gap:14px}
  .ob .step h3{font-size:24px}
  .ob .step p{font-size:16.5px}
  .ob .when{display:none}
  .ob .acts .btn{flex:1}
  .ob .copyline{flex-wrap:wrap}
  .ob .copyline code{flex-basis:100%;padding:4px 0 2px}
  .ob .copyline .btn{width:100%}
}

/* ================= v3 ================= */
.opts{margin-top:18px;border-top:1px solid var(--border)}
.opts+.opts{margin-top:26px}
.opt{display:flex;gap:14px;padding:16px 0;border-bottom:1px solid var(--border);cursor:pointer;align-items:flex-start}
.opt .radio{width:22px;height:22px;border-radius:50%;border:1.5px solid rgb(30 26 22 / .3);flex:none;margin-top:2px;display:grid;place-items:center;background:#fff}
.opt.on .radio{border-color:var(--primary)}
.opt.on .radio::after{content:"";width:11px;height:11px;border-radius:50%;background:var(--primary)}
.opt .ot{font-size:16.5px;line-height:1.45}
.opt .ot b{font-weight:600}
.opt .ot .pill{margin-left:6px;vertical-align:1px}
.opt .od{display:block;font-size:15.5px;color:var(--mfg);margin-top:3px;line-height:1.55}
.voice-row{display:flex;align-items:center;gap:16px;margin-top:20px;padding-top:18px;border-top:1px solid var(--border);flex-wrap:wrap}
.voice-row .k{font-size:14.5px;color:var(--mfg)}
.vsel{display:inline-flex;align-items:center;gap:10px;font-size:17px;margin-top:4px;padding:6px 14px;border:1px solid rgb(30 26 22 / .18);border-radius:999px;background:#fff}
.tri{width:0;height:0;border-left:9px solid currentColor;border-top:6px solid transparent;border-bottom:6px solid transparent}
.pf{margin-top:22px}
.pf>label{display:block;font-size:15px;font-weight:600;margin-bottom:8px}
.mv .input.tx{font-family:var(--prose);font-size:16.5px;width:100%;height:auto;min-height:46px;padding:11px 14px;line-height:1.5;resize:vertical}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{height:38px;padding:0 16px;border-radius:999px;border:1px solid rgb(30 26 22 / .2);background:#fff;font-family:var(--prose);font-size:15.5px;color:#3A3129}
.chip.on{background:#EEE8FB;border-color:rgb(91 63 224 / .55);color:#3A2A94;font-weight:500}
.chip.add{border-style:dashed;color:var(--mfg);background:transparent}
.rules{list-style:none}
.rules li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border);font-size:16.5px}
.rules li button{color:var(--mfg);font-size:20px;line-height:1;padding:0 4px}
.addrule{margin-top:10px;font-size:15.5px}
.file,.photo{display:flex;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);font-size:16px}
.file .s,.photo .s,.mem .s{display:block;font-size:14px;color:var(--mfg);margin-top:2px}
.swatches{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.swatches span{width:44px;height:44px;border-radius:50%;box-shadow:inset 0 0 0 1px rgb(0 0 0 / .1),0 2px 6px -2px rgb(0 0 0 / .25)}
.sw-add{width:44px;height:44px;border-radius:50%;border:1.5px dashed rgb(30 26 22 / .3);color:var(--mfg);font-size:20px}
.fonts{display:flex;gap:28px;flex-wrap:wrap;font-size:15.5px;color:#4A4036}
.fonts>div{display:flex;align-items:center;gap:10px}
.fonts .fs{color:var(--fg);width:40px}
.photo .ph{width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,#D6B26A,#A4502E);color:#fff;display:grid;place-items:center;font-size:18px;flex:none}
.mem{list-style:none;margin-top:10px}
.mem li{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid var(--border);font-size:16.5px}
.mem li:last-child{border:0}
.saved{color:var(--cfg);display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--cline);border-radius:12px;background:#fff;font-size:14.5px;max-width:460px}
.saved img{width:18px}
.saved .s{color:var(--cmute);font-size:13px}
@media (max-width:860px){
  .mv .m-tabs a{flex:none;padding:8px 13px}
  .voice-row .btn{width:100%}
  .fonts{gap:12px;flex-direction:column}
  .mv .input.tx.bio{min-height:150px}
}

/* ================= live site additions ================= */
html:has(body.mv){background:#F6EEDC}
html:has(body.admin){background:#fff}
body.mv{min-height:100vh}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
a.btn{text-decoration:none}
.mv a.btn.pri{color:#fff}
.btn:disabled{opacity:.5;cursor:not-allowed}
:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.input:focus,.fi:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-tint)}
.m-nav a{text-decoration:none}
.m-user .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.team-link{font-size:14px;color:var(--primary)}
.m-top .bar .av{text-decoration:none}

/* flash messages */
.flash{max-width:1080px;margin:20px auto 0;padding:14px 18px;border-radius:14px;font-size:16px;line-height:1.5;display:flex;flex-direction:column;gap:6px;background:var(--green-soft);color:var(--green);border:1px solid rgb(47 107 71 / .18)}
.flash.err{background:hsl(0 70% 96%);color:var(--red);border-color:hsl(0 62% 45% / .2)}
.mv .flash{margin:-16px 0 28px;max-width:760px}
.mv .input::placeholder{font-family:var(--prose);font-size:15px}
.admin .flash{margin:0 0 18px;font-size:14.5px}
.devlink,.devlink-box{font-size:14px;color:var(--fg);overflow-wrap:anywhere}
.devlink a,.devlink-box a{display:block;margin-top:4px}
.devlink-box{margin:24px auto 0;max-width:560px;padding:14px 18px;border-radius:14px;background:#fff;border:1px dashed rgb(30 26 22 / .3);text-align:left}

/* sign in */
.auth-main{max-width:520px;margin:0 auto;padding:4px 24px 80px;text-align:center}
.auth-ill{width:190px;height:auto;display:block;margin:0 auto -6px}
.auth .h1{font-size:46px}
.auth .lede{margin:12px auto 0}
.auth-card{margin-top:28px;padding:28px;text-align:left;display:flex;flex-direction:column;gap:16px}
.fld{display:flex;flex-direction:column;gap:7px}
.fld>span{font-size:15px;font-weight:600}
.btn.wide{width:100%}
.auth-alt{font-size:15px;color:var(--mfg);line-height:1.55;text-align:center}
.form-err{margin:22px auto 0;padding:12px 16px;border-radius:12px;background:hsl(0 70% 96%);color:var(--red);font-size:15.5px;line-height:1.5}
.auth-one{margin-top:26px}

/* connect */
.ob-top .who form.inline{display:inline}
.ob-top .so{background:none;border:0;cursor:pointer}
.ob-video.soon .soon-note{position:absolute;left:44px;bottom:44px;color:#FFFBF1;font-size:16px;padding:9px 16px;border-radius:999px;background:rgb(255 255 255 / .14);border:1px solid rgb(255 255 255 / .22)}
.ob .note{font-size:15.5px;color:var(--amber);margin-top:12px}
.ob .step.done [data-have]{display:none}
.ob .step>p,.ob .step-body>p{max-width:640px}

/* forms in panels */
.chip{display:inline-flex;align-items:center;cursor:pointer;user-select:none}
.chip:has(input:checked){background:#EEE8FB;border-color:rgb(91 63 224 / .55);color:#3A2A94;font-weight:500}
.chip:has(input:focus-visible){outline:2px solid var(--primary);outline-offset:2px}
.chip.add{padding:0 6px 0 14px}
.chip-in{border:0;outline:0;background:none;font-family:var(--prose);font-size:15.5px;width:140px;color:var(--fg)}
.opt{position:relative}
.opt:has(input:focus-visible) .radio{outline:2px solid var(--primary);outline-offset:2px}
.addrule-row{display:flex;gap:10px;align-items:center;margin-top:10px;flex-wrap:wrap}
.mv .input.tx.slim{min-height:40px;padding:7px 12px;font-size:15.5px;flex:1;min-width:200px;width:auto}
.addrule-row .addrule{margin-top:0}
.rules li span{flex:1;min-width:0}
.swatches .sw{width:44px;height:44px;border-radius:50%;box-shadow:inset 0 0 0 1px rgb(0 0 0 / .1),0 2px 6px -2px rgb(0 0 0 / .25);cursor:pointer;position:relative}
.swatches .sw:hover::after{content:"×";position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:20px;text-shadow:0 1px 3px rgb(0 0 0 / .5)}
.sw-add{display:grid;place-items:center;cursor:pointer;position:relative}
.save-bar{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:16px 0 18px;background:linear-gradient(0deg,#F6EEDC 70%,rgb(246 238 220 / 0))}
.inline-row{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.inline-row .btn.ghost{font-size:15px}
.mv select.vsel{appearance:none;-webkit-appearance:none;font-family:var(--prose);color:var(--fg);padding:8px 40px 8px 16px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%236B5F52' stroke-width='1.6'/%3E%3C/svg%3E") no-repeat right 16px center;max-width:100%;cursor:pointer}
.kv form{display:contents}
form.kv{display:flex}
.kv-edit{display:flex;align-items:center;gap:12px;flex:1;justify-content:flex-end;max-width:420px}
.kv-edit .input.tx.slim{text-align:right;border-color:transparent;background:transparent;box-shadow:none}
.kv-edit .input.tx.slim:hover,.kv-edit .input.tx.slim:focus{background:#fff;border-color:rgb(30 26 22 / .18);text-align:left}
details.kv{display:block}
details.kv>summary{display:flex;justify-content:space-between;align-items:center;cursor:pointer;list-style:none}
details.kv>summary::-webkit-details-marker{display:none}
details[open].kv>summary .btn{visibility:hidden}
.pw-form{display:flex;flex-direction:column;gap:14px;margin-top:16px;max-width:420px}
.pw-form .btn{align-self:flex-start}
.toggle{border:0;cursor:pointer}
.empty{font-size:16.5px;color:var(--mfg);padding:18px 0;line-height:1.6}
.ask-form{margin-top:28px;padding:28px;max-width:760px}
.ask-form textarea.input.tx{min-height:140px}
.tickets{max-width:760px}
.cw{text-decoration:none}
.vt,.cw{text-decoration:none}

/* player */
video.player.real{width:100%;display:block;background:#000}
.player .soon-badge{position:absolute;left:28px;bottom:28px;color:#FFFBF1;font-size:16px;padding:9px 16px;border-radius:999px;background:rgb(255 255 255 / .16);border:1px solid rgb(255 255 255 / .24);font-family:var(--prose)}

/* admin additions */
.admin a{text-decoration:none}
.ad-side{display:flex;flex-direction:column}
.ad-foot{margin-top:auto;border-top:1px solid var(--border);padding:14px 8px 0;display:flex;flex-direction:column;gap:4px;font-size:14px}
.ad-foot .sm{color:var(--mfg);font-size:13px;overflow:hidden;text-overflow:ellipsis}
.ad-tabs{display:none}
.ad-h-acts{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ad-search input{border:0;outline:0;background:none;flex:1;min-width:0;font-size:14px;color:var(--fg)}
.ad-search:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-tint)}
a.rowlink{display:block;color:inherit}
.tbl tr.dim td{color:var(--mfg)}
.ad-h2{font-family:var(--display);font-size:24px;font-weight:600}
.add-member{max-width:440px}
details.grant{margin-top:14px}
details.grant>summary{list-style:none;cursor:pointer}
details.grant>summary::-webkit-details-marker{display:none}
details[open].grant>summary{display:none}
.grant-form{margin-top:4px;padding:18px 18px 20px;border:1px solid var(--border);border-radius:12px;background:var(--bg);max-width:520px}
.until{display:flex;flex-direction:column;gap:8px;font-size:14px}
.until .rad{display:flex;align-items:center;gap:8px}
.stepper button:disabled{opacity:.35;cursor:not-allowed}
.status-form{display:flex;gap:8px;flex-wrap:wrap}
.pre{white-space:pre-wrap;overflow-wrap:anywhere}
.mem-h .acts form{display:inline}
.lbl-row form{display:inline}
.admin .btn.sec{background:#fff}
.admin .lbl-row a{color:var(--fg)}

@media (max-width:860px){
  .mv .flash{margin:-8px 0 20px}
  .auth .h1{font-size:34px}
  .auth-main{padding:0 16px 60px}
  .auth-card{padding:22px 18px}
  .auth-ill{width:150px}
  .ob-video.soon .soon-note{left:20px;bottom:20px;font-size:13.5px;padding:7px 12px}
  .player .soon-badge{left:16px;bottom:16px;font-size:14px}
  .ask-form{padding:22px 18px}
  .kv-edit{max-width:none}
  form.kv{flex-wrap:nowrap}
  .save-bar .btn{flex:1}
  .ob-top .who form.inline{display:inline}
  .ob-top .so{display:inline!important}

  .ad{grid-template-columns:1fr;background:#fff}
  .ad-side{display:none}
  .ad-main{padding:0 16px 48px}
  .ad-tabs{display:flex;gap:4px;overflow-x:auto;margin:0 -16px 18px;padding:12px 12px;border-bottom:1px solid var(--border);position:sticky;top:0;background:rgb(255 255 255 / .94);backdrop-filter:blur(10px);z-index:10;scrollbar-width:none}
  .ad-tabs a{flex:none;padding:7px 13px;border-radius:999px;font-size:14px;color:var(--mfg);white-space:nowrap}
  .ad-tabs a.on{background:var(--primary-tint);color:var(--fg);font-weight:500}
  .ad-h h1{font-size:24px}
  .ad-search{width:100%}
  .ad-h-acts{width:100%}
  .ad-h-acts .ad-search{flex:1;width:auto}
  .md,.md[style]{grid-template-columns:1fr!important;min-height:0}
  .md-list{border-right:0;border-bottom:1px solid var(--border);max-height:340px;overflow:auto}
  .md-detail{padding:20px 16px}
  .mem-h{flex-wrap:wrap}
  .mem-h .acts{margin-left:0;width:100%}
  .two{grid-template-columns:1fr;gap:8px}
  .blk .tbl{display:block;overflow-x:auto}
}
.lbl-row .k{white-space:nowrap}
@media (max-width:860px){.blk .tbl td{min-width:110px}}
.signing{display:inline-flex;gap:8px}
.signing .dot{width:9px;height:9px;border-radius:50%;background:var(--primary);animation:pulse 1.2s ease-in-out infinite}
.signing .dot:nth-child(2){animation-delay:.2s}.signing .dot:nth-child(3){animation-delay:.4s}
noscript+.signing{margin-left:0}

/* ================= v2: fixed side columns, Connect status, course portal ================= */
@media (min-width:861px){
  .m-shell{display:block;min-height:100vh}
  .mv .m-shell{background:none}
  .m-side,.mv .m-side{position:fixed;top:0;left:0;bottom:0;width:256px;height:auto;overflow-y:auto;overscroll-behavior:contain;z-index:30;
    background:var(--bg) var(--noise);border-right:1px solid var(--border)}
  .m-main{margin-left:256px;min-height:100vh}
  .m-user{flex:none;margin-top:auto;background:inherit}
  .ad{display:block;background:#fff}
  .ad-side{position:fixed;top:0;left:0;bottom:0;width:232px;height:auto;overflow-y:auto;overscroll-behavior:contain;z-index:30}
  .ad-main{margin-left:232px;min-height:100vh}
}
.admin .ad-side{background:var(--bg)}

/* Connect item + status */
.m-nav a.nav-conn{flex-wrap:nowrap}
.conn-st{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:13px;white-space:nowrap;font-weight:400}
.conn-st .dot,.tab-conn .dot,.conn-banner .dot{width:8px;height:8px;border-radius:50%;flex:none}
.conn-st.no{color:var(--amber)}.conn-st.no .dot,.tab-conn.no .dot,.conn-banner .dot{background:#D08A1E}
.conn-st.ok{color:var(--green)}.conn-st.ok .dot,.tab-conn.ok .dot{background:var(--green)}
.m-tabs a.tab-conn{display:inline-flex;align-items:center;gap:7px}

/* not-connected banner on home */
.conn-banner{display:flex;align-items:center;gap:14px;margin:26px 0 0;padding:14px 18px;border-radius:16px;background:var(--amber-soft);border:1px solid rgb(148 89 15 / .18);color:var(--fg);font-size:16px;line-height:1.5}
.conn-banner .cb-t{flex:1;min-width:0}
.conn-banner .cb-go{display:inline-flex;align-items:center;gap:6px;color:var(--primary);white-space:nowrap;font-weight:500}
.conn-banner:hover{border-color:rgb(148 89 15 / .35)}

/* connect inside the normal layout */
.ob-in{min-height:0}
.ob-in .ob-main{max-width:760px;margin:0;padding:0 0 40px}
.ob-in .ob-main .h1{text-align:left;font-size:46px}
.ob-in .ob-main .lede{text-align:left;margin:12px 0 0}
.ob-in .ob-done{text-align:left}
.ob-in .ob-done img{width:240px;margin-left:-10px}
.ob-in .ob-help{text-align:left}

/* course portal */
.course{display:grid;grid-template-columns:330px minmax(0,1fr);gap:44px;margin-top:32px;align-items:start}
.lessons{min-width:0}
.l-sec+.l-sec{margin-top:22px}
.l-h{font-family:var(--display);font-weight:500;font-size:21px;padding-bottom:6px;border-bottom:1px solid var(--border)}
.lessons ul{list-style:none}
.lesson{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:10px 10px;margin:2px -10px 0;border-radius:12px;color:var(--fg);font-size:15.5px;line-height:1.4}
.lesson:hover{background:rgb(30 26 22 / .04)}
.lesson.on{background:var(--card);box-shadow:0 1px 2px rgb(60 40 10 / .08),0 0 0 1px var(--border)}
.lesson.on .l-t{font-weight:500}
.l-tick{width:18px;height:18px;border-radius:50%;border:1.5px solid rgb(30 26 22 / .22);display:grid;place-items:center;align-self:center;color:#fff}
.l-tick.done{background:var(--green);border-color:var(--green)}
.l-len{font-size:13px;color:#8A7E70;white-space:nowrap}
.l-locked{display:block;margin-top:22px;padding:14px 16px;border-radius:14px;background:rgb(91 63 224 / .06);color:#3A3129;font-size:15px;line-height:1.5}
.l-locked span{color:var(--primary);white-space:nowrap}
.lesson-view .vid-title{margin-top:24px}
.lesson-view .player{border-radius:18px}
.lesson-acts{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px;align-items:center}
.lesson-acts .btn.pri{color:#fff;max-width:100%}
.lesson-acts .btn{white-space:normal;text-align:left;height:auto;min-height:38px;padding-top:7px;padding-bottom:7px}
.locked-view{padding:8px 0}
.locked-view .vid-title{margin-top:0}

@media (max-width:860px){
  .conn-banner{flex-wrap:wrap;margin-top:20px;font-size:15.5px}
  .conn-banner .cb-go{width:100%;padding-left:22px}
  .ob-in .ob-main .h1{font-size:34px}
  .ob-in .ob-done img{width:190px}
  .course{grid-template-columns:1fr;gap:28px;margin-top:22px}
  .lessons{position:static;max-height:none;overflow:visible;padding:0}
  .lesson-view{scroll-margin-top:110px}
  .lesson-view .vid-title{font-size:28px}
}
@media (max-width:860px){.player .soon-badge{top:14px;bottom:auto;left:14px;font-size:13.5px;padding:6px 12px}}
.h1,.vid-title,.ad-h h1{text-wrap:balance}

/* ================= v3: help library, uploads, backups, admin editors ================= */
.search .search-x{color:var(--mfg);font-size:22px;line-height:1;padding:0 4px}
.results a.res{color:var(--fg)}
.results a.res:hover .tt{color:var(--primary)}
.res .d{line-height:1.5}
.article{max-width:720px;margin-top:18px}
.article .h1{font-size:44px}
.md-body{font-family:var(--prose);font-size:18px;line-height:1.7;color:#2E2620;margin-top:22px}
.md-body p{margin:0 0 16px}
.md-body h2{font-family:var(--display);font-weight:500;font-size:27px;margin:30px 0 10px;line-height:1.2}
.md-body h3{font-size:18px;font-weight:600;margin:22px 0 8px}
.md-body ul,.md-body ol{margin:0 0 16px;padding-left:24px}
.md-body li{margin:6px 0;padding-left:4px}
.md-body strong{font-weight:600;color:var(--fg)}
.md-body code{font-family:var(--mono);font-size:.85em;background:rgb(30 26 22 / .06);padding:1px 6px;border-radius:6px}
.article-foot{max-width:720px;margin-top:26px;padding-top:20px;border-top:1px solid var(--border)}

.photo .ph-img{width:56px;height:56px;border-radius:50%;object-fit:cover;flex:none;box-shadow:0 2px 6px -2px rgb(0 0 0 / .3)}
.ph-acts{display:flex;align-items:center;gap:12px}
.up-form{display:inline-flex;align-items:center;gap:10px}
.up-form label.btn{cursor:pointer}
.up-form label.is-disabled{opacity:.5;pointer-events:none}
.up-busy{font-size:14.5px;color:var(--primary)}
.mem.files .f-name{display:flex;gap:12px;align-items:flex-start;min-width:0}
.mem.files .f-name>span{min-width:0;overflow-wrap:anywhere}
.mem.files li form{flex:none}
.mem.backups{margin-top:14px;border-top:1px solid var(--border)}
.mem.backups li{font-size:16px}

/* admin editors */
.tbl-wrap{border:1px solid var(--border);border-radius:14px;overflow:auto}
textarea.fi.short{min-height:0;font-size:14.5px;line-height:1.55}
textarea.fi.mono{font-family:var(--mono);font-size:13px}
.check{display:flex;align-items:center;gap:8px;font-size:14px;margin-top:10px}
.area-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px 16px}
.area-grid .check{margin-top:4px}
.two-in{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.md-preview{border:1px solid var(--border);border-radius:12px;padding:18px 20px;background:var(--bg);max-height:640px;overflow:auto;font-size:14.5px;line-height:1.6}
.md-preview h2{font-family:var(--display);font-size:20px;font-weight:600;margin:4px 0 10px}
.md-preview p{margin:0 0 10px}.md-preview ul,.md-preview ol{padding-left:20px;margin:0 0 10px}
.md-preview h2+h2,.md-preview p+h2{font-size:16px;margin-top:16px}
.md-preview h3{font-size:14.5px;margin:12px 0 6px}
.ext-row{display:flex;justify-content:space-between;align-items:center;gap:10px}
.ext-row .mono{overflow-wrap:anywhere}
.vsec{border:1px solid var(--border);border-radius:14px;padding:14px 16px 12px;margin-bottom:16px}
.vsec-h{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.vsec-h .fi{width:auto;flex:1;min-width:160px;padding:7px 10px}
.vsec-h .fi.pos{flex:none;width:64px;min-width:0}
.vsec-h select.fi{flex:none;min-width:150px}
.vsec .tbl td{padding:9px 8px}
.vsec-new{border:1px dashed var(--border);border-radius:14px;padding:12px 16px}
.add-l{display:inline-block;margin-top:8px;color:var(--primary);font-size:14px}
.upload .bar{height:6px;border-radius:3px;background:var(--muted);overflow:hidden;margin-top:10px}
.upload .bar i{display:block;height:100%;width:0;background:var(--primary);transition:width .2s}
.upload .up-msg{margin-top:6px;font-size:13.5px}
.upload label.btn{cursor:pointer}
.adm-player{width:100%;aspect-ratio:16/9;border-radius:12px;background:#000;display:block}
.adm-player.embed iframe,.player.embed iframe{width:100%;height:100%;border:0;display:block}
.player.embed{background:#000}

@media (max-width:860px){
  .editor{grid-template-columns:1fr;gap:20px}
  .two-in{grid-template-columns:1fr;gap:0}
  .area-grid{grid-template-columns:1fr 1fr}
  .article .h1{font-size:32px}
  .md-body{font-size:17px}
  .photo{flex-wrap:wrap}
  .ph-acts{width:100%}
  .vsec-h .fi{min-width:0;flex:1 1 100%}
  .vsec-h .fi.pos{flex:none}
}
.flash.in-panel{margin:14px 0 4px!important;max-width:none}
.admin input[type=checkbox],.admin input[type=radio]{accent-color:var(--primary);width:16px;height:16px}
.vsec .tbl{table-layout:fixed}.vsec .tbl td:nth-child(1){width:44px}.vsec .tbl td:nth-child(3){width:70px}.vsec .tbl td:nth-child(4){width:150px}.vsec .tbl td:nth-child(5){width:110px}
@media (max-width:860px){.vsec .tbl td:nth-child(3){display:none}.vsec .tbl td:nth-child(4){width:120px}.vsec .tbl td:nth-child(5){width:96px}}
.upload label.btn{display:inline-flex;font-size:14.5px;font-weight:500;margin-bottom:0}
