/* ------------------------------------------------------------------
   GINGRASS GALLERY · Arts in Milwaukee
   Sunset editorial system — plum ink, coral light, gold leaf
------------------------------------------------------------------- */

:root{
  --plum-990:#190720;
  --plum-950:#220C2A;
  --plum-900:#2C1136;
  --plum-800:#3D1A4A;
  --plum-700:#512563;
  --ink:#38102F;
  --ink-soft:#6E3F58;
  --page:#FFF5EE;
  --page-tint:#FCE9DE;
  --coral:#FF6B52;
  --coral-deep:#E44A2E;
  --gold:#EDB44E;
  --gold-soft:#F5CE85;
  --blush:#FFD8C9;
  --line:rgba(64,18,52,.16);
  --line-strong:rgba(64,18,52,.3);
  --line-dark:rgba(255,216,201,.18);
  --display:"Marcellus",serif;
  --body:"Newsreader",Georgia,serif;
}

/* ============================ BASE =============================== */
*,*::before,*::after{box-sizing:border-box}
html{font-size:16px;-webkit-text-size-adjust:100%;scroll-padding-top:5rem}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{
  margin:0;
  font-family:var(--body);
  font-size:1.4375rem;            /* 23px reading default */
  line-height:1.75;
  color:var(--ink);
  background:var(--page);
  overflow-x:hidden;
}
img{max-width:100%;height:auto;display:block}
a{color:var(--coral-deep);text-decoration-color:rgba(228,74,46,.4);text-underline-offset:3px;transition:color .2s,text-decoration-color .2s}
a:hover{color:var(--plum-800);text-decoration-color:var(--gold)}
:focus{outline:none}
:focus-visible{outline:2px solid var(--coral);outline-offset:3px;border-radius:2px}
::selection{background:var(--gold);color:var(--plum-990)}
h1,h2,h3,h4{font-family:var(--display);font-weight:400;line-height:1.14;margin:0;text-wrap:balance}
p{margin:0;text-wrap:pretty}

.wrap{width:min(1220px,92vw);margin-inline:auto}
.wrap--narrow{width:min(720px,92vw);margin-inline:auto}

/* ============================ HEADER ============================ */
.site-head{
  background:linear-gradient(180deg,var(--plum-990),var(--plum-950));
  color:var(--blush);
  border-bottom:1px solid var(--line-dark);
  position:relative;
  z-index:50;
}
.site-head::before{ /* gold leaf hairline across the very top */
  content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--coral-deep),var(--gold) 35%,var(--gold-soft) 50%,var(--gold) 65%,var(--coral-deep));
}
.head-bar{
  display:flex;align-items:center;justify-content:space-between;
  gap:2rem;padding:1.35rem 0;
}
.brand{display:flex;flex-direction:column;gap:.2rem;text-decoration:none;color:var(--page)}
.brand-name{
  font-family:var(--display);
  font-size:1.65rem;letter-spacing:.14em;line-height:1;
  color:var(--page);white-space:nowrap;
}
.brand-name em{font-style:normal;color:var(--gold)}
.brand-sub{
  font-size:.9rem;letter-spacing:.34em;text-transform:uppercase;
  color:var(--coral);font-family:var(--display);
}
.nav{display:flex;align-items:center;gap:2.1rem}
.nav a{
  font-family:var(--display);font-size:1.02rem;letter-spacing:.13em;
  text-transform:uppercase;text-decoration:none;color:var(--blush);
  padding:.55rem 0;position:relative;
}
.nav a::after{
  content:"";position:absolute;left:0;right:0;bottom:.1rem;height:2px;
  background:var(--gold);transform:scaleX(0);transform-origin:left;
  transition:transform .25s ease;
}
.nav a:hover{color:var(--gold)}
.nav a:hover::after{transform:scaleX(1)}
.nav a.is-here{color:var(--coral)}
.nav a.is-here::after{background:var(--coral);transform:scaleX(1)}
.nav-toggle{position:absolute;opacity:0;pointer-events:none}
.burger{display:none}

@media (max-width:900px){
  .head-bar{padding:.9rem 0;gap:1rem}
  .brand-name{font-size:1.32rem}
  .brand-sub{font-size:.78rem;letter-spacing:.3em}
  .burger{
    display:flex;flex-direction:column;justify-content:center;gap:6px;
    width:52px;height:48px;padding:10px;cursor:pointer;flex:none;
    border:1px solid var(--line-dark);border-radius:10px;
  }
  .burger span{display:block;height:2px;background:var(--gold);border-radius:2px;transition:transform .25s,opacity .25s}
  .nav{
    position:absolute;left:0;right:0;top:100%;
    flex-direction:column;align-items:stretch;gap:0;
    background:var(--plum-990);
    border-bottom:1px solid var(--line-dark);
    max-height:0;overflow:hidden;transition:max-height .3s ease;
    box-shadow:0 24px 40px -20px rgba(25,7,32,.7);
  }
  .nav a{padding:1rem 6vw;border-bottom:1px solid var(--line-dark);font-size:1.1rem}
  .nav a::after{content:none}
  .nav a.is-here{box-shadow:inset 4px 0 0 var(--coral)}
  .nav-toggle:checked ~ .nav{max-height:32rem}
  .nav-toggle:checked ~ .burger span:nth-child(1){transform:translateY(8px) rotate(45deg)}
  .nav-toggle:checked ~ .burger span:nth-child(2){opacity:0}
  .nav-toggle:checked ~ .burger span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}
}

/* ============================ BUTTONS ============================ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  font-family:var(--display);font-size:1.02rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--plum-950);background:var(--gold);
  padding:.9rem 1.8rem;border-radius:999px;text-decoration:none;
  border:1px solid transparent;min-height:44px;
  transition:background .25s,color .25s,transform .25s,box-shadow .25s;
}
.btn:hover{background:var(--coral);color:var(--plum-990);transform:translateY(-2px);box-shadow:0 12px 24px -12px rgba(228,74,46,.55)}
.btn--line{background:transparent;border-color:var(--gold);color:var(--gold)}
.btn--line:hover{background:var(--gold);color:var(--plum-950)}
.btn--ink{background:var(--plum-900);color:var(--page)}
.btn--ink:hover{background:var(--coral-deep);color:var(--page)}

/* ============================ SUN HERO =========================== */
.sunhero{
  position:relative;color:var(--page);
  background:
    radial-gradient(58vmin 58vmin at 50% 104%, var(--gold) 0%, var(--coral) 34%, rgba(228,74,46,.55) 52%, transparent 70%),
    radial-gradient(120vmin 90vmin at 50% 120%, rgba(255,107,82,.35), transparent 60%),
    linear-gradient(180deg, var(--plum-990) 0%, var(--plum-900) 55%, var(--plum-800) 100%);
  text-align:center;
  padding:clamp(4.5rem,10vw,9rem) 0 clamp(4rem,9vw,7.5rem);
  overflow:hidden;
}
.sunhero::before{ /* faint sun ring */
  content:"";position:absolute;left:50%;bottom:-18vmin;width:80vmin;height:80vmin;
  transform:translateX(-50%);border-radius:50%;
  border:1px solid rgba(245,206,133,.25);
  pointer-events:none;
}
.sunhero::after{ /* horizon hairline */
  content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}
.sunhero .wrap{position:relative}
.hero-kicker{
  display:flex;align-items:center;justify-content:center;gap:1.2rem;
  font-family:var(--display);letter-spacing:.5em;text-transform:uppercase;
  font-size:1rem;color:var(--gold);margin-bottom:2rem;
}
.hero-kicker::before,.hero-kicker::after{
  content:"";width:clamp(30px,6vw,70px);height:1px;flex:none;
  background:linear-gradient(90deg,transparent,var(--gold));
}
.hero-kicker::after{background:linear-gradient(90deg,var(--gold),transparent)}
.hero-title{
  font-size:clamp(3rem,9.5vw,7.75rem);
  letter-spacing:.06em;color:var(--page);
  text-shadow:0 2px 60px rgba(25,7,32,.55);
}
.hero-title span{display:block;color:var(--blush)}
.hero-sub{
  margin:2rem auto 0;max-width:46ch;
  font-size:clamp(1.15rem,2.6vw,1.35rem);font-style:italic;color:var(--blush);
  line-height:1.65;
}
.hero-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;margin-top:2.8rem}

/* memorial ribbon */
.memorial{
  background:var(--plum-800);color:var(--blush);
  border-top:1px solid var(--line-dark);
  border-bottom:1px solid var(--line-dark);
}
.memorial .wrap{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
  gap:.6rem 1.4rem;padding:1.1rem 0;text-align:center;
}
.memorial-dates{
  font-family:var(--display);letter-spacing:.3em;color:var(--gold);font-size:1rem;
  border:1px solid rgba(237,180,78,.4);border-radius:999px;padding:.2rem 1rem .2rem 1.3rem;
}
.memorial p{font-size:1.15rem;font-style:italic}
.memorial a{color:var(--coral);text-decoration-color:rgba(255,107,82,.5)}
.memorial a:hover{color:var(--gold)}

/* ============================ SECTIONS =========================== */
.sec{padding:clamp(4rem,8vw,7.5rem) 0}
.sec--dark{background:linear-gradient(180deg,var(--plum-950),var(--plum-900));color:var(--blush)}
.sec--tint{background:var(--page-tint);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.sec--coral{background:linear-gradient(160deg,var(--coral-deep),var(--coral) 70%,var(--gold));color:var(--plum-990)}
.sec-head{display:flex;align-items:baseline;gap:1.4rem;margin-bottom:clamp(2.2rem,5vw,3.4rem);flex-wrap:wrap}
.sec-num{
  font-family:var(--display);font-size:1.05rem;letter-spacing:.3em;
  color:var(--coral-deep);white-space:nowrap;
}
.sec--dark .sec-num{color:var(--gold)}
.sec-title{font-size:clamp(2rem,4.6vw,3.4rem);letter-spacing:.03em}
.sec-intro{max-width:62ch;font-size:1.35rem;font-style:italic;color:var(--ink-soft);margin-top:1.1rem}
.sec--dark .sec-intro{color:var(--gold-soft)}

/* ======================= HOME · STORY FEATURE ==================== */
.story-feature{
  display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2.4rem,5vw,4.5rem);
  align-items:center;
}
.story-feature figure{margin:0;position:relative}
.story-feature img{
  border-radius:3px;aspect-ratio:4/5;object-fit:cover;width:100%;
  border:10px solid rgba(255,245,238,.08);
  outline:1px solid rgba(237,180,78,.35);
  box-shadow:0 34px 70px -30px rgba(10,2,14,.8);
}
.story-years{
  position:absolute;right:-1rem;bottom:-1.4rem;
  background:var(--gold);color:var(--plum-990);
  font-family:var(--display);letter-spacing:.18em;font-size:1.05rem;
  padding:.7rem 1.3rem;border-radius:3px;box-shadow:0 14px 30px -12px rgba(25,7,32,.5);
}
.story-copy .sec-title{margin-bottom:1.5rem}
.story-copy p{font-size:1.32rem;color:var(--blush);margin-bottom:1.3rem}
.story-copy p strong{color:var(--page)}
.story-copy p:last-child{margin-bottom:0;margin-top:2rem}
@media (max-width:860px){
  .story-feature{grid-template-columns:1fr}
  .story-years{right:.8rem;bottom:-1rem}
}

/* ======================== HOME · WINGS =========================== */
.wing{border-top:1px solid var(--line);padding:3rem 0;display:grid;grid-template-columns:220px 1fr;gap:2rem}
.wing:last-child{border-bottom:1px solid var(--line)}
.wing-label{
  font-family:var(--display);letter-spacing:.22em;text-transform:uppercase;
  font-size:1rem;color:var(--coral-deep);padding-top:.5rem;
  display:flex;flex-direction:column;gap:.9rem;align-items:flex-start;
}
.wing-label::after{content:"";width:44px;height:2px;background:var(--gold)}
.wing-items{display:grid;gap:1.9rem}
.wing-item{display:grid;grid-template-columns:150px 1fr;gap:1.6rem;align-items:center;text-decoration:none;color:inherit}
.wing-item img{
  aspect-ratio:4/3;object-fit:cover;border-radius:3px;width:100%;
  outline:1px solid var(--line);outline-offset:-1px;
  transition:filter .3s,box-shadow .3s;
}
.wing-item h3{
  font-size:1.55rem;transition:color .2s;
  text-decoration:underline transparent;text-underline-offset:5px;text-decoration-thickness:2px;
  transition:color .25s,text-decoration-color .25s;
}
.wing-item:hover h3{color:var(--coral-deep);text-decoration-color:var(--gold)}
.wing-item:hover img{filter:brightness(1.06) saturate(1.05);box-shadow:0 16px 30px -18px rgba(56,16,47,.55)}
.wing-item p{font-size:1.1rem;color:var(--ink-soft);margin-top:.4rem}
@media (max-width:760px){
  .wing{grid-template-columns:1fr;gap:1.4rem;padding:2.2rem 0}
  .wing-label{padding-top:0}
  .wing-item{grid-template-columns:104px 1fr;gap:1rem;align-items:start}
  .wing-item img{aspect-ratio:1}
  .wing-item h3{font-size:1.28rem;line-height:1.2}
  .wing-item p{font-size:1rem;margin-top:.3rem}
}

/* ==================== HOME · FESTIVAL YEAR ======================= */
.festyear{display:grid;grid-template-columns:repeat(4,1fr);gap:1.4rem}
.fy-card{
  background:rgba(255,245,238,.06);
  border:1px solid var(--line-dark);border-radius:6px;
  padding:1.8rem 1.6rem;display:flex;flex-direction:column;gap:.7rem;
  transition:border-color .25s,transform .25s,background .25s;
}
.fy-card:hover{border-color:rgba(237,180,78,.55);transform:translateY(-3px);background:rgba(255,245,238,.09)}
.fy-when{font-family:var(--display);letter-spacing:.28em;text-transform:uppercase;font-size:.95rem;color:var(--gold)}
.fy-card h3{font-size:1.5rem}
.fy-card h3 a{color:var(--page);text-decoration:none}
.fy-card h3 a:hover{color:var(--coral)}
.fy-card p{font-size:1.08rem;color:var(--blush)}
@media (max-width:1020px){.festyear{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.festyear{grid-template-columns:1fr}}

/* ===================== HOME · MUSEUMS/GALLERIES ================== */
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem}
.trio-card h3{font-size:1.7rem;margin:1.2rem 0 .5rem}
.trio-card p{font-size:1.15rem;color:var(--ink-soft)}
.trio-card img{
  aspect-ratio:3/2;object-fit:cover;border-radius:3px;width:100%;
  border:8px solid #fff;outline:1px solid var(--line);
  box-shadow:0 22px 44px -26px rgba(56,16,47,.45);
}
@media (max-width:860px){.trio{grid-template-columns:1fr;gap:2.6rem}}

.gallery-ledger{border-top:2px solid var(--plum-990)}
.ledger-row{
  display:grid;grid-template-columns:64px 1fr 1.6fr auto;gap:1.6rem;align-items:center;
  padding:1.8rem .6rem;border-bottom:1px solid var(--line);
  transition:background .25s;
}
.ledger-row:hover{background:linear-gradient(90deg,transparent,rgba(237,180,78,.14) 50%,transparent)}
.ledger-num{font-family:var(--display);color:var(--coral-deep);font-size:1.1rem;letter-spacing:.1em}
.ledger-row h3{font-size:1.8rem}
.ledger-row p{font-size:1.15rem;color:var(--ink-soft)}
.ledger-link{font-family:var(--display);letter-spacing:.14em;text-transform:uppercase;font-size:.95rem;white-space:nowrap;padding:.5rem 0}
@media (max-width:920px){
  .ledger-row{grid-template-columns:48px 1fr;grid-template-rows:auto auto auto;row-gap:.4rem;padding:1.6rem .2rem}
  .ledger-row p{grid-column:2}
  .ledger-link{grid-column:2}
}

/* ========================= PARTNER CARDS ========================= */
/* styled as gallery wall-labels: corner brackets, hairline logo shelf */
.partner-grid{display:grid;gap:1.6rem}
.partner-grid--four{grid-template-columns:repeat(4,1fr)}
.partner-grid--three{grid-template-columns:repeat(3,1fr)}
@media (max-width:1080px){.partner-grid--four{grid-template-columns:repeat(2,1fr)}}
@media (max-width:900px){.partner-grid--three{grid-template-columns:1fr}}
@media (max-width:640px){.partner-grid--four{grid-template-columns:1fr}}

.partner-card{
  position:relative;
  display:flex;flex-direction:column;gap:1rem;
  background:var(--page);border:1px solid var(--line);border-radius:2px;
  padding:2rem 1.8rem 1.8rem;
  transition:border-color .25s,transform .25s;
}
.partner-card::before,.partner-card::after{
  content:"";position:absolute;width:20px;height:20px;pointer-events:none;
  border:2px solid var(--gold);transition:border-color .25s;
}
.partner-card::before{top:7px;left:7px;border-right:none;border-bottom:none}
.partner-card::after{bottom:7px;right:7px;border-left:none;border-top:none}
.partner-card:hover{border-color:var(--line-strong);transform:translateY(-3px)}
.partner-card:hover::before,.partner-card:hover::after{border-color:var(--coral)}
.partner-logo{
  width:100%;height:64px;display:flex;align-items:center;justify-content:center;
  background:#fff;border:1px solid var(--line);border-radius:2px;
  padding:.6rem 1rem;
}
.partner-logo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;margin:auto}
.partner-name{font-family:var(--display);font-size:1.35rem}
.partner-name a{color:var(--ink);text-decoration:none}
.partner-name a:hover{color:var(--coral-deep)}
.partner-desc{font-size:1.05rem;color:var(--ink-soft);flex:1}
.partner-cta{
  align-self:flex-start;font-family:var(--display);font-size:.95rem;
  letter-spacing:.13em;text-transform:uppercase;text-decoration:none;
  color:var(--coral-deep);border-bottom:2px solid var(--gold);padding:.3rem 0 .15rem;
}
.partner-cta::after{content:" →"}
.partner-cta:hover{color:var(--plum-800);border-bottom-color:var(--coral)}

/* dark-section partner variant */
.sec--dark .partner-card{background:rgba(255,245,238,.05);border-color:var(--line-dark)}
.sec--dark .partner-card:hover{border-color:rgba(255,216,201,.4)}
.sec--dark .partner-name a{color:var(--page)}
.sec--dark .partner-name a:hover{color:var(--gold)}
.sec--dark .partner-desc{color:var(--blush)}
.sec--dark .partner-cta{color:var(--gold)}
.sec--dark .partner-cta:hover{color:var(--coral)}

/* ========================== ARTICLE ============================== */
.article-hero{
  position:relative;color:var(--page);
  background:linear-gradient(180deg,var(--plum-990),var(--plum-900));
  overflow:hidden;
}
.article-hero::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}
.article-hero .art-img{position:absolute;inset:0}
.article-hero .art-img img{width:100%;height:100%;object-fit:cover;opacity:.38}
.article-hero .art-img::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(25,7,32,.35),rgba(25,7,32,.9) 92%);
}
.art-head{position:relative;padding:clamp(5rem,11vw,9.5rem) 0 clamp(3rem,6vw,4.8rem);text-align:center}
.art-kicker{
  font-family:var(--display);letter-spacing:.4em;text-transform:uppercase;
  font-size:.98rem;color:var(--gold);margin-bottom:1.6rem;
}
.art-kicker a{color:var(--gold);text-decoration:none}
.art-kicker a:hover{color:var(--coral)}
.art-title{font-size:clamp(2.2rem,6vw,4.6rem);letter-spacing:.02em;max-width:22ch;margin-inline:auto}
.art-stand{margin:1.8rem auto 0;max-width:52ch;font-size:clamp(1.15rem,2.4vw,1.35rem);font-style:italic;color:var(--blush);line-height:1.65}
.art-stand::before{
  content:"";display:block;width:56px;height:2px;margin:0 auto 1.6rem;
  background:linear-gradient(90deg,var(--coral),var(--gold));
}

.prose{padding:clamp(3.5rem,7vw,6rem) 0}
.prose > * + *{margin-top:1.7rem}
.prose p{font-size:1.4375rem}
.prose .lead{font-size:1.62rem;line-height:1.6}
.prose .lead::first-letter,
.prose p.dropcap::first-letter{
  font-family:var(--display);
  font-size:4.6em;line-height:.76;color:var(--coral-deep);
  float:left;padding:.1em .14em 0 0;
}
.prose h2{font-size:clamp(1.9rem,3.6vw,2.6rem);padding-top:2.2rem;color:var(--plum-800)}
.prose h3{font-size:1.6rem;padding-top:1.2rem;color:var(--plum-800)}
.prose strong{color:var(--plum-800)}
.prose ul,.prose ol{padding-left:1.4rem;display:grid;gap:.8rem}
.prose li::marker{color:var(--coral-deep)}
.kicker-line{
  display:flex;align-items:center;gap:1.1rem;
  font-family:var(--display);letter-spacing:.3em;text-transform:uppercase;
  font-size:.95rem;color:var(--coral-deep);padding-top:2.6rem;
}
.kicker-line::after{content:"";flex:1;height:1px;background:var(--line)}

/* figures — museum wall labels */
figure{margin:0}
.figure{margin:3rem 0}
.figure img{width:100%;border-radius:3px;background:var(--page-tint)}
.figure figcaption{
  display:flex;gap:.9rem;align-items:baseline;
  margin-top:1rem;padding-left:.2rem;
  font-size:1.02rem;line-height:1.55;color:var(--ink-soft);font-style:italic;
}
.figure figcaption::before{
  content:"";width:26px;height:2px;background:var(--gold);
  transform:translateY(-4px);flex:none;
}
.figure--frame img{
  border:10px solid #fff;outline:1px solid var(--line);
  box-shadow:0 24px 50px -24px rgba(56,16,47,.45);
}
.figure--bleed{width:min(1100px,94vw);margin-left:50%;transform:translateX(-50%)}
@media (min-width:1000px){
  .figure--left{float:left;width:46%;margin:0.6rem 2.4rem 1.4rem calc((min(1100px,94vw) - 720px)/-2)}
  .figure--right{float:right;width:46%;margin:0.6rem calc((min(1100px,94vw) - 720px)/-2) 1.4rem 2.4rem}
}

/* pull quote */
.pullquote{
  margin:3.2rem 0;padding:.2rem 0 .2rem 1.9rem;border-left:4px solid var(--coral);
  font-family:var(--display);font-size:clamp(1.5rem,3vw,2.15rem);
  line-height:1.35;color:var(--plum-800);
}
.pullquote cite{
  display:block;margin-top:1.1rem;font-family:var(--body);font-style:italic;
  font-size:1.1rem;color:var(--ink-soft);
}
.pullquote cite::before{content:"";display:inline-block;width:22px;height:1px;background:var(--gold);vertical-align:middle;margin-right:.7rem}

/* info card / quick facts */
.infocard{
  background:var(--page-tint);border:1px solid var(--line);border-radius:6px;
  border-top:3px solid var(--gold);
  padding:1.7rem 1.8rem;margin:2.6rem 0;
}
.infocard h4{font-size:1.02rem;letter-spacing:.26em;text-transform:uppercase;color:var(--coral-deep);margin-bottom:1rem}
.infocard ul{list-style:none;padding:0;margin:0;display:grid;gap:.7rem}
.infocard li{font-size:1.12rem;line-height:1.6;display:flex;gap:.8rem}
.infocard li::before{content:"—";color:var(--gold);flex:none}
.infocard a{font-size:inherit}

.factrow{display:flex;flex-wrap:wrap;gap:.7rem;margin:1.6rem 0 0}
.fact{
  font-size:1rem;font-style:normal;line-height:1.5;
  border:1px solid var(--line);border-radius:999px;
  padding:.4rem 1.05rem;color:var(--plum-800);background:var(--page);
}
.fact b{font-family:var(--display);font-weight:400;color:var(--coral-deep);letter-spacing:.06em}

/* map embeds */
.mapframe{margin:3rem 0 0;border:1px solid var(--line);border-radius:6px;overflow:hidden;box-shadow:0 20px 44px -34px rgba(56,16,47,.4)}
.mapframe iframe{display:block;width:100%;height:340px;border:0}
.mapframe figcaption{
  font-size:1.02rem;font-style:italic;color:var(--ink-soft);
  padding:.85rem 1.3rem;background:var(--page-tint);border-top:1px solid var(--line);
}
@media (max-width:640px){.mapframe iframe{height:250px}}

/* numbered stops (world tour) */
.stop{border-top:1px solid var(--line);padding-top:2.8rem;margin-top:3.4rem}
.stop-head{display:flex;align-items:baseline;gap:1.2rem;flex-wrap:wrap;row-gap:.6rem}
.stop-head h2{padding-top:0 !important}
.stop-num{
  font-family:var(--display);font-size:.95rem;letter-spacing:.24em;
  color:var(--page);background:var(--coral-deep);border-radius:999px;
  padding:.35rem 1rem;white-space:nowrap;
}
.stop-place{font-size:1.02rem;letter-spacing:.2em;text-transform:uppercase;font-family:var(--display);color:var(--ink-soft)}

/* plaques (artist entries) */
.plaque{
  display:grid;grid-template-columns:250px 1fr;gap:2.1rem;
  border:1px solid var(--line);border-radius:4px;background:#fff;
  padding:2rem;margin-top:2.8rem;align-items:start;
  box-shadow:0 24px 50px -36px rgba(56,16,47,.45);
}
.plaque img{aspect-ratio:3/4;object-fit:cover;border-radius:2px;width:100%}
.plaque h2,.plaque h3{padding-top:0 !important}
.plaque-dates{font-family:var(--display);letter-spacing:.2em;font-size:.98rem;text-transform:uppercase;color:var(--coral-deep);margin:.5rem 0 1rem;padding-bottom:.9rem;border-bottom:1px solid var(--line)}
.plaque p{font-size:1.28rem}
.plaque p + p{margin-top:1rem}
@media (max-width:720px){.plaque{grid-template-columns:1fr;padding:1.4rem}.plaque img{aspect-ratio:4/3}}

/* program listing (lakefront / film) */
.program{border-top:2px solid var(--plum-990);margin-top:3rem}
.program-item{display:grid;grid-template-columns:96px 1fr;gap:1.8rem;padding:2.6rem 0;border-bottom:1px solid var(--line)}
.program-letter{
  font-family:var(--display);font-size:2.6rem;color:var(--gold);
  line-height:1;border-top:4px solid var(--coral);padding-top:.6rem;height:fit-content;
}
.program-item h2,.program-item h3{padding-top:0 !important;font-size:1.9rem}
.program-item p{margin-top:.9rem}
.program-item .figure{margin:1.6rem 0}
@media (max-width:640px){
  .program-item{grid-template-columns:1fr;gap:.8rem}
  .program-letter{border-top:none;border-left:4px solid var(--coral);padding:.1rem 0 .1rem .8rem}
}

/* day schedule (oktoberfest) */
.sched{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;margin:3rem 0}
.sched-day{
  background:#fff;border:1px solid var(--line);border-radius:6px;overflow:hidden;
  box-shadow:0 18px 40px -32px rgba(56,16,47,.4);
}
.sched-day h3{
  background:linear-gradient(160deg,var(--plum-950),var(--plum-800));color:var(--gold);text-align:center;
  letter-spacing:.3em;text-transform:uppercase;font-size:1.05rem;
  padding:1rem;border-bottom:3px solid var(--gold);
}
.sched-day ul{list-style:none;margin:0;padding:1.4rem 1.5rem;display:grid;gap:1rem}
.sched-day li{font-size:1.1rem;line-height:1.55;padding-left:1.1rem;position:relative}
.sched-day li::before{content:"";position:absolute;left:0;top:.62em;width:7px;height:7px;border-radius:50%;background:var(--coral)}
.sched-day li b{font-family:var(--display);font-weight:400;color:var(--coral-deep)}
@media (max-width:880px){.sched{grid-template-columns:1fr}}

/* stat row (salsa) */
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1.4rem;margin:3rem 0;text-align:center}
.stat{background:var(--plum-900);color:var(--blush);border-radius:6px;padding:2rem 1rem;border-bottom:3px solid var(--coral)}
.stat b{display:block;font-family:var(--display);font-weight:400;font-size:3rem;color:var(--gold);line-height:1}
.stat span{display:block;margin-top:.7rem;font-size:1.02rem;letter-spacing:.16em;text-transform:uppercase;font-family:var(--display)}
@media (max-width:640px){
  .stat-row{gap:.7rem}
  .stat{padding:1.3rem .5rem}
  .stat b{font-size:2rem}
  .stat span{font-size:.8rem;letter-spacing:.12em}
}

/* lineup cards (salsa performers) */
.lineup{display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem;margin-top:2.8rem}
.lineup-card{
  background:#fff;border:1px solid var(--line);border-radius:6px;overflow:hidden;
  box-shadow:0 18px 40px -32px rgba(56,16,47,.4);
  transition:transform .25s,box-shadow .25s;
}
.lineup-card:hover{transform:translateY(-4px);box-shadow:0 26px 48px -30px rgba(56,16,47,.55)}
.lineup-card img{aspect-ratio:1;object-fit:cover;width:100%}
.lineup-card div{padding:1.4rem 1.5rem 1.7rem;border-top:3px solid var(--coral)}
.lineup-card h3{font-size:1.5rem;padding-top:0 !important}
.lineup-card p{font-size:1.12rem;color:var(--ink-soft);margin-top:.6rem}
@media (max-width:880px){.lineup{grid-template-columns:1fr}}

/* gallery entries (unmissable) */
.gallery-entry{border-top:1px solid var(--line);padding-top:2.8rem;margin-top:3.4rem}
.gallery-entry .addr{
  display:inline-flex;align-items:center;gap:.6rem;
  font-size:1rem;font-family:var(--display);letter-spacing:.08em;line-height:1.4;
  color:var(--plum-800);background:var(--page-tint);
  border:1px solid var(--line);border-radius:999px;padding:.5rem 1.15rem;
  margin-top:.9rem;text-decoration:none;
  transition:border-color .25s,color .25s;
}
.gallery-entry .addr:hover{border-color:var(--coral);color:var(--coral-deep)}

/* next reads */
.next-reads{background:var(--page-tint);border-top:1px solid var(--line);padding:3.5rem 0 4.5rem}
.next-reads h2{
  display:flex;align-items:center;gap:1.1rem;
  font-size:1.05rem;letter-spacing:.3em;text-transform:uppercase;color:var(--coral-deep);margin-bottom:2rem;font-family:var(--display);
}
.next-reads h2::after{content:"";flex:1;height:1px;background:var(--line)}
.next-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.6rem}
.next-card{
  display:flex;flex-direction:column;gap:.55rem;text-decoration:none;color:inherit;
  background:var(--page);border:1px solid var(--line);border-radius:4px;padding:1.7rem 1.8rem;
  transition:border-color .25s,transform .25s,box-shadow .25s;
}
.next-card:hover{border-color:var(--coral);transform:translateY(-3px);box-shadow:0 18px 34px -26px rgba(56,16,47,.5)}
.next-card span{font-family:var(--display);font-size:.92rem;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-soft)}
.next-card strong{font-family:var(--display);font-weight:400;font-size:1.5rem;line-height:1.25}
.next-card:hover strong{color:var(--coral-deep)}
@media (max-width:680px){.next-grid{grid-template-columns:1fr}}

/* ========================== CONTACT ============================== */
.contact-form{display:grid;gap:1.4rem;margin-top:2.8rem}
.contact-form label{display:grid;gap:.5rem;font-family:var(--display);letter-spacing:.14em;text-transform:uppercase;font-size:.95rem;color:var(--plum-800)}
.contact-form input,.contact-form textarea{
  font-family:var(--body);font-size:1.25rem;color:var(--ink);
  background:#fff;border:1px solid var(--line);border-radius:4px;
  padding:.9rem 1.05rem;width:100%;min-height:44px;
  transition:border-color .2s,box-shadow .2s;
}
.contact-form input:focus,.contact-form textarea:focus{
  outline:none;border-color:var(--coral);box-shadow:0 0 0 3px rgba(255,107,82,.22);
}
.contact-form button{
  justify-self:start;cursor:pointer;min-height:48px;
  font-family:var(--display);font-size:1.02rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--page);background:var(--plum-900);border:none;border-radius:999px;
  padding:.95rem 2.2rem;
  transition:background .25s,transform .25s,box-shadow .25s;
}
.contact-form button:hover{background:var(--coral-deep);transform:translateY(-2px);box-shadow:0 12px 24px -12px rgba(228,74,46,.55)}

/* ========================== FOOTER =============================== */
.site-foot{
  background:
    radial-gradient(70vmin 40vmin at 50% 118%, rgba(237,180,78,.28), transparent 70%),
    var(--plum-990);
  color:var(--blush);
  padding:4.5rem 0 2.5rem;
  border-top:1px solid var(--line-dark);
  position:relative;
}
.site-foot::before{
  content:"";position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--gold),transparent);
}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:2.5rem}
.foot-brand .brand-name{font-size:1.5rem}
.foot-brand p{font-size:1.08rem;font-style:italic;color:var(--gold-soft);margin-top:.9rem;max-width:30ch}
.foot-col h4{font-family:var(--display);font-size:.95rem;letter-spacing:.28em;text-transform:uppercase;color:var(--gold);margin-bottom:1.1rem}
.foot-col ul{list-style:none;margin:0;padding:0;display:grid;gap:.55rem}
.foot-col a{color:var(--blush);text-decoration:none;font-size:1.05rem;display:inline-block;padding:.1rem 0}
.foot-col a:hover{color:var(--coral)}
.foot-note{
  margin-top:3.5rem;padding-top:1.6rem;border-top:1px solid var(--line-dark);
  display:flex;flex-wrap:wrap;gap:.8rem 2rem;justify-content:space-between;
  font-size:1rem;color:var(--gold-soft);
}
.foot-note a{color:var(--gold-soft)}
@media (max-width:900px){
  .foot-grid{grid-template-columns:1fr 1fr}
  .foot-brand{grid-column:1/-1}
}
@media (max-width:640px){
  /* compact footer: brand full-width, columns stay 2-across, tighter everything */
  .site-foot{padding:2.8rem 0 1.6rem}
  .foot-grid{grid-template-columns:1fr 1fr;gap:1.6rem 1.2rem}
  .foot-brand .brand-name{font-size:1.25rem}
  .foot-brand p{font-size:.95rem;margin-top:.6rem}
  .foot-col h4{font-size:.8rem;letter-spacing:.22em;margin-bottom:.7rem}
  .foot-col ul{gap:.35rem}
  .foot-col a{font-size:.92rem;padding:.05rem 0}
  .foot-note{margin-top:2rem;padding-top:1.1rem;font-size:.85rem;gap:.4rem 1.4rem}
}

/* ================== PER-PAGE EDITORIAL ACCENTS =================== */

/* The Story — a memoir: hanging quote marks, gilt-framed photographs */
.page-story .pullquote{border-left:none;padding:0 0 0 3.4rem;position:relative}
.page-story .pullquote::before{
  content:"\201C";position:absolute;left:0;top:-.12em;
  font-family:var(--display);font-size:4.4rem;line-height:1;color:var(--coral);
}
.page-story .figure--frame img{outline-color:rgba(237,180,78,.55)}

/* Gallery crawl — numbered visits */
.page-galleries .prose{counter-reset:visit}
.page-galleries .gallery-entry{counter-increment:visit}
.page-galleries .gallery-entry > h2::before{
  content:"Visit " counter(visit, upper-roman);
  display:block;font-size:.95rem;letter-spacing:.32em;text-transform:uppercase;
  color:var(--coral-deep);margin-bottom:.7rem;
}

/* Amazing cultures — centered chapter heads */
.page-cultures .kicker-line{justify-content:center;text-align:center;letter-spacing:.4em;font-size:1.05rem}
.page-cultures .kicker-line::before{content:"";flex:1;height:1px;background:var(--line)}
.page-cultures .pullquote{border-left:none;border-block:1px solid var(--line);padding:2rem .5rem;text-align:center;font-style:italic}

/* Degas → Picasso — gilt museum wall labels */
.page-modernism .plaque{
  border:1px solid rgba(237,180,78,.7);
  box-shadow:0 0 0 5px #fff,0 0 0 6px var(--line),0 30px 56px -38px rgba(56,16,47,.5);
  margin-top:3.2rem;
}
.page-modernism .plaque img{border:6px solid var(--page-tint);outline:1px solid var(--line)}
.page-modernism .plaque-dates{color:var(--plum-700)}

/* Milwaukee artists — alternating plaques */
@media (min-width:721px){
  .page-artists .plaque:nth-of-type(even){grid-template-columns:1fr 250px}
  .page-artists .plaque:nth-of-type(even) img{order:2}
}
.page-artists .plaque img{filter:saturate(.92)}
.page-artists .plaque h2{color:var(--plum-800)}

/* Lakefront — festival badges */
.page-lakefront .program-letter{
  width:72px;height:72px;border-radius:50%;padding:0;border:none;
  background:var(--gold);color:var(--plum-990);font-size:2.1rem;
  display:grid;place-items:center;box-shadow:0 10px 22px -12px rgba(56,16,47,.5);
}

/* Film festival — marquee tiles */
.page-film .program-letter{
  width:76px;height:76px;border-radius:8px;padding:0;
  border:1px solid var(--gold);border-top:none;
  background:linear-gradient(180deg,var(--plum-900),var(--plum-990));color:var(--gold);
  font-size:2.1rem;display:grid;place-items:center;
  box-shadow:0 0 0 4px var(--page),0 0 0 5px var(--line),0 8px 26px -8px rgba(237,180,78,.45);
}

/* Salsa — the floor lights up */
.page-salsa .stat{background:linear-gradient(160deg,var(--coral-deep),var(--coral));border-bottom-color:var(--gold)}
.page-salsa .stat b{color:var(--plum-990)}
.page-salsa .stat span{color:var(--plum-950)}

/* Oktoberfest — parish bunting */
.page-oktoberfest .sched-day h3{
  background:
    radial-gradient(8px 8px at 12% 100%, rgba(237,180,78,.5) 40%, transparent 45%),
    radial-gradient(8px 8px at 50% 100%, rgba(237,180,78,.5) 40%, transparent 45%),
    radial-gradient(8px 8px at 88% 100%, rgba(237,180,78,.5) 40%, transparent 45%),
    linear-gradient(160deg,var(--plum-950),var(--plum-800));
}

/* utility */
.center{text-align:center}
.mt-2{margin-top:2rem}

/* ==================== SMALL-SCREEN HARDENING ===================== */
@media (max-width:640px){
  body{font-size:1.25rem}                 /* 20px reading on phones */
  .prose p{font-size:1.25rem}
  .prose .lead{font-size:1.38rem}
  .plaque p{font-size:1.18rem}
  .story-copy p{font-size:1.18rem}
  .sec-intro,.art-stand{font-size:1.15rem}
  .hero-kicker{letter-spacing:.34em;font-size:.9rem}
  .sec-head{gap:.5rem;flex-direction:column;align-items:flex-start}
  .memorial p{font-size:1.05rem}
  .btn{width:min(100%,320px)}
  .hero-actions{flex-direction:column;align-items:center}
  .figure{margin:2.4rem 0}
  .pullquote{margin:2.6rem 0}
  .infocard{padding:1.4rem 1.3rem}
  .fact{font-size:.95rem}
}

/* sp-roll-normalize: a logo roll keeps object-fit and loses its geometry.
   It used to set width:auto, height:46px, max-width:172px and min-width:30px, which let
   every plate in the roll shrink-wrap its own artwork — evbb measured 62px next to 204px
   in the SAME ROW. The operator's rule is that the dark ground is unified whatever the
   logo's size, so the plate cannot be sized by the logo. Geometry belongs to Design. */
[class~="roll"] .sponsor img,[class*="roll-"] .sponsor img,[class*="-roll"] .sponsor img{object-fit:contain}

/* sp-contain-guard: sponsor logos are wordmarks — never object-fit:cover (crops).
   object-fit ONLY. This block used to also set width:auto, padding:4px 10px,
   max-width:calc(100% - 20px) and min/max-height, which overrode Design's own frame and
   let every plate shrink-wrap its logo — the recurring "inconsistent sizing" and
   "lacks padding". Geometry belongs to Design. */
.sponsor img,.sponsor-box img,.sp-logo img{object-fit:contain!important;display:block;margin-left:auto;margin-right:auto;align-self:center}

/* sp-mark-align: marks sit CENTRED in their box. Placement only — Design's size,
   padding, panel and object-fit are untouched. */
.sponsor img,.sponsor-box img,.sp-logo img{object-position:center!important;margin-left:auto!important;margin-right:auto!important;display:block}
.sponsor .sp-logo,.sponsor-box{display:flex;align-items:center;justify-content:center}

/* sp-tile-uniform: a slot never grows to fill its row — every tile the same width in
   every row, whatever the count. Only flex-grow is touched. */
.sponsor{flex-grow:0!important}
.sponsor.lead-line,.sponsor.feat.lead-line{flex-grow:1!important}
.sponsor:not(.lead-line){flex-basis:var(--sp-tile,232px)!important}
.partner-card > .sponsor{flex:0 0 auto!important}
.partner-logo{flex-wrap:wrap!important}
.partner-logo > .sponsor{flex:1 1 var(--sp-min,220px)!important;min-width:min(220px,100%)!important}
.sponsor:not(.lead-line){grid-column:span 1!important;grid-row:span 1!important}

/* sp-blurb-stack: a slot holding BOTH a mark and our copy stacks them —
   a fixed-height row clips the mark once the copy is un-hidden. */
.sponsor:has(> img):has(> .sponsor-blurb:not(:empty)){flex-direction:column!important;align-items:flex-start!important;justify-content:flex-start!important;height:auto!important;min-height:0!important;overflow:visible!important;gap:8px}
.sponsor:has(> img):has(> .sponsor-blurb:not(:empty)) > img{align-self:flex-start}

/* sp-blurb-unhide: every supporter slot shows its text — no half-texted grids */
.sponsor-blurb:not(:empty){display:block!important;line-height:1.5}

/* sp-blurb-size: the design never sized .sponsor-blurb, so it inherited body copy.
   Relative, so it still follows the design's scale. */
.sponsor .sponsor-blurb{font-size:.8em;line-height:1.45}
.sponsor .sp-brand{font-weight:700}

/* sp-tile-fit: a slot fills its track, keeps a symmetric inset, and cannot be inflated
   by one long line of our copy. */
.sponsor.sponsor{width:100%!important;box-sizing:border-box!important;align-self:stretch!important;align-items:center!important;height:auto!important;min-height:0!important;overflow:hidden}
.sponsor.sponsor{justify-content:center!important}
:has(> .sponsor.sponsor){align-items:stretch!important}
.sponsor.sponsor .sponsor-name{min-width:0!important;overflow-wrap:anywhere}
.sponsor.sponsor > img{flex:0 0 auto!important;align-self:center!important}
.sponsor.sponsor > .sponsor-txt,.sponsor.sponsor > span:not(.sponsor-name):not(.sponsor-box):not(.sp-logo):not(.sponsor__logo){flex:1 1 auto!important;min-width:0!important}
.sponsor.sponsor .sponsor-blurb{display:-webkit-box!important;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;margin:0!important}
/* the mobile un-clamp is retired: the operator asked for "2-3 rows max" on phones, which is
   what the desktop rule above already does — so mobile simply keeps it. */
@media (max-width:640px){.sponsor.sponsor .sponsor-blurb{-webkit-line-clamp:3!important;display:-webkit-box!important;-webkit-box-orient:vertical!important;overflow:hidden!important}}

/* sp-blurb-link: money-link anchors in blurbs must inherit the blurb colour (readable on dark OR light tiles) */
.sponsor-blurb a{color:inherit;text-decoration:underline;text-underline-offset:2px}
/* sp-text-contrast: sponsor copy measured against its OWN ground as a WCAG contrast RATIO, not as a
   luminance subtraction. The subtraction passed capitanalatriste's blurbs at a 75-point gap
   while they sat at 2.8:1 and could not be read. Bar is 4.5:1 for body copy, 3:1 for large or
   bold; opacity is folded in, because it compounds down the tree and computed colour ignores
   it. The lift keeps Design's hue and saturation and moves lightness only, by the smallest
   step that clears the bar, so a warm blurb on near-black stays warm. Colour only — size,
   weight, family and spacing are exactly as delivered. */
.partner-cta.partner-cta{color:rgb(153,104,16)!important;opacity:1!important}
.partner-desc.partner-desc{color:rgb(209,58,0)!important;opacity:1!important}
.sp-brand.sp-brand{color:rgb(209,58,0)!important;opacity:1!important}

/* sp-mark-frame: a uniform plate for the money mark, in the tiers where Design sized the plate
   to the artwork instead. Operator's rule: the dark ground is unified whatever the logo's
   size. width:100% (or one fixed width where copy shares the row) + one height for the tier
   + object-fit:contain, so the plate is the same box everywhere and the artwork fits inside
   it. A ground and an inset are added ONLY where none exists — adding a second ground gives
   co-cure's rectangle-inside-a-rectangle. Design's framed tiers are not touched at all. */
.partner-grid.partner-grid--four.mt-2 .partner-card .partner-logo.partner-logo{background:#121013!important;padding:8px 12px!important;box-sizing:border-box!important;height:42px!important;width:100%!important;display:flex!important;align-items:center!important;justify-content:center!important}
.partner-grid.partner-grid--four.mt-2 .partner-card .partner-logo.partner-logo img{width:100%!important;height:100%!important;object-fit:contain!important;object-position:center center!important;margin:0!important;padding:0!important;background:transparent!important;display:block!important;max-width:none!important;max-height:none!important}
.partner-grid.partner-grid--four.mt-2 .partner-card .partner-logo.partner-logo{display:block!important;width:100%!important}
.partner-grid.partner-grid--three .partner-card .partner-logo.partner-logo{background:#121013!important;padding:8px 12px!important;box-sizing:border-box!important;height:42px!important;width:100%!important;display:flex!important;align-items:center!important;justify-content:center!important}
.partner-grid.partner-grid--three .partner-card .partner-logo.partner-logo img{width:100%!important;height:100%!important;object-fit:contain!important;object-position:center center!important;margin:0!important;padding:0!important;background:transparent!important;display:block!important;max-width:none!important;max-height:none!important}
.partner-grid.partner-grid--three .partner-card .partner-logo.partner-logo{display:block!important;width:100%!important}

/* op-money-columns: the supporters block ran one tile per row — 8 tiles,
   2330px at 390, 20% of the whole page. Two columns bring it to
   1331px (43% shorter). Checked before writing: no new overflow, smallest mark still
   86px wide, longest blurb 4 lines, tile heights 301-326px.
   A block that fails any of those is left in one column — two narrow columns can make a block
   TALLER once the copy rewraps, which is the case the operator warned about.
   The blurb is held to three rows at phone width, because a nine- or eleven-line blurb in a narrow column made two columns TALLER than one. The copy stays in the markup. Only the tier(s) that were one-per-row are touched (.partner-grid.partner-grid--four.mt-2, .partner-grid.partner-grid--three), never the section
   that holds several tiers: forcing a grid on that would put a featured row and a regulars run
   side by side. Phone widths only. */
@media (max-width:640px){
  .partner-grid.partner-grid--four.mt-2{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:26px!important}
    .partner-grid.partner-grid--four.mt-2 > *{min-width:0!important;max-width:100%;width:auto!important;flex:0 1 auto!important}
    .partner-grid.partner-grid--four.mt-2 > * *{min-width:0!important;max-width:100%}
    .partner-grid.partner-grid--four.mt-2 img,.partner-grid.partner-grid--four.mt-2 svg{max-width:100%;height:auto}
  .partner-grid.partner-grid--three{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;column-gap:26px!important}
    .partner-grid.partner-grid--three > *{min-width:0!important;max-width:100%;width:auto!important;flex:0 1 auto!important}
    .partner-grid.partner-grid--three > * *{min-width:0!important;max-width:100%}
    .partner-grid.partner-grid--three img,.partner-grid.partner-grid--three svg{max-width:100%;height:auto}
  .partner-grid.partner-grid--four.mt-2 .partner-desc{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;overflow:hidden!important}
  .partner-grid.partner-grid--three .partner-desc{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;overflow:hidden!important}
}

/* op-blurb-rows: money blurbs ran to 4 rows at 390, 678px of tier across
   4 tiles. Operator: blurbs should show "2-3 rows max" on mobile —
   a blurb that long eats the screen and, in a two-column grid, rewraps into more height than
   the columns save. Held to three rows at phone width; the copy stays in the markup and
   desktop is untouched. Only the tier(s) measured past three rows are clamped. */
@media (max-width:640px){
  .partner-grid.partner-grid--four.mt-2 .partner-desc{display:-webkit-box!important;-webkit-line-clamp:3!important;-webkit-box-orient:vertical;max-height:90px!important;min-height:0!important;overflow:hidden!important}
}

/* op-page-overflow: the page scrolled sideways at 320 — span.sec-num reached
   349px in a 320px screen (+28px), inside
   div.sec-head. Remedy: let the words break. Structural only, no spacing value of mine;
   tried in order and this is the first that held, with the page's visible copy unchanged.
   Phone widths only — desktop is re-measured after writing and must not move. */
@media (max-width:360px){
  span.sec-num,span.sec-num *{white-space:normal!important;overflow-wrap:anywhere!important}
}
/* op-heading-levels */
h2:where(.rt-h4){font-family: var(--display); font-weight: 400; line-height: 1.14; margin: 0px; text-wrap: balance;}
h3:where(.rt-h4){font-family: var(--display); font-weight: 400; line-height: 1.14; margin: 0px; text-wrap: balance;}
h2:where(.rt-h3){font-family: var(--display); font-weight: 400; line-height: 1.14; margin: 0px; text-wrap: balance;}
.prose h2:where(.rt-h3){font-size: 1.6rem; padding-top: 1.2rem; color: var(--plum-800);}
.infocard h2:where(.rt-h4){font-size: 1.02rem; letter-spacing: 0.26em; text-transform: uppercase; color: var(--coral-deep); margin-bottom: 1rem;}
.infocard h3:where(.rt-h4){font-size: 1.02rem; letter-spacing: 0.26em; text-transform: uppercase; color: var(--coral-deep); margin-bottom: 1rem;}
.sched-day h2:where(.rt-h3){background: linear-gradient(160deg,var(--plum-950),var(--plum-800)); color: var(--gold); text-align: center; letter-spacing: 0.3em; text-transform: uppercase; font-size: 1.05rem; padding: 1rem; border-bottom: 3px solid var(--gold);}
.lineup-card h2:where(.rt-h3){font-size: 1.5rem; padding-top: 0px !important;}
.foot-col h2:where(.rt-h4){font-family: var(--display); font-size: 0.95rem; letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold); margin-bottom: 1.1rem;}
.foot-col h3:where(.rt-h4){font-family: var(--display); font-size: 0.95rem; letter-spacing: 0.28em; text-transform: uppercase; color: var(--gold); margin-bottom: 1.1rem;}
@media (max-width: 640px){.foot-col h2:where(.rt-h4){font-size: 0.8rem; letter-spacing: 0.22em; margin-bottom: 0.7rem;}}
@media (max-width: 640px){.foot-col h3:where(.rt-h4){font-size: 0.8rem; letter-spacing: 0.22em; margin-bottom: 0.7rem;}}
.page-oktoberfest .sched-day h2:where(.rt-h3){background: radial-gradient(8px 8px at 12% 100%, rgba(237,180,78,.5) 40%, transparent 45%),
radial-gradient(8px 8px at 50% 100%, rgba(237,180,78,.5) 40%, transparent 45%),
radial-gradient(8px 8px at 88% 100%, rgba(237,180,78,.5) 40%, transparent 45%),
linear-gradient(160deg,var(--plum-950),var(--plum-800));}
h2.rt-h4.rt-h4{padding-top:0px}
h3.rt-h4.rt-h4{height:18.5938px;padding-top:0px}
/* op-heading-levels:end */

/* op-img-dims — intrinsic width/height reserve image space; the proven height:auto guard (zero specificity) */
:where(article.prose.wrap--narrow > div.plaque > img,
  article.prose.wrap--narrow > figure.figure > img,
  article.prose.wrap--narrow > figure.figure.figure--frame > img,
  article.prose.wrap--narrow > figure.figure.figure--right > img,
  div > figure.figure > img,
  div.article-hero > div.art-img > img,
  div.lineup > article.lineup-card > img,
  div.story-feature.wrap > figure > img,
  div.trio > article.trio-card > img,
  div.wing-items > a.wing-item > img,
  section.gallery-entry > figure.figure.figure--frame > img,
  section.stop > figure.figure > img){height:auto}
/* op-img-dims:end */
