:root{
  --ink:#080808;
  --paper:#fff;
  --off:#f1f0ec;
  --soft:#e5e4df;
  --muted:#657786;
  --line:rgba(8,8,8,.28);
  --strong:rgba(8,8,8,.78);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,Arial,sans-serif;background:var(--paper);color:var(--ink)}
body{overflow:hidden}
button,a{font:inherit}
button{color:inherit}
a{color:inherit}
#opennsfw-app,.site-shell{position:fixed;inset:0}
.site-shell{overflow:hidden}
.stage{height:100dvh;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;scroll-behavior:smooth;overscroll-behavior-y:contain}
.chapter{position:relative;height:100dvh;min-height:100dvh;max-height:100dvh;overflow:hidden;scroll-snap-align:start;scroll-snap-stop:always;padding:clamp(22px,3.2vh,40px) clamp(20px,2.8vw,52px)}
.chapter:nth-child(even){background:var(--off)}
.eyebrow{font-size:.66rem;font-weight:900;letter-spacing:.18em;text-transform:uppercase}
h1,h2,h3{margin:0;font-family:"Arial Black",Arial,sans-serif;letter-spacing:-.055em}

/* ---------- shared controls/cards ---------- */
.action-box{display:flex;align-items:center;justify-content:center;min-height:38px;padding:6px 10px;border:1px solid var(--ink);background:var(--paper);color:var(--ink);text-decoration:none;text-align:center;font-size:.68rem;font-weight:900;line-height:1;cursor:pointer}
.action-box:hover,.action-box:focus-visible{background:var(--ink);color:var(--paper)}
.action-box.primary{border-left:12px solid #3f3f3c}
.action-box.inverse{border-color:#fff;background:#080808;color:#fff}
.action-box.inverse:hover{background:#fff;color:#080808}
.action-box.paid{background:#080808;color:#fff}
.placeholder-action{background:#ecebe7;color:#5d5d5d;cursor:default}
.placeholder-action:hover{background:#ecebe7;color:#5d5d5d}
.x-mark{font-family:Arial,sans-serif;font-size:16px;font-weight:700;line-height:1}
.archive-page{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:10px;background:var(--off)}
.archive-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}
.archive-head h2{font-size:clamp(2.8rem,4.4vw,5rem);line-height:.82}
.heading-link{text-decoration:none}
.card-grid{display:grid;gap:9px;min-height:0;overflow:visible}
.archive-card{min-width:0;min-height:0;border:1px solid var(--strong);background:#fff;overflow:hidden}
.card-media{display:grid;place-items:center;min-width:0;min-height:0;background:var(--soft);overflow:hidden;text-decoration:none}
.card-media>img,.card-media>.x-avatar-slot{width:100%;height:100%}
.card-media img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.card-body{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;min-height:0;padding:8px;overflow:hidden}
.card-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;min-width:0}
.profile-name-stack{display:flex;flex-direction:column;gap:3px;min-width:0}
.card-name{color:var(--ink);text-decoration:none;font-size:.76rem;font-weight:900;line-height:1.08;overflow-wrap:anywhere}
.card-handle{display:block;color:var(--muted);font-size:.5rem;font-weight:700;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.card-meta{margin-top:4px;color:#666;font-size:.57rem}
.x-mini{display:grid;place-items:center;width:32px;height:32px;border:1.5px solid var(--ink);border-radius:50%;text-decoration:none;flex:0 0 auto}
.x-mini .x-mark{font-size:18px}
.card-bio{display:block;min-width:0;min-height:0;height:auto;margin:6px 0 0;color:#202327;font-size:12px;font-weight:500;line-height:1.2;overflow:hidden;overflow-wrap:anywhere}
.card-bio.is-empty,.card-bio:empty{display:none}
.card-bio a{color:#168eea;text-decoration:none;font-weight:650}
.card-bio a:hover{text-decoration:underline}
.card-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding-top:6px;align-self:end}
.card-action-grid .action-box{height:36px;min-height:0;padding:2px 5px 4px;font-size:clamp(.60rem,.68vw,.76rem);line-height:1}
.card-action-grid>:last-child:nth-child(odd){grid-column:1/-1}
.many-actions .card-action-grid .action-box{height:28px;font-size:clamp(.50rem,.56vw,.62rem)}
.profile-action-grid{grid-template-columns:1fr}
.profile-action-grid .profile-link{grid-column:1/-1}
.initials,.avatar-initials{font-family:"Arial Black",Arial,sans-serif;font-size:2rem;color:#222}
.x-avatar-slot{display:grid;place-items:center;width:100%;height:100%;min-width:0;min-height:0;background:var(--soft);overflow:hidden}
.x-avatar-slot img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.pager{display:flex;align-items:center;justify-content:center;gap:8px;min-height:34px}
.pager button{width:38px;height:34px;border:1px solid var(--ink);background:#fff;font-weight:900;cursor:pointer}
.pager button:disabled{opacity:.35}
.pager span{font-size:.68rem;font-weight:900}
.jumped{animation:jumpPulse .7s ease}
@keyframes jumpPulse{0%,100%{transform:none}40%{transform:scale(1.015)}60%{transform:translateX(-2px)}80%{transform:translateX(2px)}}

/* ---------- page 1 ---------- */
.home{padding:0;background:#fff}
.home-topbar{position:absolute;z-index:5;inset:0 0 auto;height:62px;display:flex;align-items:center;justify-content:flex-end;padding:10px 22px;border:0;background:transparent}
.brand-static{display:none}
.brand-static img{width:42px;height:42px;object-fit:contain}
.brand-static strong{display:block;font-family:"Arial Black",Arial,sans-serif;font-size:1rem}
.brand-static small{display:block;margin-top:3px;color:#666;font-size:.57rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.home-actions{display:flex;gap:8px}.home-actions .light{display:none}
.top-link{display:flex;align-items:center;justify-content:center;min-height:38px;padding:8px 13px;border:1px solid var(--ink);border-radius:999px;text-decoration:none;font-size:.72rem;font-weight:900}
.top-link.dark{background:#080808;color:#fff}
.home-grid{height:100dvh;display:grid;grid-template-columns:1fr 1fr;align-items:start;column-gap:4vw;width:100%;max-width:none;margin:0;padding:32px 5vw 24px}
.home-copy{justify-self:start;width:min(100%,660px)}
.home-copy h1{font-size:clamp(9.4rem,8vw,10.8rem);line-height:.76}
.home-copy p{max-width:660px;margin:24px 0 0;font-size:clamp(1.35rem,1.45vw,1.75rem);font-weight:700}
.home-pack-links,.home-terms-links{display:flex;align-items:center;gap:14px;margin-top:30px;font-size:clamp(1.05rem,1.18vw,1.4rem);font-weight:900}
.home-terms-links{margin-top:34px}
.home-pack-links button,.home-terms-links button{border:0;background:none;padding:0;text-decoration:underline;text-underline-offset:3px;font-weight:900;cursor:pointer}
.home-logo{display:grid;place-items:start end;padding-top:0}
.home-logo img{width:min(54vw,560px);max-height:82vh;object-fit:contain}
.home-scroll-cue{position:absolute;left:50%;bottom:13px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:3px;border:0;background:transparent;padding:6px 12px;color:#171717;font-size:.66rem;font-weight:900;letter-spacing:.14em;cursor:pointer}
.home-scroll-cue svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* ---------- SFX page ---------- */
.sfx-chapter{padding:0;background:#f7f6f2}
.sfx-title{display:none}
.sfx-halves{height:100dvh;display:grid;grid-template-columns:1fr 1fr;background:#f7f6f2}
.pack-card{display:grid;grid-template-rows:auto minmax(0,1fr) auto auto auto;align-items:center;justify-items:center;gap:10px;min-width:0;min-height:0;padding:clamp(44px,7vh,78px) clamp(22px,3vw,48px) clamp(20px,3vh,30px);overflow:hidden}
.free-pack-card{background:#f7f6f2;color:#171717}
.paid-pack-card{grid-template-rows:auto minmax(0,1fr) auto auto;background:#ecebe6;color:#171717;border-left:1px solid #171717}
.pack-kicker{font-family:"Arial Black",Arial,sans-serif;font-size:clamp(2.45rem,3.1vw,3.55rem);font-weight:900;line-height:.9;letter-spacing:-.04em}
.pack-logo-box{display:grid;place-items:center;width:min(100%,760px);height:100%;min-height:120px;max-height:38vh;margin:0;overflow:hidden}
.pack-logo-box img{display:block;width:auto;height:auto;max-width:86%;max-height:100%;object-fit:contain;object-position:center}
.free-pack-card .pack-logo-box img{max-width:min(70%,420px);max-height:100%}
.paid-pack-card .pack-logo-box img{max-width:min(92%,620px);max-height:100%}
.pack-copy-link{width:min(100%,760px);margin:0;padding:0;border:0;background:transparent;color:inherit;text-align:center;text-decoration:underline;text-underline-offset:4px;font-size:clamp(.88rem,1vw,1.04rem);line-height:1.25;cursor:pointer}
.pack-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;width:min(100%,760px)}
.pack-action-grid .action-box{height:clamp(58px,8vh,88px);background:#ecebe6;color:#171717;border-color:#555;font-size:clamp(.78rem,.92vw,.98rem)}
.section-divider{width:min(100%,760px);border-top:1px solid currentColor;opacity:.45;margin:2px 0}
.support-grid{width:min(100%,760px);display:grid;grid-template-columns:1fr}
.support-box{display:flex;align-items:center;justify-content:center;gap:10px;min-height:clamp(56px,7.5vh,78px);border:2px solid #555;background:#ecebe6;color:#171717;text-decoration:none}
.support-box svg{width:30px;height:30px}.support-box strong,.support-box small{display:block}.support-box small{font-size:.57rem;letter-spacing:.08em;text-transform:uppercase}
.paid-origin{margin:0 0 4px;text-align:center;font-size:clamp(.86rem,1.05vw,1.08rem);font-weight:900;letter-spacing:.12em}
.paid-actions{display:flex;flex-direction:column;gap:10px;width:min(100%,760px)}
.action-box.wet-x-action{gap:16px;height:clamp(62px,8.5vh,88px);background:#ecebe6;color:#171717;border:2px solid #555;font-size:clamp(.82rem,.95vw,1rem)}
.wet-x-action .x-mark{font-size:34px}
.action-box.other-paid-action{height:clamp(48px,6.5vh,70px);background:#ecebe6;color:#171717;border:2px solid #555}
.action-box.wet-x-action:hover,.action-box.other-paid-action:hover{background:#171717;color:#fff}

/* ---------- complete voice pack ---------- */
.voice-bulk{display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;background:#fff}
.voice-bulk-header h2{font-size:clamp(2.8rem,4.2vw,4.8rem);line-height:.82}
.voice-bulk-frame{display:grid;grid-template-columns:minmax(0,59%) minmax(0,41%);min-height:0;border:1px solid var(--strong);background:#fff}
.voice-collage{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:repeat(5,minmax(0,1fr));min-width:0;min-height:0;border-right:1px solid var(--strong);background:var(--off)}
.voice-collage button{position:relative;min-width:0;min-height:0;border:0;border-right:1px solid rgba(255,255,255,.4);border-bottom:1px solid rgba(255,255,255,.4);padding:0;background:#111;overflow:hidden;cursor:pointer}
.voice-collage img,.voice-collage .x-avatar-slot{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.voice-collage span{position:absolute;inset:auto 0 0;z-index:3;padding:15px 4px 4px;background:linear-gradient(transparent,rgba(0,0,0,.84));color:#fff;font-size:.42rem;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.voice-collage-feature{box-shadow:inset 0 0 0 5px #080808;z-index:2}
.voice-collage-feature::after{content:"LATEST";position:absolute;top:5px;left:5px;z-index:4;padding:3px 5px;background:#080808;color:#fff;font-size:.38rem;font-weight:900;letter-spacing:.08em}
.voice-bulk-right{display:flex;flex-direction:column;justify-content:center;gap:10px;min-width:0;min-height:0;padding:clamp(12px,1.3vw,22px) clamp(14px,1.5vw,26px);background:#f7f6f2;overflow:hidden}
.bulk-terms-heading{display:block;width:max-content;margin:0 0 8px;padding:0 2px 4px;border:0;border-bottom:4px solid #242424;background:transparent;font-family:"Arial Black",Arial,sans-serif;font-size:clamp(1.9rem,2.2vw,2.8rem);font-weight:900;line-height:.88;letter-spacing:-.04em;text-align:left;cursor:pointer}
.voice-warning{width:100%;padding:10px 14px;border:2px solid #444;background:#e9e8e3;text-align:left;cursor:pointer}
.voice-warning strong,.voice-warning span,.voice-warning b{display:block;font-family:"Arial Black",Arial,sans-serif;font-weight:900;line-height:1.12}
.voice-warning strong{font-size:clamp(.56rem,.62vw,.72rem)}.voice-warning span{margin-top:3px;font-size:clamp(.5rem,.55vw,.64rem)}
.voice-warning b{margin-top:8px;padding-top:7px;border-top:1px solid rgba(23,23,23,.28);font-size:clamp(.53rem,.58vw,.67rem)}
.bulk-panel{min-width:0}
.bulk-panel h3{margin:0 0 12px;font-size:clamp(2.2rem,3vw,3.8rem);line-height:.87}
.bulk-primary,.bulk-mirrors{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.bulk-mirrors{margin-top:9px}
.bulk-download-action{display:flex;flex-direction:column;justify-content:center;min-height:96px;padding:10px 16px;border:3px solid #454543;border-left-width:18px;background:#e9e8e3;text-decoration:none}
.bulk-download-action strong{font-family:"Arial Black",Arial,sans-serif;font-size:clamp(2.5rem,3.2vw,4rem);line-height:.82}.bulk-download-action small{margin-top:8px;font-size:.58rem;font-weight:900;letter-spacing:.12em}
.bulk-mirror-action{display:flex;align-items:center;justify-content:center;min-height:38px;border:3px solid #555;background:#e9e8e3;text-decoration:none;font-size:.75rem;font-weight:900}

/* ---------- archive grids ---------- */
.voice-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));padding-top:18px}
.partner-grid{grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}
.contributor-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr))}
.paid-grid{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr))}
.voice-card,.partner-card,.contributor-card{display:grid;grid-template-columns:38% 62%}
.partner-card{grid-template-columns:42% 58%}
.filter-row{display:flex;gap:6px}.filter{min-width:42px;height:36px;border:1px solid var(--ink);background:#fff;font-weight:900;cursor:pointer}.filter.active{background:#080808;color:#fff}

/* Featured #1/#2/#3 */
.featured-duo{position:relative;grid-column:span 2;display:grid;grid-template-columns:1fr 1fr;min-width:0;min-height:0;border:3px solid #171717;background:#fff;overflow:visible}
.featured-panel{display:grid;grid-template-columns:38% 62%;min-width:0;min-height:0;overflow:hidden}
.featured-panel+.featured-panel{border-left:2px solid #171717}
.featured-pack-panel{grid-template-columns:48% 52%}
.featured-media{display:block;min-width:0;min-height:0;background:var(--soft);overflow:hidden;text-decoration:none}
.featured-media img{display:block;width:100%;height:100%;object-fit:cover}
.featured-chisa{position:relative;border:3px solid #171717;overflow:visible}
.latest-update{position:absolute;z-index:10;top:-22px;padding:4px 9px;background:#fff;font-size:.58rem;font-weight:900;letter-spacing:.08em;white-space:nowrap}
.latest-update-vox,.latest-update-chisa{left:8px}
.featured-pack-type{margin-top:2px}
.featured-placeholder-actions .action-box{
  min-height:0;
  height:auto;
  padding:8px 10px;
  align-self:start;
}
.featured-purchase-grid{grid-template-columns:1fr}.featured-purchase-grid .purchase-action{grid-column:1/-1;height:40px;gap:9px}.featured-purchase-grid svg{width:20px;height:20px}
.featured-pack-bio{font-size:12px;font-weight:500;line-height:1.2}

/* Partner note */
.partner-note{display:block;padding:8px 11px;border:1px solid var(--ink);background:#fff;text-decoration:none;font-size:.68rem;line-height:1.35}
#partner-demos{grid-template-rows:auto auto minmax(0,1fr) auto}

/* Paid packs: preserve artwork aspect ratio, never crop */
.paid-card{display:grid;grid-template-rows:minmax(0,1fr) auto}
.paid-media{display:grid;place-items:center;min-width:0;min-height:0;padding:18px;background:var(--soft);overflow:hidden}
.paid-media>img{position:static;display:block;width:100%;height:100%;min-width:0;min-height:0;object-fit:contain;object-position:center}
.paid-media>.x-avatar-slot{display:grid;place-items:center;width:100%;height:100%;min-width:0;min-height:0;background:transparent;overflow:hidden}
.paid-media>.x-avatar-slot>img{position:static;display:block;width:100%;height:100%;min-width:0;min-height:0;object-fit:contain;object-position:center}
.paid-body{display:flex;flex-direction:column;padding:8px}
.paid-body .action-box.full{margin-top:8px;height:38px}

/* ---------- rail / modal ---------- */
.rail{position:fixed;z-index:40;right:12px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:7px;padding:8px 7px;border:1px solid var(--line);background:rgba(255,255,255,.92)}
.rail button{width:8px;height:8px;border:0;border-radius:999px;background:#aaa;padding:0;cursor:pointer}.rail button.active{height:25px;background:#080808}
.terms-modal[hidden]{display:none}.terms-modal{position:fixed;z-index:1000;inset:0;display:grid;place-items:center;padding:18px}.modal-backdrop{position:absolute;inset:0;border:0;background:rgba(0,0,0,.78)}
.modal-dialog{position:relative;width:min(1120px,100%);height:min(90svh,850px);display:grid;grid-template-rows:auto 1fr auto;background:#fff;border:1px solid #080808}.modal-dialog header{display:flex;align-items:center;justify-content:space-between;padding:12px 15px;border-bottom:1px solid var(--line)}.modal-dialog h2{font-size:1.8rem}.modal-dialog header button{width:38px;height:38px;border:0;background:none;font-size:1.8rem}.modal-dialog iframe{width:100%;height:100%;border:0}.modal-dialog>a{padding:11px 15px;background:#080808;color:#fff;text-align:center;text-decoration:none;font-weight:900}.modal-open{overflow:hidden}

/* ---------- compact desktop ---------- */
@media(max-height:760px) and (min-width:901px){
  .chapter{padding:16px 30px}.home{padding:0}.archive-page{gap:7px}.archive-head h2{font-size:2.9rem}.card-body{padding:6px}.card-name{font-size:.7rem}.card-handle{font-size:.44rem}.card-action-grid{gap:4px;padding-top:4px}.card-action-grid .action-box,.featured-placeholder-actions .action-box{
  height:auto;
  padding:7px 9px;
}.many-actions .card-action-grid .action-box{height:23px;font-size:.43rem}
  .pack-card{gap:6px;padding:28px 24px 14px}.pack-kicker{font-size:2.35rem}.pack-logo-box{min-height:120px;max-height:42vh}.pack-copy-link{font-size:.76rem}.pack-action-grid .action-box{height:52px}.support-box{min-height:48px}.wet-x-action{height:54px;font-size:.76rem}.other-paid-action{height:42px;font-size:.65rem}
  .voice-bulk{gap:6px}.voice-bulk-header h2{font-size:3rem}.voice-bulk-right{gap:6px;padding:7px 14px}.bulk-terms-heading{margin-bottom:4px;font-size:1.7rem;border-bottom-width:3px}.voice-warning{padding:6px 10px}.voice-warning strong{font-size:.54rem}.voice-warning span{font-size:.48rem}.voice-warning b{margin-top:4px;padding-top:4px;font-size:.5rem}.bulk-panel h3{margin-bottom:7px;font-size:2.2rem}.bulk-download-action{min-height:62px;padding:6px 12px}.bulk-download-action strong{font-size:2.2rem}.bulk-download-action small{margin-top:4px;font-size:.5rem}.bulk-mirror-action{min-height:28px;font-size:.65rem}
  .featured-pack-bio{font-size:9px}.featured-purchase-grid .purchase-action{height:30px}.latest-update{top:-18px;font-size:.5rem}
}

/* ---------- tablet/mobile: reflow instead of scrunch ---------- */
@media(max-width:900px){
  .brand-static{display:flex}.home-topbar{height:70px;align-items:center;justify-content:space-between;padding:0 11px;border-bottom:1px solid var(--line);background:#fff}.home{padding-top:76px}.home-actions{margin-left:auto}
  body{overflow:auto}.site-shell,#opennsfw-app{position:static}.stage{height:auto;overflow:visible;scroll-snap-type:none}.chapter{height:auto;min-height:auto;max-height:none;overflow:visible;padding:28px 18px}.rail{display:none}
  .home{min-height:100svh}.home-grid{height:auto;grid-template-columns:1fr;gap:18px;padding:26px 0 48px}.home-logo{order:-1;justify-self:center}.home-logo img{width:min(52vw,240px)}.home-copy{justify-self:start;width:min(100%,660px)}.home-copy h1{font-size:clamp(4rem,16vw,6rem)}.home-scroll-cue{position:relative;left:auto;bottom:auto;transform:none;margin:8px auto 0}.brand-static small{display:none}
  .sfx-halves{height:auto;grid-template-columns:1fr}.pack-card{min-height:70svh;padding:42px 24px 28px}.paid-pack-card{border-left:0;border-top:1px solid #171717}.pack-logo-box{height:clamp(150px,32svh,240px);min-height:150px;max-height:none}.free-pack-card .pack-logo-box img{max-width:min(72vw,320px)}.paid-pack-card .pack-logo-box img{max-width:min(90vw,500px)}.pack-action-grid{grid-template-columns:1fr}.pack-action-grid .action-box{height:54px}.wet-x-action{height:58px}.other-paid-action{height:48px}
  .voice-bulk{display:block}.voice-bulk-header{margin-bottom:12px}.voice-bulk-frame{grid-template-columns:1fr;border:0}.voice-collage{grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:auto;border:1px solid var(--strong);border-right:1px solid var(--strong)}.voice-collage button{aspect-ratio:1}.voice-bulk-right{margin-top:12px;border:1px solid var(--strong);overflow:visible}.bulk-primary,.bulk-mirrors{grid-template-columns:1fr 1fr}
  .archive-page{display:block}.archive-head{align-items:flex-start;flex-direction:column}.card-grid{margin-top:15px;overflow:visible}.voice-grid,.partner-grid,.contributor-grid,.paid-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto;padding-top:18px}.archive-card{min-height:220px}.featured-duo{grid-column:span 2}.featured-duo .featured-panel{min-height:220px}.featured-chisa{min-height:220px}.pager{margin-top:12px}
}
@media(max-width:560px){
  .home-actions .light{display:none}.top-link{font-size:.64rem}.home-copy h1{font-size:4.2rem}.home-pack-links,.home-terms-links{font-size:.74rem}
  .voice-collage{grid-template-columns:repeat(3,minmax(0,1fr))}.bulk-primary,.bulk-mirrors{grid-template-columns:1fr}.voice-warning span,.voice-warning b{font-size:.58rem}.bulk-panel h3{font-size:2.4rem}
  .voice-grid,.partner-grid,.contributor-grid,.paid-grid{grid-template-columns:1fr}.featured-duo{grid-column:span 1;grid-template-columns:1fr}.featured-panel+.featured-panel{border-left:0;border-top:2px solid #171717}.voice-card,.partner-card,.contributor-card,.featured-panel{grid-template-columns:42% 58%}.featured-pack-panel{grid-template-columns:44% 56%}.archive-card,.featured-panel{min-height:240px}.modal-dialog{height:95svh}
}


/* v105 — size corrections. Text size intentionally unchanged. */

/* Home mark: keep it substantial, but never massive. */
.home-logo{
  display:grid;
  place-items:center;
  min-width:0;
  min-height:0;
}
.home-logo img{
  width:min(54vw,560px);
  max-width:76%;
  max-height:50vh;
  height:auto;
  object-fit:contain;
}

/* SFX FREE / PAID logos: fit the reserved media gap, preserve full artwork. */
.sfx-halves .pack-logo-box{
  width:min(78%,460px);
  height:clamp(150px,24vh,260px);
  margin:12px auto;
  display:grid;
  place-items:center;
  overflow:visible;
}
.sfx-halves .pack-logo-box img{
  display:block;
  width:auto;
  height:auto;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  object-position:center;
}

/* Voice Pack right column: boxes hug their content.
   IMPORTANT: font sizes are unchanged. */
.voice-bulk-right{
  justify-content:center;
  gap:14px;
}
.voice-bulk-right .voice-warning{
  min-height:0;
  height:auto;
  padding:12px 14px;
}
.voice-bulk-right .voice-warning strong,
.voice-bulk-right .voice-warning span,
.voice-bulk-right .voice-warning b{
  line-height:1.14;
}
.voice-bulk-right .bulk-panel{
  height:auto;
  min-height:0;
}
.voice-bulk-right .bulk-primary{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.voice-bulk-right .bulk-download-action{
  min-height:0;
  height:auto;
  padding:12px 18px;
}
.voice-bulk-right .bulk-mirrors{
  margin-top:10px;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.voice-bulk-right .bulk-mirror-action{
  min-height:0;
  height:auto;
  padding:10px 14px;
}

/* Desktop: make the right column content compact vertically without touching text size. */
@media(min-width:901px){
  .voice-bulk-right{
    padding-top:18px;
    padding-bottom:18px;
  }
  .voice-bulk-right .bulk-panel h3{
    margin-bottom:12px;
  }
}

/* Mobile: logos scale down with viewport rather than overflowing. */
@media(max-width:900px){
  .home-logo img{
    width:min(72vw,420px);
    max-width:82%;
    max-height:34vh;
  }
  .sfx-halves .pack-logo-box{
    width:min(86%,420px);
    height:clamp(140px,24vh,250px);
  }
}


/* =========================================================
   v107 — compact controls + transform-only hover enlargement
   ========================================================= */

/* #1/#3 featured download boxes hug the text.
   Font-size intentionally inherited unchanged. */
.featured-placeholder-actions{
  align-self:end;
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
}
.featured-placeholder-actions .action-box{
  min-height:0;
  height:auto;
  padding:8px 10px;
  line-height:1;
  align-items:center;
  justify-content:center;
}

/* Normal Voice Actor action boxes remain compact as well. */
.voice-card .card-action-grid{
  align-self:end;
}
.voice-card .card-action-grid .action-box{
  min-height:0;
  height:auto;
  padding:7px 9px;
  line-height:1;
}

/* SFX media area: full logo visible, no crop. */
.sfx-halves .pack-logo-box{
  width:min(78%,460px);
  height:clamp(150px,24vh,260px);
  margin:12px auto;
  display:grid;
  place-items:center;
  overflow:visible;
}
.sfx-halves .pack-logo-box img{
  display:block;
  width:auto;
  height:auto;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  object-position:center;
}

/* Desktop mouse hover only. These transforms DO NOT change layout size. */
@media (hover:hover) and (pointer:fine){

  /* Voice Packs collage: strongest zoom, like the older site. */
  .voice-collage button{
    transition:transform .16s ease, box-shadow .16s ease, filter .16s ease;
    transform-origin:center;
  }
  .voice-collage button:hover,
  .voice-collage button:focus-visible{
    transform:scale(1.11);
    z-index:20;
    box-shadow:0 10px 26px rgba(0,0,0,.28);
  }

  /* Main card media gets a lighter zoom. */
  .voice-card .card-media,
  .contributor-card .card-media,
  .paid-card .paid-media,
  .featured-media,
  .featured-chisa .card-media{
    transition:transform .16s ease, box-shadow .16s ease;
    transform-origin:center;
    position:relative;
    z-index:1;
  }
  .voice-card .card-media:hover,
  .contributor-card .card-media:hover,
  .paid-card .paid-media:hover,
  .featured-media:hover,
  .featured-chisa .card-media:hover{
    transform:scale(1.045);
    z-index:12;
    box-shadow:0 8px 22px rgba(0,0,0,.22);
  }

  /* Image inside the media may enlarge slightly too. */
  .voice-card .card-media img,
  .contributor-card .card-media img,
  .paid-card .paid-media img,
  .featured-media img,
  .featured-chisa .card-media img{
    transition:transform .16s ease;
  }
  .voice-card .card-media:hover img,
  .contributor-card .card-media:hover img,
  .paid-card .paid-media:hover img,
  .featured-media:hover img,
  .featured-chisa .card-media:hover img{
    transform:scale(1.025);
  }

  /* Download/action links: visual grow only, no reflow. */
  .action-box,
  .bulk-download-action,
  .bulk-mirror-action{
    transition:transform .13s ease, box-shadow .13s ease, background-color .13s ease, color .13s ease;
    transform-origin:center;
  }
  .action-box:hover,
  .action-box:focus-visible,
  .bulk-download-action:hover,
  .bulk-download-action:focus-visible,
  .bulk-mirror-action:hover,
  .bulk-mirror-action:focus-visible{
    transform:translateY(-1px) scale(1.045);
    z-index:15;
    box-shadow:0 5px 14px rgba(0,0,0,.20);
  }
}

/* Touch/mobile: no fake hover scaling. */
@media (hover:none), (pointer:coarse){
  .voice-collage button,
  .voice-card .card-media,
  .contributor-card .card-media,
  .paid-card .paid-media,
  .featured-media,
  .featured-chisa .card-media,
  .action-box,
  .bulk-download-action,
  .bulk-mirror-action{
    transform:none;
  }
}


/* =========================================================
   v108 — centered landing, contained SFX art, sponsored update,
          and two-row Voice Actor layout
   ========================================================= */

/* One shared background tone for the landing and both SFX halves. */
.home,
.sfx-chapter,
.sfx-halves,
.free-pack-card,
.paid-pack-card{
  background:#ecebe6;
}

/* Page 1: keep the established two-part identity, but make the whole hero
   a centered, middle-focused composition rather than a top/left layout. */
@media(min-width:901px){
  .home-grid{
    height:100dvh;
    width:min(1320px,92vw);
    margin:0 auto;
    padding:66px 0 46px;
    grid-template-columns:minmax(0,620px) minmax(300px,500px);
    align-items:center;
    justify-content:center;
    column-gap:clamp(28px,5vw,84px);
  }
  .home-copy{
    justify-self:end;
    width:min(100%,620px);
    text-align:center;
  }
  .home-copy p{
    margin-left:auto;
    margin-right:auto;
  }
  .home-pack-links,
  .home-terms-links{
    justify-content:center;
  }
  .home-logo{
    justify-self:start;
    place-items:center;
    padding:0;
  }
  .home-logo img{
    width:clamp(280px,28vw,470px);
    max-width:100%;
    max-height:56vh;
  }
}

/* Page 2: artwork is strictly bounded by its assigned media region. */
.sfx-halves .pack-logo-box{
  width:min(82%,560px);
  height:clamp(160px,31vh,330px);
  min-height:0;
  max-height:100%;
  margin:8px auto;
  overflow:hidden;
  align-self:center;
}
.sfx-halves .pack-logo-box img{
  display:block;
  width:auto;
  height:auto;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  object-position:center;
}
.free-pack-card .pack-logo-box img{max-width:82%;max-height:100%}
.paid-pack-card .pack-logo-box img{max-width:100%;max-height:100%}

/* Voice pack page: move existing terms/download content upward and reserve
   the lower area for the sponsored update pair. */
.voice-bulk-right{
  justify-content:flex-start;
  gap:8px;
  padding-top:12px;
  padding-bottom:12px;
}
.voice-bulk-right .voice-warning{padding:9px 12px}
.voice-bulk-right .bulk-panel h3{margin-bottom:8px}
.voice-bulk-right .bulk-download-action{padding-top:9px;padding-bottom:9px}
.voice-bulk-right .bulk-mirrors{margin-top:7px}
.voice-bulk-right .bulk-mirror-action{padding-top:8px;padding-bottom:8px}
.sponsored-update{
  margin-top:auto;
  padding-top:9px;
  border-top:1px solid var(--line);
  display:grid;
  grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);
  gap:11px;
  min-width:0;
  min-height:150px;
  max-height:230px;
  overflow:hidden;
}
.sponsored-brand-panel{
  display:grid;
  grid-template-rows:auto minmax(0,1fr);
  min-width:0;
  min-height:0;
  overflow:hidden;
}
.sponsored-update-label{
  font-family:"Arial Black",Arial,sans-serif;
  font-size:clamp(.72rem,.85vw,.92rem);
  font-weight:900;
  letter-spacing:.08em;
  line-height:1;
}
.sponsored-brand-link{
  display:grid;
  place-items:center;
  min-width:0;
  min-height:0;
  overflow:hidden;
}
.sponsored-brand-link img{
  display:block;
  width:auto;
  height:auto;
  max-width:94%;
  max-height:100%;
  object-fit:contain;
}
.sponsored-voice-card{
  display:grid;
  grid-template-columns:44% 56%;
  min-width:0;
  min-height:0;
  overflow:hidden;
  background:transparent;
  /* Deliberately no outer outline/border. */
  border:0;
}
.sponsored-voice-image{
  display:block;
  min-width:0;
  min-height:0;
  overflow:hidden;
  text-decoration:none;
}
.sponsored-voice-image img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}
.sponsored-voice-copy{
  display:grid;
  grid-template-rows:auto auto minmax(0,1fr) auto;
  gap:3px;
  min-width:0;
  min-height:0;
  padding:2px 0 0 9px;
  overflow:hidden;
}
.sponsored-voice-title{
  color:var(--ink);
  text-decoration:none;
  font-family:"Arial Black",Arial,sans-serif;
  font-size:clamp(.62rem,.76vw,.82rem);
  font-weight:900;
  line-height:1.06;
}
.sponsored-voice-type{
  color:var(--muted);
  font-size:.48rem;
  font-weight:800;
}
.sponsored-voice-copy p{
  margin:2px 0 4px;
  min-height:0;
  overflow:hidden;
  font-size:clamp(.56rem,.68vw,.72rem);
  line-height:1.18;
}
.sponsored-purchase{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:38px;
  border:2px solid var(--ink);
  background:#fff;
  color:var(--ink);
  text-decoration:none;
  font-size:clamp(.58rem,.7vw,.75rem);
  font-weight:900;
}
.sponsored-purchase svg{width:22px;height:22px}
.sponsored-purchase:hover,.sponsored-purchase:focus-visible{background:#080808;color:#fff}

/* Voice Actors: exactly two desktop rows. The first row's featured cells
   and the normal second-row cells share the same row height. */
@media(min-width:901px){
  .voice-grid{
    grid-template-columns:repeat(4,minmax(0,1fr));
    grid-template-rows:repeat(2,minmax(0,1fr));
    padding-top:18px;
  }
  .voice-grid > .archive-card,
  .voice-grid > .featured-duo{
    height:100%;
    min-height:0;
  }
  .voice-grid .voice-card,
  .voice-grid .featured-panel{
    grid-template-columns:40% 60%;
  }
  .voice-grid .featured-pack-panel{grid-template-columns:46% 54%}
  .voice-grid .card-body{
    grid-template-rows:auto minmax(72px,1fr) auto;
  }
  .voice-grid .card-bio{
    margin-top:8px;
    line-height:1.25;
  }
  .voice-grid .card-media img,
  .voice-grid .featured-media img{
    object-fit:cover;
    object-position:center;
  }
}

/* Compact desktop: keep the new sponsored strip usable instead of allowing
   it to crush the existing terms/download controls. */
@media(max-height:760px) and (min-width:901px){
  .voice-bulk-right{gap:5px;padding-top:7px;padding-bottom:7px}
  .sponsored-update{min-height:112px;max-height:142px;padding-top:5px;gap:7px}
  .sponsored-update-label{font-size:.56rem}
  .sponsored-voice-copy{padding-left:6px}
  .sponsored-voice-title{font-size:.58rem}
  .sponsored-voice-type{font-size:.4rem}
  .sponsored-voice-copy p{font-size:.48rem;line-height:1.12;margin:1px 0 2px}
  .sponsored-purchase{min-height:28px;font-size:.52rem;border-width:1px}
  .sponsored-purchase svg{width:17px;height:17px}
}

/* Tablet/mobile keeps the same shared background and reflows the sponsored
   pair instead of scrunching it. */
@media(max-width:900px){
  .home-topbar{background:#ecebe6}
  .home-grid{align-items:center;justify-items:center;text-align:center}
  .home-copy{justify-self:center;text-align:center}
  .home-copy p{margin-left:auto;margin-right:auto}
  .home-pack-links,.home-terms-links{justify-content:center}
  .sfx-halves .pack-logo-box{
    width:min(86%,420px);
    height:clamp(140px,24vh,250px);
    overflow:hidden;
  }
  .voice-bulk-right{justify-content:flex-start}
  .sponsored-update{
    margin-top:14px;
    max-height:none;
    min-height:0;
    grid-template-columns:1fr;
    overflow:visible;
  }
  .sponsored-brand-panel{min-height:180px}
  .sponsored-voice-card{min-height:220px}
}
@media(max-width:560px){
  .sponsored-voice-card{grid-template-columns:42% 58%;min-height:210px}
}

/* v108 containment hard-stop: size the replaced element to the box itself so
   intrinsic dimensions can never bleed into the controls below. */
.sfx-halves .pack-logo-box img{
  width:100%;
  height:100%;
  max-width:none;
  max-height:none;
  object-fit:contain;
  object-position:center;
}
.free-pack-card .pack-logo-box img{width:82%;height:100%}
.paid-pack-card .pack-logo-box img{width:100%;height:100%}

/* Absolute containment makes the image use the resolved media-box dimensions,
   avoiding percentage-height fallback on replaced elements inside CSS Grid. */
.sfx-halves .pack-logo-box{position:relative}
.sfx-halves .pack-logo-box img{
  position:absolute;
  inset:0;
  margin:auto;
  width:100%;
  height:100%;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
}
.free-pack-card .pack-logo-box img{left:9%;right:9%;width:82%}
.paid-pack-card .pack-logo-box img{left:0;right:0;width:100%}

/* =========================================================
   v109 — page 3 spacing/containment, archive palette inversion,
          and Chisa download-box normalization
   ========================================================= */

/* Page 3: split the difference from v108 — give the upper content a little
   more breathing room, while reserving a slightly larger sponsored area.
   All sponsored content stays inside the frame and the pack art is never cropped. */
@media(min-width:901px){
  .voice-bulk-right{
    padding-top:20px;
    padding-bottom:16px;
    gap:9px;
    overflow:hidden;
  }
  .sponsored-update{
    flex:0 1 clamp(178px,27vh,270px);
    min-height:178px;
    max-height:270px;
    padding-top:10px;
    gap:12px;
    overflow:hidden;
  }
  .sponsored-brand-link img{
    max-width:96%;
    max-height:100%;
  }
  .sponsored-voice-card{
    min-height:0;
    overflow:hidden;
  }
  .sponsored-voice-image{
    display:grid;
    place-items:center;
    background:transparent;
  }
  .sponsored-voice-image img{
    width:100%;
    height:100%;
    object-fit:contain;
    object-position:center;
  }
  .sponsored-voice-copy{
    overflow:visible;
  }
  .sponsored-voice-copy p{
    overflow:visible;
  }
}

/* Compact desktop: preserve the same balance without letting the sponsored
   strip push anything below the viewport. */
@media(max-height:760px) and (min-width:901px){
  .voice-bulk-right{
    padding-top:10px;
    padding-bottom:9px;
    gap:5px;
  }
  .sponsored-update{
    flex:0 1 clamp(124px,21vh,150px);
    min-height:124px;
    max-height:150px;
    padding-top:6px;
    gap:8px;
  }
}

/* Chisa's mirrored buttons use the same single-line treatment as the other
   first-page Voice Actor cards. */
.featured-chisa .card-action-grid .action-box{
  white-space:nowrap;
  overflow:hidden;
  padding-left:4px;
  padding-right:4px;
  font-size:clamp(.54rem,.61vw,.68rem);
}

/* Invert the archive palette shown on Voice Actors / Contributors / Pinceree:
   the page canvas is white and the card/note boxes use the former page tone. */
.chapter.archive-page{
  background:#fff;
}
.archive-page .archive-card,
.archive-page .featured-duo,
.archive-page .partner-note{
  background:var(--off);
}
.archive-page .featured-panel,
.archive-page .card-body{
  background:transparent;
}

/* Keep archive controls readable against the inverted boxes. */
.archive-page .action-box,
.archive-page .pager button,
.archive-page .filter:not(.active){
  background:#fff;
}


/* =========================================================
   v110 — mobile sponsor containment + selective archive palette rollback
   ========================================================= */

/* Restore the pre-v109 palette only on Voice Actors and Contributors.
   Pinceree Demos (and other archive pages) retain the v109 inverted palette. */
#voice-actors.chapter.archive-page,
#contributors.chapter.archive-page{
  background:var(--off);
}
#voice-actors .archive-card,
#voice-actors .featured-duo,
#contributors .archive-card{
  background:#fff;
}

/* Sponsored update: on stacked layouts the WetHotSFX logo may shrink, but
   must never grow to fill the full mobile column. */
@media(max-width:900px){
  .sponsored-update{
    align-items:start;
  }
  .sponsored-brand-panel{
    min-height:0;
  }
  .sponsored-brand-link{
    min-height:0;
    padding:10px 0 6px;
  }
  .sponsored-brand-link img{
    position:static;
    width:auto;
    height:auto;
    max-width:min(72vw,300px);
    max-height:180px;
    object-fit:contain;
    object-position:center;
  }
  .sponsored-voice-card{
    width:min(100%,560px);
    justify-self:center;
    min-height:0;
  }
  .sponsored-voice-image{
    min-height:0;
  }
  .sponsored-voice-image img{
    width:100%;
    height:100%;
    object-fit:contain;
    object-position:center;
  }
}
@media(max-width:560px){
  .sponsored-brand-link img{
    max-width:min(74vw,260px);
    max-height:155px;
  }
  .sponsored-voice-card{
    grid-template-columns:42% 58%;
    width:100%;
    min-height:0;
  }
}

/* =========================================================
   v110-final — proportional page-3 fill + 30% voice-image pullback
   ========================================================= */

/* Page 3: move the upper controls down roughly one text line, then let the
   Sponsored Update consume the remaining vertical room instead of leaving a
   dead gap. The left/right sponsored areas retain their existing ~40/60
   proportion and every image remains contained. */
@media(min-width:901px){
  .voice-bulk-right{
    padding-top:clamp(28px,3.2vh,38px);
    padding-bottom:14px;
    overflow:hidden;
  }
  .sponsored-update{
    margin-top:14px;
    flex:1 1 0;
    min-height:0;
    max-height:none;
    grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);
    align-items:stretch;
    overflow:hidden;
  }
  .sponsored-brand-panel,
  .sponsored-voice-card{
    height:100%;
    min-height:0;
  }
  .sponsored-brand-link img{
    max-width:94%;
    max-height:94%;
  }
  .sponsored-voice-image img{
    width:100%;
    height:100%;
    object-fit:contain;
  }
}

/* Short desktop windows: keep the same proportional fill, but use a smaller
   top offset so nothing is forced below the viewport. */
@media(max-height:760px) and (min-width:901px){
  .voice-bulk-right{
    padding-top:16px;
    padding-bottom:8px;
  }
  .sponsored-update{
    margin-top:8px;
    flex:1 1 0;
    min-height:0;
    max-height:none;
  }
}

/* =========================================================
   v111 — decouple Voice Actor portrait framing from Page 3 sponsor layout
   ========================================================= */

/* Voice Actor media returns to the pre-v110 cover framing. The Sponsored
   Update sizing/containment rules above remain independent and unchanged. */
.voice-grid .card-media img,
.voice-grid .featured-media img{
  object-fit:cover;
  object-position:center;
  transform:none;
}

@media (hover:hover) and (pointer:fine){
  .voice-grid .card-media:hover img,
  .voice-grid .featured-media:hover img,
  .voice-grid .featured-chisa .card-media:hover img{
    transform:scale(1.025);
  }
}

@media(max-width:900px){
  .voice-grid .card-media img,
  .voice-grid .featured-media img{
    object-fit:cover;
    object-position:center;
    transform:none;
  }
}


/* =========================================================
   v112 — sponsor card visual rebalance
   ========================================================= */
/* Keep the Page 3 sponsor strip independent from Voice Actor portrait rules.
   Give the Vox promo more horizontal room, fill its image pane like the supplied
   reference, and scale the copy to the card instead of leaving it tiny. */
@media(min-width:901px){
  .sponsored-update{
    grid-template-columns:minmax(0,.70fr) minmax(0,1.30fr);
  }
  .sponsored-voice-card{
    grid-template-columns:44% 56%;
    align-items:stretch;
  }
  .sponsored-voice-image{
    display:block;
    min-width:0;
    min-height:0;
    overflow:hidden;
  }
  .sponsored-voice-image img{
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center;
  }
  .sponsored-voice-copy{
    grid-template-rows:auto auto minmax(0,1fr) auto;
    gap:5px;
    padding:7px 0 0 12px;
    overflow:hidden;
  }
  .sponsored-voice-title{
    font-size:clamp(.92rem,1vw,1.1rem);
    line-height:1.06;
  }
  .sponsored-voice-type{
    font-size:clamp(.58rem,.66vw,.72rem);
    line-height:1.1;
  }
  .sponsored-voice-copy p{
    margin:5px 0 8px;
    overflow:visible;
    font-size:clamp(.86rem,.95vw,1rem);
    line-height:1.2;
  }
  .sponsored-purchase{
    min-height:clamp(48px,5.8vh,64px);
    gap:11px;
    border-width:2px;
    font-size:clamp(.82rem,.9vw,1rem);
  }
  .sponsored-purchase svg{
    width:clamp(28px,2vw,34px);
    height:clamp(28px,2vw,34px);
  }
}

/* Short desktop windows: preserve the same hierarchy without overflow. */
@media(max-height:760px) and (min-width:901px){
  .sponsored-voice-copy{gap:2px;padding-top:3px;padding-left:8px}
  .sponsored-voice-title{font-size:clamp(.72rem,.8vw,.86rem)}
  .sponsored-voice-type{font-size:clamp(.45rem,.52vw,.56rem)}
  .sponsored-voice-copy p{margin:2px 0 4px;font-size:clamp(.62rem,.7vw,.76rem);line-height:1.14}
  .sponsored-purchase{min-height:34px;font-size:clamp(.62rem,.7vw,.76rem);gap:7px}
  .sponsored-purchase svg{width:21px;height:21px}
}

/* Tablet/mobile: retain responsive sponsor containment and readable text. */
@media(max-width:900px){
  .sponsored-voice-copy{gap:4px;padding:6px 0 0 10px}
  .sponsored-voice-title{font-size:clamp(.82rem,2.9vw,1.15rem)}
  .sponsored-voice-type{font-size:clamp(.55rem,2.1vw,.72rem)}
  .sponsored-voice-copy p{margin:4px 0 7px;font-size:clamp(.72rem,2.65vw,1rem);line-height:1.18}
  .sponsored-purchase{min-height:44px;font-size:clamp(.76rem,2.5vw,.98rem);gap:9px}
  .sponsored-purchase svg{width:26px;height:26px}
}

/* =========================================================
   v113 — Pinceree palette parity + FULL VERSION visibility
   ========================================================= */

/* Match Pinceree Demos to the archive section directly above it:
   off-white section canvas with white cards/note. */
#partner-demos.chapter.archive-page{
  background:var(--off);
}
#partner-demos .archive-card,
#partner-demos .partner-note{
  background:#fff;
}

/* The archive palette override must not wash out paid actions.
   Keep FULL VERSION as the intended black button with white text. */
#partner-demos .action-box.paid{
  background:#080808;
  color:#fff;
}
#partner-demos .action-box.paid:hover,
#partner-demos .action-box.paid:focus-visible{
  background:#fff;
  color:#080808;
}

/* =========================================================
   v114 — archive hover inversion repair
   ========================================================= */
/* Archive controls were being forced back to a white background by a later
   palette rule, so hover/focus changed only the text. Restore the intended
   whole-button inversion after those palette overrides. */
.archive-page .action-box:not(.paid):not(.placeholder-action):hover,
.archive-page .action-box:not(.paid):not(.placeholder-action):focus-visible{
  background:#080808;
  color:#fff;
}

/* Primary download buttons keep their left accent bar black at all times.
   Only the button background/text invert on hover. */
.archive-page .action-box.primary,
.archive-page .action-box.primary:hover,
.archive-page .action-box.primary:focus-visible{
  border-left-color:#080808;
}

/* FULL VERSION remains the inverse action: black normally, white on hover. */
#partner-demos .action-box.paid{
  background:#080808;
  color:#fff;
}
#partner-demos .action-box.paid:hover,
#partner-demos .action-box.paid:focus-visible{
  background:#fff;
  color:#080808;
}

/* =========================================================
   v115 — Page 2 row alignment + canonical Voice Actor controls
   ========================================================= */

/* Page 2: make FREE PACK and PAID PACK use the same vertical rhythm.
   The paid-side actions are promoted into the same grid rows as the free-side
   actions so headings, art, CTA rows, dividers, and bottom boxes line up. */
@media(min-width:901px){
  .sfx-halves{
    height:100dvh;
    align-items:stretch;
  }
  .sfx-halves .pack-card{
    grid-template-rows:
      clamp(48px,6vh,64px)
      minmax(0,1fr)
      clamp(22px,3vh,34px)
      clamp(60px,7.6vh,76px)
      1px
      clamp(52px,6.8vh,68px);
    gap:clamp(6px,.9vh,9px);
    padding:clamp(28px,4vh,40px) clamp(18px,2.4vw,44px) clamp(14px,2vh,20px);
    overflow:hidden;
  }
  .sfx-halves .pack-kicker{grid-row:1;align-self:center}
  .sfx-halves .pack-logo-box{
    grid-row:2;
    width:min(82%,560px);
    height:100%;
    min-height:0;
    max-height:none;
    margin:0 auto;
    align-self:stretch;
  }
  .sfx-halves .pack-copy-link{grid-row:3;align-self:center}
  .sfx-halves .pack-action-grid{grid-row:4;align-self:stretch}
  .sfx-halves .pack-action-grid .action-box{height:100%;min-height:0}
  .free-pack-card > .section-divider{grid-row:5;align-self:center}
  .free-pack-card > .support-grid{grid-row:6;align-self:stretch}
  .free-pack-card .support-box{height:100%;min-height:0}

  .paid-pack-card{
    grid-template-rows:
      clamp(48px,6vh,64px)
      minmax(0,1fr)
      clamp(22px,3vh,34px)
      clamp(60px,7.6vh,76px)
      1px
      clamp(52px,6.8vh,68px);
  }
  .paid-pack-card .paid-origin{grid-row:3;align-self:center;margin:0}
  .paid-pack-card .paid-actions{display:contents}
  .paid-pack-card .wet-x-action{
    grid-row:4;
    width:min(100%,760px);
    height:100%;
    min-height:0;
    justify-self:center;
    align-self:stretch;
  }
  .paid-pack-card .paid-actions > .section-divider{
    grid-row:5;
    width:min(100%,760px);
    justify-self:center;
    align-self:center;
  }
  .paid-pack-card .other-paid-action{
    grid-row:6;
    width:min(100%,760px);
    height:100%;
    min-height:0;
    justify-self:center;
    align-self:stretch;
  }
}

/* Very short desktop viewports still keep the bottom row fully inside Page 2. */
@media(max-height:760px) and (min-width:901px){
  .sfx-halves .pack-card,
  .sfx-halves .paid-pack-card{
    grid-template-rows:40px minmax(88px,1fr) 20px 48px 1px 42px;
    gap:5px;
    padding:18px 20px 12px;
  }
  .sfx-halves .pack-kicker{font-size:2rem}
  .sfx-halves .pack-copy-link{font-size:.72rem}
  .sfx-halves .paid-origin{font-size:.72rem}
}

/* Voice Actors: Chisa's download controls are the canonical geometry.
   Apply the same one-line MEGA treatment and button sizing to every Voice
   Actor card while preserving the black left accent on primary WAV buttons. */
#voice-actors .voice-card .card-action-grid,
#voice-actors .featured-profile-panel .card-action-grid{
  gap:5px;
  padding-top:6px;
}
#voice-actors .voice-card .card-action-grid .action-box,
#voice-actors .featured-profile-panel .card-action-grid .action-box{
  height:36px;
  min-height:36px;
  padding:2px 4px 4px;
  font-size:clamp(.54rem,.61vw,.68rem);
  line-height:1;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:clip;
}
#voice-actors .voice-card.many-actions .card-action-grid .action-box{
  height:36px;
  min-height:36px;
  font-size:clamp(.54rem,.61vw,.68rem);
}

/* Keep the full-bleed Page 2 immune to later generic chapter padding rules.
   This prevents the aligned bottom row from being pushed below the viewport. */
#sfx-pack.chapter.sfx-chapter{padding:0}


/* =========================================================
   v116 — Page 2 visual rebalance
   ========================================================= */

/* Desktop: make FREE PACK / PAID PACK the dominant labels (+65% from v115),
   while pulling both hero marks back so the page reads as a balanced pair
   instead of two oversized images. Bottom rows remain inside the viewport. */
@media(min-width:901px){
  .sfx-halves .pack-card,
  .sfx-halves .paid-pack-card{
    grid-template-rows:
      clamp(78px,9.6vh,104px)
      minmax(0,1fr)
      clamp(22px,3vh,34px)
      clamp(60px,7.6vh,76px)
      1px
      clamp(52px,6.8vh,68px);
  }

  .sfx-halves .pack-kicker{
    font-size:clamp(4.04rem,5.12vw,5.86rem);
    line-height:.88;
  }

  .sfx-halves .pack-logo-box{
    width:min(60%,470px);
    height:78%;
    max-height:400px;
    align-self:center;
  }
  .free-pack-card .pack-logo-box img{
    left:5%;
    right:5%;
    width:90%;
    height:90%;
  }
  .paid-pack-card .pack-logo-box img{
    left:0;
    right:0;
    width:100%;
    height:92%;
  }
}

/* Short desktop viewports: preserve the same +65% heading intent while
   keeping the lower CTA/support rows fully visible. */
@media(max-height:760px) and (min-width:901px){
  .sfx-halves .pack-card,
  .sfx-halves .paid-pack-card{
    grid-template-rows:58px minmax(70px,1fr) 18px 44px 1px 38px;
    gap:4px;
    padding:12px 20px 9px;
  }
  .sfx-halves .pack-kicker{
    font-size:3.30rem;
    line-height:.88;
  }
  .sfx-halves .pack-logo-box{
    width:min(56%,390px);
    height:80%;
    max-height:265px;
  }
  .sfx-halves .pack-copy-link,
  .sfx-halves .paid-origin{font-size:.66rem}
}

/* =========================================================
   v117 — Page 3 sponsored promo readability
   ========================================================= */
/* Keep this promo independent from the Voice Actor cards. Give the promo
   more of the sponsored row, enlarge its copy substantially, and force the
   requested two-line title while keeping every line visible. */
@media(min-width:901px){
  .sponsored-update{
    grid-template-columns:minmax(0,.50fr) minmax(0,1.50fr);
  }
  .sponsored-voice-card{
    grid-template-columns:35% 65%;
  }
  .sponsored-voice-title{
    display:block;
    font-size:clamp(1.60rem,1.75vw,1.95rem);
    line-height:1.00;
  }
  .sponsored-voice-title span{display:block}
  .sponsored-voice-type{
    font-size:clamp(.88rem,1vw,1.05rem);
    line-height:1.08;
  }
  .sponsored-voice-copy p{
    margin:5px 0 8px;
    font-size:clamp(1.06rem,1.14vw,1.20rem);
    line-height:1.16;
  }
  .sponsored-purchase{
    min-height:clamp(50px,6vh,62px);
    font-size:clamp(.94rem,1.05vw,1.12rem);
    gap:12px;
  }
  .sponsored-purchase svg{
    width:clamp(28px,2vw,34px);
    height:clamp(28px,2vw,34px);
  }
}

/* Short desktop windows: keep the hierarchy readable without forcing any
   element outside the Page 3 frame. */
@media(max-height:760px) and (min-width:901px){
  .sponsored-update{grid-template-columns:minmax(0,.48fr) minmax(0,1.52fr)}
  .sponsored-voice-card{grid-template-columns:34% 66%}
  .sponsored-voice-copy{gap:2px;padding-top:3px;padding-left:8px}
  .sponsored-voice-title{font-size:clamp(1.18rem,1.35vw,1.42rem);line-height:1.00}
  .sponsored-voice-type{font-size:clamp(.70rem,.8vw,.84rem)}
  .sponsored-voice-copy p{margin:3px 0 5px;font-size:clamp(.90rem,1.02vw,1.08rem);line-height:1.10}
  .sponsored-purchase{min-height:38px;font-size:clamp(.82rem,.92vw,.98rem);gap:8px}
  .sponsored-purchase svg{width:24px;height:24px}
}

/* Mobile/tablet: preserve the existing contained card and increase the copy
   only as far as the stacked layout can safely support. */
@media(max-width:900px){
  .sponsored-voice-title{font-size:clamp(1.28rem,5.2vw,1.70rem);line-height:1.02}
  .sponsored-voice-type{font-size:clamp(.78rem,3.3vw,1rem)}
  .sponsored-voice-copy p{margin:5px 0 8px;font-size:clamp(1rem,4vw,1.28rem);line-height:1.15}
  .sponsored-purchase{min-height:48px;font-size:clamp(.92rem,3.5vw,1.12rem)}
}

/* =========================================================
   v122 — full-width sponsored Vox promo
   ========================================================= */
/* Remove the old split Wet Hot SFX brand column and let the Vox promo own
   the entire sponsored row. The black badge mirrors the existing LATEST tag. */
.sponsored-update.sponsored-full-width{
  display:block;
  width:100%;
  min-width:0;
}
.sponsored-full-width .sponsored-voice-card{
  width:100%;
  height:100%;
  grid-template-columns:minmax(0,42%) minmax(0,58%);
  align-items:stretch;
}
.sponsored-full-width .sponsored-voice-media{
  position:relative;
  min-width:0;
  min-height:0;
  overflow:hidden;
}
.sponsored-full-width .sponsored-voice-image{
  width:100%;
  height:100%;
}
.sponsored-full-width .sponsored-voice-image img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}
.sponsor-badge{
  position:absolute;
  z-index:2;
  top:0;
  left:0;
  display:inline-flex;
  align-items:center;
  min-height:24px;
  padding:5px 10px 4px;
  background:#000;
  color:#fff;
  font-family:"Arial Black",Arial,sans-serif;
  font-size:clamp(.62rem,.72vw,.78rem);
  font-weight:900;
  letter-spacing:.04em;
  line-height:1;
  pointer-events:none;
}

@media(min-width:901px){
  .sponsored-update.sponsored-full-width{
    grid-template-columns:none;
  }
  .sponsored-full-width .sponsored-voice-card{
    grid-template-columns:minmax(0,42%) minmax(0,58%);
  }
  .sponsored-full-width .sponsored-voice-copy{
    padding-left:18px;
  }
}

@media(max-height:760px) and (min-width:901px){
  .sponsored-full-width .sponsored-voice-card{
    grid-template-columns:minmax(0,38%) minmax(0,62%);
  }
  .sponsor-badge{
    min-height:20px;
    padding:4px 8px 3px;
    font-size:.58rem;
  }
}

@media(max-width:900px){
  .sponsored-update.sponsored-full-width{
    display:block;
    width:100%;
  }
  .sponsored-full-width .sponsored-voice-card{
    width:100%;
    max-width:none;
    grid-template-columns:42% 58%;
  }
  .sponsor-badge{
    min-height:22px;
    padding:4px 8px;
    font-size:clamp(.58rem,2.5vw,.72rem);
  }
}

@media(max-width:560px){
  .sponsored-full-width .sponsored-voice-card{
    grid-template-columns:1fr;
  }
  .sponsored-full-width .sponsored-voice-media{
    aspect-ratio:1.4/1;
  }
  .sponsored-full-width .sponsored-voice-copy{
    padding:10px 0 0;
  }
}
