:root{
  color-scheme: light;
  --bg:#f4f4f4; --surface:#ffffff;
  --text:#1a1a1a; --muted:#5f5f5f; --faint:#9a9a9a;
  --sale:#e60012; --sale-dark:#b8000e;
  --link:#0066c0;
  --line:#e2e2e2; --line2:#c9c9c9;
  --gold:#b8860b;
  --good:#0a7d4f;
  --radius:4px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth; overscroll-behavior:none; overscroll-behavior-x:none}
body{
  margin:0; background:var(--bg); color:var(--text);
  overscroll-behavior:none; overscroll-behavior-x:none;
  font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN","Hiragino Sans","Noto Sans JP","Yu Gothic UI",sans-serif;
  line-height:1.6; font-size:15px;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--link)}
img{max-width:100%}
button{font-family:inherit}
::selection{background:rgba(230,0,18,.18)}

/* ---------- header ---------- */
header.site{
  position:sticky; top:0; z-index:40;
  background:#fff;
  border-bottom:1px solid var(--line2);
}
header.site .inner{
  max-width:1200px; margin:0 auto; padding:7px 12px;
  display:flex; align-items:center; gap:12px;
}
.brand{display:flex; align-items:center; gap:8px; text-decoration:none; color:var(--text); flex:none; background:none; border:0; cursor:pointer; padding:0; text-align:left}
.brand img{width:34px; height:34px; border-radius:4px}
.brand .name{font-weight:800; font-size:19px; letter-spacing:.01em; line-height:1.1; color:var(--text)}
.brand .name em{font-style:normal; color:var(--sale)}
.brand .sub{font-size:9px; color:var(--faint); letter-spacing:.22em; margin-top:1px}
.mock-tag{
  flex:none; font-size:11px; font-weight:700; color:var(--sale-dark);
  background:#fff; border:1px solid var(--sale);
  border-radius:3px; padding:2px 8px; white-space:nowrap;
}
.tabbar{border-top:1px solid var(--line); background:#fff}
nav.main{max-width:1200px; margin:0 auto; padding:0 6px; display:flex; gap:0; overflow-x:auto; scrollbar-width:none; -webkit-overflow-scrolling:touch}
nav.main::-webkit-scrollbar{display:none}
nav.main button{
  background:none; border:0; color:#333; font-size:13.5px; font-weight:600;
  padding:9px 10px; cursor:pointer; white-space:nowrap; border-bottom:2px solid transparent; flex:none;
}
nav.main button:hover{color:var(--sale)}
nav.main button.active{color:var(--sale); border-bottom-color:var(--sale)}
nav.main .tab-cnt{font-size:10.5px; color:var(--faint); font-weight:700; margin-left:3px; font-variant-numeric:tabular-nums}
nav.main button.active .tab-cnt{color:var(--sale)}

/* ---------- layout ---------- */
.wrap{max-width:1200px; margin:0 auto; padding:14px 12px 64px}
.view{display:none}
.view.on{display:block}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto} }

/* ---------- sale strip (hero replacement) ---------- */
.sale-strip{
  background:#fff; border:1px solid var(--line); border-top:3px solid var(--sale);
  padding:8px 12px; display:flex; align-items:center;
}
.sale-strip .ss-main{font-size:13.5px; color:var(--muted)}
.sale-strip .ss-main strong{color:var(--sale); font-size:14px}
.sale-strip .ss-main b{color:var(--text); font-variant-numeric:tabular-nums}
.bottom-note{
  background:#fff; border:1px solid var(--line);
  padding:12px 14px; font-size:12.5px; color:var(--muted);
}
.bottom-note p{margin:4px 0}
.bottom-note p:first-child{margin-top:0}
.bottom-note p:last-child{margin-bottom:0}
.bottom-note strong{color:var(--text)}
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
  min-height:40px; padding:8px 16px; border-radius:4px; border:0; cursor:pointer;
  font-size:14px; font-weight:700; text-decoration:none;
}
.btn:active{opacity:.85}
.btn-cta{background:var(--sale); color:#fff}
.btn-cta:hover{background:var(--sale-dark)}
.btn-ghost{background:#fff; color:#333; border:1px solid var(--line2)}
.btn-ghost:hover{border-color:#888; color:var(--text)}
.btn-sm{min-height:32px; padding:5px 11px; font-size:12.5px}

/* ---------- sections ---------- */
section.block{margin-top:26px}
.sec-head{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:4px; background:#fff; border:1px solid var(--line); border-left:5px solid var(--sale); padding:9px 12px}
.sec-head h2{font-size:19px; margin:0; font-weight:800; line-height:1.3; letter-spacing:.01em}
.cnt-badge{background:var(--sale); color:#fff; font-size:11.5px; font-weight:800; border-radius:3px; padding:2px 8px; font-variant-numeric:tabular-nums; white-space:nowrap}
.sec-head .more{margin-left:auto; font-size:12.5px; font-weight:600; text-decoration:none; cursor:pointer; background:none; border:0; color:var(--link); padding:2px}
.sec-sub{color:var(--muted); font-size:12.5px; margin:6px 0 10px}
.page-head{margin-bottom:4px}
.page-head h1{font-size:22px; margin:0 0 4px; font-weight:800; border-left:5px solid var(--sale); padding-left:10px}
.page-head h1 .cnt{color:var(--sale); font-size:.7em; margin-left:8px; white-space:nowrap}
.page-head p{color:var(--muted); margin:0; font-size:13.5px}
.crumbs{font-size:12px; color:var(--faint); margin-bottom:10px}
.crumbs button{background:none; border:0; color:var(--muted); cursor:pointer; font-size:12px; padding:0}
.crumbs button:hover{color:var(--text)}

/* ---------- toolbar ---------- */
.toolbar{
  position:sticky; top:88px; z-index:30;
  background:#fff;
  border:1px solid var(--line);
  padding:8px 10px; margin:12px 0 14px;
  display:flex; flex-direction:column; gap:7px;
}
.tb-row{display:flex; align-items:center; gap:5px; flex-wrap:wrap}
.tb-panel{border:1px solid var(--line); border-top:0; background:#fff; padding:8px 10px; margin:-14px 0 14px; display:flex; align-items:center; flex-wrap:wrap; gap:5px}
.tb-panel[hidden]{display:none}
.tb-toggle{white-space:nowrap}
.tb-lbl{font-size:11px; font-weight:700; color:var(--faint); margin-right:2px; flex:none}
.chip{
  border:1px solid var(--line2); background:#fff; color:#444;
  border-radius:3px; padding:4px 10px; font-size:12.5px; font-weight:600; cursor:pointer; min-height:30px;
}
.chip:hover{color:var(--text); border-color:#888}
.chip.active{background:#1a1a1a; color:#fff; border-color:#1a1a1a}
.tb-count{margin-left:auto; font-size:12px; color:var(--faint); font-variant-numeric:tabular-nums}

/* ---------- cards : minimal & dense ---------- */
.grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(172px,1fr)); gap:16px 10px}
.card{
  background:var(--surface); border:1px solid var(--line);
  overflow:hidden; display:flex; flex-direction:column; cursor:pointer;
}
.card:hover{border-color:#888}
.card .thumb{position:relative; aspect-ratio:16/10; background:#ddd; overflow:hidden}
.card .thumb svg{width:100%; height:100%; display:block}
.card .thumb img{width:100%; height:100%; object-fit:cover; display:block}
.detail-cover img{width:100%; height:100%; object-fit:cover; display:block}
.badge-off{
  position:absolute; left:0; top:0; z-index:2;
  background:var(--sale); color:#fff;
  font-weight:800; font-size:12px; padding:2px 7px;
  font-variant-numeric:tabular-nums;
}
.badge-off small{font-size:9px; font-weight:700}
.badge-vr{
  position:absolute; right:0; top:0; z-index:2;
  background:#1a1a1a; color:#fff;
  font-weight:800; font-size:10.5px; padding:2px 6px; letter-spacing:.05em;
}
.badge-new{
  position:absolute; right:0; bottom:0; z-index:2;
  background:#ffb020; color:#221a04; font-weight:800; font-size:10.5px; padding:2px 6px;
}
.badge-left{
  position:absolute; left:0; bottom:0; z-index:2;
  background:rgba(0,0,0,.78); color:#ffd88a;
  font-weight:700; font-size:10.5px; padding:2px 6px; font-variant-numeric:tabular-nums;
}
.badge-ended{
  position:absolute; left:0; top:0; z-index:2;
  background:#555; color:#fff;
  font-weight:800; font-size:12px; padding:2px 7px;
}
.detail-cover .badge-ended{font-size:15px; padding:4px 10px}
.card.ended .thumb img{filter:grayscale(.45); opacity:.8}
.price-now.ended-price{color:var(--text)}
.ended-note{font-size:11px; font-weight:700; color:#666}
.countdown.ended{color:#555}
.card .cbody{padding:7px 8px 9px; display:flex; flex-direction:column; gap:3px; flex:1}
.card .ttl{
  font-weight:600; font-size:13px; line-height:1.45; margin:0; color:#222;
  display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:2.9em;
}
.card .actress{font-size:11.5px; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.price-row{display:flex; align-items:baseline; gap:6px; flex-wrap:wrap; margin-top:auto}
.price-now{font-size:17px; font-weight:800; color:var(--sale); font-variant-numeric:tabular-nums}
.price-now small{font-size:11px; font-weight:700}
.price-was{font-size:11.5px; color:var(--faint); text-decoration:line-through; font-variant-numeric:tabular-nums}
.price-stream{font-size:11px; color:var(--muted)}
.drop-note{font-size:12px; color:var(--good); font-weight:700; font-variant-numeric:tabular-nums}
.score{
  font-size:11px; font-weight:800; border-radius:3px; padding:2px 8px;
  background:#eef7f2; color:var(--good); border:1px solid #bfe3d2;
  font-variant-numeric:tabular-nums;
}
.score.mid{background:#fdf6e3; color:var(--gold); border-color:#ecd9a0}
.empty{
  border:1px dashed var(--line2); padding:30px 18px;
  text-align:center; color:var(--muted); font-size:14px; grid-column:1/-1; background:#fff;
}

/* ---------- detail ---------- */
.detail-top{display:grid; grid-template-columns:minmax(0,5fr) minmax(0,6fr); gap:20px; margin-top:6px}
.detail-cover{overflow:hidden; border:1px solid var(--line); position:relative; aspect-ratio:16/11; background:#ddd}
.detail-cover svg{width:100%; height:100%; display:block}
.detail-cover .badge-off{font-size:15px; padding:4px 10px}
.samples{display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin-top:6px}
.samples .smp{overflow:hidden; border:1px solid var(--line); aspect-ratio:16/10; background:#ddd}
.samples .smp svg{width:100%; height:100%; display:block}
.detail-info h1{font-size:clamp(18px,3.2vw,23px); line-height:1.5; margin:0 0 8px; font-weight:800}
.campaign-line{display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:10px}
.campaign-name{background:#fdeef0; border:1px solid #f3b7be; color:var(--sale-dark); font-size:12.5px; font-weight:700; border-radius:3px; padding:2px 9px}
.countdown{font-size:13px; font-weight:800; color:var(--sale-dark); font-variant-numeric:tabular-nums}
.price-box{background:#fff; border:1px solid var(--line); padding:14px 16px; margin-bottom:12px}
.price-box .price-now{font-size:30px}
.price-box .row2{display:flex; gap:14px; flex-wrap:wrap; margin-top:8px; font-size:13px; color:var(--muted)}
.info-table{width:100%; border-collapse:collapse; font-size:13.5px; margin-top:4px; background:#fff}
.info-table th,.info-table td{padding:7px 10px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top}
.info-table th{color:var(--faint); font-weight:700; width:96px; white-space:nowrap}
.info-table td{color:var(--text)}
.info-table td .lnk{color:var(--link); cursor:pointer; background:none; border:0; padding:0; font-size:13.5px; text-decoration:underline; text-underline-offset:3px}
.history-box{background:#fff; border:1px solid var(--line); padding:14px 16px; margin-top:16px}
.history-box h3{margin:0 0 4px; font-size:15px}
.history-box .hsub{color:var(--muted); font-size:12.5px; margin:0 0 10px}
.history-list{margin:10px 0 0; padding:0; list-style:none; font-size:13.5px}
.history-list li{padding:6px 0; border-top:1px solid var(--line); display:flex; gap:10px; flex-wrap:wrap; font-variant-numeric:tabular-nums}
.history-list .hd{color:var(--muted); flex:none}
.history-list .hp b{color:var(--text)}
.history-list .hoff{color:var(--sale); font-weight:800}
.pr-note{font-size:11.5px; color:var(--faint); margin-top:10px}

/* ---------- text pages ---------- */
.prose{max-width:760px}
.prose h2{font-size:17px; margin:26px 0 8px; border-bottom:1px solid var(--line2); padding-bottom:5px}
.prose h2:first-child{margin-top:6px}
.prose p,.prose li{color:#333; font-size:14.5px}
.prose ul{padding-left:20px}
.steps{display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:10px; margin:14px 0}
.step{background:#fff; border:1px solid var(--line); padding:14px}
.step .n{display:inline-block; background:var(--sale); color:#fff; font-weight:800; font-size:12px; border-radius:999px; padding:1px 10px; margin-bottom:8px}
.step h3{margin:0 0 6px; font-size:15px}
.step p{margin:0; color:var(--muted); font-size:13px}
details.faq{background:#fff; border:1px solid var(--line); padding:4px 16px; margin-bottom:8px}
details.faq summary{cursor:pointer; font-weight:700; padding:11px 0; font-size:14.5px; list-style:none}
details.faq summary::-webkit-details-marker{display:none}
details.faq summary::after{content:"＋"; float:right; color:var(--sale); font-weight:800}
details.faq[open ] summary::after{content:"－"}
details.faq p{color:var(--muted); font-size:13.5px; margin:0 0 14px}
.notice{background:#fdf0f0; border:1px solid #f0caca; padding:14px 16px; color:#7a2b2b; font-size:13.5px; margin-top:20px}

/* ---------- footer ---------- */
footer.site{border-top:1px solid var(--line2); background:#fff; color:var(--muted); font-size:12.5px; margin-top:24px}
footer.site .inner{max-width:1200px; margin:0 auto; padding:22px 12px 30px}
footer.site .fnav{display:flex; gap:8px 18px; flex-wrap:wrap; margin-bottom:14px}
footer.site .fnav button{background:none; border:0; color:#444; cursor:pointer; font-size:13px; padding:0}
footer.site .fnav button:hover{color:var(--sale)}
footer.site .cols{display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:14px; margin-bottom:16px}
footer.site h4{color:var(--text); font-size:12px; margin:0 0 8px; letter-spacing:.06em}
footer.site .cols ul{list-style:none; margin:0; padding:0}
footer.site .cols li{margin:4px 0}
footer.site .cols button{background:none; border:0; color:var(--muted); cursor:pointer; font-size:12.5px; padding:0; text-align:left}
footer.site .cols button:hover{color:var(--link)}
footer.site p{margin:6px 0}

/* ---------- age gate ---------- */
#agegate{position:fixed; inset:0; background:rgba(0,0,0,.78); z-index:100; display:flex; align-items:center; justify-content:center; padding:16px}
#agegate .box{background:#fff; border-radius:8px; max-width:440px; width:100%; padding:30px 26px; text-align:center}
#agegate .box img{width:64px; height:64px; border-radius:6px; margin-bottom:12px}
#agegate .r18{display:inline-block; border:2px solid var(--sale); color:var(--sale); font-weight:800; border-radius:4px; padding:2px 14px; margin-bottom:12px; letter-spacing:.1em}
#agegate h2{margin:0 0 8px; font-size:23px}
#agegate p{color:var(--muted); font-size:14px; margin:0 0 6px}
#agegate .fine{font-size:12px; color:var(--faint)}
#agegate .btn{width:100%; margin-top:10px}
.btn-no{background:transparent; color:var(--muted); border:1px solid var(--line2)}
body.gated{overflow:hidden}
body.gated .blurred{filter:blur(16px); pointer-events:none; user-select:none}


/* ---------- トップ拡張セクション ---------- */
.pr-slot{margin-top:26px;border:1px dashed var(--line2);background:#fafafa;color:var(--faint);font-size:11.5px;letter-spacing:.1em;text-align:center;padding:12px 8px}
.play-duo{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.play-card{background:#fff;border:1px solid var(--line);padding:14px 12px 12px;display:flex;flex-direction:column;align-items:center;text-align:center}
.play-card .ill{width:100%;max-width:148px;height:106px;display:block}
.play-card .ill svg{width:100%;height:100%;display:block}
.play-card h3{font-size:15px;margin:10px 0 4px;line-height:1.3;font-weight:800}
.play-card p{font-size:12.5px;color:#444;line-height:1.55;margin:0 0 12px}
.play-card .btn{margin-top:auto;width:100%}
@media (max-width:480px){
  .play-duo{gap:8px}
  .play-card{padding:10px 8px 10px}
  .play-card .ill{height:82px}
  .play-card h3{font-size:13.5px;margin-top:8px}
  .play-card p{font-size:11.5px;line-height:1.5;margin-bottom:10px}
  .play-card .btn{min-height:38px;padding:7px 8px;font-size:13px}
}
.gacha-box{background:#fff;border:1px solid var(--line);padding:14px;margin-top:10px}
.gacha-box .gacha-panel-title{font-size:14px;font-weight:800;margin:0 0 10px}
.gacha-result{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
.gacha-result .gthumb{position:relative;border:1px solid var(--line);aspect-ratio:16/10;background:#ddd;overflow:hidden}
.gacha-result .gthumb img{width:100%;height:100%;object-fit:cover;display:block}
.gacha-result h3{font-size:16px;margin:0 0 6px;line-height:1.5}
@media (max-width:640px){ .gacha-result{grid-template-columns:1fr} }
.rank-list{list-style:none;margin:0;padding:0;background:#fff;border:1px solid var(--line)}
.rank-item{display:flex;gap:10px;align-items:center;padding:9px 10px;border-bottom:1px solid var(--line);cursor:pointer}
.rank-item:last-child{border-bottom:0}
.rank-item:hover{background:#fafafa}
.rank-num{flex:none;width:26px;text-align:center;font-size:16px;font-weight:800;color:var(--sale);font-variant-numeric:tabular-nums}
.rank-thumb{flex:none;width:96px;aspect-ratio:16/10;overflow:hidden;background:#ddd;border:1px solid var(--line)}
.rank-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.rank-body{flex:1;min-width:0}
.rank-ttl{font-size:13px;font-weight:600;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rank-meta{font-size:11.5px;color:var(--muted)}
.rank-drop{flex:none;text-align:right;font-variant-numeric:tabular-nums}
.rank-drop .d1{font-size:15px;font-weight:800;color:var(--sale)}
.rank-drop .d2{font-size:11px;color:var(--muted)}
@media (max-width:640px){ .rank-thumb{width:72px} .rank-drop .d1{font-size:13px} }
.campaign-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.campaign-card{background:#fff;border:1px solid var(--line);padding:12px 14px}
.campaign-card h3{font-size:14px;margin:0 0 6px;line-height:1.45}
.campaign-card .cm{font-size:12.5px;color:var(--muted);margin:2px 0;font-variant-numeric:tabular-nums}
.campaign-card .cm b{color:var(--sale)}
.calendar-box{background:#fff;border:1px solid var(--line);padding:4px 14px}
.cal-row{display:flex;gap:12px;padding:9px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.cal-row:last-child{border-bottom:0}
.cal-day{flex:none;width:118px;font-weight:800;font-size:13.5px;font-variant-numeric:tabular-nums}
.cal-items{flex:1;min-width:200px;font-size:13px;color:#333}
.cal-items div{margin:1px 0}
.cal-items .n{color:var(--sale);font-weight:700;font-variant-numeric:tabular-nums}
.tools-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}
.tool-box{background:#fff;border:1px solid var(--line);padding:12px 14px}
.tool-box h3{font-size:14px;margin:0 0 5px}
.tool-box p{font-size:12.5px;color:var(--muted);margin:0}
.tool-box .btn{margin-top:10px}
.match-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.match-chips .chip small{color:var(--faint);font-weight:600;margin-left:3px}
.match-chips .chip.active small{color:#ccc}

/* ---------- スワイプマッチ ---------- */
.swipe-entry{background:#fff;border:1px solid var(--line);padding:18px 16px;text-align:center}
.swipe-entry-lead{font-size:14px;font-weight:700;margin:0 0 4px}
.swipe-entry-note{font-size:12.5px;color:var(--muted);margin:0 0 12px}
.swipe-start{width:100%;max-width:440px;min-height:52px;font-size:16px}
.swipe-tab-wrap{margin:12px 0 0;font-size:12.5px}
.swipe-modal{position:fixed;inset:0;z-index:90;background:#fff;display:flex;flex-direction:column}
.swipe-modal[hidden]{display:none}
.swipe-modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line2);flex:none;background:#fff}
.swipe-modal-title{font-size:16px;font-weight:800;margin:0}
.swipe-close{flex:none;min-height:40px;padding:6px 14px;border:1px solid var(--line2);background:#fff;border-radius:4px;font-size:14px;font-weight:700;cursor:pointer;color:#333}
.swipe-close:active{opacity:.8}
.swipe-modal-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:14px 12px 32px}
body.swipe-open{overflow:hidden}
.swipe-box{max-width:480px;margin:0 auto;touch-action:pan-y;overscroll-behavior:none;overscroll-behavior-x:none}
.swipe-top{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums;margin-bottom:10px;max-width:440px;margin-left:auto;margin-right:auto}
.swipe-top #swipe-likes{color:var(--sale)}
.swipe-stage{position:relative;max-width:440px;margin:0 auto;aspect-ratio:1/1.02;background:#ececec;border:1px solid var(--line);overflow:hidden;touch-action:none;overscroll-behavior:none;overscroll-behavior-x:none}
.swipe-card{position:absolute;inset:6px;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;background:#ececec;will-change:transform;overscroll-behavior:none}
.swipe-card:active{cursor:grabbing}
.swipe-card img{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none}
.swipe-stamp{position:absolute;top:14px;font-weight:800;font-size:20px;letter-spacing:.08em;padding:3px 12px;border:3px solid currentColor;border-radius:4px;opacity:0;pointer-events:none;background:rgba(255,255,255,.88)}
.swipe-stamp.like{left:14px;color:var(--sale);transform:rotate(-10deg)}
.swipe-stamp.pass{right:14px;color:#555;transform:rotate(10deg)}
.swipe-done{text-align:center;padding:10px 0 4px}
.swipe-done[hidden]{display:none}
.swipe-done-title{font-size:19px;font-weight:800;margin:0}
.swipe-done-sub{font-size:13px;color:var(--muted);margin:4px 0 0}
.swipe-done .btn{margin-top:16px}
.swipe-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 10px;margin-top:14px;text-align:left}
.swipe-finish{display:block;margin:12px auto 0;background:none;border:0;color:var(--sale);font-size:14px;font-weight:700;cursor:pointer;padding:8px 12px;min-height:40px}
.swipe-finish[hidden]{display:none}
.swipe-actions{display:flex;justify-content:center;gap:26px;margin-top:14px}
.swipe-btn{width:60px;height:60px;border-radius:50%;border:1px solid var(--line2);background:#fff;font-size:24px;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center;padding:0}
.swipe-btn.like{color:var(--sale);border-color:var(--sale)}
.swipe-btn.pass{color:#666}
.swipe-btn:active{transform:scale(.93)}
@media (prefers-reduced-motion: reduce){ .swipe-btn:active{transform:none} }

/* ---------- 表示設定／ガチャモーダル ---------- */
body.gacha-open,body.settings-open{overflow:hidden}
.settings-btn{margin-left:auto;flex:none;min-height:34px;padding:5px 12px;border:1px solid var(--line2);background:#fff;border-radius:4px;font-size:12.5px;font-weight:700;color:#333;cursor:pointer}
.settings-btn:hover{border-color:#888;color:var(--text)}
.settings-btn:active{opacity:.85}
.gacha-inner{max-width:560px;margin:0 auto}
.gacha-lead{font-size:14px;font-weight:700;margin:0 0 12px}
.settings-modal{position:fixed;inset:0;z-index:95;display:flex;align-items:center;justify-content:center;padding:16px}
.settings-modal[hidden]{display:none}
.settings-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.55)}
.settings-panel{position:relative;background:#fff;width:100%;max-width:430px;border:1px solid var(--line2);padding:18px 18px 16px;max-height:calc(100vh - 32px);overflow-y:auto}
.settings-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.settings-head h2{font-size:17px;margin:0;font-weight:800;border-left:5px solid var(--sale);padding-left:9px}
.settings-close{flex:none;min-height:36px;padding:5px 12px;border:1px solid var(--line2);background:#fff;border-radius:4px;font-size:13px;font-weight:700;cursor:pointer;color:#333}
.toggle-row{display:flex;align-items:flex-start;gap:14px;padding:12px 0 4px;cursor:pointer}
.toggle-text{flex:1;font-size:14px;font-weight:700;line-height:1.55}
.toggle-note{display:block;font-size:12px;font-weight:400;color:var(--muted);margin-top:5px;line-height:1.6}
.switch{position:relative;flex:none;width:52px;height:30px;margin-top:2px}
.switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.switch .track{position:absolute;inset:0;background:#c9c9c9;border-radius:999px;transition:background .15s;pointer-events:none}
.switch .track::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;background:#fff;border-radius:50%;transition:left .15s}
.switch input:checked + .track{background:var(--sale)}
.switch input:checked + .track::after{left:25px}
.switch input:focus-visible + .track{outline:2px solid var(--link);outline-offset:2px}
.settings-status{font-size:12.5px;color:var(--muted);background:#f7f7f7;border:1px solid var(--line);padding:8px 10px;margin:12px 0 0}
.settings-status b{color:var(--sale-dark)}
@media (prefers-reduced-motion: reduce){ .switch .track,.switch .track::after{transition:none} }

/* ---------- 女優ハブ／特設ページ／ジャンル・キャンペーンハブ ---------- */
.actress-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}
.actress-card{background:#fff;border:1px solid var(--line);padding:12px 14px;text-align:left;width:100%;font-family:inherit}
.actress-card.clickable{cursor:pointer}
.actress-card.clickable:hover{border-color:#888}
.actress-card .an{font-size:16px;font-weight:800;margin:0 0 4px;color:var(--text)}
.actress-card .am{font-size:12.5px;color:var(--muted);margin:1px 0;font-variant-numeric:tabular-nums}
.actress-card .am b{color:var(--sale)}
.actress-card .go{font-size:12px;color:var(--link);font-weight:700;margin-top:6px;display:block}
.star-summary{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 4px}
.star-stat{background:#fff;border:1px solid var(--line);padding:10px 16px;min-width:118px}
.star-stat .v{font-size:21px;font-weight:800;color:var(--sale);font-variant-numeric:tabular-nums;line-height:1.2}
.star-stat .k{font-size:11.5px;color:var(--muted)}
.campaign-card.clickable{cursor:pointer}
.campaign-card.clickable:hover{border-color:#888}
.seo-note{font-size:11.5px;color:var(--faint);margin-top:22px;border-top:1px dashed var(--line2);padding-top:10px}

/* ---------- responsive ---------- */
@media (max-width:760px){
  .detail-top{grid-template-columns:1fr}
  .toolbar{top:88px}
  .brand .sub{display:none}
}
@media (max-width:640px){
  .grid{grid-template-columns:repeat(3,1fr); gap:12px 6px}
  .card .cbody{padding:6px 6px 8px}
  .card .ttl{font-size:11.5px}
  .card .actress{font-size:10.5px}
  .price-now{font-size:15px}
  .badge-off{font-size:10.5px; padding:1px 5px}
  .wrap{padding:10px 8px 56px}
  .mock-tag{display:none}
}
@media (max-width:359px){
  .grid{grid-template-columns:repeat(2,1fr)}
}

/* ---------- 本番用オーバーライド（モックのボタン遷移をリンク遷移へ） ---------- */
a.card{text-decoration:none; color:inherit}
a.actress-card{display:block; text-decoration:none; color:inherit}
a.campaign-card{display:block; text-decoration:none; color:inherit}
a.rank-item{text-decoration:none; color:inherit}
nav.main a{
  color:#333; font-size:13.5px; font-weight:600; text-decoration:none;
  padding:9px 10px; white-space:nowrap; border-bottom:2px solid transparent; flex:none;
}
nav.main a:hover{color:var(--sale)}
nav.main a.active{color:var(--sale); border-bottom-color:var(--sale)}
nav.main a.active .tab-cnt{color:var(--sale)}
.crumbs a{color:var(--muted); text-decoration:none}
.crumbs a:hover{color:var(--text)}
.crumbs .sep{margin:0 2px}
footer.site .fnav a{color:#444; text-decoration:none; font-size:13px}
footer.site .fnav a:hover{color:var(--sale)}
footer.site .cols a{color:var(--muted); text-decoration:none; font-size:12.5px}
footer.site .cols a:hover{color:var(--link)}
footer.site .credit a{color:var(--muted)}
.sec-head a.more{margin-left:auto; font-size:12.5px; font-weight:600; text-decoration:none; color:var(--link); padding:2px}
.info-table td a.lnk{color:var(--link); text-decoration:underline; text-underline-offset:3px}
/* 人を選ぶジャンルの非表示（表示設定オフ時） */
body.hide-sensitive [data-s="1"]{display:none!important}
/* 年齢ゲート（本番：30日保持。html.age-ok のときはゲート自体を出さない） */
html.age-ok #agegate{display:none}
html:not(.age-ok) #site-root{filter:blur(16px); pointer-events:none; user-select:none}
html:not(.age-ok) body{overflow:hidden}
.list-note{font-size:12px; color:var(--faint); margin-top:10px}
