/* ==========================================================================
   Ungles & Nails — salon pink design system
   plum for reading · orchid for clicking · blush & petal for breathing room
   ========================================================================== */

@font-face { font-family: "Fraunces"; font-style: normal; font-display: swap; font-weight: 100 900;
  src: url(../fonts/fraunces-latin-full-normal.woff2) format("woff2-variations");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Fraunces"; font-style: normal; font-display: swap; font-weight: 100 900;
  src: url(../fonts/fraunces-latin-ext-full-normal.woff2) format("woff2-variations");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Fraunces"; font-style: italic; font-display: swap; font-weight: 100 900;
  src: url(../fonts/fraunces-latin-full-italic.woff2) format("woff2-variations");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Fraunces"; font-style: italic; font-display: swap; font-weight: 100 900;
  src: url(../fonts/fraunces-latin-ext-full-italic.woff2) format("woff2-variations");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Manrope"; font-style: normal; font-display: swap; font-weight: 200 800;
  src: url(../fonts/manrope-latin-wght-normal.woff2) format("woff2-variations");
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Manrope"; font-style: normal; font-display: swap; font-weight: 200 800;
  src: url(../fonts/manrope-latin-ext-wght-normal.woff2) format("woff2-variations");
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }

:root {
  --plum: #3E1C33;
  --plum-2: #4E2542;
  --berry: #7D3D5A;
  --orchid: #AE3A9B;
  --orchid-dark: #93307F;
  --fuchsia: #C754A4;
  --rose: #D989A2;
  --lilac: #E0A1CD;
  --blush: #FDD8DF;
  --petal: #FEEBF1;
  --mist: #FFF6F9;
  --white: #FFFFFF;
  --ink: var(--plum);
  --ink-soft: #6E4A62;
  --line: rgba(62, 28, 51, .12);
  --line-strong: rgba(62, 28, 51, .22);
  --grad: linear-gradient(100deg, var(--orchid) 0%, var(--fuchsia) 45%, var(--lilac) 100%);
  --grad-soft: linear-gradient(160deg, var(--petal) 0%, var(--blush) 100%);

  --font-display: "Fraunces", "Iowan Old Style", Georgia, serif;
  --font-body: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;

  --step--1: clamp(.84rem, .81rem + .15vw, .92rem);
  --step-0: clamp(1rem, .96rem + .2vw, 1.1rem);
  --step-1: clamp(1.18rem, 1.1rem + .4vw, 1.4rem);
  --step-2: clamp(1.45rem, 1.3rem + .8vw, 1.95rem);
  --step-3: clamp(1.9rem, 1.6rem + 1.5vw, 2.8rem);
  --step-4: clamp(2.4rem, 1.9rem + 2.6vw, 4rem);
  --step-5: clamp(2.9rem, 2rem + 4.4vw, 5.8rem);

  --gutter: clamp(1rem, .6rem + 2vw, 2.5rem);
  --section: clamp(4rem, 3rem + 5vw, 8rem);
  --radius: 22px;
  --radius-sm: 12px;
  --radius-pill: 999px;
  --shadow: 0 20px 50px -24px rgba(62, 28, 51, .35);
  --shadow-sm: 0 8px 24px -14px rgba(62, 28, 51, .35);
  --ease: cubic-bezier(.22, .8, .2, 1);
  --header-h: 76px;
}

/* ---------------------------------------------------------------- base */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 1rem); }
body { margin: 0; background: var(--petal); color: var(--ink); font-family: var(--font-body); font-size: var(--step-0); line-height: 1.65; font-weight: 450; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; overflow-x: hidden; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--orchid); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--orchid-dark); }
p { margin: 0 0 1em; }
h1, h2, h3, h4 { margin: 0 0 .5em; font-family: var(--font-display); font-weight: 500; line-height: 1.08; letter-spacing: -.015em; font-variation-settings: "SOFT" 60, "WONK" 0, "opsz" 72; color: var(--ink); }
em { font-style: italic; }
h1 em, h2 em, .display em { font-style: italic; font-variation-settings: "SOFT" 100, "WONK" 1; background: var(--grad); -webkit-background-clip: text; background-clip: text; color: transparent; padding-right: .06em; }
.display { font-size: var(--step-5); font-weight: 450; line-height: 1; letter-spacing: -.03em; margin-bottom: .35em; }
.h1 { font-size: var(--step-4); letter-spacing: -.025em; }
.h2 { font-size: var(--step-3); }
.h3 { font-size: var(--step-2); }
.h4 { font-size: var(--step-1); font-weight: 600; letter-spacing: -.01em; }
.lead { font-size: var(--step-1); line-height: 1.55; color: var(--ink-soft); max-width: 60ch; }
.eyebrow { display: inline-flex; align-items: center; gap: .6em; font-family: var(--font-body); font-size: .78rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--orchid); margin-bottom: 1.1rem; }
.eyebrow::before { content: ""; width: 1.8em; height: 1px; background: currentColor; }
.fine { font-size: var(--step--1); color: var(--ink-soft); margin-top: 2rem; }
.center { text-align: center; }
.center .lead { margin-inline: auto; }
.sr-only { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: absolute; left: -999px; top: 0; background: var(--plum); color: #fff; padding: .6rem 1rem; z-index: 100; }
.skip:focus { left: 1rem; top: 1rem; }
:focus-visible { outline: 2px solid var(--orchid); outline-offset: 3px; border-radius: 4px; }
.wrap { width: 100%; max-width: 1240px; margin-inline: auto; padding-inline: var(--gutter); }
.wrap.narrow { max-width: 920px; }
.icon { width: 1.15em; height: 1.15em; flex: none; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; vertical-align: -.2em; }
.icon .fill { fill: currentColor; stroke: none; }
.badge { display: inline-block; font-family: var(--font-body); font-size: .7rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; background: var(--blush); color: var(--berry); padding: .3em .7em; border-radius: var(--radius-pill); vertical-align: middle; }

/* gradient text + shimmer */
.grad-text { background: var(--grad); background-size: 200% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; font-style: italic; font-variation-settings: "SOFT" 100, "WONK" 1; padding-right: .08em; }
.shimmer, .rotator .grad-text { animation: shimmer 6s ease-in-out infinite; }
@keyframes shimmer { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }

/* ---------------------------------------------------------------- buttons */
.btn { --b: var(--orchid); display: inline-flex; align-items: center; justify-content: center; gap: .55em; min-height: 48px; padding: .8em 1.5em; border-radius: var(--radius-pill); border: 1.5px solid transparent; font: 650 .98rem/1.1 var(--font-body); letter-spacing: .01em; text-decoration: none; cursor: pointer; transition: transform .35s var(--ease), background-color .25s, color .25s, border-color .25s, box-shadow .35s var(--ease); white-space: nowrap; }
.btn .icon { transition: transform .35s var(--ease); }
.btn:hover .icon { transform: translateX(3px); }
.btn-primary { background: var(--orchid); color: #fff; box-shadow: 0 10px 24px -12px rgba(174, 58, 155, .8); }
.btn-primary:hover { background: var(--orchid-dark); color: #fff; transform: translateY(-2px); box-shadow: 0 16px 30px -14px rgba(174, 58, 155, .9); }
.btn-outline { background: transparent; color: var(--plum); border-color: var(--line-strong); }
.btn-outline:hover { border-color: var(--orchid); color: var(--orchid); }
.btn-light { background: #fff; color: var(--plum); }
.btn-light:hover { background: var(--blush); color: var(--plum); transform: translateY(-2px); }
.btn-ghost { background: rgba(255, 255, 255, .6); color: var(--plum); border-color: var(--line); }
.btn-link { background: none; padding-inline: .2em; color: var(--plum); border-radius: 0; min-height: 0; position: relative; }
.btn-link::after { content: ""; position: absolute; left: .2em; right: 1.9em; bottom: .35em; height: 1.5px; background: var(--orchid); transform: scaleX(.3); transform-origin: left; transition: transform .45s var(--ease); }
.btn-link:hover { color: var(--orchid); }
.btn-link:hover::after { transform: scaleX(1); }
.btn-sm { min-height: 40px; padding: .55em 1.1em; font-size: .9rem; }
.btn-lg { min-height: 56px; padding: 1em 1.8em; font-size: 1.02rem; }
.btn-row { display: flex; flex-wrap: wrap; gap: .8rem; align-items: center; margin-top: 1.8rem; }
.center-row { justify-content: center; }
.linklike { background: none; border: 0; padding: 0; font: inherit; color: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }

/* ---------------------------------------------------------------- header */
.announce { background: var(--plum); color: var(--blush); text-align: center; font-size: .85rem; padding: .5rem 1rem; }
.site-header { position: sticky; top: 0; z-index: 50; transition: background-color .3s, box-shadow .3s, backdrop-filter .3s; }
.site-header.is-scrolled { background: rgba(254, 235, 241, .86); backdrop-filter: saturate(1.4) blur(14px); -webkit-backdrop-filter: saturate(1.4) blur(14px); box-shadow: 0 1px 0 var(--line); }
.header-inner { display: flex; align-items: center; gap: 1.5rem; height: var(--header-h); }
.brand img { width: 150px; height: auto; }
.main-nav { margin-inline: auto; }
.main-nav > ul { display: flex; gap: .2rem; list-style: none; margin: 0; padding: 0; }
.main-nav a { display: inline-flex; align-items: center; gap: .3em; padding: .55em .8em; color: var(--plum); text-decoration: none; font-weight: 600; font-size: .95rem; border-radius: var(--radius-pill); position: relative; }
.main-nav > ul > li > a::after { content: ""; position: absolute; left: .8em; right: .8em; bottom: .3em; height: 1.5px; background: var(--grad); transform: scaleX(0); transform-origin: left; transition: transform .45s var(--ease); }
.main-nav > ul > li > a:hover::after, .main-nav a[aria-current="page"]::after { transform: scaleX(1); }
.main-nav a:hover { color: var(--orchid); }
.nav-flag { color: var(--orchid) !important; }
.chev { width: .9em; height: .9em; transition: transform .3s; }
.has-sub { position: relative; }
.has-sub:hover .chev, .has-sub.open .chev { transform: rotate(180deg); }
.sub { position: absolute; top: 100%; left: -1rem; padding-top: .6rem; opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity .25s, transform .35s var(--ease), visibility .25s; }
.has-sub:hover .sub, .has-sub:focus-within .sub, .has-sub.open .sub { opacity: 1; visibility: visible; transform: none; }
.sub ul { list-style: none; margin: 0; padding: .6rem; background: #fff; border-radius: 18px; box-shadow: var(--shadow); min-width: 270px; }
.sub a { display: flex; gap: .7em; width: 100%; padding: .6em .8em; border-radius: 10px; font-weight: 550; }
.sub a .icon { color: var(--orchid); }
.sub a:hover { background: var(--petal); }
.header-actions { display: flex; align-items: center; gap: .8rem; }
.lang-switch { display: flex; gap: .1rem; font-size: .78rem; font-weight: 700; letter-spacing: .06em; }
.lang-switch a { padding: .35em .45em; color: var(--ink-soft); text-decoration: none; border-radius: 6px; }
.lang-switch a[aria-current] { color: var(--plum); background: var(--blush); }
.menu-toggle { display: none; width: 46px; height: 46px; border: 1.5px solid var(--line-strong); background: transparent; border-radius: 50%; cursor: pointer; position: relative; }
.menu-toggle .bars, .menu-toggle .bars::before { position: absolute; left: 50%; width: 18px; height: 1.6px; background: var(--plum); transform: translateX(-50%); transition: transform .35s var(--ease), top .35s var(--ease); }
.menu-toggle .bars { top: 19px; }
.menu-toggle .bars::before { content: ""; top: 7px; }
.menu-toggle[aria-expanded="true"] .bars { top: 22px; transform: translateX(-50%) rotate(45deg); }
.menu-toggle[aria-expanded="true"] .bars::before { top: 0; transform: translateX(-50%) rotate(-90deg); }

.mobile-menu { position: fixed; inset: var(--header-h) 0 0; z-index: 45; background: var(--petal); overflow-y: auto; padding: 1.5rem 0 7rem; }
.mobile-menu[hidden] { display: none; }
.mobile-menu ul { list-style: none; margin: 0; padding: 0; }
.mm-label { font-size: .72rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--orchid); margin: 0 0 .5rem; }
.mm-big a { display: block; font-family: var(--font-display); font-size: 2.1rem; line-height: 1.25; color: var(--plum); text-decoration: none; padding: .15em 0; }
.mm-cats { margin: 1.2rem 0 !important; display: flex; flex-wrap: wrap; gap: .5rem; }
.mm-cats a { display: inline-block; padding: .5em 1em; border: 1px solid var(--line-strong); border-radius: var(--radius-pill); color: var(--plum); text-decoration: none; font-weight: 600; font-size: .92rem; }
.mm-small a { display: block; padding: .5em 0; color: var(--plum); text-decoration: none; font-weight: 600; border-bottom: 1px solid var(--line); }
.mm-langs { display: flex; gap: 1rem; margin-top: 1.5rem; }
.mm-langs a { color: var(--ink-soft); font-weight: 600; text-decoration: none; }
.mm-langs a[aria-current] { color: var(--orchid); }
.mobile-menu:not([hidden]) .mm-big li { animation: rise .6s var(--ease) both; }
.mobile-menu:not([hidden]) .mm-big li:nth-child(2) { animation-delay: .05s; }
.mobile-menu:not([hidden]) .mm-big li:nth-child(3) { animation-delay: .1s; }
.mobile-menu:not([hidden]) .mm-big li:nth-child(4) { animation-delay: .15s; }
@keyframes rise { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
body.menu-open { overflow: hidden; }

/* ---------------------------------------------------------------- sections */
.section { padding-block: var(--section); position: relative; }
.section-tight { padding-block: calc(var(--section) * .55); }
.section-blush { background: var(--blush); }
.section-petal { background: var(--mist); }
.section-head { max-width: 760px; margin-bottom: clamp(2rem, 1.5rem + 2vw, 3.5rem); }
.section-head .lead { margin-top: .8rem; }
.on-dark .h2, .on-dark .lead { color: #fff; }
.on-dark .lead { color: rgba(255, 255, 255, .78); }
.on-dark .eyebrow { color: var(--lilac); }

/* blobs */
.blob { position: absolute; border-radius: 50%; filter: blur(60px); opacity: .75; pointer-events: none; z-index: 0; }
.blob-a { width: 520px; height: 520px; background: radial-gradient(circle, rgba(224, 161, 205, .9), transparent 65%); top: -120px; right: -120px; animation: float 16s ease-in-out infinite; }
.blob-b { width: 420px; height: 420px; background: radial-gradient(circle, rgba(253, 216, 223, 1), transparent 65%); bottom: -120px; left: -140px; animation: float 20s ease-in-out infinite reverse; }
@keyframes float { 0%, 100% { transform: translate(0, 0); } 50% { transform: translate(-30px, 40px); } }

/* ---------------------------------------------------------------- hero */
.hero { position: relative; overflow: hidden; padding: clamp(2rem, 1rem + 4vw, 5rem) 0 clamp(3.5rem, 2rem + 5vw, 7rem); }
.hero-grid { position: relative; z-index: 1; display: grid; grid-template-columns: 1.1fr .9fr; gap: clamp(2rem, 1rem + 4vw, 5rem); align-items: center; }
.display .line { display: block; }
.rotator { display: block; position: relative; min-height: 1.1em; }
.rotator .grad-text { display: inline-block; transition: opacity .45s var(--ease), transform .55s var(--ease), filter .45s; }
.rotator .is-out { opacity: 0; transform: translateY(.35em); filter: blur(6px); }
.hero-lead { margin-top: 1rem; }
.hero-proof { margin-top: 1.8rem; }
.rating-chip { display: inline-flex; align-items: center; gap: .45em; padding: .55em 1em; background: #fff; border-radius: var(--radius-pill); color: var(--plum); text-decoration: none; font-size: .9rem; box-shadow: var(--shadow-sm); }
.rating-chip .icon { color: #E7A33E; }
.rating-chip span { color: var(--ink-soft); }
.hero-visual { position: relative; }
.arch { position: relative; aspect-ratio: 4 / 5; border-radius: 999px 999px var(--radius) var(--radius); overflow: hidden; box-shadow: var(--shadow); background: var(--blush); }
.arch img, .arch .ph { width: 100%; height: 100%; object-fit: cover; }
.arch-sm { max-width: 460px; }
.float-chip { position: absolute; display: inline-flex; align-items: center; gap: .6em; padding: .8em 1.1em; background: rgba(255, 255, 255, .92); backdrop-filter: blur(10px); border-radius: 16px; box-shadow: var(--shadow); color: var(--plum); text-decoration: none; font-weight: 600; font-size: .92rem; animation: bob 7s ease-in-out infinite; }
.float-chip .icon { color: var(--orchid); }
.float-chip strong { color: var(--orchid); font-family: var(--font-display); font-size: 1.15rem; }
.chip-a { left: -1.5rem; top: 14%; }
.chip-b { right: -1rem; bottom: 12%; flex-direction: column; align-items: flex-start; gap: .1em; animation-delay: -3s; }
@keyframes bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }

/* placeholder for missing photos */
.ph { position: relative; display: grid; place-items: center; background: radial-gradient(120% 90% at 20% 10%, var(--lilac) 0%, transparent 55%), radial-gradient(100% 80% at 90% 90%, var(--fuchsia) 0%, transparent 55%), linear-gradient(160deg, var(--rose), var(--berry)); color: #fff; overflow: hidden; min-height: 100%; }
.ph-icon { width: 30%; max-width: 110px; height: auto; stroke-width: 1; opacity: .9; }
.ph-bird { position: absolute; right: -8%; bottom: -6%; width: 55%; opacity: .14; }

/* ---------------------------------------------------------------- ticker */
.ticker { background: var(--plum); color: var(--blush); overflow: hidden; padding: 1.1rem 0; border-block: 1px solid rgba(255, 255, 255, .08); }
.ticker-track { display: flex; width: max-content; gap: 2rem; animation: marquee 40s linear infinite; font-family: var(--font-display); font-style: italic; font-size: clamp(1.25rem, 1rem + 1vw, 1.9rem); white-space: nowrap; font-variation-settings: "SOFT" 100; }
.ticker-track i { font-style: normal; color: var(--fuchsia); font-size: .7em; align-self: center; }
.ticker:hover .ticker-track { animation-play-state: paused; }
@keyframes marquee { to { transform: translateX(-50%); } }

/* ---------------------------------------------------------------- flagships */
.flagships { background: var(--plum); color: #fff; overflow: hidden; }
.outline-word { position: absolute; left: 50%; top: .1em; transform: translateX(-50%); font-family: var(--font-display); font-weight: 700; font-size: clamp(5rem, 2rem + 16vw, 17rem); line-height: 1; letter-spacing: -.04em; white-space: nowrap; color: transparent; -webkit-text-stroke: 1.5px rgba(224, 161, 205, .28); pointer-events: none; user-select: none; z-index: 0; }
.flagships .wrap { position: relative; z-index: 1; }
.tm-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); gap: clamp(1.2rem, .8rem + 1.5vw, 2rem); }
.tm-card { display: grid; grid-template-columns: 1fr; border-radius: 26px; overflow: hidden; background: var(--plum-2); border: 1px solid rgba(255, 255, 255, .08); transition: transform .5s var(--ease), box-shadow .5s var(--ease); }
.tm-card:hover { transform: translateY(-6px); box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .6); }
.tm-media { position: relative; aspect-ratio: 16 / 10; overflow: hidden; }
.tm-media img, .tm-media .ph { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.tm-card:hover .tm-media img, .tm-card:hover .tm-media .ph { transform: scale(1.04); }
.tm-outline { position: absolute; left: 1.2rem; bottom: -.18em; font-family: var(--font-display); font-weight: 700; font-size: clamp(3.5rem, 2rem + 5vw, 6rem); line-height: 1; color: transparent; -webkit-text-stroke: 1.5px rgba(255, 255, 255, .75); letter-spacing: -.03em; }
.tm-body { padding: clamp(1.4rem, 1rem + 1.5vw, 2.2rem); }
.tm-body .h3 a { color: #fff; text-decoration: none; }
.tm-body p { color: rgba(255, 255, 255, .78); }
.tm-body .eyebrow { color: var(--lilac); margin-bottom: .6rem; }
.tm-price strong { color: var(--lilac); font-family: var(--font-display); font-size: 1.3rem; }
.tm-dark .btn-link { color: #fff; }
.tm-dark .btn-row { margin-top: 1.2rem; }

/* ---------------------------------------------------------------- category cards */
.cat-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(1rem, .6rem + 1.4vw, 1.8rem); }
.cat-card { display: flex; flex-direction: column; background: #fff; border-radius: var(--radius); overflow: hidden; text-decoration: none; color: var(--ink); box-shadow: var(--shadow-sm); transition: transform .5s var(--ease), box-shadow .5s var(--ease); }
.cat-card:hover { transform: translateY(-6px); box-shadow: var(--shadow); color: var(--ink); }
.cat-media { aspect-ratio: 4 / 3; overflow: hidden; }
.cat-media img, .cat-media .ph { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.cat-card:hover .cat-media img, .cat-card:hover .cat-media .ph { transform: scale(1.05); }
.cat-body { padding: 1.4rem 1.5rem 1.5rem; display: flex; flex-direction: column; flex: 1; }
.cat-body p { color: var(--ink-soft); font-size: .96rem; }
.cat-foot { margin-top: auto; display: flex; justify-content: space-between; align-items: center; }
.from { font-size: .9rem; color: var(--ink-soft); }
.from strong { color: var(--orchid); font-family: var(--font-display); font-size: 1.25rem; font-weight: 600; }
.round-arrow { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; border: 1.5px solid var(--line-strong); color: var(--plum); transition: background .3s, color .3s, border-color .3s, transform .45s var(--ease); }
.cat-card:hover .round-arrow { background: var(--orchid); border-color: var(--orchid); color: #fff; transform: rotate(-45deg); }

/* ---------------------------------------------------------------- service list */
.popular-head { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; flex-wrap: wrap; }
.svc-group + .svc-group { margin-top: 2.5rem; }
.group-title { font-size: var(--step-1); font-weight: 600; padding-bottom: .6rem; border-bottom: 1.5px solid var(--plum); margin-bottom: .2rem; }
.svc-list { list-style: none; margin: 0; padding: 0; background: #fff; border-radius: var(--radius); box-shadow: var(--shadow-sm); overflow: hidden; }
.section-blush .svc-list { box-shadow: none; }
.svc { display: flex; justify-content: space-between; align-items: center; gap: 1.2rem; padding: 1.15rem 1.5rem; border-bottom: 1px solid var(--line); transition: background .25s; }
.svc:last-child { border-bottom: 0; }
.svc:hover { background: var(--mist); }
.svc-name { font-family: var(--font-body); font-size: 1.02rem; font-weight: 650; letter-spacing: 0; margin: 0; line-height: 1.35; }
.svc-desc { margin: .2rem 0 0; font-size: .9rem; color: var(--ink-soft); line-height: 1.5; }
.svc-meta { display: flex; align-items: center; gap: 1.1rem; flex: none; }
.svc-dur { display: inline-flex; align-items: center; gap: .35em; font-size: .86rem; color: var(--ink-soft); white-space: nowrap; }
.svc-price { font-family: var(--font-display); font-size: 1.3rem; font-weight: 600; color: var(--orchid); min-width: 4.2ch; text-align: right; white-space: nowrap; }

/* ---------------------------------------------------------------- split / why / reviews */
.split { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(2rem, 1rem + 5vw, 6rem); align-items: center; }
.why-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem; counter-reset: why; }
.why-grid li { padding: 1.8rem 1.5rem; border-radius: var(--radius); background: #fff; box-shadow: var(--shadow-sm); }
.why-num { display: block; font-family: var(--font-display); font-size: 2.6rem; line-height: 1; font-style: italic; background: var(--grad); -webkit-background-clip: text; background-clip: text; color: transparent; margin-bottom: 1rem; font-variation-settings: "SOFT" 100, "WONK" 1; }
.why-grid p { color: var(--ink-soft); font-size: .96rem; margin: 0; }
.reviews-grid { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(2rem, 1rem + 4vw, 5rem); align-items: center; }
.reviews-grid:not(:has(.quotes)) { grid-template-columns: 1fr; text-align: center; }
.reviews-grid:not(:has(.quotes)) .reviews-score { max-width: 640px; margin-inline: auto; }
.rating-big { display: flex; flex-direction: column; align-items: inherit; gap: .3rem; margin: 1rem 0 1.6rem; }
.reviews-grid:not(:has(.quotes)) .rating-big { align-items: center; }
.rating-num { font-family: var(--font-display); font-size: clamp(5rem, 3rem + 8vw, 9rem); line-height: .9; font-weight: 400; letter-spacing: -.04em; background: var(--grad); -webkit-background-clip: text; background-clip: text; color: transparent; font-style: italic; font-variation-settings: "SOFT" 100, "WONK" 1; padding-right: .06em; }
.stars { display: inline-flex; gap: .1rem; color: #E7A33E; }
.stars .icon { width: 1.3em; height: 1.3em; }
.rating-meta { color: var(--ink-soft); font-weight: 600; }
.quotes { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; }
.quote { margin: 0; padding: 1.6rem; background: #fff; border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.quote blockquote { margin: .8rem 0; font-family: var(--font-display); font-size: 1.12rem; line-height: 1.45; }
.quote figcaption { font-size: .88rem; color: var(--ink-soft); font-weight: 600; }

/* ---------------------------------------------------------------- location */
.loc-block { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.5rem, 1rem + 3vw, 4rem); background: #fff; border-radius: 28px; padding: clamp(1.4rem, 1rem + 2vw, 3rem); box-shadow: var(--shadow-sm); }
.loc-block + .loc-block { margin-top: 2rem; }
.loc-dl { margin: 1.4rem 0 0; display: grid; gap: 1.1rem; }
.loc-dl dt { display: flex; align-items: center; gap: .5em; font-size: .78rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--orchid); margin-bottom: .25rem; }
.loc-dl dd { margin: 0; font-weight: 550; }
.hours { border-collapse: collapse; font-size: .95rem; }
.hours th { text-align: left; font-weight: 600; padding: .15em 1.2em .15em 0; }
.hours td { color: var(--ink-soft); }
.hours tr.is-today th, .hours tr.is-today td { color: var(--orchid); font-weight: 700; }
.loc-nearby { margin-top: 1.4rem; color: var(--ink-soft); font-size: .95rem; }
.loc-map { border-radius: 20px; overflow: hidden; min-height: 360px; background: var(--grad-soft); position: relative; }
.loc-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.map-ph { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .8rem; text-align: center; padding: 2rem; }
.map-icon { width: 54px; height: 54px; color: var(--orchid); stroke-width: 1.2; }
.map-addr { font-family: var(--font-display); font-size: 1.3rem; line-height: 1.3; margin: 0; }
.map-ph small { color: var(--ink-soft); font-size: .78rem; max-width: 30ch; }
.loc-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; }

/* ---------------------------------------------------------------- page hero */
.page-hero { position: relative; overflow: hidden; padding: clamp(2rem, 1rem + 4vw, 5rem) 0 clamp(2.5rem, 1.5rem + 4vw, 5rem); background: var(--grad-soft); }
.page-hero .outline-word { -webkit-text-stroke-color: rgba(174, 58, 155, .14); top: auto; bottom: -.25em; }
.page-hero .wrap { position: relative; z-index: 1; }
.page-hero .h1 { max-width: 18ch; }
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; margin-top: 1.6rem; }
.from-pill { display: inline-flex; align-items: baseline; gap: .35em; padding: .6em 1.1em; border-radius: var(--radius-pill); background: rgba(255, 255, 255, .75); font-size: .92rem; color: var(--ink-soft); }
.from-pill strong { font-family: var(--font-display); font-size: 1.3rem; color: var(--orchid); }
.from-pill.on-dark { background: rgba(255, 255, 255, .08); color: rgba(255, 255, 255, .75); }
.from-pill.on-dark strong { color: var(--lilac); }
.crumbs ol { display: flex; flex-wrap: wrap; gap: .4rem; list-style: none; margin: 0 0 1.4rem; padding: 0; font-size: .84rem; color: var(--ink-soft); }
.crumbs li + li::before { content: "/"; margin-right: .4rem; opacity: .5; }
.crumbs a { color: inherit; text-decoration: none; }
.crumbs a:hover { color: var(--orchid); }
.chip-nav { display: flex; flex-wrap: wrap; gap: .6rem; }
.chip { display: inline-flex; align-items: center; gap: .5em; padding: .6em 1.1em; background: #fff; border: 1px solid var(--line); border-radius: var(--radius-pill); color: var(--plum); text-decoration: none; font-weight: 600; font-size: .92rem; transition: border-color .25s, color .25s, background .25s; }
.chip .icon { color: var(--orchid); }
.chip:hover, .chip.is-active { border-color: var(--orchid); color: var(--orchid); }
.chip.is-active { background: var(--blush); }
.price-nav-wrap { position: sticky; top: var(--header-h); z-index: 20; background: rgba(254, 235, 241, .92); backdrop-filter: blur(12px); border-bottom: 1px solid var(--line); }
.price-nav { flex-wrap: nowrap; overflow-x: auto; padding-block: .8rem; scrollbar-width: none; }
.price-nav::-webkit-scrollbar { display: none; }
.price-nav .chip { flex: none; }
.price-cat + .price-cat { margin-top: 4rem; }
.price-cat-head a { color: inherit; text-decoration: none; }
.price-cat-head a:hover { color: var(--orchid); }

/* ---------------------------------------------------------------- treatment page */
.tm-hero { position: relative; overflow: hidden; background: var(--plum); color: #fff; padding: clamp(2rem, 1rem + 4vw, 5rem) 0 clamp(3.5rem, 2rem + 5vw, 7rem); }
.tm-hero .outline-word { top: auto; bottom: -.18em; -webkit-text-stroke-color: rgba(224, 161, 205, .22); }
.tm-hero .blob-a { opacity: .35; }
.tm-hero-grid { position: relative; z-index: 1; display: grid; grid-template-columns: 1.15fr .85fr; gap: clamp(2rem, 1rem + 4vw, 5rem); align-items: center; }
.tm-hero .display { color: #fff; font-size: clamp(2.6rem, 1.8rem + 4vw, 5.2rem); }
.tm-hero .lead { color: rgba(255, 255, 255, .8); }
.tm-hero .eyebrow { color: var(--lilac); }
.tm-hero .crumbs ol { color: rgba(255, 255, 255, .6); }
.tm-hero-media .arch { max-width: 440px; margin-left: auto; }
.hl-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.hl { padding: 2rem 1.7rem; background: #fff; border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.hl-icon { display: grid; place-items: center; width: 54px; height: 54px; border-radius: 16px; background: var(--grad); color: #fff; margin-bottom: 1.2rem; }
.hl-icon .icon { width: 26px; height: 26px; }
.hl p { color: var(--ink-soft); margin: 0; }
.steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 1.5rem; position: relative; }
.steps li { position: relative; padding-top: 4.2rem; }
.steps li::before { content: ""; position: absolute; top: 1.6rem; left: 3.4rem; right: -1.5rem; height: 1.5px; background: linear-gradient(90deg, var(--orchid), transparent); }
.steps li:last-child::before { display: none; }
.step-num { position: absolute; top: 0; left: 0; display: grid; place-items: center; width: 3.2rem; height: 3.2rem; border-radius: 50%; background: var(--plum); color: #fff; font-family: var(--font-display); font-size: 1.3rem; font-style: italic; }
.steps p { color: var(--ink-soft); margin: 0; }
.two-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.info-card { padding: clamp(1.6rem, 1rem + 2vw, 2.6rem); border-radius: var(--radius); background: #fff; box-shadow: var(--shadow-sm); }
.info-card-soft { background: var(--blush); box-shadow: none; }
.info-card p { margin: 0; color: var(--ink-soft); }
.faq details { border-bottom: 1px solid var(--line-strong); }
.faq summary { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1.3rem 0; cursor: pointer; list-style: none; font-family: var(--font-display); font-size: var(--step-1); font-weight: 500; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary .icon { color: var(--orchid); transition: transform .35s var(--ease); width: 1.4em; height: 1.4em; }
.faq details[open] summary .icon { transform: rotate(45deg); }
.faq-a { padding: 0 3rem 1.4rem 0; color: var(--ink-soft); }

/* ---------------------------------------------------------------- gallery */
.gallery-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin-bottom: 2rem; }
.gallery-strip figure { margin: 0; aspect-ratio: 1; border-radius: 18px; overflow: hidden; }
.gallery-strip img { width: 100%; height: 100%; object-fit: cover; }
.masonry { columns: 3 280px; column-gap: 1rem; }
.masonry figure { margin: 0 0 1rem; break-inside: avoid; border-radius: 18px; overflow: hidden; background: #fff; }
.masonry figcaption { padding: .7rem 1rem; font-size: .88rem; color: var(--ink-soft); }

/* ---------------------------------------------------------------- CTA band */
.cta-band { position: relative; overflow: hidden; padding-block: clamp(4rem, 3rem + 5vw, 7.5rem); background: linear-gradient(120deg, var(--plum) 0%, var(--berry) 55%, var(--orchid) 100%); color: #fff; text-align: center; }
.cta-inner { position: relative; max-width: 780px; }
.cta-inner .h2 { color: #fff; }
.cta-inner .h2 em { background: linear-gradient(90deg, var(--blush), var(--lilac)); -webkit-background-clip: text; background-clip: text; }
.cta-inner p { color: rgba(255, 255, 255, .82); font-size: var(--step-1); }
.cta-inner .btn-row { justify-content: center; }
.cta-bird { position: absolute; width: 220px; right: -120px; top: -50px; opacity: .12; transform: rotate(-8deg); }

/* ---------------------------------------------------------------- prose / legal */
.prose h2 { font-size: var(--step-2); margin-top: 2.2rem; }
.prose ul { padding-left: 1.2rem; }
.prose li { margin-bottom: .4rem; }
.legal { background: #fff; border-radius: var(--radius); padding: clamp(1.5rem, 1rem + 3vw, 3.5rem); box-shadow: var(--shadow-sm); }
.legal h2:first-child { margin-top: 0; }

/* ---------------------------------------------------------------- footer */
.site-footer { background: var(--plum); color: rgba(255, 255, 255, .78); padding-top: clamp(3.5rem, 2.5rem + 4vw, 6rem); font-size: .95rem; }
.site-footer a { color: rgba(255, 255, 255, .85); text-decoration: none; }
.site-footer a:hover { color: var(--lilac); }
.footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 2.5rem; padding-bottom: 3rem; }
.footer-brand img { width: 170px; margin-bottom: 1.2rem; }
.footer-h { font-size: .74rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--lilac); margin-bottom: 1rem; }
.footer-h-sm { margin-top: 1.6rem; }
.site-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.site-footer address { font-style: normal; margin-bottom: 1rem; line-height: 1.6; }
.footer-contact a { display: inline-flex; align-items: center; gap: .5em; }
.social { display: flex; gap: .6rem; margin-top: 1rem; }
.social a { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .2); }
.social a:hover { background: var(--orchid); border-color: var(--orchid); color: #fff; }
.footer-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem; padding-block: 1.6rem 2rem; border-top: 1px solid rgba(255, 255, 255, .1); font-size: .84rem; }
.footer-bottom p { margin: 0; }
.footer-bottom ul { display: flex; flex-wrap: wrap; gap: 1.2rem; }
.credits { opacity: .7; }

/* ---------------------------------------------------------------- mobile book bar, dialog, cookies */
.mobile-book-bar { display: none; }
.book-chooser { border: 0; border-radius: 24px; padding: 2rem; width: min(92vw, 420px); box-shadow: var(--shadow); color: var(--ink); }
.book-chooser::backdrop { background: rgba(62, 28, 51, .45); backdrop-filter: blur(4px); }
.book-chooser .h3 { margin-bottom: 1.2rem; }
.chooser-list { display: grid; gap: .6rem; }
.chooser-list a { justify-content: space-between; }
.dialog-close { position: absolute; top: 1rem; right: 1rem; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--line); background: #fff; cursor: pointer; color: var(--plum); }
.cookie-banner { position: fixed; left: 1rem; right: 1rem; bottom: 1rem; z-index: 60; max-width: 560px; padding: 1.3rem 1.4rem; background: #fff; border-radius: 20px; box-shadow: 0 24px 60px -20px rgba(62, 28, 51, .5); font-size: .92rem; }
.cookie-banner p { margin-bottom: 1rem; }
.cookie-actions { display: flex; gap: .6rem; justify-content: flex-end; }
.cookie-banner[hidden] { display: none; }

/* hummingbird cursor */
.bird-cursor { position: fixed; top: 0; left: 0; width: 34px; height: 32px; pointer-events: none; z-index: 9999; background-size: contain; background-repeat: no-repeat; transform: translate3d(-100px, -100px, 0); transition: opacity .2s; }
html.has-bird-cursor, html.has-bird-cursor a, html.has-bird-cursor button { cursor: none; }
html.has-bird-cursor input, html.has-bird-cursor textarea { cursor: auto; }

/* ---------------------------------------------------------------- motion: reveal + split words */
.js [data-reveal] { opacity: 0; transform: translateY(26px); transition: opacity .9s var(--ease), transform .9s var(--ease); transition-delay: calc(var(--i, 0) * 90ms); }
.js [data-reveal].is-in { opacity: 1; transform: none; }
.js [data-split] .w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .08em; margin-bottom: -.08em; }
.js [data-split] .w > span { display: inline-block; transform: translateY(105%); transition: transform 1s var(--ease); transition-delay: calc(var(--wi, 0) * 60ms); }
.js [data-split].is-in .w > span { transform: none; }
.js [data-split].is-split em { background: none; color: inherit; -webkit-background-clip: border-box; background-clip: border-box; }
.js [data-split] .w > span.g { background: var(--grad); -webkit-background-clip: text; background-clip: text; color: transparent; padding-right: .06em; }
.cta-inner [data-split] .w > span.g { background: linear-gradient(90deg, var(--blush), var(--lilac)); -webkit-background-clip: text; background-clip: text; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; scroll-behavior: auto !important; }
  .js [data-reveal], .js [data-split] .w > span { opacity: 1; transform: none; }
  .ticker-track { animation: none; }
}

/* ---------------------------------------------------------------- responsive */
@media (max-width: 1180px) {
  .main-nav a { padding-inline: .55em; font-size: .9rem; }
  .brand img { width: 130px; }
}
@media (max-width: 1040px) {
  .main-nav, .lang-switch { display: none; }
  .menu-toggle { display: block; }
  .header-actions { margin-left: auto; }
  .cat-grid { grid-template-columns: repeat(2, 1fr); }
  .why-grid { grid-template-columns: repeat(2, 1fr); }
  .footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 860px) {
  :root { --header-h: 66px; }
  .hero-grid, .split, .reviews-grid, .tm-hero-grid, .loc-block, .two-cards { grid-template-columns: 1fr; }
  .hero-visual { max-width: 440px; margin-inline: auto; width: 100%; }
  .chip-a { left: -.4rem; }
  .chip-b { right: -.4rem; }
  .tm-hero-media .arch { margin: 0 auto; max-width: 360px; }
  .hl-grid { grid-template-columns: 1fr; }
  .quotes { grid-template-columns: 1fr; }
  .gallery-strip { grid-template-columns: repeat(2, 1fr); }
  .loc-map { min-height: 280px; }
  .split-media { order: 2; }
}
@media (max-width: 640px) {
  .header-book { display: none; }
  .cat-grid, .why-grid, .footer-grid { grid-template-columns: 1fr; }
  .svc { flex-direction: column; align-items: stretch; gap: .8rem; padding: 1rem 1.1rem; }
  .svc-meta { justify-content: space-between; }
  .svc-price { margin-left: auto; }
  .btn-row .btn-lg { width: 100%; }
  .mobile-book-bar { display: flex; gap: .5rem; position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; padding: .7rem 1rem calc(.7rem + env(safe-area-inset-bottom)); background: rgba(254, 235, 241, .94); backdrop-filter: blur(12px); border-top: 1px solid var(--line); transform: translateY(110%); transition: transform .45s var(--ease); }
  .mobile-book-bar.is-visible { transform: none; }
  .mobile-book-bar .btn-primary { flex: 1; }
  .mobile-book-bar .btn-ghost { width: 48px; padding: 0; }
  body { padding-bottom: 0; }
  .site-footer { padding-bottom: 4.5rem; }
  .cookie-banner { bottom: 5.2rem; }
  .faq-a { padding-right: 0; }
  .steps li::before { display: none; }
}
@media print {
  .site-header, .mobile-book-bar, .cookie-banner, .cta-band, .ticker { display: none !important; }
  body { background: #fff; }
}
@media (max-width: 640px) {
  .flagships .outline-word { font-size: 4.2rem; top: .15em; opacity: .55; }
  .section-head .eyebrow { position: relative; z-index: 1; }
}
