* { box-sizing: border-box; }
html, body { margin:0; padding:0; font-family: 'Noto Sans KR', 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif; background:#0e0d16; color:#fff; font-weight:400; }
/* Safe-area padding for devices with notches */
body { padding-left:env(safe-area-inset-left); padding-right:env(safe-area-inset-right); }
body { -webkit-font-smoothing: antialiased; }

:root {
  --pink:#ff4d9c;
  --pink-soft:#ff7fb8;
  --violet:#7a4dff;
  --indigo:#331a74;
  --bg:#0e0d16;
  --gradient:radial-gradient(circle at 30% 30%, #2a1940, #0e0d16 70%);
  --transition: .35s cubic-bezier(.65,.05,.36,1);
  /* Semantic design tokens */
  --radius-sm:8px; --radius-md:16px; --radius-lg:24px; --radius-xl:30px;
  --shadow-soft:0 6px 18px -6px rgba(0,0,0,.55);
  --shadow-strong:0 30px 70px -18px rgba(0,0,0,.85);
  --focus-ring:0 0 0 3px rgba(255,77,156,.55);
  --glass-border:1px solid rgba(255,255,255,.12);
}

/* Age Gate */
#age-gate { position:fixed; inset:0; z-index:5000; background:linear-gradient(160deg,rgba(14,13,22,.92),rgba(14,13,22,.88)); backdrop-filter:blur(8px); display:flex; align-items:center; justify-content:center; padding:2rem; }
#age-gate[aria-hidden="true"] { display:none; }
.age-gate-panel { width:clamp(300px, 90vw, 520px); background:linear-gradient(135deg,rgba(255,255,255,.09),rgba(255,255,255,.04)); border:1px solid rgba(255,255,255,.18); border-radius:32px; padding:2.4rem 2rem 2.2rem; box-shadow:0 30px 60px -18px rgba(0,0,0,.85),0 0 0 1px rgba(255,255,255,.05) inset; position:relative; overflow:hidden; }
.age-gate-panel::before { content:""; position:absolute; width:360px; height:360px; top:-140px; left:-140px; background:radial-gradient(circle at 30% 30%,rgba(255,77,156,.45),rgba(255,77,156,0)); filter:blur(40px); opacity:.9; pointer-events:none; }
.age-gate-panel::after { content:""; position:absolute; width:320px; height:320px; bottom:-120px; right:-120px; background:radial-gradient(circle at 70% 70%,rgba(122,77,255,.5),rgba(122,77,255,0)); filter:blur(44px); opacity:.8; pointer-events:none; }
.age-gate-panel h2 { margin:0 0 1.1rem; font-family:'Do Hyeon', sans-serif; font-size:clamp(1.9rem,4.5vw,2.8rem); letter-spacing:.5px; background:linear-gradient(90deg,#fff,var(--pink-soft)); -webkit-background-clip:text; background-clip:text; color:transparent; }
.age-gate-text { margin:0 0 1.6rem; font-size:.95rem; line-height:1.55; color:#e1d8ee; }
.age-gate-actions { display:flex; flex-wrap:wrap; gap:1rem; margin:0 0 1.4rem; }
.age-btn { flex:1 1 160px; background:linear-gradient(90deg,var(--pink),var(--violet)); color:#fff; border:none; font-weight:700; letter-spacing:.5px; padding:1rem 1.2rem; font-size:.95rem; border-radius:18px; cursor:pointer; position:relative; box-shadow:0 10px 30px -12px rgba(255,77,156,.65); transition:var(--transition); }
.age-btn:hover { transform:translateY(-4px); box-shadow:0 16px 36px -14px rgba(255,77,156,.75); }
.age-btn:active { transform:translateY(0); }
.age-btn.no { background:rgba(255,255,255,.08); color:#fff; border:1px solid rgba(255,255,255,.18); box-shadow:none; }
.age-btn.no:hover { background:rgba(255,255,255,.15); }
.age-gate-note { margin:0; font-size:.65rem; letter-spacing:.6px; color:#b7aec4; }
.age-gate-badge { width:120px; height:120px; margin:0 auto 1.2rem; position:relative; animation:badgePulse 3.2s ease-in-out infinite; }
.age-badge-svg { width:100%; height:100%; display:block; }
@keyframes badgePulse { 0%,100%{ transform:scale(1) rotate(0deg);} 40%{ transform:scale(1.08) rotate(2deg);} 50%{ transform:scale(1.05) rotate(-2deg);} 70%{ transform:scale(1.09);} }

#bg-gradient { position:fixed; inset:0; background:var(--gradient); z-index:-2; }

.site-header { position:sticky; top:0; display:flex; justify-content:space-between; align-items:center; padding: clamp(.75rem,2vw,1.25rem) 2rem; backdrop-filter: blur(14px) brightness(1.1); background:rgba(20,16,32,.55); border-bottom:1px solid rgba(255,255,255,.08); z-index:50; }
.logo { font-family: 'Jua', cursive; font-size:1.75rem; letter-spacing:.5px; }
.logo span { color: var(--pink); }
.main-nav a { color:#fff; text-decoration:none; margin-left:1.25rem; font-weight:600; font-size:.95rem; position:relative; }
.main-nav a::after { content:""; position:absolute; left:0; bottom:-4px; width:0; height:2px; background:linear-gradient(90deg,var(--pink),var(--violet)); transition:width .4s; border-radius:2px; }
.main-nav a:hover::after, .main-nav a:focus::after { width:100%; }

.hero { min-height: clamp(640px, 90vh, 880px); display:grid; grid-template-columns: minmax(320px,520px) minmax(600px,1fr); gap:3.5rem; align-items:center; padding:6rem min(6vw,5rem) 4rem; position:relative; overflow:hidden; }
.hero-text { max-width:520px; }
.hero-text h1 { font-family:'Do Hyeon', sans-serif; font-size: clamp(2.4rem, 5vw, 3.6rem); line-height:1.12; margin:0 0 1rem; background:linear-gradient(90deg,#fff,var(--pink-soft)); -webkit-background-clip:text; background-clip:text; color:transparent; }
.tagline { font-size:1.05rem; line-height:1.5; margin:0 0 1.75rem; color:#d9d4e6; }
.cta-wrap { display:flex; gap:1rem; flex-wrap:wrap; }
button { font: inherit; }
.cta { --glow: drop-shadow(0 0 6px rgba(255,109,182,.6)); position:relative; background:linear-gradient(90deg,var(--pink),var(--violet)); border:none; color:#fff; font-weight:700; letter-spacing:.5px; padding: .95rem 1.6rem; border-radius: 999px; cursor:pointer; font-size:1rem; transition: var(--transition); filter:var(--glow); box-shadow:0 6px 18px -6px rgba(255,77,156,.6); }
.cta.pulse::before { content:""; position:absolute; inset:-4px; border-radius:inherit; background:linear-gradient(90deg,var(--violet),var(--pink)); opacity:.4; animation:pulse 2.8s infinite; filter:blur(14px); z-index:-1; }
.cta:hover, .cta:focus { transform:translateY(-3px); box-shadow:0 10px 26px -8px rgba(255,77,156,.75); }
.cta.small { font-size:.85rem; padding:.55rem 1.1rem; }
.ghost { background:rgba(255,255,255,.06); color:#fff; border:1px solid rgba(255,255,255,.2); }
.ghost:hover { background:rgba(255,255,255,.15); }
.consent-note { font-size:.75rem; letter-spacing:.5px; text-transform:uppercase; margin-top:1rem; color:#c8bdd7; }

.hero-visual { position:relative; width:100%; min-height:620px; display:flex; align-items:center; justify-content:center; }
/* Swipe deck styles */
.avatar-card { width:clamp(300px,38vw,420px); max-width:94%; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.15); backdrop-filter: blur(14px); border-radius:30px; padding:1.1rem 1.1rem 4.2rem; box-shadow:0 18px 46px -14px rgba(0,0,0,.65),0 0 0 1px rgba(255,255,255,.05) inset; position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); transition: transform .45s cubic-bezier(.22,.8,.32,1), opacity .35s, box-shadow .3s; cursor:grab; opacity:0; pointer-events:none; touch-action:none; -webkit-user-select:none; user-select:none; }
.avatar-card.mini { width:clamp(300px,38vw,420px); }
.avatar-card.dragging { cursor:grabbing; box-shadow:0 20px 48px -10px rgba(0,0,0,.75); }
.avatar-img { width:100%; aspect-ratio:4/5; overflow:hidden; border-radius:24px; background:linear-gradient(135deg,#311f48,#4a225f); display:flex; align-items:center; justify-content:center; }
.avatar-img img { width:100%; height:100%; object-fit:cover; mix-blend-mode:screen; opacity:.9; }
.avatar-meta h3 { margin:.9rem 0 .4rem; font-size:1.25rem; }
.avatar-meta p { margin:0 0 .75rem; font-size:.85rem; line-height:1.45; color:#d9d2e6; }
.contact-btn { position:absolute; left:50%; bottom:1rem; transform:translateX(-50%); background:linear-gradient(90deg,var(--pink),var(--violet)); color:#fff; border:none; font-weight:600; padding:.7rem 1.4rem; border-radius:999px; font-size:.85rem; letter-spacing:.5px; box-shadow:0 6px 20px -6px rgba(255,77,156,.6); transition:background .35s, transform .35s, box-shadow .35s; }
.contact-btn:hover { transform:translateX(-50%) translateY(-3px); box-shadow:0 10px 26px -6px rgba(255,77,156,.75); }
.contact-btn:active { transform:translateX(-50%) translateY(0); }
/* Minimum tap target heights */
.contact-btn, .modal-contact-btn, .age-btn, .promo-cta, .cta, .star { min-height:44px; }
/* single active card */
.avatar-card.active { opacity:1; pointer-events:auto; z-index:10; }
.avatar-card.leaving { pointer-events:none; }

/* swipe indicators */
.avatar-card::before, .avatar-card::after { content:""; position:absolute; top:14px; font-weight:700; font-size:2.2rem; opacity:0; padding:.35rem .8rem .45rem; border:4px solid; border-radius:18px; letter-spacing:2px; transform:scale(.6) rotate(-10deg); }
.avatar-card.like::before { content:"LIKE"; left:16px; color:#4dffb6; border-color:#4dffb6; box-shadow:0 0 0 1px rgba(77,255,182,.25),0 4px 14px -2px rgba(77,255,182,.45); opacity:1; transform:scale(1) rotate(-10deg); transition:.25s; }
.avatar-card.pass::after { content:"PASS"; right:16px; color:#ff4d7a; border-color:#ff4d7a; box-shadow:0 0 0 1px rgba(255,77,122,.25),0 4px 14px -2px rgba(255,77,122,.45); opacity:1; transform:scale(1) rotate(10deg); transition:.25s; }

/* disable old floating random layout */
.floating { animation:none; }

/* Responsive scaling */
@media (max-width: 920px) {
  .avatar-card { width:clamp(280px,60vw,380px); }
  .avatar-card.mini { width:clamp(280px,60vw,380px); }
}
@media (max-width: 680px) {
  .avatar-card, .avatar-card.mini { width:clamp(260px,70vw,360px); }
}
@media (max-width: 520px) {
  .av-4, .av-5 { display:none; }
  .avatar-card, .avatar-card.mini { width:88vw; }
}
#heart-canvas { position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }

.panel { padding:5rem min(6vw,5rem); }
.panel.soft { background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,0)); }
.panel.focus { background:linear-gradient(180deg,rgba(255,77,156,.08),rgba(122,77,255,.08)); position:relative; }
.panel h2 { font-family:'Do Hyeon', sans-serif; font-size: clamp(1.9rem,3.6vw,2.6rem); margin:0 0 2.5rem; letter-spacing:1px; }
/* (Removed feature & safety sections styles) */

.steps { display:flex; flex-wrap:wrap; gap:2rem; counter-reset: step; list-style:none; padding:0; margin:0 0 2rem; }
.steps li { flex:1 1 180px; position:relative; background:rgba(255,255,255,.06); padding:1.4rem 1.2rem 1.4rem 1.2rem; border-radius:18px; font-weight:600; font-size:.95rem; border:1px solid rgba(255,255,255,.1); }
.steps li::before { counter-increment: step; content: counter(step); position:absolute; top:-14px; left:-14px; width:40px; height:40px; background:linear-gradient(135deg,var(--pink),var(--violet)); border-radius:14px; display:flex; align-items:center; justify-content:center; font-weight:700; box-shadow:0 6px 16px -4px rgba(255,77,156,.5); }

/* Swipe deck removed */

.site-footer { padding:3rem 1.5rem 4rem; text-align:center; font-size:.8rem; background:#0a0910; color:#9d93ab; }
.site-footer a { color:#cdb3ff; text-decoration:none; }
.site-footer a:hover { text-decoration:underline; }
.tiny { margin:.4rem 0; }

@keyframes pulse { 0%,100%{opacity:.35;} 50%{opacity:.75;} }
@keyframes floatY { 0%,100%{ transform:var(--base-tr) translateY(-8px);} 50%{ transform:var(--base-tr) translateY(8px);} }
@keyframes heartRise { 0% { transform:translateY(0) scale(.7); opacity:0;} 15%{opacity:1;} 90% { opacity:1;} 100% { transform:translateY(-120vh) scale(1.2); opacity:0; } }

/* Responsive adjustments */
@media (max-width: 880px) {
  .hero { grid-template-columns:1fr; padding:5.5rem 1.75rem 4rem; }
  .hero-visual { min-height:560px; margin-top:2rem; }
}

@media (max-width:560px){
  .hero { padding:5rem 1.1rem 3.2rem; }
  .hero-text h1 { font-size: clamp(2.05rem, 9vw, 2.7rem); }
  .tagline { font-size:.95rem; }
  .consent-note { font-size:.63rem; }
  .site-header { padding:.85rem 1.2rem; }
  .modal-dialog { width:94vw; max-height:none; height:calc(100vh - 1.5rem - env(safe-area-inset-top) - env(safe-area-inset-bottom)); border-radius:24px; padding:1rem 1rem 1.2rem; }
  .profile-modal { align-items:flex-start; padding-top:calc(env(safe-area-inset-top) + .75rem); }
  .modal-body { gap:1.1rem; }
  .modal-info h3 { font-size:1.35rem; }
  .modal-desc { font-size:.85rem; }
  .modal-close { width:40px; height:40px; }
  .age-gate-panel { padding:2rem 1.4rem 1.8rem; }
}

@media (max-height:640px){
  .age-gate-panel { max-height:100%; overflow:auto; }
}

/* (Removed legacy promo & timer styles) */

/* Profiles list section */
.profiles-section { padding:3rem min(6vw,5rem) 5rem; position:relative; }
.profiles-section h2 { font-family:'Do Hyeon', sans-serif; margin:0 0 1.25rem; font-size: clamp(1.8rem,3.2vw,2.4rem); letter-spacing:.5px; }
.profiles-note { font-size:.7rem; color:#9e93aa; margin-top:1rem; }
/* New square grid */
.profiles-grid { --tile-size:150px; display:grid; grid-template-columns:repeat(auto-fill,minmax(var(--tile-size),1fr)); gap:1rem; }
.profiles-grid .profile-row { all:unset; box-sizing:border-box; position:relative; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; width:100%; aspect-ratio:1/1; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.08); border-radius:22px; overflow:hidden; cursor:pointer; padding:.55rem .6rem .65rem; transition:background .35s, transform .4s, box-shadow .45s; }
.profiles-grid .profile-row::before { content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(0,0,0,0) 45%,rgba(0,0,0,.55)); pointer-events:none; opacity:.85; }
.profiles-grid .profile-row:hover { background:rgba(255,255,255,.1); transform:translateY(-5px); box-shadow:0 14px 30px -12px rgba(0,0,0,.6); }
.profiles-grid .profile-row:active { transform:translateY(-1px); }
.profiles-grid .profile-row .thumb { position:absolute; inset:0; display:block; }
.profiles-grid .profile-row .thumb img { width:100%; height:100%; object-fit:cover; display:block; filter:saturate(1.1); }
.profiles-grid .profile-row .label { position:relative; z-index:2; font-size:.8rem; font-weight:600; letter-spacing:.5px; background:linear-gradient(90deg,var(--pink),var(--violet)); -webkit-background-clip:text; background-clip:text; color:transparent; text-shadow:0 0 8px rgba(0,0,0,.5); }
@media (max-width:980px){ .profiles-grid { --tile-size:140px; } }
@media (max-width:800px){ .profiles-grid { --tile-size:130px; } }
@media (max-width:680px){ .profiles-grid { --tile-size:120px; } }
@media (max-width:520px){ .profiles-grid { --tile-size:100px; gap:.75rem; } .profiles-grid .profile-row { border-radius:18px; } .profiles-grid .profile-row .label { font-size:.7rem; } }

/* Modal */
.profile-modal { position:fixed; inset:0; display:flex; align-items:center; justify-content:center; z-index:120; opacity:0; pointer-events:none; transition:opacity .35s; }
.profile-modal.open { opacity:1; pointer-events:auto; }
.modal-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.72); backdrop-filter: blur(5px) brightness(.9); }
.modal-dialog { position:relative; width:clamp(300px,70vw,760px); max-height:90vh; background:linear-gradient(145deg,rgba(18,14,28,.93),rgba(10,8,18,.9)); border:1px solid rgba(255,255,255,.12); border-radius:30px; padding:1.2rem 1.3rem 1.5rem; box-shadow:0 30px 70px -18px rgba(0,0,0,.85),0 0 0 1px rgba(255,255,255,.05) inset; overflow:auto; -webkit-overflow-scrolling:touch; display:flex; flex-direction:column; overscroll-behavior:contain; }
.modal-close { position:absolute; top:.55rem; right:.6rem; background:linear-gradient(135deg,var(--pink) 0%, var(--violet) 90%); border:1px solid rgba(255,255,255,.4); color:#fff; width:44px; height:44px; line-height:44px; border-radius:14px; font-size:1.2rem; font-weight:600; cursor:pointer; z-index:10; box-shadow:0 6px 18px -6px rgba(0,0,0,.75),0 0 0 3px rgba(0,0,0,.25); display:flex; align-items:center; justify-content:center; backdrop-filter:blur(4px) brightness(1.1); }
.modal-close:hover { filter:brightness(1.15); box-shadow:0 10px 26px -8px rgba(0,0,0,.8),0 0 0 3px rgba(255,255,255,.25); }
.modal-close:active { transform:scale(.92); }
.modal-close:focus-visible { outline:2px solid #fff; outline-offset:3px; }
.modal-body { display:grid; grid-template-columns: minmax(180px,240px) 1fr; gap:1.5rem; align-items:stretch; }
.modal-img-wrap { position:relative; overflow:hidden; border-radius:22px; background:#21152f; }
.modal-img-wrap img { width:100%; height:100%; object-fit:cover; display:block; }
.modal-media-wrap { position:relative; overflow:hidden; border-radius:22px; background:#21152f; min-height:260px; display:flex; align-items:center; justify-content:center; }
.media-carousel { width:100%; height:100%; display:flex; transition:transform .55s cubic-bezier(.22,.8,.32,1); }
.media-item { position:relative; flex:0 0 100%; width:100%; height:100%; display:flex; align-items:center; justify-content:center; overflow:hidden; }
.media-item img, .media-item video { width:100%; height:100%; object-fit:cover; display:block; }
.media-item video { background:#000; }
.media-nav { position:absolute; top:50%; transform:translateY(-50%); background:rgba(0,0,0,.45); color:#fff; border:none; width:46px; height:46px; border-radius:50%; font-size:1.8rem; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; backdrop-filter:blur(6px) brightness(1.2); box-shadow:0 4px 18px -6px rgba(0,0,0,.6); transition:background .3s, transform .3s; }
.media-nav:hover { background:rgba(0,0,0,.65); transform:translateY(-50%) scale(1.08); }
.media-prev { left:8px; }
.media-next { right:8px; }
.media-dots { position:absolute; bottom:10px; left:50%; transform:translateX(-50%); display:flex; gap:.5rem; }
.media-dots button { all:unset; width:10px; height:10px; border-radius:50%; background:rgba(255,255,255,.35); cursor:pointer; transition:background .35s, transform .35s; }
.media-dots button.active { background:linear-gradient(90deg,var(--pink),var(--violet)); transform:scale(1.3); }
.media-dots button:focus-visible { outline:2px solid #fff; outline-offset:2px; }
.modal-location { font-size:.75rem; letter-spacing:.5px; color:#bbaed0; margin:.2rem 0 1rem; }
.modal-info { display:flex; flex-direction:column; min-height:0; }
.modal-info h3 { margin:.2rem 0 .6rem; font-size:1.6rem; letter-spacing:.5px; }
.modal-meta { margin:.1rem 0 1rem; font-size:.9rem; color:#d8cfe4; }
.modal-desc { font-size:.9rem; line-height:1.5; color:#dfd7ec; margin:0 0 1.4rem; }
.rating { display:flex; align-items:center; gap:.3rem; }
.rating .star { background:none; border:none; color:#444; font-size:1.5rem; cursor:pointer; padding:0 .15rem; transition:color .25s, transform .25s; }
.rating .star.active { color:var(--pink); text-shadow:0 0 12px rgba(255,77,156,.6); }
.rating .star:hover { color:var(--pink-soft); transform:scale(1.15); }
.rating-value { margin-left:.6rem; font-size:.8rem; letter-spacing:.5px; color:#c8bbd8; }
.reviews-wrap { margin-top:1.6rem; }
.reviews-title { margin:.1rem 0 .7rem; font-size:1rem; letter-spacing:.5px; }
.reviews { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.65rem; max-height:280px; overflow:auto; scrollbar-width:thin; }
.reviews::-webkit-scrollbar { width:6px; }
.reviews::-webkit-scrollbar-track { background:rgba(255,255,255,.05); border-radius:8px; }
.reviews::-webkit-scrollbar-thumb { background:linear-gradient(var(--pink),var(--violet)); border-radius:8px; }
.review { display:grid; grid-template-columns:40px 1fr; gap:.75rem; padding:.65rem .75rem .7rem; background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.1); border-radius:16px; position:relative; }
.review .avatar { width:40px; height:40px; border-radius:50%; overflow:hidden; background:#322240; display:flex; align-items:center; justify-content:center; font-size:.7rem; font-weight:600; letter-spacing:.5px; }
.review .avatar img { width:100%; height:100%; object-fit:cover; display:block; }
.review .meta { font-size:.7rem; color:#b9afc4; display:flex; gap:.6rem; align-items:center; flex-wrap:wrap; }
.review .stars { color:var(--pink-soft); font-size:.75rem; letter-spacing:1px; }
.review p { margin:.35rem 0 0; font-size:.78rem; line-height:1.45; color:#e9e2f3; }
@media (max-width:760px){
  .modal-body { grid-template-columns:1fr; }
  .modal-media-wrap { min-height:200px; }
}

/* Modal contact button */
.modal-contact-btn { 
  margin:1.2rem 0 .4rem; 
  align-self:flex-start; 
  background:linear-gradient(90deg,var(--pink),var(--violet)); 
  color:#fff; 
  border:none; 
  font-weight:700; 
  letter-spacing:.6px; 
  padding:.85rem 1.4rem; 
  border-radius:18px; 
  font-size:.9rem; 
  cursor:pointer; 
  position:relative; 
  box-shadow:0 10px 26px -10px rgba(255,77,156,.6),0 0 0 1px rgba(255,255,255,.08) inset; 
  transition:background .45s, transform .35s, box-shadow .45s, filter .45s; 
}
.modal-contact-btn::after { 
  content:""; 
  position:absolute; 
  inset:0; 
  border-radius:inherit; 
  background:linear-gradient(90deg,var(--violet),var(--pink)); 
  opacity:0; 
  filter:blur(14px); 
  transition:opacity .6s; 
  z-index:-1; 
}
.modal-contact-btn:hover, .modal-contact-btn:focus { 
  transform:translateY(-3px); 
  box-shadow:0 16px 34px -12px rgba(255,77,156,.75); 
}
.modal-contact-btn:hover::after, .modal-contact-btn:focus::after { opacity:.5; }
.modal-contact-btn:active { transform:translateY(0); }
.modal-contact-btn:focus-visible { outline:2px solid #fff; outline-offset:3px; }
.profile-modal.open .modal-contact-btn { animation:contactPulse 3.2s ease-in-out infinite; }
@keyframes contactPulse { 0%,100%{ filter:brightness(1);} 50%{ filter:brightness(1.25);} }

/* Accessibility: stronger focus rings */
.cta:focus-visible, .contact-btn:focus-visible, .media-nav:focus-visible, .media-dots button:focus-visible { box-shadow:var(--focus-ring); outline:none; }

/* Performance: only apply heavy blur shadows on wider screens */
@media (max-width:600px){
  .avatar-card { box-shadow:0 12px 32px -12px rgba(0,0,0,.7); }
  .modal-dialog { box-shadow:0 24px 50px -18px rgba(0,0,0,.8),0 0 0 1px rgba(255,255,255,.05) inset; }
}

/* Hint to browser for smoother animation */
.avatar-card, .media-carousel { will-change:transform; }

/* Commented guidance:
   Tokens at :root centralize look & feel. Promo block removed to slim CSS (~15% reduction).
   Focus styles unified for keyboard users. Mobile shadow reduction aids performance.
*/

/* Reduce motion preference */
@media (prefers-reduced-motion: reduce){
  /* Disable only decorative / pulsing animations */
  .age-gate-panel::before,
  .age-gate-panel::after,
  .cta.pulse::before,
  .profile-modal.open .modal-contact-btn,
  .contact-btn,
  #heart-canvas { animation:none !important; }

  /* Keep heart canvas visible but subtler */
  #heart-canvas { opacity:76; }

  /* Preserve essential interaction transitions (swipe, carousel, modal) */
  .avatar-card,
  .media-carousel,
  .media-item,
  .modal-dialog,
  .contact-btn,
  .modal-contact-btn {
    transition: transform .45s cubic-bezier(.22,.8,.32,1), opacity .35s !important;
  }
  /* Avoid global transition disable so swipe still feels smooth */
}

/* Touch (no hover) environments */
@media (hover:none){
  .contact-btn:hover { transform:translateX(-50%); box-shadow:0 6px 20px -6px rgba(255,77,156,.6); }
  .modal-contact-btn:hover { transform:none; box-shadow:0 10px 26px -10px rgba(255,77,156,.6); }
}
