/* =====================================================================
   /contribute/ — ported from docs/contribute-mockup.html. Scoped under
   .contribute-doc so it never touches the shared header, footer, or
   scenes.css. Type: Fraunces display, Inter body, IBM Plex Mono labels.
   ===================================================================== */

.contribute-doc {
  --ink:#1C2E4A; --deep:#12203A; --paper:#F5EFE4; --mount:#E5DBC9;
  --rust:#C14D2E; --slate:#8A9BB0;
  --display:"Fraunces",Georgia,serif;
  --body:"Inter",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  font-weight:300;
  font-size:1.0625rem;
  line-height:1.65;
}
.contribute-doc *{box-sizing:border-box}
.contribute-doc .wrap{max-width:1180px;margin:0 auto;padding:0 32px}
.contribute-doc .tag{font-family:var(--mono);font-size:0.6875rem;letter-spacing:.16em;text-transform:uppercase;color:var(--slate)}
.contribute-doc a{color:inherit}

/* ---------- hero (framed image + credit, then copy — as on /about/) ---------- */
.contribute-doc .hero{background:var(--deep);color:var(--paper);padding:0 0 88px}
.contribute-doc .hero-top-pad{padding-top:26px}
.contribute-doc .slot{position:relative;display:block;width:100%;overflow:hidden;background:var(--ink)}
.contribute-doc .slot .img{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity .7s ease}
.contribute-doc .slot.is-filled .img{opacity:1}
.contribute-doc .slot.is-filled::after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(18,32,58,.78) 0%,rgba(18,32,58,.12) 42%,rgba(18,32,58,0) 70%)}
.contribute-doc .slot-label{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:16px 18px;font-family:var(--mono);font-size:0.6875rem;line-height:1.5;color:var(--paper)}
.contribute-doc .slot-label b{display:block;font-weight:400;font-size:0.625rem;letter-spacing:.14em;text-transform:uppercase;color:var(--slate);margin-bottom:5px}
.contribute-doc .slot-label .credit{display:block;margin-top:6px;font-size:0.5938rem;letter-spacing:.06em;color:rgba(245,239,228,.6)}
.contribute-doc .hero-frame{height:clamp(320px,54vh,540px);margin-bottom:36px}
.contribute-doc .hero-copy{position:relative;z-index:3}
.contribute-doc .hero h1{font-family:var(--display);font-weight:300;font-size:clamp(42px,7.4vw,92px);line-height:.96;letter-spacing:-.028em;max-width:16ch}
.contribute-doc .hero h1 em{font-style:italic;color:var(--rust);font-weight:400}
.contribute-doc .promise{margin-top:32px;font-size:1.25rem;line-height:1.55;max-width:38ch;color:var(--paper)}
.contribute-doc .promise b{font-weight:400;border-bottom:2px solid var(--rust);padding-bottom:2px}
.contribute-doc .paths{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:56px;max-width:860px}
.contribute-doc .path{display:block;text-decoration:none;padding:28px 26px 26px;border:1px solid rgba(245,239,228,.2);transition:background .25s ease,border-color .25s ease}
.contribute-doc .path:hover{background:rgba(245,239,228,.06);border-color:rgba(245,239,228,.42)}
.contribute-doc .path h2{font-family:var(--display);font-weight:300;font-size:1.625rem;letter-spacing:-.012em;color:var(--paper)}
.contribute-doc .path p{margin-top:12px;font-size:0.9688rem;color:rgba(245,239,228,.72)}
.contribute-doc .path .go{display:block;margin-top:20px;font-family:var(--mono);font-size:0.6875rem;letter-spacing:.16em;text-transform:uppercase;color:var(--rust)}

/* ---------- three ways ---------- */
.contribute-doc .ways{padding:96px 0 8px}
.contribute-doc .ways-head{max-width:44ch;margin-bottom:48px}
.contribute-doc .ways-head h2{margin-top:16px;font-family:var(--display);font-weight:300;font-size:clamp(28px,3.8vw,40px);line-height:1.14;letter-spacing:-.02em}
.contribute-doc .way-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.contribute-doc .way{position:relative;padding:30px 26px 28px;background:#fff;border:1px solid rgba(28,46,74,.14)}
.contribute-doc .way.pick{border-color:var(--rust);border-width:1.5px}
.contribute-doc .way .pin{position:absolute;top:-11px;left:24px;background:var(--rust);color:var(--paper);font-family:var(--mono);font-size:0.5938rem;letter-spacing:.16em;text-transform:uppercase;padding:5px 10px}
.contribute-doc .way h3{font-family:var(--display);font-weight:400;font-size:1.3125rem;margin-bottom:12px}
.contribute-doc .way p{font-size:0.9688rem;color:rgba(28,46,74,.8)}

/* ---------- form + live card ---------- */
.contribute-doc .give{padding:88px 0 96px}
.contribute-doc .give-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:64px;align-items:start}
.contribute-doc .form-head h2{margin-top:16px;font-family:var(--display);font-weight:300;font-size:clamp(28px,3.8vw,40px);line-height:1.14;letter-spacing:-.02em;margin-bottom:14px}
.contribute-doc .form-head p{max-width:46ch;color:rgba(28,46,74,.82);font-size:1.0312rem}

.contribute-doc fieldset{border:0;margin-top:36px;padding:0;min-width:0}
.contribute-doc legend{font-family:var(--mono);font-size:0.6562rem;letter-spacing:.16em;text-transform:uppercase;color:var(--rust);margin-bottom:20px}
.contribute-doc .field{margin-bottom:22px}
.contribute-doc .field label{display:block;font-size:0.9062rem;font-weight:400;margin-bottom:7px}
.contribute-doc .field .hint{display:block;font-size:0.8125rem;color:var(--slate);margin-top:6px;font-weight:300}
.contribute-doc .field input[type=text],.contribute-doc .field input[type=email],.contribute-doc .field textarea{
  width:100%;padding:13px 14px;font-family:var(--body);font-size:1rem;font-weight:300;
  color:var(--ink);background:#fff;border:1px solid rgba(28,46,74,.22);border-radius:0;
  transition:border-color .2s ease,box-shadow .2s ease;
}
.contribute-doc .field textarea{min-height:96px;resize:vertical}
.contribute-doc .field input:focus,.contribute-doc .field textarea:focus{outline:0;border-color:var(--rust);box-shadow:0 0 0 3px rgba(193,77,46,.14)}
.contribute-doc .row{display:grid;grid-template-columns:1fr 1fr;gap:18px}

/* upload */
.contribute-doc .drop{position:relative;display:block;border:1.5px dashed rgba(28,46,74,.34);background:var(--mount);padding:34px 24px;text-align:center;cursor:pointer;transition:border-color .2s ease,background .2s ease}
.contribute-doc .drop:hover,.contribute-doc .drop.over,.contribute-doc .drop:focus-within{border-color:var(--rust);background:#efe6d6}
.contribute-doc .drop strong{display:block;font-family:var(--display);font-weight:400;font-size:1.1875rem;margin-bottom:6px}
.contribute-doc .drop span{font-size:0.875rem;color:rgba(28,46,74,.7)}
.contribute-doc .drop input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.contribute-doc .filelist{margin-top:12px;font-family:var(--mono);font-size:0.75rem;color:var(--rust)}
.contribute-doc .alt-send{margin-top:14px;font-size:0.8438rem;color:var(--slate)}
.contribute-doc .alt-send a{color:var(--rust);border-bottom:1px solid rgba(193,77,46,.4)}

/* agreement */
.contribute-doc .agree{margin-top:34px;padding:22px 24px;background:#fff;border:1px solid rgba(28,46,74,.14)}
.contribute-doc .agree .plain{font-size:0.9375rem;color:rgba(28,46,74,.86);margin-bottom:16px}
.contribute-doc .check{display:flex;gap:12px;align-items:flex-start;font-size:0.9375rem;cursor:pointer}
.contribute-doc .check input{margin-top:4px;width:17px;height:17px;accent-color:var(--rust);flex:none}
.contribute-doc details{margin-top:16px}
.contribute-doc summary{font-family:var(--mono);font-size:0.6875rem;letter-spacing:.14em;text-transform:uppercase;color:var(--slate);cursor:pointer}
.contribute-doc summary:hover{color:var(--rust)}
.contribute-doc details p{margin-top:14px;font-size:0.875rem;font-style:italic;color:rgba(28,46,74,.78);line-height:1.7}

.contribute-doc .send{margin-top:30px;display:inline-block;padding:18px 40px;background:var(--rust);color:var(--paper);border:0;font-family:var(--mono);font-size:0.75rem;letter-spacing:.16em;text-transform:uppercase;cursor:pointer;transition:background .2s ease}
.contribute-doc .send:hover{background:#a63f24}

/* live archive card — the signature */
.contribute-doc .preview{position:sticky;top:36px}
.contribute-doc .preview > .tag{display:block;margin-bottom:16px}
.contribute-doc .card{background:var(--ink);color:var(--paper);padding:14px 14px 0}
.contribute-doc .card .plate{position:relative;aspect-ratio:4/3;background:var(--deep);border:1.5px dashed rgba(245,239,228,.28);display:flex;align-items:center;justify-content:center;text-align:center;padding:22px}
.contribute-doc .card .plate p{font-family:var(--mono);font-size:0.6875rem;line-height:1.6;color:rgba(245,239,228,.5)}
.contribute-doc .card .plate.has{border-style:solid;border-color:rgba(245,239,228,.16);background:linear-gradient(150deg,#24406b,#12203A 60%,rgba(193,77,46,.35))}
.contribute-doc .card .plate.has p{display:none}
.contribute-doc .onframe{position:absolute;left:0;right:0;bottom:0;background:rgba(193,77,46,.92);color:var(--paper);font-family:var(--mono);font-size:0.625rem;letter-spacing:.1em;padding:8px 11px;text-align:left}
.contribute-doc .card .meta{padding:16px 4px 18px}
.contribute-doc .card .meta .ttl{font-family:var(--display);font-weight:400;font-size:1.1875rem;line-height:1.3}
.contribute-doc .card .meta .sub{margin-top:8px;font-family:var(--mono);font-size:0.6562rem;letter-spacing:.12em;text-transform:uppercase;color:var(--slate)}
.contribute-doc .preview .note{margin-top:16px;font-size:0.875rem;color:rgba(28,46,74,.72);line-height:1.6}

/* ---------- next ---------- */
.contribute-doc .next{background:var(--ink);color:var(--paper);padding:96px 0}
.contribute-doc .next .tag{color:var(--rust);display:block;margin-bottom:36px}
.contribute-doc .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:36px;counter-reset:s}
.contribute-doc .step{counter-increment:s}
.contribute-doc .step::before{content:counter(s,decimal-leading-zero);display:block;font-family:var(--display);font-size:2.125rem;font-weight:300;color:var(--rust);margin-bottom:14px}
.contribute-doc .step p{color:rgba(245,239,228,.8);font-size:1rem}

/* ---------- wall ---------- */
.contribute-doc .wall{padding:88px 0}
.contribute-doc .wall h2{font-family:var(--display);font-weight:300;font-size:clamp(26px,3.4vw,36px);line-height:1.18;letter-spacing:-.018em;max-width:26ch}
.contribute-doc .wall .lede{margin-top:16px;color:rgba(28,46,74,.78);max-width:48ch}
.contribute-doc .names{display:flex;flex-wrap:wrap;gap:10px;margin-top:40px}
.contribute-doc .names span{font-family:var(--mono);font-size:0.7188rem;letter-spacing:.06em;padding:9px 14px;background:#fff;border:1px solid rgba(28,46,74,.14);color:rgba(28,46,74,.82)}

/* ---------- oral history ---------- */
.contribute-doc .oral{background:var(--deep);color:var(--paper);padding:104px 0 112px}
.contribute-doc .oral-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.contribute-doc .oral h2{font-family:var(--display);font-weight:300;font-size:clamp(32px,4.8vw,54px);line-height:1.04;letter-spacing:-.024em}
.contribute-doc .oral h2 em{font-style:italic;color:var(--rust)}
.contribute-doc .oral .kick{color:var(--rust)}
.contribute-doc .oral p{margin-top:24px;color:rgba(245,239,228,.8);font-size:1.0938rem}
.contribute-doc .oral .cta{display:inline-block;margin-top:34px;padding:17px 34px;border:1px solid rgba(245,239,228,.4);color:var(--paper);text-decoration:none;font-family:var(--mono);font-size:0.75rem;letter-spacing:.16em;text-transform:uppercase;transition:background .2s ease,border-color .2s ease}
.contribute-doc .oral .cta:hover{background:rgba(245,239,228,.08);border-color:var(--paper)}
.contribute-doc .tape{aspect-ratio:4/3;border:1.5px dashed rgba(245,239,228,.3);display:flex;align-items:center;justify-content:center;text-align:center;padding:28px}
.contribute-doc .tape p{font-family:var(--mono);font-size:0.6875rem;line-height:1.6;color:rgba(245,239,228,.55);margin:0}

.contribute-doc :focus-visible{outline:2px solid var(--rust);outline-offset:3px}
@media (prefers-reduced-motion:reduce){.contribute-doc *{transition:none!important}}
@media (max-width:940px){
  .contribute-doc .wrap{padding:0 20px}
  .contribute-doc .paths,.contribute-doc .way-grid,.contribute-doc .give-grid,.contribute-doc .steps,.contribute-doc .oral-grid{grid-template-columns:1fr}
  .contribute-doc .give-grid{gap:44px}
  .contribute-doc .preview{position:static;order:-1}
  .contribute-doc .row{grid-template-columns:1fr}
}
