:root{
  --ink:#2b2140; --ink-soft:#5b4f78; --paper:#fff8fb; --white:#fff;
  --pink:#ffb3d1; --hot:#ff6fa8; --peach:#ffd5b0; --mint:#bdf1d8; --lav:#d6c6ff;
  --sky:#b3dfff; --butter:#fff0a8;
  --r:20px; --shadow:4px 4px 0 var(--ink);
  --display:"Bagel Fat One","Baloo 2","Trebuchet MS",system-ui,sans-serif;
  --body:"Figtree","Nunito","Segoe UI",system-ui,sans-serif;
}
*{box-sizing:border-box}
html{scroll-padding-top:84px;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--body);color:var(--ink);line-height:1.55;font-size:17px;
  background:
    radial-gradient(circle at 1px 1px, var(--dots,rgba(255,111,168,.18)) 1.5px, transparent 0) 0 0/26px 26px,
    linear-gradient(180deg,var(--bg1,#fff0f7) 0%,var(--bg2,#fff8ef) 55%,var(--bg3,#f0faff) 100%);
  min-height:100vh}
img{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;color:inherit;cursor:pointer}
:focus-visible{outline:3px solid var(--ink);outline-offset:3px;border-radius:8px}
h1,h2,h3{font-family:var(--display);font-weight:400;line-height:1.1;margin:0;letter-spacing:.01em}
h2{font-size:clamp(1.8rem,4.2vw,2.6rem)}
h3{font-size:1.25rem}
p{margin:0 0 1em}
.wrap{width:min(1120px,100% - 32px);margin-inline:auto}
.sticker{background:var(--white);border:3px solid var(--ink);border-radius:var(--r);box-shadow:var(--shadow)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* header */
.top{position:sticky;top:0;z-index:30;background:var(--head-bg,rgba(255,248,251,.9));backdrop-filter:blur(8px);border-bottom:3px solid var(--ink)}
.top .wrap{display:flex;align-items:center;gap:14px;padding:10px 0}
nav{margin-left:auto;display:flex;gap:8px}
nav a{text-decoration:none;font-weight:800;padding:7px 16px;border:3px solid var(--ink);border-radius:999px;background:var(--white);box-shadow:3px 3px 0 var(--ink);transition:transform .12s, box-shadow .12s}
nav a:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}
nav a[aria-current="page"]{background:var(--hot);color:var(--white);text-shadow:1px 1px 0 var(--ink)}

/* hero */
.hero{margin:26px auto 22px}
.banner{overflow:hidden;padding:0}
.banner img{width:100%;aspect-ratio:1584/672;object-fit:cover}
.pill-row{display:flex;gap:12px;align-items:stretch;margin-top:18px;flex-wrap:wrap}
.callout{display:flex;gap:14px;align-items:center;padding:16px 20px;border:3px solid var(--ink);border-radius:var(--r);background:var(--pink);box-shadow:var(--shadow);flex:1 1 320px}
.callout .ico{font-size:1.9rem;line-height:1}
.callout b{font-family:var(--display);font-weight:400;font-size:1.3rem;display:block}

/* section jump bar */
.jump{display:flex;gap:8px;flex-wrap:wrap;margin:26px 0 8px}
.jump a{font-weight:800;text-decoration:none;padding:6px 14px;border-radius:999px;border:3px solid var(--ink);background:var(--butter)}
.jump a:nth-child(2){background:var(--mint)} .jump a:nth-child(3){background:var(--lav)} .jump a:nth-child(4){background:var(--sky)}
.jump a:hover{background:var(--white)}

.sec{padding:34px 0 8px}
.sec>h2{margin-bottom:6px}
.sec .lede{color:var(--ink-soft);margin-bottom:22px}

/* loadout */
.top-grid{display:grid;grid-template-columns:minmax(220px,340px) 1fr;gap:26px;align-items:start}
.sticker-img{padding:12px;background:var(--white);transform:rotate(-2deg)}
.sticker-img img{width:100%;border-radius:12px}
.stats{padding:0;overflow:hidden}
.stats h2{font-size:1.6rem;padding:16px 20px 10px}
.stats dl{margin:0}
.stats .row{display:grid;grid-template-columns:120px 1fr;gap:12px;padding:10px 20px;border-top:2px dashed #e5d7f5}
.stats dt{font-weight:800;color:var(--hot)}
.stats dd{margin:0}
.quote{margin:0;padding:16px 20px;background:var(--lav);border-top:3px solid var(--ink);font-family:var(--display);font-size:1.35rem}

/* meet */
.meet{padding:28px clamp(18px,4vw,40px)}
.meet h3{font-size:1.9rem;margin-bottom:14px}
.meet p{max-width:68ch}
.pref{margin-top:18px;background:var(--sky);box-shadow:var(--shadow)}

/* hooks */
.hooks{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px}
.hook{padding:18px 20px;border:3px solid var(--ink);border-radius:var(--r);box-shadow:var(--shadow);background:var(--c)}
.hook .e{font-size:1.8rem}
.hook h3{margin:6px 0 8px}
.hook p{margin:0}
.note{margin-top:22px;padding:16px 20px;background:var(--peach);border:3px solid var(--ink);border-radius:var(--r);font-weight:600}

/* kinks */
.loadout-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}
.loadout-bar input{flex:1 1 220px;padding:10px 16px;border-radius:999px;border:3px solid var(--ink);font:inherit;background:var(--white)}
.loadout-bar .count{font-weight:800}
.kinks{columns:3 300px;column-gap:18px}
.kink{break-inside:avoid;margin:0 0 18px;padding:18px 20px 20px;border:3px solid var(--ink);border-radius:var(--r);box-shadow:var(--shadow);background:var(--c);position:relative}
.kink .e{font-size:2rem;line-height:1}
.kink h3{margin:8px 0 6px;font-size:1.3rem}
.kink .tag{display:inline-block;margin-bottom:10px;padding:2px 12px;border:2px solid var(--ink);border-radius:999px;background:var(--white);font-weight:800;font-size:.95rem}
.kink p{margin:0;font-size:1rem}
.kink.hide{display:none}
.empty{padding:20px;text-align:center;font-weight:700}

/* approach */
.approach .callout{background:var(--lav);margin-bottom:20px}
.check{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:10px}
.check label{display:flex;gap:12px;align-items:center;padding:12px 16px;border:3px solid var(--ink);border-radius:14px;background:var(--white);cursor:pointer;font-weight:600}
.check input{appearance:none;width:26px;height:26px;border:3px solid var(--ink);border-radius:8px;background:var(--white);flex:none;display:grid;place-items:center;cursor:pointer}
.check input:checked{background:var(--mint)}
.check input:checked::after{content:"\2713";font-weight:900;line-height:1}
.check input:checked+span{text-decoration:line-through;text-decoration-color:var(--hot)}

/* ig profile */
.ig-head{display:flex;gap:clamp(18px,4vw,44px);align-items:center;padding:26px 0 18px;flex-wrap:wrap}
.ring{padding:4px;border-radius:50%;background:conic-gradient(#ff6fa8,#ffd5b0,#bdf1d8,#b3dfff,#d6c6ff,#ff6fa8)}
.ring img{width:clamp(96px,16vw,150px);aspect-ratio:1;border-radius:50%;border:4px solid var(--paper);object-fit:cover}
.ig-info h1{font-size:1.9rem}
.ig-info .h{font-weight:800;color:var(--ink-soft)}
.counts{display:flex;gap:22px;margin:10px 0;font-weight:800}
.counts span b{font-family:var(--display);font-weight:400;font-size:1.3rem;margin-right:4px}
.ig-info p{margin:0;max-width:52ch}
.grid-tab{display:flex;justify-content:center;gap:8px;border-top:3px solid var(--ink);padding-top:10px;font-weight:800;letter-spacing:.04em}
.ig-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(3px,.8vw,10px);margin:14px 0 40px}
.tile{position:relative;aspect-ratio:4/5;overflow:hidden;border:0;padding:0;background:var(--lav);border-radius:6px;cursor:pointer}
.tile img{width:100%;height:100%;object-fit:cover;transition:transform .35s}
.tile::after{content:"\2665  " attr(data-likes);position:absolute;inset:0;display:grid;place-items:center;background:rgba(43,33,64,.55);color:#fff;font-weight:800;font-size:1.1rem;opacity:0;transition:opacity .2s}
.tile:hover::after,.tile:focus-visible::after{opacity:1}
.tile:hover img{transform:scale(1.04)}

/* lightbox */
.lb{position:fixed;inset:0;z-index:60;background:rgba(43,33,64,.82);display:none;align-items:center;justify-content:center;padding:14px}
.lb.open{display:flex}
.lb-card{display:grid;grid-template-columns:minmax(0,1fr) 340px;width:min(1040px,100%);max-height:calc(100vh - 28px);background:var(--white);border:3px solid var(--ink);border-radius:var(--r);overflow:hidden;box-shadow:6px 6px 0 var(--ink)}
.lb-img{background:#1d1630;position:relative;touch-action:pan-y;height:min(calc(100vh - 34px),900px);min-width:0;overflow:hidden}
.lb-img img{width:100%;height:100%;object-fit:contain}
.lb-side{display:flex;flex-direction:column;padding:16px 18px;gap:12px;min-width:0}
.lb-user{display:flex;align-items:center;gap:10px;font-weight:800}
.lb-user img{width:38px;height:38px;border-radius:50%;border:2px solid var(--ink)}
.lb-cap{flex:1;overflow:auto}
.lb-actions{display:flex;align-items:center;gap:12px;border-top:2px dashed #e5d7f5;padding-top:12px}
.heart{border:3px solid var(--ink);background:var(--white);border-radius:999px;padding:6px 14px;font-weight:800;display:inline-flex;gap:6px;align-items:center}
.heart[aria-pressed="true"]{background:var(--pink)}
.heart[aria-pressed="true"] .hi{color:var(--hot)}
.lb-count{margin-left:auto;font-weight:800;color:var(--ink-soft)}
.arrow,.close{position:absolute;border:3px solid var(--ink);background:var(--white);border-radius:50%;width:44px;height:44px;font-size:1.3rem;font-weight:900;display:grid;place-items:center;box-shadow:3px 3px 0 var(--ink)}
.arrow.prev{left:12px;top:50%;transform:translateY(-50%)} .arrow.next{right:12px;top:50%;transform:translateY(-50%)}
.close{top:12px;right:12px;z-index:2}
.lb-strip{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px}
.lb-strip button{flex:none;width:44px;height:55px;padding:0;border:2px solid transparent;border-radius:6px;overflow:hidden;opacity:.55;background:none}
.lb-strip button[aria-current="true"]{opacity:1;border-color:var(--hot)}
.lb-strip img{width:100%;height:100%;object-fit:cover}

/* feed */
.feed-layout{display:grid;grid-template-columns:minmax(0,640px) 300px;gap:28px;justify-content:center;padding:26px 0 50px;align-items:start}
.cast{position:sticky;top:90px;padding:18px}
.cast h2{font-size:1.5rem;margin-bottom:12px}
.cast button{display:flex;gap:10px;align-items:center;width:100%;text-align:left;padding:8px 10px;border:3px solid transparent;border-radius:14px;background:none;margin-bottom:4px}
.cast button:hover{background:var(--paper)}
.cast button[aria-pressed="true"]{border-color:var(--ink);background:var(--butter)}
.cast small{display:block;color:var(--ink-soft);line-height:1.25}
.cast .hint{font-size:.9rem;color:var(--ink-soft);margin:12px 0 0}
.av{width:var(--s,44px);height:var(--s,44px);border-radius:50%;border:3px solid var(--ink);flex:none;object-fit:cover;display:grid;place-items:center;font-family:var(--display);background:var(--c);color:#26262f;font-size:calc(var(--s,44px)*.45)}
.post{margin-bottom:22px;padding:0;overflow:hidden}
.post-h{display:flex;gap:10px;align-items:center;padding:14px 16px 8px}
.post-h b{display:block;line-height:1.2}
.post-h small{color:var(--ink-soft)}
.post-b{padding:4px 16px 12px;font-size:1.05rem}
.post-img{border-block:3px solid var(--ink);background:var(--lav)}
.post-img img{width:100%;max-height:560px;object-fit:cover;object-position:50% 20%}
.post-f{display:flex;gap:10px;padding:10px 16px;align-items:center;border-top:2px dashed #e5d7f5;flex-wrap:wrap}
.post-img+.post-f{border-top:0}
.cm{padding:4px 16px 14px;background:var(--cm-bg,#fff6fb);border-top:3px solid var(--ink)}
.cm ul{list-style:none;margin:0;padding:0}
.cm li{margin-top:12px}
.cm .row{display:flex;gap:10px;align-items:flex-start}
.bubble{background:var(--white);border:2px solid var(--ink);border-radius:16px;padding:8px 12px;min-width:0}
.bubble b{margin-right:6px}
.bubble p{margin:0}
.cm .meta{display:flex;gap:12px;margin:4px 0 0 4px;font-size:.88rem;font-weight:800;color:var(--ink-soft)}
.cm .meta button{border:0;background:none;padding:0;font-weight:800;color:inherit}
.cm .meta button[aria-pressed="true"]{color:var(--hot)}
.cm ul ul{margin-left:44px}
.mention{font-weight:800;color:var(--ink);background:color-mix(in srgb,var(--c,var(--hot)) 35%,white);border-radius:6px;padding:0 4px}
.feed-empty{padding:30px;text-align:center}

footer{border-top:3px solid var(--ink);background:var(--white);padding:22px 0;margin-top:30px;color:var(--ink-soft);font-weight:600;text-align:center}

/* age gate */
.gate{position:fixed;inset:0;z-index:100;display:none;place-items:center;padding:20px;background:linear-gradient(135deg,#ffb3d1,#d6c6ff 50%,#b3dfff)}
.gate.show{display:grid}
.gate .box{max-width:460px;text-align:center;padding:30px 26px}
.gate img{width:110px;height:110px;margin:0 auto 12px;border-radius:50%;border:4px solid var(--ink);object-fit:cover}
.gate h1{font-size:2rem;margin-bottom:10px}
.gate .btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:18px}
.btn{padding:10px 22px;border:3px solid var(--ink);border-radius:999px;font-weight:800;background:var(--white);box-shadow:3px 3px 0 var(--ink);text-decoration:none}
.btn.go{background:var(--hot);color:var(--white);text-shadow:1px 1px 0 var(--ink)}

/* one orchestrated moment: banner pops in */
@media (prefers-reduced-motion:no-preference){
  .banner{animation:pop .6s cubic-bezier(.2,1.4,.4,1) both}
  @keyframes pop{from{transform:scale(.96) rotate(-1deg);opacity:0}to{transform:none;opacity:1}}
}

@media (max-width:860px){
  .top-grid{grid-template-columns:1fr}
  .sticker-img{max-width:300px;margin-inline:auto}
  .feed-layout{grid-template-columns:1fr}
  .cast{position:static;order:-1}
  .cast .list{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}
  .cast button{width:auto;flex:none;margin:0}
  .cast .hint,.cast small{display:none}
  .lb-card{grid-template-columns:1fr;overflow:auto}
  .lb-img{height:62vh}
}
@media (max-width:480px){
  body{font-size:16px}
  .stats .row{grid-template-columns:96px 1fr}
  nav a{padding:6px 12px}
}

/* character switcher */
.who{position:relative}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--display);font-size:1.2rem;background:var(--white);border:3px solid var(--ink);border-radius:999px;padding:4px 14px 4px 5px;box-shadow:3px 3px 0 var(--ink)}
.brand:hover{background:var(--butter)}
.brand .bn{white-space:nowrap}
.brand .caret{font-size:.9rem;transition:transform .15s}
.brand[aria-expanded="true"] .caret{transform:rotate(180deg)}
.menu{position:absolute;top:calc(100% + 10px);left:0;z-index:50;list-style:none;margin:0;padding:8px;min-width:400px;max-width:calc(100vw - 32px)}
.menu[hidden]{display:none}
.menu a{display:flex;gap:12px;align-items:center;text-decoration:none;padding:8px 10px;border-radius:14px;border:3px solid transparent}
.menu a:hover,.menu a:focus-visible{background:var(--paper);border-color:var(--ink)}
.menu a[aria-current="true"]{background:var(--butter)}
.menu small{display:block;color:var(--ink-soft);line-height:1.25}
.menu i{margin-left:auto;font-style:normal;font-weight:800;font-size:.8rem;border:2px solid var(--ink);border-radius:999px;padding:1px 9px;background:var(--white);white-space:nowrap}
.menu i.here{background:var(--mint)}
.soon-card{text-align:center;padding:36px 24px;margin:40px auto;max-width:560px;display:grid;justify-items:center;gap:10px}
.soon-card h1{font-size:2.2rem}
.soon-card .tg{font-weight:800;color:var(--ink-soft);margin:0}
.soon-card .av{margin-bottom:6px}
.nav-wrap{display:contents}

/* gamer tag */
.gt{font-family:var(--display);font-weight:400;letter-spacing:.02em}
.tagcard{display:flex;gap:14px;align-items:center;padding:14px 18px;background:var(--mint);flex:1 1 320px}
.tagcard .ico{font-size:2rem}
.tagcard small{display:block;font-weight:800;color:var(--ink-soft)}
.tagcard .gt{font-size:1.5rem;display:block;line-height:1.1;word-break:break-all}
.tagcard .tn{display:block;font-size:.92rem;margin-top:2px}
.copy{margin-left:auto;border:3px solid var(--ink);background:var(--white);border-radius:999px;padding:6px 14px;font-weight:800;box-shadow:3px 3px 0 var(--ink);flex:none}
.copy:hover{background:var(--butter)}
.ig-info .h.gt{font-size:1.2rem;color:var(--hot)}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.chips span{border:2px solid var(--ink);border-radius:999px;padding:1px 12px;font-weight:800;font-size:.9rem;background:var(--white)}
.chips .on{background:var(--mint)}
.chips .on::before{content:"";display:inline-block;width:9px;height:9px;border-radius:50%;background:#2fbf71;margin-right:6px;border:2px solid var(--ink)}
.post-h small.gt{font-size:.95rem}
.lb-user .gt{font-size:1.05rem}
.cast .gl{margin:14px 0 4px 10px;font-weight:800;color:var(--ink-soft);font-size:.9rem}

@media (max-width:860px){
  .brand .bn{font-size:1.05rem}
  .top .wrap{flex-wrap:wrap;gap:8px}
  nav{margin-left:0;width:100%;overflow-x:auto;padding:2px 2px 6px}
  nav a{white-space:nowrap}
  .menu{min-width:min(400px,calc(100vw - 32px))}
}
@media (prefers-reduced-motion:reduce){.brand .caret{transition:none}}
nav[hidden]{display:none}
.cast{max-height:calc(100vh - 110px);overflow-y:auto}
@media (max-width:860px){.cast{max-height:none;overflow:visible}.cast .gl{display:none}}

/* close friends posts inside the feed */
.post.cfpost{box-shadow:5px 5px 0 #2fbf71}
.cfbadge{margin-left:auto;align-self:flex-start;background:#2fbf71;color:var(--white);text-shadow:1px 1px 0 var(--ink);border:2px solid var(--ink);border-radius:999px;padding:0 10px;font-weight:800;font-size:.8rem;white-space:nowrap}
.post-b p{margin:0 0 .8em}
.post-b p:last-child{margin-bottom:0}
.shared{margin:0;padding:8px 16px;font-weight:700;font-size:.9rem;color:var(--ink-soft);border-top:2px dashed #e5d7f5}
.gate-wrap{position:relative}
.post.spicy:not(.open) .gated{filter:blur(9px);user-select:none;pointer-events:none;max-height:300px;overflow:hidden}
.reveal{position:absolute;inset:8px 12px;z-index:2;display:grid;place-content:center;gap:2px;text-align:center;border:3px dashed var(--ink);border-radius:var(--r);background:var(--reveal-bg,rgba(255,248,251,.55));font-size:1.15rem}
.reveal:hover{background:rgba(189,241,216,.7)}
.reveal small{font-weight:600}

.callout.sugg{background:var(--butter);margin-bottom:18px;box-shadow:var(--shadow)}

/* approach section */
.ap-two{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:28px}
.ap-card{padding:20px 22px;border:3px solid var(--ink);border-radius:var(--r);box-shadow:var(--shadow);background:var(--white)}
.ap-card h3{font-size:1.4rem;margin-bottom:10px}
.ap-card p:last-child{margin-bottom:0}
.ap-card.before{background:var(--sky)}
.ap-card.limits{background:var(--pink)}
.nos{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:8px}
.nos li{display:flex;gap:10px;align-items:center;background:var(--white);border:2px solid var(--ink);border-radius:12px;padding:6px 12px;font-weight:700}
.nos li::before{content:"\2715";font-weight:900;color:var(--hot);flex:none}
.firm{font-weight:800}
.inc-h{font-size:1.5rem;margin:4px 0 16px}
.inc{display:grid;gap:16px}
.inc-item{display:grid;grid-template-columns:48px 1fr;gap:16px;align-items:start}
.inc-item:nth-child(1){background:var(--butter)}
.inc-item:nth-child(2){background:var(--mint)}
.inc-item:nth-child(3){background:var(--peach)}
.inc-item .num{display:grid;place-items:center;width:44px;height:44px;border:3px solid var(--ink);border-radius:50%;background:var(--white);font-family:var(--display);font-size:1.3rem}
.inc-item h4{font-family:var(--display);font-weight:400;font-size:1.3rem;margin:0 0 8px;line-height:1.15}
.msg{margin:6px 0 14px;padding:14px 18px;background:var(--white);border:3px solid var(--ink);border-radius:18px 18px 18px 4px;font-weight:600}
@media (max-width:860px){.ap-two{grid-template-columns:1fr}.inc-item{grid-template-columns:1fr}}

/* stacked posts (carousels) */
.tile .stack{position:absolute;top:8px;right:8px;z-index:2;filter:drop-shadow(0 1px 3px rgba(0,0,0,.6));pointer-events:none}
.pcount{position:absolute;top:12px;left:12px;z-index:2;background:rgba(43,33,64,.8);color:#fff;font-weight:800;font-size:.85rem;border-radius:999px;padding:2px 12px}
.dots{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);z-index:2;display:flex;gap:8px;background:rgba(43,33,64,.55);padding:7px 12px;border-radius:999px}
.dots button{width:12px;height:12px;padding:0;border:2px solid #fff;border-radius:50%;background:transparent}
.dots button[aria-current="true"]{background:#fff}
.setnote{color:var(--ink-soft);font-size:.92rem}
.lb-strip button{position:relative}
.lb-strip .mini{position:absolute;top:3px;right:3px;width:10px;height:10px;border:2px solid #fff;border-radius:3px;background:var(--hot);box-shadow:0 0 2px rgba(0,0,0,.6)}

/* ===== Snow's winter theme (applies when body[data-theme="snow"]) ===== */
body[data-theme="snow"]{
  --ink:#16233f; --ink-soft:#52618a; --paper:#f3f8ff;
  --pink:#cfe0ff; --hot:#3f6df2; --peach:#f3e6c9; --mint:#c6efec; --lav:#ddd4ff; --sky:#bfe2ff; --butter:#fff1bd;
  --head-bg:#14213d; --dots:rgba(63,109,242,.16); --bg1:#e6f0ff; --bg2:#f7faff; --bg3:#e1eaff;
  --display:"Bebas Neue","Oswald",Impact,"Arial Narrow",sans-serif;
}
body[data-theme="snow"] h1,body[data-theme="snow"] h2,body[data-theme="snow"] h3{letter-spacing:.04em}
body[data-theme="snow"] h2{font-size:clamp(2.3rem,5vw,3.4rem)}
body[data-theme="snow"] h3{font-size:1.7rem}
body[data-theme="snow"] .brand{font-size:1.5rem;letter-spacing:.04em}
body[data-theme="snow"] .stats h2{font-size:2.1rem}
body[data-theme="snow"] .quote{font-size:1.8rem;letter-spacing:.03em}
body[data-theme="snow"] .tagcard .gt{font-size:2rem}
body[data-theme="snow"] .ig-info h1{font-size:2.6rem}
body[data-theme="snow"] .ig-info .h.gt{font-size:1.5rem}
body[data-theme="snow"] .counts span b{font-size:1.7rem}
body[data-theme="snow"] .cast h2{font-size:2rem}
body[data-theme="snow"] .gate h1{font-size:2.8rem}
body[data-theme="snow"] .callout b{font-size:1.7rem}
body[data-theme="snow"] .p-title{font-size:1.9rem}
body[data-theme="snow"] .kink h3,body[data-theme="snow"] .hook h3{font-size:1.9rem}
body[data-theme="snow"] .btn.go,body[data-theme="snow"] .lockpill{text-shadow:1px 1px 0 var(--ink)}
body[data-theme="snow"] .banner img{aspect-ratio:1584/672}

/* story, notes and limits sections */
.story{display:grid;gap:18px;max-width:800px}
.chapter{padding:22px clamp(18px,4vw,32px) 10px;border-left-width:10px;border-left-color:var(--hot)}
.chapter h3,.fch h3{font-family:"Caveat","Bradley Hand",cursive;font-weight:700;font-size:2.4rem;letter-spacing:0;margin:6px 0 10px;line-height:1}
body[data-theme="snow"] .chapter h3,body[data-theme="snow"] .fch h3{font-size:2.5rem}
.chapter p,.fch p{line-height:1.7}
.track{display:inline-block;background:var(--hot);color:#fff;font-family:var(--display);letter-spacing:.06em;font-size:1.15rem;border:2px solid var(--ink);border-radius:999px;padding:0 14px;text-shadow:1px 1px 0 var(--ink)}
.notes{padding:22px clamp(18px,4vw,32px);max-width:860px}
.nlist{margin:14px 0;padding:0;list-style:none;counter-reset:n;display:grid;gap:10px}
.nlist li{counter-increment:n;display:grid;grid-template-columns:36px 1fr;gap:12px;align-items:start;padding:12px 14px;border:3px solid var(--ink);border-radius:14px;background:var(--paper)}
.nlist li::before{content:counter(n);display:grid;place-items:center;width:32px;height:32px;border:3px solid var(--ink);border-radius:50%;background:var(--sky);font-family:var(--display);font-size:1.2rem}
.callout.warn{background:var(--peach);margin-top:10px;font-weight:700;box-shadow:none}
.lims{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.lim{display:grid;grid-template-columns:44px 1fr;gap:12px;padding:16px 18px;border:3px solid var(--ink);border-radius:var(--r);box-shadow:var(--shadow);background:var(--c)}
.lim .e{font-size:1.8rem;line-height:1}
.lim h3{margin:0 0 6px}
.lim p{margin:0}

/* empty gallery placeholders */
.tile.ph{display:grid;place-items:center;cursor:default;background:linear-gradient(135deg,var(--sky),var(--lav));border:3px dashed var(--ink)}
.tile.ph span{font-size:2.4rem;opacity:.85}
.tile.ph::after{display:none}
.ph-note{padding:16px 20px;text-align:center;font-weight:700;margin:-20px 0 40px}

/* placeholders for characters without banner or sticker images yet */
.ph-banner{display:grid;place-items:center;min-height:clamp(150px,30vw,300px);aspect-ratio:1584/672;background:repeating-linear-gradient(135deg,var(--sky) 0 18px,var(--lav) 18px 36px);border-style:dashed}
.ph-banner>div{display:grid;gap:6px;justify-items:center;text-align:center;padding:16px}
.ph-banner b{font-family:var(--display);font-weight:400;font-size:clamp(1.8rem,5vw,3.2rem);background:var(--white);border:3px solid var(--ink);border-radius:14px;padding:2px 18px}
.ph-banner small{font-weight:800}
.pb-tag{background:var(--ink);color:#fff;border-radius:999px;padding:2px 14px;font-weight:800;font-size:.85rem}
.ph-sticker{display:grid;place-items:center;aspect-ratio:1;border-style:dashed;background:repeating-linear-gradient(135deg,var(--white) 0 14px,var(--paper) 14px 28px)}
.ph-sticker .ps{display:grid;gap:8px;justify-items:center;text-align:center}
.ph-sticker .ini{display:grid;place-items:center;width:110px;height:110px;border:3px solid var(--ink);border-radius:50%;background:var(--lav);font-family:var(--display);font-size:3rem}
.ph-sticker small{font-weight:800;color:var(--ink-soft)}
.ring>span.av{width:clamp(96px,16vw,150px);height:clamp(96px,16vw,150px);font-size:3.2rem;border:4px solid var(--paper)}
.extra{padding:22px clamp(18px,4vw,32px);max-width:860px}
.extra h3{margin:18px 0 8px}
.rates{margin:0 0 10px;display:grid;gap:8px}
.rates>div{display:flex;justify-content:space-between;gap:12px;padding:8px 14px;border:3px solid var(--ink);border-radius:12px;background:var(--paper);font-weight:800}
.rates dd{margin:0;color:var(--hot)}
.menu{max-height:min(70vh,560px);overflow-y:auto}


input{color:var(--ink)}

/* ===== Verity: Wigan to York (soft cream, wine red, subtle sparkle) ===== */
body[data-theme="verity"]{
  --ink:#3b1f2a; --ink-soft:#7b5a66; --paper:#fffaf2;
  --pink:#f6dcd8; --hot:#8c1f3d; --peach:#f8e4d0; --mint:#d3e8da; --lav:#ecdce6; --sky:#d6e6f7; --butter:#fbe8a6;
  --head-bg:#6b1730; --dots:rgba(194,150,76,.38); --bg1:#fff5e8; --bg2:#fffaf3; --bg3:#faeee2;
  --display:"Playfair Display","Georgia",serif;
}
body[data-theme="verity"] h1,body[data-theme="verity"] h2,body[data-theme="verity"] h3{font-weight:600;letter-spacing:0}
body[data-theme="verity"] .brand{font-size:1.1rem;font-weight:600}
body[data-theme="verity"] .chapter h3,body[data-theme="verity"] .fch h3{font-family:var(--display);font-style:italic;font-size:1.7rem;letter-spacing:0}
body[data-theme="verity"] .quote{font-style:italic}

/* ===== Maeve: Gothic (black, plum, silver, candlelight) ===== */
body[data-theme="maeve"]{
  --ink:#ebe4f0; --ink-soft:#b5a9c4; --paper:#241a2e; --white:#17101e; --shadow:4px 4px 0 #000;
  --pink:#3a2142; --hot:#b66bd0; --peach:#3b2d22; --mint:#1b2b37; --lav:#2c2043; --sky:#1f2d48; --butter:#3a3321;
  --head-bg:#0b070f; --dots:rgba(240,200,120,.16); --bg1:#0f0a14; --bg2:#150e1c; --bg3:#0d0911;
  --cm-bg:#1d1427; --reveal-bg:rgba(23,16,30,.62);
  --display:"Cinzel","Palatino Linotype","Book Antiqua",serif;
}
body[data-theme="maeve"] h1,body[data-theme="maeve"] h2,body[data-theme="maeve"] h3{font-weight:700;letter-spacing:.05em}
body[data-theme="maeve"] h2{font-size:clamp(1.7rem,4vw,2.4rem)}
body[data-theme="maeve"] h3{font-size:1.2rem}
body[data-theme="maeve"] .brand{font-size:1.05rem}
body[data-theme="maeve"] .chapter h3,body[data-theme="maeve"] .fch h3{font-family:var(--display);font-size:1.5rem;letter-spacing:.04em}
body[data-theme="maeve"] .quote{background:var(--lav);color:var(--ink)}
body[data-theme="maeve"] .stats dt{color:#f1c76e}
body[data-theme="maeve"] nav a[aria-current="page"],body[data-theme="maeve"] .btn.go,body[data-theme="maeve"] .track,body[data-theme="maeve"] .cfbadge,body[data-theme="maeve"] .lockpill{text-shadow:none;color:#fff}
body[data-theme="maeve"] .banner,body[data-theme="maeve"] .sticker{border-color:#8f86a3}
body[data-theme="maeve"] .callout,body[data-theme="maeve"] .kink,body[data-theme="maeve"] .hook,body[data-theme="maeve"] .ap-card,body[data-theme="maeve"] .nlist li{border-color:#8f86a3}

/* ===== Maleficus: Neon bar (electric pink, teal, blacklight purple) ===== */
body[data-theme="maleficus"]{
  --ink:#f5ecff; --ink-soft:#c3b0e6; --paper:#241044; --white:#190b30; --shadow:0 0 16px rgba(255,46,151,.55);
  --pink:#4a1450; --hot:#ff3da1; --peach:#46173f; --mint:#0d3f47; --lav:#2f1a5c; --sky:#12305a; --butter:#3b2260;
  --head-bg:#0d0620; --dots:rgba(47,242,224,.18); --bg1:#12072a; --bg2:#1a0a38; --bg3:#0d0620;
  --cm-bg:#21103f; --reveal-bg:rgba(25,11,48,.62);
  --display:"Bungee","Impact","Arial Black",sans-serif;
}
body[data-theme="maleficus"] h1,body[data-theme="maleficus"] h2,body[data-theme="maleficus"] h3{font-weight:400;letter-spacing:.02em;text-shadow:0 0 12px rgba(255,61,161,.55)}
body[data-theme="maleficus"] h2{font-size:clamp(1.6rem,3.6vw,2.3rem)}
body[data-theme="maleficus"] h3{font-size:1.15rem}
body[data-theme="maleficus"] .brand{font-size:.95rem;text-shadow:0 0 10px rgba(47,242,224,.6)}
body[data-theme="maleficus"] .chapter h3,body[data-theme="maleficus"] .fch h3{font-family:var(--display);font-size:1.3rem}
body[data-theme="maleficus"] .stats dt{color:#2ff2e0}
body[data-theme="maleficus"] .quote{background:var(--pink);color:var(--ink)}
body[data-theme="maleficus"] .banner,body[data-theme="maleficus"] .sticker,body[data-theme="maleficus"] .callout,body[data-theme="maleficus"] .kink,body[data-theme="maleficus"] .hook,body[data-theme="maleficus"] .ap-card,body[data-theme="maleficus"] .nlist li,body[data-theme="maleficus"] .chapter{border-color:#2ff2e0}
body[data-theme="maleficus"] .kink,body[data-theme="maleficus"] .ap-card,body[data-theme="maleficus"] .callout{box-shadow:0 0 14px rgba(47,242,224,.35)}
body[data-theme="maleficus"] nav a[aria-current="page"],body[data-theme="maleficus"] .btn.go,body[data-theme="maleficus"] .track,body[data-theme="maleficus"] .cfbadge,body[data-theme="maleficus"] .lockpill{text-shadow:none;color:#fff}
body[data-theme="maleficus"] .tag{color:var(--ink);background:var(--lav)}

/* ===== John: Old-money wine cellar (burgundy, oak, candlelit gold) ===== */
body[data-theme="john"]{
  --ink:#f3e7d3; --ink-soft:#c2ad8f; --paper:#2b1b17; --white:#1d1113; --shadow:4px 4px 0 #000;
  --pink:#4b1a26; --hot:#d9a441; --peach:#4a3521; --mint:#1f3a33; --lav:#3b2330; --sky:#1d3340; --butter:#4a3d1d;
  --head-bg:#0f0708; --dots:rgba(217,164,65,.16); --bg1:#170b0c; --bg2:#21120f; --bg3:#140a0a;
  --cm-bg:#26151a; --reveal-bg:rgba(29,17,19,.62);
  --display:"Cormorant Garamond","Palatino Linotype","Book Antiqua",serif;
}
body[data-theme="john"] h1,body[data-theme="john"] h2,body[data-theme="john"] h3{font-weight:700;letter-spacing:.01em}
body[data-theme="john"] h2{font-size:clamp(2rem,4.6vw,3rem)}
body[data-theme="john"] h3{font-size:1.5rem}
body[data-theme="john"] .brand{font-size:1.3rem}
body[data-theme="john"] .chapter h3,body[data-theme="john"] .fch h3{font-family:var(--display);font-style:italic;font-size:2rem;letter-spacing:0}
body[data-theme="john"] .quote{background:#4b1a26;color:var(--ink);font-style:italic;font-size:1.5rem}
body[data-theme="john"] .banner,body[data-theme="john"] .sticker,body[data-theme="john"] .callout,body[data-theme="john"] .kink,body[data-theme="john"] .hook,body[data-theme="john"] .ap-card,body[data-theme="john"] .nlist li,body[data-theme="john"] .chapter{border-color:#9a7430}
body[data-theme="john"] nav a[aria-current="page"],body[data-theme="john"] .btn.go,body[data-theme="john"] .track,body[data-theme="john"] .cfbadge,body[data-theme="john"] .lockpill{text-shadow:none;color:#1d1113}

/* ===== Serah: Queen bee (honey yellow, black, rhinestone sparkle) ===== */
body[data-theme="serah"]{
  --ink:#141414; --ink-soft:#5f5230; --paper:#fff9e2;
  --pink:#ffdf80; --hot:#a6720a; --peach:#ffd5c4; --mint:#fbe8b0; --lav:#ffd9ec; --sky:#ffe6a8; --butter:#ffe98f;
  --head-bg:#111111; --dots:rgba(255,255,255,.95); --bg1:#ffe28a; --bg2:#fff1b5; --bg3:#ffd96a;
  --display:"Abril Fatface","Playfair Display",Georgia,serif;
}
body[data-theme="serah"] h1,body[data-theme="serah"] h2,body[data-theme="serah"] h3{font-weight:400;letter-spacing:.01em}
body[data-theme="serah"] .brand{font-size:1.15rem}
body[data-theme="serah"] .chapter h3,body[data-theme="serah"] .fch h3{font-family:var(--display);font-size:1.8rem}
body[data-theme="serah"] .quote{background:#141414;color:#ffd34f}
body[data-theme="serah"] .tagcard,body[data-theme="serah"] .callout{box-shadow:var(--shadow)}
body[data-theme="serah"] .track,body[data-theme="serah"] .btn.go{background:#141414;color:#ffd34f;text-shadow:none}
body[data-theme="serah"] nav a[aria-current="page"]{background:#ffd34f;color:#141414;text-shadow:none}

/* ===== Sylvie: Pastel honey (honey yellow, rose, lilac) ===== */
body[data-theme="sylvie"]{
  --ink:#4a3548; --ink-soft:#8a6f88; --paper:#fffaf0;
  --pink:#fbd6e0; --hot:#c4607e; --peach:#fbe0d4; --mint:#d9f0e6; --lav:#e3d7f6; --sky:#d6e8f8; --butter:#fde79a;
  --head-bg:#7a5a8c; --dots:rgba(214,150,170,.34); --bg1:#fff4cf; --bg2:#fff9ee; --bg3:#fbe9f1;
  --display:"Fraunces","Georgia",serif;
}
body[data-theme="sylvie"] h1,body[data-theme="sylvie"] h2,body[data-theme="sylvie"] h3{font-weight:600;letter-spacing:0}
body[data-theme="sylvie"] .brand{font-size:1.1rem}
body[data-theme="sylvie"] .chapter h3,body[data-theme="sylvie"] .fch h3{font-family:var(--display);font-size:1.6rem}

/* ===== Riku: After-hours club (black, hot red, UV violet) ===== */
body[data-theme="riku"]{
  --ink:#f4edf8; --ink-soft:#b9a6d4; --paper:#1f1129; --white:#130a1b; --shadow:4px 4px 0 #000;
  --pink:#4b1222; --hot:#ff3b4e; --peach:#47152b; --mint:#12303a; --lav:#2e1a54; --sky:#172b47; --butter:#3b1a4e;
  --head-bg:#07040b; --dots:rgba(150,90,255,.26); --bg1:#0b0612; --bg2:#12091d; --bg3:#080410;
  --cm-bg:#1a0f26; --reveal-bg:rgba(19,10,27,.62);
  --display:"Anton","Impact","Arial Narrow",sans-serif;
}
body[data-theme="riku"] h1,body[data-theme="riku"] h2,body[data-theme="riku"] h3{font-weight:400;letter-spacing:.05em;text-transform:uppercase}
body[data-theme="riku"] h2{font-size:clamp(2rem,4.6vw,3rem)}
body[data-theme="riku"] h3{font-size:1.45rem}
body[data-theme="riku"] .brand{font-size:1.2rem;letter-spacing:.05em}
body[data-theme="riku"] .chapter h3,body[data-theme="riku"] .fch h3{font-family:var(--display);font-size:1.9rem;letter-spacing:.04em}
body[data-theme="riku"] .stats dt{color:#ff6b7a}
body[data-theme="riku"] .quote{background:#4b1222;color:var(--ink)}
body[data-theme="riku"] .banner,body[data-theme="riku"] .sticker,body[data-theme="riku"] .callout,body[data-theme="riku"] .kink,body[data-theme="riku"] .hook,body[data-theme="riku"] .ap-card,body[data-theme="riku"] .nlist li,body[data-theme="riku"] .chapter{border-color:#8a5cf0}
body[data-theme="riku"] .callout,body[data-theme="riku"] .kink,body[data-theme="riku"] .ap-card{box-shadow:0 0 14px rgba(138,92,240,.4)}
body[data-theme="riku"] nav a[aria-current="page"],body[data-theme="riku"] .btn.go,body[data-theme="riku"] .track,body[data-theme="riku"] .cfbadge,body[data-theme="riku"] .lockpill{text-shadow:none;color:#fff}

/* ===== Maya: Ocean depths (deep teal, sea-glass, white foam) ===== */
body[data-theme="maya"]{
  --ink:#0c3a42; --ink-soft:#4b7a80; --paper:#f4fbfa;
  --pink:#cdeee6; --hot:#0f6b75; --peach:#f3dfc9; --mint:#bfe6dd; --lav:#d3e8ee; --sky:#c3e2f0; --butter:#f1e4c8;
  --head-bg:#0b3d46; --dots:rgba(15,107,117,.18); --bg1:#def5f2; --bg2:#f6fcfb; --bg3:#d3ecee;
  --display:"DM Serif Display","Georgia",serif;
}
body[data-theme="maya"] h1,body[data-theme="maya"] h2,body[data-theme="maya"] h3{font-weight:400;letter-spacing:0}
body[data-theme="maya"] .brand{font-size:1.15rem}
body[data-theme="maya"] .chapter h3,body[data-theme="maya"] .fch h3{font-family:var(--display);font-size:1.8rem}
body[data-theme="maya"] .quote{font-style:italic}

/* flowing story layout (everyone except Snow's tracklist) */
.flow{max-width:820px;padding:26px clamp(18px,4vw,40px) 18px}
.fch+.fch{margin-top:24px;padding-top:22px;border-top:2px dashed rgba(128,128,128,.4)}
.fch h3{font-family:"Caveat","Bradley Hand",cursive;font-weight:700;font-size:2.3rem;letter-spacing:0;margin:0 0 10px;line-height:1}
body[data-theme="verity"] .fch:first-child p:first-of-type::first-letter,
body[data-theme="john"] .fch:first-child p:first-of-type::first-letter{float:left;font-family:var(--display);font-size:3.9em;line-height:.8;padding:.06em .1em 0 0;color:var(--hot)}

/* Bonnie: cottagecore, from her gallery (foliage greens, cream, dusty rose, brown thread) */
body[data-theme="bonnie"]{
  --ink:#3d3226; --ink-soft:#7a6a55; --paper:#fbf6ea;
  --pink:#f3d9d4; --hot:#5f7f3f; --peach:#f4e1c8; --mint:#dbe7cc; --lav:#e6ddea; --sky:#d8e6ea; --butter:#f6edc9;
  --head-bg:#4a3b2a; --dots:rgba(95,127,63,.2); --bg1:#f6efdc; --bg2:#fcf8ee; --bg3:#efe8d6;
  --display:"Young Serif","Georgia",serif;
}
body[data-theme="bonnie"] h1,body[data-theme="bonnie"] h2,body[data-theme="bonnie"] h3{font-weight:400;letter-spacing:0}
body[data-theme="bonnie"] .brand{font-size:1.1rem}
body[data-theme="bonnie"] .chapter h3,body[data-theme="bonnie"] .fch h3{font-family:var(--display);font-size:1.6rem}
body[data-theme="bonnie"] .quote{font-style:italic}

/* ===== Landing page ===== */
body[data-theme="home"]{
  --ink:#1f2233; --ink-soft:#5a5f7a; --paper:#f6f6fb; --hot:#5b5bd6;
  --head-bg:#1f2233; --dots:rgba(91,91,214,.14); --bg1:#eceffc; --bg2:#fbfbfe; --bg3:#e8ebf8;
  --display:"DM Serif Display","Georgia",serif;
}
.landing{padding:34px 0 30px}
.l-head{text-align:center;max-width:640px;margin:0 auto 30px}
.kicker{display:inline-block;margin:0 0 10px;padding:2px 14px;border:3px solid var(--ink);border-radius:999px;background:var(--white);font-weight:800;font-size:.85rem}
.l-head h1{font-size:clamp(2.4rem,7vw,4rem);margin-bottom:10px}
.l-head p{color:var(--ink-soft);font-weight:600;margin:0}
.lc{display:block;text-decoration:none;border:3px solid var(--a,var(--ink));border-radius:var(--r);background:var(--white);box-shadow:5px 5px 0 var(--ink);overflow:hidden;transition:transform .15s,box-shadow .15s;height:100%}
a.lc:hover,a.lc:focus-visible{transform:translate(-2px,-2px);box-shadow:8px 8px 0 var(--ink)}
.lc-img{background:var(--bgc,#ddd);aspect-ratio:4/3;display:grid;place-items:center;overflow:hidden;border-bottom:3px solid var(--a,var(--ink))}
.lc-img img{width:100%;height:100%}
.lc-img img.photo{object-fit:cover;object-position:50% 25%}
.lc-img img.cut{object-fit:contain;padding:10px}
.lc-ini{display:grid;place-items:center;width:96px;height:96px;border-radius:50%;background:rgba(255,255,255,.9);color:#222;font-family:var(--display);font-size:2.4rem;border:3px solid var(--a)}
.lc-body{padding:14px 18px 18px}
.lc-body h2,.lc-body h3{margin:0 0 4px;font-size:1.5rem}
.lc-body p{margin:0 0 10px;color:var(--ink-soft);font-weight:600;font-size:.95rem}
.sw{display:flex;gap:6px;margin-bottom:12px}
.sw i{width:26px;height:26px;border-radius:50%;border:2px solid var(--ink);display:block}
.lc-go{display:inline-block;padding:4px 16px;border:3px solid var(--ink);border-radius:999px;font-weight:800;background:var(--a,var(--hot));color:#fff;text-shadow:1px 1px 0 var(--ink)}
.lc-go.off{background:var(--paper);color:var(--ink-soft);text-shadow:none}
.lc.soon{opacity:.75}
.lc-badge{display:inline-block;margin-bottom:8px;padding:0 12px;border:2px solid var(--ink);border-radius:999px;background:var(--butter,#fff1bd);font-weight:800;font-size:.8rem}
.lc.featured{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);margin-bottom:26px;height:auto}
.lc.featured .lc-img{aspect-ratio:auto;min-height:240px;border-bottom:0;border-right:3px solid var(--a)}
.lc.featured .lc-body{align-self:center;padding:22px 26px}
.lc.featured h2{font-size:clamp(2rem,4.5vw,2.8rem)}
.lc-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:22px}
@media (max-width:760px){.lc.featured{grid-template-columns:1fr}.lc.featured .lc-img{border-right:0;border-bottom:3px solid var(--a);aspect-ratio:1584/672;min-height:0}}
.lc-grid .lc-img{aspect-ratio:1/1}
.lc-grid .lc-img img.photo{object-position:50% 20%}

.mention{color:#1f2233}

.soon-h{margin:44px 0 18px;font-size:clamp(1.8rem,4vw,2.4rem)}
.lc.soon .lc-img img{filter:grayscale(.35)}
