/* The Almanac register. Every colour that carries text was measured against its
   own background rather than picked by eye: the old gold sat at 3.19:1 on paper
   and ink-faint at 3.54:1, both under the 4.5:1 floor, on a record two people
   will still be reading in 2042. Ratios below are against --paper. */
:root{
  --paper:#F2ECE0;
  --paper-deep:#E8E0CE;
  --card:#F8F4EA;
  --band:#F8F4EA;              /* alternating almanac row */
  --ink:#221F18;               /* 13.98:1 */
  --ink-soft:#55503F;          /*  6.85:1 */
  --ink-faint:#665F4D;         /*  5.15:1, was 3.54:1 */
  --sage:#43563A;              /*  6.78:1 */
  --sage-deep:#2F3D2A;         /*  9.80:1 */
  --sage-wash:#E4E9DC;
  --clay:#8F4F2E;              /*  5.37:1, was 4.17:1 */
  --clay-wash:#F3E7DC;
  --gold:#7A6019;              /*  5.08:1, was 3.40:1 */
  --rule:#D6CCB6;
  --rule-soft:#E4DBC8;
  --shadow:0 1px 2px rgba(32,29,25,.04),0 10px 30px -16px rgba(32,29,25,.16);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:"Archivo",ui-sans-serif,sans-serif;font-size:16px;line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.serif{font-family:"Spectral",Georgia,serif;font-weight:600;letter-spacing:-.018em;margin:0}
a{color:var(--sage-deep)}
.wrap{max-width:820px;margin:0 auto;padding:0 24px}
.eyebrow{font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--sage);font-weight:700}
.tnum{font-variant-numeric:tabular-nums}

/* ---------- nav ---------- */
.nav{position:sticky;top:0;z-index:50;background:rgba(250,247,240,.93);backdrop-filter:blur(12px);border-bottom:1px solid var(--rule)}
.nav-in{max-width:820px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.nav .mark{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:19px;margin-right:auto;text-decoration:none;color:var(--ink);white-space:nowrap}
.nav a.lnk{font-size:13.5px;white-space:nowrap;font-weight:600;color:var(--ink-soft);text-decoration:none;padding:4px 0;border-bottom:1.5px solid transparent}
.nav a.lnk:hover{color:var(--sage-deep);border-color:var(--sage)}
.nav a.lnk[aria-current]{color:var(--sage-deep);border-color:var(--sage)}
@media(max-width:600px){.nav-in{gap:14px;padding:10px 20px}.nav .mark{width:100%;margin-right:0}.nav a.lnk{font-size:13px}}

/* ---------- reveal ---------- */
.rv{opacity:0;transform:translateY(14px);transition:opacity .7s cubic-bezier(.2,.7,.3,1),transform .7s cubic-bezier(.2,.7,.3,1)}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}

/* ---------- hero ---------- */
.hero{padding:78px 0 8px}
.hero h1{font-size:clamp(40px,7.4vw,74px);line-height:1.02;margin:20px 0 0;max-width:16ch}
.hero .lede{font-size:clamp(17px,2.2vw,19.5px);color:var(--ink-soft);max-width:56ch;margin:24px 0 0;line-height:1.62}

.countbar{margin:38px 0 0;padding:0}
.countbar .row{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-weight:700}
.countbar .row b{color:var(--sage-deep)}
.track{position:relative;height:5px;border-radius:99px;background:var(--rule-soft);margin-top:10px;overflow:hidden}
.track i{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,var(--sage),#7B8C69);border-radius:99px;width:0;transition:width 1.1s cubic-bezier(.2,.7,.3,1)}

/* ---------- verdict ---------- */
.verdict{
  margin:44px 0 0;background:var(--card);border:1px solid var(--rule);border-left:3px solid var(--sage);
  border-radius:14px;padding:28px 30px;box-shadow:var(--shadow)
}
.verdict h2{font-size:26px;line-height:1.22;margin-bottom:12px}
.verdict p{margin:0 0 12px;color:var(--ink-soft);font-size:16px;line-height:1.66}
.verdict p:last-child{margin-bottom:0}
.verdict strong{color:var(--ink);font-weight:700}
@media(max-width:600px){.verdict{padding:24px 20px}}

/* ---------- sections ---------- */
section.blk{margin-top:76px}
.blk-head{display:flex;align-items:baseline;gap:13px;padding-bottom:13px;border-bottom:1px solid var(--rule)}
.blk-head .n{font-size:11.5px;font-weight:700;color:var(--sage);letter-spacing:.12em;flex:none}
.blk-head h2{font-size:clamp(26px,3.6vw,33px);line-height:1.16}
.blk-intro{color:var(--ink-soft);margin:16px 0 0;max-width:62ch;font-size:16px;line-height:1.66}

/* ---------- timeline ---------- */
.tl{margin-top:34px;position:relative;padding-left:30px}
.tl:before{content:"";position:absolute;left:6px;top:8px;bottom:26px;width:1.5px;background:linear-gradient(180deg,var(--rule) 0%,var(--rule) 88%,transparent 100%)}
.tl-item{position:relative;padding:0 0 34px}
.tl-item:last-child{padding-bottom:0}
.tl-dot{
  position:absolute;left:-30px;top:4px;width:13px;height:13px;border-radius:50%;
  background:var(--paper);border:2px solid var(--rule);box-sizing:border-box
}
.tl-item.done .tl-dot{background:var(--sage);border-color:var(--sage)}
.tl-item.now .tl-dot{background:var(--card);border-color:var(--sage);box-shadow:0 0 0 4px var(--sage-wash)}
.tl-item.dest .tl-dot{background:var(--gold);border-color:var(--gold);width:15px;height:15px;left:-31px;top:3px}
.tl-item.later .tl-dot{border-style:dashed}

.tl-date{font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;font-weight:700;color:var(--sage);margin-bottom:3px}
.tl-item.dest .tl-date{color:var(--gold)}
.tl-item.later .tl-date{color:var(--ink-faint)}
.tl-title{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:24px;line-height:1.24;margin-bottom:7px}
.tl-item.dest .tl-title{font-size:31px}
.tl-body{color:var(--ink-soft);font-size:16px;line-height:1.62;max-width:58ch}
.tl-body ol{margin:9px 0 0;padding-left:0;list-style:none;counter-reset:none}
.tl-body ol li{margin:0 0 4px;padding-left:22px;position:relative}
.tl-body ol li:before{content:attr(data-n);position:absolute;left:0;color:var(--sage);font-weight:700;font-size:13.5px;top:.5px}
.tag{
  display:inline-block;font-size:11px;letter-spacing:.09em;text-transform:uppercase;font-weight:700;
  padding:3px 9px;border-radius:99px;margin-left:9px;vertical-align:3px
}
.tag.ok{background:var(--sage-wash);color:var(--sage-deep)}
.tag.you{background:var(--clay-wash);color:var(--clay)}

/* ---------- quote ---------- */
.quote{
  margin-top:34px;background:var(--sage-wash);border-radius:16px;padding:36px 38px;
  border:1px solid #DDE3D3
}
.quote blockquote{margin:0;font-family:"Spectral",Georgia,serif;font-weight:600;font-size:clamp(22px,3.2vw,29px);line-height:1.34;color:var(--sage-deep)}
.quote cite{display:block;margin-top:16px;font-style:normal;font-size:12.5px;letter-spacing:.11em;text-transform:uppercase;font-weight:700;color:var(--sage)}
@media(max-width:600px){.quote{padding:26px 22px}}

/* ---------- cards ---------- */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(232px,1fr));gap:16px;margin-top:26px}
.c{background:var(--card);border:1px solid var(--rule);border-radius:13px;padding:22px 22px 20px;box-shadow:var(--shadow)}
.c h3{font-size:19px;line-height:1.28;margin-bottom:8px}
.c p{margin:0;color:var(--ink-soft);font-size:14.5px;line-height:1.6}
.c .lab{font-size:11px;letter-spacing:.13em;text-transform:uppercase;font-weight:700;color:var(--sage);margin-bottom:9px}

/* ---------- vaccine rows ---------- */
.vax{margin-top:26px;border-top:1px solid var(--rule)}
.vrow{display:grid;grid-template-columns:1fr auto;gap:8px 18px;align-items:center;padding:15px 2px;border-bottom:1px solid var(--rule-soft)}
.vrow .vn{font-weight:700;font-size:16px}
.vrow .vd{grid-column:1/-1;color:var(--ink-soft);font-size:14.5px;line-height:1.55;margin-top:-4px}
.pill{font-size:11.5px;letter-spacing:.07em;text-transform:uppercase;font-weight:700;padding:5px 11px;border-radius:99px;white-space:nowrap}
.pill.one{background:var(--sage-wash);color:var(--sage-deep)}
.pill.long{background:var(--clay-wash);color:var(--clay)}

/* ---------- risks ---------- */
.risk{display:grid;grid-template-columns:1fr;gap:0;margin-top:26px;border-top:1px solid var(--rule)}
.risk .r{padding:18px 2px;border-bottom:1px solid var(--rule-soft)}
.risk .r .w{font-weight:700;font-size:16px;margin-bottom:5px}
.risk .r .m{color:var(--ink-soft);font-size:14.5px;line-height:1.6}
.risk .r .m b{color:var(--sage-deep);font-weight:700}

/* ---------- checklist (supplies) ---------- */
.list{margin-top:22px;border-top:1px solid var(--rule)}
.item{display:flex;gap:13px;align-items:flex-start;padding:13px 2px;border-bottom:1px solid var(--rule-soft);cursor:pointer}
.item input{margin:3px 0 0;width:17px;height:17px;accent-color:var(--sage);flex:none;cursor:pointer}
.item .tx{font-size:16px;line-height:1.5}
.item .tx small{display:block;color:var(--ink-faint);font-size:13.5px;margin-top:2px;line-height:1.5}
.item.on .tx{color:var(--ink-faint);text-decoration:line-through;text-decoration-color:var(--rule)}
.item.on .tx small{text-decoration:none}
.qty{font-size:11.5px;font-weight:700;color:var(--sage);letter-spacing:.06em;margin-left:7px;white-space:nowrap}

/* ---------- file rows ---------- */
.files{margin-top:24px;border-top:1px solid var(--rule)}
.f{display:flex;align-items:center;gap:16px;padding:19px 2px;min-height:56px;border-bottom:1px solid var(--rule-soft);text-decoration:none;color:inherit}
.f:hover .fn{color:var(--sage-deep)}
.f .fi{
  flex:none;width:38px;height:46px;border:1px solid var(--rule);border-radius:4px;background:var(--card);
  display:flex;align-items:flex-end;justify-content:center;padding-bottom:5px;
  font-size:10px;font-weight:700;letter-spacing:.05em;color:var(--ink-faint)
}
.f .fx{flex:1;min-width:0}
.f .fn{font-weight:700;font-size:16px;line-height:1.35}
.f .fd{color:var(--ink-soft);font-size:14px;line-height:1.5;margin-top:3px}
.f .fa{flex:none;font-size:12.5px;font-weight:700;color:var(--sage);letter-spacing:.04em}

/* ---------- email block ---------- */
.mail{background:var(--card);border:1px solid var(--rule);border-radius:14px;padding:26px 28px;margin-top:24px;box-shadow:var(--shadow)}
.mail .subj{font-size:13px;color:var(--ink-faint);border-bottom:1px solid var(--rule-soft);padding-bottom:12px;margin-bottom:16px}
.mail .subj b{color:var(--ink);font-weight:700}
.mail .body{white-space:pre-wrap;font-size:16px;line-height:1.68;color:var(--ink)}
.mail .acts{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
@media(max-width:600px){.mail{padding:22px 18px}}

/* ---------- buttons ---------- */
.btn{
  font:inherit;font-size:14px;font-weight:700;cursor:pointer;border-radius:9px;padding:10px 18px;
  border:1px solid var(--rule);background:var(--card);color:var(--ink);text-decoration:none;
  display:inline-block;transition:all .15s ease
}
.btn:hover{border-color:var(--sage);color:var(--sage-deep)}
.btn.primary{background:var(--sage);border-color:var(--sage);color:#fff}
.btn.primary:hover{background:var(--sage-deep);border-color:var(--sage-deep);color:#fff}
.btn.quiet{border-color:transparent;color:var(--ink-faint);font-weight:600;padding-left:8px;padding-right:8px}
.btn.quiet:hover{color:var(--clay)}

/* ---------- footer ---------- */
.foot{margin-top:92px;padding:30px 0 70px;border-top:1px solid var(--rule);color:var(--ink-faint);font-size:13.5px;line-height:1.72}
.foot b{color:var(--ink-soft)}

/* =========================================================
   INTAKE FORM PAGES
   ========================================================= */
.fwrap{max-width:860px;margin:0 auto;padding:0 24px 140px}
.masthead{padding:52px 0 26px;border-bottom:1px solid var(--rule)}
.masthead h1{font-size:clamp(32px,5.6vw,48px);line-height:1.06;margin-top:14px}
.masthead .sub{color:var(--ink-soft);margin-top:13px;max-width:60ch;font-size:16px;line-height:1.62}
.notice{background:var(--sage-wash);border:1px solid #DDE3D3;border-radius:12px;padding:16px 18px;margin-top:24px;font-size:14.5px;color:var(--sage-deep);line-height:1.6}

section.sec{margin-top:48px}
.sec-head{display:flex;align-items:baseline;gap:13px;padding-bottom:11px;border-bottom:1px solid var(--rule)}
.sec-num{font-size:11.5px;font-weight:700;color:var(--sage);letter-spacing:.1em;flex:none}
.sec-head h2{font-size:26px;line-height:1.2}
.sec-intro{color:var(--ink-soft);font-size:15px;margin:13px 0 0;max-width:64ch}

.grid{display:grid;grid-template-columns:1fr 1fr;gap:21px 20px;margin-top:23px}
.field.full{grid-column:1/-1}
@media(max-width:640px){.grid{grid-template-columns:1fr}.field.full{grid-column:auto}}

label.q{display:block;font-size:14.5px;font-weight:600;margin-bottom:7px;line-height:1.45}
.hint{display:block;font-weight:400;color:var(--ink-faint);font-size:13px;margin-top:3px}
input[type=text],input[type=date],textarea{
  width:100%;font:inherit;font-size:16px;color:var(--ink);background:var(--card);
  border:1px solid var(--rule);border-radius:9px;padding:10px 12px;transition:border-color .15s ease,box-shadow .15s ease
}
textarea{resize:none;overflow:hidden;min-height:46px;line-height:1.6}
input:focus,textarea:focus{outline:none;border-color:var(--sage);box-shadow:0 0 0 3px rgba(95,112,80,.13)}

.opts{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px}
.opt{display:inline-flex;align-items:center;gap:7px;cursor:pointer;border:1px solid var(--rule);background:var(--card);border-radius:999px;padding:7px 14px;font-size:14px;color:var(--ink-soft);transition:all .15s ease;user-select:none}
.opt input{accent-color:var(--sage);margin:0;width:14px;height:14px}
.opt:hover{border-color:var(--sage)}
.opt.on{background:var(--sage-wash);border-color:var(--sage);color:var(--sage-deep);font-weight:600}

.bar{position:fixed;left:0;right:0;bottom:0;z-index:40;background:rgba(250,247,240,.93);backdrop-filter:blur(10px);border-top:1px solid var(--rule)}
.bar-in{max-width:860px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.status{font-size:13px;color:var(--ink-faint);margin-right:auto;line-height:1.4}
.status b{color:var(--sage-deep);font-weight:700}
@media(max-width:640px){.status{width:100%;margin-bottom:4px}}

.printhead{display:none}

/* ---------- print ---------- */
@page{margin:16mm 15mm 14mm}
@media print{
  body{background:#fff;font-size:10.5pt;line-height:1.42}
  .bar,.masthead,.notice,.nav,.no-print,.foot{display:none !important}
  .fwrap,.wrap{max-width:none;padding:0}
  .printhead{display:block;border-bottom:1.5pt solid #201D19;padding-bottom:7pt;margin-bottom:16pt}
  .printhead .t{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:21pt;line-height:1.1}
  .printhead .s{display:flex;justify-content:space-between;gap:16pt;font-size:9pt;color:#000;margin-top:6pt;letter-spacing:.02em}
  section.sec{margin-top:15pt}
  .sec-head{border-bottom:.75pt solid #999;padding-bottom:3pt;break-after:avoid}
  .sec-head h2{font-size:13.5pt}
  .sec-num{color:#000;font-size:8.5pt}
  .sec-intro{font-size:9pt;color:#333;margin-top:6pt;break-after:avoid}
  .grid{display:block;margin-top:9pt}
  .field{break-inside:avoid;margin-bottom:9pt}
  label.q{font-size:9.5pt;font-weight:700;margin-bottom:2pt}
  .hint{font-size:8.5pt;color:#555}
  input[type=text],input[type=date],textarea{
    border:none;border-bottom:.75pt solid #666;border-radius:0;padding:1pt 2pt;font-size:10.5pt;
    background:transparent;color:#000;-webkit-print-color-adjust:exact;print-color-adjust:exact
  }
  textarea{min-height:0;line-height:1.5}
  .opts{gap:4pt;margin-top:1pt}
  .opt{border:none;background:transparent;padding:0 10pt 0 0;font-size:9.5pt;color:#000;font-weight:400;border-radius:0}
  .opt.on{color:#000;font-weight:700}
  .opt input{appearance:none;-webkit-appearance:none;width:8.5pt;height:8.5pt;border:.75pt solid #000;border-radius:1pt;position:relative;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .opt input[type=radio]{border-radius:50%}
  .opt input:checked::after{content:"";position:absolute;inset:1.5pt;background:#000;border-radius:.5pt;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .opt input[type=radio]:checked::after{border-radius:50%}
}

/* supply buy links */
.item .tx small.buy{margin-top:6px;font-size:13px}
.item .tx small.buy a{color:var(--sage-deep);font-weight:700;text-decoration:none;border-bottom:1px solid var(--rule)}
.item .tx small.buy a:hover{border-color:var(--sage)}
.item.on .tx small.buy{opacity:.45}

/* =========================================================
   IPHONE PASS
   Tap targets to 44px, no type under 12px, and 16px inputs
   so iOS Safari does not zoom the page on focus.
   ========================================================= */
@media (max-width: 700px) {
  .nav-in { padding: 6px 20px; gap: 4px 16px; flex-wrap: nowrap; align-items: center }
  .nav .mark { width: auto; margin-right: auto; font-size: 17px; display: flex; align-items: center; min-height: 44px }
  .nav .mk-yr { display: none }
  .nav a.lnk {
    font-size: 13.5px; display: inline-flex; align-items: center;
    min-height: 44px; padding: 0; border-bottom-width: 2px
  }

  /* nothing decorative drops below 12px on a phone */
  .eyebrow, .tl-date, .c .lab, .qty, .status, .countbar .row { font-size: 12px }
  .f .fi { font-size: 12px }
  .tl-body, .c p, .risk .r .m, .f .fd, .blk-intro { font-size: 16px }

  /* real touch areas on inline links */
  .item .tx small.buy { margin-top: 9px }
  .item .tx small.buy a { display: inline-block; padding: 7px 0; min-height: 32px }
  .item { padding: 15px 2px }
  .item input { width: 22px; height: 22px; margin-top: 2px }
  .f { padding: 19px 2px }

  /* answer pills reach 44 */
  .opt { min-height: 44px; padding: 9px 16px }
  .opt input { width: 18px; height: 18px }

  /* 16px stops iOS Safari zooming the viewport on field focus */
  input[type=text], input[type=date], textarea { font-size: 16px; padding: 12px }
  textarea { min-height: 52px }

  .bar-in { padding: 10px 20px 14px }
  .btn { padding: 12px 18px; min-height: 44px }
  .btn.quiet { padding-left: 10px; padding-right: 10px }

  .hero { padding-top: 46px }
  .verdict { padding: 22px 18px }
  section.blk { margin-top: 58px }
}

/* safe area for the fixed bar on notched iPhones */
@supports (padding: max(0px)) {
  .bar-in { padding-bottom: max(12px, env(safe-area-inset-bottom)) }
}

@media (max-width: 700px) {
  .pill { font-size: 12px }
  .item .tx small.buy a { padding: 11px 0; min-height: 40px }
}

/* legal citation block */
.law{margin-top:16px;border-left:2px solid var(--rule);padding:2px 0 2px 20px}
.law + .law{margin-top:22px}
.law .cite{font-size:11.5px;letter-spacing:.11em;text-transform:uppercase;font-weight:700;color:var(--sage);margin-bottom:7px}
.law .verb{font-family:"Spectral",Georgia,serif;font-size:19px;line-height:1.45;color:var(--ink)}
.law .gloss{font-size:14.5px;color:var(--ink-soft);line-height:1.6;margin-top:9px}
.law .gloss b{color:var(--sage-deep);font-weight:700}
.law.warn{border-left-color:var(--clay)}
.law.warn .cite{color:var(--clay)}
@media(max-width:700px){.law{padding-left:15px}.law .verb{font-size:17.5px}.law .cite{font-size:12px}}

/* nav compaction on small screens */
@media(max-width:600px){
  .nav-in{gap:0 16px;padding:9px 20px}
  .nav .mark{width:auto;margin-right:auto;font-size:17px}
  .nav .mk-yr{display:none}
  .nav a.lnk{font-size:13px;padding:6px 0}
}
@media(max-width:400px){ .nav-in{gap:0 13px} .nav a.lnk{font-size:12.5px} }



/* ---------- law blocks: point first, quote as evidence ---------- */
.law{margin-top:26px;padding:0 0 0 20px;border-left:2px solid var(--rule)}
.law.warn{border-left-color:var(--clay)}
.law .lp{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:20px;line-height:1.3;letter-spacing:-.014em;margin-bottom:10px}
.law .lq{margin:0;font-size:14.5px;line-height:1.6;color:var(--ink-soft);font-style:normal;
  padding:12px 15px;background:var(--paper-deep);border-radius:9px}
.law.warn .lq{background:var(--clay-wash)}
.law .lc{font-size:13.5px;color:var(--ink-faint);line-height:1.6;margin-top:10px;max-width:62ch;
  letter-spacing:0;text-transform:none;font-weight:400}
.more{margin-top:34px;border-top:1px solid var(--rule);padding-top:8px}
.more summary{cursor:pointer;font-size:14px;font-weight:700;color:var(--sage-deep);
  padding:14px 0;list-style:none;display:flex;align-items:center;gap:9px;min-height:44px}
.more summary::-webkit-details-marker{display:none}
.more summary:before{content:"+";font-size:17px;color:var(--sage);width:14px;line-height:1}
.more[open] summary:before{content:"\2212"}
.more summary:hover{color:var(--sage)}
@media(max-width:600px){
  .law{padding-left:15px;margin-top:22px}
  .law .lp{font-size:18px}
  .law .lq{font-size:14px;padding:11px 13px}
  .law .lc{font-size:13.5px}
}
@media print{.law{break-inside:avoid} .more[open] summary{display:none}}

/* ---------- jump links ---------- */
.jump{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:14.5px;
  font-weight:700;color:var(--sage-deep);text-decoration:none;border-bottom:1.5px solid var(--rule)}
.jump:after{content:"\2193";font-weight:400}
.jump[href="#top"]:after{content:"\2191"}
.jump:hover{border-color:var(--sage);color:var(--sage)}
#authorities .lc{font-size:13.5px}
@media print{.jump{display:none}}

/* ---------- handbook ---------- */
.toc{display:grid;grid-template-columns:repeat(auto-fit,minmax(228px,1fr));gap:2px;margin-top:40px;
  border-top:1px solid var(--rule)}
.tocl{display:block;padding:15px 2px;border-bottom:1px solid var(--rule-soft);text-decoration:none;color:inherit;min-height:44px}
.tocl:hover .tt{color:var(--sage-deep)}
.tocl .tn{display:block;font-size:11px;letter-spacing:.13em;font-weight:700;color:var(--sage);margin-bottom:3px}
.tocl .tt{display:block;font-family:"Spectral",Georgia,serif;font-weight:600;font-size:19px;line-height:1.25}
.tocl .ts{display:block;font-size:13.5px;color:var(--ink-faint);line-height:1.5;margin-top:2px}
.hsec{scroll-margin-top:72px}
.hb{margin-top:26px;padding-top:22px;border-top:1px solid var(--rule-soft)}
.hb:first-of-type{border-top:none}
.hb h3{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:21px;line-height:1.28;margin:0 0 10px;letter-spacing:-.014em}
.hb p{margin:0 0 12px;font-size:16px;line-height:1.68;color:var(--ink-soft);max-width:66ch}
.hb p:last-child{margin-bottom:0}
.hb ul{margin:0 0 12px;padding-left:20px}
.hb li{font-size:16px;line-height:1.62;color:var(--ink-soft);margin-bottom:6px;max-width:64ch}

/* ---------- calendar ---------- */
.mos{display:grid;grid-template-columns:repeat(auto-fit,minmax(252px,1fr));gap:16px;margin-top:28px}
.mo{background:var(--card);border:1px solid var(--rule);border-radius:13px;padding:18px 20px 14px;box-shadow:var(--shadow)}
.mh{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:19px;margin-bottom:12px;padding-bottom:9px;border-bottom:1px solid var(--rule-soft)}
.ev{display:flex;gap:12px;align-items:baseline;padding:6px 0}
.ev .ed{flex:none;min-width:62px;font-size:12.5px;font-weight:700;color:var(--sage);font-variant-numeric:tabular-nums}
.ev .en{font-size:14.5px;line-height:1.45;color:var(--ink-soft)}
.ev.dest .ed{color:var(--gold)} .ev.dest .en{color:var(--ink);font-weight:700}
.ev.conf .ed{color:var(--clay)} .ev.conf .en{color:var(--ink)}
.ev.break .ed,.ev.off .ed{color:var(--ink-faint)}
.ev.half .ed{color:var(--clay)}
@media(max-width:600px){.toc{grid-template-columns:1fr}.mos{grid-template-columns:1fr}}
@media print{.toc,.jump{display:none}.hb{break-inside:avoid}}

/* ---------- contact action buttons ---------- */
.c .acts{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.ab{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 15px;
  border:1px solid var(--rule);border-radius:99px;background:var(--paper);color:var(--sage-deep);
  font-size:13.5px;font-weight:700;text-decoration:none;transition:all .15s ease}
.ab:hover{border-color:var(--sage);background:var(--sage-wash)}
@media print{.c .acts{display:none}}

/* ---------- The Grove landing ---------- */
.ghero{padding:15vh 0 0}
.gmark{font-size:clamp(56px,13vw,116px);line-height:.94;letter-spacing:-.035em;margin:18px 0 0}
/* Was italic. Body text never is: Spectral at 300 carries the same lift without
   the slant, and it holds up at 116px next to the mark. */
.gtag{font-family:"Spectral",Georgia,serif;font-weight:300;
  font-size:clamp(19px,3vw,25px);color:var(--sage-deep);margin:18px 0 0;letter-spacing:-.005em}
.open{display:block;text-decoration:none;color:inherit;background:var(--card);
  border:1px solid var(--rule);border-left:3px solid var(--gold);border-radius:16px;
  padding:30px 32px;box-shadow:var(--shadow);transition:transform .2s ease,border-color .2s ease}
.open:hover{transform:translateY(-2px);border-color:var(--sage);border-left-color:var(--gold)}
.open .ol{font-size:11.5px;letter-spacing:.18em;text-transform:uppercase;font-weight:700;color:var(--gold)}
.open .ot{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:clamp(27px,4.4vw,37px);
  line-height:1.14;letter-spacing:-.02em;margin:12px 0 14px}
.open .od{color:var(--ink-soft);font-size:16px;line-height:1.66;max-width:56ch}
.open .oa{margin-top:18px;font-size:13.5px;font-weight:700;color:var(--sage);letter-spacing:.02em}
.open .oa:after{content:" \2192"}

.pers{margin-top:30px}
.per{padding:30px 0;border-top:1px solid var(--rule)}
.per:first-child{border-top:none;padding-top:6px}
.ph{display:flex;gap:14px;align-items:baseline}
.ph .pn{font-size:11.5px;font-weight:700;color:var(--sage);letter-spacing:.12em;flex:none}
.ph .pt{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:26px;line-height:1.16;letter-spacing:-.018em}
.ph .ps{font-size:13px;color:var(--ink-faint);letter-spacing:.02em;margin-top:3px}
.pnote{color:var(--ink-soft);font-size:15px;line-height:1.62;margin:12px 0 0;max-width:58ch}
/* The years read as one ledger, not a tiled grid: a count that does not divide
   evenly used to leave orphan cells at the end of a row. One year per row means
   no era can end ragged, and the four column axes below are identical in every
   era, so 2029-30 lines up with 2035-36 lines up with 2038-39 down the page. */
.yrs{margin-top:20px;background:var(--paper);
  border:1px solid var(--rule-soft);border-radius:12px;overflow:hidden}
.yr{display:grid;grid-template-columns:62px 1fr 48px 56px;align-items:center;
  gap:0 16px;padding:0 16px;min-height:44px;border-top:1px solid var(--rule-soft)}
.yr:first-child{border-top:none}
.yr .yy{font-size:13px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.yr .yg{font-size:13.5px;color:var(--ink-soft)}
.yr .ya{font-size:12px;color:var(--ink-faint);text-align:right;font-variant-numeric:tabular-nums}
.yr.now{background:var(--sage-wash)}
.yr.now .yy,.yr.now .yg{color:var(--sage-deep);font-weight:700}
.yr .yl{grid-column:4;justify-self:end;font-size:12px;font-weight:700;
  color:var(--sage);text-decoration:none;letter-spacing:.04em;white-space:nowrap}
.yr .yl:after{content:" \2192"}
.chap{font-size:13px;color:var(--ink-faint);font-weight:600;white-space:nowrap;
  padding-right:4px;border-right:1px solid var(--rule);margin-right:2px}
@media(max-width:600px){
  .ghero{padding:9vh 0 0}
  .yr{grid-template-columns:56px 1fr 44px auto;gap:0 10px;padding:0 12px}
  .open{padding:24px 20px}
  .chap{display:none}
}

/* ---------- condensed supplies ---------- */
.shero{padding:52px 0 0}
.shero h1{font-size:clamp(32px,5.4vw,46px);line-height:1.05;margin:14px 0 0}
.shero .sl{color:var(--ink-soft);font-size:16px;line-height:1.6;max-width:54ch;margin:14px 0 0}
.shero .countbar{margin-top:24px}
.sblk{margin-top:40px}
.sh{display:flex;align-items:baseline;gap:12px;padding-bottom:9px;border-bottom:1px solid var(--rule)}
.sh h2{font-size:21px;line-height:1.2}
.sh .shn{margin-left:auto;font-size:12.5px;font-weight:700;color:var(--sage);font-variant-numeric:tabular-nums}
.list.two{display:grid;grid-template-columns:1fr 1fr;gap:0 26px;border-top:none;margin-top:4px}
.list.two .item{padding:10px 2px;gap:11px;align-items:flex-start}
.list.two .item .tx{font-size:15px;line-height:1.4}
.list.two .item .nm{font-weight:600}
.list.two .item .qty{margin-left:7px;font-size:11.5px;color:var(--sage);font-weight:700;white-space:nowrap}
.list.two .item small{display:block;color:var(--ink-faint);font-size:13px;margin-top:1px;line-height:1.42}
.list.two .item input{width:19px;height:19px;margin-top:1px}
.notes{margin-top:6px}
.notes p{margin:0 0 11px;font-size:14.5px;line-height:1.58;color:var(--ink-soft);max-width:66ch}
.notes p:last-child{margin-bottom:0}
.notes b{color:var(--ink)}
.src{margin-top:26px;padding-top:14px;border-top:1px solid var(--rule-soft);
  font-size:13px;color:var(--ink-faint);line-height:1.6}
@media(max-width:640px){
  .shero{padding:34px 0 0}
  .list.two{grid-template-columns:1fr;gap:0}
  .sblk{margin-top:32px}
}

/* ---------- touch + type floors on the new pages ---------- */
.ab{min-height:44px}
.list.two .item{padding:12px 2px;min-height:44px}
.open .ol{font-size:12px}
.list.two .item .qty{font-size:12px}
/* The row itself is the 44px touch target now, so the link no longer has to
   force its own height and push its row taller than every other row. */
.yr .yl{display:inline-flex;align-items:center;min-height:44px}

/* ---------- supply list: ordered, or already at home ----------
   Two chips a row. Clay means bought and in transit, sage means it is in the
   house. Both count as covered, and the bar shows the split so you can see
   what is still on a truck. */
.shero .who{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin:18px 0 0;
  font-size:13px;color:var(--ink-faint)}
.shero .who b{color:var(--ink-soft)}
.pick{appearance:none;-webkit-appearance:none;border:1px solid var(--rule);background:transparent;
  color:var(--sage-deep);font:inherit;font-size:12.5px;font-weight:700;padding:7px 13px;
  border-radius:99px;cursor:pointer;min-height:34px}
.pick:hover{border-color:var(--sage);background:var(--sage-wash)}
.pick:focus-visible{outline:2px solid var(--sage);outline-offset:2px}
.linkish{appearance:none;border:0;background:none;padding:0;font:inherit;font-size:13px;
  color:var(--sage-deep);font-weight:600;cursor:pointer;
  text-decoration:underline;text-decoration-color:var(--rule)}
.linkish:hover{text-decoration-color:var(--sage)}

.track.duo{display:flex;gap:0}
.track.duo i{position:static;inset:auto;height:100%;width:0;border-radius:0;flex:none}
.track.duo i.home{background:linear-gradient(90deg,var(--sage),#7B8C69)}
.track.duo i.way{background:var(--clay);opacity:.5}
.countbar .split{margin:10px 0 0;font-size:12.5px;color:var(--ink-faint);line-height:1.5}
.countbar .split b{color:var(--ink-soft);font-weight:700}
.countbar .sync{margin-left:9px;color:var(--ink-faint)}
.countbar .sync.warn{color:var(--clay);font-weight:700}

.list.two.supl .item{display:block;padding:15px 2px;cursor:default}
.list.two.supl .item .tx{display:block}
.list.two.supl .item.home .nm{text-decoration:line-through;
  text-decoration-color:var(--rule);color:var(--ink-faint)}
.list.two.supl .item.home .tx small{color:var(--ink-faint);opacity:.72}
.supl .chips{display:flex;gap:8px;margin:10px 0 0}
.chip{appearance:none;-webkit-appearance:none;border:1px solid var(--rule);background:transparent;
  color:var(--ink-faint);font:inherit;font-size:12.5px;font-weight:700;letter-spacing:.01em;
  padding:7px 13px;border-radius:99px;cursor:pointer;display:inline-flex;align-items:center;
  min-height:36px;white-space:nowrap;transition:background .16s,border-color .16s,color .16s}
.chip:hover{border-color:var(--sage);color:var(--sage-deep)}
.chip:focus-visible{outline:2px solid var(--sage);outline-offset:2px}
.chip .ck{width:0;opacity:0;overflow:hidden;
  transition:width .16s,opacity .16s,margin-right .16s}
.chip[aria-pressed="true"] .ck{width:11px;opacity:1;margin-right:6px}
.chip.ord[aria-pressed="true"]{background:var(--clay-wash);border-color:var(--clay);color:var(--clay)}
.chip.hav[aria-pressed="true"]{background:var(--sage-wash);border-color:var(--sage);color:var(--sage-deep)}
.supl .by{margin:9px 0 0;font-size:12px;color:var(--ink-faint);line-height:1.45}
@media(max-width:640px){
  .list.two.supl .item{padding:16px 2px}
  .chip{min-height:42px;padding:10px 15px;font-size:13px}
  .supl .chips{gap:9px}
}

/* =========================================================
   HANDBOOK, REFINED
   A sixteen-page policy document you have to find things in.
   Scoped to handbook.html: .rail .hsearch .glance .pol .tbl
   ========================================================= */
:root{ --gold-wash:#F6EFDA; --sage-line:#C9D3BC }
[hidden]{display:none !important}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* reading progress, riding the sticky nav */
.hprog{height:2px;background:transparent;margin-bottom:-2px}
.hprog i{display:block;height:2px;width:0;background:linear-gradient(90deg,var(--sage),var(--gold));transition:width .12s linear}

/* section rail. Always on the left, at every width. */
.rail{
  position:fixed;z-index:44;top:100px;display:flex;flex-direction:column;
  max-height:calc(100vh - 130px);overflow-y:auto;overscroll-behavior:contain;
  scrollbar-width:none;-ms-overflow-style:none
}
.rail::-webkit-scrollbar{display:none}
.rail a{
  display:flex;gap:10px;align-items:baseline;text-decoration:none;color:var(--ink-faint);
  font-size:13px;line-height:1.3;padding:6px 0 6px 13px;border-left:1.5px solid var(--rule-soft);
  transition:color .18s ease,border-color .18s ease
}
/* These section numbers were set in --rule, a hairline colour, which put them at
   1.29:1 against paper: present in the DOM, invisible to read. */
.rail a .rn{
  flex:none;font-size:10.5px;font-weight:700;letter-spacing:.09em;color:var(--ink-faint);
  font-variant-numeric:tabular-nums;transition:color .18s ease
}
.rail a:hover{color:var(--sage-deep)}
.rail a.on{color:var(--sage-deep);font-weight:700;border-left-color:var(--sage)}
.rail a.on .rn{color:var(--sage)}
.rail a.off{opacity:.32}

/* wide: content stays centred, rail floats in the left gutter */
@media(min-width:1240px){ .rail{left:max(20px,calc(50% - 606px));width:174px} }

/* laptop widths: keep the labels, left-align the column to make room */
@media(min-width:1000px) and (max-width:1239px){
  .rail{left:20px;width:176px}
  .hasrail .wrap,.hasrail .nav-in{max-width:1008px;margin-left:0;margin-right:auto;padding-left:212px}
}

/* tablets and phones: no room for words, so numbers, same place, same job */
@media(max-width:999px){
  .rail{left:8px;width:40px;top:92px;max-height:calc(100vh - 116px)}
  .rail a{padding:0 0 0 10px;min-height:40px;align-items:center;gap:0;position:relative}
  .rail .rt{
    position:absolute;left:38px;white-space:nowrap;font-size:12.5px;font-weight:700;
    background:var(--ink);color:var(--paper);padding:6px 10px;border-radius:7px;
    opacity:0;pointer-events:none;transition:opacity .14s ease
  }
  .rail a:hover .rt,.rail a:focus .rt{opacity:.96}
  .rail a .rn{font-size:11px;color:var(--ink-faint)}
  .rail a.on .rn{color:var(--sage-deep)}
}

/* once the rail would sit on top of the words, move the words over.
   The nav bar keeps its own padding: it sits above the rail, not beside it,
   and at phone widths its links already fill the row. */
@media(max-width:999px){
  .hasrail .wrap,.hasrail .fwrap{padding-left:64px}
}
@media(max-width:600px){
  .hasrail .wrap,.hasrail .fwrap{padding-left:56px;padding-right:18px}
  .rail{left:6px;width:38px}
}

/* seven links do not fit a phone. Let the row swipe instead of widening the
   document, which was pushing every page into a sideways scroll. */
@media(max-width:760px){
  .nav-in{overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}
  .nav-in::-webkit-scrollbar{display:none}
  .nav a.lnk{flex:none}
}
html,body{overflow-x:clip}

/* =========================================================
   THE GROVE MARK
   Two leaves on one stem, one for each of them. The lockup
   says Home out loud so nobody has to guess what it does.
   ========================================================= */
.nav .mark{display:inline-flex;align-items:center;gap:9px;padding:3px 0;border-radius:10px}
.nav .mark .glogo{flex:none;color:var(--sage);transition:transform .2s cubic-bezier(.2,.7,.3,1)}
.nav .mark .mwm{
  font-family:"Spectral",Georgia,serif;font-weight:600;font-size:19px;
  letter-spacing:-.018em;color:var(--ink);white-space:nowrap;transition:color .16s ease
}
.nav .mark .mhome{
  font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--sage);
  background:var(--sage-wash);border:1px solid #DDE3D3;border-radius:99px;padding:5px 9px 4px;
  white-space:nowrap;transition:background .16s ease,color .16s ease,border-color .16s ease
}
.nav .mark:hover .mwm{color:var(--sage-deep)}
.nav .mark:hover .glogo{transform:translateY(-1px) rotate(-4deg)}
.nav .mark:hover .mhome{background:var(--sage);border-color:var(--sage);color:#fff}
.nav .mark:focus-visible{outline:2px solid var(--sage);outline-offset:4px}
/* already home: the pill stops advertising */
.nav .mark[aria-current] .mhome{background:transparent;border-color:var(--rule);color:var(--ink-faint)}
.nav .mark[aria-current]:hover .mhome{background:transparent;border-color:var(--rule);color:var(--ink-faint)}

/* on a phone the links swipe, so the mark stays pinned to the left edge */
@media(max-width:760px){
  .nav .mark{
    position:sticky;left:0;z-index:2;flex:none;width:auto;margin-right:0;
    padding-right:24px;background:linear-gradient(90deg,var(--paper) 87%,rgba(250,247,240,0))
  }
  .nav .mark .glogo{width:22px;height:22px}
  .nav .mark .mwm{font-size:17px}
  .nav .mark .mhome{font-size:9.5px;padding:4px 7px 3px;letter-spacing:.12em}
}
@media(max-width:380px){ .nav .mark .mwm{display:none} }
@media print{ .nav .mark .mhome{display:none} }

/* the landing wears the mark large, above its own name */
.ghero .glogo-big{display:block;color:var(--sage);margin:0 0 6px;width:58px;height:58px}
@media(max-width:600px){.ghero .glogo-big{width:46px;height:46px}}
@media print{.rail{display:none !important}.hasrail .wrap,.hasrail .fwrap,.hasrail .nav-in{padding-left:24px}}

/* hero */
.hhero{padding:74px 0 0}
.hhero h1{font-size:clamp(36px,6.4vw,62px);max-width:15ch}

/* search */
.hsearch{position:relative;margin:30px 0 0;max-width:520px}
.hsearch input{
  width:100%;font:inherit;font-size:16px;color:var(--ink);background:var(--card);
  border:1px solid var(--rule);border-radius:11px;padding:13px 42px 13px 44px;
  box-shadow:var(--shadow);transition:border-color .16s ease,box-shadow .16s ease;
  -webkit-appearance:none;appearance:none
}
.hsearch:before{
  content:"";position:absolute;left:16px;top:50%;width:13px;height:13px;margin-top:-8px;
  border:1.7px solid var(--ink-faint);border-radius:50%
}
.hsearch:after{
  content:"";position:absolute;left:26px;top:50%;width:6px;height:1.7px;margin-top:3px;
  background:var(--ink-faint);transform:rotate(45deg)
}
.hsearch input::placeholder{color:var(--ink-faint)}
.hsearch input:focus{outline:none;border-color:var(--sage);box-shadow:0 0 0 3px var(--sage-wash)}
.hsearch input::-webkit-search-cancel-button{display:none}
.qx{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:36px;height:36px;
  border:none;background:none;color:var(--ink-faint);font-size:21px;line-height:1;cursor:pointer;border-radius:8px}
.qx:hover{color:var(--clay)}
.hsr{margin:11px 2px 0;font-size:13px;font-weight:700;letter-spacing:.02em;color:var(--sage);min-height:19px}
.nores{margin:44px 0 0;font-size:16px;color:var(--ink-soft)}
.lnkbtn{font:inherit;font-weight:700;color:var(--sage-deep);background:none;border:none;
  border-bottom:1.5px solid var(--rule);padding:0;cursor:pointer}
.lnkbtn:hover{border-color:var(--sage)}
mark{background:var(--gold-wash);color:var(--ink);border-radius:2px;padding:0 1px;
  box-shadow:0 1px 0 rgba(169,134,55,.35)}

/* at a glance */
.glancewrap{margin-top:54px}
.glance{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin-top:26px;
  background:var(--rule-soft);border:1px solid var(--rule-soft);border-radius:14px;overflow:hidden}
.gl{display:block;background:var(--card);padding:18px 19px 19px;text-decoration:none;color:inherit;
  transition:background .16s ease}
.gl:hover{background:var(--sage-wash)}
.gl .k{display:block;font-size:11px;letter-spacing:.15em;text-transform:uppercase;font-weight:700;color:var(--sage)}
.gl .v{display:block;font-family:"Spectral",Georgia,serif;font-weight:600;font-size:22px;
  line-height:1.2;letter-spacing:-.016em;margin:7px 0 6px;color:var(--ink)}
.gl .v small{font-family:"Archivo",sans-serif;font-size:12px;font-weight:700;color:var(--ink-faint);
  letter-spacing:.04em;text-transform:uppercase}
.gl .d{display:block;font-size:13.5px;line-height:1.55;color:var(--ink-soft)}
.qacts{display:flex;flex-wrap:wrap;gap:9px;margin-top:20px}
.glancewrap .toc{margin-top:40px}

/* document body */
.hsec{scroll-margin-top:84px}
.blk-head .n{position:relative;top:-1px}
.hb{margin-top:30px;padding-top:24px;border-top:1px solid var(--rule-soft)}
.hb:first-of-type{border-top:none}
.hb h3{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:21.5px;line-height:1.26;
  margin:0 0 12px;letter-spacing:-.015em;scroll-margin-top:84px}
.hb p{margin:0 0 13px;font-size:16.5px;line-height:1.72;color:var(--ink-soft);max-width:64ch}
.hb p:last-child{margin-bottom:0}
.hb a{color:var(--sage-deep);text-decoration:none;border-bottom:1px solid var(--sage-line)}
.hb a:hover{border-color:var(--sage)}

/* per-policy anchor */
.anch{margin-left:9px;font-family:"Archivo",sans-serif;font-size:14px;font-weight:700;
  color:var(--rule);text-decoration:none;border:none !important;opacity:0;transition:opacity .16s ease,color .16s ease}
.hb:hover .anch,.anch:focus{opacity:1}
.anch:hover{color:var(--sage)}
@media(hover:none){.anch{opacity:.5}}

/* the welcome letter reads as a letter */
.letter{background:var(--paper-deep);border:1px solid var(--rule);border-radius:16px;padding:30px 32px;margin-top:6px}
.letter p{font-family:"Spectral",Georgia,serif;font-size:17px;line-height:1.7;color:var(--ink);max-width:60ch}
.letter .salut{font-size:18px;margin-bottom:15px}
.letter .sig{font-size:22px;line-height:1.2;margin:20px 0 0;color:var(--sage-deep)}
.letter .ps{font-family:"Archivo",sans-serif;font-size:14.5px;line-height:1.6;color:var(--ink-soft);
  margin-top:20px;padding-top:16px;border-top:1px solid var(--rule)}

/* labelled policy rows: admissions steps, easing in, sick policy */
.pol{margin-top:4px;border-top:1px solid var(--rule-soft)}
.pr{padding:15px 0;border-bottom:1px solid var(--rule-soft);display:grid;grid-template-columns:186px 1fr;gap:6px 24px}
.pr:last-child{border-bottom:none}
.pt{font-size:14px;font-weight:700;line-height:1.42;color:var(--ink);letter-spacing:.005em}
.pd{font-size:16px;line-height:1.68;color:var(--ink-soft);max-width:58ch}
.pd .addr{margin:12px 0 0;font-size:14.5px;line-height:1.6;color:var(--ink);background:var(--card);
  border:1px solid var(--rule);border-radius:10px;padding:13px 15px;display:inline-block}
.pd .addr b{font-weight:700}

/* lists the PDF sets as lists */
.hb ul{margin:0 0 14px;padding:0;list-style:none}
.hb ul li{position:relative;padding-left:20px;margin-bottom:8px;font-size:16px;line-height:1.62;
  color:var(--ink-soft);max-width:60ch}
.hb ul li:last-child{margin-bottom:0}
.hb ul li:before{content:"";position:absolute;left:2px;top:.72em;width:5px;height:5px;border-radius:50%;background:var(--sage-line)}
.hb ul.ages li{padding-left:0}
.hb ul.ages li:before{display:none}
.hb ul.ages li b{color:var(--ink);font-weight:700}
.hb ul.delay li b,.hb ul.ages li b{color:var(--ink)}
.hb ul.ol li{padding-left:30px}
.hb ul.ol li:before{content:attr(data-n);position:absolute;left:0;top:0;width:auto;height:auto;border-radius:0;
  background:none;color:var(--sage);font-weight:700;font-size:14.5px;font-variant-numeric:tabular-nums}
.hb ul.steps li:before{width:6px;height:6px;background:var(--sage)}
.hb ul.ladder{counter-reset:step}
.hb ul.ladder li{padding-left:32px;counter-increment:step}
.hb ul.ladder li:before{content:counter(step);left:0;top:.06em;width:20px;height:20px;border-radius:50%;
  background:var(--sage-wash);color:var(--sage-deep);font-size:11.5px;font-weight:700;
  display:flex;align-items:center;justify-content:center}
.grp{margin:0 0 20px}
.grp:last-child{margin-bottom:0}
.gh{font-size:13px !important;letter-spacing:.13em;text-transform:uppercase;font-weight:700;
  color:var(--sage) !important;margin:0 0 11px !important}
.gn{font-size:15px !important;color:var(--ink-faint) !important;margin:10px 0 0 !important;max-width:60ch}

/* tables */
.tblw{margin:16px 0 0;overflow-x:auto;-webkit-overflow-scrolling:touch}
.tbl{border-collapse:separate;border-spacing:0;width:100%;min-width:min(420px,100%);
  background:var(--card);border:1px solid var(--rule);border-radius:12px}
.tbl caption{text-align:left;font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  font-weight:700;color:var(--sage);padding:0 0 9px}
.tbl th,.tbl td{padding:12px 15px;text-align:left;font-size:15px;line-height:1.45;
  border-bottom:1px solid var(--rule-soft)}
.tbl tbody tr:last-child th,.tbl tbody tr:last-child td{border-bottom:none}
.tbl thead th{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);
  font-weight:700;background:var(--paper-deep)}
.tbl thead th:first-child{border-top-left-radius:11px}
.tbl thead th:last-child{border-top-right-radius:11px}
.tbl th[scope=row]{font-weight:700;color:var(--ink)}
.tbl td{color:var(--ink-soft);font-variant-numeric:tabular-nums}
.tbl td.em{color:var(--ink);font-weight:700}
.tbl td.flag{color:var(--clay);font-weight:700}
.tbl.rates td{text-align:right}
.tbl.rates thead th:not(:first-child){text-align:right}
.tblw+.tblw{margin-top:20px}

/* editorial note, clearly not the school's words */
.note{background:var(--clay-wash);border:1px solid #EEDDD0;border-left:3px solid var(--clay);
  border-radius:11px;padding:14px 16px;margin:18px 0 0 !important;font-size:14.5px !important;
  line-height:1.6;color:var(--ink) !important;max-width:60ch}
.note b{color:var(--clay);font-weight:700}

/* door-time strip */
.strip{display:flex;flex-wrap:wrap;gap:1px;margin-top:16px;background:var(--rule-soft);
  border:1px solid var(--rule-soft);border-radius:11px;overflow:hidden}
.strip span{flex:1 1 110px;background:var(--card);padding:12px 14px;font-size:12.5px;color:var(--ink-faint);
  letter-spacing:.02em}
.strip b{display:block;font-family:"Spectral",Georgia,serif;font-size:20px;font-weight:600;
  color:var(--sage-deep);letter-spacing:-.01em;margin-bottom:2px;font-variant-numeric:tabular-nums}

/* contact rows */
.contact{display:grid;grid-template-columns:1fr 1fr;gap:1px;margin:16px 0 15px;
  background:var(--rule-soft);border:1px solid var(--rule-soft);border-radius:12px;overflow:hidden}
.cx{display:block;background:var(--card);padding:14px 16px;text-decoration:none;border:none !important;
  transition:background .16s ease}
.cx:hover{background:var(--sage-wash)}
.cl{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--sage)}
.cv{display:block;font-size:16px;font-weight:700;color:var(--ink);margin-top:4px;word-break:break-word}

/* values as chips */
.vals{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 16px !important}
.vals span{font-size:13.5px;font-weight:700;color:var(--sage-deep);background:var(--sage-wash);
  border:1px solid #DDE3D3;border-radius:99px;padding:7px 14px}

.xref{margin-top:16px !important}

/* back to top */
.totop{position:fixed;right:18px;bottom:18px;width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.86);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border:1px solid var(--rule);box-shadow:var(--shadow);color:var(--sage-deep);
  display:flex;align-items:center;justify-content:center;font-size:18px;text-decoration:none;
  opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity .2s ease,transform .2s ease;z-index:45}
.totop.on{opacity:1;pointer-events:auto;transform:none}
.totop:hover{border-color:var(--sage);background:var(--sage-wash)}
@supports (padding:max(0px)){.totop{bottom:max(20px,env(safe-area-inset-bottom))}}

@media(max-width:720px){
  .hhero{padding-top:44px}
  .glance{grid-template-columns:1fr}
  .contact{grid-template-columns:1fr}
  .pr{grid-template-columns:1fr;gap:5px}
  .pt{font-size:13.5px;letter-spacing:.02em}
  .hb p,.pd{font-size:16px}
  .hb ul li{font-size:16px}
  .letter{padding:24px 20px}
  .letter p{font-size:16.5px}
  .tbl th,.tbl td{padding:11px 12px;font-size:14.5px}
  .glancewrap{margin-top:44px}
}

@media print{
  .rail,.hsearch,.hsr,.totop,.hprog,.qacts,.nores{display:none !important}
  .glance{border:1px solid #ccc}
  .hb,.pr,.tbl,.letter{break-inside:avoid}
  .note{border:1px solid #bbb}
}

/* ---------- year record pages ---------- */
.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:34px;
  background:var(--rule);border:1px solid var(--rule);border-radius:12px;overflow:hidden}
.facts div{background:var(--card);padding:15px 17px;font-size:15px;line-height:1.4;min-height:70px}
.facts div span{display:block;font-size:10.5px;letter-spacing:.15em;text-transform:uppercase;
  font-weight:700;color:var(--sage);margin-bottom:5px}
@media(max-width:760px){.facts{grid-template-columns:repeat(2,1fr)}}
@media(max-width:430px){.facts{grid-template-columns:1fr}.facts div{min-height:0;padding:13px 15px}}
.kids{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:26px}
.kid{background:var(--card);border:1px solid var(--rule);border-radius:14px;padding:22px 22px 18px;box-shadow:var(--shadow)}
.kn{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:24px;letter-spacing:-.018em;
  padding-bottom:13px;margin-bottom:2px;border-bottom:1px solid var(--rule)}
.kf{padding:14px 0;border-bottom:1px solid var(--rule-soft)}
.kf:last-child{border-bottom:none;padding-bottom:0}
.kt{font-size:11px;letter-spacing:.13em;text-transform:uppercase;font-weight:700;color:var(--sage);margin-bottom:7px}
.kl{margin:0;padding-left:17px}
.kl li{font-size:14.5px;line-height:1.55;color:var(--ink-soft);margin-bottom:4px}
.ow{margin:0;font-family:"Spectral",Georgia,serif;font-style:italic;font-size:17px;
  line-height:1.5;color:var(--ink)}
.gap{margin:0;font-size:13.5px;color:var(--ink-faint);line-height:1.5;
  border:1px dashed var(--rule);border-radius:9px;padding:11px 14px;background:transparent}
.gap span{display:none}
.blk > .gap{margin-top:24px}
.dec{display:grid;grid-template-columns:104px 1fr;gap:5px 20px;padding:17px 2px;border-bottom:1px solid var(--rule-soft)}
.dec:first-of-type{border-top:1px solid var(--rule);margin-top:24px}
.dd{font-size:12px;font-weight:700;color:var(--sage);font-variant-numeric:tabular-nums;padding-top:3px;letter-spacing:.02em}
.dw{font-family:"Spectral",Georgia,serif;font-weight:600;font-size:18px;line-height:1.34;letter-spacing:-.012em}
.dy{grid-column:2;font-size:14.5px;color:var(--ink-soft);line-height:1.6;max-width:62ch}
.media{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:24px}
.media figure{margin:0}.media img{width:100%;border-radius:11px;display:block}
.media figcaption{font-size:13px;color:var(--ink-faint);margin-top:7px;line-height:1.5}
@media(max-width:640px){
  .kids{grid-template-columns:1fr}
  .dec{grid-template-columns:1fr;gap:3px}
  .dy{grid-column:1}
}

/* ---------- year record: added fields ---------- */
.kv{margin:0;font-size:14.5px;line-height:1.6;color:var(--ink-soft)}
.hw{width:100%;border:1px solid var(--rule);border-radius:9px;margin-top:8px;display:block}
.pairv{margin:24px 0 0;font-size:16.5px;line-height:1.66;color:var(--ink-soft);max-width:64ch}
.letter{margin-top:24px;background:var(--card);border:1px solid var(--rule);border-radius:14px;
  padding:28px 30px;box-shadow:var(--shadow)}
.letter .lfrom{font-size:11.5px;letter-spacing:.15em;text-transform:uppercase;font-weight:700;
  color:var(--sage);margin-bottom:14px}
.letter .ltext{font-family:"Spectral",Georgia,serif;font-size:17.5px;line-height:1.68;
  white-space:pre-wrap;color:var(--ink)}
@media(max-width:600px){.letter{padding:22px 20px}.letter .ltext{font-size:16.5px}}

/* =========================================================
   TODAY, ON THE LANDING
   The Almanac register: brass numerals, banded rows, forest
   heads on deep paper. Built by /today.js from dates that
   already exist on the plan, forms and calendar pages.
   ========================================================= */
.tdy{
  margin:44px 0 0;background:var(--paper-deep);border:1px solid var(--rule);
  border-left:3px solid var(--gold);border-radius:15px;padding:24px 26px 22px;
  box-shadow:var(--shadow)
}
.tdy-h{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.tdy-date{
  font-size:11px;font-weight:700;letter-spacing:.17em;text-transform:uppercase;color:var(--gold)
}
.tdy-chip{
  margin-left:auto;font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;
  color:var(--sage-deep);background:var(--sage-wash);border:1px solid #DDE3D3;
  border-radius:99px;padding:4px 10px 3px;font-variant-numeric:tabular-nums
}
.tdy-line{
  font-family:"Spectral",Georgia,serif;font-weight:600;
  font-size:clamp(23px,3.4vw,30px);line-height:1.2;letter-spacing:-.02em;
  color:var(--sage-deep);margin:12px 0 0;max-width:22ch
}
.tdy-rows{
  list-style:none;margin:20px 0 0;padding:0;
  border-top:1px solid var(--gold);border-bottom:1px solid var(--gold)
}
.tdy-row{
  display:grid;grid-template-columns:26px 62px 1fr auto auto;align-items:center;
  gap:0 14px;padding:12px 4px;border-bottom:1px solid var(--rule)
}
.tdy-row:last-child{border-bottom:none}
.tdy-row.now{background:rgba(169,134,55,.07)}
.tdy-n{
  font-size:12px;font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums;
  letter-spacing:.04em
}
.tdy-when{
  font-size:13px;font-weight:700;color:var(--ink-soft);font-variant-numeric:tabular-nums;
  white-space:nowrap
}
.tdy-what{
  font-family:"Spectral",Georgia,serif;font-size:17px;line-height:1.35;color:var(--ink)
}
.tdy-in{
  font-size:12px;font-weight:700;color:var(--ink-faint);font-variant-numeric:tabular-nums;
  white-space:nowrap;letter-spacing:.03em
}
.tdy-go{
  font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--sage);text-decoration:none;border-bottom:1.5px solid transparent;
  white-space:nowrap;padding:4px 0
}
.tdy-go:hover{color:var(--sage-deep);border-bottom-color:var(--sage)}
.tdy-fall{margin:36px 0 0}

@media(max-width:640px){
  .tdy{padding:20px 18px 18px;margin-top:34px}
  .tdy-row{grid-template-columns:24px 1fr auto;gap:2px 12px;padding:13px 2px}
  .tdy-what{grid-column:2/4;font-size:16.5px;order:3}
  .tdy-when{order:1}
  .tdy-in{order:2;margin-left:auto}
  .tdy-n{order:0;grid-row:1/3}
  .tdy-go{grid-column:2/4;order:4;padding-top:6px;min-height:34px;display:inline-flex;align-items:center}
}
