/* ============================================================
   ARK CIC — Component library, Route J "Open Day"
   Reads tokens-v4.css only. No hard-coded colour, font, radius
   or border width lives here.
   ============================================================ */

*,*::before,*::after{box-sizing:border-box}
/* tokens live on the route element, so the type rule must apply there too —
   setting it on <body> alone leaves --f-body undefined and falls back to serif */
body{margin:0;background:var(--c-ground)}
body,.ds-root,[data-route]{color:var(--c-ink);font-family:var(--f-body);
  font-size:17px;line-height:var(--lh-body);-webkit-font-smoothing:antialiased}

/* focus: 3px, offset. WCAG 2.2. Never removed. */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{
  outline:3px solid var(--c-accent);outline-offset:3px;border-radius:var(--radius-sm)}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

.wrap{max-width:var(--container);margin:0 auto;padding:0 var(--sp-6)}

/* ---------- typography ---------- */
.h1,.h2,.h3,.h4{font-family:var(--f-display);font-weight:var(--fw-display);
  letter-spacing:var(--ls-display);margin:0;text-wrap:balance}
.h1{font-size:var(--ts-4xl);line-height:var(--lh-tight)}
.h2{font-size:clamp(1.9rem,4vw,2.7rem);line-height:1.06}
.h3{font-size:var(--ts-lg);line-height:var(--lh-heading);font-weight:var(--fw-strong)}
.h4{font-size:var(--ts-md);line-height:var(--lh-heading);font-weight:var(--fw-strong)}
.lead{font-size:1.06rem;color:var(--c-muted);max-width:46ch;line-height:1.55}
.kicker{font-size:.86rem;font-weight:600;color:var(--c-muted);margin:0 0 var(--sp-3)}
.muted{color:var(--c-muted)}
.num{font-variant-numeric:tabular-nums}

/* long-form: the destination guides live here */
.prose{max-width:64ch;font-size:1.06rem}
.prose>*+*{margin-top:var(--sp-4)}
.prose p{margin:0;line-height:1.68;text-wrap:pretty}
.prose h2{font-family:var(--f-display);font-weight:var(--fw-display);font-size:var(--ts-xl);
  line-height:1.15;letter-spacing:var(--ls-display);margin:var(--sp-12) 0 var(--sp-3)}
.prose h3{font-family:var(--f-display);font-weight:var(--fw-strong);font-size:var(--ts-md);
  margin:var(--sp-8) 0 var(--sp-2)}
.prose ul,.prose ol{margin:0;padding-left:var(--sp-5)}
.prose li+li{margin-top:var(--sp-2)}
.prose li::marker{color:var(--c-accent)}
.prose a{color:var(--c-accent);text-underline-offset:3px;text-decoration-thickness:1.5px}
.prose strong{font-weight:700}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);
  font-family:var(--f-display);font-weight:var(--fw-ui);font-size:.95rem;
  padding:13px 24px;border-radius:var(--radius-pill);border:1px solid transparent;
  cursor:pointer;text-decoration:none;line-height:1.1;
  transition:transform var(--dur) var(--ease),background var(--dur) var(--ease)}
.btn:hover{transform:translateY(-1px)}
.btn--sm{font-size:.84rem;padding:9px 17px}
.btn--lg{font-size:1.02rem;padding:16px 30px}
.btn--dark{background:var(--c-accent);color:var(--c-accent-ink)}
.btn--dark:hover{background:color-mix(in srgb,var(--c-accent) 86%,black)}
.btn--plain{background:transparent;color:var(--c-ink);border-color:var(--c-rule-strong)}
.btn--plain:hover{background:var(--c-surface-alt)}
.btn--white{background:var(--c-surface);color:var(--c-ink)}
.btn--link{background:none;border:none;padding:0;color:var(--c-accent);font-weight:700;
  text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.4;cursor:not-allowed;pointer-events:none;transform:none}
.btn[data-loading]{color:transparent;position:relative;pointer-events:none}
.btn[data-loading]::after{content:"";position:absolute;width:15px;height:15px;border-radius:50%;
  border:2px solid var(--c-accent-ink);border-top-color:transparent;animation:spin .6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- forms ---------- */
.field{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-5)}
.field__label{font-family:var(--f-display);font-weight:var(--fw-ui);font-size:.92rem}
.field__label .req{color:var(--c-warm)}
.field__hint{font-size:.82rem;color:var(--c-muted);line-height:var(--lh-ui)}
.field__error{font-size:.82rem;color:var(--c-warm);font-weight:600;display:flex;gap:var(--sp-2);align-items:flex-start}
.input,.select,.textarea{font-family:var(--f-body);font-size:1rem;color:var(--c-ink);
  background:var(--c-surface);border:1px solid var(--c-rule-strong);
  border-radius:var(--radius-pill);padding:13px 20px;width:100%}
.textarea{border-radius:var(--radius-md);min-height:120px;resize:vertical;line-height:1.6}
.select{appearance:none;padding-right:var(--sp-10);
  background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);
  background-position:calc(100% - 22px) 53%,calc(100% - 16px) 53%;background-size:6px 6px;background-repeat:no-repeat}
.input::placeholder,.textarea::placeholder{color:var(--c-muted)}
.input[aria-invalid="true"],.textarea[aria-invalid="true"],.select[aria-invalid="true"]{
  border-color:var(--c-warm);border-width:2px;background:var(--c-warm-soft)}
.input[disabled],.textarea[disabled],.select[disabled]{background:var(--c-surface-alt);color:var(--c-muted);cursor:not-allowed}
.check{display:flex;gap:var(--sp-3);align-items:flex-start;font-size:.94rem;line-height:var(--lh-ui);cursor:pointer}
.check input{width:24px;height:24px;margin:0;accent-color:var(--c-accent);flex:0 0 auto}
.file{border:2px dashed var(--c-rule-strong);border-radius:var(--radius-md);
  padding:var(--sp-6);text-align:center;background:var(--c-surface)}
.inline-form{display:flex;gap:var(--sp-2);flex-wrap:wrap}
.inline-form .input{min-width:230px;flex:1}

/* ---------- pills, tags ---------- */
.tag{display:inline-flex;align-items:center;font-size:.76rem;font-weight:600;
  padding:5px 12px;border-radius:var(--radius-pill);color:var(--c-on-pastel);background:var(--c-surface-alt)}
.tag--mint{background:var(--p-mint)} .tag--sky{background:var(--p-sky)}
.tag--lilac{background:var(--p-lilac)} .tag--butter{background:var(--p-butter)}
.tag--blush{background:var(--p-blush)} .tag--clay{background:var(--p-clay)}
.tags{display:flex;gap:6px;flex-wrap:wrap}

/* filter chips — pills, not a sidebar; fits the language */
.filters{display:flex;gap:var(--sp-2);flex-wrap:wrap;align-items:center}
.chip-filter{font-family:var(--f-display);font-weight:var(--fw-ui);font-size:.86rem;
  padding:9px 17px;border-radius:var(--radius-pill);border:1px solid var(--c-rule-strong);
  background:var(--c-surface);color:var(--c-ink);cursor:pointer}
.chip-filter[aria-pressed="true"]{background:var(--c-accent);color:var(--c-accent-ink);border-color:var(--c-accent)}

/* ---------- cards ---------- */
.card{background:var(--c-surface);border-radius:var(--radius-md);padding:var(--sp-5);box-shadow:var(--shadow-sm)}
.job{background:var(--c-surface);border-radius:var(--radius-md);padding:var(--sp-5);
  box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:var(--sp-3);
  transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}
.job:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.job__t{font-family:var(--f-display);font-weight:700;font-size:1.08rem;letter-spacing:-.018em;margin:0}
.job__o{font-size:.88rem;color:var(--c-muted)}
.job__f{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);
  border-top:1px solid var(--c-rule);padding-top:var(--sp-3);margin-top:auto;font-size:.86rem;color:var(--c-muted)}
.jobs{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:var(--sp-4)}

/* pastel stat cards — the signature */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--sp-4)}
.stat{border-radius:var(--radius-md);padding:var(--sp-5);min-height:176px;position:relative;overflow:hidden;
  display:flex;flex-direction:column;justify-content:space-between;color:var(--c-on-pastel)}
.stat n{font-family:var(--f-display);font-weight:800;font-size:2.05rem;letter-spacing:-.035em;line-height:1;display:block}
.stat small{font-size:.82rem;line-height:1.35;font-weight:500;max-width:22ch}
.stat svg{position:absolute;left:0;right:0;top:8%;height:74%;width:100%;opacity:.5;pointer-events:none}

/* at-a-glance strip */
.glance{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--sp-3)}
/* sits on a white slab, so surface-alt not surface — otherwise the cards vanish */
.glance div{background:var(--c-surface-alt);border-radius:var(--radius-md);padding:var(--sp-4)}
.glance .k{font-size:.78rem;color:var(--c-muted);display:block;margin-bottom:4px}
.glance .v{font-family:var(--f-display);font-weight:700;font-size:1.06rem;letter-spacing:-.02em}

/* person */
.person{display:flex;gap:var(--sp-3);align-items:center}
.person img{width:46px;height:46px;border-radius:50%;object-fit:cover;flex:0 0 auto}
.person b{display:block;font-family:var(--f-display);font-weight:700;font-size:.94rem}
.person span{font-size:.82rem;color:var(--c-muted)}
.faces{display:flex}
.faces img{width:34px;height:34px;border-radius:50%;border:2.5px solid var(--c-ground);object-fit:cover;margin-left:-10px}
.faces img:first-child{margin-left:0}

/* ---------- messaging ---------- */
/* full border + tinted ground. No side stripes. */
.callout{border:1px solid var(--c-accent);background:var(--c-accent-soft);
  border-radius:var(--radius-md);padding:var(--sp-5);max-width:64ch;color:var(--c-ink)}
.callout--warm{border-color:var(--c-warm);background:var(--c-warm-soft)}
.callout--info{border-color:var(--c-info);background:var(--c-info-soft)}
.callout--success{border-color:var(--c-success);background:var(--c-success-soft)}
.callout b{display:block;font-family:var(--f-display);font-weight:700;margin-bottom:var(--sp-2)}
.callout p{margin:0;font-size:.96rem;line-height:1.55}

/* empty state — the launch condition, not an edge case */
.empty{border:2px dashed var(--c-rule-strong);border-radius:var(--radius-md);
  padding:var(--sp-16) var(--sp-6);text-align:center;background:var(--c-surface)}
.empty .h3{margin-bottom:var(--sp-2)}
.empty p{color:var(--c-muted);max-width:44ch;margin:0 auto var(--sp-6)}

.quote{max-width:740px;margin:0 auto;text-align:center}
.quote p{font-family:var(--f-display);font-weight:var(--fw-strong);
  font-size:clamp(1.35rem,2.7vw,2rem);line-height:1.22;letter-spacing:-.024em;margin:0 0 var(--sp-4)}
.quote .who{font-size:.88rem;color:var(--c-muted)}


/* commitments list, a numbered list rather than tabular data.
   Was a table, which forced horizontal scroll on mobile to read a promise. */
.promise{list-style:none;margin:0;padding:0;background:var(--c-surface);
  border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}
.promise li{display:flex;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);align-items:flex-start}
.promise li+li{border-top:1px solid var(--c-rule)}
.promise .n{font-family:var(--f-display);font-weight:700;color:var(--c-accent);
  flex:0 0 auto;min-width:30px;font-variant-numeric:tabular-nums}
.promise p{margin:0;line-height:1.5}

/* ---------- accordion ---------- */
.acc{background:var(--c-surface);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}
.acc details+details{border-top:1px solid var(--c-rule)}
.acc summary{padding:var(--sp-4) var(--sp-5);cursor:pointer;font-family:var(--f-display);
  font-weight:var(--fw-ui);font-size:1rem;display:flex;justify-content:space-between;
  gap:var(--sp-4);align-items:center;list-style:none}
.acc summary::-webkit-details-marker{display:none}
.acc summary::after{content:"+";font-family:var(--f-display);font-weight:700;color:var(--c-accent);font-size:1.3rem;line-height:1}
.acc details[open] summary::after{content:"\2013"}
.acc__body{padding:0 var(--sp-5) var(--sp-5);font-size:.98rem;color:var(--c-muted);line-height:1.6;max-width:62ch}

/* ---------- table ---------- */
.table-wrap{overflow-x:auto;background:var(--c-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}
.table{border-collapse:collapse;width:100%;font-size:.94rem;min-width:460px}
.table th{text-align:left;font-family:var(--f-display);font-weight:var(--fw-ui);font-size:.82rem;
  color:var(--c-muted);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--c-rule)}
.table td{padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--c-rule)}
.table tr:last-child td{border-bottom:none}
.table .n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---------- nav ---------- */
.header{padding:var(--sp-5) 0}
.header__in{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-6);
  flex-wrap:wrap;position:relative}
/* mobile disclosure nav, built on the native details element so it works
   with no JS and is keyboard operable by default. Hidden on desktop. */
.nav-m{display:none}
.nav-m>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:var(--sp-2);
  min-height:44px;padding:10px 18px;border:1px solid var(--c-rule-strong);
  border-radius:var(--radius-pill);font-family:var(--f-display);font-weight:var(--fw-ui);font-size:.9rem}
.nav-m>summary::-webkit-details-marker{display:none}
.nav-m>summary::after{content:"";width:16px;height:10px;flex:0 0 auto;
  border-top:2px solid currentColor;border-bottom:2px solid currentColor}
.nav-m[open]>summary::after{border-bottom:none;border-top:2px solid currentColor;height:2px}
.nav-m__panel{position:absolute;top:calc(100% + var(--sp-3));left:0;right:0;z-index:30;
  background:var(--c-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-md);
  padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-1)}
.nav-m__panel a{padding:12px var(--sp-3);border-radius:var(--radius-sm);
  text-decoration:none;color:var(--c-ink);font-weight:500;min-height:44px;display:flex;align-items:center}
.nav-m__panel a:hover{background:var(--c-surface-alt)}
.nav-m__panel .btn{margin-top:var(--sp-2)}

.brand{font-family:var(--f-display);font-weight:800;font-size:1.22rem;letter-spacing:-.03em;
  display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--c-ink)}
.brand i{width:11px;height:11px;border-radius:50%;background:var(--c-accent);display:block}
.menu{display:flex;gap:var(--sp-6);font-size:.94rem;font-weight:500}
.menu a{color:var(--c-ink);text-decoration:none;opacity:.78}
.menu a:hover,.menu a[aria-current]{opacity:1;color:var(--c-accent)}
.breadcrumb ol{display:flex;gap:var(--sp-2);list-style:none;margin:0;padding:0;flex-wrap:wrap;font-size:.86rem;color:var(--c-muted)}
.breadcrumb a{color:var(--c-muted);display:inline-block;padding:3px 0}
.breadcrumb li+li::before{content:"/";margin-right:var(--sp-2);color:var(--c-rule-strong)}
.footer{padding:var(--sp-10) 0 var(--sp-16);border-top:1px solid var(--c-rule);font-size:.88rem;color:var(--c-muted)}

/* ---------- layout helpers ---------- */
.slab{background:var(--c-surface);border-radius:34px 34px 0 0;padding:var(--sp-16) 0 var(--sp-12)}
.section{padding-block:var(--sp-16)}
.loadmore{display:flex;justify-content:center;padding:var(--sp-8) 0}
.band{background:var(--c-accent);color:var(--c-accent-ink);border-radius:var(--radius-md);
  padding:var(--sp-12) var(--sp-8)}
.band h2{font-family:var(--f-display);font-weight:800;font-size:clamp(1.7rem,3.6vw,2.5rem);
  letter-spacing:var(--ls-display);line-height:1.08;margin:0 0 var(--sp-4)}
.band h2 em{font-style:normal;color:var(--p-butter)}

/* ---------- responsive ---------- */
/* must sit last: .menu{display:flex} is defined below the nav block,
   so an earlier media query at equal specificity loses the cascade */
@media(max-width:900px){
  .menu,.header__cta{display:none}
  .nav-m{display:block;margin-left:auto}
}
