:root{
  --bg:#fff5f9; --panel:#ffffff; --text:#46314a; --muted:#a98ab0;
  --accent:#ff4d8d; --accent-deep:#e6357a; --accent2:#ff86b4;
  --purple:#8e2de2; --purple2:#b14ad6;
  --line:#ffd9e8; --soft:#ffeaf2; --gold:#ffb400;
}
*{box-sizing:border-box}
body{margin:0;color:var(--text);
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='84' height='84' viewBox='0 0 84 84'%3E%3Cg fill='none' stroke='%23b14ad6' stroke-opacity='0.07' stroke-width='1'%3E%3Ccircle cx='42' cy='42' r='6'/%3E%3Cellipse cx='42' cy='27' rx='5' ry='11'/%3E%3Cellipse cx='42' cy='57' rx='5' ry='11'/%3E%3Cellipse cx='27' cy='42' rx='11' ry='5'/%3E%3Cellipse cx='57' cy='42' rx='11' ry='5'/%3E%3C/g%3E%3C/svg%3E"),
    linear-gradient(180deg,#fff5f9 0%,#fbeafc 60%,#f3e7ff 100%) fixed;
  background-size:84px 84px, cover;background-attachment:fixed;
  font-family:-apple-system,"Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;line-height:1.7}
a{color:inherit;text-decoration:none}
.wrap{max-width:1100px;margin:0 auto;padding:0 16px}
.site-header{position:sticky;top:0;z-index:10;background:rgba(255,255,255,.9);
  backdrop-filter:blur(8px);border-bottom:2px solid var(--line)}
.site-header .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding-top:12px;padding-bottom:12px}
.logo{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:19px}
.logo__mark{display:grid;place-items:center;width:30px;height:30px;border-radius:10px;
  color:#fff;font-size:16px;background:linear-gradient(135deg,var(--accent),var(--purple));
  box-shadow:0 4px 10px rgba(142,45,226,.4);transform:rotate(-6deg)}
.logo__text{background:linear-gradient(135deg,var(--accent-deep),var(--purple));
  -webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:.02em}
.genre-nav{display:flex;flex-wrap:wrap;gap:6px 10px;font-size:13px}
.genre-nav a{color:var(--accent-deep);padding:3px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;transition:.15s}
.genre-nav a:hover{color:#fff;background:var(--accent);border-color:var(--accent)}
.hero{position:relative;overflow:hidden;margin:24px 0 8px;padding:46px 24px;text-align:center;border-radius:22px;color:#fff;
  background:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='84' height='84' viewBox='0 0 84 84'%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='0.22' stroke-width='1.2'%3E%3Ccircle cx='42' cy='42' r='6'/%3E%3Cellipse cx='42' cy='27' rx='5' ry='11'/%3E%3Cellipse cx='42' cy='57' rx='5' ry='11'/%3E%3Cellipse cx='27' cy='42' rx='11' ry='5'/%3E%3Cellipse cx='57' cy='42' rx='11' ry='5'/%3E%3Ccircle cx='0' cy='0' r='15'/%3E%3Ccircle cx='84' cy='0' r='15'/%3E%3Ccircle cx='0' cy='84' r='15'/%3E%3Ccircle cx='84' cy='84' r='15'/%3E%3C/g%3E%3C/svg%3E"),
    radial-gradient(120% 120% at 80% -10%, rgba(255,255,255,.20), transparent 55%),
    linear-gradient(135deg,#ff4d8d 0%,#c13bd0 55%,#7b2ff0 100%);
  background-size:84px 84px, cover, cover;
  box-shadow:0 16px 40px rgba(123,47,240,.32), inset 0 0 70px rgba(123,47,240,.20)}
.hero::after{content:"";position:absolute;inset:0;border-radius:22px;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.28);pointer-events:none}
/* ランジェリーの裾レース（スカラップ＋ドット） */
.hero::before{content:"";position:absolute;left:0;right:0;bottom:0;height:16px;pointer-events:none;
  background:
    radial-gradient(circle at 9px 16px, rgba(255,255,255,.9) 6.5px, transparent 7.5px) repeat-x,
    radial-gradient(circle at 9px 7px, rgba(255,255,255,.55) 1.6px, transparent 2.2px) repeat-x;
  background-size:18px 16px, 18px 16px;opacity:.85}
.hero>*{position:relative;z-index:1}
.hero__catch{margin:0 0 10px;font-size:15px;font-weight:700;letter-spacing:.08em;opacity:.95;
  display:inline-block;padding:4px 16px;border:1px solid rgba(255,255,255,.6);border-radius:999px}
.hero__title{font-size:30px;margin:0 0 10px;letter-spacing:.04em;
  text-shadow:0 2px 10px rgba(180,30,90,.3)}
.hero__desc{margin:0;opacity:.95;font-size:14px}
.section-title{font-size:21px;padding-left:14px;margin:30px 0 18px;position:relative}
.section-title::before{content:"";position:absolute;left:0;top:2px;bottom:2px;width:6px;border-radius:6px;
  background:linear-gradient(180deg,var(--accent),var(--purple))}
.lead{color:var(--muted);margin-top:-8px}
.slider{position:relative;margin:22px 0;border-radius:20px;overflow:hidden;background:#fff;
  border:1px solid var(--line);box-shadow:0 12px 30px rgba(142,45,226,.16)}
.slider__track{display:flex;transition:transform .5s ease}
.slide{min-width:100%;box-sizing:border-box;display:flex;gap:18px;align-items:center;padding:20px 22px;
  background:linear-gradient(135deg,#fff,#fbeefb);color:var(--text)}
.slide__imgwrap{flex:0 0 165px;aspect-ratio:300/428;border-radius:12px;overflow:hidden;
  box-shadow:0 8px 18px rgba(142,45,226,.28)}
.slide__imgwrap img{width:100%;height:100%;object-fit:cover;display:block}
.slide__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px}
.slide__badge{align-self:flex-start;background:linear-gradient(135deg,var(--accent),var(--purple));
  color:#fff;font-weight:800;font-size:12px;padding:4px 14px;border-radius:999px;
  box-shadow:0 4px 10px rgba(142,45,226,.3)}
.slide__title{margin:0;font-size:18px;font-weight:800;line-height:1.45}
.slide__rating{margin:0;font-size:14px}
.slide__genres{margin:0;font-size:12px;color:var(--muted)}
.slide__price{margin:0;font-weight:800;color:var(--accent-deep);font-size:17px}
.slide__cta{align-self:flex-start;margin-top:2px;background:linear-gradient(135deg,var(--accent),var(--purple2));
  color:#fff;font-weight:800;padding:9px 20px;border-radius:999px;font-size:14px;
  box-shadow:0 6px 14px rgba(142,45,226,.32)}
.slider__nav{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;border:0;border-radius:50%;
  background:rgba(255,255,255,.88);color:var(--accent-deep);font-size:24px;line-height:1;font-weight:800;cursor:pointer;
  display:grid;place-items:center;box-shadow:0 3px 10px rgba(80,20,120,.2);z-index:2}
.slider__nav:hover{background:#fff}
.slider__prev{left:10px}.slider__next{right:10px}
.slider__dots{position:absolute;bottom:10px;left:0;right:0;display:flex;justify-content:center;gap:7px;z-index:2}
.slider__dot{width:9px;height:9px;border-radius:50%;border:0;background:rgba(142,45,226,.32);cursor:pointer;padding:0;transition:.2s}
.slider__dot.is-active{background:var(--purple);width:22px;border-radius:999px}
.promo-banner{position:relative;display:flex;justify-content:center;align-items:center;
  margin:22px 0;padding:10px;background:#fff;border:1px dashed var(--line);border-radius:12px;overflow:hidden}
.promo-banner img{max-width:100%;height:auto;display:block;border-radius:6px}
.promo-banner__label{position:absolute;top:6px;left:6px;font-size:10px;font-weight:700;color:#fff;
  background:var(--accent);padding:1px 7px;border-radius:999px;letter-spacing:.05em}
.featured{margin:22px 0;padding:22px 20px 24px;border-radius:20px;
  background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(252,238,252,.92));
  border:1.5px dashed var(--purple2);
  box-shadow:0 10px 30px rgba(142,45,226,.12)}
.featured .section-title{margin-top:4px}
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.cat-card{position:relative;display:flex;flex-direction:column;gap:6px;
  background:linear-gradient(180deg,#fff,#fdf3fb);border:1px solid var(--line);
  border-radius:16px;padding:20px 16px 16px;box-shadow:0 6px 16px rgba(177,74,214,.12);
  overflow:hidden;transition:transform .14s,box-shadow .14s,border-color .14s}
.cat-card::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;
  background:linear-gradient(90deg,var(--accent),var(--purple))}
.cat-card:hover{transform:translateY(-4px);border-color:var(--purple2);box-shadow:0 16px 32px rgba(142,45,226,.26)}
.cat-card__emoji{font-size:28px}
.cat-card__name{font-weight:800;font-size:16px;
  background:linear-gradient(135deg,var(--accent-deep),var(--purple));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.cat-card__lead{font-size:12px;color:var(--muted);line-height:1.6}
.fiction-note{margin:22px 0 0;font-size:12px;color:var(--muted);background:var(--soft);
  padding:10px 14px;border-radius:10px}
.cat-group{margin:26px 0}
.cat-group__title{font-size:16px;color:#fff;display:inline-block;margin:0 0 12px;
  background:linear-gradient(135deg,var(--accent),var(--purple));padding:5px 16px;border-radius:999px;
  box-shadow:0 4px 10px rgba(142,45,226,.3)}
.cat-chips{display:flex;flex-wrap:wrap;gap:8px}
.cat-chip{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:600;
  background:#fff;color:var(--accent-deep);border:1px solid var(--line);padding:7px 14px;border-radius:999px;
  box-shadow:0 3px 8px rgba(255,77,141,.08);transition:.15s}
.cat-chip:hover{background:var(--accent);color:#fff;border-color:var(--accent);transform:translateY(-2px)}
.cat-chip--empty{color:var(--muted);background:#faf6f8;box-shadow:none;cursor:default}
.cat-chip--empty:hover{background:#faf6f8;color:var(--muted);transform:none}
.cat-chip small{font-size:9px;background:var(--line);color:var(--muted);padding:1px 5px;border-radius:999px}
.breadcrumb{font-size:13px;color:var(--muted);padding:16px 0 0}
.breadcrumb a{color:var(--accent-deep)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:20px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;overflow:hidden;
  display:flex;flex-direction:column;box-shadow:0 6px 18px rgba(255,77,141,.1);
  transition:transform .14s,box-shadow .14s,border-color .14s}
.card:hover{transform:translateY(-4px);border-color:var(--accent2);box-shadow:0 14px 30px rgba(255,77,141,.24)}
.card__thumb{position:relative;display:block;aspect-ratio:300/428;background:var(--soft)}
.card__thumb img{width:100%;height:100%;object-fit:cover;display:block}
.rank{position:absolute;top:8px;left:8px;min-width:32px;height:32px;border-radius:50%;
  display:grid;place-items:center;font-weight:800;color:#fff;font-size:15px;
  background:linear-gradient(135deg,var(--accent),var(--accent2));box-shadow:0 3px 8px rgba(255,77,141,.4)}
.rank--1{background:linear-gradient(135deg,#ffd84d,#ff9d00);color:#7a4b00}
.rank--2{background:linear-gradient(135deg,#e7e7ef,#b6b6c6);color:#444}
.rank--3{background:linear-gradient(135deg,#f0a876,#d3814a);color:#fff}
.card__body{padding:13px;display:flex;flex-direction:column;gap:6px;flex:1}
.card__title{font-size:14px;margin:0;line-height:1.45;font-weight:700}
.card__title a:hover{color:var(--accent-deep)}
.card__rating{margin:0;font-size:13px}
.stars{color:var(--gold);letter-spacing:1px}
.reviews{color:var(--muted);margin-left:4px}
.card__meta{margin:0;font-size:12px;color:var(--muted);display:flex;flex-direction:column}
.card__genres{margin:0;display:flex;flex-wrap:wrap;gap:4px}
.card__genres a{font-size:11px;background:var(--soft);color:var(--accent-deep);padding:2px 9px;border-radius:999px;transition:.15s}
.card__genres a:hover{background:var(--accent);color:#fff}
.card__comment{margin:2px 0;font-size:12px;color:#6b505b;background:var(--soft);padding:8px 10px;border-radius:8px}
.card__price{margin:0;font-weight:800;color:var(--accent-deep);font-size:15px}
.btn-cta{margin-top:auto;text-align:center;background:linear-gradient(135deg,var(--accent),var(--purple2));
  color:#fff;font-weight:800;padding:11px;border-radius:999px;font-size:14px;
  box-shadow:0 6px 14px rgba(142,45,226,.32);transition:.15s}
.btn-cta:hover{filter:brightness(1.05);transform:translateY(-1px)}
.site-footer{margin-top:52px;border-top:2px solid var(--line);background:rgba(255,255,255,.7);
  padding:26px 0;font-size:12px;color:var(--muted)}
.site-footer p{margin:6px 0}
.footer-nav{display:flex;flex-wrap:wrap;gap:8px 18px;margin-bottom:14px}
.footer-nav a{color:var(--accent-deep);font-weight:600}
.footer-nav a:hover{text-decoration:underline}
.static-page{max-width:780px;line-height:1.9;background:#fff;border:1px solid var(--line);
  border-radius:16px;padding:28px 28px 32px;box-shadow:0 6px 18px rgba(255,77,141,.1);margin-top:8px}
.static-page h2{font-size:17px;margin:24px 0 8px;color:var(--accent-deep)}
.static-page p{margin:0 0 12px}
.static-page a{color:var(--accent-deep);text-decoration:underline}
.info-list{display:grid;grid-template-columns:120px 1fr;gap:6px 16px;margin:0 0 20px}
.info-list dt{color:var(--muted)}
.info-list dd{margin:0}
.contact-mail{font-size:18px;font-weight:700;color:var(--accent-deep)}
.btn-cta.inline{display:inline-block;width:auto;padding:11px 24px}
@media(max-width:480px){.info-list{grid-template-columns:1fr}.info-list dt{margin-top:8px}}
#age-gate{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;
  background:linear-gradient(135deg,rgba(255,124,176,.96),rgba(255,77,141,.96));backdrop-filter:blur(4px)}
.age-gate__box{max-width:380px;background:#fff;border-radius:20px;
  padding:30px 26px;text-align:center;box-shadow:0 20px 50px rgba(180,30,90,.35)}
.age-gate__box h2{margin:0 0 12px;color:var(--accent-deep)}
.age-gate__box p{color:var(--text)}
.age-gate__btns{display:flex;flex-direction:column;gap:10px;margin-top:22px}
#age-yes{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;border:0;
  padding:15px;border-radius:999px;font-size:16px;font-weight:800;cursor:pointer;
  box-shadow:0 8px 18px rgba(255,77,141,.4)}
#age-yes:hover{filter:brightness(1.05)}
#age-no{color:var(--muted);padding:10px;border:1px solid var(--line);border-radius:999px}
@media(max-width:640px){
  .wrap{padding:0 12px}
  .site-header .wrap{flex-wrap:nowrap;padding-top:9px;padding-bottom:9px;gap:0;
    flex-direction:column;align-items:stretch}
  .logo{font-size:17px;padding-bottom:8px}
  /* ジャンルナビは折り返さず横スクロール1行にしてヘッダーをコンパクトに */
  .genre-nav{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
    gap:8px;padding-bottom:2px;scrollbar-width:none}
  .genre-nav::-webkit-scrollbar{display:none}
  .genre-nav a{flex:0 0 auto;white-space:nowrap}
  .hero{padding:26px 16px;margin:16px 0 4px}
  .hero__title{font-size:21px}
  .hero__catch{font-size:13px}
  .section-title{font-size:18px}
  .grid{grid-template-columns:repeat(2,1fr);gap:12px}
  .cat-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .slide{padding:14px;gap:12px}
  .slide__imgwrap{flex-basis:108px}
  .slide__title{font-size:15px}
  .slide__price{font-size:15px}
  .slide__cta{padding:8px 16px;font-size:13px}
  .slider__nav{width:32px;height:32px;font-size:20px}
  .cat-card{padding:14px 12px}
  .card__title{font-size:13px}
  .btn-cta{padding:12px;font-size:13px}
  .static-page{padding:20px 16px 24px}
  .info-list{grid-template-columns:1fr}
  .info-list dt{margin-top:8px}
}
@media(max-width:380px){.grid{gap:10px}.card__body{padding:10px}}
