/* ============================================================
   Subham & Aradhana — 31 January 2027, Puri
   Odia folk: pattachitra border + palette, jhoti line motifs
   (lotus, swapna padma, paddy sheaf, creeper, alta footprints).
   No gradients. No glass. No card shadows. Two-tone bands only.
   ============================================================ */

@font-face { font-family:'Fraunces'; src:url('fonts/fraunces-latin.woff2') format('woff2');
  font-weight:100 900; font-display:swap;
  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'; src:url('fonts/fraunces-latin-ext.woff2') format('woff2');
  font-weight:100 900; font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:'Instrument Sans'; src:url('fonts/instrument-latin.woff2') format('woff2');
  font-weight:400 700; font-display:swap;
  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:'Noto Sans Oriya'; src:url('fonts/noto-oriya-sans.woff2') format('woff2');
  font-weight:400 700; font-display:swap;
  unicode-range:U+0951-0952,U+0964-0965,U+0B01-0B77,U+1CDA,U+1CF2,U+200C-200D,U+20B9,U+25CC; }

:root{
  --hingula:#B5341F;
  --alta:#C2182B;
  --ink:#1C1613;
  --turmeric:#D89B2B;
  --gold:#F5C24A;
  --cream:#F3E7D0;

  --serif:'Fraunces','Iowan Old Style',Georgia,serif;
  --sans:'Instrument Sans',-apple-system,'Helvetica Neue',sans-serif;
  --odia:'Noto Sans Oriya',serif;

  --pad:clamp(2.5rem,5.5vw,4.5rem);
  --gutter:clamp(1.25rem,5vw,4rem);
  --press:0 1px 0 rgba(255,255,255,.4),0 -1px 0 rgba(28,22,19,.10);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}
body{
  margin:0; background:var(--cream); color:var(--ink);
  font-family:var(--serif);
  font-variation-settings:'opsz' 24,'SOFT' 20,'WONK' 0;
  font-feature-settings:'liga' 1,'dlig' 1,'onum' 1;
  font-size:clamp(1rem,.95rem + .3vw,1.12rem); line-height:1.6;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
h1,h2,h3,p,ol,ul,address,figure,table{margin:0}
address{font-style:normal}
::selection{background:var(--hingula);color:var(--cream)}
.sprites{position:absolute;width:0;height:0;overflow:hidden}

.grain{position:fixed;inset:0;width:100vw;height:100vh;opacity:.05;
  mix-blend-mode:multiply;pointer-events:none;z-index:90}
.skip{position:absolute;left:-9999px;background:var(--ink);color:var(--cream);
  padding:.7rem 1.1rem;z-index:200}
.skip:focus{left:1rem;top:1rem}

/* ══════ bands ══════ */
.band{position:relative;width:100%}
.band--cream{background:var(--cream);color:var(--ink)}
.band--red{background:var(--hingula);color:var(--cream)}
.band--ink{background:var(--ink);color:var(--cream)}
.wrap{width:100%;max-width:1140px;margin-inline:auto;padding-inline:var(--gutter)}

.strip{position:relative;z-index:2;height:36px;background-repeat:repeat-x;background-position:center;background-size:84px 36px}
.strip--dark{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2284%22%20height%3D%2236%22%20viewBox%3D%220%200%2084%2036%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%231C1613%22%20stroke-width%3D%221.45%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M21%208.4C14.7%2013.3%2013.3%2019.6%2021%2025.9C28.7%2019.6%2027.3%2013.3%2021%208.4Z%22%2F%3E%3Cpath%20d%3D%22M21%2013.3C18.2%2016.1%2017.5%2018.9%2021%2022.1C24.5%2018.9%2023.8%2016.1%2021%2013.3Z%22%2F%3E%3Cpath%20d%3D%22M21%2025.9C12.6%2024.5%208.4%2019.6%2010.5%2014%22%2F%3E%3Cpath%20d%3D%22M21%2025.9C29.4%2024.5%2033.6%2019.6%2031.5%2014%22%2F%3E%3Cpath%20d%3D%22M63%209.1L68.6%2018.2L63%2027.3L57.4%2018.2Z%22%2F%3E%3C%2Fg%3E%3Ccircle%20fill%3D%22%23B5341F%22%20cx%3D%2263%22%20cy%3D%2218.2%22%20r%3D%222.4%22%2F%3E%3Ccircle%20fill%3D%22%23B5341F%22%20cx%3D%2221%22%20cy%3D%2218.2%22%20r%3D%221.5%22%2F%3E%3C%2Fsvg%3E")}
.strip--light{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2284%22%20height%3D%2236%22%20viewBox%3D%220%200%2084%2036%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23F3E7D0%22%20stroke-width%3D%221.45%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M21%208.4C14.7%2013.3%2013.3%2019.6%2021%2025.9C28.7%2019.6%2027.3%2013.3%2021%208.4Z%22%2F%3E%3Cpath%20d%3D%22M21%2013.3C18.2%2016.1%2017.5%2018.9%2021%2022.1C24.5%2018.9%2023.8%2016.1%2021%2013.3Z%22%2F%3E%3Cpath%20d%3D%22M21%2025.9C12.6%2024.5%208.4%2019.6%2010.5%2014%22%2F%3E%3Cpath%20d%3D%22M21%2025.9C29.4%2024.5%2033.6%2019.6%2031.5%2014%22%2F%3E%3Cpath%20d%3D%22M63%209.1L68.6%2018.2L63%2027.3L57.4%2018.2Z%22%2F%3E%3C%2Fg%3E%3Ccircle%20fill%3D%22%23FFFFFF%22%20cx%3D%2263%22%20cy%3D%2218.2%22%20r%3D%222.4%22%2F%3E%3Ccircle%20fill%3D%22%23FFFFFF%22%20cx%3D%2221%22%20cy%3D%2218.2%22%20r%3D%221.5%22%2F%3E%3C%2Fsvg%3E")}
/* mirrored so its rule lands on the page edge, not mid-field */
.strip--flip{transform:scaleY(-1)}
/* The guard rules are drawn here rather than inside the repeating tile: a
   full-width stroke that ends at the tile edge gets anti-aliased on both sides,
   and at fractional background-size it leaves a hairline gap at every seam. */
.strip::before,.strip::after{content:'';position:absolute;left:0;right:0;pointer-events:none}
.strip--light::before{top:0;height:1.5px;background:var(--cream)}
.strip--light::after{bottom:0;height:1.5px;background:var(--cream)}
/* Phoda Kumbha — the stepped temple border of Berhampuri Patta silk, Brahmapur.
   Hingula above so it carries the red band down into the cream; cream below on ink
   so the cream steps carry down into the footer. */
.strip.strip--kumbha-red{height:46px;background-size:84px 46px;
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2284%22%20height%3D%2246%22%20viewBox%3D%220%200%2084%2046%22%3E%3Cpath%20fill%3D%22%23B5341F%22%20d%3D%22M3.0%2046.0L3.0%2037.5L6.8%2037.5L6.8%2029.0L10.7%2029.0L10.7%2020.5L14.5%2020.5L14.5%2012.0L18.4%2012.0L23.6%2012.0L27.5%2012.0L27.5%2020.5L31.3%2020.5L31.3%2029.0L35.1%2029.0L35.1%2037.5L39.0%2037.5L39.0%2046.0Z%22%2F%3E%3Cpath%20fill%3D%22%23B5341F%22%20d%3D%22M45.0%2046.0L45.0%2037.5L48.9%2037.5L48.9%2029.0L52.7%2029.0L52.7%2020.5L56.5%2020.5L56.5%2012.0L60.4%2012.0L65.6%2012.0L69.5%2012.0L69.5%2020.5L73.3%2020.5L73.3%2029.0L77.2%2029.0L77.2%2037.5L81.0%2037.5L81.0%2046.0Z%22%2F%3E%3Ccircle%20fill%3D%22%23F3E7D0%22%20cx%3D%220%22%20cy%3D%2230%22%20r%3D%222.6%22%2F%3E%3Ccircle%20fill%3D%22%23F3E7D0%22%20cx%3D%2242%22%20cy%3D%2230%22%20r%3D%222.6%22%2F%3E%3Ccircle%20fill%3D%22%23F3E7D0%22%20cx%3D%2284%22%20cy%3D%2230%22%20r%3D%222.6%22%2F%3E%3C%2Fsvg%3E")}
.strip.strip--kumbha-cream{height:46px;background-size:84px 46px;background-color:var(--ink);
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2284%22%20height%3D%2246%22%20viewBox%3D%220%200%2084%2046%22%3E%3Cpath%20fill%3D%22%23F3E7D0%22%20d%3D%22M3.0%2046.0L3.0%2037.5L6.8%2037.5L6.8%2029.0L10.7%2029.0L10.7%2020.5L14.5%2020.5L14.5%2012.0L18.4%2012.0L23.6%2012.0L27.5%2012.0L27.5%2020.5L31.3%2020.5L31.3%2029.0L35.1%2029.0L35.1%2037.5L39.0%2037.5L39.0%2046.0Z%22%2F%3E%3Cpath%20fill%3D%22%23F3E7D0%22%20d%3D%22M45.0%2046.0L45.0%2037.5L48.9%2037.5L48.9%2029.0L52.7%2029.0L52.7%2020.5L56.5%2020.5L56.5%2012.0L60.4%2012.0L65.6%2012.0L69.5%2012.0L69.5%2020.5L73.3%2020.5L73.3%2029.0L77.2%2029.0L77.2%2037.5L81.0%2037.5L81.0%2046.0Z%22%2F%3E%3Ccircle%20fill%3D%22%23B5341F%22%20cx%3D%220%22%20cy%3D%2230%22%20r%3D%222.6%22%2F%3E%3Ccircle%20fill%3D%22%23B5341F%22%20cx%3D%2242%22%20cy%3D%2230%22%20r%3D%222.6%22%2F%3E%3Ccircle%20fill%3D%22%23B5341F%22%20cx%3D%2284%22%20cy%3D%2230%22%20r%3D%222.6%22%2F%3E%3C%2Fsvg%3E")}
.strip--dark::before{top:11.7%;height:1.45px;background:var(--ink)}
.strip--dark::after{top:89.4%;height:1.45px;background:var(--ink)}

/* ══════ shared type ══════ */
.eyebrow{font-family:var(--sans);font-size:.66rem;font-weight:500;
  letter-spacing:.2em;text-transform:uppercase;opacity:.75;margin-bottom:1.1rem}
.eyebrow .od{font-family:var(--odia);font-size:1.6em;letter-spacing:0;
  text-transform:none;vertical-align:-.06em}
.sep{color:var(--turmeric);padding-inline:.45em}

.sec-h{font-size:clamp(1.9rem,1.15rem + 3.1vw,3.1rem);font-weight:400;line-height:1.07;
  font-variation-settings:'opsz' 110,'SOFT' 0,'WONK' 1;text-shadow:var(--press)}
.note{font-size:.94rem;opacity:.8;max-width:34ch;margin-top:.9rem}

a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.22em}
:where(a,button,input,[tabindex]):focus-visible{outline:2px solid var(--turmeric);outline-offset:3px}

/* ══════ ornaments + their entrance ══════ */
.orn{display:block;overflow:visible;--rot:0deg;--o:1;
  animation:bloom 950ms cubic-bezier(.22,.61,.36,1) both}
@keyframes bloom{
  from{opacity:0;transform:scale(.84) rotate(calc(var(--rot) - 9deg))}
  to  {opacity:var(--o);transform:scale(1) rotate(var(--rot))}
}
.trail--hero{animation-delay:.55s}

.trail use{animation:step 620ms ease-out both}
.trail use:nth-of-type(1){animation-delay:.50s}
.trail use:nth-of-type(2){animation-delay:.78s}
.trail use:nth-of-type(3){animation-delay:1.06s}
.trail use:nth-of-type(4){animation-delay:1.34s}
.trail use:nth-of-type(5){animation-delay:1.62s}
.trail use:nth-of-type(6){animation-delay:1.90s}
@keyframes step{from{opacity:0}to{opacity:1}}

/* ══════ HERO ══════ */
/* the copy rises as the ornaments bloom, so everything lands at once */
@keyframes rise{
  from{opacity:0;transform:translateY(20px)}
  to  {opacity:1;transform:none}
}
.hero-copy .eyebrow,
.names > span,
.datebar{animation:rise 880ms cubic-bezier(.22,.61,.36,1) both}
.hero .eyebrow{opacity:.85}
.hero .dmeta{opacity:.8}
.hero-copy .eyebrow      {animation-delay:.06s}
.names > span:nth-child(1){animation-delay:.14s}
.names > span:nth-child(2){animation-delay:.24s}
.names > span:nth-child(3){animation-delay:.32s}
.datebar                 {animation-delay:.46s}

.hero-art{position:absolute;left:0;right:0;top:36px;bottom:36px;
  overflow:hidden;pointer-events:none;z-index:0}
.hero{display:flex;flex-direction:column;min-height:100svh;overflow:hidden;
  --mw:clamp(320px,46vw,680px)}
.hero-in{flex:1;position:relative;z-index:1;display:grid;align-content:center;
  grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  grid-template-areas:"copy art" "date art";
  column-gap:clamp(1rem,3vw,2.5rem);
  padding-block:clamp(1.75rem,4vh,3rem)}
.hero-copy{grid-area:copy;align-self:end}
.figs-wrap{grid-area:art;position:relative;display:grid;place-items:center end;
  margin-right:clamp(1rem,7.6vw,118px)}
.kalasha{display:block;width:min(120%,400px);height:auto;
  animation:bloom 1000ms cubic-bezier(.22,.61,.36,1) both;animation-delay:.30s}
.datebar{grid-area:date;align-self:start;position:relative;
  border-top:1px solid rgba(28,22,19,.25);padding-top:1.1rem;margin-top:1.4rem;
  max-width:min(460px,92%)}


.names{display:flex;flex-direction:column;line-height:.94;
  font-size:clamp(1.75rem,5.2vw,4.3rem);font-weight:400;letter-spacing:-.012em;
  font-variation-settings:'opsz' 144,'SOFT' 0,'WONK' 1;text-shadow:var(--press)}
.names .amp{font-size:.4em;color:var(--hingula);line-height:1;margin-block:.69em .21em;
  font-variation-settings:'opsz' 60,'SOFT' 60,'WONK' 1}
/* whose name leads is a coin flip; flex order does the swap. The lines are
   right-aligned to each other rather than staggered by a fixed indent, so the
   ragged edge falls on the left whichever name is longer. */
.names{align-items:flex-end;text-align:right;
  padding-right:clamp(1rem,4.5vw,4rem)}
.names .nm--a{order:1}
.names .amp{order:2}
.names .nm--s{order:3}
.nm-swap .names .nm--s{order:1}
.nm-swap .names .nm--a{order:3}
/* Odia initial, metric-matched to the Latin beside it */
/* hingula vanishes on a hingula band — the accent flips to turmeric */
.band--red .names .amp{color:var(--gold)}
.band--red .datebar{border-top-color:rgba(243,231,208,.35)}

.dnum{font-family:var(--sans);font-weight:500;font-variation-settings:normal;
  font-feature-settings:'lnum' 1;
  font-size:clamp(1.35rem,.9rem + 1.9vw,2rem);line-height:1;letter-spacing:.16em}
.dnum i{color:var(--turmeric);font-style:normal;padding-inline:.1em;font-weight:400}
.dmeta{font-family:var(--sans);font-size:.68rem;letter-spacing:.22em;
  text-transform:uppercase;opacity:.72;margin-top:.7rem}

.paddy-bunch{position:absolute;bottom:-.75rem;left:clamp(0px,1vw,1.1rem);
  display:flex;align-items:flex-end}
.paddy{color:var(--cream)}
.paddy.p1{width:clamp(44px,4.6vw,70px);--rot:-14deg;--o:.46;animation-delay:.46s}
.paddy.p2{width:clamp(60px,6.4vw,96px);--rot:-5deg;--o:.64;animation-delay:.52s;margin-left:-38px}
.paddy.p3{width:clamp(50px,5.3vw,80px);--rot:5deg;--o:.54;animation-delay:.58s;margin-left:-42px}
.paddy.p4{width:clamp(38px,4vw,60px);--rot:13deg;--o:.42;animation-delay:.64s;margin-left:-34px}
.trail--hero{--alta:var(--cream);position:absolute;right:clamp(14px,2.4vw,54px);bottom:1%;
  width:clamp(86px,8.8vw,128px);--o:.92;--rot:-20deg;z-index:1}

.mandala--hero{position:absolute;
  width:var(--mw);right:calc(var(--mw) / -2);top:calc(var(--mw) * -.20);
  color:var(--cream);--o:.32;--rot:0deg;z-index:0;pointer-events:none;
  animation-duration:1600ms}

/* one revolution every two minutes — felt, not watched */
@keyframes spin{to{transform:rotate(360deg)}}
.mandala--hero use{transform-box:view-box;transform-origin:250px 250px;
  animation:spin 120s linear infinite}

/* ══════ CALENDAR ══════ */
.cal-band{padding-block:var(--pad)}
.creeper{width:min(400px,66%);margin:0 auto clamp(1.6rem,3.5vw,2.4rem);color:var(--ink);--o:.9}
.cal-band .eyebrow,.cal-band .sec-h{text-align:center}
.cal-band .sec-h{margin-inline:auto;max-width:16ch}

.cal-row{display:flex;align-items:center;justify-content:center;
  gap:clamp(.75rem,2.5vw,2rem);margin-top:clamp(1.6rem,3.5vw,2.4rem)}
.lotus--cal{width:clamp(84px,9.5vw,140px);color:var(--ink);--o:.5;--rot:-10deg;flex:none}
.lotus--cal{animation-delay:.2s}
.lotus--flip{--rot:10deg}

.cal{border-collapse:collapse;font-family:var(--sans);font-size:.88rem}
.cal caption{font-family:var(--serif);font-variation-settings:'opsz' 100,'SOFT' 0,'WONK' 1;
  font-size:1.2rem;padding-bottom:.9rem;letter-spacing:.02em}
.cal th{font-size:.58rem;letter-spacing:.14em;text-transform:uppercase;
  opacity:.55;font-weight:500;padding-bottom:.55rem}
.cal td,.cal th{width:2.5em;height:2.35em;text-align:center;padding:0}
.cal td{opacity:.72;font-variant-numeric:lining-nums}
.cal .mark{display:inline-grid;place-items:center;width:2.2em;height:2.2em;
  border-radius:50%;background:var(--hingula);color:var(--cream);opacity:1;font-weight:600}
.cal td:has(.mark){opacity:1}

/* ══════ VENUE ══════ */
/* chita jhoti: beaded rows, dotted triangles, grass fringe — conch white on
   hingula, tiled so it works at any width, phones included */
.jhoti{height:clamp(58px,7.5vw,104px);background-repeat:repeat-x;
  background-position:center bottom;background-size:auto 100%;
  background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22120%22%20height%3D%22150%22%20viewBox%3D%220%200%20120%20150%22%3E%3Cg%20fill%3D%22%23F3E7D0%22%3E%3Cellipse%20cx%3D%226.0%22%20cy%3D%227.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2218.0%22%20cy%3D%227.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2230.0%22%20cy%3D%227.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2242.0%22%20cy%3D%227.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2254.0%22%20cy%3D%227.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2266.0%22%20cy%3D%227.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2278.0%22%20cy%3D%227.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2290.0%22%20cy%3D%227.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%22102.0%22%20cy%3D%227.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%22114.0%22%20cy%3D%227.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%22126.0%22%20cy%3D%227.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%226.0%22%20cy%3D%2217.5%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2218.0%22%20cy%3D%2217.5%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2230.0%22%20cy%3D%2217.5%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2242.0%22%20cy%3D%2217.5%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2254.0%22%20cy%3D%2217.5%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2266.0%22%20cy%3D%2217.5%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2278.0%22%20cy%3D%2217.5%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2290.0%22%20cy%3D%2217.5%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%22102.0%22%20cy%3D%2217.5%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%22114.0%22%20cy%3D%2217.5%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%22126.0%22%20cy%3D%2217.5%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2260.0%22%20cy%3D%2232.0%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2252.0%22%20cy%3D%2243.4%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2268.0%22%20cy%3D%2243.4%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2244.0%22%20cy%3D%2254.8%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2260.0%22%20cy%3D%2254.8%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2276.0%22%20cy%3D%2254.8%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2236.0%22%20cy%3D%2266.2%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2252.0%22%20cy%3D%2266.2%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2268.0%22%20cy%3D%2266.2%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2284.0%22%20cy%3D%2266.2%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2228.0%22%20cy%3D%2277.6%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2244.0%22%20cy%3D%2277.6%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2260.0%22%20cy%3D%2277.6%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2276.0%22%20cy%3D%2277.6%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2292.0%22%20cy%3D%2277.6%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2220.0%22%20cy%3D%2289.0%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2236.0%22%20cy%3D%2289.0%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2252.0%22%20cy%3D%2289.0%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2268.0%22%20cy%3D%2289.0%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2284.0%22%20cy%3D%2289.0%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%22100.0%22%20cy%3D%2289.0%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2212.0%22%20cy%3D%22100.4%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2228.0%22%20cy%3D%22100.4%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2244.0%22%20cy%3D%22100.4%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2260.0%22%20cy%3D%22100.4%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2276.0%22%20cy%3D%22100.4%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%2292.0%22%20cy%3D%22100.4%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%22108.0%22%20cy%3D%22100.4%22%20rx%3D%222.9%22%20ry%3D%223.9%22%2F%3E%3Cellipse%20cx%3D%226.0%22%20cy%3D%22116.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2218.0%22%20cy%3D%22116.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2230.0%22%20cy%3D%22116.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2242.0%22%20cy%3D%22116.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2254.0%22%20cy%3D%22116.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2266.0%22%20cy%3D%22116.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2278.0%22%20cy%3D%22116.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%2290.0%22%20cy%3D%22116.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%22102.0%22%20cy%3D%22116.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%22114.0%22%20cy%3D%22116.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3Cellipse%20cx%3D%22126.0%22%20cy%3D%22116.0%22%20rx%3D%222.5%22%20ry%3D%223.3%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%23F3E7D0%22%20stroke-width%3D%220.85%22%20stroke-linecap%3D%22round%22%3E%3Cpath%20d%3D%22M1.0%20150C1.1%20137.6%201.3%20126.7%201.4%20118.9%22%2F%3E%3Cpath%20d%3D%22M3.4%20150C3.8%20138.4%204.5%20128.2%204.8%20121.0%22%2F%3E%3Cpath%20d%3D%22M5.8%20150C6.4%20139.2%207.6%20129.8%208.2%20123.1%22%2F%3E%3Cpath%20d%3D%22M8.2%20150C9.1%20140.1%2010.8%20131.4%2011.6%20125.2%22%2F%3E%3Cpath%20d%3D%22M10.6%20150C11.7%20140.9%2013.9%20133.0%2015.1%20127.3%22%2F%3E%3Cpath%20d%3D%22M13.0%20150C14.4%20141.8%2017.1%20134.6%2018.5%20129.4%22%2F%3E%3Cpath%20d%3D%22M15.4%20150C17.0%20142.6%2020.3%20136.2%2021.9%20131.6%22%2F%3E%3Cpath%20d%3D%22M17.8%20150C19.7%20143.5%2023.4%20137.7%2025.3%20133.7%22%2F%3E%3Cpath%20d%3D%22M20.2%20150C22.3%20144.3%2026.6%20139.3%2028.7%20135.8%22%2F%3E%3Cpath%20d%3D%22M22.6%20150C25.0%20145.2%2029.7%20140.9%2032.1%20137.9%22%2F%3E%3Cpath%20d%3D%22M25.0%20150C27.6%20146.0%2032.9%20142.5%2035.5%20140.0%22%2F%3E%3Cpath%20d%3D%22M27.4%20150C30.3%20146.8%2036.0%20144.1%2038.9%20142.1%22%2F%3E%3Cpath%20d%3D%22M29.8%20150C32.9%20147.7%2039.2%20145.7%2042.3%20144.2%22%2F%3E%3Cpath%20d%3D%22M32.2%20150C29.3%20147.0%2023.4%20144.3%2020.5%20142.5%22%2F%3E%3Cpath%20d%3D%22M34.6%20150C31.9%20146.1%2026.6%20142.8%2023.9%20140.4%22%2F%3E%3Cpath%20d%3D%22M37.0%20150C34.6%20145.3%2029.8%20141.2%2027.3%20138.2%22%2F%3E%3Cpath%20d%3D%22M39.4%20150C37.2%20144.5%2032.9%20139.6%2030.7%20136.1%22%2F%3E%3Cpath%20d%3D%22M41.8%20150C39.9%20143.6%2036.1%20138.0%2034.2%20134.0%22%2F%3E%3Cpath%20d%3D%22M44.2%20150C42.5%20142.8%2039.2%20136.4%2037.6%20131.9%22%2F%3E%3Cpath%20d%3D%22M46.6%20150C45.2%20141.9%2042.4%20134.8%2041.0%20129.8%22%2F%3E%3Cpath%20d%3D%22M49.0%20150C47.8%20141.1%2045.5%20133.3%2044.4%20127.7%22%2F%3E%3Cpath%20d%3D%22M51.4%20150C50.5%20140.2%2048.7%20131.7%2047.8%20125.6%22%2F%3E%3Cpath%20d%3D%22M53.8%20150C53.1%20139.4%2051.8%20130.1%2051.2%20123.5%22%2F%3E%3Cpath%20d%3D%22M56.2%20150C55.8%20138.5%2055.0%20128.5%2054.6%20121.3%22%2F%3E%3Cpath%20d%3D%22M58.6%20150C58.5%20137.7%2058.2%20126.9%2058.0%20119.2%22%2F%3E%3Cpath%20d%3D%22M61.0%20150C61.1%20137.6%2061.3%20126.7%2061.4%20118.9%22%2F%3E%3Cpath%20d%3D%22M63.4%20150C63.8%20138.4%2064.5%20128.2%2064.8%20121.0%22%2F%3E%3Cpath%20d%3D%22M65.8%20150C66.4%20139.2%2067.6%20129.8%2068.2%20123.1%22%2F%3E%3Cpath%20d%3D%22M68.2%20150C69.1%20140.1%2070.8%20131.4%2071.6%20125.2%22%2F%3E%3Cpath%20d%3D%22M70.6%20150C71.7%20140.9%2073.9%20133.0%2075.1%20127.3%22%2F%3E%3Cpath%20d%3D%22M73.0%20150C74.4%20141.8%2077.1%20134.6%2078.5%20129.4%22%2F%3E%3Cpath%20d%3D%22M75.4%20150C77.0%20142.6%2080.3%20136.2%2081.9%20131.6%22%2F%3E%3Cpath%20d%3D%22M77.8%20150C79.7%20143.5%2083.4%20137.7%2085.3%20133.7%22%2F%3E%3Cpath%20d%3D%22M80.2%20150C82.3%20144.3%2086.6%20139.3%2088.7%20135.8%22%2F%3E%3Cpath%20d%3D%22M82.6%20150C85.0%20145.2%2089.7%20140.9%2092.1%20137.9%22%2F%3E%3Cpath%20d%3D%22M85.0%20150C87.6%20146.0%2092.9%20142.5%2095.5%20140.0%22%2F%3E%3Cpath%20d%3D%22M87.4%20150C90.3%20146.8%2096.0%20144.1%2098.9%20142.1%22%2F%3E%3Cpath%20d%3D%22M89.8%20150C92.9%20147.7%2099.2%20145.7%20102.3%20144.2%22%2F%3E%3Cpath%20d%3D%22M92.2%20150C89.3%20147.0%2083.4%20144.3%2080.5%20142.5%22%2F%3E%3Cpath%20d%3D%22M94.6%20150C91.9%20146.1%2086.6%20142.8%2083.9%20140.4%22%2F%3E%3Cpath%20d%3D%22M97.0%20150C94.6%20145.3%2089.8%20141.2%2087.3%20138.2%22%2F%3E%3Cpath%20d%3D%22M99.4%20150C97.2%20144.5%2092.9%20139.6%2090.7%20136.1%22%2F%3E%3Cpath%20d%3D%22M101.8%20150C99.9%20143.6%2096.1%20138.0%2094.2%20134.0%22%2F%3E%3Cpath%20d%3D%22M104.2%20150C102.5%20142.8%2099.2%20136.4%2097.6%20131.9%22%2F%3E%3Cpath%20d%3D%22M106.6%20150C105.2%20141.9%20102.4%20134.8%20101.0%20129.8%22%2F%3E%3Cpath%20d%3D%22M109.0%20150C107.8%20141.1%20105.5%20133.3%20104.4%20127.7%22%2F%3E%3Cpath%20d%3D%22M111.4%20150C110.5%20140.2%20108.7%20131.7%20107.8%20125.6%22%2F%3E%3Cpath%20d%3D%22M113.8%20150C113.1%20139.4%20111.8%20130.1%20111.2%20123.5%22%2F%3E%3Cpath%20d%3D%22M116.2%20150C115.8%20138.5%20115.0%20128.5%20114.6%20121.3%22%2F%3E%3Cpath%20d%3D%22M118.6%20150C118.5%20137.7%20118.2%20126.9%20118.0%20119.2%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}
.jhoti--flip{transform:scaleY(-1)}
.venue-band{padding-block:0}
.venue-band > .wrap{padding-block:clamp(2.25rem,5vw,3.75rem)}
.framed{border:1px solid rgba(243,231,208,.4);padding:clamp(1.5rem,4vw,2.6rem);
  max-width:44rem;margin-inline:auto;text-align:center;position:relative}
.framed::before,.framed::after{content:'';position:absolute;width:9px;height:9px;
  border:1px solid var(--turmeric)}
.framed::before{top:-5px;left:-5px}
.framed::after{bottom:-5px;right:-5px}
.venue-band address{margin-top:.9rem;opacity:.85;letter-spacing:.02em}



/* ══════ RSVP ══════ */
.rsvp-band{display:flex;flex-direction:column}
.rsvp-band > .wrap{padding-block:var(--pad);position:relative}
.saura--rsvp{position:absolute;right:6%;top:calc(var(--pad) - .25rem);
  width:clamp(148px,16vw,232px);color:var(--ink);--o:.42;--rot:0deg}
#rsvp-form{margin-top:clamp(1.6rem,3.5vw,2.4rem);max-width:34rem}
.field{margin-bottom:1.8rem;border:0;padding:0}
.field > label,.choices legend{display:block;font-family:var(--sans);font-size:.66rem;
  letter-spacing:.16em;text-transform:uppercase;opacity:.7;margin-bottom:.7rem;padding:0}
#name{width:100%;font:inherit;font-size:1.1rem;color:var(--ink);caret-color:var(--hingula);
  background:transparent;border:0;border-bottom:1px solid rgba(28,22,19,.3);border-radius:0;
  padding:.55rem 0;transition:border-color 180ms ease}
#name::placeholder{color:rgba(28,22,19,.38);font-size:.9rem}
#name:hover{border-bottom-color:rgba(28,22,19,.6)}
#name:focus{outline:0;border-bottom-color:var(--hingula);border-bottom-width:2px;
  padding-bottom:calc(.55rem - 1px)}

.choice-row{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}
.choices input[type=radio]{position:absolute;opacity:0;width:1px;height:1px}
.choices label{display:flex;align-items:center;gap:.75rem;padding:.95rem 1rem;
  border:1px solid rgba(28,22,19,.3);cursor:pointer;font-size:.98rem;line-height:1.25;
  transition:border-color 160ms ease,color 160ms ease,background-color 160ms ease}
.choices label:hover{border-color:rgba(28,22,19,.65)}
.choices .mk{flex:none;width:13px;height:13px;border:1px solid rgba(28,22,19,.5);
  border-radius:50%;transition:background-color 160ms ease,border-color 160ms ease}
.choices input:checked + label{border-color:var(--hingula);color:var(--hingula);
  background:rgba(181,52,31,.05)}
.choices input:checked + label .mk{background:var(--hingula);border-color:var(--hingula)}
.choices input:focus-visible + label{outline:2px solid var(--turmeric);outline-offset:3px}

.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

#submit{font-family:var(--sans);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--cream);background:var(--hingula);border:1px solid var(--hingula);border-radius:0;
  padding:1rem 2.4rem;cursor:pointer;transition:background-color 180ms ease,border-color 180ms ease}
#submit:hover{background:var(--ink);border-color:var(--ink)}
#submit[disabled]{opacity:.55;cursor:progress}

.err{font-family:var(--sans);font-size:.78rem;color:#8E2B18;margin-top:.6rem}
.form-err{margin-top:1.2rem}
.thanks{margin-top:clamp(1.6rem,3.5vw,2.4rem);max-width:32ch}
.thanks h3{font-size:clamp(1.5rem,1.1rem + 1.8vw,2.2rem);font-weight:400;line-height:1.14;
  font-variation-settings:'opsz' 100,'SOFT' 0,'WONK' 1;text-shadow:var(--press)}
.thanks p{margin-top:.9rem;opacity:.8}
.thanks button{margin-top:1.2rem;font-family:var(--sans);font-size:.66rem;letter-spacing:.16em;
  text-transform:uppercase;background:none;border:0;padding:0;opacity:.75;cursor:pointer;
  color:inherit;border-bottom:1px solid rgba(28,22,19,.3)}
.thanks button:hover{color:var(--hingula);border-bottom-color:var(--hingula)}

/* ══════ FOOTER ══════ */
footer{padding-block:clamp(2.2rem,5vw,3.6rem) clamp(1.8rem,4vw,2.8rem);text-align:center}
.creeper--sm{width:min(280px,58%);color:var(--cream);--o:.65;margin:0 auto clamp(1.4rem,3vw,2rem)}
.fnote{font-size:1.02rem;line-height:1.65;opacity:.86;max-width:34ch;
  margin-inline:auto;font-variation-settings:'opsz' 60,'SOFT' 20,'WONK' 0}
.fdate{font-family:var(--sans);font-size:.62rem;letter-spacing:.24em;
  text-transform:uppercase;opacity:.55;margin-top:1.1rem}


/* ══════ TABLET ══════ */
@media (max-width:1000px){
  /* the full names need more room before the layout stacks at 720px */
  .hero-in{column-gap:clamp(.5rem,1.5vw,1rem);
    grid-template-columns:minmax(0,1.32fr) minmax(0,.68fr)}
  .names{font-size:clamp(1.6rem,4.6vw,3.4rem)}
  .names{font-size:clamp(2.4rem,7.6vw,4.6rem)}
  }

/* ══════ MOBILE ══════ */
@media (max-width:720px){
  /* on phones the mandala rises from under the top border instead of the side */
  .hero{--mw:min(118vw,520px)}
  /* the pot sits 6.5% left of the artwork's bounding-box centre, so the
     box is centred but the pot isn't — shift to optically centre it */
  .figs-wrap{margin-right:0;place-items:center;transform:translateX(5%)}
  .kalasha{width:min(56%,214px);justify-self:center}
  .mandala--hero{left:calc(50% - var(--mw) / 2);right:auto;
    top:calc(var(--mw) * -.58);--o:.34}
  .hero-art{top:28px;bottom:28px}
  .hero-in{grid-template-columns:1fr;grid-template-areas:"copy" "art" "date";
    row-gap:clamp(.6rem,1.8vh,1.1rem);
    padding-block:calc(var(--mw) * .38) clamp(1.25rem,3vh,2rem);
    text-align:center;justify-items:center}
  .hero-copy{align-self:auto}
  .names{align-items:center}
  .datebar{align-self:auto;margin-top:0;max-width:100%;width:min(100%,340px)}
  .names{font-size:clamp(2rem,12vw,3.6rem)}
  /* hero is centred on phones, so the stagger indents serve no purpose — and a
     7% indent on the longer name is enough to force it onto a second line */
  .names .amp,.names .nm--a,.names .nm--s,
  .nm-swap .names .nm--a,.nm-swap .names .nm--s{margin-left:0}
  /* the bunch sits in .hero-art (z-index 0), so it reads behind the date block */
  .paddy-bunch{display:flex;left:1%;bottom:0}
  .paddy.p1{width:34px;--o:.42}
  .paddy.p2{width:48px;margin-left:-19px;--o:.58}
  .paddy.p3{width:38px;margin-left:-21px;--o:.48}
  .paddy.p4{width:29px;margin-left:-17px;--o:.36}
  .trail--hero{left:auto;right:5%;top:auto;bottom:2%;width:48px;--rot:-14deg}
  .jhoti{height:clamp(42px,13vw,64px)}
  .cal-row{gap:.5rem}
  .lotus--cal{width:clamp(44px,12vw,62px)}
  .cal{font-size:.8rem}
  .cal td,.cal th{width:2.25em}
  .choice-row{grid-template-columns:1fr}
  .saura--rsvp{right:3%;width:132px}
  .strip{height:28px;background-size:66px 28px}
}
@media (max-width:400px){
  .lotus--cal{display:none}
  .cal{font-size:.86rem}
}

/* ══════ MOTION / PRINT ══════ */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .orn{animation:none;opacity:var(--o);transform:rotate(var(--rot))}
  .trail use{animation:none;opacity:1}
  .kalasha{animation:none;opacity:1}
  .mandala--hero use{animation:none}
  .hero-copy .eyebrow,.names > span,.datebar{animation:none;opacity:1;transform:none}
  *,*::before,*::after{transition-duration:.01ms !important}
}
@media print{
  .grain,#rsvp-form,.skip{display:none !important}
  body{background:#fff;color:#000;font-size:11pt}
  .band--red,.band--ink{background:#fff !important;color:#000 !important}
  .hero{min-height:auto}
  .strip{display:none}
  .kalasha{filter:brightness(.14)}
  .trail{--alta:#1C1613}
  .orn{animation:none;opacity:1}
  .trail use{animation:none;opacity:1}
  .mandala--hero use{animation:none}
  .hero-copy .eyebrow,.names > span,.datebar,.kalasha{animation:none;opacity:1;transform:none}
}
