:root{
  --sheet:#E8EAE6;
  --paper:#F6F7F4;
  --ink:#15181B;
  --graphite:#585F66;
  --hairline:#C3C8C2;
  --hairline-soft:#D7DBD5;
  --redline:#B62A19;

  --display:"Barlow Condensed",Impact,sans-serif;
  --body:"IBM Plex Sans",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;

  --ident:300px;
  --pad:clamp(20px,4vw,52px);
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--sheet);
  color:var(--ink);
  font-family:var(--body);
  font-size:16px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit}
p{max-width:70ch}

.mono{font-family:var(--mono)}
.label{
  font-family:var(--mono);font-size:9.5px;font-weight:500;
  letter-spacing:.18em;text-transform:uppercase;color:var(--graphite);
}
.h1{
  font-family:var(--display);font-weight:700;
  font-size:clamp(34px,4.6vw,58px);line-height:1;
  text-transform:uppercase;letter-spacing:.005em;max-width:17ch;
}
.h2{
  font-family:var(--display);font-weight:700;
  font-size:clamp(24px,2.6vw,34px);line-height:1.05;
  text-transform:uppercase;letter-spacing:.01em;
}
.h3{
  font-family:var(--display);font-weight:600;font-size:21px;
  line-height:1.14;text-transform:uppercase;letter-spacing:.025em;
}
.lede{font-size:17.5px;line-height:1.55;max-width:60ch;color:#232830}

/* ================= SHELL ================= */
.shell{display:block}
@media(min-width:1020px){
  .shell{display:grid;grid-template-columns:var(--ident) minmax(0,1fr);align-items:start}
}

/* ---------- identification column ---------- */
.ident{
  background:var(--paper);
  border-bottom:1px solid var(--ink);
}
@media(min-width:1020px){
  .ident{
    position:sticky;top:0;height:100vh;
    border-bottom:none;border-right:1px solid var(--ink);
    display:flex;flex-direction:column;
    padding:34px 26px 22px;overflow-y:auto;
  }
}
.ident__bar{
  display:flex;align-items:center;justify-content:space-between;
  gap:16px;padding:14px var(--pad);
}
@media(min-width:1020px){.ident__bar{display:block;padding:0}}

.mark{display:flex;align-items:center;gap:11px;text-decoration:none;line-height:1}
.mark__icon{width:30px;height:30px;flex:none;display:block}
.mark__txt{display:block}
@media(min-width:1020px){
  .mark{display:block}
  .mark__icon{width:42px;height:42px;margin-bottom:15px}
}
.logo{margin:4px 0 0}
.logo__svg{display:block;width:100%;max-width:430px;height:auto}
@media(min-width:1020px){.logo__svg{max-width:500px}}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.mark__name{
  font-family:var(--display);font-weight:700;
  font-size:32px;letter-spacing:.04em;text-transform:uppercase;display:block;
}
@media(min-width:1020px){.mark__name{font-size:46px}}
.mark__rule{height:2px;background:var(--ink);margin:7px 0 6px;display:none}
@media(min-width:1020px){.mark__rule{display:block}}
.mark__sub{
  font-family:var(--mono);font-size:9.5px;letter-spacing:.19em;
  text-transform:uppercase;color:var(--graphite);display:block;
}
@media(max-width:1019px){.mark__sub{margin-top:3px}}

.ident__spec{display:none;margin-top:26px}
@media(min-width:1020px){.ident__spec{display:block}}
.spec__row{
  display:flex;justify-content:space-between;gap:12px;
  padding:8px 0;border-bottom:1px solid var(--hairline-soft);
  font-family:var(--mono);font-size:11px;
}
.spec__row dt{color:var(--graphite);letter-spacing:.08em;text-transform:uppercase;font-size:9.5px;padding-top:2px}
.spec__row dd{text-align:right;font-weight:500}

.sheetindex{margin-top:28px}
@media(max-width:1019px){
  .sheetindex{display:none;padding:0 var(--pad) 18px}
  .sheetindex.open{display:block}
}
.sheetindex__ttl{margin-bottom:9px}
.sx{
  display:flex;align-items:baseline;gap:10px;
  padding:9px 0;border-bottom:1px solid var(--hairline-soft);
  text-decoration:none;
}
.sx__no{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--graphite);width:34px;flex:none;transition:color .15s ease}
.sx__ttl{
  font-family:var(--display);font-size:19px;font-weight:600;
  text-transform:uppercase;letter-spacing:.025em;line-height:1.1;flex:1;
}
.sx__dot{width:5px;height:5px;background:transparent;border-radius:50%;flex:none}
.sx:hover .sx__no{color:var(--redline)}
.sx[aria-current="page"] .sx__no{color:var(--redline)}
.sx[aria-current="page"] .sx__dot{background:var(--redline)}

.ident__foot{display:none;margin-top:auto;padding-top:22px}
@media(min-width:1020px){.ident__foot{display:block}}
.ident__foot .tel{
  font-family:var(--display);font-size:23px;font-weight:600;
  text-decoration:none;letter-spacing:.02em;display:block;margin-top:4px;
}
.ident__foot .tel:hover{color:var(--redline)}
.ident__foot .em{font-family:var(--mono);font-size:11px;color:var(--graphite);text-decoration:none;display:block;margin-top:5px}

.toggle{
  display:flex;flex-direction:column;justify-content:center;gap:4px;
  width:40px;height:32px;background:none;border:1px solid var(--hairline);
  cursor:pointer;padding:0 8px;
}
@media(min-width:1020px){.toggle{display:none}}
.toggle span{display:block;height:1.5px;background:var(--ink)}

/* ---------- sheets ---------- */
.sheets{min-width:0}
.view{display:none}
.view.active{display:block}
.blk{padding:clamp(38px,4.6vw,64px) var(--pad);border-bottom:1px solid var(--hairline)}
.blk--open{padding-top:clamp(44px,5.4vw,76px)}

.blkhead{display:flex;align-items:baseline;gap:14px;margin-bottom:26px}
.blkhead .rule{flex:1;height:1px;background:var(--hairline)}

/* ---------- schedules ---------- */
.sched{width:100%;border-collapse:collapse;font-size:15px}
.sched caption{
  text-align:left;font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--graphite);padding-bottom:11px;
}
.sched th{
  text-align:left;font-family:var(--mono);font-size:9.5px;letter-spacing:.15em;
  text-transform:uppercase;color:var(--graphite);font-weight:500;
  padding:0 16px 8px 0;border-bottom:1.5px solid var(--ink);white-space:nowrap;
}
.sched td{padding:14px 16px 14px 0;border-bottom:1px solid var(--hairline-soft);vertical-align:top}
.sched tbody tr{transition:background .15s ease}
.sched tbody tr:hover{background:var(--paper)}
.sched tbody tr:hover .mk{color:var(--redline)}
.mk{font-family:var(--mono);font-weight:600;font-size:12.5px;color:var(--graphite);white-space:nowrap;transition:color .15s ease}
.cell-key{font-family:var(--display);font-size:19px;font-weight:600;text-transform:uppercase;letter-spacing:.025em;line-height:1.15}
.cell-note{font-family:var(--mono);font-size:11.5px;color:var(--graphite);white-space:nowrap}
@media(max-width:760px){
  .sched thead{display:none}
  .sched td{display:block;border:none;padding:2px 0}
  .sched tbody tr{display:block;padding:15px 0;border-bottom:1px solid var(--hairline-soft)}
  .sched td.pad{margin-top:6px}
}

/* ---------- discipline blocks ---------- */
.disc{border-top:1.5px solid var(--ink);padding-top:20px;margin-top:40px}
.disc:first-of-type{margin-top:0}
.disc__head{display:flex;align-items:baseline;gap:13px;flex-wrap:wrap;margin-bottom:14px}
.disc__mk{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--redline)}
.disc__body{display:grid;gap:26px;grid-template-columns:1fr}
@media(min-width:940px){.disc__body{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:52px}}
.scope{list-style:none;column-gap:36px}
@media(min-width:540px){.scope{columns:2}}
.scope li{font-size:14.5px;padding:6px 0;border-bottom:1px solid var(--hairline-soft);break-inside:avoid}

/* ---------- data columns ---------- */
.cols{display:grid;gap:30px;grid-template-columns:1fr}
@media(min-width:940px){.cols{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:56px}}
.prose p+p{margin-top:16px}
.prose p{max-width:64ch}

.datalist{border-top:1.5px solid var(--ink);padding-top:14px}
.datalist dt{font-family:var(--mono);font-size:9.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--graphite);margin-top:15px}
.datalist dt:first-of-type{margin-top:0}
.datalist dd{font-size:14.5px;margin-top:2px}

.notes{list-style:none;border-top:1.5px solid var(--ink);padding-top:6px}
.notes li{display:flex;gap:14px;padding:13px 0;border-bottom:1px solid var(--hairline-soft)}
.notes b{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--redline);flex:none;padding-top:3px}
.notes span{font-size:15px;max-width:62ch}

/* ---------- tags ---------- */
.tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:7px}
.tag{
  font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  border:1px solid var(--hairline);padding:4px 9px;color:var(--graphite);
}

/* ---------- contact ---------- */
.contactgrid{display:grid;gap:24px;grid-template-columns:1fr}
@media(min-width:720px){.contactgrid{grid-template-columns:repeat(3,1fr);gap:0}}
.cc{border-top:1.5px solid var(--ink);padding-top:14px}
@media(min-width:720px){
  .cc{border-top:1.5px solid var(--ink);padding:14px 22px 0 0;border-right:1px solid var(--hairline)}
  .cc:last-child{border-right:none;padding-right:0}
}
.cc__val{font-family:var(--display);font-size:22px;font-weight:600;letter-spacing:.02em;line-height:1.2;margin-top:6px;display:block;text-decoration:none}
a.cc__val:hover{color:var(--redline)}
.cc__sub{font-family:var(--mono);font-size:11px;color:var(--graphite);margin-top:6px;line-height:1.75}

/* ---------- forms ---------- */
.formwrap{max-width:640px}
.f{margin-bottom:17px}
.f label{
  display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.15em;
  text-transform:uppercase;color:var(--graphite);margin-bottom:6px;
}
.f input,.f select,.f textarea{
  width:100%;font-family:var(--body);font-size:15px;color:var(--ink);
  background:var(--paper);border:1px solid var(--hairline);
  padding:11px 12px;border-radius:0;
}
.f textarea{min-height:120px;resize:vertical}
.f input:focus,.f select:focus,.f textarea:focus{
  outline:2px solid var(--redline);outline-offset:-2px;border-color:var(--redline);
}
.frow{display:grid;gap:0 16px;grid-template-columns:1fr}
@media(min-width:620px){.frow{grid-template-columns:1fr 1fr}}
.send{
  font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  padding:13px 24px;border:1.5px solid var(--ink);background:var(--ink);color:var(--paper);
  cursor:pointer;transition:background .16s ease,border-color .16s ease;
}
.send:hover{background:var(--redline);border-color:var(--redline)}
.fnote{margin-top:12px;font-family:var(--mono);font-size:11px;color:var(--graphite)}
.callout{
  border-left:2.5px solid var(--redline);padding:2px 0 2px 15px;
  font-family:var(--mono);font-size:11.5px;line-height:1.8;color:#2A3038;margin-bottom:26px;max-width:60ch;
}

/* ---------- title block ---------- */
.tb{background:var(--paper);border-top:1.5px solid var(--ink)}
.tb__grid{display:grid;grid-template-columns:1fr}
@media(min-width:820px){.tb__grid{grid-template-columns:1.5fr 1fr auto}}
.tb__c{padding:18px var(--pad);border-bottom:1px solid var(--hairline)}
@media(min-width:820px){
  .tb__c{border-bottom:none;border-right:1px solid var(--hairline);padding:22px}
  .tb__c:first-child{padding-left:var(--pad)}
  .tb__c:last-child{border-right:none;padding-right:var(--pad)}
}
.tb__v{font-family:var(--display);font-size:19px;font-weight:600;text-transform:uppercase;letter-spacing:.02em;line-height:1.15;margin-top:7px}
.tb__s{font-family:var(--mono);font-size:11px;line-height:1.85;color:#2A3038;margin-top:9px}
.tb__s a{text-decoration:none;border-bottom:1px solid var(--hairline)}
.tb__seal{display:flex;align-items:center;justify-content:center;min-height:140px}
.seal{width:122px;height:122px}
.seal__ring{fill:none;stroke:var(--redline);stroke-width:1.3}
.seal__in{fill:none;stroke:var(--redline);stroke-width:.65}
.seal text{fill:var(--redline);font-family:"IBM Plex Mono",monospace}
.seal__mid{font-family:"Barlow Condensed",sans-serif;font-weight:700}
.colophon{
  padding:14px var(--pad);border-top:1px solid var(--hairline);
  display:flex;flex-wrap:wrap;gap:8px 24px;justify-content:space-between;
  font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--graphite);
}

/* ---------- motion ---------- */
.rv{opacity:0;transform:translateY(11px);transition:opacity .5s ease,transform .5s ease}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .rv{opacity:1;transform:none}
}
:focus-visible{outline:2px solid var(--redline);outline-offset:3px}
.skip{position:absolute;left:-9999px}
.skip:focus{left:12px;top:8px;z-index:99;background:var(--ink);color:var(--paper);padding:9px 15px;font-family:var(--mono);font-size:11px}

/* ---------- print: issue the whole set, one sheet per page ---------- */
@media print{
  .toggle,.sheetindex,.skip{display:none}
  .shell{display:block}
  .ident{
    position:static;height:auto;overflow:visible;
    border-right:none;border-bottom:1.5px solid var(--ink);
  }
  .ident__spec,.ident__foot{display:block}
  .view{display:block;break-after:page}
  .view:last-of-type{break-after:auto}
  .blk{break-inside:avoid}
  .rv{opacity:1;transform:none}
  .sched tbody tr:hover{background:none}
  body{background:#fff;font-size:11.5px}
}
