/* =========================================================
   Patrick McNulty for Mayor, South Padre Island
   Static build. No frameworks.
   ========================================================= */

:root{
  --ink:#08131F;
  --navy:#0C2340;
  --flag:#002868;
  --red:#BF0A30;
  --red-dark:#9C0725;
  --sand:#E7DAC4;
  --sand-deep:#D6C4A6;
  --paper:#FAF6EF;
  --paper-2:#F2EBE0;
  --foam:#FFFDF9;
  --gold:#E3A05C;
  --dusk:#C9A2B4;
  --line:rgba(12,35,64,.14);
  --shadow:0 22px 60px -30px rgba(8,19,31,.55);

  --display:'Bespoke Slab','Georgia',serif;
  --text:'Supreme','Helvetica Neue',Arial,sans-serif;

  --gut:clamp(1.25rem,5vw,4.5rem);
  --maxw:1240px;
  --spine:clamp(30px,4.4vw,84px);
  --stripe:clamp(9px,1.1vw,15px);
  /* MUTCD guide-sign green, the colour of an actual street blade. */
  --sign:#00674B;
}

*,*::before,*::after{box-sizing:border-box}

html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth }
@media (prefers-reduced-motion:reduce){ html{scroll-behavior:auto} }

/* One indicator, not two. The lone star on the flag spine reports
   scroll position, so the native bar is hidden. Scrolling itself is
   untouched: wheel, trackpad, keyboard, touch and find-in-page all work. */
html{ scrollbar-width:none; -ms-overflow-style:none }
html::-webkit-scrollbar{ width:0; height:0; display:none }

body{
  margin:0;
  padding-left:var(--spine);
  background:var(--paper);
  color:var(--ink);
  font-family:var(--text);
  font-size:clamp(1rem,.96rem + .2vw,1.075rem);
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

/* height:auto matters. The width/height HTML attributes land as
   presentational hints, and an explicit height silently beats
   aspect-ratio, which is what stretched the portrait to 1200px. */
img{max-width:100%;display:block;height:auto}
a{color:inherit}
h1,h2,h3,h4{font-family:var(--display);font-weight:800;line-height:1.04;margin:0;letter-spacing:-.015em}
p{margin:0 0 1em}
ul,ol{margin:0;padding:0;list-style:none}

:focus-visible{outline:3px solid var(--red);outline-offset:3px;border-radius:2px}

.sr,.skip{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip:focus{position:fixed;top:12px;left:12px;width:auto;height:auto;clip:auto;margin:0;padding:12px 18px;background:var(--red);color:#fff;font-weight:700;z-index:200}

.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gut)}

/* =========================================================
   THE FLAG AS STRUCTURE
   Blue field down the left edge, lone star travelling it with
   the scroll, and the flag's white-over-red stripes marking
   every seam between sections.
   ========================================================= */
.spine{
  position:fixed;top:0;left:0;bottom:0;width:var(--spine);z-index:95;
  background:linear-gradient(180deg,#003078 0%,#002868 42%,#001B49 100%);
  box-shadow:1px 0 0 rgba(0,0,0,.25), 4px 0 24px -8px rgba(0,20,60,.5);
  pointer-events:none;
}
.spine__track{
  position:absolute;left:50%;top:0;bottom:0;width:1px;
  background:linear-gradient(180deg,transparent,rgba(255,255,255,.20) 12%,rgba(255,255,255,.20) 88%,transparent);
  transform:translateX(-50%);
}
/* The star starts life as the logo mark in the corner and flies into
   the blue field as you scroll, where it becomes the position marker. */
.spine__star{
  position:absolute;left:50%;top:0;
  width:min(58%,44px);height:auto;fill:var(--foam);
  transform:translate(-50%,0);
  filter:drop-shadow(0 6px 14px rgba(0,0,0,.45));
  will-change:transform;
}
.spine__star{pointer-events:auto;cursor:grab;touch-action:none}
.spine__star:active,.spine__star.is-dragging{cursor:grabbing}
.spine__star:focus-visible{outline:3px solid var(--gold);outline-offset:4px}
.js-star .spine__star{position:fixed;left:0;top:0;transform:translate(-100px,-100px)}
.js-star .brand__star{opacity:0}
.stripes{
  height:var(--stripe);
  background:linear-gradient(to bottom,var(--foam) 0 50%,var(--red) 50% 100%);
  position:relative;z-index:3;
}

/* ---------- shared bits ---------- */
.eyebrow{
  font-size:.78rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;
  color:var(--red);margin:0 0 .9rem;display:flex;align-items:center;gap:.55em
}
.eyebrow span{color:var(--red);font-size:.9em}
.eyebrow--onblue{color:var(--sand)}
.eyebrow--onblue span{color:var(--gold)}

.sechead{max-width:44ch;margin-bottom:clamp(2.5rem,5vw,4rem)}
.sechead h2{font-size:clamp(2.1rem,5.4vw,3.9rem);margin-bottom:.6rem}
.sechead .lede,.lede{font-size:clamp(1.05rem,1rem + .35vw,1.25rem);color:#44536b;max-width:52ch}
.sechead--light h2{color:var(--foam)}
.sechead--light .lede{color:#A9BCD6}

.minihead{font-family:var(--text);font-weight:700;font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--flag);margin:0 0 .9rem}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  font-family:var(--text);font-weight:700;font-size:1rem;letter-spacing:.01em;
  padding:1.05em 1.9em;border-radius:2px;border:2px solid transparent;
  text-decoration:none;cursor:pointer;transition:transform .18s ease,background .18s ease,color .18s ease,border-color .18s ease;
}
.btn--red{background:var(--red);color:#fff}
.btn--red:hover{background:var(--red-dark);transform:translateY(-2px)}
.btn--ghost{border-color:rgba(255,255,255,.55);color:#fff}
.btn--ghost:hover{background:rgba(255,255,255,.12);border-color:#fff;transform:translateY(-2px)}
.btn--sm{padding:.74em 1.4em;font-size:.9rem}
.btn--lg{padding:1.15em 2.4em;font-size:1.08rem}

/* ---------- top bar ---------- */
.topbar{
  position:fixed;top:0;right:0;left:var(--spine);z-index:90;
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  padding:1.6rem var(--gut);
  background:transparent;
  transition:background .3s ease,box-shadow .3s ease,padding .3s ease;
}
.topbar.is-stuck{
  background:rgba(250,246,239,.94);backdrop-filter:blur(10px);
  box-shadow:0 1px 0 var(--line);
  padding-block:.9rem;   /* condenses once it has a background to sit on */
}
.brand{display:flex;align-items:center;gap:.65rem;text-decoration:none;color:#fff}
.topbar.is-stuck .brand{color:var(--flag)}
.brand__star{width:26px;height:26px;fill:var(--red);flex:none}
.topbar.is-stuck .brand__star{fill:var(--red)}
.brand__text{display:flex;flex-direction:column;line-height:1.05}
.brand__text b{font-family:var(--display);font-size:1.12rem;letter-spacing:-.01em}
.brand__text i{font-style:normal;font-size:.66rem;letter-spacing:.19em;text-transform:uppercase;opacity:.8}

.topnav{display:flex;align-items:center;gap:1.9rem}
/* :not(.btn) matters. Without it the link rules below win on
   specificity and strip the button's weight and lower padding. */
.topnav a:not(.btn){
  text-decoration:none;font-weight:500;font-size:.94rem;color:#fff;opacity:.9;
  padding-bottom:2px;border-bottom:2px solid transparent;transition:border-color .2s,opacity .2s
}
.topnav a:not(.btn):hover{opacity:1;border-color:currentColor}
.topbar.is-stuck .topnav a:not(.btn){color:var(--flag)}
.topnav .btn{margin-left:.7rem;color:#fff}

.menu-toggle{display:none;width:44px;height:38px;background:none;border:0;padding:8px;cursor:pointer;flex-direction:column;justify-content:space-between}
.menu-toggle span{display:block;height:2px;background:#fff;border-radius:2px;transition:transform .25s,opacity .25s}
.topbar.is-stuck .menu-toggle span{background:var(--flag)}
.menu-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(9px) rotate(45deg)}
.menu-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.menu-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-9px) rotate(-45deg)}

.mobilenav[hidden]{display:none}
.mobilenav{
  position:fixed;top:0;left:var(--spine);right:0;z-index:85;
  background:var(--flag);padding:5.5rem var(--gut) 2rem;
  display:flex;flex-direction:column;gap:.25rem;
}
.mobilenav a{
  color:var(--foam);text-decoration:none;font-family:var(--display);font-size:1.5rem;font-weight:700;
  padding:.6rem 0;border-bottom:1px solid rgba(255,255,255,.14)
}

/* =========================================================
   HERO
   ========================================================= */
.hero{
  position:relative;min-height:100svh;
  display:flex;flex-direction:column;
  padding:6.5rem var(--gut) 0;
  overflow:hidden;background:var(--ink);isolation:isolate;
}
/* The block of type and the dates travel together, centred in the
   free height, so there is no hole between them. */
.hero__inner{margin-top:auto}
.hero__rail{margin-top:clamp(2.2rem,5vh,4rem);margin-bottom:auto}
.hero__media{position:absolute;inset:0;z-index:-2;overflow:hidden;background:#0B1B2E}
.hero__video{
  width:100%;height:100%;object-fit:cover;object-position:50% 52%;
  display:block;
}
.hero__grade{
  position:absolute;inset:0;
  background:
    radial-gradient(120% 78% at 74% 14%, rgba(227,160,92,.26), transparent 62%),
    radial-gradient(100% 70% at 8% 92%, rgba(191,10,48,.16), transparent 64%),
    linear-gradient(to right, rgba(8,19,31,.66) 0%, rgba(8,19,31,.18) 46%, rgba(8,19,31,.05) 72%),
    linear-gradient(to bottom, rgba(8,19,31,.58) 0%, rgba(8,19,31,.12) 28%, rgba(8,19,31,.34) 56%, rgba(8,19,31,.90) 94%);
}
.hero__grain{
  position:absolute;inset:0;opacity:.5;mix-blend-mode:overlay;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.36'/%3E%3C/svg%3E");
}

/* Patrick, feathered into the footage rather than cut out of it. */
/* A gradient hand-off rather than a see-through Patrick: the footage
   dissolves into him across the left edge, and from about halfway
   across he is fully opaque. */
/* A gradient hand-off rather than a see-through Patrick: the footage
   dissolves into him across the left edge, and from about halfway
   across he is fully opaque.
   On a wide screen he sits in front of the type so the name can pass
   behind him; on narrow he covers the frame, so the stacking flips back. */
.hero__figure{
  position:absolute;right:0;top:0;bottom:0;z-index:0;margin:0;
  /* 660px is the ceiling: the source is 524px wide, and past about
     1.25x the softness starts to show through the grade. */
  width:clamp(300px,44%,660px);pointer-events:none;
  -webkit-mask-image:linear-gradient(to right,transparent 0%,rgba(0,0,0,.25) 15%,rgba(0,0,0,.70) 32%,#000 52%,#000 100%);
          mask-image:linear-gradient(to right,transparent 0%,rgba(0,0,0,.25) 15%,rgba(0,0,0,.70) 32%,#000 52%,#000 100%);
}
.hero__figure img{width:100%;height:100%;object-fit:cover;object-position:56% 40%}
.hero__figure::after{
  content:"";position:absolute;inset:0;
  background:
    linear-gradient(to bottom,rgba(8,19,31,.38) 0%,rgba(8,19,31,.08) 14%,transparent 28%),
    linear-gradient(to top,#08131F 0%,rgba(8,19,31,.52) 9%,transparent 30%);
}

/* Flush to the flag, not floating in a centred column. */
.hero__inner{position:relative;z-index:2;width:100%;padding-bottom:clamp(1.5rem,4vw,3rem)}
@media (min-width:861px){
  .hero__figure{z-index:2}
  .hero__inner{z-index:1}
  .hero__inner > *{max-width:min(62%,860px)}
  /* The name runs as wide as it can while still clearing his face: it
     stops where his silhouette turns fully opaque, so the last letter
     lands on the translucent blend and stays readable. */
  .hero__name{max-width:min(78%,1075px)}
}

.hero__kicker{
  display:flex;align-items:center;gap:.6em;
  font-size:clamp(.82rem,.74rem + .4vw,1.15rem);font-weight:700;letter-spacing:.26em;text-transform:uppercase;
  color:#F6E4D6;margin:0 0 clamp(.8rem,2.2vw,1.4rem);
}
.hero__kickstar{color:var(--gold)}

.hero__name{margin:0;display:flex;flex-direction:column;gap:.1em}
.hero__given{
  font-family:var(--text);font-weight:700;
  font-size:clamp(1.35rem,1rem + 2.3vw,3rem);
  letter-spacing:.42em;text-transform:uppercase;color:#fff;
  padding-left:.2em;flex:0 0 auto;
}

/* The flag runs out of the name as a banner: lone star on its blue
   field, stripes elongated to the right, fading into the footage
   before it reaches Patrick. */
/* JS sets the row width to the measured width of the name below it,
   so the banner ends flush with the Y of McNULTY. */
.hero__givenrow{display:flex;align-items:center;gap:clamp(.9rem,2vw,1.6rem);max-width:100%}
.flagbar{
  display:flex;align-items:stretch;flex:1 1 auto;min-width:70px;
  height:clamp(20px,2.3vw,34px);
  filter:drop-shadow(0 8px 20px rgba(0,0,0,.45));
}
.flagbar__field{
  flex:0 0 auto;aspect-ratio:1;background:var(--flag);
  display:grid;place-items:center;
}
.flagbar__field svg{width:66%;height:66%;fill:var(--foam)}
.flagbar__bands{
  flex:1 1 auto;
  background:linear-gradient(to bottom,var(--foam) 0 50%,var(--red) 50% 100%);
}
.wordmark-wrap{position:relative;display:block}
.wordmark{
  display:block;font-family:var(--display);font-weight:800;
  font-size:clamp(3.6rem,16.6vw,15rem);
  line-height:.92;letter-spacing:-.035em;color:#fff;
  text-shadow:0 18px 60px rgba(8,19,31,.5);
}
.wordmark-canvas{position:absolute;left:0;top:0;pointer-events:none;display:none}
.hero.canvas-on .wordmark{opacity:0}
.hero.canvas-on .wordmark-canvas{display:block}

.hero__tag{
  margin-top:clamp(.7rem,1.4vw,1.2rem);
  font-family:var(--display);font-weight:700;
  font-size:clamp(1.75rem,1.3rem + 2.2vw,3.3rem);
  color:#fff;margin:0 0 .5rem;max-width:22ch;letter-spacing:-.015em;line-height:1.1;
}
.hero__cta{display:flex;flex-wrap:wrap;align-items:center;gap:1.8rem;margin-top:clamp(1.8rem,3.4vw,2.8rem)}
.hero__cta .btn{font-size:clamp(1rem,.94rem + .3vw,1.2rem);padding:1.15em 2.2em}
.hero__link{
  font-weight:700;font-size:clamp(1rem,.94rem + .3vw,1.2rem);color:#fff;text-decoration:none;
  padding-bottom:3px;border-bottom:2px solid rgba(255,255,255,.4);
  transition:border-color .2s ease,color .2s ease;
}
.hero__link:hover{border-color:#fff;color:var(--sand)}

.hero__rail{
  position:relative;z-index:2;width:100%;
  /* Stops short of where Patrick's blend begins, so the rule does not
     run out across him. */
  max-width:min(54%,760px);
  display:flex;align-items:center;gap:clamp(1rem,3vw,2.6rem);flex-wrap:wrap;
  border-top:1px solid rgba(255,255,255,.22);
  padding:1.05rem 0 1.25rem;
}
.rail__item{display:flex;flex-direction:column;line-height:1.2}
.rail__item span{font-size:.76rem;letter-spacing:.22em;text-transform:uppercase;color:#B9C6D8}
.rail__item b{font-family:var(--display);font-size:clamp(1.2rem,1rem + .7vw,1.8rem);color:#fff}
.rail__item a{text-decoration:none}
.rail__item a:hover{color:var(--gold)}
.rail__div{width:1px;height:30px;background:rgba(255,255,255,.24)}


/* =========================================================
   STATEMENT
   ========================================================= */
/* The one sentence he has run on for seven years, given the weight of it:
   his own beach behind, a heavy slab setting, and the promise itself
   lifted out of the sentence. */
.statement{
  position:relative;isolation:isolate;overflow:hidden;
  background:var(--ink);
  padding:clamp(4.5rem,10vw,9rem) var(--gut);
  text-align:center;
}
.statement__bg{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 76%;z-index:-2;
}
.statement::after{
  content:"";position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(90% 120% at 50% 45%, rgba(0,24,60,.82) 0%, rgba(6,20,42,.93) 60%, rgba(6,18,38,.97) 100%),
    linear-gradient(to bottom, rgba(8,19,31,.86) 0%, transparent 24%, transparent 76%, rgba(8,19,31,.86) 100%);
}
.statement__inner{max-width:min(92vw,1000px);margin:0 auto;position:relative}
.statement__mark{
  display:block;font-family:var(--display);font-weight:800;
  font-size:clamp(4rem,9vw,8rem);line-height:.6;color:var(--red);
  margin-bottom:.1em;
}
.statement blockquote{margin:0}
.statement p{
  font-family:var(--display);font-weight:700;font-style:normal;
  font-size:clamp(1.6rem,1.05rem + 2.9vw,3.5rem);
  line-height:1.16;color:rgba(255,255,255,.76);letter-spacing:-.025em;
  margin:0 0 clamp(1.8rem,3.5vw,2.8rem);
  text-wrap:balance;
}
.statement p em{
  font-style:normal;color:#fff;font-weight:800;
  text-shadow:0 12px 40px rgba(0,0,0,.5);
}
.statement cite{
  display:inline-flex;flex-direction:column;gap:.3rem;font-style:normal;
  padding-top:1.4rem;border-top:2px solid var(--red);
}
.statement cite b{
  font-family:var(--display);font-weight:800;font-size:clamp(1rem,.95rem + .4vw,1.25rem);color:var(--foam);letter-spacing:.01em
}
.statement cite span{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:#93A8C4}

/* =========================================================
   RESERVES (dark)
   ========================================================= */
.reserves{
  background:
    radial-gradient(90% 60% at 82% 0%, rgba(227,160,92,.14), transparent 62%),
    linear-gradient(180deg,#0C2340 0%,#08131F 100%);
  color:var(--foam);
  padding:clamp(4.5rem,9vw,8rem) 0 clamp(4rem,8vw,7rem);
}

.bigfig{
  display:flex;align-items:flex-end;gap:clamp(1rem,4vw,3.5rem);flex-wrap:wrap;
  padding-bottom:clamp(2rem,5vw,3.5rem);margin-bottom:clamp(2rem,5vw,3.5rem);
  border-bottom:1px solid rgba(255,255,255,.14);
}
.bigfig__label{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:#8FA5C2;margin:0 0 .3rem}
.bigfig__val{
  font-family:var(--text);font-weight:700;line-height:.9;margin:0;
  font-size:clamp(2.5rem,1.9rem + 5vw,5.6rem);letter-spacing:-.045em;
  color:var(--foam);font-variant-numeric:tabular-nums;font-feature-settings:"ss01";
}
.bigfig__val em{font-style:normal;font-size:.36em;margin-left:.1em;color:var(--gold);letter-spacing:-.01em}
.bigfig__val--ghost{color:#59708E}
.bigfig__arrow{flex:1 1 90px;min-width:80px;color:#7E93B0;padding-bottom:1.5rem}
.bigfig__arrow svg{width:100%;height:20px;display:block}
.bigfig__delta{
  margin:.6rem 0 0;font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)
}

/* ---- fund growth chart ---- */
.chart__legend{display:flex;gap:1.5rem;margin-bottom:1.1rem}
.lg{display:flex;align-items:center;gap:.5rem;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:#8FA5C2}
.lg__sw{width:20px;height:8px;display:inline-block}
.lg__sw--a{background:#3A5273}
.lg__sw--b{background:linear-gradient(90deg,var(--red),var(--gold))}

.chart__scale{display:none}
.chart__scaleInner{
  display:flex;justify-content:space-between;
  font-size:.66rem;letter-spacing:.1em;color:#7E93B0;font-variant-numeric:tabular-nums;
  padding-bottom:.4rem;border-bottom:1px solid rgba(255,255,255,.12);
}
.chart__scaleInner span{flex:0 0 auto;width:0;white-space:nowrap}
.chart__scaleInner span:first-child{text-align:left}
.chart__scaleInner span:last-child{transform:translateX(-100%)}
.chart__scaleInner span:not(:first-child):not(:last-child){transform:translateX(-50%)}

.row{
  display:grid;gap:.7rem;
  padding:1.15rem 0;border-bottom:1px solid rgba(255,255,255,.08);
}
.row__label h3{
  font-family:var(--text);font-weight:700;font-size:1rem;letter-spacing:0;color:var(--foam);margin:0 0 .2rem
}
.row__label p{margin:0;font-size:.82rem;color:#8FA5C2;line-height:1.5}
.plot{
  background-image:repeating-linear-gradient(to right,rgba(255,255,255,.10) 0 1px,transparent 1px 25%);
  border-right:1px solid rgba(255,255,255,.10);
  padding:2px 0;
}
.track{position:relative;height:15px;background:rgba(255,255,255,.05)}
.track--sm{height:8px;margin-top:4px}
.fill{position:absolute;left:0;top:0;bottom:0;width:0;transition:width 1.2s cubic-bezier(.2,.7,.2,1)}
.fill--b{background:linear-gradient(90deg,var(--red) 0%,var(--gold) 100%)}
.fill--a{background:#3A5273}
.row__val{margin:0;font-variant-numeric:tabular-nums;line-height:1.3}
.row__val b{display:block;font-size:1.05rem;font-weight:700;color:var(--foam);letter-spacing:-.01em}
.row__val span{display:block;font-size:.78rem;color:#7E93B0}
.row__pct{
  margin:0;font-variant-numeric:tabular-nums;font-weight:700;font-size:.9rem;
  color:var(--gold);letter-spacing:.01em
}
.chart__note{margin:1.6rem 0 0;font-size:.76rem;color:#6F86A6;max-width:62ch}

@media (min-width:860px){
  .chart__scale{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,2.1fr) .95fr .62fr;gap:1.6rem;margin-bottom:.5rem}
  .chart__scaleInner{grid-column:2}
  .row{
    grid-template-columns:minmax(0,1.25fr) minmax(0,2.1fr) .95fr .62fr;
    gap:1.6rem;align-items:center;
  }
  .row__val{text-align:right}
  .row__pct{text-align:right}
}

/* =========================================================
   RECORD
   ========================================================= */
.record{background:var(--paper);padding:clamp(4.5rem,9vw,8rem) 0}
.chapter{margin-bottom:clamp(3rem,7vw,6rem)}
.chapter__head{max-width:60ch;margin-bottom:2.2rem;border-top:2px solid var(--flag);padding-top:1.4rem}
.chapter__num{
  font-family:var(--display);font-weight:800;font-size:.95rem;letter-spacing:.1em;color:var(--red);margin:0 0 .5rem
}
.chapter__head h3{font-size:clamp(1.6rem,1.2rem + 1.8vw,2.5rem);margin-bottom:.7rem;color:var(--flag)}
.chapter__head p{color:#44536b;margin:0;max-width:56ch}

/* 250px lets four sit across a full-width chapter, so a fourth card no
   longer orphans onto its own row with three empty slots beside it. */
.cards{display:grid;gap:1.1rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr))}
.card{
  background:var(--foam);border:1px solid var(--line);border-radius:3px;
  padding:1.5rem 1.5rem 1.6rem;display:flex;flex-direction:column;
  transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease;
}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:rgba(12,35,64,.3)}
.card--wide{grid-column:1/-1;background:var(--flag);color:var(--foam);border-color:var(--flag)}
.card--wide .card__body{color:#C9D7EA}

/* Statistics sitting on the shoreline they paid for. */
.card--photo{
  position:relative;isolation:isolate;overflow:hidden;border:0;
  padding:clamp(2rem,4.5vw,3.6rem) clamp(1.6rem,3.5vw,3.2rem);
  min-height:clamp(300px,32vw,440px);justify-content:flex-end;
}
.card__bg{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 62%;z-index:-2;
  transform:scale(1.02);transition:transform 1.2s cubic-bezier(.2,.7,.2,1)
}
.card__bg--low{object-position:50% 82%}
.card--photo:hover .card__bg{transform:scale(1.06)}
.card--photo::after{
  content:"";position:absolute;inset:0;z-index:-1;
  background:
    linear-gradient(78deg, rgba(0,24,60,.92) 0%, rgba(0,30,74,.74) 34%, rgba(6,22,48,.36) 66%, rgba(6,22,48,.18) 100%),
    linear-gradient(to top, rgba(6,18,38,.62), transparent 52%);
}
.card__bg--mid{object-position:50% 42%}
.card--photo:hover{transform:none;box-shadow:none}
.card--photo .card__body{color:#D5E1F1;max-width:64ch}
.card__kicker{
  font-size:.66rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--red);margin:0 0 .55rem
}
.card h4{font-family:var(--text);font-weight:700;font-size:1.08rem;color:var(--flag);margin:0 0 .6rem;letter-spacing:-.01em;line-height:1.3}
.card--wide h4{color:var(--foam)}
.card__body{margin:0;font-size:.94rem;color:#44536b;line-height:1.6}
.card__stat{
  font-family:var(--text);font-weight:700;line-height:.95;margin:0 0 .8rem;
  font-size:clamp(1.9rem,1.4rem + 2.8vw,3.3rem);letter-spacing:-.045em;color:#fff;font-variant-numeric:tabular-nums
}
.card__stat em{font-style:normal;font-size:.3em;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);display:inline-block;margin-left:.6em;vertical-align:middle;font-weight:700}

.ticks{display:flex;flex-direction:column;gap:.55rem;margin-top:1.1rem}
.ticks li{position:relative;padding-left:1.5rem;font-size:.92rem;line-height:1.55}
.ticks li::before{
  content:"";position:absolute;left:0;top:.55em;width:9px;height:9px;
  background:var(--red);clip-path:polygon(50% 0,61.8% 33.6%,97.6% 34.4%,69.1% 56.2%,79.4% 90.6%,50% 69.5%,20.6% 90.6%,30.9% 56.2%,2.4% 34.4%,38.2% 33.6%)
}
.card--wide .ticks li{color:#C9D7EA}
.card--wide .ticks li::before{background:var(--gold)}

/* ---- ledger: rows instead of boxes, so not every chapter is a card grid ---- */
.ledger{border-top:2px solid var(--flag);margin-top:1.6rem}
.ledger__row{
  display:grid;gap:.15rem 1.6rem;padding:1.15rem 0;
  border-bottom:1px solid var(--line);align-items:baseline;
}
.ledger__tag{
  font-size:.66rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  color:var(--red);margin:0
}
.ledger__name{font-family:var(--text);font-weight:700;font-size:1.08rem;color:var(--flag);margin:0;letter-spacing:-.01em}
.ledger__note{margin:.25rem 0 0;font-size:.92rem;color:#44536b;line-height:1.6;max-width:60ch}
.ledger__fig{margin:0;font-variant-numeric:tabular-nums;font-weight:700;color:var(--flag);font-size:1.02rem}
.ledger__fig span{display:block;font-weight:400;font-size:.78rem;color:#6c7b91;letter-spacing:.02em}
@media (min-width:820px){
  .ledger__row{grid-template-columns:minmax(0,10rem) minmax(0,1fr) minmax(0,11rem)}
  .ledger__tag{grid-column:1;grid-row:1}
  .ledger__name{grid-column:2;grid-row:1}
  .ledger__note{grid-column:2;grid-row:2}
  .ledger__fig{grid-column:3;grid-row:1/3;text-align:right}
}

/* No money column in this one, so the name gets the room. */
@media (min-width:820px){
  .ledger--plain .ledger__row{grid-template-columns:minmax(0,10rem) minmax(0,1fr)}
}
.runin{margin:1.8rem 0 0;font-size:1rem;color:#44536b}
.runin b{color:var(--flag);font-weight:700}

/* ---- street blades: the rebuilt streets shown as the signs on them ---- */
.signs{
  display:flex;flex-wrap:wrap;align-items:flex-end;
  gap:.9rem 1.3rem;margin-top:1.8rem;list-style:none;
}
.signs li{position:relative;padding-bottom:1.7rem}
.signs span{
  display:inline-flex;align-items:center;gap:.5em;
  background:var(--sign);color:#fff;border-radius:3px;
  font-family:var(--text);font-weight:700;font-size:.86rem;
  letter-spacing:.07em;text-transform:uppercase;white-space:nowrap;
  padding:.66em 1.15em;
  box-shadow:
    inset 0 0 0 2px rgba(255,255,255,.94),
    inset 0 0 0 3px var(--sign),
    0 10px 18px -12px rgba(8,19,31,.85);
}
.signs em{
  font-style:normal;font-size:.76em;font-weight:500;letter-spacing:.04em;
  color:rgba(255,255,255,.72)
}
/* the post */
.signs li::after{
  content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);
  width:5px;height:1.5rem;border-radius:1px;
  background:linear-gradient(180deg,#C3C9D1,#9aa3ad 60%,#828b95);
}
@media (max-width:520px){
  .signs span{white-space:normal;font-size:.8rem}
}

.card--list{grid-column:span 2}
@media (max-width:640px){ .card--list{grid-column:auto} }
.streets{display:flex;flex-direction:column;gap:.4rem;margin-top:.4rem}
.streets li{font-size:.94rem;color:#44536b;padding-left:1.1rem;position:relative}
.streets li::before{content:"";position:absolute;left:0;top:.62em;width:5px;height:5px;background:var(--flag);opacity:.5}
.streets b{font-weight:700;color:var(--red);font-size:.8rem;letter-spacing:.04em;margin-left:.4em}
.streets--split{columns:2;column-gap:2rem;display:block}
.streets--split li{break-inside:avoid;margin-bottom:.4rem}

/* Sizes are capped to the source resolution. The campaign's own photos
   top out around 1400px wide, so they are never blown past that. */
.plate{margin:0 0 clamp(3rem,7vw,6rem);position:relative;max-width:980px}
.plate img{width:100%;height:clamp(280px,34vw,440px);object-fit:cover;object-position:50% 46%;border-radius:3px}
/* One caption treatment everywhere: a short red rule, then a tight block
   of text under the image it belongs to. */
.plate figcaption,
.patrick__media figcaption{
  margin-top:1.1rem;padding-top:.9rem;
  border-top:2px solid var(--red);
  max-width:46ch;
  font-size:.9rem;line-height:1.55;color:#4a5972;
}
.plate--dark{margin-bottom:clamp(2.5rem,5vw,4rem)}
.plate--dark figcaption{color:#A9BCD6}

/* =========================================================
   PATRICK
   ========================================================= */
.patrick{background:var(--paper-2);padding:clamp(4.5rem,9vw,8rem) 0;border-top:1px solid var(--line)}
.patrick__grid{display:grid;gap:clamp(2rem,5vw,4.5rem);align-items:start}
@media (min-width:900px){
  .patrick__grid{grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);align-items:start}
  /* Sticks alongside the copy instead of leaving a tall column of nothing. */
  .patrick__media{position:sticky;top:7rem}
}

.patrick__media{margin:0;max-width:440px}
.patrick__media img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:52% 34%;border-radius:3px;box-shadow:var(--shadow)}
.patrick__body h2{font-size:clamp(1.9rem,1.4rem + 2.4vw,3.2rem);color:var(--flag);margin-bottom:1.2rem;max-width:16ch}
.patrick__body .big{font-size:clamp(1.08rem,1rem + .4vw,1.28rem);color:#2b3a52;line-height:1.6}
.patrick__body p{color:#44536b;max-width:58ch}
.cols{display:grid;gap:2rem;margin-top:2.4rem}
@media (min-width:620px){ .cols{grid-template-columns:1fr 1fr} }
.cols .ticks{margin-top:0}
.cols .ticks li{color:#2b3a52}

/* =========================================================
   NEXT TERM (dark)
   ========================================================= */
.next{
  background:linear-gradient(180deg,#08131F 0%,#0C2340 100%);
  color:var(--foam);padding:clamp(4.5rem,9vw,8rem) 0;
}
/* ---- the one thing that matters most, given its own frame ---- */
.priority{
  position:relative;isolation:isolate;overflow:hidden;border-radius:3px;
  padding:clamp(2.4rem,5vw,4.4rem) clamp(1.8rem,4vw,4rem);
  min-height:clamp(360px,40vw,580px);
  display:flex;flex-direction:column;justify-content:flex-end;
  margin-bottom:clamp(3rem,6vw,5rem);
  box-shadow:0 40px 80px -50px rgba(0,0,0,.9);
}
.priority__bg{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 84%;z-index:-2
}
.priority::after{
  content:"";position:absolute;inset:0;z-index:-1;
  background:
    linear-gradient(78deg,rgba(120,8,32,.90) 0%,rgba(60,14,44,.72) 40%,rgba(8,19,31,.42) 74%,rgba(8,19,31,.24) 100%),
    linear-gradient(to top,rgba(8,19,31,.78),transparent 58%);
}
.priority__tag{
  display:inline-flex;align-items:center;gap:.5em;align-self:flex-start;
  font-size:.68rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  color:#fff;background:var(--red);padding:.55em 1em;margin:0 0 1.1rem;border-radius:2px;
}
.priority h3{font-size:clamp(2rem,1.4rem + 2.6vw,3.8rem);color:#fff;margin:0 0 .9rem;max-width:16ch;line-height:1.02}
.priority__body{margin:0;color:#EBD9DC;max-width:56ch;font-size:clamp(1rem,.96rem + .2vw,1.1rem)}
.priority__years{
  display:flex;flex-wrap:wrap;gap:.6rem 2.4rem;margin-top:1.8rem;
  border-top:1px solid rgba(255,255,255,.24);padding-top:1.2rem
}
.priority__years li{display:flex;flex-direction:column;line-height:1.25}
.priority__years b{font-family:var(--display);font-size:1.35rem;color:#fff}
.priority__years span{font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:#E2B9C1;font-variant-numeric:tabular-nums}

/* ---- filters ---- */
.rfilters{display:flex;flex-wrap:wrap;gap:.55rem;margin-bottom:clamp(1.5rem,3vw,2.4rem)}
.rfilter{
  display:inline-flex;align-items:center;gap:.55em;cursor:pointer;
  font-family:var(--text);font-weight:500;font-size:.86rem;letter-spacing:.01em;
  padding:.62em 1.05em;border-radius:2px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14);color:#C9D7EA;
  transition:background .2s ease,border-color .2s ease,color .2s ease;
}
.rfilter b{
  font-weight:700;font-size:.72rem;letter-spacing:.04em;color:var(--gold);
  font-variant-numeric:tabular-nums
}
.rfilter:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.3);color:var(--foam)}
.rfilter.is-on{background:var(--foam);border-color:var(--foam);color:var(--flag)}
.rfilter.is-on b{color:var(--red)}

/* ---- the rest as a schedule, grouped by when it lands ---- */
.schedule{display:block;position:relative}
.phase{
  display:grid;gap:1.2rem;
  padding:clamp(1.8rem,3.5vw,2.8rem) 0;
  border-top:1px solid rgba(255,255,255,.16);
}
.phase[hidden]{display:none}
.phase:last-child{border-bottom:1px solid rgba(255,255,255,.16)}
.phase__when span{
  display:block;font-size:.68rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  color:var(--gold);margin-bottom:.3rem
}
.phase__when b{
  font-family:var(--display);font-weight:800;line-height:1;
  font-size:clamp(1.5rem,1.2rem + 1.2vw,2.2rem);color:var(--foam);letter-spacing:-.02em
}
.phase__items{display:grid;gap:1.6rem 2.6rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr))}
.item h4{
  font-family:var(--text);font-weight:700;font-size:1.06rem;color:var(--foam);
  margin:0 0 .45rem;letter-spacing:-.005em;line-height:1.3
}
.item p{margin:0;color:#A9BCD6;font-size:.94rem;line-height:1.65;max-width:52ch}
.item--full{grid-column:1/-1}
.item--media{grid-column:1/-1;display:grid;gap:1.6rem}
.item--media figure{margin:0}
.item--media img{width:100%;height:clamp(200px,22vw,300px);object-fit:cover;object-position:50% 52%;border-radius:3px}
.item{position:relative;transition:transform .25s ease}
.item::before{
  content:"";position:absolute;left:-1.1rem;top:.15em;bottom:.15em;width:2px;
  background:linear-gradient(180deg,var(--red),var(--gold));
  opacity:0;transition:opacity .25s ease;
}
.item:hover::before{opacity:1}
.item:hover{transform:translateX(3px)}

@media (min-width:900px){
  /* A timeline runs down the section: a dot per phase, lit red where
     work is under way and fading out toward what is only planned. */
  .schedule::before{
    content:"";position:absolute;left:7px;top:2.2rem;bottom:2.2rem;width:2px;
    background:linear-gradient(180deg,var(--red) 0%,var(--gold) 26%,rgba(255,255,255,.18) 78%,rgba(255,255,255,.06) 100%);
  }
  .phase{grid-template-columns:minmax(0,190px) minmax(0,1fr);gap:2.6rem;padding-left:2.9rem}
  .phase__when{position:relative}
  .phase__when::before{
    content:"";position:absolute;left:-2.9rem;top:.28rem;
    width:16px;height:16px;border-radius:50%;
    background:var(--ink);border:2px solid var(--gold);
  }
  .phase--now .phase__when::before{
    background:var(--red);border-color:var(--red);
    box-shadow:0 0 0 5px rgba(191,10,48,.20);
  }
  .item--media{
    grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
    grid-template-rows:auto 1fr;align-content:start;gap:.45rem 2.4rem;
  }
  .item--media h4{grid-column:1;grid-row:1}
  .item--media p{grid-column:1;grid-row:2}
  .item--media figure{grid-column:2;grid-row:1 / span 2}
}

/* Street list with live progress on the two that are under way. */
.streetgrid{
  display:grid;gap:.55rem 2.4rem;margin-top:1.2rem;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr))
}
.street{display:grid;grid-template-columns:1fr;align-items:center;gap:.2rem .8rem;font-size:.93rem;color:#A9BCD6}
.street > span{position:relative;padding-left:1.05rem}
.street > span::before{
  content:"";position:absolute;left:0;top:.58em;width:5px;height:5px;background:rgba(169,188,214,.5)
}
.street--live{grid-template-columns:1fr 68px auto}
.street--live > span{color:var(--foam);font-weight:500}
.street--live > span::before{background:var(--gold)}
.street__bar{display:block;height:5px;background:rgba(255,255,255,.14);overflow:hidden}
.street__bar i{display:block;height:100%;background:linear-gradient(90deg,var(--red),var(--gold))}
.street b{font-size:.76rem;font-weight:700;letter-spacing:.06em;color:var(--gold);font-variant-numeric:tabular-nums}

/* =========================================================
   VOTE
   ========================================================= */
.vote{background:var(--flag);color:var(--foam);padding:clamp(4.5rem,9vw,8rem) 0}
.vote__grid{display:grid;gap:clamp(2.5rem,6vw,5rem)}
@media (min-width:900px){ .vote__grid{grid-template-columns:1.15fr .85fr;align-items:start} }
.vote h2{font-size:clamp(2rem,1.5rem + 2.6vw,3.4rem);margin-bottom:1rem;max-width:15ch;color:var(--foam)}
.vote .lede{color:#C0D0E8}
.amounts{display:flex;flex-wrap:wrap;gap:.7rem;margin:2rem 0 1.5rem}
.amount{
  display:inline-flex;align-items:center;justify-content:center;min-width:5.4rem;
  padding:.9em 1.2em;border:2px solid rgba(255,255,255,.4);border-radius:2px;
  font-family:var(--display);font-weight:700;font-size:1.15rem;text-decoration:none;color:var(--foam);
  transition:background .2s,border-color .2s,transform .2s
}
.amount:hover{background:rgba(255,255,255,.12);border-color:#fff;transform:translateY(-2px)}
.vote__note{margin-top:1.6rem;font-size:.92rem;color:#C0D0E8}
.vote__note a{color:var(--sand);text-underline-offset:3px}

.vote__right{display:flex;flex-direction:column;gap:1rem}
.datecard{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);border-radius:3px;padding:1.5rem}
.datecard--red{background:var(--red);border-color:var(--red)}
.datecard--plain{background:transparent}
.datecard__label{font-size:.66rem;letter-spacing:.22em;text-transform:uppercase;color:#C0D0E8;margin:0 0 .5rem}
.datecard--red .datecard__label{color:#FFD9DE}
.datecard__big{font-family:var(--display);font-weight:800;font-size:clamp(2rem,1.6rem + 2.2vw,3.1rem);line-height:1;margin:0;letter-spacing:-.02em}
.datecard__big span{color:var(--gold)}
.datecard--red .datecard__big span{color:#FFD9DE}
.datecard__body{margin:0;font-size:.94rem;color:#C0D0E8}

/* =========================================================
   FOOTER
   ========================================================= */
.foot{background:var(--ink);color:#A9BCD6;padding:clamp(3rem,6vw,4.5rem) 0 2rem}
.foot__grid{display:flex;justify-content:space-between;gap:2rem;flex-wrap:wrap;align-items:flex-start}
.brand--foot{color:var(--foam)}
.brand--foot .brand__text b{font-size:1.16rem}
.brand--foot .brand__text i{opacity:.7;letter-spacing:.12em;font-size:.62rem}
.foot__nav{display:flex;flex-wrap:wrap;gap:.4rem 1.5rem}
.foot__nav a{color:#A9BCD6;text-decoration:none;font-size:.92rem}
.foot__nav a:hover{color:var(--foam)}
.foot__legal{margin-top:clamp(2rem,5vw,3.5rem);padding-top:1.4rem;border-top:1px solid rgba(255,255,255,.1)}
.foot__legal p{margin:0 0 .4rem;font-size:.78rem;color:#7E93B0}
.foot__credit{font-size:.7rem !important;color:#5C728F !important}

/* =========================================================
   REVEAL + RESPONSIVE
   ========================================================= */
.js .reveal{opacity:0;transform:translateY(22px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
.js .reveal.is-in{opacity:1;transform:none}

@media (max-width:860px){
  .topnav{display:none}
  .menu-toggle{display:flex}
  .hero{min-height:100svh;padding-top:6rem}
  .hero__figure{width:min(78%,460px)}
  .hero__figure img{object-position:58% 20%}
  .hero__rail{max-width:none}
  /* Narrow screens put the type over him, so the bed under it goes darker. */
  .hero__figure::after{
    background:
      linear-gradient(to bottom,rgba(8,19,31,.42) 0%,transparent 18%),
      linear-gradient(to top,#08131F 0%,rgba(8,19,31,.78) 22%,rgba(8,19,31,.30) 44%,transparent 64%);
  }
  /* Bottom anchored on a phone rather than floating mid screen. */
  .hero__rail{margin-top:1.6rem;margin-bottom:0}
  .streets--split{columns:1}
  .card--photo{min-height:0}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important}
  .js .reveal{opacity:1;transform:none}
  .card__bg{transform:none}
}


/* ---- quality of life investments chart (light) ---- */
.qol{
  border-top:2px solid var(--flag);padding-top:1.4rem;
  margin-bottom:clamp(3rem,7vw,6rem);
}
.qol__head{
  display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;
  gap:1rem 2rem;margin-bottom:1.6rem;
}
.qol__head h3{font-size:clamp(1.6rem,1.2rem + 1.8vw,2.5rem);margin:0;color:var(--flag)}
.qol__total{margin:0;text-align:right}
.qol__total span{
  display:block;font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;
  color:#5a6a80;margin-bottom:.25rem;
}
.qol__total b{
  display:block;font-family:var(--text);font-weight:700;
  font-size:clamp(1.9rem,1.4rem + 2.4vw,3.2rem);letter-spacing:-.04em;line-height:.95;
  color:var(--red);font-variant-numeric:tabular-nums;
}
.qol__scale{display:none}
.qol__scaleInner{
  display:flex;justify-content:space-between;
  font-size:.66rem;letter-spacing:.1em;color:#6b7c93;font-variant-numeric:tabular-nums;
  padding-bottom:.4rem;border-bottom:1px solid var(--line);
}
.qol__scaleInner span{flex:0 0 auto;width:0;white-space:nowrap}
.qol__scaleInner span:first-child{text-align:left}
.qol__scaleInner span:last-child{transform:translateX(-100%)}
.qol__scaleInner span:not(:first-child):not(:last-child){transform:translateX(-50%)}
.qol__rows{list-style:none;margin:0;padding:0}
.qrow{
  display:grid;gap:.55rem;padding:1.05rem 0;border-bottom:1px solid var(--line);
}
.qrow h4{
  font-family:var(--text);font-weight:700;font-size:1rem;letter-spacing:0;
  color:var(--flag);margin:0;
}
.qtrack{
  position:relative;height:15px;background:rgba(12,35,64,.07);
  background-image:repeating-linear-gradient(to right,rgba(12,35,64,.10) 0 1px,transparent 1px 25%);
}
.qfill{
  position:absolute;left:0;top:0;bottom:0;width:0;
  background:linear-gradient(90deg,var(--red) 0%,var(--gold) 100%);
  transition:width 1.2s cubic-bezier(.2,.7,.2,1);
}
.qval{
  margin:0;font-variant-numeric:tabular-nums;font-weight:700;font-size:1.05rem;
  color:var(--flag);letter-spacing:-.01em;
}
.qol__note{margin:1.5rem 0 0;font-size:.76rem;color:#5a6a80;max-width:62ch}

@media (min-width:860px){
  .qol__scale{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,2.4fr) .95fr;gap:1.6rem;margin-bottom:.5rem}
  .qol__scaleInner{grid-column:2}
  .qrow{grid-template-columns:minmax(0,1.25fr) minmax(0,2.4fr) .95fr;gap:1.6rem;align-items:center}
  .qval{text-align:right}
}

@media (max-width:859px){
  .qol__head{align-items:flex-start}
  .qol__total{text-align:left}
  .qrow{grid-template-columns:1fr}
}
