/* generated from index.html <style> — regenerate after changes there */

:root{
  --ground:#FDF4F1; --surface:#FFFFFF; --ink:#3A2028; --muted:#8A6470;
  --rose:#B3325A; --rose-deep:#8E1C43;
  --teal:#B3325A; --teal-text:#B3325A; --band:#8E1C43; --on-band:#FCEFF3; --on-band-muted:#E7C3CF;
  --gold:#C9A227; --gold-text:#806014; --blush:#F7DCE2; --peach:#F7DCE2; --peach-ink:#6B2338;
  --line:#EBD3D8; --line-strong:#D3A9B5; --cross:#B3325A; --tick:#C9A227;
  --map-bg:#FBF0EC; --map-road:#DCC3C9; --map-box:#F6E2D6; --map-ink:#3A2028; --pin:#B3325A;
  --shadow:0 1px 2px rgba(58,32,40,.07),0 10px 28px rgba(142,28,67,.10);
  --serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --script:"Pinyon Script","Cormorant Garamond",cursive;
  --sans:"Karla",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --kn:"Noto Sans Kannada","Tunga","Kedage",sans-serif;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --ground:#1B1014; --surface:#251820; --ink:#F3E3E7; --muted:#BFA2AC;
    --rose:#E8A0B8; --rose-deep:#7A1A3C;
    --teal-text:#E8A0B8; --band:#7A1A3C; --on-band:#FCEFF3; --on-band-muted:#E0BCC8;
    --gold:#D6B066; --gold-text:#D6B066; --blush:#3A2129; --peach:#3A2129; --peach-ink:#F7DCE2;
    --line:#3C242D; --line-strong:#6B4553; --cross:#E8A0B8; --tick:#D6B066;
    --map-bg:#2A1922; --map-road:#4E3540; --map-box:#3A2129; --map-ink:#F3E3E7; --pin:#E8A0B8;
    --shadow:0 1px 2px rgba(0,0,0,.34),0 10px 28px rgba(0,0,0,.30);
  }
}
:root[data-theme="dark"]{
    color-scheme:dark;
    --ground:#1B1014; --surface:#251820; --ink:#F3E3E7; --muted:#BFA2AC;
    --rose:#E8A0B8; --rose-deep:#7A1A3C;
    --teal-text:#E8A0B8; --band:#7A1A3C; --on-band:#FCEFF3; --on-band-muted:#E0BCC8;
    --gold:#D6B066; --gold-text:#D6B066; --blush:#3A2129; --peach:#3A2129; --peach-ink:#F7DCE2;
    --line:#3C242D; --line-strong:#6B4553; --cross:#E8A0B8; --tick:#D6B066;
    --map-bg:#2A1922; --map-road:#4E3540; --map-box:#3A2129; --map-ink:#F3E3E7; --pin:#E8A0B8;
    --shadow:0 1px 2px rgba(0,0,0,.34),0 10px 28px rgba(0,0,0,.30);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit}
.wrap{max-width:1120px;margin-inline:auto;padding-inline:20px}
h1,h2,h3{margin:0;text-wrap:balance;font-weight:400}
p{margin:0}
/* language switching */
body:not(.lang-kn) .kn{display:none!important}
body.lang-kn .en{display:none!important}
[lang="kn"]{font-family:var(--kn)}
/* zari border: a saree-border band */
.zari{height:18px;background:var(--ground) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='18' viewBox='0 0 44 18'%3E%3Cg fill='none' stroke='%23C9A227' stroke-width='1.1'%3E%3Cpath d='M0 3.2h44M0 14.8h44'/%3E%3Cpath d='M22 5.4l3.2 3.6-3.2 3.6-3.2-3.6z'/%3E%3Cpath d='M8 9h5M31 9h5'/%3E%3C/g%3E%3Ccircle cx='4' cy='9' r='1.3' fill='%23C9A227'/%3E%3Ccircle cx='40' cy='9' r='1.3' fill='%23C9A227'/%3E%3Ccircle cx='22' cy='9' r='1' fill='%23B3325A'/%3E%3C/svg%3E") repeat-x center/44px 18px}

/* header */
.top .bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-block:14px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;min-width:0}
.brand img{width:46px;height:46px;flex:none}
.brand .nm{display:block;font-family:var(--serif);font-size:1.45rem;letter-spacing:.08em;text-transform:uppercase;line-height:1.05;color:var(--teal-text)}
.brand .nm[lang="kn"], .brand .nm .kn{font-family:var(--kn);font-weight:700;font-size:1.15rem;letter-spacing:0;text-transform:none}
.brand .tag{display:block;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-text);font-weight:600;margin-top:3px}
.brand .tag .kn{letter-spacing:0;text-transform:none;font-size:.8rem}
.lang{display:flex;border:1px solid var(--line-strong);border-radius:6px;overflow:hidden;flex:none}
.lang button{font:600 .82rem var(--sans);padding:7px 12px;border:0;background:transparent;color:var(--muted);cursor:pointer}
.lang button[lang="kn"]{font-family:var(--kn)}
.lang button[aria-pressed="true"]{background:var(--band);color:var(--on-band)}
.lang button:focus-visible,.btn:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:2px}

/* hero */
.hero{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center;padding-block:40px 24px}
.eyebrow{font-size:.8rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-text)}
.eyebrow .kn{letter-spacing:0;text-transform:none;font-size:.95rem}
.hero h1{font-family:var(--serif);font-size:clamp(2.5rem,5.4vw,4.1rem);line-height:1.04;margin-top:14px;color:var(--ink)}
.hero h1 .kn{font-family:var(--kn);font-weight:700;font-size:.66em;line-height:1.35;display:block}
.lede{font-size:1.08rem;color:var(--muted);margin-top:18px;max-width:34em}
.ctas{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.btn{display:inline-flex;align-items:center;gap:10px;padding:13px 20px;border-radius:6px;font:600 1rem var(--sans);text-decoration:none;border:1.5px solid var(--band);transition:transform .15s ease,background .15s ease}
.btn .kn{font-family:var(--kn)}
.btn:hover{transform:translateY(-1px)}
.btn.primary{background:var(--band);color:var(--on-band)}
.btn.ghost{background:transparent;color:var(--teal-text);border-color:var(--line-strong)}
.btn svg{width:22px;height:22px;flex:none}
.meta{margin-top:18px;font-size:.9rem;color:var(--muted)}
.hero-art{position:relative;aspect-ratio:1/0.92;max-width:100%}
.ph{position:absolute;margin:0;border-radius:50%;overflow:hidden;box-shadow:0 0 0 3px var(--gold),0 0 0 9px var(--ground),0 0 0 10px var(--line),var(--shadow);background:var(--surface)}
.ph img{width:100%;height:100%;object-fit:cover}
.ph.p1{width:62%;aspect-ratio:1;left:2%;top:4%}
.ph.p2{width:42%;aspect-ratio:1;right:2%;top:0}
.ph.p3{width:44%;aspect-ratio:1;right:10%;bottom:0}

/* section base */
.sec{padding-block:clamp(56px,8vw,96px)}
.sec-head{max-width:40em}
.sec h2{font-family:var(--serif);font-size:clamp(2rem,3.6vw,2.8rem);line-height:1.1}
.sec h2 .kn{font-family:var(--kn);font-weight:700;font-size:.72em;line-height:1.35}
.sec h2 em{font-style:italic;color:var(--gold-text)}
.sec-head p{color:var(--muted);margin-top:12px}

/* compare */
.cmp{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:32px}
.col{border-radius:10px;padding:28px}
.col.usual{background:var(--surface);border:1px solid var(--line)}
.col.here{background:var(--band);color:var(--on-band)}
.col h3{font:600 .8rem var(--sans);letter-spacing:.14em;text-transform:uppercase;margin-bottom:14px;color:var(--muted)}
.col.here h3{color:var(--gold)}
.col h3.kn{letter-spacing:0;text-transform:none;font-family:var(--kn);font-size:.95rem}
.col ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.col li{display:grid;grid-template-columns:26px 1fr;gap:12px;align-items:start}
/* Ten drawn icons, one per line, at a single stroke weight — the same
   × repeated five times said nothing the sentence had not already said. */
.col li svg{width:24px;height:24px;margin-top:2px;overflow:visible}
.col.usual li svg{opacity:.85}
.col.usual li{color:var(--muted)}
.story{margin-top:20px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:22px 28px;display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:start}
.story .when{font-family:var(--serif);font-size:1.6rem;line-height:1;color:var(--gold-text);white-space:nowrap}
.story p{color:var(--muted)}
.story b{color:var(--ink);font-weight:600}

/* never band */
.never{background:var(--band);color:var(--on-band)}
.never .wrap{padding-block:clamp(48px,7vw,80px);display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:center}
.never .big{font-family:var(--serif);font-size:clamp(2.2rem,4.6vw,3.6rem);line-height:1.05}
.never .big.kn{font-family:var(--kn);font-weight:700;font-size:clamp(1.6rem,3.2vw,2.4rem);line-height:1.3}
.never p:not(.big){color:var(--on-band-muted);font-size:1.08rem}

/* rates */
.rate-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:20px;margin-top:32px;align-items:start}
.rate-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:26px 28px}
.rate-card h3{font:600 .8rem var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--gold-text);margin-bottom:10px}
.rate-card h3.kn{letter-spacing:0;text-transform:none;font-family:var(--kn);font-size:.95rem}
.rl{list-style:none;margin:0;padding:0}
.rl li{display:flex;align-items:baseline;gap:10px;padding-block:9px}
.rl .n{font-weight:500}
.rl .d{flex:1;border-bottom:2px dotted var(--line-strong);transform:translateY(-5px);min-width:16px}
.rl .v{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--teal-text)}
.rl .v small{font-weight:500;font-size:.78rem;color:var(--muted);margin-right:4px}
.fine{font-size:.88rem;color:var(--muted);margin-top:14px}
.side{display:grid;gap:20px;align-content:start}
.welcome{background:var(--peach);color:var(--peach-ink);border-radius:10px;padding:24px 28px;position:relative;overflow:hidden}
.welcome .tl{font:600 .78rem var(--sans);letter-spacing:.14em;text-transform:uppercase}
.welcome .tl.kn{letter-spacing:0;text-transform:none;font-family:var(--kn);font-size:.92rem}
.welcome p.main{font-family:var(--serif);font-size:1.45rem;line-height:1.4;margin-top:8px;padding-right:74px}
.welcome p.main.kn{font-family:var(--kn);font-size:1.05rem;line-height:1.55}
.welcome .fine{color:inherit;opacity:.85}
.seal{position:absolute;right:18px;top:18px;width:64px;height:64px;border-radius:50%;background:var(--gold);color:#1B1206;display:grid;place-items:center;font:700 .82rem var(--sans);letter-spacing:.1em;box-shadow:0 0 0 3px var(--peach),0 0 0 4px var(--gold);transform:rotate(-10deg)}
.seal .kn{font-family:var(--kn);letter-spacing:0;font-size:.9rem}

/* steps */
.steps{list-style:none;margin:32px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:20px;counter-reset:s}
.steps li{counter-increment:s;border-top:2px solid var(--gold);padding-top:16px}
.steps li::before{content:counter(s);display:block;font-family:var(--serif);font-size:2.6rem;line-height:1;color:var(--gold-text);margin-bottom:10px}
.steps h3{font:600 1.05rem var(--sans);margin-bottom:6px}
.steps h3.kn{font-family:var(--kn)}
.steps p{color:var(--muted);font-size:.96rem}

/* visit */
.visit{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start;margin-top:32px}
.addr{font-size:1.1rem;font-weight:500}
.marks{color:var(--muted);margin-top:8px}
.facts{margin:24px 0 0;display:grid;grid-template-columns:auto 1fr;gap:10px 20px}
.facts dt{font:600 .74rem var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--gold-text);padding-top:4px}
.facts dt.kn{letter-spacing:0;text-transform:none;font-family:var(--kn);font-size:.86rem}
.facts dd{margin:0;font-variant-numeric:tabular-nums}
.facts dd small{color:var(--muted);font-size:.86rem}
.visit .ctas{margin-top:24px}
.map{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px;box-shadow:var(--shadow)}
.map svg{width:100%;height:auto;display:block;border-radius:6px}
.map .cap{font-size:.82rem;color:var(--muted);padding:10px 4px 2px}
.m-bg{fill:var(--map-bg)}
.m-road{stroke:var(--map-road)}
.m-lane{stroke:var(--map-bg)}
.m-box{fill:var(--map-box);stroke:var(--gold)}
.m-shop{fill:var(--surface);stroke:var(--gold)}
.m-t{fill:var(--map-ink);font-family:var(--sans);font-weight:600}
.m-tk{fill:var(--map-ink);font-family:var(--kn);font-weight:700}
.m-shopt{fill:var(--teal-text);font-family:var(--sans);font-weight:700}
.m-shoptk{fill:var(--teal-text);font-family:var(--kn);font-weight:700}
.m-small{fill:var(--muted);font-family:var(--sans)}
.m-smallk{fill:var(--muted);font-family:var(--kn)}
.m-arrow{stroke:var(--map-ink);fill:none}
.m-pin{fill:var(--pin)}
.m-roadt{fill:var(--map-ink);font-family:var(--sans);font-weight:600;opacity:.75}
.m-roadtk{fill:var(--map-ink);font-family:var(--kn);font-weight:700;opacity:.75}

/* footer */
.foot{background:var(--band);color:var(--on-band-muted);padding-bottom:calc(24px + env(safe-area-inset-bottom,0px))}
.foot .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px 32px;padding-block:28px 8px;font-size:.9rem}
.foot b{color:var(--on-band);font-weight:600}
.foot .brandline{display:flex;align-items:center;gap:12px}
.foot .brandline img{width:44px;height:44px;padding:5px;border-radius:50%;background:#F4EFE3}

/* mobile dock */
.dock{display:none}
@media (max-width:860px){
  body{font-size:16px}
  .hero{grid-template-columns:1fr;gap:32px;padding-block:20px 56px}
  .hero-art{order:-1;aspect-ratio:auto;display:flex;justify-content:center;gap:14px;padding-block:6px}
  .ph{position:relative;inset:auto!important;width:31%!important;max-width:150px}
  .cmp,.rate-grid,.visit,.never .wrap{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr 1fr}
  .dock{display:grid;grid-template-columns:1fr 1fr;gap:10px;position:fixed;left:0;right:0;bottom:0;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));background:var(--surface);border-top:1px solid var(--line);z-index:20;box-shadow:0 -6px 20px rgba(0,0,0,.08)}
  .dock .btn{justify-content:center;padding:12px 10px}
  .foot{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
}
@media (max-width:520px){
  .brand .tag{display:none}
  .brand .nm{font-size:1.2rem}
  .steps{grid-template-columns:1fr}
  .col,.rate-card,.welcome{padding:22px 20px}
  .story{grid-template-columns:1fr;gap:8px;padding:20px}
  .ctas .btn{flex:1 1 100%;justify-content:center}
}

/* ============================================================
   MOTION LAYER — "fabric settling"
   Tailoring shop: cloth is laid down and smoothed, never bounced.
   Everything decelerates into place; nothing overshoots.

   SAFETY CONTRACT
   - JS adds .pb-r to reveal targets. Without JS, nothing is hidden,
     so content and SEO are unaffected if the script never runs.
   - JS skips the whole layer when prefers-reduced-motion is set,
     so there is no "animate to visible" trap for those users.
   - Only transform/opacity animate => no layout shift, no CLS cost.
   ============================================================ */

/* The settle curve: quick depart, long soft landing. */
:root{ --pb-ease:cubic-bezier(.22,.61,.36,1); --pb-dur:.72s; }

/* --- scroll reveal ------------------------------------------------ */
.pb-r{opacity:0;transform:translateY(14px);
  transition:opacity var(--pb-dur) var(--pb-ease),transform var(--pb-dur) var(--pb-ease);
  will-change:opacity,transform}
.pb-r.pb-in{opacity:1;transform:none}
/* stagger inside a group */
.pb-r[data-pb-d="1"]{transition-delay:.07s}
.pb-r[data-pb-d="2"]{transition-delay:.14s}
.pb-r[data-pb-d="3"]{transition-delay:.21s}
.pb-r[data-pb-d="4"]{transition-delay:.28s}
.pb-r[data-pb-d="5"]{transition-delay:.35s}
.pb-r[data-pb-d="6"]{transition-delay:.42s}

/* --- hero entrance ------------------------------------------------ */
/* Runs once on load. The eyebrow, headline, blurb, buttons and hours
   arrive in reading order, then the photographs settle in last. */
.pb-anim .hero-text>*{opacity:0;animation:pb-settle .8s var(--pb-ease) forwards}
.pb-anim .hero-text>*:nth-child(1){animation-delay:.05s}
.pb-anim .hero-text>*:nth-child(2){animation-delay:.14s}
.pb-anim .hero-text>*:nth-child(3){animation-delay:.23s}
.pb-anim .hero-text>*:nth-child(4){animation-delay:.32s}
.pb-anim .hero-text>*:nth-child(5){animation-delay:.41s}
@keyframes pb-settle{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

/* Photographs: each one drops in on its own beat, like garments hung up. */
.pb-anim .hero-art .ph{opacity:0;animation:pb-drop .9s var(--pb-ease) forwards}
.pb-anim .hero-art .ph.p1{animation-delay:.34s}
.pb-anim .hero-art .ph.p2{animation-delay:.46s}
.pb-anim .hero-art .ph.p3{animation-delay:.58s}
@keyframes pb-drop{from{opacity:0;transform:translateY(20px) scale(.965)}to{opacity:1;transform:none}}

/* Then they breathe, barely. Different periods so they never sync up
   into a single pulsing blob.
   NOTE: the `animation` shorthand below resets animation-fill-mode to
   `none`, which would drop the forwards-fill from pb-drop and snap the
   photo back to opacity:0. Pinning opacity here is what keeps them up. */
.pb-anim .hero-art.pb-settled .ph{opacity:1}
.pb-anim .hero-art.pb-settled .ph.p1{animation:pb-float1 9s ease-in-out infinite}
.pb-anim .hero-art.pb-settled .ph.p2{animation:pb-float2 11s ease-in-out infinite}
.pb-anim .hero-art.pb-settled .ph.p3{animation:pb-float3 10s ease-in-out infinite}
@keyframes pb-float1{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes pb-float2{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes pb-float3{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}

/* --- the signature: zari catching light --------------------------- */
/* Real zari thread flashes as you turn the cloth. One slow sweep,
   with a long pause between, so it reads as light and not as a loader. */
.zari{position:relative;overflow:hidden}
.pb-anim .zari::after{content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.5) 50%,transparent 70%);
  transform:translateX(-120%);animation:pb-sheen 7s cubic-bezier(.4,0,.2,1) 2 both}
@keyframes pb-sheen{0%{transform:translateX(-120%)}38%,100%{transform:translateX(120%)}}

/* --- buttons ------------------------------------------------------ */
/* A lift plus a gold ring blooming outward — the same gold ring the
   photographs wear, so the hover belongs to the brand. */
.btn{position:relative;transition:transform .2s var(--pb-ease),background .2s ease,box-shadow .28s var(--pb-ease)}
.btn::after{content:"";position:absolute;inset:-3px;border-radius:9px;pointer-events:none;
  box-shadow:0 0 0 0 rgba(201,162,78,0);transition:box-shadow .32s var(--pb-ease)}
@media (hover:hover){
  .btn:hover{transform:translateY(-2px)}
  .btn:hover::after{box-shadow:0 0 0 3px rgba(201,162,78,.32)}
}
.btn:active{transform:translateY(0)}
.btn:focus-visible{outline:3px solid var(--gold);outline-offset:3px}

/* --- rate rows ---------------------------------------------------- */
/* The dotted leader draws left to right, then the price arrives —
   the eye is walked from service to price rather than shown both. */
.pb-anim .rl li{position:relative}
.pb-r.pb-in .rl li{animation:pb-line .55s var(--pb-ease) backwards}
.pb-r.pb-in .rl li:nth-child(1){animation-delay:.10s}
.pb-r.pb-in .rl li:nth-child(2){animation-delay:.16s}
.pb-r.pb-in .rl li:nth-child(3){animation-delay:.22s}
.pb-r.pb-in .rl li:nth-child(4){animation-delay:.28s}
.pb-r.pb-in .rl li:nth-child(5){animation-delay:.34s}
.pb-r.pb-in .rl li:nth-child(6){animation-delay:.40s}
.pb-r.pb-in .rl li:nth-child(7){animation-delay:.46s}
.pb-r.pb-in .rl li:nth-child(8){animation-delay:.52s}
.pb-r.pb-in .rl li:nth-child(9){animation-delay:.58s}
@keyframes pb-line{from{opacity:0;transform:translateX(-6px)}to{opacity:1;transform:none}}

/* --- cards -------------------------------------------------------- */
.rate-card,.col,.welcome{transition:transform .3s var(--pb-ease),box-shadow .3s var(--pb-ease)}
@media (hover:hover){
  .rate-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
}

/* --- language toggle --------------------------------------------- */
.lang button{transition:background .2s ease,color .2s ease,transform .15s var(--pb-ease)}
.lang button:active{transform:scale(.96)}

/* --- dock --------------------------------------------------------- */
/* Slides up once the hero CTAs are scrolled past, so it never competes
   with the buttons already on screen. */
@media (max-width:860px){
  .pb-anim .dock{transform:translateY(105%);transition:transform .42s var(--pb-ease)}
  .pb-anim .dock.pb-dock-in{transform:none}
}

/* --- honour the user's setting ------------------------------------ */
/* Belt and braces: JS already skips the layer, this kills anything
   that slipped through (e.g. the always-on sheen and float). */
@media (prefers-reduced-motion:reduce){
  .pb-r{opacity:1!important;transform:none!important;transition:none!important}
  .pb-anim .hero-text>*,.pb-anim .hero-art .ph{opacity:1!important;animation:none!important}
  .pb-anim .zari::after{animation:none!important;display:none}
  .pb-anim .dock{transform:none!important}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
}


/* featured strip on the home page */
.feat-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-top:26px}
.feat-strip a{position:relative;display:block;border-radius:10px;overflow:hidden;box-shadow:var(--shadow);
  transition:transform .28s var(--pb-ease,ease)}
.feat-strip img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;background:var(--peach)}
.feat-strip .code{position:absolute;left:7px;bottom:7px;background:rgba(142,28,67,.92);color:var(--on-band);
  font:600 .68rem var(--sans);letter-spacing:.05em;padding:3px 7px;border-radius:4px}
@media (hover:hover){.feat-strip a:hover{transform:translateY(-3px)}}


/* ── header navigation ─────────────────────────────────────────── */
.mainnav{display:flex;gap:4px;margin-left:auto;margin-right:10px}
.mainnav a{position:relative;padding:8px 12px;border-radius:6px;text-decoration:none;
  color:var(--muted);font:600 .86rem var(--sans);white-space:nowrap;transition:color .2s ease,background .2s ease}
.mainnav a .kn{font-family:var(--kn)}
.mainnav a::after{content:"";position:absolute;left:12px;right:12px;bottom:4px;height:1.5px;
  background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .28s var(--pb-ease,ease)}
@media (hover:hover){.mainnav a:hover{color:var(--teal-text)}.mainnav a:hover::after{transform:scaleX(1)}}
.mainnav a:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
/* Under 900px the nav drops to its own scrollable row beneath the brand,
   so the logo never gets squeezed and nothing wraps into two lines. */
@media (max-width:900px){
  .top .bar{flex-wrap:wrap;row-gap:8px}
  .mainnav{order:3;width:100%;margin:0;overflow-x:auto;scrollbar-width:none;
    border-top:1px solid var(--line);padding-top:8px}
  .mainnav::-webkit-scrollbar{display:none}
  .mainnav a{padding:8px 10px;font-size:.82rem}
}



/* ── browser surfaces ──────────────────────────────────────────── */
/* Selection, scrollbar, caret and underlines ship with defaults that belong
   to no design system. Theming them is what separates a page that was built
   from one that was assembled. */
::selection{background:var(--gold);color:#241a06}
:root:not([data-theme="light"]) ::selection{background:var(--gold);color:#1a1205}
html{scrollbar-color:var(--line-strong) transparent;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
*::-webkit-scrollbar{width:11px;height:11px}
*::-webkit-scrollbar-track{background:transparent}
*::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:99px;
  border:3px solid var(--ground)}
*::-webkit-scrollbar-thumb:hover{background:var(--teal-text)}
:root{accent-color:var(--band);caret-color:var(--teal-text)}
a{text-underline-offset:3px;text-decoration-thickness:1px}
/* Prices line up column-wise wherever they repeat. */
.rl b,.price{font-variant-numeric:tabular-nums}
/* The header stays out of the way of an in-page anchor landing. */
:target{scroll-margin-top:96px}


/* Browse-by-type: a way into the catalog, not a second price list. The
   prices live once, in #rates. Text only — the real pictures on this page
   are Pushpa's own finished work in the strip above, which fills in as she
   features designs. */
.bytype{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:26px}
.bytype+.bytype{margin-top:12px}
.bytype-lab{font:600 .72rem var(--sans);letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);margin-right:4px}
.bytype-lab .kn{font-family:var(--kn);letter-spacing:0;text-transform:none;font-size:.85rem}
.bytype a{text-decoration:none;color:var(--teal-text);border:1px solid var(--line-strong);
  border-radius:999px;padding:8px 14px;font:500 .875rem var(--sans);
  transition:background .2s ease,color .2s ease,border-color .2s ease}
.bytype a .kn{font-family:var(--kn)}
@media (hover:hover){.bytype a:hover{background:var(--band);color:var(--on-band);border-color:var(--band)}}
.bytype a:focus-visible{outline:3px solid var(--gold);outline-offset:2px}


/* ════════════════════════════════════════════════════════════════
   THE INVITATION LAYER
   Pink and gold as a total commitment, executed as an engraved
   invitation rather than a printed flyer. Ornament is drawn and
   typographic — rules, corners, a repeating band — never clip art,
   so the three real photographs stay the loudest thing on the page.
   ════════════════════════════════════════════════════════════════ */

/* The shop name is the only place the script face appears. */
.brand .nm{font-family:var(--script);font-size:2.35rem;letter-spacing:0;
  text-transform:none;line-height:.95;color:var(--rose);padding-top:.12em}
.brand .nm[lang="kn"],.brand .nm .kn{font-family:var(--kn);font-weight:700;
  font-size:1.05rem;line-height:1.3}
.brand .tag{color:var(--gold-text);letter-spacing:.14em;font-size:.78rem}
.brand img{filter:saturate(.9)}
@media (max-width:560px){.brand .nm{font-size:1.85rem}}

/* Display voice. Old-style with real contrast; italic carries the accent
   instead of a second colour. */
.sec h2,.never .big,.hero-text h1{font-family:var(--serif);font-weight:600;letter-spacing:-.005em}
.hero-text h1{font-size:clamp(2.5rem,6vw,4.1rem);line-height:1.04}
.sec h2{font-size:clamp(2.1rem,4vw,3rem);line-height:1.08}
.sec h2 em,.never .big em{font-style:italic;color:var(--rose);font-weight:400}

/* A gold rule under each section heading — the invitation's own device.
   Two short strokes meeting a diamond; the same motif as the band, quieter. */
.sec-head h2::after{content:"";display:block;width:112px;height:9px;margin-top:14px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='112' height='9' viewBox='0 0 112 9'%3E%3Cg fill='none' stroke='%23C9A227' stroke-width='1.1'%3E%3Cpath d='M0 4.5h44M68 4.5h44'/%3E%3Cpath d='M56 1.6l2.9 2.9-2.9 2.9-2.9-2.9z'/%3E%3C/g%3E%3C/svg%3E") no-repeat left center}

/* Buttons: the primary action is the shop's rose, the secondary is gold rule. */
.btn{font-family:var(--sans);font-weight:600;border-radius:4px;letter-spacing:.01em}
.btn.primary{background:var(--rose-deep);border-color:var(--rose);color:#FCEFF3}
.btn.ghost{background:transparent;border-color:var(--gold);color:var(--gold-text)}
@media (hover:hover){
  .btn.primary:hover{background:var(--rose)}
  .btn.ghost:hover{background:var(--blush);border-color:var(--gold)}
}

/* Photographs sit in a gold rule, the way a portrait sits on an invitation. */
.ph{box-shadow:0 0 0 1.5px var(--gold),0 0 0 8px var(--ground),0 0 0 9px var(--line),var(--shadow)}

/* The deep-rose band section. */
.never{background:var(--band);color:var(--on-band)}
.never .big em{color:var(--gold)}

/* Cards read as pressed cardstock, not as web panels. */
.rate-card,.col.usual,.welcome,.feat-strip a{border-radius:6px}
.col.here{background:var(--band);color:var(--on-band);border-radius:6px}
.rl b{color:var(--rose);font-family:var(--sans);font-weight:700}
:root:not([data-theme="light"]) .rl b{color:var(--rose)}

/* The welcome offer is the one place a flourish is earned. */
.welcome{background:var(--blush);border:1px solid var(--line);position:relative}
.welcome::before{content:"";position:absolute;inset:7px;border:1px solid var(--gold);
  border-radius:3px;pointer-events:none;opacity:.45}
.welcome p.main{font-family:var(--serif);font-weight:600}

/* Language toggle + nav in the new palette. */
.lang{border-color:var(--line-strong);border-radius:4px}
.lang button[aria-pressed="true"]{background:var(--rose-deep);color:#FCEFF3}
.mainnav a{font-family:var(--sans)}
.mainnav a::after{background:var(--gold)}
.bytype a{border-color:var(--line-strong);color:var(--rose)}
@media (hover:hover){.bytype a:hover{background:var(--rose-deep);border-color:var(--rose);color:#FCEFF3}}

::selection{background:var(--rose-deep);color:#FCEFF3}
:root{accent-color:var(--rose);caret-color:var(--rose)}
*::-webkit-scrollbar-thumb{background:var(--line-strong)}
*::-webkit-scrollbar-thumb:hover{background:var(--rose)}


/* ════════════════════════════════════════════════════════════════
   FLORAL LAYER
   Only the drifting petals remain. The sprite and the blossom dividers
   were removed 2026-09-24: they read as the clip art DESIGN.md refuses.
   ════════════════════════════════════════════════════════════════ */
:root{ --leaf:#7E8F63; --petal:#E88AA8; --petal-deep:#C9527A; }
:root:not([data-theme="light"]){ --leaf:#6E7D57; --petal:#B76A85; --petal-deep:#8E4560; }


/* Corner clusters. Absolutely placed, pointer-transparent, and clipped by
   the header so they never create a horizontal scrollbar. */
.top{position:relative;overflow:hidden}












.top .bar,.top .zari{position:relative;z-index:1}
@media (max-width:860px){
  
  
}
@media (max-width:520px){   }

/* Section divider: the heading rule, widened and centred. Drawn, not floral —
   the earlier blossom-and-sprays divider read as the clip art DESIGN.md refuses. */
.rdiv{height:9px;max-width:1120px;margin:8px auto 0;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='9' viewBox='0 0 240 9'%3E%3Cg fill='none' stroke='%23C9A227' stroke-width='1.1'%3E%3Cpath d='M0 4.5h106M134 4.5h106'/%3E%3Cpath d='M120 1.6l2.9 2.9-2.9 2.9-2.9-2.9z'/%3E%3Cpath d='M111 4.5l1.6-1.6 1.6 1.6-1.6 1.6zM125.8 4.5l1.6-1.6 1.6 1.6-1.6 1.6z' fill='%23C9A227' stroke='none'/%3E%3C/g%3E%3C/svg%3E") no-repeat center}

/* ── motion ─────────────────────────────────────────────────────── */
/* Petals drifting across the top of the page. Eight elements, low
   opacity, transform-only — this is the "alive" beat, and it is the
   only thing on the page that never stops. */
.petals{position:absolute;inset:0 0 auto;height:78vh;overflow:hidden;
  pointer-events:none;z-index:0}
.petals i{position:absolute;top:-6vh;width:13px;height:17px;border-radius:60% 0 60% 0;
  background:var(--petal);opacity:0;will-change:transform}
.pb-anim .petals i{animation:pb-fall linear infinite}
.petals i:nth-child(1){left:6%;  animation-duration:15.2s; animation-delay:0s}
.petals i:nth-child(2){left:19%; animation-duration:19.2s; animation-delay:3s;  width:10px;height:13px}
.petals i:nth-child(3){left:33%; animation-duration:13.6s; animation-delay:7s}
.petals i:nth-child(4){left:48%; animation-duration:20.8s; animation-delay:1.5s;width:9px; height:12px}
.petals i:nth-child(5){left:62%; animation-duration:16.8s; animation-delay:9s}
.petals i:nth-child(6){left:75%; animation-duration:22.4s; animation-delay:5s;  width:11px;height:15px}
.petals i:nth-child(7){left:86%; animation-duration:14.4s; animation-delay:12s}
.petals i:nth-child(8){left:94%; animation-duration:18.4s; animation-delay:2s;  width:8px; height:11px}
@keyframes pb-fall{
  0%  {transform:translate3d(0,-10vh,0) rotate(0deg);   opacity:0}
  8%  {opacity:.5}
  50% {transform:translate3d(26px,42vh,0) rotate(180deg);opacity:.42}
  92% {opacity:.16}
  100%{transform:translate3d(-14px,88vh,0) rotate(360deg);opacity:0}
}




/* Once open, the clusters breathe — slow, out of phase, barely there. */




/* The gold rule under each heading draws itself in. */
.pb-anim .sec-head h2::after{clip-path:inset(0 100% 0 0);transition:clip-path 1.1s var(--pb-ease) .15s}
.pb-anim .sec-head.pb-in h2::after{clip-path:inset(0 0 0 0)}

/* Hero photographs drift against the scroll — depth without parallax jank,
   driven by one rAF-throttled handler writing a single custom property. */
.pb-anim .hero-art .ph.p1{translate:0 calc(var(--pbp,0) * -14px)}
.pb-anim .hero-art .ph.p2{translate:0 calc(var(--pbp,0) * 22px)}
.pb-anim .hero-art .ph.p3{translate:0 calc(var(--pbp,0) * -8px)}

@media (prefers-reduced-motion:reduce){
  .pb-anim .petals{display:none}
  .pb-anim .sec-head h2::after{clip-path:none!important;transition:none!important}
  .pb-anim .hero-art .ph{translate:none!important}
}


/* ════════════════════════════════════════════════════════════════
   MASTHEAD + CORNER FRAME  (rev 2)
   The corners now live in their own full-width .frame rather than
   inside .top, which was only as tall as the bar and clipped them.
   ════════════════════════════════════════════════════════════════ */
body{position:relative;overflow-x:hidden}












.top{position:relative;overflow:visible;z-index:1}

/* Masthead: the print logo, centred and large. It carries the English
   wordmark itself, so no script type competes with it. */
.top .bar{flex-direction:column;align-items:center;text-align:center;gap:10px;
  padding-block:22px 16px;position:relative}
.brand{flex-direction:column;align-items:center;gap:6px;text-align:center}
.brand picture{display:block}
.brand img{width:auto;height:clamp(96px,13vw,148px);display:block;
  filter:drop-shadow(0 6px 14px rgba(142,28,67,.14))}
.brand .nm{display:none;font-family:var(--kn);font-weight:700;font-size:1.25rem;
  color:var(--rose);line-height:1.3;margin-top:2px}
body.lang-kn .brand .nm{display:block}
.brand .tag{font-size:.8rem;letter-spacing:.2em;color:var(--gold-text);margin-top:2px}
.brand .tag .kn{letter-spacing:.02em;font-size:.95rem}
.lang{position:absolute;top:18px;right:0}
.mainnav{margin:6px 0 0;justify-content:center}
@media (max-width:900px){
  .top .bar{flex-wrap:nowrap;padding-block:18px 12px}
  .lang{top:12px;right:0;transform:scale(.9);transform-origin:top right}
  .mainnav{order:0;width:auto;border-top:0;padding-top:0}
}
@media (max-width:640px){
  
  
  
  .brand .tag{font-size:.7rem;letter-spacing:.14em}
}
@media (max-width:440px){   }

/* Petals: larger, as asked. */
.petals i{width:20px;height:26px}
.petals i:nth-child(2){width:15px;height:20px}
.petals i:nth-child(4){width:14px;height:18px}
.petals i:nth-child(6){width:17px;height:23px}
.petals i:nth-child(8){width:13px;height:17px}
.petals i{background:linear-gradient(135deg,var(--petal) 0%,var(--petal-deep) 100%)}


/* ════════════════════════════════════════════════════════════════
   TWO ADDITIONS
   1. THE SEAM — a gold running stitch down the edge of the page that
      sews itself as you scroll. For a shop whose whole promise is how
      carefully a seam is made, the scroll indicator may as well BE a
      seam. It is the page's signature motion.
   2. CLOTH UNFOLD — photographs arrive by wiping open from the top,
      the way cloth is unrolled across a counter, instead of fading.
   ════════════════════════════════════════════════════════════════ */

/* 1 — the seam */
.seam{position:fixed;left:13px;top:0;width:3px;height:100vh;z-index:5;
  pointer-events:none;opacity:0;transition:opacity .5s ease}
.pb-anim .seam{opacity:1}
.seam i{display:block;width:100%;height:100%;transform-origin:top center;
  transform:scaleY(var(--pbs,0));
  background:repeating-linear-gradient(to bottom,
    var(--gold) 0 9px, transparent 9px 17px)}
.seam::after{content:"";position:absolute;left:50%;top:0;width:7px;height:7px;
  margin-left:-3.5px;border-radius:50%;background:var(--rose-deep);
  box-shadow:0 0 0 3px var(--ground);
  transform:translateY(calc(var(--pbs,0) * 100vh - 3.5px))}
@media (max-width:720px){.seam{left:6px;width:2px}.seam::after{width:6px;height:6px;margin-left:-3px}}

/* 2 — cloth unfold */
.pb-anim .hero-art .ph{clip-path:inset(0 0 100% 0)}
.pb-anim .hero-art .ph.pb-cloth{clip-path:inset(0 0 0 0);
  transition:clip-path 1.05s cubic-bezier(.19,1,.22,1)}
.ph img{transition:transform 1.2s cubic-bezier(.19,1,.22,1)}
@media (hover:hover){.ph:hover img{transform:scale(1.06)}}

@media (prefers-reduced-motion:reduce){
  .seam{display:none}
  .pb-anim .hero-art .ph{clip-path:none!important}
  .ph img{transition:none!important}
}


/* ── marriage house & bulk orders ───────────────────────────────── */
.bulk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2.4vw,26px);margin-top:30px}
@media (max-width:820px){.bulk-grid{grid-template-columns:1fr;gap:16px}}
.bulk-item{position:relative;background:var(--surface);border:1px solid var(--line);
  border-radius:6px;padding:26px 22px 22px}
.bulk-item::after{content:"";position:absolute;inset:6px;border:1px solid var(--gold);
  border-radius:3px;pointer-events:none;opacity:.28}
.bulk-n{display:block;font-family:var(--serif);font-size:2.6rem;line-height:1;
  color:var(--gold);font-weight:600;margin-bottom:6px}
.bulk-item h3{font-family:var(--serif);font-size:1.35rem;font-weight:600;line-height:1.2;margin-bottom:8px}
.bulk-item h3 .kn{font-family:var(--kn);font-weight:700;font-size:.82em}
.bulk-item p{color:var(--muted);font-size:.95rem}
.bulk-cta{margin-top:26px;display:flex;flex-wrap:wrap;align-items:center;gap:14px}
.bulk-note{color:var(--muted);font-size:.9rem;max-width:44ch}
.bulk-note .kn{font-family:var(--kn)}


/* ── the welcome offer ──────────────────────────────────────────── */
/* Full-bleed and lit: deep rose ground, gold rule, gold seal. Previously
   this sat in the rates sidebar in blush-on-blush, so on a phone it fell
   below the whole rate list and had almost no contrast against it. */
.offer{background:var(--band);color:var(--on-band);position:relative;overflow:hidden}
.offer::before,.offer::after{content:"";position:absolute;left:0;right:0;height:3px;
  background:repeating-linear-gradient(90deg,var(--gold) 0 14px,transparent 14px 26px);opacity:.75}
.offer::before{top:0} .offer::after{bottom:0}
.offer-in{padding-block:clamp(38px,6vw,64px)}
.offer .welcome{background:transparent;border:0;color:inherit;padding:0;overflow:visible;
  max-width:760px;margin-inline:auto;text-align:center}
.offer .welcome::before{display:none}
/* the brand gold is only 3.62:1 on the rose band, so small caps get a
   lifted gold scoped to this section rather than lowering the bar */
.offer{--gold-on-band:#DDB74B}
.offer .welcome .tl{color:var(--gold-on-band);letter-spacing:.1em;font-size:.82rem}
.offer .welcome p.main{font-family:var(--serif);font-weight:600;
  font-size:clamp(1.55rem,3.4vw,2.35rem);line-height:1.3;padding-right:0;margin-top:14px;
  color:var(--on-band)}
.offer .welcome p.main.kn{font-size:clamp(1.15rem,2.4vw,1.6rem)}
.offer .welcome .fine{opacity:.82;margin-top:16px;font-size:.92rem}
/* the seal moves inline, above the copy, and catches light */
.offer .seal{position:static;margin:0 auto 6px;width:82px;height:82px;
  box-shadow:0 0 0 3px var(--band),0 0 0 5px var(--gold),0 10px 26px rgba(0,0,0,.28);
  font-size:.95rem}
.pb-anim .offer.pb-in .seal{animation:pb-seal 1s cubic-bezier(.19,1,.22,1) .1s backwards}
@keyframes pb-seal{from{transform:rotate(-38deg) scale(.6);opacity:0}
                   to{transform:rotate(-10deg) scale(1);opacity:1}}
/* one slow sweep of light across the band when it arrives */
.pb-anim .offer.pb-in .offer-in::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(100deg,transparent 35%,rgba(255,255,255,.14) 50%,transparent 65%);
  transform:translateX(-120%);animation:pb-offersheen 2.4s cubic-bezier(.4,0,.2,1) .35s 1 both}
@keyframes pb-offersheen{to{transform:translateX(120%)}}
@media (prefers-reduced-motion:reduce){
  .pb-anim .offer.pb-in .seal{animation:none!important}
  .pb-anim .offer.pb-in .offer-in::after{display:none}
}


/* ── the gallery ────────────────────────────────────────────────── */
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));
  gap:clamp(10px,1.6vw,16px);margin-top:28px}
@media (max-width:560px){.gallery{grid-template-columns:repeat(2,1fr)}}
.gallery a{position:relative;display:block;border-radius:10px;overflow:hidden;
  box-shadow:var(--shadow);background:var(--blush);
  transition:transform .32s cubic-bezier(.19,1,.22,1),box-shadow .32s ease}
.gallery img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;
  transition:transform 1.1s cubic-bezier(.19,1,.22,1)}
.gallery .code{position:absolute;left:8px;bottom:8px;background:rgba(142,28,67,.94);
  color:var(--on-band);font:600 .68rem var(--sans);letter-spacing:.06em;padding:4px 8px;border-radius:5px}
@media (hover:hover){
  .gallery a:hover{transform:translateY(-4px);box-shadow:0 12px 30px rgba(142,28,67,.2)}
  .gallery a:hover img{transform:scale(1.06)}
}
.gallery a:focus-visible{outline:3px solid var(--gold);outline-offset:3px}

/* ── full-bleed work band ───────────────────────────────────────── */
.workband{position:relative;background:var(--band);padding:0}
.workband-in{display:grid;grid-template-columns:repeat(4,1fr);gap:2px}
@media (max-width:760px){.workband-in{grid-template-columns:repeat(2,1fr)}}
.workband-in a{position:relative;display:block;overflow:hidden;background:var(--band)}
.workband-in img{width:100%;aspect-ratio:1;object-fit:cover;display:block;
  transition:transform 1.2s cubic-bezier(.19,1,.22,1),opacity .4s ease;opacity:.94}
@media (hover:hover){.workband-in a:hover img{transform:scale(1.07);opacity:1}}
.workband-in .code{position:absolute;left:8px;bottom:8px;background:rgba(27,16,20,.7);
  color:var(--on-band);font:600 .66rem var(--sans);letter-spacing:.06em;padding:3px 7px;border-radius:4px}
.workband-cta{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);
  background:var(--ground);color:var(--rose);text-decoration:none;
  font:600 .88rem var(--sans);padding:11px 22px;border-radius:999px;
  box-shadow:0 6px 20px rgba(0,0,0,.28)}
.workband-cta .kn{font-family:var(--kn)}
.workband-cta:focus-visible{outline:3px solid var(--gold);outline-offset:3px}


/* The [hidden] attribute only sets display:none at the browser's default
   level, so any class that sets its own display beats it. This page has
   .gallery{grid} and .workband — without this rule the
   placeholder could never be hidden once real photographs arrived, which
   is exactly what happened. designs.html and add.html already carry it. */
[hidden]{display:none!important}

/* ── ordering from outside India ────────────────────────────────── */
.intl-honest{background:var(--blush);border:1px solid var(--line);border-radius:8px;
  padding:18px 20px;margin-top:26px;position:relative}
.intl-honest::before{content:"";position:absolute;inset:6px;border:1px solid var(--gold);
  border-radius:5px;pointer-events:none;opacity:.3}
.intl-honest p{color:var(--peach-ink);font-size:.97rem}
.intl-honest b{color:var(--rose)}
.intl-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,2.4vw,24px);margin-top:20px}
@media (max-width:760px){.intl-grid{grid-template-columns:1fr}}
.intl-card{position:relative;background:var(--surface);border:1px solid var(--line);
  border-radius:6px;padding:24px 22px}
.intl-card::after{content:"";position:absolute;inset:6px;border:1px solid var(--gold);
  border-radius:3px;pointer-events:none;opacity:.26}
.intl-n{display:block;font-family:var(--serif);font-size:2.4rem;line-height:1;
  color:var(--gold);font-weight:600;margin-bottom:4px}
.intl-card h3{font-family:var(--serif);font-size:1.3rem;font-weight:600;line-height:1.2;margin-bottom:8px}
.intl-card h3 .kn{font-family:var(--kn);font-weight:700;font-size:.82em}
.intl-card p{color:var(--muted);font-size:.95rem}
.intl-terms{margin-top:26px}
.intl-terms h3{font:600 .72rem var(--sans);letter-spacing:.14em;text-transform:uppercase;
  color:var(--muted);margin-bottom:12px}
.intl-terms h3 .kn{font-family:var(--kn);letter-spacing:0;text-transform:none;font-size:1.1em}
.intl-terms dl{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px}
@media (max-width:760px){.intl-terms dl{grid-template-columns:1fr}}
.intl-terms dl > div{border-top:1px solid var(--line);padding-top:10px}
.intl-terms dt{font-family:var(--serif);font-size:1.1rem;font-weight:600;color:var(--rose)}
.intl-terms dd{margin:3px 0 0;color:var(--muted);font-size:.92rem}
.intl-cta{margin-top:26px;display:flex;flex-wrap:wrap;align-items:center;gap:14px}
.intl-note{color:var(--muted);font-size:.88rem;max-width:46ch}
.intl-note .kn{font-family:var(--kn)}


/* the real map replaces the sketch */
.map{margin:0;border-radius:10px;overflow:hidden;border:1px solid var(--line);
  box-shadow:var(--shadow);background:var(--blush)}
.map iframe{display:block;width:100%;height:clamp(240px,34vw,360px);border:0;
  filter:saturate(.92)}
.map figcaption{padding:12px 14px;background:var(--surface);color:var(--muted);
  font-size:.9rem;border-top:1px solid var(--line)}
.map figcaption .kn{font-family:var(--kn)}


/* the trial-blouse route is the section's headline, so it gets the band */
.intl-hero{background:var(--band);color:var(--on-band);border-radius:10px;
  padding:clamp(22px,3.4vw,34px);margin-top:26px;position:relative;overflow:hidden}
.intl-hero::after{content:"";position:absolute;inset:7px;border:1px solid var(--gold);
  border-radius:5px;pointer-events:none;opacity:.34}
.intl-badge{display:inline-block;background:var(--gold);color:#241a06;
  font:700 .76rem var(--sans);letter-spacing:.1em;text-transform:uppercase;
  padding:6px 12px;border-radius:999px;line-height:1.35}
.intl-badge .kn{font-family:var(--kn);letter-spacing:0;text-transform:none}
.intl-hero h3{font-family:var(--serif);font-weight:600;
  font-size:clamp(1.45rem,3vw,2.1rem);line-height:1.3;margin:12px 0 10px}
.intl-hero h3 .kn{font-family:var(--kn);font-weight:700;font-size:.74em}
.intl-hero p{color:var(--on-band-muted);max-width:62ch}
.intl-grid.three{grid-template-columns:repeat(3,1fr)}
@media (max-width:860px){.intl-grid.three{grid-template-columns:1fr}}


/* ── hero: arches, not circles (2026-09-24) ─────────────────────────
   Circles cut off the necklines and backs, which are the work being
   sold. A tall arch shows the whole back and is the invitation/temple
   arch this world already belongs to. Centre arch leads, the two
   flanking ones sit lower. The float/drift/cloth motion is unchanged. */
.hero-art{position:relative;aspect-ratio:auto;display:flex;align-items:flex-end;
  justify-content:center;gap:3.5%;padding:10px 0 18px}
.ph,.ph.p1,.ph.p2,.ph.p3{position:relative;inset:auto;aspect-ratio:3/4;
  border-radius:999px 999px 14px 14px}
.ph.p1{order:2;width:40%}
.ph.p2{order:1;width:28%;margin-bottom:9%}
.ph.p3{order:3;width:28%;margin-bottom:9%}
/* The cloth wipe ends on inset(0), which also clipped the gold ring drawn
   by box-shadow. End it just outside the ring instead. */
.pb-anim .hero-art .ph.pb-cloth{clip-path:inset(-14px -14px -14px -14px)}
@media (max-width:860px){
  .ph.p1{width:38%!important;max-width:170px}
  .ph.p2,.ph.p3{width:27%!important;max-width:120px}
}

/* ── FAQ ─────────────────────────────────────────────────────────── */
.faq{border-top:1px solid var(--line)}
.qa{border-bottom:1px solid var(--line)}
.qa summary{cursor:pointer;list-style:none;padding:16px 36px 16px 0;position:relative;
  font:500 1.2rem/1.35 var(--serif);color:var(--ink)}
.qa summary::-webkit-details-marker{display:none}
.qa summary::after{content:"+";position:absolute;right:6px;top:12px;font:400 1.5rem var(--sans);color:var(--gold-text)}
.qa[open] summary::after{content:"–"}
.qa summary:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
.qa p{margin:0 0 18px;color:var(--muted);max-width:68ch}
.qa .p{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}


[hidden]{display:none!important}
.ico{flex:none}
.price,.rl b,.dp .price{font-variant-numeric:tabular-nums}
