/* State self-exclusion pages (AMI-1797). Same tokens as the homepage and plan: bone ground, dawn
   glow on the fixed layer, pine as the only accent on a light page, Atkinson Hyperlegible Next throughout, plates for
   anything interactive and 22px cards. Amber stays light in the metaphor and never becomes chrome. */
:root{
  --ground:#f4f4ef;
  --ground-2:#ecefe7;
  --ink:#1c211d;
  --ink-soft:#4c534c;
  /* Darker than the site token (#7c837b, 3.5:1 on bone): these pages put review dates and
     citations in small faint text, which needs 4.5:1. #646b63 is 4.9:1. */
  --ink-faint:#646b63;
  --pine:#1e5b45;
  --pine-deep:#12402f;
  --line:rgba(28,33,29,.16);
  --line-soft:rgba(28,33,29,.09);
  --sans:"Atkinson Hyperlegible Next",-apple-system,"Helvetica Neue",sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--sans);color:var(--ink);line-height:1.6;background:var(--ground);font-size:16px;padding-bottom:4rem}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(820px 480px at 88% -10%, rgba(214,152,44,.30), rgba(214,152,44,.08) 45%, transparent 68%),
    radial-gradient(700px 420px at 4% -8%, rgba(30,91,69,.10), transparent 58%);
}
::selection{background:var(--pine);color:#f4f4ef}
.shell{position:relative;z-index:1;max-width:48rem;margin:0 auto;padding:0 clamp(1.1rem,4vw,2rem)}
a{color:var(--pine-deep)}
a:focus-visible,summary:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--pine);outline-offset:3px;border-radius:2px}

.helpbar{position:relative;z-index:1;display:flex;justify-content:center;padding:.55rem 1.25rem;background:var(--ground-2);border-bottom:1px solid var(--line-soft)}
.helpbar .crisis{font-size:.8rem;color:var(--ink-soft);text-decoration:none;transition:color .2s}
.helpbar .crisis:hover{color:var(--ink)}
.helpbar .crisis b{color:var(--pine);font-weight:700}
/* Language switch (AMI-1835): the same page in the other language, at the right edge of the help bar so the nav keeps its width at 390px. */
.helpbar .lang{position:absolute;right:1.25rem;top:50%;transform:translateY(-50%);font-size:.8rem;font-weight:500;color:var(--ink-soft);text-decoration:underline;text-underline-offset:3px;transition:color .2s}
.helpbar .lang:hover{color:var(--pine-deep)}
.helpbar .lang:active{transform:translateY(-50%) scale(.98)}

nav{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.3rem 0;border-bottom:1px solid var(--line-soft)}
.wordmark{font-weight:800;font-size:.8rem;letter-spacing:.28em;text-transform:uppercase;color:var(--ink);text-decoration:none}
.wordmark b{color:var(--pine)}
.nav-right{display:flex;align-items:center;gap:.9rem}
.navlink{font-size:.84rem;font-weight:500;color:var(--ink-soft);text-decoration:none;white-space:nowrap}
.navlink:hover,.navlink[aria-current]{color:var(--pine-deep)}
.donate-btn{font-weight:650;font-size:.82rem;text-decoration:none;white-space:nowrap;color:var(--pine);
  border:1.5px solid var(--pine);padding:.4rem 1rem;border-radius:14px;
  transition:background .18s ease,color .18s ease,transform .12s ease}
.donate-btn:hover{background:var(--pine);color:#f4f4ef}
.donate-btn:active{transform:translateY(1px) scale(.98)}

.crumbs{display:block;border:0;font-size:.78rem;color:var(--ink-faint);padding:1.1rem 0 0}
.crumbs a{color:var(--ink-faint);text-decoration:none}
.crumbs a:hover{color:var(--pine-deep);text-decoration:underline}

.masthead{padding:.6rem 0 1.4rem;border-bottom:1px solid var(--line-soft)}
h1{font-size:clamp(1.9rem,6.4vw,2.7rem);font-weight:700;letter-spacing:-.03em;line-height:1.12;text-wrap:balance;padding:.6rem 0 .5rem}
.lede{font-size:1.06rem;color:var(--ink-soft);text-wrap:pretty}
.lede-sm{color:var(--ink-soft);text-wrap:pretty}
.stamp{margin-top:.7rem;font-size:.8rem;color:var(--ink-faint);font-variant-numeric:tabular-nums}

.block{padding:1.9rem 0;border-bottom:1px solid var(--line-soft)}
.block>p{color:var(--ink-soft);margin-bottom:.7rem;text-wrap:pretty}
h2{font-size:1.3rem;font-weight:700;letter-spacing:-.02em;margin-bottom:.8rem;text-wrap:balance}
h3{font-size:1.06rem;font-weight:700;letter-spacing:-.01em;margin-bottom:.3rem;text-wrap:balance}
h4{font-size:.78rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);margin:1.1rem 0 .4rem}

.program{background:#fbfbf7;border:1px solid var(--line-soft);border-radius:22px;padding:1.15rem 1.2rem;margin-bottom:1.1rem}
.program p{color:var(--ink-soft);margin-bottom:.55rem;text-wrap:pretty}
.who{font-size:.86rem;color:var(--ink-faint)}
.tag{display:inline-block;font-size:.68rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--pine-deep);background:rgba(30,91,69,.1);border-radius:99px;padding:.14rem .55rem;margin-right:.4rem}
.blocks,.steps,.routes,.members,.sources,.nearby,.states{list-style:none}
.blocks li{position:relative;padding-left:1.1rem;color:var(--ink-soft);margin-bottom:.35rem}
.blocks li::before{content:"";position:absolute;left:0;top:.62em;width:.42rem;height:.42rem;border-radius:50%;background:var(--pine)}
.blocks li strong{color:var(--ink)}
.steps{counter-reset:step;margin:.3rem 0 .5rem}
.steps li{overflow-wrap:anywhere;counter-increment:step;position:relative;padding-left:2rem;color:var(--ink-soft);margin-bottom:.6rem}
.steps li::before{content:counter(step);position:absolute;left:0;top:.05rem;width:1.4rem;height:1.4rem;border-radius:50%;
  background:var(--pine);color:#f4f4ef;font-size:.74rem;font-weight:700;display:grid;place-items:center;font-variant-numeric:tabular-nums}
.next strong{color:var(--ink)}
.proglinks{font-size:.9rem;font-weight:500}
.linkish{color:var(--pine-deep);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
.caution{font-size:.88rem;background:var(--ground-2);border-radius:22px;padding:.7rem .85rem}
.caution strong{color:var(--ink)}

details.evidence{margin-top:.7rem;border-top:1px solid var(--line-soft);padding-top:.6rem}
details.evidence summary{font-size:.84rem;font-weight:600;color:var(--pine-deep);cursor:pointer;list-style-position:outside}
details.evidence[open] summary{margin-bottom:.6rem}
details.evidence p,details.evidence li{font-size:.88rem;color:var(--ink-soft);margin-bottom:.45rem}
.when{font-size:.84rem;color:var(--ink-faint)}
.facts{margin:.4rem 0 .6rem}
.facts dt{font-size:.74rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);margin-top:.6rem}
.facts dd{font-size:.88rem;color:var(--ink-soft)}
.facts dd em{font-style:normal;font-weight:600;color:var(--ink)}
.sources li{margin-bottom:.4rem;line-height:1.45}
.routes li{overflow-wrap:anywhere;font-size:.88rem;color:var(--ink-soft);margin-bottom:.5rem;padding-left:0}
.routes li strong{color:var(--ink)}
.routes li em{font-style:normal;color:var(--ink-faint);font-weight:600}

.members li{position:relative;padding-left:1.1rem;font-size:.92rem;color:var(--ink-soft);margin-bottom:.5rem}
.members li::before{content:"";position:absolute;left:0;top:.6em;width:.42rem;height:.42rem;border-radius:50%}
.members li.enrolls::before{background:var(--pine)}
.members li.asks::before{background:var(--ink-faint)}
.members li strong{color:var(--ink);font-weight:600}
.no-program-list{list-style:none}
.no-program-list>li{padding:.75rem 0;border-top:1px solid rgba(28,33,29,.1)}
.no-program-list>li:first-child{border-top:0}
.reaches{padding-left:1.1rem;color:var(--ink-soft);font-size:.95rem}
.reaches li{margin-bottom:.2rem}
.member-name{font-weight:600;color:var(--ink)}

.gaps .gap{margin-bottom:.8rem}
.gaps .gap p strong{color:var(--ink)}
.unresolved,.unassessed{font-size:.92rem;color:var(--ink-soft)}
.unresolved strong,.unassessed strong{color:var(--ink)}

.cta-block{background:var(--ground-2);border-radius:22px;padding:1.3rem 1.25rem;margin:1.6rem 0;border-bottom:0}
.cta{display:inline-flex;align-items:center;gap:.6rem;font-weight:650;font-size:1rem;text-decoration:none;
  background:var(--pine);color:#f4f4ef;padding:.8rem 1.5rem;border-radius:14px;margin-top:.4rem;
  box-shadow:0 10px 28px rgba(18,64,47,.16);transition:background .2s ease,transform .15s ease}
.cta:hover{background:var(--pine-deep)}
.cta:active{transform:translateY(1px) scale(.98)}
.cta .arrow{transition:transform .2s ease}
.cta:hover .arrow{transform:translateX(3px)}

.states{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:.5rem}
.states a{display:block;text-decoration:none;background:#fbfbf7;border:1px solid var(--line-soft);
  border-radius:14px;padding:.65rem .85rem;transition:border-color .18s ease,transform .12s ease}
.states a:hover{border-color:var(--pine)}
.states a:active{transform:translateY(1px) scale(.99)}
.states .st{display:block;font-weight:600;color:var(--ink)}
.states .meta{display:block;font-size:.78rem;color:var(--ink-faint);font-variant-numeric:tabular-nums}
.nearby li{margin-bottom:.4rem}

/* Cross-state lists (AMI-1833): one row per state or program, each answer under its link. */
h2 .count{font-size:.8rem;font-weight:600;letter-spacing:0;color:var(--ink-faint);font-variant-numeric:tabular-nums;margin-left:.35rem;white-space:nowrap}
.list-rows,.list-programs{list-style:none}
.list-rows>li{background:#fbfbf7;border:1px solid var(--line-soft);border-radius:22px;padding:.8rem 1rem;margin-bottom:.6rem}
.list-state{font-weight:600;color:var(--ink)}
.list-state a{color:var(--ink);text-decoration-thickness:1px;text-underline-offset:2px}
.list-state a:hover{color:var(--pine-deep)}
.list-programs{margin-top:.35rem}
.list-programs li{font-size:.9rem;padding:.4rem 0 .1rem;border-top:1px solid var(--line-soft);overflow-wrap:anywhere}
.list-programs li:first-child{border-top:0}
.answer{font-size:.88rem;color:var(--ink-soft);overflow-wrap:anywhere}
.answer em{font-style:normal;font-weight:600;color:var(--ink)}

/* State reference pages (AMI-1910): a wider shell for the tables, prose kept to a reading measure.
   Each cell leads with a short value; the reviewed prose sits under it in a native disclosure. */
.shell.wide{max-width:74rem}
.wide .block>p,.wide .lede,.wide .ref-note,.wide footer .legal{max-width:46rem}
.ref-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem 2.5rem;align-items:end}
.ref-cta{max-width:20rem;padding-bottom:.3rem}
.ref-cta .cta{white-space:nowrap}
.ref-cta .when{margin-top:.6rem}
.help-strip{background:#fff;border:2px solid var(--ink);border-radius:14px;padding:.75rem 1rem;margin:1.3rem 0 0;font-size:.98rem}
.help-strip a{font-weight:600}
.help-rows{list-style:none}
.help-rows li{padding:1rem 0;border-top:1px solid var(--line-soft)}
.help-rows li:first-child{border-top:0;padding-top:.2rem}
.help-rows p{max-width:46rem}
.help-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.75rem}
.help-btn{display:inline-flex;align-items:center;gap:.45rem;padding:.7rem 1.05rem;border-radius:14px;font-weight:650;text-decoration:none;background:var(--ink);color:#fff;border:2px solid var(--ink);transition:transform .12s}
.help-btn.alt{background:#fff;color:var(--ink)}
.help-btn:hover{transform:translateY(-1px)}
.help-btn:active{transform:translateY(1px) scale(.98)}
.help-btn:focus-visible{outline:2px solid var(--pine);outline-offset:3px}
.help details.evidence summary{list-style-position:inside}
.ref-note{background:var(--ground-2);border-radius:22px;padding:.8rem 1rem;margin:1.3rem 0 0;color:var(--ink-soft);font-size:.95rem;text-wrap:pretty}
nav.jump{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:.4rem 1.2rem;padding:1rem 0 0;border:0;font-size:.88rem;font-weight:500}
nav.jump a{color:var(--pine-deep);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
nav.jump a:hover{color:var(--pine)}
.ref .empty{font-weight:500;color:var(--ink)}

.ref-tools{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.7rem 1rem;margin:1rem 0 .9rem}
.ref-tools[hidden]{display:none}
.ref-tools .field{display:flex;flex-direction:column;gap:.3rem;font-size:.78rem;font-weight:600;color:var(--ink-soft)}
.ref-tools input,.ref-tools select{font:inherit;font-size:.92rem;font-weight:400;color:var(--ink);background:#fbfbf7;
  border:1.5px solid var(--line);border-radius:14px;padding:.5rem 1rem;min-height:2.6rem;transition:border-color .18s ease}
.ref-tools input{width:min(20rem,100%)}
.ref-tools input:hover,.ref-tools select:hover{border-color:var(--pine)}
.pill{font:inherit;font-size:.88rem;font-weight:650;color:var(--pine);background:transparent;border:1.5px solid var(--pine);
  border-radius:14px;padding:.5rem 1.1rem;min-height:2.6rem;cursor:pointer;transition:background .18s ease,color .18s ease,transform .12s ease}
.pill:hover{background:var(--pine);color:#f4f4ef}
.pill:active{transform:translateY(1px) scale(.98)}
.ref-tools output{font-size:.84rem;color:var(--ink-faint);font-variant-numeric:tabular-nums;padding-bottom:.6rem}

.table-wrap{background:#fbfbf7;border:1px solid var(--line-soft);border-radius:22px;overflow:hidden}
.ref-table{width:100%;border-collapse:collapse;font-size:.9rem;line-height:1.5;table-layout:fixed}
.programs-table .col-program{width:23%}.programs-table .col-enroll{width:20%}.programs-table .col-mark{width:6.4%}.programs-table .col-length{width:13%}.programs-table .col-sources{width:12%}
.categories-table thead th:nth-child(1){width:24%}.categories-table thead th:nth-child(3){width:20%}
.venues-table thead th:nth-child(1){width:30%}.venues-table thead th:nth-child(2){width:32%}
/* The caption names the table for screen readers; the section heading above already says it on screen. */
.ref-table caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ref-table thead th{text-align:left;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);padding:.55rem 1rem;border-bottom:1px solid var(--line)}
.ref-table tbody th,.ref-table td{text-align:left;vertical-align:top;padding:.9rem 1rem;border-top:1px solid var(--line-soft);overflow-wrap:break-word}
.ref-table .sources a,.ref-table .routes li{overflow-wrap:anywhere}
.ref-table tbody tr:first-child th,.ref-table tbody tr:first-child td{border-top:0}
.ref-table tbody th{font-weight:400}
.categories-table tbody th::first-letter{text-transform:uppercase}
.ref-table tbody tr:target{background:rgba(30,91,69,.06)}
.categories-table tbody th{font-weight:600;color:var(--ink)}
.short{display:block;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.sub{display:block;font-size:.82rem;color:var(--ink-faint);margin-top:.15rem}
.rec-name{display:block;font-weight:600;color:var(--ink)}
.rec-who{display:block;font-size:.82rem;color:var(--ink-faint);margin-top:.25rem}
.rec-who .tag{margin-bottom:.2rem}
.ref-table p{color:var(--ink-soft);margin:.35rem 0 0}
.ref-table .next strong{color:var(--ink);font-weight:500}
.ref-table .caution{margin-top:.5rem;font-size:.82rem;padding:.55rem .7rem}
/* A program's caution spans the row under it, joined to that row: no rule between them, a readable line length. */
.programs-table tr[data-note]>th,.programs-table tr[data-note]>td{padding-bottom:.45rem}
.programs-table tr.row-note>td{border-top:0;padding:0 1rem 1rem}
.programs-table tr.row-note .caution{margin:0;font-size:.85rem}
.ref-table .proglinks{font-size:.84rem}
.ref-table .lifetime-choice{font-size:.85rem}
.sub-label{font-size:.7rem!important;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)!important;margin:.8rem 0 .3rem!important}
details.more{margin-top:.45rem}
details.more summary{font-size:.8rem;font-weight:600;color:var(--pine-deep);cursor:pointer;width:fit-content}
details.more summary:hover{color:var(--pine)}
.more-body{padding:.35rem 0 .2rem}
.more-body p,.more-body li{font-size:.85rem;color:var(--ink-soft);margin-bottom:.4rem}
.more-body .steps li::before{top:.1rem}
.ref-table .facts dt{margin-top:.5rem}
.ref-table .reaches{font-size:.85rem}

/* Status marks: one shape per status, so the five restriction columns read down a column without colour
   alone (WCAG 1.4.1). The word is always in the cell; wide screens show only the mark, with a legend. */
.mark{display:inline-flex;align-items:center;gap:.45rem}
.mark::before{content:"";flex:none;width:1.05rem;height:1.05rem;background:center/contain no-repeat}
.mark[data-status="confirmed"]::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='8' fill='%231e5b45'/%3E%3Cpath d='M4.5 8.2l2.3 2.3 4.7-4.9' fill='none' stroke='%23f4f4ef' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
.mark[data-status="rejected"]::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='7' fill='none' stroke='%234c534c' stroke-width='1.6'/%3E%3Cpath d='M5 8h6' stroke='%234c534c' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E")}
.mark[data-status="unknown"]::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='7' fill='none' stroke='%23646b63' stroke-width='1.6' stroke-dasharray='2.2 2.2'/%3E%3C/svg%3E")}
.mark[data-status="unresearched"]::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='1.8' fill='%23646b63'/%3E%3C/svg%3E")}
.mark-legend{display:flex;flex-wrap:wrap;gap:.4rem 1.2rem;font-size:.82rem;color:var(--ink-soft);margin:.2rem 0 .8rem}
.programs-table .col-blocks{text-align:center;padding-bottom:.2rem;border-bottom:1px solid var(--line-soft)}
.programs-table .col-mark{text-align:center;padding:.35rem .2rem .55rem;letter-spacing:.02em;text-transform:none;font-size:.72rem;line-height:1.25}
.programs-table .col-mark abbr{text-decoration:none;cursor:help}
.programs-table td.mark-cell{text-align:center;padding-left:.2rem;padding-right:.2rem}
.programs-table .mark-cell .mark{justify-content:center}
.programs-table .mark-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.rec-link{text-decoration:none}
.rec-link:hover .rec-name{text-decoration:underline;text-underline-offset:3px;color:var(--pine-deep)}
.blocks-table thead th:nth-child(1){width:32%}.blocks-table thead th:nth-child(2){width:24%}
.blocks-table tbody th{font-weight:600;color:var(--ink)}
.masthead .who{margin:.7rem 0 .9rem}
.program.flat{background:none;border:0;padding:0}
.program.flat h3{font-size:1.1rem;margin:1.6rem 0 .5rem}
.record-part{margin-top:.4rem}

@media (max-width:52rem){
  .ref-head{grid-template-columns:1fr;align-items:start}
  .ref-cta{max-width:none}
  .ref-tools .field:first-child,.ref-tools input{width:100%}
  /* Below this width each row stacks into a labelled card; the markup stays a table. */
  .ref-table,.ref-table tbody,.ref-table tr,.ref-table th,.ref-table td{display:block;width:auto!important}
  .ref-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .ref-table tbody tr{border-top:1px solid var(--line);padding:.85rem 1rem}
  .ref-table tbody tr:first-child{border-top:0}
  .ref-table tbody th,.ref-table td{border:0;padding:.35rem 0}
  .ref-table td::before{content:attr(data-label);display:block;font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:.1rem}
  .ref-table td:empty{display:none}
  /* The stacked rows set display:block, which would otherwise override the filter's hidden attribute. */
  .ref-table tr[hidden]{display:none}
  /* Stacked, the caution closes its program's card instead of starting a new one. */
  .ref-table tbody tr.row-note{border-top:0;padding-top:0}
  .ref-table tr.row-note td::before{display:none}
  .programs-table tr.row-note>td{padding:.4rem 0 0}
  /* Stacked, each restriction is one line: its label, then the mark and its word. */
  .programs-table td.mark-cell{display:flex;justify-content:space-between;align-items:center;gap:1rem;text-align:left;padding:.3rem 0;border-top:1px solid var(--line-soft)}
  .programs-table td.mark-cell::before{margin:0;text-transform:none;letter-spacing:0;font-size:.85rem;font-weight:400;color:var(--ink-soft)}
  .programs-table td.mark-cell .mark{flex:none}
  .programs-table .mark-text{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:nowrap;font-size:.85rem}
  .mark-legend{display:none}
}

footer{padding-top:2rem}
footer .legal{font-size:.8rem;color:var(--ink-faint);margin-bottom:.9rem;text-wrap:pretty}
.crisis-card{background:var(--ground-2);border-radius:22px;padding:1rem 1.1rem;margin-bottom:1rem}
.crisis-card p{font-size:.88rem;color:var(--ink-soft);margin-bottom:.4rem}
.crisis-big{font-weight:600}
.crisis-big b{display:block;font-size:1.15rem}
.crisis-big a{text-decoration:none;color:var(--pine-deep)}

@media (max-width:30rem){
  .program{padding:1rem .9rem}
  .cta{width:100%;justify-content:center}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *{transition:none!important}
}
