/*
Theme Name:   Charismatic
Theme URI:    https://charismaticadult.com
Description:  A quiet, fast, hand-built theme for Charismatic Adult. No page builder, no framework, two web fonts, one column of type that stays readable. Pairs with the CA Core plugin.
Author:       Charismatic Adult
Version:      0.1.0
Requires PHP: 8.0
License:      GNU General Public License v2 or later
License URI:  https://www.gnu.org/licenses/gpl-2.0.html
Text Domain:  charismatic
*/

/* ==========================================================================
   Tokens
   The arch is the mark: a doorway, a shelter, and the one structural form
   that gets stronger the more weight you put on it.
   ========================================================================== */

:root{
  --green:#1F4D40;
  --green-mid:#2F6B59;
  --green-soft:#E3EDE8;
  --brass:#8C6224;
  --brass-soft:#F2EAD9;
  --paper:#F8F7F2;
  --surface:#FFFFFF;
  --sage:#EDF1EC;
  --ink:#151C19;
  --muted:#57635C;
  --line:#DCE3DC;
  --line-soft:#E9EEE8;
  --danger:#A2402F;

  --display:"Newsreader",Georgia,"Times New Roman",serif;
  --body:"Karla","Helvetica Neue",Arial,sans-serif;

  --measure:34rem;
  --wide:70rem;
  --radius:2px;
}

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --green:#79BCA3;
    --green-mid:#5FA88D;
    --green-soft:#1C2C26;
    --brass:#DCAB62;
    --brass-soft:#28211592;
    --paper:#101613;
    --surface:#18201C;
    --sage:#151D19;
    --ink:#E7ECE8;
    --muted:#95A19B;
    --line:#2C3833;
    --line-soft:#222B26;
    --danger:#E08B78;
  }
}
:root[data-theme="dark"]{
  --green:#79BCA3;
  --green-mid:#5FA88D;
  --green-soft:#1C2C26;
  --brass:#DCAB62;
  --brass-soft:#282115;
  --paper:#101613;
  --surface:#18201C;
  --sage:#151D19;
  --ink:#E7ECE8;
  --muted:#95A19B;
  --line:#2C3833;
  --line-soft:#222B26;
  --danger:#E08B78;
}

/* ==========================================================================
   Base
   ========================================================================== */

*,*::before,*::after{box-sizing:border-box}

html{-webkit-text-size-adjust:100%}

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}

img,svg,video{max-width:100%;height:auto}

a{color:var(--green);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}

:focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:var(--radius)}

.skip{
  position:absolute;left:-9999px;top:0;background:var(--green);color:var(--paper);
  padding:10px 16px;z-index:100;
}
.skip:focus{left:0}

h1,h2,h3,h4{font-family:var(--display);font-weight:500;line-height:1.15;letter-spacing:-.015em;margin:0 0 .6em;text-wrap:balance}
h1{font-size:clamp(2.2rem,6vw,3.3rem);line-height:1.05;letter-spacing:-.022em}
h2{font-size:clamp(1.6rem,3.8vw,2.1rem)}
h3{font-size:1.24rem;font-weight:600}
p{margin:0 0 1.05em}
blockquote{margin:0;font-family:var(--display);font-style:italic;font-size:1.16rem;line-height:1.5}

.eyebrow{
  font-family:var(--body);font-size:11.5px;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--brass);margin:0 0 14px;
}

/* ==========================================================================
   Layout
   ========================================================================== */

.wrap{width:100%;max-width:var(--wide);margin-inline:auto;padding-inline:22px}
.col{max-width:var(--measure)}
.col-wide{max-width:52rem}
main{display:block}
section{padding-block:clamp(48px,7vw,86px)}
.rule{border:0;border-top:1px solid var(--line);margin:0}

/* ==========================================================================
   Header / footer
   ========================================================================== */

.site-head{
  border-bottom:1px solid var(--line);
  background:var(--paper);
  position:sticky;top:0;z-index:40;
}
.site-head .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:14px}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink);flex:none}
.brand svg{display:block;width:30px;height:30px;color:var(--green)}
.brand b{font-family:var(--display);font-weight:500;font-size:1.16rem;letter-spacing:-.012em}
.nav{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.nav a{font-size:15px;text-decoration:none;color:var(--muted)}
.nav a:hover,.nav a[aria-current="page"]{color:var(--ink)}
.nav .btn{color:var(--paper)}

.site-foot{
  border-top:1px solid var(--line);background:var(--sage);
  padding-block:44px;margin-top:60px;font-size:15px;color:var(--muted);
}
.site-foot .cols{display:flex;gap:36px;flex-wrap:wrap;justify-content:space-between}
.site-foot a{color:var(--muted)}
.site-foot .fine{margin-top:26px;font-size:13.5px;max-width:38em}

/* ==========================================================================
   Buttons + forms
   ========================================================================== */

.btn{
  display:inline-block;background:var(--green);color:var(--paper);
  font-family:var(--body);font-size:15px;font-weight:600;
  padding:12px 22px;border:1px solid var(--green);border-radius:var(--radius);
  text-decoration:none;cursor:pointer;line-height:1.3;
}
.btn:hover{background:var(--green-mid);border-color:var(--green-mid)}
.btn-quiet{background:transparent;color:var(--green)}
.btn-quiet:hover{background:var(--green-soft);color:var(--green)}

.field{margin-bottom:26px}
.field label{display:block;font-weight:700;font-size:16.5px;margin-bottom:3px}
.field .hint{display:block;font-size:14.5px;color:var(--muted);font-style:italic;margin-bottom:9px;line-height:1.5}
.field input[type=text],.field input[type=email],.field textarea,.field select{
  width:100%;font-family:var(--body);font-size:16.5px;line-height:1.55;
  padding:11px 13px;background:var(--surface);color:var(--ink);
  border:1px solid var(--line);border-radius:var(--radius);
}
.field textarea{min-height:118px;resize:vertical}
.field input:focus,.field textarea:focus{border-color:var(--green);outline:none;box-shadow:0 0 0 3px var(--green-soft)}
.check{display:flex;gap:10px;align-items:flex-start;font-size:15.5px;line-height:1.5;margin-bottom:14px}
.check input{margin-top:4px;flex:none}
.hp{position:absolute;left:-9999px}

.notice{
  padding:14px 16px;border-left:3px solid var(--green);background:var(--green-soft);
  margin-bottom:26px;font-size:15.5px;
}
.notice-bad{border-left-color:var(--danger);background:var(--brass-soft)}

/* Nudge chips on the story form */
.nudges{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.nudges button{
  font-family:var(--body);font-size:13.5px;color:var(--muted);cursor:pointer;
  background:transparent;border:1px dashed var(--line);border-radius:var(--radius);
  padding:6px 10px;line-height:1.3;
}
.nudges button:hover{border-color:var(--green);color:var(--green)}

/* ==========================================================================
   Home
   ========================================================================== */

.hero{padding-block:clamp(56px,9vw,110px) clamp(40px,6vw,72px)}
.hero h1{margin-bottom:20px}
.hero .lede{font-family:var(--display);font-size:clamp(1.12rem,2.4vw,1.35rem);line-height:1.5;color:var(--muted);max-width:32em}
.hero .cta{display:flex;gap:14px;flex-wrap:wrap;margin-top:30px;align-items:center}
.hero .arch{color:var(--green);width:74px;height:74px;margin-bottom:26px;display:block}

.defn{
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  padding-block:26px;max-width:44rem;
}
.defn cite{display:block;font-style:normal;font-size:12.5px;letter-spacing:.05em;color:var(--muted);margin-top:12px}

.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}
.card{
  background:var(--surface);border:1px solid var(--line-soft);
  border-left:3px solid var(--green);padding:22px;
}
.card h3{margin-bottom:6px}
.card p{margin:0;font-size:15.5px;color:var(--muted);line-height:1.58}
.card .n{font-size:11.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--brass);display:block;margin-bottom:8px}
.card--lane{border-left-color:var(--brass);background:var(--brass-soft)}

/* ==========================================================================
   The wall
   ========================================================================== */

.stories{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;margin-top:34px}
.story{
  background:var(--surface);border:1px solid var(--line-soft);
  padding:24px;display:flex;flex-direction:column;gap:10px;
}
.story h3{margin:0;font-size:1.14rem}
.story .who{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--brass);margin:0}
.story p{margin:0;font-size:15.5px;line-height:1.6}
.story .still{
  margin-top:4px;padding-left:13px;border-left:2px solid var(--green);
  color:var(--muted);font-size:15px;
}
.story .by{margin-top:auto;padding-top:12px;font-size:13.5px;color:var(--muted)}
.story .memoriam{font-size:12px;letter-spacing:.06em;color:var(--muted);font-style:italic}

.story-full{max-width:var(--measure)}
.story-full .beat{margin-bottom:30px}
.story-full .beat h2{font-size:1.02rem;font-family:var(--body);font-weight:700;letter-spacing:0;margin-bottom:6px;color:var(--brass)}
.story-full .beat p{font-size:1.06rem;line-height:1.7;margin:0}

/* ==========================================================================
   Letter
   ========================================================================== */

.letter{
  background:var(--surface);border:1px solid var(--line);
  padding:28px;white-space:pre-wrap;font-family:var(--display);
  font-size:1.06rem;line-height:1.72;
}
.routes{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:22px}
.routes a{
  font-size:14.5px;text-decoration:none;padding:8px 14px;
  border:1px solid var(--line);border-radius:var(--radius);color:var(--muted);
}
.routes a[aria-current="true"]{border-color:var(--green);background:var(--green-soft);color:var(--green);font-weight:600}

/* ==========================================================================
   Certificate
   ========================================================================== */

.cert-page{background:var(--sage);min-height:100vh;padding-block:44px}
.cert{
  background:var(--surface);max-width:56rem;margin-inline:auto;
  border:1px solid var(--line);padding:clamp(34px,6vw,72px);text-align:center;
  position:relative;
}
.cert::before{
  content:"";position:absolute;inset:14px;border:1px solid var(--line-soft);pointer-events:none;
}
.cert .arch{width:60px;height:60px;color:var(--green);margin-inline:auto;display:block}
.cert .kicker{font-size:11.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--brass);margin:22px 0 8px}
.cert .name{font-family:var(--display);font-size:clamp(2rem,5.5vw,3rem);font-weight:500;line-height:1.1;margin:0 0 6px;letter-spacing:-.02em}
.cert .place{font-size:14.5px;color:var(--muted);margin:0 0 26px}
.cert .lvl{font-family:var(--display);font-size:1.3rem;margin:0 0 4px}
.cert .desc{max-width:30em;margin:16px auto 30px;color:var(--muted);font-size:15.5px;line-height:1.6}
.cert .foot{
  display:flex;justify-content:center;gap:28px;flex-wrap:wrap;
  border-top:1px solid var(--line-soft);padding-top:22px;margin-top:8px;
  font-size:12.5px;color:var(--muted);letter-spacing:.04em;
}
.cert .foot b{display:block;color:var(--ink);font-weight:600;letter-spacing:0;font-size:14px}
.cert-actions{max-width:56rem;margin:22px auto 0;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}

@media print{
  :root{--paper:#F8F7F2;--surface:#FFFFFF;--ink:#151C19;--muted:#57635C;--line:#DCE3DC;--green:#1F4D40;--green-mid:#2F6B59;--green-soft:#E3EDE8;--brass:#8C6224;--brass-soft:#F2EAD9;--sage:#EDF1EC;color-scheme:light}
  .site-head,.site-foot,.cert-actions,.skip{display:none!important}
  body,.cert-page{background:#fff;color:#151C19;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .cert{border-color:#c9d2c9;box-shadow:none;max-width:100%}
  @page{size:landscape;margin:12mm}
}

/* ==========================================================================
   Prose
   ========================================================================== */

.prose{max-width:var(--measure)}
.prose h2{margin-top:1.8em}
.prose h3{margin-top:1.5em}
.prose ul,.prose ol{padding-left:20px}
.prose li{margin-bottom:7px}
.prose li::marker{color:var(--green)}
.prose blockquote{
  padding-left:18px;border-left:3px solid var(--green);color:var(--muted);margin:1.4em 0;
}

.pagination{display:flex;gap:12px;margin-top:36px;flex-wrap:wrap}
.pagination .page-numbers{padding:8px 13px;border:1px solid var(--line);text-decoration:none;border-radius:var(--radius)}
.pagination .current{background:var(--green);color:var(--paper);border-color:var(--green)}

@media (max-width:560px){
  body{font-size:16.5px}
  .site-head .wrap{flex-wrap:wrap;gap:12px}
  .nav{gap:16px}
  .card,.story{padding:19px}
}

@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
}
