/* ==========================================================
   NSD CENTRAL UI SYSTEM
   Apple/iOS-informed geometry and interaction for the web.
   This layer intentionally does not own brand colour, type,
   copy or imagery; those remain in the NSD design layer.
   ========================================================== */

:root{
  /* one shared spacing ladder */
  --ui-space-1:4px;
  --ui-space-2:8px;
  --ui-space-3:12px;
  --ui-space-4:16px;
  --ui-space-5:24px;
  --ui-space-6:32px;
  --ui-space-7:48px;
  --ui-space-8:64px;
  --ui-space-9:96px;

  /* controls and surfaces */
  --ui-touch-min:44px;
  --ui-field-height:48px;
  --ui-header-height:78px;
  --ui-header-height-mobile:64px;
  --ui-radius-control:14px;
  --ui-radius-group:18px;
  --ui-radius-card:24px;
  --ui-radius-pill:999px;
  --ui-surface-pad:clamp(24px,2.4vw,32px);
  --ui-grid-gap:clamp(16px,2vw,24px);
  --ui-divider:1px solid var(--line);
  --ui-shadow-rest:0 1px 2px rgba(6,26,46,.04),0 10px 28px rgba(6,26,46,.055);
  --ui-shadow-raised:0 2px 4px rgba(6,26,46,.06),0 16px 38px rgba(6,26,46,.1);

  /* one motion language */
  --ui-motion-fast:160ms;
  --ui-motion-standard:240ms;
  --ui-ease:cubic-bezier(.2,.7,.3,1);

  /* compatibility aliases for the existing NSD layer */
  --space-1:var(--ui-space-2);
  --space-2:var(--ui-space-3);
  --space-3:var(--ui-space-4);
  --space-4:var(--ui-space-5);
  --space-5:var(--ui-space-6);
  --space-6:var(--ui-space-7);
  --space-7:var(--ui-space-8);
  --space-8:88px;
  --space-9:112px;
  --grid-gap:var(--ui-grid-gap);
  --surface-pad:var(--ui-surface-pad);
  --radius-card:var(--ui-radius-card);
  --radius-compact:var(--ui-radius-group);
  --radius-control:var(--ui-radius-control);
  --surface-shadow:var(--ui-shadow-rest)
}

/* Adaptive page and collection rhythm. */
.grid{gap:var(--ui-grid-gap)}
.card,.mcard,.chap,.post,.bpost,.afield{
  border-radius:var(--ui-radius-card);
  box-shadow:var(--ui-shadow-rest)
}
.card,.mcard,.chap,.bpost,.afield{padding:var(--ui-surface-pad)}
.bpost{padding:0}
.lv-route,.lv-glance,.lv-panel,.lv-benefit,.lv-outcome-card,
.lv-tablewrap,.result,.chapter-map,.state-key{
  border-radius:var(--ui-radius-group)
}
.result,.chapter-map,.article-art,.soon,.steps{border-radius:var(--ui-radius-card)}
.navmenu{border-radius:var(--ui-radius-group)}
.pill,.badge,.gradechip{border-radius:var(--ui-radius-pill)}
.lv-panel,.lv-benefit,.lv-outcome-card,.lv-std,.lv-fee-list,
.route,.sched-row,.ev{min-width:0}

/* Every operable control meets the 44px target without changing its type. */
.btn,.portal,.navtop,.burger,.chapter-legend button,.cat-chip,
.rail-next,.lv-q summary,.lv-benefit summary{
  min-height:var(--ui-touch-min);
  touch-action:manipulation
}
.btn,.portal,.chapter-legend button,.cat-chip{
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:var(--ui-radius-pill);
  transition:transform var(--ui-motion-fast) var(--ui-ease),
    background var(--ui-motion-fast) ease,
    border-color var(--ui-motion-fast) ease,
    box-shadow var(--ui-motion-fast) ease,
    color var(--ui-motion-fast) ease
}
.btn:active,.portal:active,.chapter-legend button:active,.cat-chip:active{
  transform:scale(.985)
}
.rail-next{min-width:var(--ui-touch-min);min-height:var(--ui-touch-min)}
.lv-index a{min-height:var(--ui-touch-min);display:flex;align-items:center}

/* Fields and menu controls share one height and corner treatment. */
.filters{display:flex;flex-wrap:wrap;gap:var(--ui-space-3);align-items:center}
.filters select,.filters input,
.cform input,.cform select,
.aform input:not([type="radio"]):not([type="checkbox"]):not([type="file"]),
.aform select,.vsearch input{
  min-height:var(--ui-field-height);
  border-radius:var(--ui-radius-control)
}
.filters select{height:var(--ui-field-height);padding-block:0}
.cform textarea,.aform textarea{border-radius:var(--ui-radius-control)}
.atrack,.adomain,.afile{border-radius:var(--ui-radius-control)}

/* Focus never changes a control's silhouette. */
.btn:focus-visible,.portal:focus-visible,.chapter-legend button:focus-visible,
.cat-chip:focus-visible{border-radius:var(--ui-radius-pill)}
.filters select:focus-visible,.filters input:focus-visible,
.cform input:focus-visible,.cform select:focus-visible,.cform textarea:focus-visible,
.aform input:focus-visible,.aform select:focus-visible,.aform textarea:focus-visible,
.vsearch input:focus-visible{border-radius:var(--ui-radius-control)}
.lv-benefit summary:focus-visible,.lv-q summary:focus-visible,
.afile input[type="file"]:focus-visible{border-radius:var(--ui-radius-control)}
nav.main a:focus-visible{border-radius:10px}

/* Grouped disclosures and fact rows use consistent internal rhythm. */
.lv-benefit-deck,.lv-subgrid,.lv-outcome-grid,.lv-standard{
  gap:var(--ui-space-4)
}
.lv-benefit summary,.lv-q summary{
  min-height:56px;
  transition:background var(--ui-motion-fast) ease,color var(--ui-motion-fast) ease
}
.lv-fee-row,.lv-table th,.lv-table td{padding-block:14px}
.lv-fee-row{min-height:52px}
.lv-standard .lv-std{border-radius:var(--ui-radius-group)}
.sched,.routes{
  overflow:hidden;border:var(--ui-divider);
  border-radius:var(--ui-radius-card);background:#fff;box-shadow:var(--ui-shadow-rest)
}
.sched-row,.route{padding-inline:var(--ui-space-5)}
.routes{border-top:var(--ui-divider)}

/* Navigation remains compact but all primary targets are comfortably tappable. */
.navtop{padding-block:10px}
nav.main a{min-height:var(--ui-touch-min);display:flex;align-items:center}
.mega-links a,.navmenu a{min-height:var(--ui-touch-min)}
.chapter-map.leaflet-container .leaflet-control-zoom a,
.chapter-map .leaflet-container .leaflet-control-zoom a{
  width:var(--ui-touch-min)!important;height:var(--ui-touch-min)!important;
  line-height:var(--ui-touch-min)!important;display:grid;place-items:center
}

/* About uses the same inset-grouped structure as Events and disclosures. */
#v-about .about-facts-grid{
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--ui-space-7);align-items:start
}
#v-about .about-facts-grid > *{min-width:0}
#v-about .about-history-list,
#v-about .about-standing-card{
  margin:var(--ui-space-5) 0 0;
  overflow:hidden;border:var(--ui-divider);
  border-radius:var(--ui-radius-card);background:#fff;
  box-shadow:var(--ui-shadow-rest)
}
#v-about .about-history-list{
  position:relative;padding:0;margin-left:0;border-left:var(--ui-divider)
}
#v-about .about-history-list::before{
  content:"";position:absolute;z-index:0;
  top:32px;bottom:32px;left:31px;width:2px;background:var(--line)
}
#v-about .about-history-list .item{
  position:relative;z-index:1;
  min-height:0;padding:var(--ui-space-5) var(--ui-space-5) var(--ui-space-5) 64px
}
#v-about .about-history-list .item + .item{border-top:0}
#v-about .about-history-list .item::before{
  left:23px;top:30px;z-index:1;border-width:3px;border-color:#fff
}
#v-about .about-history-list .item b{margin-bottom:var(--ui-space-2)}
#v-about .about-standing-card{padding:0;display:flex;flex-direction:column}
#v-about .about-standing-card p{
  margin:0;padding:var(--ui-space-5)
}
#v-about .about-standing-card p + p{border-top:var(--ui-divider)}
#v-about .about-standing-visual{
  flex:1 1 auto;min-height:280px;margin-top:auto;
  position:relative;overflow:hidden;background:#1a4f9c
}
#v-about .about-standing-visual img{
  position:absolute;inset:0;
  display:block;width:100%;height:100%;
  object-fit:cover;object-position:center -25px
}
#v-about .about-management-grid{
  grid-template-columns:repeat(4,minmax(0,1fr));margin-top:var(--ui-space-6)
}
#v-about .about-person-card{min-width:0;min-height:112px;padding:0;overflow:hidden}
#v-about .about-person-copy{padding:var(--ui-space-5)}
@media(min-width:1011px){
  #v-about .about-facts-grid{align-items:stretch}
  #v-about .about-history-panel,
  #v-about .about-standing-panel{
    display:grid;grid-template-rows:auto minmax(0,1fr)
  }
  #v-about .about-history-list,
  #v-about .about-standing-card{height:100%}
  #v-about .about-standing-card{display:flex;flex-direction:column}
  #v-about .about-standing-card p{flex:0 0 auto}
}

/* Events are one grouped collection, not disconnected hairline rows. */
#v-events .event-filters{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:var(--ui-space-3);max-width:620px;
  margin-top:var(--ui-space-6);margin-bottom:0
}
#v-events .event-filters select{
  width:100%;min-width:0
}
#v-events .event-list{
  margin-top:var(--ui-space-6);
  overflow:hidden;border:var(--ui-divider);
  border-radius:var(--ui-radius-card);background:#fff;box-shadow:var(--ui-shadow-rest)
}
#v-events .event-list .ev,
#v-events .event-list .ev[data-go]{
  grid-template-columns:76px minmax(0,1fr) auto;
  gap:var(--ui-space-5);align-items:center;
  min-height:120px;margin:0;padding:var(--ui-space-5);
  border-radius:0;border-bottom:var(--ui-divider);
  transition:background var(--ui-motion-fast) ease
}
#v-events .event-list .ev:last-child{border-bottom:0}
#v-events .event-list .ev .cal{
  width:76px;min-height:78px;display:grid;align-content:center;
  border-radius:var(--ui-radius-control)
}
#v-events .event-list .ev .body{min-width:0}
#v-events .wrap{overflow-wrap:normal}
#v-events .event-list .ev h3,#v-events .event-list .ev p{overflow-wrap:anywhere}
#v-events .event-list .ev .pill{
  min-height:36px;display:inline-flex;align-items:center;justify-content:center
}
#v-events .event-list .ev[data-go]:focus-visible{
  border-radius:0;box-shadow:inset 0 0 0 3px rgba(199,154,78,.72)
}
#v-events .event-list .ev[data-go]:active{background:rgba(176,141,87,.08)}
#v-events .event-list .ev[data-go]:hover h3{color:var(--navy)}
#v-events .archive-list{
  grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));
  overflow:hidden;border:var(--ui-divider);border-radius:var(--ui-radius-card);
  box-shadow:var(--ui-shadow-rest)
}
#v-events .archive-row{min-width:0;padding:var(--ui-space-5)}

/* Dense rows tint in place; cards lift only when the whole card acts. */
.route,.sched-row,.lv-fee-row{
  transition:background var(--ui-motion-fast) ease
}
@media(hover:hover) and (pointer:fine){
  .card[data-go]:hover,.mcard[data-go]:hover,.chap[data-go]:hover,
  .post[data-go]:hover,.bpost[data-go]:hover{
    transform:translateY(-2px);box-shadow:var(--ui-shadow-raised)
  }
  #v-events .event-list .ev[data-go]:hover,
  .sched-row[data-go]:hover,.route[data-go]:hover{
    transform:none;box-shadow:none
  }
}

@media(max-width:760px){
  :root{
    --ui-surface-pad:24px;
    --ui-grid-gap:16px
  }
  #v-events .event-filters{margin-top:var(--ui-space-5)}
  #v-events .event-filters{grid-template-columns:minmax(0,1fr);max-width:none}
  #v-events .event-list{margin-top:var(--ui-space-5);border-radius:var(--ui-radius-group)}
  #v-events .archive-list{border-radius:var(--ui-radius-group)}
  #v-events .event-list .ev,
  #v-events .event-list .ev[data-go]{
    grid-template-columns:68px minmax(0,1fr);
    gap:var(--ui-space-4);min-height:0;padding:var(--ui-space-4)
  }
  #v-events .event-list .ev .cal{width:68px;min-width:0;min-height:68px}
  #v-events .event-list .ev .pill{
    grid-column:2;justify-self:start;margin-top:var(--ui-space-1)
  }
  #v-about .about-history-list,
  #v-about .about-standing-card{border-radius:var(--ui-radius-group)}
  #v-about .about-history-list::before{top:28px;bottom:28px;left:27px}
  #v-about .about-history-list .item{
    padding:var(--ui-space-5) var(--ui-space-4) var(--ui-space-5) 56px
  }
  #v-about .about-history-list .item::before{left:19px;top:26px}
  #v-about .about-management-grid{grid-template-columns:minmax(0,1fr)}
}

@media(max-width:1010px){
  #v-about .about-facts-grid{grid-template-columns:minmax(0,1fr)}
}
@media(min-width:761px) and (max-width:1010px){
  #v-about .about-management-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media(max-width:1010px){
  nav.main{
    max-height:calc(100dvh - var(--util-h,0px) - var(--ui-header-height-mobile))
  }
}

@media(prefers-reduced-motion:reduce){
  .btn,.portal,.chapter-legend button,.cat-chip,.card,.mcard,.chap,.post,.bpost,
  .route,.sched-row,.ev,.lv-benefit summary,.lv-q summary{
    transition:none!important
  }
}
