/*
Theme Name: TTLP Civic
Theme URI: https://texastaxlit.org
Author: Texas Tax Literacy Project
Description: Custom theme for the Texas Tax Literacy Project: a 501(c)(3) nonprofit taxpayer clinic. Includes a one-click page installer (Appearance > TTLP Site Setup), the key dates calendar, and Friday consultation booking.
Version: 1.4.6
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
Text Domain: ttlp-civic
*/

/* Layout: a civic ledger. Masthead + one ruled column; content organized by the visitor's problem, not by program name. */
:root{
  --ground:#F3F4F8;      /* cool limestone, biased toward the ink */
  --paper:#FFFFFF;
  --ink:#22244A;         /* blue-violet: authority, calm */
  --ink-soft:#4A4C70;
  --muted:#5F6178;
  --rule:#D6D8E4;
  --clay:#B5532C;        /* deadlines only */
  --clay-wash:#F8E9E2;
  --sage:#4F6E58;        /* reassurance, consultation days */
  --sage-wash:#E4EEE6;
  --ink-wash:#E7E8F3;
  --on-ink:#FFFFFF;
  --f-display:"Young Serif", Georgia, "Times New Roman", serif;
  --f-body:"Instrument Sans", "Segoe UI", system-ui, -apple-system, sans-serif;
  --f-mono:"DM Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;
  --s1:.5rem; --s2:1rem; --s3:1.5rem; --s4:2.5rem; --s5:4rem;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --ground:#14152A; --paper:#1C1E38; --ink:#E6E7F7; --ink-soft:#C3C5E4; --muted:#A3A5C2; --rule:#33365A;
  --clay:#EE8A5F; --clay-wash:#3A2420; --sage:#8DBB98; --sage-wash:#1F3326; --ink-wash:#262946; --on-ink:#14152A; color-scheme:dark}}
:root[data-theme="dark"]{
  --ground:#14152A; --paper:#1C1E38; --ink:#E6E7F7; --ink-soft:#C3C5E4; --muted:#A3A5C2; --rule:#33365A;
  --clay:#EE8A5F; --clay-wash:#3A2420; --sage:#8DBB98; --sage-wash:#1F3326; --ink-wash:#262946; --on-ink:#14152A; color-scheme:dark}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{background:var(--ground);color:var(--ink);font:400 1.0625rem/1.65 var(--f-body);-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--ground)}
a{color:var(--ink);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:3px solid var(--clay);outline-offset:3px;border-radius:2px}
.wrap{max-width:72rem;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
@media (min-width:700px){.wrap{padding-left:max(40px,env(safe-area-inset-left,0px));padding-right:max(40px,env(safe-area-inset-right,0px))}}

/* masthead */
header.mast{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--ground);border-bottom:2px solid var(--ink)}
.mast .wrap{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);padding-block:.9rem}
.brand{font:500 .78rem/1.2 var(--f-mono);letter-spacing:.22em;text-transform:uppercase;text-decoration:none;color:var(--ink)}
.brand small{display:block;letter-spacing:.08em;color:var(--muted);text-transform:none;font-family:var(--f-body);font-size:.78rem;margin-top:2px}
nav.primary{display:flex;flex-wrap:wrap;gap:.25rem 1.25rem;align-items:center}
nav.primary a{text-decoration:none;color:var(--muted);font-size:.95rem;padding:.35rem 0;border-bottom:2px solid transparent}
nav.primary a[aria-current="page"]{color:var(--ink);border-color:var(--clay)}
nav.primary a:hover{color:var(--ink)}
.menu-btn{display:none;font:500 .8rem var(--f-mono);letter-spacing:.12em;text-transform:uppercase;background:none;border:1.5px solid var(--ink);color:var(--ink);padding:.5rem .8rem;border-radius:999px;cursor:pointer}
@media (max-width:900px){
  .menu-btn{display:inline-block}
  nav.primary{display:none;position:absolute;left:0;right:0;top:100%;background:var(--ground);border-bottom:2px solid var(--ink);flex-direction:column;align-items:stretch;gap:0;padding:.5rem max(16px,env(safe-area-inset-right,0px)) 1rem max(16px,env(safe-area-inset-left,0px))}
  nav.primary.open{display:flex}
  nav.primary a{padding:.7rem 0;border-bottom:1px solid var(--rule)}
}

/* type */
.eyebrow{font:500 .75rem/1.4 var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--clay)}
.eyebrow.ink{color:var(--ink-soft)}
h1,h2,h3{font-family:var(--f-display);font-weight:400;line-height:1.12;text-wrap:balance;margin:0}
h1{font-size:clamp(2.4rem,6vw,4.4rem);letter-spacing:-.01em}
h1 em{font-style:italic;font-family:var(--f-display)}
h2{font-size:clamp(1.7rem,3.4vw,2.4rem)}
h3{font-size:1.35rem}
p{margin:0}
.lede{font-size:1.2rem;color:var(--ink-soft);max-width:38em}
.prose{max-width:40em;display:grid;gap:var(--s2)}
.prose ul,.prose ol{margin:0;padding-left:1.2rem;display:grid;gap:.4rem}
.cite{font:400 .78rem/1.5 var(--f-mono);color:var(--muted);letter-spacing:.02em}
.cite a{color:var(--muted)}
.note{font-size:.92rem;color:var(--muted)}
.mono{font-family:var(--f-mono)}

/* sections */
main{display:block}
.view{padding-block:var(--s4) var(--s5)}
.section{display:grid;gap:var(--s3);padding-block:var(--s4);border-top:1px solid var(--rule)}
.section:first-child{border-top:0;padding-top:0}
.head{display:grid;gap:.6rem}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:.6rem;font:600 1rem var(--f-body);text-decoration:none;border-radius:999px;padding:.95rem 1.5rem;border:2px solid var(--ink);cursor:pointer}
.btn.primary{background:var(--ink);color:var(--on-ink)}
.btn.primary:hover{background:var(--ink-soft);border-color:var(--ink-soft)}
.btn.ghost{background:transparent;color:var(--ink)}
.btn.ghost:hover{background:var(--ink-wash)}
.cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s3)}
.cta-meta{display:grid;gap:2px}
.cta-meta .mono{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase}
.cta-meta span:last-child{font-size:.92rem;color:var(--muted)}

/* hero */
.hero{display:grid;gap:var(--s3);padding-block:var(--s3) var(--s4)}
.hero h1{max-width:12em}
.alert{display:grid;grid-template-columns:auto 1fr;gap:.25rem 1rem;background:var(--clay-wash);border:1px solid var(--clay);border-radius:6px;padding:1rem 1.2rem;max-width:52rem}
.alert .tag{grid-row:span 2;font:500 .72rem/1 var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--paper);background:var(--clay);padding:.45rem .55rem;border-radius:3px;align-self:start}
.alert p{font-size:.98rem}
@media (max-width:520px){.alert{grid-template-columns:1fr}.alert .tag{grid-row:auto;justify-self:start}}

/* paths */
.paths{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:var(--s3)}
.path{display:grid;gap:.8rem;align-content:start;background:var(--paper);border:1px solid var(--rule);border-top:4px solid var(--ink);padding:1.6rem 1.6rem 1.4rem;text-decoration:none;color:var(--ink);border-radius:2px;transition:transform .15s ease, box-shadow .15s ease}
.path.prep{border-top-color:var(--sage)}
.path.letter{border-top-color:var(--clay)}
.path:hover{transform:translateY(-2px);box-shadow:0 10px 30px -18px rgba(20,22,60,.45)}
@media (prefers-reduced-motion:reduce){.path{transition:none}.path:hover{transform:none}}
.path h3{font-size:1.55rem}
.path p{color:var(--muted);min-width:0}
.path .go{font-weight:600;margin-top:.4rem}
.path .eyebrow{color:var(--ink-soft)}

/* ledger figures */
.figures{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,13rem),1fr));border-top:1px solid var(--ink);border-bottom:1px solid var(--ink)}
.fig{padding:1.2rem 1rem 1.2rem 0;display:grid;gap:.3rem;border-right:1px solid var(--rule)}
.fig:last-child{border-right:0}
.fig b{font:400 2rem/1 var(--f-display)}
.fig span{font-size:.92rem;color:var(--muted)}
@media (max-width:600px){.fig{border-right:0;border-bottom:1px solid var(--rule)}.fig:last-child{border-bottom:0}}

/* tables */
.table-wrap{overflow-x:auto;border:1px solid var(--rule);background:var(--paper);border-radius:2px}
table{border-collapse:collapse;width:100%;font-size:.97rem}
th,td{text-align:left;padding:.75rem 1rem;border-bottom:1px solid var(--rule);vertical-align:top}
th{font:500 .74rem/1.3 var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);background:var(--ink-wash)}
tr:last-child td{border-bottom:0}
td.num{font-variant-numeric:tabular-nums;font-family:var(--f-mono);white-space:nowrap}
.deadline{color:var(--clay);font-weight:600}

/* two-col lists */
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr));gap:var(--s3)}
.box{background:var(--paper);border:1px solid var(--rule);padding:1.3rem 1.4rem;display:grid;gap:.7rem;align-content:start;border-radius:2px;min-width:0}
.box ul{margin:0;padding-left:1.1rem;display:grid;gap:.35rem}
.box.yes h3::before{content:"✓ ";color:var(--sage)}
.box.no h3::before{content:"✕ ";color:var(--clay)}

/* checklist */
.check{list-style:none;padding:0;margin:0;display:grid;gap:0;border-top:1px solid var(--rule)}
.check li{display:grid;grid-template-columns:1.6rem 1fr;gap:.6rem;padding:.75rem 0;border-bottom:1px solid var(--rule)}
.check input{width:1.15rem;height:1.15rem;margin-top:.25rem;accent-color:var(--sage)}
.check label{cursor:pointer}

/* steps */
.steps{counter-reset:s;list-style:none;padding:0;margin:0;display:grid;gap:var(--s2)}
.steps li{counter-increment:s;display:grid;grid-template-columns:3rem 1fr;gap:1rem;align-items:start}
.steps li::before{content:counter(s,decimal-leading-zero);font:500 .85rem/1 var(--f-mono);color:var(--clay);border:1px solid var(--clay);border-radius:999px;width:2.6rem;height:2.6rem;display:grid;place-items:center}
.steps b{display:block;font-weight:600}

/* calendar */
.cal-shell{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:var(--s3);align-items:start}
@media (max-width:900px){.cal-shell{grid-template-columns:1fr}}
.cal{background:var(--paper);border:1px solid var(--rule);border-radius:2px;padding:1rem}
.cal-top{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.8rem}
.cal-top h3{font-size:1.5rem}
.cal-nav{display:flex;gap:.4rem}
.cal-nav button{font:500 1rem var(--f-mono);width:2.5rem;height:2.5rem;border-radius:999px;border:1.5px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer}
.cal-nav button:disabled{opacity:.3;cursor:not-allowed}
.cal-nav button:not(:disabled):hover{background:var(--ink-wash)}
.grid7{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}
.dow{font:500 .7rem var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);text-align:center;padding:.3rem 0}
.day{min-height:4.4rem;border:1px solid var(--rule);background:var(--ground);padding:.3rem;display:flex;flex-direction:column;gap:3px;font-size:.78rem;text-align:left;color:var(--ink);font-family:var(--f-body);cursor:default;min-width:0}
.day.empty{background:transparent;border-color:transparent}
.day .n{font:500 .78rem var(--f-mono);font-variant-numeric:tabular-nums}
.day.fri{background:var(--sage-wash)}
.day.has{cursor:pointer}
.day.has:hover{outline:2px solid var(--ink);outline-offset:-2px}
.day.sel{outline:2px solid var(--clay);outline-offset:-2px}
.day.today .n{background:var(--ink);color:var(--on-ink);border-radius:999px;padding:0 .35rem;align-self:flex-start}
.pip{display:block;height:5px;border-radius:999px;background:var(--ink)}
.pip.deadline{background:var(--clay)}
.pip.program{background:var(--sage)}
.pip.volunteer{background:var(--ink-soft)}
@media (max-width:520px){.day{min-height:3rem;padding:.2rem}.day .n{font-size:.7rem}}
.legend{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;margin-top:.8rem;font-size:.85rem;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:.4rem}
.legend i{display:inline-block;width:14px;height:6px;border-radius:999px}
.filters{display:flex;flex-wrap:wrap;gap:.5rem}
.chip{font:500 .8rem var(--f-body);border:1.5px solid var(--rule);background:var(--paper);color:var(--ink);padding:.45rem .9rem;border-radius:999px;cursor:pointer}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}
.agenda{display:grid;gap:0;border-top:2px solid var(--ink);max-height:38rem;overflow:auto}
.ev{display:grid;grid-template-columns:5.6rem 1fr;gap:.8rem;padding:.9rem .2rem;border-bottom:1px solid var(--rule)}
.ev.hl{background:var(--clay-wash)}
.ev .d{font:500 .78rem/1.35 var(--f-mono);color:var(--ink-soft);font-variant-numeric:tabular-nums}
.ev .d b{display:block;font-size:1.25rem;font-family:var(--f-display);font-weight:400;color:var(--ink)}
.ev h4{margin:0 0 .2rem;font-size:1rem;font-weight:600}
.ev p{font-size:.92rem;color:var(--muted)}
.badges{display:flex;flex-wrap:wrap;gap:.35rem;margin:.35rem 0}
.badge{font:500 .66rem/1 var(--f-mono);letter-spacing:.1em;text-transform:uppercase;padding:.3rem .45rem;border-radius:3px;border:1px solid var(--rule);color:var(--ink-soft)}
.badge.deadline{border-color:var(--clay);color:var(--clay)}
.badge.status{background:var(--ink-wash);border-color:transparent}

/* booking band */
.band{background:var(--ink);color:var(--on-ink)}
.band .wrap{padding-block:var(--s4);display:grid;gap:var(--s2)}
.band h2{color:var(--on-ink)}
.band p{color:var(--on-ink);opacity:.85;max-width:40em}
.band .btn{background:var(--on-ink);color:var(--ink);border-color:var(--on-ink)}
.band .btn:hover{opacity:.9}
.band .eyebrow{color:var(--on-ink);opacity:.75}

footer.foot{border-top:2px solid var(--ink)}
footer.foot .wrap{padding-block:var(--s3) var(--s4);display:grid;gap:var(--s2)}
.foot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,15rem),1fr));gap:var(--s3)}
.foot small{color:var(--muted);font-size:.85rem;display:block;max-width:60em}
.copy{display:inline-flex;align-items:center;gap:.5rem}
.copy button{font:500 .72rem var(--f-mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--rule);background:var(--paper);color:var(--ink);padding:.3rem .5rem;border-radius:3px;cursor:pointer}

/* faq */
details{border-bottom:1px solid var(--rule);padding:.9rem 0}
details:first-of-type{border-top:1px solid var(--rule)}
summary{cursor:pointer;font-weight:600;list-style:none;display:flex;justify-content:space-between;gap:1rem}
summary::after{content:"+";font-family:var(--f-mono);color:var(--clay)}
details[open] summary::after{content:"–"}
details > div{padding-top:.6rem;display:grid;gap:.6rem;max-width:42em;color:var(--ink-soft)}
.res-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,17rem),1fr));gap:0;border-top:1px solid var(--rule)}
.res{display:grid;gap:.25rem;padding:1rem 1rem 1rem 0;border-bottom:1px solid var(--rule)}
.res a{font-weight:600}
.res span{font-size:.9rem;color:var(--muted)}

.brand{display:flex;align-items:center;gap:.7rem}
.brand .mark{width:48px;height:48px;flex:none;border-radius:50%}
.hero{grid-template-columns:minmax(0,1fr)}
.hero-text{display:grid;gap:var(--s3);min-width:0}
.hero .seal{display:none}

.about-seal{width:min(16rem,70vw);height:auto}

/* WordPress adjustments */
.admin-bar header.mast{top:calc(32px + env(safe-area-inset-top,0px))}
@media (max-width:782px){.admin-bar header.mast{top:calc(46px + env(safe-area-inset-top,0px))}}
.screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px)}
.skip-link:focus{position:fixed;left:16px;top:16px;z-index:100;background:var(--paper);color:var(--ink);padding:.6rem 1rem;clip:auto;width:auto;height:auto}
.wp-block-html{margin:0}
@media (min-width:901px){nav.primary{gap:.25rem .9rem}nav.primary a{font-size:.9rem;white-space:nowrap}}
