/* ==========================================================================
   AlterCourseATX
   Paid for by Austin United PAC
   Palette: ink / bone / crimson / acid. Display type is compressed and loud.
   ========================================================================== */

:root{
  --ink:#0B0B0C;
  --ink-2:#16161A;
  --concrete:#26262B;
  --bone:#EDE8DC;
  --bone-2:#DCD5C4;
  --crimson:#C4361F;
  --crimson-dk:#8E2314;
  --oxblood:#5E1710;
  --acid:#C9E246;
  --acid-dk:#9FB92A;
  --rule:2px solid var(--ink);

  --f-display:"Anton", "Arial Narrow", Impact, sans-serif;
  --f-cond:"Barlow Condensed", "Arial Narrow", sans-serif;
  --f-body:"Source Serif 4", Georgia, serif;

  --wrap:1280px;
  --pad:clamp(20px,5vw,72px);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bone);color:var(--ink);
  font-family:var(--f-body);font-size:clamp(16px,1.05vw,18px);line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
a{color:inherit}

/* ---------- dot + spot textures ------------------------------------------ */
.dots::before,.spots::before{content:"";position:absolute;inset:0;pointer-events:none}
.dots::before{
  background-image:radial-gradient(currentColor 1.4px, transparent 1.5px);
  background-size:11px 11px;opacity:.09;
}
.dots-lg::before{background-size:19px 19px;opacity:.065}
.dots-fade::before{
  -webkit-mask-image:linear-gradient(to bottom,#000,transparent 78%);
  mask-image:linear-gradient(to bottom,#000,transparent 78%);
}
.spots::before{
  background-image:
    radial-gradient(closest-side,currentColor 98%,transparent 100%),
    radial-gradient(closest-side,currentColor 98%,transparent 100%),
    radial-gradient(closest-side,currentColor 98%,transparent 100%),
    radial-gradient(closest-side,currentColor 98%,transparent 100%),
    radial-gradient(closest-side,currentColor 98%,transparent 100%);
  background-repeat:no-repeat;
  background-size:180px 180px,90px 90px,44px 44px,300px 300px,26px 26px;
  background-position:-60px -50px, 88% 12%, 20% 78%, 108% 88%, 44% 6%;
  opacity:.05;
}

/* ---------- big block system --------------------------------------------- */
.block{position:relative;padding:clamp(48px,7vw,104px) var(--pad);overflow:hidden}
.block > *{position:relative;z-index:1}
.wrap{max-width:var(--wrap);margin:0 auto}
.b-ink{background:var(--ink);color:var(--bone)}
.b-bone{background:var(--bone);color:var(--ink)}
.b-crim{background:var(--crimson);color:#fff}
.b-acid{background:var(--acid);color:var(--ink)}
.b-ox{background:var(--oxblood);color:var(--bone)}
.b-con{background:var(--concrete);color:var(--bone)}
.tight{padding-top:clamp(28px,4vw,52px);padding-bottom:clamp(28px,4vw,52px)}

/* ---------- type ---------------------------------------------------------- */
.d1,.d2,.d3{font-family:var(--f-display);font-weight:400;text-transform:uppercase;
  letter-spacing:-.015em;margin:0;text-wrap:balance}
.d1{font-size:clamp(3.1rem,10.5vw,9.5rem);line-height:.90}
.d2{font-size:clamp(2.3rem,6.2vw,5.2rem);line-height:.95}
.d3{font-size:clamp(1.6rem,3.3vw,2.7rem);line-height:1.02}
.kicker{font-family:var(--f-cond);font-weight:700;text-transform:uppercase;
  letter-spacing:.20em;font-size:.82rem;margin:0 0 1.1rem}
.lede{font-size:clamp(1.12rem,1.7vw,1.42rem);line-height:1.55;max-width:none}
.tag{display:inline-block;font-family:var(--f-cond);font-weight:700;text-transform:uppercase;
  letter-spacing:.13em;font-size:.76rem;padding:.32em .72em;border:2px solid currentColor}
.tag.solid{background:var(--ink);color:var(--acid);border-color:var(--ink)}
.tag.yes{background:var(--crimson);color:#fff;border-color:var(--crimson)}
.tag.no{background:var(--acid);color:var(--ink);border-color:var(--acid)}
p{margin:0 0 1.05em}
.small{font-size:.86rem;line-height:1.5}
.src{font-family:var(--f-cond);font-size:.86rem;letter-spacing:.02em;opacity:.78}
.src a{text-decoration:underline;text-underline-offset:2px}
mark{background:var(--acid);color:var(--ink);padding:0 .18em}
.b-crim mark,.b-ox mark{background:var(--acid);color:var(--ink)}

/* ---------- identity strip (no header row: it is part of block one) -------- */
.ident{display:flex;flex-wrap:wrap;align-items:baseline;gap:clamp(14px,2.4vw,34px);
  padding:22px var(--pad) 6px;background:var(--ink);color:var(--bone)}
.ident .mark{font-family:var(--f-display);text-transform:uppercase;font-size:1.42rem;
  letter-spacing:-.01em;text-decoration:none;margin-right:auto}
.ident .mark span{color:var(--crimson)}
.ident nav{display:flex;flex-wrap:wrap;gap:clamp(12px,2vw,26px)}
.ident nav a{font-family:var(--f-cond);font-weight:700;text-transform:uppercase;
  letter-spacing:.14em;font-size:.82rem;text-decoration:none;padding-bottom:3px;
  border-bottom:3px solid transparent}
.ident nav a:hover,.ident nav a[aria-current]{border-bottom-color:var(--acid);color:var(--acid)}

/* ---------- hero ---------------------------------------------------------- */
.hero{display:grid;grid-template-columns:1.15fr .85fr;background:var(--ink);color:var(--bone)}
.hero-txt{padding:clamp(40px,5.5vw,84px) var(--pad);display:flex;flex-direction:column;justify-content:center;
  position:relative;overflow:hidden}
.hero-img{position:relative;background:var(--ink);overflow:hidden;min-height:clamp(340px,52vw,660px)}
.hero-img img{width:100%;height:100%;object-fit:cover;object-position:50% 10%}
.hero-img::after{content:"";position:absolute;inset:0;
  background:
    radial-gradient(ellipse at 50% 116%, rgba(196,54,31,.50) 0%, rgba(142,35,20,.20) 32%, transparent 58%),
    linear-gradient(to bottom, rgba(11,11,12,.62) 0%, rgba(11,11,12,0) 34%, rgba(11,11,12,.42) 100%),
    linear-gradient(to right, rgba(11,11,12,.45) 0%, transparent 22%);
  pointer-events:none}

.hero .d1 em{font-style:normal;color:var(--crimson)}
.hero .d1 .lap{color:var(--acid)}
@media(max-width:900px){.hero{grid-template-columns:1fr}.hero-img{min-height:380px;order:-1}}

/* ---------- the number ---------------------------------------------------- */
.tally{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:4px solid var(--ink)}
.tally > div{padding:clamp(24px,3.4vw,44px);border-right:4px solid var(--ink)}
.tally > div:last-child{border-right:0}
.tally .n{font-family:var(--f-display);font-size:clamp(2.6rem,6.6vw,5.4rem);line-height:.84;display:block}
.tally .l{font-family:var(--f-cond);font-weight:700;text-transform:uppercase;letter-spacing:.13em;
  font-size:.8rem;margin-top:.7rem;display:block}
@media(max-width:760px){.tally{grid-template-columns:1fr}
  .tally > div{border-right:0;border-bottom:4px solid var(--ink)}
  .tally > div:last-child{border-bottom:0}}

/* ---------- charge cards -------------------------------------------------- */
.charges{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:0;
  border-top:4px solid var(--ink);border-left:4px solid var(--ink)}
.charge{position:relative;padding:clamp(26px,3vw,40px);
  border-right:4px solid var(--ink);border-bottom:4px solid var(--ink);overflow:hidden}
.charge h3{font-family:var(--f-display);text-transform:uppercase;font-size:clamp(1.5rem,2.5vw,2.1rem);
  line-height:.94;margin:.55rem 0 .8rem}
.charge .no{font-family:var(--f-display);font-size:3.4rem;line-height:1;opacity:.20;position:absolute;
  top:8px;right:16px}
.charge p{font-size:.98rem}
.charge .verdict{font-family:var(--f-cond);font-weight:700;text-transform:uppercase;
  letter-spacing:.09em;font-size:1rem;margin-top:1rem;padding-top:.9rem;border-top:2px solid currentColor}

/* ---------- timelines ----------------------------------------------------- */
.tl{list-style:none;margin:0;padding:0;border-left:4px solid currentColor}
.tl li{position:relative;padding:0 0 1.5rem 1.6rem;margin-left:-4px;border-left:4px solid transparent}
.tl li::before{content:"";position:absolute;left:-11px;top:.42rem;width:18px;height:18px;
  border-radius:50%;background:currentColor}
.tl .when{font-family:var(--f-cond);font-weight:700;text-transform:uppercase;letter-spacing:.12em;
  font-size:.8rem;display:block;margin-bottom:.25rem}
.tl .what{font-size:1rem;margin:0}
.tl li.hit::before{background:var(--crimson);box-shadow:0 0 0 5px rgba(196,54,31,.28)}
.b-acid .tl li.hit::before,.b-bone .tl li.hit::before{background:var(--crimson)}

.split2{display:grid;grid-template-columns:1fr 1fr;gap:0;border:4px solid var(--ink)}
.split2 > div{padding:clamp(26px,3.2vw,44px)}
.split2 > div:first-child{border-right:4px solid var(--ink)}
.split2.flush > div{padding:clamp(28px,3.6vw,56px) clamp(24px,4vw,64px)}
@media(max-width:860px){.split2{grid-template-columns:1fr}
  .split2 > div:first-child{border-right:0;border-bottom:4px solid var(--ink)}}

/* ---------- quotes -------------------------------------------------------- */
.pull{border-left:10px solid var(--crimson);padding:.4rem 0 .4rem 1.4rem;margin:1.6rem 0}
.pull q{font-family:var(--f-body);font-size:clamp(1.14rem,1.9vw,1.5rem);line-height:1.42;
  font-style:italic;quotes:'"' '"'}
.pull .who{font-family:var(--f-cond);font-weight:700;text-transform:uppercase;letter-spacing:.12em;
  font-size:.79rem;margin-top:.8rem;display:block;opacity:.85}
.b-ink .pull,.b-con .pull{border-left-color:var(--acid)}
.b-crim .pull{border-left-color:var(--acid)}

/* said/did ledger */
.ledger{border:4px solid var(--ink);margin:1.8rem 0}
.ledger > div{display:grid;grid-template-columns:110px 1fr;gap:0;border-bottom:4px solid var(--ink)}
.ledger > div:last-child{border-bottom:0}
.ledger .lbl{background:var(--ink);color:var(--bone);font-family:var(--f-cond);font-weight:700;
  text-transform:uppercase;letter-spacing:.13em;font-size:.8rem;padding:1.1rem .9rem;display:flex;
  align-items:center}
.ledger .did .lbl{background:var(--crimson);color:#fff}
.ledger .val{padding:1.1rem 1.3rem;font-size:1rem}
@media(max-width:640px){.ledger > div{grid-template-columns:1fr}
  .ledger .lbl{padding:.55rem .9rem}}

/* ---------- vote table ---------------------------------------------------- */
.votes{width:100%;border-collapse:collapse;font-family:var(--f-cond);font-size:1rem}
.votes th,.votes td{text-align:left;padding:.72rem .8rem;border-bottom:2px solid rgba(11,11,12,.25);
  vertical-align:top}
.b-ink .votes th,.b-ink .votes td{border-bottom-color:rgba(237,232,220,.22)}
.votes th{font-weight:700;text-transform:uppercase;letter-spacing:.12em;font-size:.76rem;
  border-bottom-width:4px;border-bottom-color:currentColor}
.votes .v{font-weight:700;white-space:nowrap}
.votes .v-yes{color:var(--crimson)}
.b-ink .votes .v-yes{color:#FF7A5E}
.votes .v-no{color:var(--acid-dk)}
.b-ink .votes .v-no{color:var(--acid)}
.scroll-x{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* ---------- image treatments ---------------------------------------------- */
.shot{position:relative;overflow:hidden;background:var(--ink)}
.shot img{width:100%;display:block}
.shot.neg img{filter:grayscale(1) contrast(1.5) brightness(.78)}
.shot::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(circle at 50% 120%, rgba(196,54,31,.5), transparent 60%),
             linear-gradient(to bottom, rgba(11,11,12,.7), transparent 45%)}
.shot .cap{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:1rem 1.1rem;
  background:linear-gradient(to top, rgba(11,11,12,.92), transparent);
  color:var(--bone);font-family:var(--f-cond);font-size:.86rem;letter-spacing:.02em}
.shot .stamp{position:absolute;z-index:2;top:14px;left:14px;background:var(--crimson);color:#fff;
  font-family:var(--f-cond);font-weight:700;text-transform:uppercase;letter-spacing:.14em;
  font-size:.74rem;padding:.3em .7em}

/* ---------- buttons ------------------------------------------------------- */
.btn{display:inline-block;font-family:var(--f-cond);font-weight:700;text-transform:uppercase;
  letter-spacing:.14em;font-size:.92rem;padding:1rem 1.9rem;text-decoration:none;
  border:4px solid var(--ink);background:var(--acid);color:var(--ink);
  box-shadow:8px 8px 0 var(--ink);transition:transform .12s,box-shadow .12s}
.btn:hover{transform:translate(4px,4px);box-shadow:2px 2px 0 var(--ink)}
.btn-crim{background:var(--crimson);color:#fff;border-color:#fff;box-shadow:8px 8px 0 rgba(0,0,0,.55)}
.btn-crim:hover{box-shadow:2px 2px 0 rgba(0,0,0,.55)}
.btn-bone{background:var(--bone);color:var(--ink);border-color:var(--bone);
  box-shadow:8px 8px 0 var(--crimson)}
.btn-bone:hover{box-shadow:2px 2px 0 var(--crimson)}
.btns{display:flex;flex-wrap:wrap;gap:clamp(14px,2vw,26px);margin-top:2rem}

/* ---------- misc ---------------------------------------------------------- */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,3.4vw,56px)}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:clamp(20px,2.6vw,40px)}
@media(max-width:860px){.grid2{grid-template-columns:1fr}}
.rule{height:4px;background:currentColor;border:0;margin:2.4rem 0;opacity:.9}
.stripe{height:14px;background:repeating-linear-gradient(135deg,var(--ink) 0 16px,var(--acid) 16px 32px)}
.stripe-crim{background:repeating-linear-gradient(135deg,var(--ink) 0 16px,var(--crimson) 16px 32px)}

/* footer */
.foot{background:var(--ink);color:var(--bone-2);padding:clamp(44px,5vw,72px) var(--pad) 2.2rem}
.foot a{color:var(--bone)}
.foot .cols{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:clamp(24px,3vw,48px);
  max-width:var(--wrap);margin:0 auto}
.foot h4{font-family:var(--f-cond);font-weight:700;text-transform:uppercase;letter-spacing:.16em;
  font-size:.78rem;margin:0 0 1rem;color:var(--acid)}
.foot ul{list-style:none;margin:0;padding:0}
.foot li{margin-bottom:.6rem;font-family:var(--f-cond);font-size:1rem}
.foot .mark{font-family:var(--f-display);text-transform:uppercase;font-size:1.6rem;margin:0 0 .8rem}
.foot .mark span{color:var(--crimson)}
/* Required political advertising disclosure.
   Tex. Elec. Code 255.001 and TEC Rule 26.1: the words "political advertising"
   plus the committee's full name, on its own line or successive lines, on the
   face of the advertising. Keep .disc-req standalone and do not merge it into
   surrounding copy. */
.disc{max-width:var(--wrap);margin:2.6rem auto 0;padding-top:1.6rem;
  border-top:2px solid rgba(237,232,220,.22);font-family:var(--f-cond);
  letter-spacing:.03em;color:var(--bone-2)}
.disc-req{display:block;font-size:1.02rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--bone);line-height:1.35;margin:0 0 .9rem}
.disc-note{font-size:.86rem;line-height:1.5;margin:0 0 .7rem}
.disc-note:last-child{margin-bottom:0}

:focus-visible{outline:4px solid var(--acid);outline-offset:3px}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}


/* ---------- full-width charge sections ----------------------------------- */
.charge-full .cf{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);
  gap:clamp(28px,4vw,72px);align-items:start}
.charge-full .cf-l{position:relative}
.charge-full .cf-n{font-family:var(--f-display);font-size:clamp(4rem,9vw,8.5rem);
  line-height:.8;opacity:.22;display:block;margin-bottom:.4rem}
.charge-full h3{font-family:var(--f-display);text-transform:uppercase;
  font-size:clamp(2rem,4.6vw,3.9rem);line-height:.95;margin:.7rem 0 0;letter-spacing:-.015em}
.charge-full .cf-r p{font-size:clamp(1.02rem,1.3vw,1.16rem)}
.charge-full .verdict{font-family:var(--f-cond);font-weight:700;text-transform:uppercase;
  letter-spacing:.09em;font-size:clamp(1.05rem,1.5vw,1.35rem);margin-top:1.3rem;
  padding-top:1.1rem;border-top:4px solid currentColor}
@media(max-width:900px){.charge-full .cf{grid-template-columns:1fr}}

/* ---------- hover flip pair ---------------------------------------------- */
.flipper{position:relative;overflow:hidden;background:var(--ink);cursor:pointer;
  min-height:clamp(320px,40vw,560px)}
.flipper img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:50% 18%;transition:opacity .38s ease}
.flipper .fb{opacity:0}
.flipper:hover .fa,.flipper:focus-within .fa,.flipper.flipped .fa{opacity:0}
.flipper:hover .fb,.flipper:focus-within .fb,.flipper.flipped .fb{opacity:1}
.flipper::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background-image:radial-gradient(rgba(11,11,12,.5) 1.4px, transparent 1.5px);
  background-size:8px 8px;mix-blend-mode:multiply}
.flipper .fname{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:1.1rem 1.2rem;
  background:linear-gradient(to top, rgba(11,11,12,.94), transparent);
  font-family:var(--f-display);text-transform:uppercase;font-size:clamp(1.3rem,2.4vw,2rem);
  color:var(--bone);line-height:1}
.flipper .fname .n2{display:none;color:var(--acid)}
.flipper:hover .fname .n1,.flipper:focus-within .fname .n1,.flipper.flipped .fname .n1{display:none}
.flipper:hover .fname .n2,.flipper:focus-within .fname .n2,.flipper.flipped .fname .n2{display:block}
.flipper .fhint{position:absolute;top:14px;right:14px;z-index:3;background:var(--acid);
  color:var(--ink);font-family:var(--f-cond);font-weight:700;text-transform:uppercase;
  letter-spacing:.13em;font-size:.72rem;padding:.32em .7em}
.flipper:hover .fhint,.flipper.flipped .fhint{background:var(--crimson);color:#fff}

/* display type sized for half-width columns rather than the full wrap */
.d1-col{font-size:clamp(2.5rem,5.4vw,4.5rem)}
.d2-col{font-size:clamp(2rem,3.9vw,3.2rem)}
@media(max-width:900px){.d1-col{font-size:clamp(2.6rem,9vw,4.4rem)}
  .d2-col{font-size:clamp(1.9rem,7vw,3rem)}}

/* Abbott teaser runs text-left / image-right, against the grain of the other
   splits. Stacked, lead with the image so the section still opens on a face. */
@media(max-width:900px){
  .flip-split{display:flex;flex-direction:column}
  .flip-split > .flipper{order:-1}
}

/* ---------- the record hero: torn clipping leaning in from the right ------ */
.rec-hero{position:relative;overflow:hidden}
.rec-hero > .rec-clip{position:absolute;z-index:0;pointer-events:none;user-select:none;
  right:clamp(-90px,-3vw,0px);top:50%;transform:translateY(-50%);
  width:min(44%,560px);height:auto}
.rec-hero .wrap{position:relative;z-index:1}
.rec-hero .rec-txt{max-width:min(64%,760px)}
@media(max-width:1100px){
  .rec-hero > .rec-clip{width:52%;right:-12%;opacity:.5}
  .rec-hero .rec-txt{max-width:80%}
}
@media(max-width:760px){
  .rec-hero > .rec-clip{width:78%;right:-26%;opacity:.28}
  .rec-hero .rec-txt{max-width:none}
}
