/* ==========================================================================
   New York Government — Legislation
   assets/css/site.css
   ========================================================================== */

:root{
  --navy:      #12294B;
  --navy-soft: #2C4A78;
  --gold:      #A8791F;
  --ink:       #1A1A1A;
  --muted:     #616C7A;
  --rule:      #D8DDE3;
  --rule-soft: #ECEFF2;
  --tint:      #F6F8FA;
  --link:      #1355A0;
  --hit:       #FFE9A3;
  --hit-active:#F5A623;

  --ui:  Arial, Helvetica, "Liberation Sans", sans-serif;
  --doc: "Times New Roman", Times, "Liberation Serif", serif;

  --maxw: 1360px;
  --rail: 320px;

  /* Type scale. All of these are editable in the site editor under Typography. */
  --fs-ui:          15px;      /* interface text across the site */
  --fs-doc:         1.0625rem; /* the statute text itself */
  --lh-doc:         1.45;      /* line spacing of the statute text */
  --fs-title:       1.375rem;  /* the title at the head of a reprint */
  --fs-chapter:     1.375rem;
  --fs-part:        1.375rem;
  --fs-division:    1.125rem;
  --fs-subdivision: 1rem;
  --fs-section:     1.0rem;  /* section number and heading */
  --fs-note:        .9375rem;  /* notes, examples, reference lines */
  --fs-table:       1rem;
  --fs-hnote:       .6875rem;  /* history notes */

  /* statute indent scale */
  --num-col: 3.4rem;   /* section number gutter */
  --ind1:    5.6rem;   /* body text of a section */
  --step:    2.9rem;   /* each further level */
  --ind2:    8.5rem;   /* body of text inserted by an amendment */
  --head-col:11rem;    /* "Part 1" label column in a heading */
}

*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }

body{
  margin:0; background:#fff; color:var(--ink);
  font-family:var(--ui); font-size:var(--fs-ui); line-height:1.5;
}

a{ color:var(--link); }
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:2px solid var(--navy); outline-offset:1px;
}
img,svg{ max-width:100%; }

.skip{ position:absolute; left:-9999px; top:0; z-index:200; background:#fff; padding:.6rem 1rem; border:2px solid var(--navy); }
.skip:focus{ left:0; }

.wrap{ max-width:var(--maxw); margin:0 auto; padding:0 1.5rem; }

/* ---------- Header ------------------------------------------------------ */

.masthead{ border-bottom:1px solid var(--rule); background:#fff; }
.masthead .wrap{ display:flex; align-items:center; gap:.85rem; padding-top:.9rem; padding-bottom:.9rem; }
.masthead__seal{ width:36px; height:36px; flex:0 0 auto; }
.masthead__names{ text-decoration:none; color:var(--navy); line-height:1.2; }
.masthead__gov{ display:block; font-size:.6875rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); }
.masthead__site{ display:block; font-size:1.125rem; font-weight:700; }
.masthead__office{ margin-left:auto; font-size:.75rem; color:var(--muted); text-align:right; }
@media (max-width:600px){ .masthead__office{ display:none; } }

.mainnav{ border-bottom:1px solid var(--rule); background:#fff; }
.mainnav ul{ display:flex; flex-wrap:wrap; list-style:none; margin:0 auto; padding:0 1.5rem; max-width:var(--maxw); }
.mainnav a{
  display:block; padding:.55rem .8rem; color:var(--ink); text-decoration:none;
  font-size:.8125rem; border-bottom:2px solid transparent; margin-bottom:-1px;
}
.mainnav li:first-child a{ padding-left:0; }
.mainnav a:hover{ color:var(--link); }
.mainnav a[aria-current="page"]{ color:var(--navy); font-weight:700; border-bottom-color:var(--navy); }

.crumbs{ font-size:.75rem; color:var(--muted); border-bottom:1px solid var(--rule-soft); }
.crumbs .wrap{ padding-top:.5rem; padding-bottom:.5rem; }
.crumbs span[aria-hidden]{ padding:0 .4rem; color:var(--rule); }

/* ---------- Footer ------------------------------------------------------ */

.sitefoot{ margin-top:3.5rem; border-top:1px solid var(--rule); background:var(--tint); }
.sitefoot .wrap{
  padding-top:1.25rem; padding-bottom:1.5rem;
  display:flex; flex-wrap:wrap; gap:.75rem 2.5rem; align-items:baseline;
}
.sitefoot nav{ display:flex; flex-wrap:wrap; }
.sitefoot nav a{ margin-right:1.4rem; }
.sitefoot a{ color:var(--muted); text-decoration:none; font-size:.75rem; }
.sitefoot a:hover{ color:var(--link); text-decoration:underline; }
.sitefoot .foot-meta{ margin-left:auto; text-align:right; font-size:.6875rem; color:var(--muted); line-height:1.7; }
.sitefoot .foot-meta span{ display:block; }
@media (max-width:760px){ .sitefoot .foot-meta{ margin-left:0; text-align:left; } }

/* ---------- Generic page ------------------------------------------------ */

.page{ padding-top:1.5rem; }
.page h1{ font-size:1.5rem; margin:0 0 .3rem; }
.page .pagelede{ margin:0 0 1.5rem; color:var(--muted); max-width:70ch; font-size:.875rem; }

h2.sec{ font-size:1rem; margin:2rem 0 .6rem; padding-bottom:.3rem; border-bottom:1px solid var(--rule); }
h2.sec:first-child{ margin-top:0; }

.btn{ font:inherit; font-size:.8125rem; padding:.45rem 1rem; cursor:pointer; border:1px solid var(--navy); background:var(--navy); color:#fff; }
.btn:hover{ background:var(--navy-soft); }
.btn--ghost{ background:#fff; color:var(--navy); }
.btn--ghost:hover{ background:var(--tint); }
.btn--danger{ border-color:#9B2C2C; background:#fff; color:#9B2C2C; }
.btn--danger:hover{ background:#FDF2F2; }
.btn[disabled]{ opacity:.45; cursor:not-allowed; }

/* ---------- Home -------------------------------------------------------- */

.intro{ border-bottom:1px solid var(--rule-soft); }
.intro .wrap{ padding-top:2.25rem; padding-bottom:2rem; }
.intro h1{ font-size:1.625rem; margin:0 0 .4rem; font-weight:700; }
.intro p{ margin:0 0 1.25rem; color:var(--muted); max-width:62ch; font-size:.9375rem; }

.bigsearch{ display:flex; max-width:38rem; border:1px solid var(--rule); }
.bigsearch input{ flex:1; border:0; padding:.6rem .75rem; font:inherit; font-size:.875rem; min-width:0; }
.bigsearch button{ border:0; border-left:1px solid var(--rule); background:var(--navy); color:#fff; font:inherit; font-size:.8125rem; padding:0 1.25rem; cursor:pointer; }
.bigsearch button:hover{ background:var(--navy-soft); }
.counts{ margin:.6rem 0 0; font-size:.75rem; color:var(--muted); }

.homegrid{ display:grid; gap:2.5rem 3.5rem; padding-top:2rem; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr); }
@media (max-width:880px){ .homegrid{ grid-template-columns:1fr; } }

.collections{ list-style:none; margin:0; padding:0; font-size:.875rem; }
.collections li{ border-bottom:1px solid var(--rule-soft); }
.collections a{ display:block; padding:.6rem 0; text-decoration:none; }
.collections a:hover .t{ text-decoration:underline; }
.collections .t{ color:var(--link); }
.collections .desc{ display:block; color:var(--muted); font-size:.75rem; margin-top:.1rem; }

.recent{ list-style:none; margin:0; padding:0; font-size:.875rem; }
.recent li{ padding:.55rem 0; border-bottom:1px solid var(--rule-soft); }
.recent .meta{ display:block; font-size:.6875rem; color:var(--muted); margin-top:.1rem; }

.notice{ border:1px solid var(--rule); border-left:3px solid var(--gold); padding:.8rem 1rem; margin:0 0 1.5rem; background:var(--tint); }
.notice h2{ font-size:.875rem; margin:0 0 .2rem; }
.notice p{ margin:0; font-size:.8125rem; color:var(--muted); }

/* ---------- Browse ------------------------------------------------------ */

.filters{ display:flex; flex-wrap:wrap; gap:.9rem; align-items:flex-end; margin-bottom:1.25rem; padding-bottom:1.25rem; border-bottom:1px solid var(--rule); }
.field{ display:flex; flex-direction:column; gap:.25rem; }
.field label{ font-size:.6875rem; color:var(--muted); }
.field input,.field select,.field textarea{ font:inherit; font-size:.8125rem; padding:.4rem .5rem; border:1px solid var(--rule); background:#fff; min-width:11rem; }
.filters .grow{ flex:1; min-width:15rem; }
.filters .grow input{ width:100%; }

.resultcount{ font-size:.75rem; color:var(--muted); margin:0 0 1rem; }
.yeargroup{ margin-bottom:1.75rem; }
.yeargroup > h2{ font-size:1.0625rem; margin:0; padding:.2rem 0; border-bottom:1px solid var(--navy); }
table.lawlist{ width:100%; border-collapse:collapse; }
table.lawlist th{ text-align:left; font-size:.6875rem; color:var(--muted); font-weight:400; padding:.4rem .6rem .4rem 0; border-bottom:1px solid var(--rule-soft); }
table.lawlist td{ padding:.5rem .6rem .5rem 0; border-bottom:1px solid var(--rule-soft); vertical-align:top; font-size:.875rem; }
table.lawlist .c-title{ width:50%; }
table.lawlist .c-no{ white-space:nowrap; color:var(--muted); font-size:.8125rem; }
table.lawlist .longtitle{ display:block; color:var(--muted); font-size:.75rem; margin-top:.15rem; }
.tag{ font-size:.75rem; color:var(--muted); }
.tag--repealed{ color:#9B2C2C; }
.tag--aspassed{ color:#7A5A0B; }
.tag--local{ border:1px solid var(--gold); color:var(--gold); padding:0 .3rem; margin-left:.35rem; font-size:.625rem; white-space:nowrap; }
.empty{ border:1px dashed var(--rule); padding:2rem; text-align:center; color:var(--muted); font-size:.875rem; }

/* ---------- View shell -------------------------------------------------- */

/* The reprint page fills the window: header, then the two scrolling panes,
   then the footer pinned under them. Nothing but the panes scrolls. */
body.page-view{ display:flex; flex-direction:column; min-height:100vh; }
body.page-view > *{ flex:0 0 auto; }
body.page-view .sitefoot{ margin-top:0; }

.viewshell{
  display:grid; grid-template-columns:var(--rail) minmax(0,1fr);
  border-top:1px solid var(--rule-soft);
}
body.page-view .viewshell{ flex:1 1 auto; min-height:0; }
.viewshell.rail-hidden{ grid-template-columns:minmax(0,1fr); }
.rail[hidden]{ display:none; }

@media (max-width:1000px){
  body.page-view{ display:block; min-height:0; }
  .viewshell,.viewshell.rail-hidden{ display:block; min-height:0; }
  body.page-view .sitefoot{ margin-top:3.5rem; }
}

.rail{ border-right:1px solid var(--rule); overflow-y:auto; min-height:0; background:#fff; }
.rail__head{
  position:sticky; top:0; z-index:2; background:#fff; border-bottom:1px solid var(--rule);
  padding:.45rem .75rem; font-size:.75rem; color:var(--muted);
  display:flex; align-items:center; gap:.4rem;
}
.rail__head .spacer{ flex:1; }
.rail__head button{ font:inherit; font-size:.6875rem; background:none; border:1px solid var(--rule); color:var(--muted); padding:.1rem .4rem; cursor:pointer; }
.rail__head button:hover{ color:var(--navy); border-color:var(--navy); }

/* contents tree */
.toc,.toc ul{ list-style:none; margin:0; padding:0; }
.toc{ padding:.4rem 0 3rem; font-size:.8125rem; }
.toc li.collapsed > ul{ display:none; }
.toc .node{ display:flex; align-items:flex-start; }
.toc .twist{
  flex:0 0 1.2rem; width:1.2rem; height:1.55rem; padding:0; margin:0; cursor:pointer;
  background:none; border:0; color:var(--muted); font-size:.5625rem; line-height:1.55rem; text-align:center;
}
.toc .twist:hover{ color:var(--navy); }
.toc .spacer{ flex:0 0 1.2rem; }
.toc a{
  flex:1; display:block; padding:.24rem .5rem .24rem .3rem; text-decoration:none; color:var(--link);
  line-height:1.35; border-left:2px solid transparent;
}
.toc a:hover{ text-decoration:underline; }
.toc a.is-current{ background:var(--tint); border-left-color:var(--navy); color:var(--navy); font-weight:700; }
.toc .lvl-head > .node > a{ color:var(--ink); font-weight:700; }
.toc .lvl-head.depth-3 > .node > a,
.toc .lvl-head.depth-4 > .node > a{ font-weight:400; color:#39404A; }
.toc li ul{ margin-left:.9rem; border-left:1px solid var(--rule-soft); }
.toc .num{ color:var(--muted); }
.toc a.has-hit::after{ content:attr(data-hits); float:right; background:var(--hit); color:#4A3600; font-size:.6875rem; padding:0 .3rem; margin-left:.35rem; }

/* document column */
.doccol{ display:flex; flex-direction:column; min-width:0; min-height:0; }

.toolbar{ flex:0 0 auto; border-bottom:1px solid var(--rule); padding:.4rem .75rem; display:flex; flex-wrap:wrap; gap:.4rem; align-items:center; background:#fff; }
.toolbar .tb{ font:inherit; font-size:.75rem; background:#fff; border:1px solid var(--rule); padding:.28rem .6rem; cursor:pointer; color:var(--ink); text-decoration:none; }
.toolbar .tb:hover{ border-color:var(--navy); color:var(--navy); }
.toolbar .tb[aria-pressed="true"]{ background:var(--navy); border-color:var(--navy); color:#fff; }
.toolbar .spacer{ flex:1; }
.findbox{ display:flex; align-items:center; gap:.25rem; }
.findbox input{ font:inherit; font-size:.75rem; padding:.28rem .45rem; border:1px solid var(--rule); width:10rem; }
.findbox .hits{ font-size:.6875rem; color:var(--muted); min-width:7.5rem; }

.railtoggle{ display:none; }
@media (max-width:1000px){
  .railtoggle{ display:block; width:100%; text-align:left; font:inherit; font-size:.8125rem; background:var(--tint); border:0; border-bottom:1px solid var(--rule); padding:.6rem .75rem; cursor:pointer; }
  .rail{ max-height:60vh; border-right:0; border-bottom:1px solid var(--rule); }
}

.statusbanner{ flex:0 0 auto; padding:.45rem .9rem; border-bottom:1px solid var(--rule-soft); font-size:.6875rem; color:var(--muted); display:flex; flex-wrap:wrap; gap:.2rem .9rem; }
.statusbanner b{ color:var(--ink); font-weight:700; }
.statusbanner span + span{ border-left:1px solid var(--rule); padding-left:.9rem; }

.docscroll{ overflow-y:auto; flex:1 1 auto; min-height:0; }
@media (max-width:1000px){ .docscroll{ overflow:visible; flex:none; } }

/* ---------- The statute itself ------------------------------------------ */

.doc{
  font-family:var(--doc);
  font-size:var(--fs-doc);
  line-height:var(--lh-doc);
  padding:1.5rem 1.75rem 5rem;
  max-width:64rem;
}
.doc__title{ font-family:var(--ui); font-size:var(--fs-title); font-weight:700; margin:0 0 .35rem; line-height:1.25; }
.doc__reprint{ font-family:var(--ui); font-size:.8125rem; color:#33383F; margin:0; }
.doc__scope{ font-family:var(--ui); font-size:.8125rem; color:#9AA2AC; margin:.35rem 0 0; }
.doc__rule{ border:0; border-top:1px solid var(--rule); margin:2.25rem 0 2rem; }
.doc__longtitle{ font-style:italic; margin:0 0 1.25rem; }

.doc .heading{
  font-family:var(--ui); font-weight:700; display:grid;
  /* The label column is normally --head-col, but widens rather than wrapping
     "Chapter 1" onto two lines when the column is narrow or the label is long. */
  grid-template-columns:minmax(min-content, var(--head-col)) 1fr;
}
.doc .heading .lbl{ white-space:nowrap; padding-right:1rem; }
.doc h2.chapter{ font-size:var(--fs-chapter); margin:2.5rem 0 1rem; }
.doc h3.part{ font-size:var(--fs-part); margin:2.25rem 0 1rem; }
.doc h4.division{ font-size:var(--fs-division); margin:1.75rem 0 .85rem; }
.doc h5.subdivision{ font-size:var(--fs-subdivision); margin:1.4rem 0 .75rem; }
.doc .heading.is-first{ margin-top:0; }

.prov{ margin:0 0 1.1rem; scroll-margin-top:1rem; }
.prov__head{
  font-family:var(--ui); font-size:var(--fs-section); font-weight:700; margin:0 0 .35rem;
  display:grid; grid-template-columns:minmax(min-content, var(--num-col)) 1fr;
}
.prov__num{ white-space:nowrap; padding-right:.5rem; }
.prov p{ margin:0 0 .5rem var(--ind1); }
.prov .row{
  display:grid; grid-template-columns:minmax(min-content, var(--step)) 1fr;
  margin:0 0 .5rem var(--ind1);
}
.prov .row > .rn{ white-space:nowrap; padding-right:.5rem; }
/* A penalty's paragraphs line up with a subsection's, one step in from the
   "Maximum penalty" line above them. */
.prov .penalty-list{ margin-left:var(--step); }
.prov .row .row{ margin-left:0; }
.prov .row > span{ display:block; }
/* Words introducing a nested list sit the same distance above it as an
   ordinary paragraph does above its lettered paragraphs. */
.prov .row .lead{ display:block; margin-bottom:.5rem; }
.prov .row .rt > .row:last-child{ margin-bottom:0; }
.prov--wide .prov__head{
  grid-template-columns:minmax(min-content, var(--head-col)) 1fr;
  font-size:var(--fs-part); margin:2.25rem 0 1rem;
}
.prov--wide:first-child .prov__head{ margin-top:0; }
.prov .def b{ font-weight:700; font-style:italic; }
.prov .note,.prov .example{ font-size:var(--fs-note); }
.prov .note .lbl,.prov .example .lbl{ font-family:var(--ui); font-size:.6875rem; color:var(--muted); display:block; }
.prov .hnote{ font-family:var(--ui); font-size:var(--fs-hnote); color:var(--muted); }
.doc[data-hnotes="off"] .hnote{ display:none; }

.doc .endnote{ margin-top:3rem; padding-top:.75rem; border-top:1px solid var(--rule); font-family:var(--ui); font-size:.75rem; color:var(--muted); max-width:80ch; }

/* Copy-citation buttons */
.doc .heading,.prov,.prov .row{ position:relative; }
.citebtn{
  position:absolute; top:0; right:-2.5rem; width:1.7rem; height:1.4rem; padding:0;
  border:1px solid var(--rule); background:#fff; color:var(--muted); cursor:pointer;
  font-family:var(--ui); font-size:.75rem; line-height:1.2; border-radius:2px;
  opacity:0; transition:opacity .12s;
}
.citebtn::after{ content:'\00A7'; }
.citebtn:hover,.citebtn:focus-visible{ color:var(--navy); border-color:var(--navy); }
.doc .heading:hover > .citebtn,
.prov:hover > .citebtn,
.prov .row:hover > .citebtn,
.citebtn:focus-visible{ opacity:1; }
/* only the innermost thing under the pointer offers its citation */
.prov:has(.row:hover) > .citebtn,
.prov .row:has(.row:hover) > .citebtn{ opacity:0; }
.citebtn[data-copied]{ opacity:1; border-color:#2F855A; color:#2F855A; }
.citebtn[data-copied]::after{ content:'\2713'; }
/* No hover means no button: on a touch screen you tap the text instead. */
@media (hover:none){
  .citebtn{ display:none; }
}
body[data-citebtn="off"] .citebtn{ display:none; }
/* the gutter only exists where the buttons do */
@media (hover:hover){
  body[data-citebtn="on"] .doc{ padding-right:3.4rem; }
}

/* Confirmation for a tap, where there is no button to change state. */
.citetoast{
  position:fixed; left:50%; bottom:1.25rem; z-index:200; max-width:90vw;
  transform:translateX(-50%) translateY(.5rem);
  background:var(--navy); color:#fff; font-family:var(--ui); font-size:.8125rem;
  padding:.5rem .9rem; border-radius:3px; box-shadow:0 2px 10px rgba(16,22,32,.25);
  opacity:0; pointer-events:none; transition:opacity .15s, transform .15s;
}
.citetoast.is-on{ opacity:1; transform:translateX(-50%) translateY(0); }
.prov.is-cited,.prov .row.is-cited,.doc .heading.is-cited{
  background:#FFF8DC; box-shadow:0 0 0 .3rem #FFF8DC;
}

[data-hidden="1"]{ display:none !important; }
.is-hidden{ display:none !important; }

/* Tables and reference lines inside a provision */
.prov .secref{ text-align:right; font-size:var(--fs-note); }
.prov .stable{
  border-collapse:collapse; width:calc(100% - var(--ind1));
  margin:.6rem 0 .9rem var(--ind1); font-size:var(--fs-table);
}
.prov .stable caption{
  caption-side:top; text-align:left; font-family:var(--ui); font-size:.8125rem;
  font-weight:700; padding-bottom:.4rem;
}
.prov .stable th{
  font-family:var(--ui); font-size:.9375rem; font-weight:700; text-align:left;
  vertical-align:top; padding:.2rem 1rem .5rem 0; border-bottom:1px solid var(--rule);
}
.prov .stable td{ vertical-align:top; padding:.28rem 1rem .28rem 0; }
.prov .stable td:last-child,.prov .stable th:last-child{ padding-right:0; }
.prov .stable .al-center{ text-align:center; }
.prov .stable .al-right{ text-align:right; }
.prov .stable--grid th,.prov .stable--grid td{
  border:1px solid var(--rule); padding:.35rem .55rem;
}
@media (max-width:700px){
  .prov .stable{ width:calc(100% - var(--ind1)); font-size:.9375rem; }
  .prov .stable td,.prov .stable th{ padding-right:.6rem; }
}

/* Amendments */
.prov .direction{ font-style:italic; }
.prov .inserted{ margin:.55rem 0 .8rem; }
.prov .inserted__head{
  font-family:var(--ui); font-weight:700; font-size:var(--fs-section);
  margin:0 0 .35rem var(--ind1);
  display:grid; grid-template-columns:minmax(min-content, calc(var(--num-col) + var(--step))) 1fr;
}
/* An inserted Chapter, Part, Division or Subdivision keeps its usual look,
   indented like everything else the amendment inserts. */
.prov .inserted__heading{
  font-family:var(--ui); font-weight:700;
  margin:.4rem 0 .5rem var(--ind1);
  display:grid; grid-template-columns:minmax(min-content, var(--head-col)) 1fr;
}
.prov .inserted__heading > span:first-child{ white-space:nowrap; padding-right:1rem; }
.prov .ins-chapter{ font-size:var(--fs-chapter); }
.prov .ins-part{ font-size:var(--fs-part); }
.prov .ins-div{ font-size:var(--fs-division); }
.prov .ins-subdiv{ font-size:var(--fs-subdivision); }
.prov .inserted__body{ --ind1:var(--ind2); }
.prov .inserted__body > p:last-child{ margin-bottom:0; }

/* Subordinate legislation panel on an Act */
.slpanel{ flex:0 0 auto; max-height:40%; overflow:auto; border-bottom:1px solid var(--rule); background:var(--tint); padding:.7rem .9rem; }
.slpanel h2{ font-size:.8125rem; margin:0 0 .4rem; }
.slpanel ul{ list-style:none; margin:0; padding:0; font-size:.8125rem; }
.slpanel li{ padding:.2rem 0; }
.slpanel .meta{ color:var(--muted); }
.slpanel .none{ color:var(--muted); font-size:.8125rem; }

/* Bill progress */
.billcard{ border-bottom:1px solid var(--rule-soft); padding:1.1rem 0; }
.billcard h2{ font-size:1rem; margin:0 0 .15rem; }
.billcard h2 a{ text-decoration:none; }
.billcard h2 a:hover{ text-decoration:underline; }
.billcard .billmeta{ font-size:.75rem; color:var(--muted); margin:0 0 .8rem; }
.billcard .longtitle{ font-size:.8125rem; color:var(--muted); margin:0 0 .8rem; max-width:80ch; }
.stages{ display:flex; flex-wrap:wrap; gap:0; margin:0; padding:0; list-style:none; }
.stages li{ flex:1 1 8rem; min-width:7rem; position:relative; padding:1.4rem .4rem 0 0; font-size:.6875rem; color:var(--muted); }
.stages li::before{
  content:''; position:absolute; top:.35rem; left:0; width:.7rem; height:.7rem;
  border:2px solid var(--rule); border-radius:50%; background:#fff; z-index:1;
}
.stages li::after{
  content:''; position:absolute; top:.62rem; left:.7rem; right:0; height:2px; background:var(--rule);
}
.stages li:last-child::after{ display:none; }
.stages li.done{ color:var(--ink); }
.stages li.done::before{ border-color:var(--navy); background:var(--navy); }
.stages li.done::after{ background:var(--navy); }
.stages li.now{ color:var(--navy); font-weight:700; }
.stages li.now::before{ border-color:var(--navy); background:#fff; box-shadow:0 0 0 3px rgba(18,41,75,.15); }
.stages li.now::after{ background:var(--rule); }
.stagechip{
  display:inline-block; font-size:.6875rem; border:1px solid var(--navy); color:var(--navy);
  padding:0 .4rem; margin-left:.35rem;
}

mark.hit{ background:var(--hit); }
mark.hit.is-active{ background:var(--hit-active); }

.provnav{ display:flex; justify-content:space-between; gap:1rem; padding:1rem 1.75rem 2rem; font-size:.8125rem; border-top:1px solid var(--rule-soft); color:var(--muted); }
.notfound{ padding:3rem 1.75rem; }

@media (max-width:700px){
  :root{ --num-col:2.2rem; --ind1:2.2rem; --ind2:4.1rem; --step:1.9rem; --head-col:5.5rem; }
  .doc{ padding:1.25rem 1.25rem 3rem 1rem; }
  .citebtn{ right:-2.2rem; }
}

/* ---------- Admin ------------------------------------------------------- */

.gate{ max-width:26rem; border:1px solid var(--rule); padding:1.25rem; }
.gate p{ font-size:.8125rem; color:var(--muted); }
.gate input{ font:inherit; padding:.45rem .5rem; border:1px solid var(--rule); width:8rem; letter-spacing:.3em; }

.adminbar{ display:flex; flex-wrap:wrap; gap:.5rem; align-items:center; padding-bottom:.75rem; margin-bottom:1.25rem; border-bottom:1px solid var(--rule); }
.adminbar .spacer{ flex:1; }

.admingrid{ display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); gap:2rem; align-items:start; }
@media (max-width:1100px){ .admingrid{ grid-template-columns:1fr; } }

.formgrid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.7rem; }
.formgrid .full{ grid-column:1/-1; }
.formgrid label{ display:block; font-size:.6875rem; color:var(--muted); margin-bottom:.15rem; }
.formgrid input,.formgrid select,.formgrid textarea{ width:100%; font:inherit; font-size:.8125rem; padding:.4rem .5rem; border:1px solid var(--rule); background:#fff; }
.formgrid textarea{ min-height:4rem; resize:vertical; }
.formgrid .hint{ font-size:.6875rem; color:var(--muted); margin:.15rem 0 0; }
.fieldfoot{ display:flex; align-items:center; gap:.6rem; margin:.2rem 0 0; font-size:.6875rem; color:var(--muted); }
.fieldfoot label{ display:flex; align-items:center; gap:.25rem; margin:0; cursor:pointer; }
.fieldfoot input[type=checkbox]{ width:auto; }
.field-off > label:first-child,.field-off input,.field-off textarea,.field-off select{ opacity:.45; }
.blockgrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(15rem,1fr)); gap:.35rem .9rem; }
.blockgrid label{ display:flex; align-items:center; gap:.4rem; font-size:.8125rem; }

/* Site editor tabs */
.tabstrip{ display:flex; flex-wrap:wrap; gap:.15rem; border-bottom:1px solid var(--rule); margin-bottom:1rem; }
.tabbtn{
  font:inherit; font-size:.8125rem; background:none; border:1px solid transparent; border-bottom:0;
  padding:.4rem .7rem; cursor:pointer; color:var(--muted); margin-bottom:-1px;
}
.tabbtn:hover{ color:var(--navy); }
.tabbtn[aria-selected="true"]{
  color:var(--navy); font-weight:700; background:#fff;
  border-color:var(--rule); border-bottom:1px solid #fff;
}
.typesample{ border:1px solid var(--rule); background:#fff; padding:.5rem; margin-bottom:1rem; }
.typesample .doc{ border-top:1px solid var(--rule-soft); }

.coverprev{ border:1px solid var(--rule); background:var(--tint); padding:.5rem; margin-bottom:1rem; }
.coverpage{
  background:#fff; border:1px solid var(--rule); min-height:22rem;
  display:flex; flex-direction:column; font-family:var(--ui);
}
.coverpage .cp-band{ display:flex; justify-content:space-between; gap:1rem; color:#444; padding:.2rem 0; }
.coverpage .cp-head{ margin-bottom:auto; }
.coverpage .cp-foot{ margin-top:auto; }
.coverpage .cp-cover{ text-align:center; padding:2rem 0; }
.coverpage .cp-kicker{ font-size:.6875rem; letter-spacing:.22em; text-transform:uppercase; color:#333; margin:0 0 .8rem; }
.coverpage .cp-title{ font-weight:700; line-height:1.2; margin:0 0 .8rem; }
.coverpage .cp-sub{ font-size:.8125rem; margin:0 0 .2rem; }
.coverpage .cp-note{ font-size:.75rem; color:#444; margin:0; }
.coverpage .cp-foot-note{ font-size:.6875rem; }
.coverpage .cp-cover .cp-foot{ font-size:.6875rem; color:#555; margin:2.5rem auto 0; max-width:34em; }
.boolfield{ display:flex; align-items:center; gap:.5rem; }
.boolfield > label:first-child{ order:2; margin:0; font-size:.8125rem; color:var(--ink); }
.boolfield input[type=checkbox]{ width:auto; order:1; }
.boolfield .fieldfoot{ order:3; margin-left:auto; }
.blockgrid input{ width:auto; }
.linkpicker{ border:1px solid var(--rule); max-height:11rem; overflow:auto; padding:.35rem .5rem; background:#fff; }
.linkpicker label{ display:flex; align-items:center; gap:.4rem; font-size:.8125rem; padding:.15rem 0; margin:0; }
.linkpicker input{ width:auto; }
.linkpicker .tag{ font-size:.6875rem; }
.logobox{ display:flex; gap:1rem; align-items:flex-start; border:1px solid var(--rule); padding:.75rem; margin-bottom:.9rem; }
.logoprev{ width:72px; height:72px; object-fit:contain; border:1px solid var(--rule-soft); background:#fff; padding:.25rem; flex:0 0 auto; }
.logoside{ flex:1; min-width:0; }
.logoside input[type=text]{ width:100%; font:inherit; font-size:.8125rem; padding:.4rem .5rem; border:1px solid var(--rule); }
.logoside label{ display:block; font-size:.6875rem; color:var(--muted); margin:.5rem 0 .15rem; }
.logoside input[type=file]{ font-size:.8125rem; }

/* Table editor */
.tabedit{ border:1px solid var(--rule); padding:.5rem; margin-top:.3rem; }
.tabopts{ display:flex; flex-wrap:wrap; gap:.6rem; align-items:center; margin-bottom:.5rem; }
.tabopts input.wide{ flex:1; min-width:12rem; font:inherit; font-size:.8125rem; padding:.3rem .4rem; border:1px solid var(--rule); }
.tabopts label{ display:flex; align-items:center; gap:.3rem; font-size:.75rem; color:var(--muted); }
.tabopts input[type=checkbox]{ width:auto; }
.tabgrid{ border-collapse:collapse; width:100%; }
.tabgrid > tr > th{ width:1%; white-space:nowrap; padding:.15rem .25rem; vertical-align:top; background:var(--tint); }
.tabgrid td{ border:1px solid var(--rule); padding:.25rem; vertical-align:top; min-width:8rem; }
.tabgrid td:last-child{ border:0; min-width:0; width:1%; }
.tabgrid td.ishead{ background:#FAFBFC; }
.tabgrid td.merged{ background:repeating-linear-gradient(135deg,#F2F4F7 0 6px,#E9EDF2 6px 12px); border-style:dashed; }
.tabgrid td[data-span]::after{
  content:attr(data-span); position:absolute; font-size:.5625rem; color:var(--muted);
}
.tabgrid td{ position:relative; }
.tabgrid td[data-span]::after{ top:.2rem; right:.25rem; }
.celltools{ display:flex; gap:.15rem; align-items:center; margin-bottom:.2rem; }
.celltools .iconbtn{ font-size:.6875rem; padding:.05rem .3rem; }
.celltools .alignsel{ font:inherit; font-size:.625rem; padding:0; border:1px solid var(--rule); color:var(--muted); }

.addrow{ display:flex; flex-wrap:wrap; gap:.35rem; margin:.75rem 0; }
.structure{ list-style:none; margin:0; padding:0; }
.node-card{ border:1px solid var(--rule); margin-bottom:.4rem; }
.node-card > .nhead{ display:flex; align-items:center; gap:.4rem; padding:.35rem .45rem; background:var(--tint); }
.node-card.is-section > .nhead{ background:#fff; border-bottom:1px solid var(--rule-soft); }
.node-card .kind{ font-size:.6875rem; color:var(--muted); flex:0 0 4.6rem; }
.node-card input.n{ width:6.5rem; font:inherit; font-size:.8125rem; padding:.25rem .4rem; border:1px solid var(--rule); }
.node-card input.h{ flex:1; min-width:6rem; font:inherit; font-size:.8125rem; padding:.25rem .4rem; border:1px solid var(--rule); }
.node-card .nbody{ padding:.45rem .5rem .5rem; }
.node-card.depth-1{ margin-left:0; }
.node-card.depth-2{ margin-left:.9rem; }
.node-card.depth-3{ margin-left:1.8rem; }
.node-card.depth-4{ margin-left:2.7rem; }
.node-card.depth-5{ margin-left:3.6rem; }

.node-card .nfoot{ display:flex; flex-wrap:wrap; gap:.3rem; padding:.3rem .45rem; border-top:1px dotted var(--rule); }
.node-card.is-section .nfoot{ border-top-color:var(--rule-soft); }
.iconbtn.twistbtn{ flex:0 0 1.5rem; width:1.5rem; text-align:center; font-size:.5625rem; padding:.15rem 0; }
.iconbtn{ font:inherit; font-size:.75rem; background:#fff; border:1px solid var(--rule); cursor:pointer; padding:.15rem .4rem; color:var(--muted); }
.iconbtn:hover{ color:var(--navy); border-color:var(--navy); }
.iconbtn.del:hover{ color:#9B2C2C; border-color:#9B2C2C; }

.bodyitem{ border-left:2px solid var(--rule); padding:.35rem 0 .35rem .5rem; margin-bottom:.4rem; }
.bodyitem .top{ display:flex; gap:.4rem; align-items:center; margin-bottom:.25rem; }
.bodyitem .top select,.bodyitem .top input{ font:inherit; font-size:.75rem; padding:.2rem .3rem; border:1px solid var(--rule); }
.bodyitem .top .spacer{ flex:1; }
.bodyitem textarea,.bodyitem input.wide{ width:100%; font:inherit; font-size:.8125rem; padding:.3rem .4rem; border:1px solid var(--rule); }
.bodyitem textarea{ min-height:2.8rem; resize:vertical; font-family:var(--doc); font-size:.9375rem; }
.subrow{ display:flex; gap:.3rem; margin-top:.3rem; align-items:flex-start; }
.subrow .num{ width:3.6rem; flex:0 0 3.6rem; font:inherit; font-size:.8125rem; padding:.3rem; border:1px solid var(--rule); }
.subrow textarea{ min-height:2.2rem; }
.subrow.deep{ margin-left:1.6rem; }
.nestbody{ margin:.4rem 0 .2rem 1.1rem; padding-left:.6rem; border-left:2px solid var(--gold); }
.hintrow{ font-size:.6875rem; color:var(--muted); margin:.2rem 0 0; }

.previewbox{ border:1px solid var(--rule); max-height:80vh; overflow:auto; position:sticky; top:.75rem; }
.previewbox .doc{ padding:1rem 1.25rem 2rem; font-size:1rem; max-width:none; }
.savedlist{ list-style:none; margin:0; padding:0; font-size:.8125rem; }
.savedlist li{ display:flex; gap:.5rem; align-items:center; padding:.4rem 0; border-bottom:1px solid var(--rule-soft); }
.savedlist li .grow{ flex:1; }
.flash{ font-size:.8125rem; padding:.5rem .75rem; border:1px solid var(--rule); background:var(--tint); margin-bottom:1rem; }
.flash.ok{ border-color:#2F855A; color:#22543D; background:#F0FFF4; }
.flash.err{ border-color:#9B2C2C; color:#742A2A; background:#FFF5F5; }

/* ---------- Rich text editing ------------------------------------------- */

.rte{ border:1px solid var(--rule); background:#fff; }
.rte__bar{ display:flex; flex-wrap:wrap; gap:.15rem; padding:.2rem; border-bottom:1px solid var(--rule-soft); background:var(--tint); }
.rte__btn{
  font:inherit; font-size:.75rem; min-width:1.7rem; padding:.12rem .35rem; cursor:pointer;
  background:#fff; border:1px solid var(--rule); color:var(--ink); line-height:1.3;
}
.rte__btn:hover{ border-color:var(--navy); color:var(--navy); }
.rte__btn--wide{ padding-left:.5rem; padding-right:.5rem; }
.rte__input{
  font-family:var(--doc); font-size:.9375rem; line-height:1.45;
  padding:.35rem .45rem; min-height:2.6rem; outline:none;
}
.rte--small .rte__input{ min-height:1.9rem; }
.rte__input:focus{ box-shadow:inset 0 0 0 2px rgba(18,41,75,.18); }
.rte__input:empty::before{ content:attr(data-placeholder); color:#9AA2AC; }
.rte__input a{ color:var(--link); text-decoration:underline; }
.subrow .rte{ flex:1; min-width:0; }

.modalback{
  position:fixed; inset:0; background:rgba(16,22,32,.45); z-index:100;
  display:flex; align-items:flex-start; justify-content:center; padding:4vh 1rem;
  overflow:auto;
}
.modalbox{ background:#fff; border:1px solid var(--rule); max-width:34rem; width:100%; padding:1.1rem 1.25rem 1rem; }
.modalbox h2.sec{ margin-top:0; }
.modalbox select,.modalbox input{ width:100%; font:inherit; font-size:.8125rem; padding:.4rem .5rem; border:1px solid var(--rule); background:#fff; }
.modalfoot{ display:flex; justify-content:flex-end; gap:.5rem; margin-top:1rem; padding-top:.75rem; border-top:1px solid var(--rule-soft); }
.radiorow{ display:flex; flex-wrap:wrap; gap:1.25rem; margin-bottom:.9rem; font-size:.8125rem; }
.radiorow label{ display:flex; align-items:center; gap:.35rem; }
.radiorow input{ width:auto; }

/* Document importer */
.modalbox--wide{ max-width:60rem; }
.pastebox{
  border:1px solid var(--rule); background:#fff; min-height:14rem; max-height:40vh; overflow:auto;
  padding:.6rem .7rem; font-family:var(--doc); font-size:.9375rem; line-height:1.45; outline:none;
}
.pastebox:focus{ box-shadow:inset 0 0 0 2px rgba(18,41,75,.18); }
.pastebox:empty::before{ content:attr(data-placeholder); color:#9AA2AC; }
.importopts{ display:flex; flex-wrap:wrap; gap:1rem; margin-top:.5rem; font-size:.75rem; color:var(--muted); }
.importopts label{ display:flex; align-items:center; gap:.35rem; }
.importopts input{ width:auto; }

.reviewlist{ border:1px solid var(--rule); max-height:52vh; overflow:auto; }
.reviewrow{
  display:flex; gap:.4rem; align-items:flex-start;
  padding:.3rem .4rem; border-bottom:1px solid var(--rule-soft);
}
.reviewrow:nth-child(odd){ background:#FCFDFE; }
.reviewrow select{ flex:0 0 10rem; font:inherit; font-size:.75rem; padding:.15rem; border:1px solid var(--rule); }
.reviewrow .rvnum{ flex:0 0 4.5rem; font:inherit; font-size:.75rem; padding:.15rem .3rem; border:1px solid var(--rule); }
.reviewrow .rvnum:disabled{ background:var(--tint); color:var(--rule); }
.reviewrow .rvtext{ flex:1; min-width:0; font-family:var(--doc); font-size:.875rem; line-height:1.35; padding-top:.15rem; }
.reviewrow[data-kind="chapter"],.reviewrow[data-kind="part"],
.reviewrow[data-kind="div"],.reviewrow[data-kind="subdiv"],
.reviewrow[data-kind="schedule"]{ background:#EEF3FA; }
.reviewrow[data-kind="section"]{ background:#F4F8F4; }
.reviewrow[data-kind="skip"] .rvtext{ opacity:.4; text-decoration:line-through; }
.reviewrow[data-kind="p"] .rvtext{ color:#333; }

/* Cross-references inside the statute text */
.doc a.xref{ color:var(--link); text-decoration:none; }
.doc a.xref:hover{ text-decoration:underline; }
.doc a[target="_blank"]{ color:var(--link); }

/* ---------- Print ------------------------------------------------------- */

/* The printable copy is built by print.js and only ever shown on paper. */
.printonly{ display:none; }

@media print{
  .masthead,.mainnav,.crumbs,.rail,.toolbar,.sitefoot,.provnav,.statusbanner,.railtoggle,.citebtn,.citetoast{ display:none !important; }
  body.has-printdoc .viewshell{ display:none !important; }
  .printonly{ display:block; }

  #printdoc .pcover{ break-after:page; page-break-after:always; text-align:center; padding-top:18%; }
  #printdoc .pcover__logo{ display:block; margin:0 auto 2rem; }
  #printdoc .pcover__kicker{
    font-family:var(--ui); font-size:9pt; letter-spacing:.22em; text-transform:uppercase;
    margin:0 0 1rem; color:#333;
  }
  #printdoc .pcover__title{ font-family:var(--ui); font-weight:700; margin:0 0 1rem; line-height:1.2; }
  #printdoc .pcover__sub{ font-family:var(--ui); font-size:11pt; margin:0 0 .4rem; }
  #printdoc .pcover__note{ font-family:var(--ui); font-size:10pt; color:#444; margin:0; }
  #printdoc .pcover__foot{
    font-family:var(--ui); font-size:8.5pt; color:#555; margin:6rem auto 0; max-width:34em;
  }

  #printdoc .pcontents{ break-after:page; page-break-after:always; }
  #printdoc .pcontents h2{ font-family:var(--ui); font-size:14pt; margin:0 0 .8rem; }
  #printdoc .pcontents ul{ list-style:none; margin:0; padding:0; font-size:10pt; }
  #printdoc .pcontents li{ padding:.1rem 0; }
  #printdoc .pcontents .pc-head{ font-family:var(--ui); font-weight:700; padding-top:.5rem; }
  #printdoc .pcontents .pc-lvl2{ font-size:9.5pt; }
  #printdoc .pcontents .pc-lvl3,#printdoc .pcontents .pc-lvl4{ font-weight:400; padding-left:1rem; }
  #printdoc .pcontents .pc-leaf{ padding-left:1.6rem; }
  #printdoc .pcontents .pc-num{ display:inline-block; min-width:2.6rem; }

  #printdoc .pfwrap{ width:100%; border-collapse:collapse; }
  #printdoc .pfwrap > thead > tr > td,#printdoc .pfwrap > tfoot > tr > td{ padding:0; border:0; }
  #printdoc .pfwrap > tbody > tr > td{ padding:0; border:0; }
  #printdoc .pfhead,#printdoc .pffoot{
    display:flex; justify-content:space-between; gap:1rem;
    font-family:var(--ui); color:#444;
  }
  #printdoc .pfhead{ padding-bottom:3pt; margin-bottom:8pt; }
  #printdoc .pffoot{ padding-top:3pt; margin-top:8pt; }
  #printdoc .doc{ max-width:none; padding:0; }
  #printdoc .doc__title{ break-after:avoid; page-break-after:avoid; }
  #printdoc .heading{ break-after:avoid; page-break-after:avoid; }
  .viewshell{ display:block; height:auto; border:0; }
  .docscroll{ overflow:visible; }
  .doc{ max-width:none; padding:0; font-size:11.5pt; }
  .doc .heading{ grid-template-columns:minmax(min-content, var(--head-col)) 1fr; }
  .doc .heading .lbl,.prov__num,.prov .row > .rn{ white-space:nowrap; }
  .prov{ break-inside:avoid; }
  a{ color:#000; text-decoration:none; }
}

/* Fallback for browsers without CSS grid. A float gives the same hanging
   indent and, like the grid, lets a long label push the text across instead of
   wrapping onto a second line. */
@supports not (display:grid){
  .doc .heading,.prov__head,.prov .inserted__head,.prov .row{ display:block; }
  .doc .heading::after,.prov__head::after,.prov .inserted__head::after,.prov .row::after{
    content:''; display:block; clear:both;
  }
  .doc .heading .lbl{ float:left; min-width:var(--head-col); white-space:nowrap; padding-right:1rem; }
  .prov__num{ float:left; min-width:var(--num-col); white-space:nowrap; padding-right:.5rem; }
  .prov--wide .prov__num{ min-width:var(--head-col); padding-right:1rem; }
  .prov .inserted__head > span:first-child,
  .prov .inserted__heading > span:first-child{
    float:left; min-width:calc(var(--num-col) + var(--step)); white-space:nowrap; padding-right:.5rem;
  }
  .prov .inserted__heading{ display:block; }
  .prov .inserted__heading::after{ content:''; display:block; clear:both; }
  .prov .inserted__heading > span:first-child{ min-width:var(--head-col); }
  .prov .row > .rn{ float:left; min-width:var(--step); white-space:nowrap; padding-right:.5rem; }
  .prov .row > .rt{ display:block; overflow:hidden; }
}

@media (prefers-reduced-motion:reduce){ *{ animation:none !important; transition:none !important; scroll-behavior:auto !important; } }
