/* =====================================================================
   Shared styles for column and contributor pages.
   Same tokens and faces as the homepage; asset paths are root-absolute
   because these pages live in subdirectories.
   ===================================================================== */

@font-face{font-family:'Poppins';font-style:normal;font-weight:300;font-display:swap;src:url('/fonts/poppins-300.woff2') format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/poppins-400.woff2') format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/poppins-600.woff2') format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/poppins-700.woff2') format('woff2')}
@font-face{font-family:'Poppins';font-style:normal;font-weight:800;font-display:swap;src:url('/fonts/poppins-800.woff2') format('woff2')}
@font-face{font-family:'Caveat';font-style:normal;font-weight:600;font-display:swap;src:url('/fonts/caveat-600.woff2') format('woff2')}

:root{
  --navy:#233655; --navy-deep:#172538; --navy-mid:#2C4368;
  --gold:#C79321; --gold-lt:#E2B85A;
  --gold-head:#9A7118; --gold-ink:#8A6414;
  --cream:#F8EED7; --cream-lt:#FDF7E9;
  --on-cream:#233655; --on-cream-mu:#4C5F7C;
  --on-navy:#F4EFE2; --on-navy-mu:rgba(244,239,226,.62);
  --display:'Poppins','Helvetica Neue',system-ui,sans-serif;
  --hand:'Caveat','Bradley Hand','Marker Felt',cursive;
  --ease:cubic-bezier(.22,.61,.36,1);
  --wrap:1180px;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  font-family:var(--display);font-weight:400;font-size:1.0625rem;line-height:1.72;
  color:var(--on-cream);background:var(--cream);-webkit-font-smoothing:antialiased;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
ul{list-style:none}
:focus-visible{outline:3px solid var(--gold-lt);outline-offset:3px;border-radius:2px}

.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 clamp(1.25rem,4vw,3rem)}
.measure{max-width:660px;margin:0 auto}

/* ---------- bar ---------- */
.bar{
  display:flex;align-items:center;justify-content:space-between;gap:1rem;
  height:64px;padding:0 clamp(1rem,4vw,2.25rem);
  background:var(--navy-deep);position:sticky;top:0;z-index:50;
}
.bar img{height:32px;width:auto}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.7rem;
  min-height:48px;padding:.8rem 1.6rem;
  font-size:.78rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;
  color:#1B2C45;border:0;border-radius:2px;cursor:pointer;
  background:linear-gradient(177deg,#E0B052 0%,#CE9C31 46%,#B98828 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.34),0 1px 2px rgba(23,37,56,.14),0 10px 24px -12px rgba(150,106,20,.6);
  transition:background .25s var(--ease),transform .25s var(--ease),box-shadow .3s var(--ease);
}
.btn:hover{background:linear-gradient(177deg,#EDBE60 0%,#D9A73B 46%,#C4922B 100%);transform:translateY(-2px)}
.btn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .3s var(--ease)}
.btn:hover svg{transform:translateX(4px)}
.btn-lg{min-height:58px;padding:1.05rem 2.2rem;font-size:.84rem}
.bar .btn{min-height:40px;padding:.55rem 1.2rem;font-size:.7rem}

/* ---------- breadcrumb ---------- */
/* the BreadcrumbList schema needs a visible counterpart, and "click the logo"
   is not an obvious way home for this audience */
.crumbs{background:var(--navy-deep);border-top:1px solid rgba(244,239,226,.08);padding:.7rem 0}
.crumbs ol{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;list-style:none;font-size:.76rem}
.crumbs li{display:flex;align-items:center;gap:.5rem;color:var(--on-navy-mu)}
.crumbs li+li::before{content:'/';color:rgba(244,239,226,.28)}
.crumbs a{color:var(--gold-lt);font-weight:600}
.crumbs a:hover{color:#fff;text-decoration:underline}
.crumbs [aria-current]{color:var(--on-navy-mu)}
.bar .home{display:inline-flex;align-items:center;gap:.45rem;font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--on-navy-mu);margin-left:1.1rem}
.bar .home:hover{color:var(--gold-lt)}
.bar .home svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.bar .left{display:flex;align-items:center}
@media (max-width:600px){.bar .home span{display:none}}

/* ---------- masthead ---------- */
.dateline{font-family:'Poppins',system-ui,sans-serif;font-size:.78rem;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:var(--gold-lt);margin:.9rem 0 0;opacity:.95}
.dateline time{letter-spacing:.16em}
/* ---------- mid-article CTA ---------- */
/* Long reads lose people before the CTA at the foot, so this sits at the
   natural midpoint. Styled as an aside, not an advert. */
.midcta{margin:2.9rem 0;padding:1.6rem 1.5rem 1.5rem;background:var(--navy);color:var(--on-navy);
  border-radius:4px;border-left:4px solid var(--gold);text-align:left}
.midcta .k{display:flex;align-items:center;gap:.5rem;font-size:.7rem;font-weight:800;
  letter-spacing:.15em;text-transform:uppercase;color:var(--gold-lt);margin:0 0 .6rem}
.midcta .k::before{content:'';width:20px;height:1px;background:var(--gold-lt);flex:0 0 auto}
.midcta .t{font-size:1.02rem;line-height:1.66;color:var(--on-navy);margin:0 0 1.15rem;max-width:52ch}
.midcta .btn{display:inline-flex;align-items:center;gap:.5rem}
.midcta .n{font-size:.74rem;letter-spacing:.04em;color:var(--on-navy-mu);margin:.85rem 0 0}

/* ---------- sticky mobile join bar ---------- */
.stickycta{position:fixed;left:0;right:0;bottom:0;z-index:60;display:none;
  align-items:center;justify-content:space-between;gap:.9rem;
  padding:.7rem 1rem calc(.7rem + env(safe-area-inset-bottom,0px));
  background:var(--navy-deep);border-top:1px solid rgba(226,184,90,.34);
  box-shadow:0 -6px 22px rgba(23,37,56,.32);
  transform:translateY(110%);transition:transform .28s var(--ease)}
.stickycta.in{transform:translateY(0)}
.stickycta .txt{min-width:0}
.stickycta b{display:block;font-size:.84rem;font-weight:700;color:var(--on-navy);line-height:1.2}
.stickycta span{display:block;font-size:.72rem;color:var(--on-navy-mu);margin-top:.14rem}
.stickycta .btn{flex:0 0 auto;white-space:nowrap}
@media(max-width:820px){
  .stickycta{display:flex}
  body.has-sticky{padding-bottom:76px}
}
@media(prefers-reduced-motion:reduce){.stickycta{transition:none}}

/* ---------- veteran badge ---------- */
/* solid enamel pill: reads the same on navy and on cream, so one variant does
   every placement. Navy-deep on gold is 5.61:1; the dark-gold edge lifts the
   boundary off cream, which gold-on-cream alone only manages at 2.39:1. */
.vet-badge{display:inline-flex;align-items:center;gap:.46rem;font-family:var(--display);
  font-size:.73rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase;line-height:1;
  padding:.52rem .82rem .48rem;border-radius:3px;white-space:nowrap;
  box-shadow:0 2px 0 #7A5812, 0 4px 12px rgba(23,37,56,.26)}
/* Doubled class on purpose. The badge is a <span>, so a container rule such as
   .byline-txt span (0,1,1) outranked a plain .vet-badge (0,1,0) and repainted
   the text muted cream on gold: 1.75:1. At (0,2,0) the badge keeps its own
   colours wherever it is dropped. */
.vet-badge.vet-badge{color:var(--navy-deep);background:var(--gold);border:1px solid #7A5812}
.vet-badge svg{width:13px;height:13px;flex:0 0 auto;fill:currentColor}
.vet-badge.ink{color:var(--navy-deep);background:var(--gold);border-color:#7A5812}  /* alias: same as base now */
.byline .vet-badge{display:flex;width:fit-content;margin:.7rem 0 .45rem}
.author-card .vet-badge{display:flex;width:fit-content;margin:.6rem 0 0}
.masthead .vet-badge{margin-top:.95rem}

@media(max-width:400px){
  .vet-badge{font-size:.64rem;letter-spacing:.08em;padding:.46rem .6rem .42rem;gap:.36rem}
  .vet-badge svg{width:11px;height:11px}
}

/* ---------- column cards with author portraits ---------- */
.col-head{display:flex;align-items:center;gap:1.05rem;margin-bottom:.8rem}
.col-ava{width:76px;height:76px;border-radius:50%;object-fit:cover;flex:0 0 auto;
  border:2px solid rgba(199,147,33,.6);box-shadow:0 3px 14px rgba(35,54,85,.2)}
.col-head>div{min-width:0}
.col-head .date{margin-bottom:.32rem}
.piece .col-head+.vet-badge{margin:0 0 .85rem}
.col-head h2{margin-bottom:.55rem}
.piece:hover .col-ava{border-color:var(--gold)}
@media(max-width:520px){
  .col-head{gap:.8rem}
  .col-ava{width:60px;height:60px}
}

/* ---------- editorial standfirst ---------- */
.standfirst{font-size:1.02rem;line-height:1.75;color:var(--on-cream-mu);
  border-left:3px solid var(--gold);padding:.1rem 0 .1rem 1.15rem;margin:0 0 2.1rem}
.standfirst b{color:var(--on-cream);font-weight:600}

.masthead{background:var(--navy);color:var(--on-navy);padding:clamp(2.75rem,7vw,4.5rem) 0 clamp(2.25rem,5vw,3.25rem)}
.kicker{
  display:flex;align-items:center;gap:.6rem;
  font-size:.7rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
  color:var(--gold-lt);margin-bottom:1.1rem;
}
.kicker::before{content:'';width:22px;height:1px;background:var(--gold);opacity:.85;flex:0 0 auto}
.kicker a{color:var(--gold-lt)}
.kicker a:hover{color:var(--gold-lt)}
h1{
  font-family:var(--display);font-weight:800;text-transform:uppercase;
  font-size:clamp(1.85rem,4.4vw,3.1rem);line-height:1.08;letter-spacing:-.015em;
  color:#fff;text-wrap:balance;
}
.masthead .strap{font-family:var(--hand);font-size:clamp(1.4rem,2.6vw,1.95rem);color:var(--gold-lt);margin-top:.7rem}
.byline{display:flex;align-items:center;gap:1rem;margin-top:clamp(1.5rem,3vw,2rem)}
.byline img{width:56px;height:56px;border-radius:50%;object-fit:cover;flex:0 0 auto}
.byline-txt{font-size:.9rem;line-height:1.45}
.byline-txt b{display:block;color:#fff;font-weight:700}
.byline-txt span{color:var(--on-navy-mu)}
.byline-txt a{color:var(--gold-lt);border-bottom:1px solid rgba(226,184,90,.4)}

/* ---------- article ---------- */
.article{padding:clamp(2.5rem,6vw,4rem) 0 clamp(2rem,5vw,3rem);position:relative}
.article::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
  background-size:180px 180px;mix-blend-mode:multiply;opacity:.13;
}
.article > *{position:relative;z-index:1}
.article p{font-size:1.09rem;line-height:1.82;color:#3A4C68;margin-bottom:1.35rem}
.article p.lead{font-size:1.2rem;line-height:1.75;color:var(--on-cream);font-weight:500}
.article h2{
  font-family:var(--display);font-weight:800;text-transform:uppercase;
  font-size:clamp(1.15rem,2.2vw,1.5rem);letter-spacing:.01em;line-height:1.15;
  color:var(--navy);margin:2.6rem 0 .3rem;
}
.article h2::after{content:'';display:block;width:44px;height:3px;background:var(--gold);border-radius:2px;margin:.7rem 0 1.1rem}
.article b,.article strong{color:var(--on-cream);font-weight:700}
.article em,.article i{font-style:italic}
/* ---------- crisis support note ---------- */
/* Editorial, not the author's words. Appears where a piece describes suicidal
   thinking. Specificity doubled so .article p cannot repaint it. */
.article .support{margin:2.5rem 0;padding:1.35rem 1.45rem;border-radius:3px;
  border:1px solid rgba(138,100,20,.34);border-left:4px solid var(--gold-head);
  background:rgba(138,100,20,.055)}
.article .support h3{font-family:var(--display);font-size:.74rem;font-weight:800;
  letter-spacing:.14em;text-transform:uppercase;color:var(--gold-ink);margin:0 0 .65rem}
.article .support p{font-size:.95rem;line-height:1.7;color:var(--on-cream);margin:0 0 .45rem;max-width:58ch}
.article .support p:last-child{margin-bottom:0}
.article .support b{color:var(--on-cream);font-weight:700}

.pull{
  margin:2.2rem 0;padding:1.4rem 0;border-top:2px solid rgba(199,147,33,.4);border-bottom:2px solid rgba(199,147,33,.4);
  font-family:var(--hand);font-size:clamp(1.4rem,2.8vw,1.95rem);line-height:1.32;color:var(--navy);
}
.pull cite{display:block;font-family:var(--display);font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-ink);font-style:normal;margin-top:.7rem}
.closer{font-family:var(--hand);font-size:clamp(1.5rem,3vw,2.1rem);color:var(--gold-head);margin-top:2rem;line-height:1.3}

/* ---------- author card ---------- */
.author-card{
  background:var(--cream-lt);border-left:3px solid var(--gold);
  padding:clamp(1.4rem,3vw,2rem);margin:clamp(2.5rem,5vw,3.5rem) auto 0;max-width:660px;
  box-shadow:0 6px 24px rgba(35,54,85,.07);
}
.author-card .top{display:flex;align-items:center;gap:1.1rem;margin-bottom:1rem}
.author-card img{width:74px;height:74px;border-radius:50%;object-fit:cover;flex:0 0 auto}
.author-card h3{font-family:var(--display);font-weight:800;font-size:1.05rem;text-transform:uppercase;letter-spacing:.03em;color:var(--navy)}
.author-card .role{font-size:.84rem;color:var(--on-cream-mu);margin-top:.2rem}
.author-card p{font-size:.96rem;line-height:1.72;color:var(--on-cream-mu)}
.author-card a.more{display:inline-block;margin-top:.9rem;font-size:.76rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-ink);border-bottom:1px solid rgba(138,100,20,.5);padding-bottom:2px}
.author-card a.more:hover{color:var(--navy);border-color:var(--navy)}

/* ---------- discuss / cta ---------- */
.discuss{background:var(--navy);color:var(--on-navy);padding:clamp(2.75rem,6vw,4rem) 0;text-align:center}
.discuss h2{font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:clamp(1.3rem,3vw,1.9rem);color:#fff;line-height:1.12}
.discuss p{color:var(--on-navy-mu);max-width:520px;margin:1rem auto 1.9rem;font-size:1rem;line-height:1.75}
.discuss .note{font-size:.76rem;color:var(--on-navy-mu);margin-top:1.1rem;letter-spacing:.04em}

/* ---------- index listing ---------- */
.listing{padding:clamp(2.5rem,6vw,4rem) 0}
.piece{
  display:block;padding:clamp(1.35rem,3vw,1.9rem) 0;border-bottom:1px solid rgba(35,54,85,.13);
  transition:transform .25s var(--ease);
}
.piece:first-of-type{border-top:1px solid rgba(35,54,85,.13)}
.piece:hover{transform:translateX(4px)}
.piece .date{font-size:.72rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--gold-ink);margin-bottom:.5rem}
.piece h2{font-family:var(--display);font-weight:800;font-size:clamp(1.2rem,2.6vw,1.6rem);text-transform:uppercase;line-height:1.14;color:var(--navy);margin-bottom:.5rem}
.piece:hover h2{color:var(--gold-head)}
.piece p{font-size:.98rem;line-height:1.7;color:var(--on-cream-mu);max-width:60ch}
.piece .go{display:inline-block;margin-top:.7rem;font-size:.74rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--gold-ink)}

/* ---------- contributor page ---------- */
.bio-grid{display:grid;grid-template-columns:300px 1fr;gap:clamp(2rem,5vw,3.5rem);align-items:start;padding:clamp(2.5rem,6vw,4rem) 0}
.bio-frame{position:relative;background:#fff;padding:13px 13px 52px;box-shadow:0 14px 40px rgba(35,54,85,.18);transform:rotate(-1.8deg)}
.bio-frame img{width:100%;aspect-ratio:4/5;object-fit:cover}
.bio-frame figcaption{position:absolute;left:0;right:0;bottom:14px;text-align:center;font-family:var(--hand);font-size:1.4rem;color:var(--navy)}
.bio-body h2{font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:clamp(1.15rem,2.2vw,1.45rem);color:var(--navy);margin:2rem 0 .9rem}
.bio-body p{font-size:1.03rem;line-height:1.8;color:#3A4C68;margin-bottom:1.15rem}
.creds{display:grid;gap:.55rem;margin:1.4rem 0}
.creds li{position:relative;padding-left:1.6rem;font-size:.93rem;line-height:1.55;color:var(--on-cream-mu)}
.creds li svg{position:absolute;left:0;top:.34em;width:13px;height:13px;stroke:var(--gold);fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
@media (max-width:820px){
  .bio-grid{grid-template-columns:1fr}
  .bio-frame{max-width:290px}
}

/* ---------- footer ---------- */
.social{display:flex;gap:.65rem;justify-content:center;margin:0 0 1.3rem}
/* Doubled class: the row sits inside .foot, and .foot nav a (0,1,2) outranked
   a plain .social a (0,1,1), repainting the icons muted cream. (0,2,1) wins. */
.social.social a{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;
  border-radius:50%;border:1px solid rgba(226,184,90,.45);color:var(--gold-lt);
  transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease)}
.social.social a:hover,.social.social a:focus-visible{background:var(--gold);color:var(--navy-deep);border-color:var(--gold)}
.social svg{width:17px;height:17px;fill:currentColor}

.foot{background:var(--navy-deep);padding:clamp(2.25rem,5vw,3rem) 0 2rem;text-align:center}
.foot img{height:74px;width:auto;margin:0 auto 1.2rem;opacity:.92}
.foot .affil{font-size:.82rem;color:var(--on-navy-mu);margin-bottom:1rem}
.foot .affil a{color:var(--on-navy);border-bottom:1px solid rgba(199,147,33,.45)}
.foot .disc{font-size:.71rem;line-height:1.68;color:rgba(244,239,226,.58);max-width:640px;margin:0 auto 1rem}
.foot .copy{font-size:.71rem;color:rgba(244,239,226,.58)}
.foot nav{display:flex;gap:1.4rem;justify-content:center;flex-wrap:wrap;margin-bottom:1.3rem}
.foot nav a{font-size:.74rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--on-navy-mu)}
.foot nav a:hover{color:var(--gold-lt)}

@media (max-width:600px){
  body{font-size:1.02rem}
  .article p{font-size:1.04rem;line-height:1.78}
  .byline img{width:48px;height:48px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}
}

/* ---------- share row ---------- */
.share{max-width:660px;margin:clamp(2.25rem,5vw,3rem) auto 0;padding-top:1.6rem;border-top:2px solid rgba(199,147,33,.35)}
.share h2{
  font-family:var(--display);font-size:.74rem;font-weight:700;letter-spacing:.15em;
  text-transform:uppercase;color:var(--gold-ink);margin-bottom:.95rem;
}
.share ul{display:flex;flex-wrap:wrap;gap:.55rem;list-style:none}
.share a,.share button{
  display:inline-flex;align-items:center;gap:.5rem;
  min-height:46px;padding:.6rem 1.05rem;
  font-family:var(--display);font-size:.78rem;font-weight:600;letter-spacing:.02em;
  color:var(--navy);background:none;
  border:1.5px solid rgba(35,54,85,.28);border-radius:2px;cursor:pointer;
  transition:border-color .2s var(--ease),background .2s var(--ease),transform .2s var(--ease);
}
.share a:hover,.share button:hover{
  border-color:var(--gold-ink);background:rgba(199,147,33,.08);transform:translateY(-1px);
}
.share svg{width:17px;height:17px;flex:0 0 auto}
.share .is-done{border-color:var(--gold-ink);background:rgba(199,147,33,.14)}
@media (max-width:600px){
  .share ul{gap:.45rem}
  .share a,.share button{padding:.6rem .85rem;font-size:.75rem}
}
