/* Keep It Texas + Save the Town Square. One system, one accent each. System fonts only; no external fonts, images or scripts. */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:84px}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
:root{color-scheme:light dark;
 --bg:#faf7f2;--paper:#fff;--ink:#16222f;--muted:#4a5868;--line:#e1dacd;--accent:#0b5cad;--on-accent:#fff;--soft:#e9f1fa;
 --note-bg:#fff0c2;--note-ink:#4a3600;--ring:#b86e00;--shadow:0 1px 2px rgba(22,34,47,.05),0 6px 18px rgba(22,34,47,.06);--lift:0 2px 4px rgba(22,34,47,.08),0 12px 28px rgba(22,34,47,.12);
 --font:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--mono:ui-monospace,Menlo,Consolas,monospace;--r:16px}
body.sq{--bg:#fcf6ec;--line:#e9dac3;--accent:#a8481a;--soft:#fbebdc}
@media (prefers-color-scheme:dark){
 :root{--bg:#0f1620;--paper:#17212d;--ink:#e8edf3;--muted:#a9b6c4;--line:#2b3848;--accent:#7ab6f2;--on-accent:#0a1320;--soft:#1b2b3d;--note-bg:#3a2f10;--note-ink:#f3e2a6;--ring:#ffc83d;--shadow:none;--lift:0 10px 28px rgba(0,0,0,.45)}
 body.sq{--bg:#18120d;--paper:#241c15;--line:#41332a;--accent:#f0a574;--on-accent:#1a0f08;--soft:#33261b}
}
body{margin:0;background:var(--bg);color:var(--ink);font:1.1875rem/1.65 var(--font);overflow-wrap:break-word;-webkit-font-smoothing:antialiased}
@media (min-width:900px){body{font-size:1.25rem}}
a{color:var(--accent);text-underline-offset:3px}
:focus-visible{outline:3px solid var(--ring);outline-offset:3px;border-radius:6px}
h1,h2,h3{font-family:var(--font);line-height:1.15;letter-spacing:-.012em;margin:1.6em 0 .5em;text-wrap:balance}
h1{font-size:clamp(2rem,6vw,3rem);margin-top:.2em;font-weight:760}
h2{font-size:clamp(1.4rem,3.4vw,1.75rem);font-weight:720}
h3{font-size:1.15rem;font-weight:700}
p,ul,ol{margin:.8em 0}li{margin:.4em 0}
.wrap{max-width:1120px;margin:0 auto;padding:0 20px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;background:var(--paper);color:var(--ink);padding:12px 16px;border-radius:10px;z-index:99}.skip:focus{left:8px}
.kicker{font:700 .875rem var(--font);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0}
.kicker a{color:inherit;text-decoration:none}.kicker a:hover{text-decoration:underline}
.lead{font-size:clamp(1.15rem,3vw,1.4rem);line-height:1.5;color:var(--muted);max-width:36ch;margin:.5em 0 1.3em}

/* top bar */
.earlybar{background:var(--note-bg);color:var(--note-ink);font:600 .875rem/1.4 var(--font)}
.earlybar .wrap{padding-top:5px;padding-bottom:5px}
header.site{position:sticky;top:0;z-index:30;background:var(--paper);border-bottom:1px solid var(--line)}
header.site .bar{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:60px}
.brand{white-space:nowrap;display:flex;align-items:center;gap:10px;min-height:44px;font-weight:760;font-size:1.15rem;color:var(--ink);text-decoration:none;letter-spacing:-.01em}
.logo{width:30px;height:30px;flex:none}
.logo .pg{fill:var(--paper);stroke:var(--ink);stroke-width:3}.logo .ac{stroke:var(--accent);stroke-width:3;stroke-linecap:round;fill:none}
nav.main{display:flex;align-items:center;gap:2px;white-space:nowrap}
nav.main a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:999px;color:var(--ink);font-weight:620;font-size:1rem;text-decoration:none;transition:background .15s}
nav.main a:hover{background:var(--soft)}
nav.main a[aria-current="page"],nav.main a[aria-expanded="true"]{background:var(--soft);color:var(--accent)}
@media (max-width:639px){nav.main .more{display:none}.brand{font-size:1rem}nav.main a{padding:0 10px}}
.progress{position:absolute;left:0;right:0;bottom:-1px;height:3px;pointer-events:none}
.progress i{display:block;height:100%;background:var(--accent);transform:scaleX(0);transform-origin:0 50%}
@keyframes grow{to{transform:scaleX(1)}}
@supports (animation-timeline:scroll()){.progress i{animation:grow linear both;animation-timeline:scroll(root block)}}

/* buttons, chips */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:0 28px;background:var(--accent);color:var(--on-accent);font:700 1.0625rem var(--font);text-decoration:none;border-radius:999px;border:2px solid var(--accent);cursor:pointer;transition:transform .15s,box-shadow .15s}
.btn:hover{box-shadow:var(--lift);transform:translateY(-1px)}.btn:active{transform:scale(.98)}
.btn.alt{background:transparent;color:var(--accent)}
.chip{display:inline-flex;align-items:center;font:700 .8rem/1 var(--font);letter-spacing:.04em;text-transform:uppercase;padding:6px 10px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}
.chip.drafted{background:var(--soft);border-color:transparent;color:var(--accent)}
.chip.coming{border-style:dashed}
.pid{font:700 .9rem var(--mono);color:var(--ink);background:var(--soft);padding:3px 8px;border-radius:6px}

/* home */
.hero{padding:clamp(34px,8vw,84px) 0 clamp(14px,3vw,30px)}
.hero h1{font-size:clamp(2.4rem,8.5vw,4.25rem);max-width:15ch;line-height:1.04}
.hero .lead{margin-bottom:1.4em}
.doors{display:grid;gap:12px;grid-template-columns:repeat(3,1fr);margin:6px 0 30px}
.door{display:flex;flex-direction:column;justify-content:center;gap:2px;min-height:78px;padding:14px 22px;background:var(--paper);border:2px solid var(--line);border-radius:var(--r);color:var(--ink);text-decoration:none;transition:transform .15s,border-color .15s,box-shadow .15s,background .15s}
.door b{font-size:1.125rem;line-height:1.25}.door span{font-size:.975rem;line-height:1.4;color:var(--muted)}
@media (hover:hover){.door:hover{border-color:var(--accent);box-shadow:var(--shadow);transform:translateY(-2px)}}
.door:active{transform:scale(.985)}
.door[aria-pressed="true"],.door[aria-current="page"]{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.door[aria-pressed="true"] span,.door[aria-current="page"] span{color:var(--on-accent)}
.doors.compact{display:flex;flex-wrap:wrap;margin:14px 0 6px}
.doors.compact .door{min-height:48px;padding:0 20px;border-radius:999px;flex-direction:row;align-items:center}
.doors.compact .door span{display:none}.doors.compact .door b{font-size:1rem}
@media (max-width:759px){.doors{grid-template-columns:1fr}}
.shelf{margin:8px 0 36px}
.shelf-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 24px;margin-bottom:14px}
.shelf-head h2{margin:0}
.tools{flex:1 1 280px;max-width:420px}
.tools input{display:block;width:100%;min-height:52px;padding:0 18px 0 46px;font:inherit;font-size:1.0625rem;color:var(--ink);background:var(--paper) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237a8794' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5'/%3E%3Cpath d='M16 16l5 5'/%3E%3C/svg%3E") no-repeat 15px 50%/20px;border:2px solid var(--line);border-radius:999px;transition:border-color .15s}
.tools input:focus{border-color:var(--accent)}
.count{font-size:.9rem;color:var(--muted);min-height:1.4em}
.showmore{margin:18px 0 0;text-align:center}
.showmore a{display:inline-flex;align-items:center;min-height:48px;padding:0 20px;font-weight:700}
.none{padding:22px;text-align:center;color:var(--muted);background:var(--paper);border:1px dashed var(--line);border-radius:var(--r)}
.sqbanner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 24px;padding:20px 24px;margin:0 0 44px;background:#fbebdc;color:#2b1a0e;border-radius:var(--r);text-decoration:none;transition:transform .15s,box-shadow .15s}
.sqbanner b{font-size:1.15rem}.sqbanner span.t{display:block;font-size:1rem;line-height:1.45;color:#5a3a22}
.sqbanner .go{font-weight:700;color:#8a3a10;white-space:nowrap}
@media (hover:hover){.sqbanner:hover{transform:translateY(-2px);box-shadow:var(--lift)}}
@media (prefers-color-scheme:dark){.sqbanner{background:#33261b;color:#f6e7d8}.sqbanner span.t{color:#d9c3ad}.sqbanner .go{color:#f0a574}}

/* cards */
.grid{display:grid;gap:16px;grid-template-columns:1fr}
@media (min-width:640px){.grid{grid-template-columns:repeat(2,1fr)}}
@media (min-width:960px){.grid{grid-template-columns:repeat(3,1fr)}}
.card{display:flex;flex-direction:column;gap:6px;padding:20px 22px;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);color:var(--ink);text-decoration:none;box-shadow:var(--shadow);transition:transform .18s,box-shadow .18s,border-color .18s}
.card .lab{font:700 .8125rem/1.3 var(--font);letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}
.card h3{margin:0;font-size:1.2rem;line-height:1.25}
.card p{margin:0;font-size:1.0625rem;line-height:1.5;color:var(--muted)}
.card .foot{margin-top:auto;padding-top:12px;display:flex;align-items:center;gap:10px;font-size:.9rem;color:var(--muted)}
a.card .foot::after{content:"\2192";margin-left:auto;color:var(--accent);font-size:1.25rem;transition:transform .18s}
@media (hover:hover){a.card:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:var(--lift)}a.card:hover .foot::after{transform:translateX(4px)}}
a.card:active{transform:scale(.985)}
a.card:focus-visible{outline-offset:2px;border-radius:var(--r)}
.card.plain{padding:24px}
.card.plain h3{font-size:1.3rem;margin-bottom:2px}

/* article */
.article{max-width:calc(65ch + 40px);margin:0 auto;padding:clamp(22px,5vw,56px) 20px 28px}
.article h1{font-size:clamp(2rem,6.4vw,2.9rem);line-height:1.1;margin:.25em 0 .1em}
.meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;font-size:.9375rem;color:var(--muted);margin:1em 0 1.8em;padding-bottom:1.2em;border-bottom:1px solid var(--line)}
.body{max-width:65ch}
.body h2{margin-top:1.9em}
.body ol,.body ul{padding-left:1.3em}.body li::marker{color:var(--accent);font-weight:700}
.callout{background:var(--soft);border-left:5px solid var(--accent);padding:14px 20px;border-radius:0 var(--r) var(--r) 0;margin:1.5em 0}
.callout b.t{display:block;font-family:var(--font);margin-bottom:2px}
.banner{background:var(--note-bg);color:var(--note-ink);padding:12px 18px;border-radius:var(--r);font-weight:700;margin:0 0 1.2em;font-size:1rem}
.notice{font-size:.95rem;color:var(--muted);margin-top:1.4em}
details.sources{margin-top:2.4em;border-top:1px solid var(--line);max-width:65ch}
details.sources>summary{cursor:pointer;min-height:52px;display:flex;align-items:center;font-weight:700;color:var(--ink)}
details.sources ul{padding-left:1.2em}details.sources li{font-size:.95rem;overflow-wrap:anywhere}
details.sources .notice{margin:.4em 0}
details.sources a{display:inline-block;min-height:32px}
.prevnext{display:flex;flex-wrap:wrap;gap:6px 22px;margin-top:1.6em;font-size:1rem}
.prevnext a{display:inline-flex;align-items:center;min-height:44px;font-weight:650}
.keep{padding-bottom:56px}
.keep h2{font-size:1.25rem;margin:0 0 14px}
.keep .grid{grid-template-columns:1fr}
@media (min-width:760px){.keep .grid{grid-template-columns:repeat(3,1fr)}}
.linkcard .url{font:600 .85rem var(--mono);color:var(--muted);overflow-wrap:anywhere;margin-top:auto;padding-top:8px}
.two{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));margin:1.2em 0}

/* contents, parts */
.pagehead{padding:clamp(24px,5vw,56px) 0 6px}
.crumb{margin:0 0 6px}.crumb a{display:inline-flex;align-items:center;min-height:44px;font-weight:650}
.part{margin:40px 0 0}
.part h2{margin:0;display:flex;gap:12px;align-items:baseline}
.part h2 .rn{font:700 .9rem var(--mono);color:var(--accent);min-width:2.6em}
.part h2 a{color:var(--ink);text-decoration:none}.part h2 a:hover{text-decoration:underline}
.part .blurb{margin:.3em 0 14px;color:var(--muted);font-size:1.0625rem;max-width:60ch}
.partnav{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 22px;margin:32px 0 56px}
.partnav a{display:inline-flex;align-items:center;min-height:48px;font-weight:700}
main.pad{padding-bottom:56px}

/* drawer */
.toc-side{position:fixed;left:0;top:0;bottom:0;width:min(92vw,400px);z-index:50;background:var(--paper);border-right:1px solid var(--line);overflow:auto;overscroll-behavior:contain;padding:8px 10px 28px;font-size:1rem;transform:translateX(-102%);visibility:hidden;transition:transform .26s cubic-bezier(.2,.8,.2,1),visibility 0s .26s;box-shadow:var(--lift)}
body.toc-open .toc-side{transform:none;visibility:visible;transition:transform .26s cubic-bezier(.2,.8,.2,1)}
.overlay{position:fixed;inset:0;background:rgba(5,10,18,.5);opacity:0;visibility:hidden;transition:opacity .26s,visibility 0s .26s;z-index:40}
body.toc-open .overlay{opacity:1;visibility:visible;transition:opacity .26s}
body.toc-open{overflow:hidden}
.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:4px 6px 4px 12px}
.drawer-head h2{margin:0;font-size:.9rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.drawer-head button{width:48px;height:48px;border:0;border-radius:50%;background:transparent;color:var(--ink);font-size:1.8rem;line-height:1;cursor:pointer}
.drawer-head button:hover{background:var(--soft)}
.toc-side details{border-top:1px solid var(--line)}
.toc-side summary{cursor:pointer;min-height:48px;display:flex;align-items:center;padding:0 12px;font-weight:700;list-style:none}
.toc-side summary::-webkit-details-marker{display:none}
.toc-side summary::before{content:"\25B8";margin-right:10px;color:var(--accent);transition:transform .15s}
.toc-side details[open]>summary::before{transform:rotate(90deg)}
.toc-side ul{list-style:none;margin:0 0 8px;padding:0}.toc-side li{margin:0}
.toc-side li a{display:flex;gap:10px;align-items:baseline;min-height:44px;padding:9px 12px 9px 30px;text-decoration:none;color:var(--ink);font-size:.975rem;line-height:1.3;border-radius:12px}
.toc-side li a:hover{background:var(--soft)}
.toc-side li a[aria-current="page"]{background:var(--accent);color:var(--on-accent);font-weight:700}
.toc-side li a small{font:600 .75rem var(--mono);opacity:.75;flex:none}
.drawer-links{border-top:1px solid var(--line);padding-top:8px}
.drawer-links a{display:flex;align-items:center;min-height:48px;padding:0 12px;font-weight:650;text-decoration:none;border-radius:12px}
.drawer-links a:hover{background:var(--soft)}

/* footer */
footer.site-foot{border-top:1px solid var(--line);padding:26px 0 40px;font-size:.975rem;line-height:1.6;color:var(--muted)}
footer.site-foot p{margin:.4em 0}
footer.site-foot b{color:var(--ink)}
footer.site-foot .links{display:flex;flex-wrap:wrap;gap:0 18px}
footer.site-foot a{display:inline-flex;align-items:center;min-height:44px;color:var(--accent);font-weight:600}

/* Save the Town Square */
.sq .hero{padding-bottom:6px}
.sq .hero h1{max-width:12ch}
.legend{list-style:none;padding:0;margin:22px 0 4px;display:flex;flex-direction:column;gap:10px}
.legend li{margin:0}
.lg{display:inline-flex;align-items:center;gap:10px;min-height:48px;padding:0 20px 0 14px;border:2px solid var(--line);background:var(--paper);border-radius:999px;font:700 1.0625rem var(--font);color:var(--ink);cursor:default;transition:transform .15s,border-color .15s,background .15s}
.legend .d{display:block;margin:2px 0 0 10px;font-size:1rem;color:var(--muted)}
.dot{width:20px;height:20px;border-radius:50%;border:3px solid var(--ink);flex:none}
.dot-green{background:#2e8b4a}.dot-yellow{background:#f2b705}.dot-red{background:#c62828}.dot-grey{background:#9aa7b5}
.js .legend{flex-direction:row;flex-wrap:wrap}
.js .legend .d{display:none}
.js .lg{cursor:pointer}
@media (hover:hover){.js .lg:hover{border-color:var(--accent);transform:translateY(-1px)}}
.js .lg:active{transform:scale(.97)}
.lg[aria-expanded="true"]{border-color:var(--accent);background:var(--soft)}
.lg-pop{margin:12px 0 0;padding:14px 20px;background:var(--paper);border:1px solid var(--line);border-left:8px solid var(--c,var(--accent));border-radius:0 var(--r) var(--r) 0;max-width:46ch;box-shadow:var(--shadow);font-size:1.0625rem;line-height:1.5}
.lg-pop.green{--c:#2e8b4a}.lg-pop.yellow{--c:#f2b705}.lg-pop.red{--c:#c62828}.lg-pop.grey{--c:#9aa7b5}
.lg-hint{font-size:.9375rem;color:var(--muted);margin:12px 0 22px;max-width:60ch}
.sq .hero .btn{margin-top:4px}
.split{display:grid;gap:20px;margin:30px 0;align-items:center}
.split h2{margin:.5em 0 .4em}
@media (min-width:860px){.split{grid-template-columns:1fr 1fr;gap:36px}}
.figmap{margin:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:14px;box-shadow:var(--shadow)}
.figmap svg{display:block;width:100%;max-width:420px;height:auto;margin:0 auto}
.figmap figcaption{font-size:.9375rem;line-height:1.5;color:var(--muted);margin-top:10px}
.tag{display:inline-block;font:700 .8rem/1 var(--font);letter-spacing:.05em;text-transform:uppercase;padding:6px 10px;border-radius:999px;background:var(--note-bg);color:var(--note-ink)}
.more-d{margin-top:10px}
.more-d>summary{cursor:pointer;min-height:48px;display:flex;align-items:center;font-weight:700;color:var(--accent)}
.more-d p{font-size:1.0625rem;color:var(--ink)}
.helplist{padding-left:1.2em}.helplist a{font-weight:700}
.sq .trio{margin:8px 0 28px;align-items:start}
@media (min-width:640px) and (max-width:959px){.sq .trio{grid-template-columns:1fr}}

@media (prefers-reduced-motion:reduce){*{transition-duration:0s!important}a.card:hover,.btn:hover,.door:hover,.lg:hover{transform:none!important}}
@media print{.earlybar,header.site,.toc-side,.overlay,.keep,.tools,.doors{display:none}body{background:#fff;color:#000}}
[hidden]{display:none!important}
