/* Careers page. Loaded after blog.css, which supplies the tokens, the shell
   (nav, wrap, foot) and .btn. Everything here is specific to the role picker
   and the application forms. */

/* ── the note above the roles ────────────────────────────────────────── */
.hiring{display:flex;align-items:flex-start;gap:14px;
  background:var(--wash);border:1px solid var(--line);border-radius:16px;
  padding:clamp(18px,2.2vw,24px);margin-top:clamp(20px,2.6vw,28px)}
.hiring .live{position:relative;top:7px;width:9px;height:9px;border-radius:50%;
  flex:none;background:var(--green)}
.hiring p{margin:0;font-size:1rem;line-height:1.6}
.hiring b{font-weight:700}

/* the selected pill, and hover, live with the picker rules further down */
.role-tab[aria-selected="true"]{border-color:var(--navy);color:var(--navy);
  box-shadow:0 0 0 1px var(--navy)}
@media (hover:hover) and (pointer:fine){.role-tab:hover{border-color:#C3CCDC}}

/* ── the form ────────────────────────────────────────────────────────── */
.apply{margin-top:clamp(26px,3.2vw,36px);padding-bottom:clamp(56px,8vw,96px)}
/* the form shares the picker's left edge, but its inputs stop well short of
   the full page width — a 1100px text field is unusable */
.apply h2,.role-bio,.apply-form{max-width:880px}
.apply h2{margin:0;font-weight:800;letter-spacing:-.028em;line-height:1.15;
  font-size:clamp(1.4rem,2.2vw,1.85rem)}
.role-bio{margin:10px 0 0;font-size:1rem;line-height:1.65;color:var(--muted);
  max-width:66ch;text-wrap:pretty}

fieldset{border:0;margin:clamp(26px,3vw,36px) 0 0;padding:0}
legend{padding:0;font-size:.74rem;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;color:var(--navy)}
.fields{display:grid;gap:16px;margin-top:16px}
@media(min-width:680px){
  .fields{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fields .wide{grid-column:1/-1}
}

.field{display:grid;gap:6px;min-width:0}
/* .field beats the browser's own [hidden]{display:none}, so a year field
   JS had hidden still rendered. Needs the same class in the selector. */
.field[hidden]{display:none}
.field > label,.group > .lab{font-size:.9rem;font-weight:700;color:var(--ink)}
.field .hint{font-size:.82rem;line-height:1.45;color:var(--muted)}
.req{color:var(--navy)}

input[type=text],input[type=email],input[type=url],input[type=number],
input[type=file],textarea,select{
  width:100%;font:inherit;font-size:.95rem;color:var(--ink);
  background:var(--white);border:1px solid #D8DEE9;border-radius:11px;
  padding:11px 13px;
  transition:border-color var(--dur) var(--ease-out),
             box-shadow var(--dur) var(--ease-out)}
textarea{min-height:104px;resize:vertical;line-height:1.6}
input:focus,textarea:focus,select:focus{outline:0;border-color:var(--navy);
  box-shadow:0 0 0 3px rgba(26,58,117,.13)}
input[type=file]{padding:9px 11px;cursor:pointer}
input[type=file]::file-selector-button{font:inherit;font-size:.85rem;font-weight:700;
  color:var(--navy);background:var(--wash);border:1px solid #D8DEE9;
  border-radius:8px;padding:7px 12px;margin-right:12px;cursor:pointer}

/* ── checkbox group ──────────────────────────────────────────────────── */
.group{display:grid;gap:10px}
.checks{display:grid;gap:9px;margin-top:2px}
@media(min-width:520px){.checks{grid-template-columns:repeat(2,minmax(0,1fr))}}
.check{display:flex;align-items:center;gap:10px;font-size:.94rem;font-weight:500;
  background:var(--white);border:1px solid var(--line);border-radius:11px;
  padding:10px 13px;cursor:pointer;
  transition:border-color var(--dur) var(--ease-out)}
.check input{width:17px;height:17px;flex:none;accent-color:var(--navy);cursor:pointer}
.check:has(input:checked){border-color:var(--navy)}
@media (hover:hover) and (pointer:fine){.check:hover{border-color:#C3CCDC}}

/* ── submit ──────────────────────────────────────────────────────────── */
.submit-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap;
  margin-top:clamp(26px,3vw,34px)}
.submit-note{margin:0;font-size:.85rem;color:var(--muted);flex:1 1 240px}
.form-msg{margin:16px 0 0;font-size:.92rem;line-height:1.6;border-radius:12px;
  padding:13px 16px;display:none}
.form-msg[data-state]{display:block}
.form-msg[data-state="ok"]{background:rgba(22,163,74,.09);color:#14532D;
  border:1px solid rgba(22,163,74,.3)}
.form-msg[data-state="err"]{background:rgba(180,35,35,.07);color:#7F1D1D;
  border:1px solid rgba(180,35,35,.28)}
.form-msg[data-state="busy"]{background:var(--wash);color:var(--muted);
  border:1px solid var(--line)}

/* the honeypot is for scripts, not for people or screen readers */
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* With no JS every panel simply stays open: three forms one after another is
   longer than it needs to be, but it is never a blank page. */
.panel[hidden]{display:none}

/* ── the role description ────────────────────────────────────────────── */
.bio-h{margin:22px 0 8px;font-size:.74rem;font-weight:800;letter-spacing:.1em;
  text-transform:uppercase;color:var(--navy)}
.bio-list{list-style:none;margin:0;padding:0;display:grid;gap:8px;max-width:70ch}
.bio-list li{display:flex;gap:11px;align-items:flex-start;font-size:.98rem;
  line-height:1.6;color:rgba(10,10,10,.8)}
.bio-list li::before{content:"";flex:none;width:5px;height:5px;border-radius:50%;
  background:var(--navy);opacity:.45;margin-top:9px}
.pay{margin:20px 0 0;font-size:.92rem;font-weight:700;color:var(--ink)}

/* ── the confirmation, in place of the form ──────────────────────────── */
.done{max-width:560px;margin:clamp(30px,4vw,44px) 0 0;
  background:var(--white);border:1px solid var(--line);border-radius:20px;
  padding:clamp(28px,3.4vw,40px);text-align:center;outline:0}
.done[hidden]{display:none}
.done-tick{display:flex;align-items:center;justify-content:center;
  width:56px;height:56px;margin:0 auto 18px;border-radius:50%;
  background:rgba(22,163,74,.12);color:var(--green)}
.done-tick svg{width:28px;height:28px}
.done h3{margin:0;font-weight:800;font-size:clamp(1.2rem,1.8vw,1.5rem);
  letter-spacing:-.024em}
.done p{margin:10px 0 22px;font-size:.96rem;line-height:1.62;color:var(--muted)}
@media (prefers-reduced-motion:no-preference){
  .done:not([hidden]){animation:done-in 260ms var(--ease-out) both}
  @keyframes done-in{from{opacity:0;transform:translateY(10px) scale(.985)}
    to{opacity:1;transform:none}}
}

/* ── the picker, with how long this takes ────────────────────────────── */
.roles-row{display:flex;align-items:center;justify-content:space-between;gap:18px;
  flex-wrap:wrap;margin:clamp(28px,3.4vw,40px) 0 0}
.roles{display:flex;flex-wrap:wrap;gap:10px;margin:0}
.role-tab{display:inline-flex;align-items:center;text-align:left;cursor:pointer;
  font-family:var(--sans);font-size:.95rem;font-weight:700;letter-spacing:-.01em;
  color:var(--ink);background:var(--white);border:1px solid var(--line);
  border-radius:99px;padding:11px 20px;
  transition:border-color var(--dur) var(--ease-out),color var(--dur) var(--ease-out),
             box-shadow var(--dur) var(--ease-out)}
.apply-time{display:inline-flex;align-items:center;gap:8px;margin:0;
  font-size:.87rem;font-weight:600;color:var(--muted);white-space:nowrap}
.apply-time svg{width:16px;height:16px;flex:none}

/* ── the role description, two columns ───────────────────────────────── */
.bio-cols{display:grid;gap:clamp(20px,3vw,44px);margin-top:6px}
@media(min-width:720px){.bio-cols{grid-template-columns:repeat(2,minmax(0,1fr))}}
.bio-cols .bio-h{margin-top:16px}


/* ── the posting ─────────────────────────────────────────────────────
   A job posting reads as one sheet of paper: a tinted page, a white card
   centred on it, and small-caps section labels down the middle. */
body{background:var(--wash)}
.head-sub{margin:10px 0 0;font-size:1rem;color:var(--muted)}
.apply{margin-top:clamp(20px,2.6vw,30px);padding-bottom:clamp(56px,8vw,96px);background:none}
.posting{width:min(100%,860px);margin:0 auto;background:var(--white);
  border:1px solid var(--line);border-radius:18px;
  padding:clamp(26px,4vw,54px) clamp(20px,4vw,56px)}
.post-head{display:grid;justify-items:center;gap:14px;text-align:center;
  padding-bottom:clamp(24px,3vw,32px)}
.post-logo{width:44px;height:44px;border-radius:10px}
.post-head h2{margin:0;font-weight:800;letter-spacing:-.03em;line-height:1.15;
  font-size:clamp(1.5rem,3vw,2.05rem);text-wrap:balance;max-width:22ch}
.post-loc{margin:0;font-size:.95rem;color:var(--muted)}

.apply-now{display:inline-flex;align-items:center;justify-content:center;
  min-width:210px;padding:15px 30px;border-radius:99px;background:var(--navy);
  color:#fff;font-weight:700;font-size:.95rem;letter-spacing:.02em;
  text-decoration:none;text-transform:uppercase;
  transition:background var(--dur) var(--ease-out),translate var(--dur-press) var(--ease-out)}
.apply-now:active{translate:0 1px}
.apply-now:focus-visible{outline:2px solid var(--navy);outline-offset:3px}
@media (hover:hover) and (pointer:fine){.apply-now:hover{background:var(--navy-hover)}}
.post-cta{display:grid;justify-items:center;padding:clamp(24px,3vw,34px) 0}

.post-sec{border-top:1px solid var(--line);padding-top:clamp(24px,3vw,32px);
  margin-top:clamp(24px,3vw,32px)}
.sec-label{margin:0 0 16px;text-align:center;font-size:.72rem;font-weight:800;
  letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.post-sec > p{margin:0;font-size:.97rem;line-height:1.68;color:var(--ink);max-width:68ch}
.post-lede{margin:0 0 6px !important;color:var(--ink)}
.post-h{margin:22px 0 8px;font-size:.95rem;font-weight:800;letter-spacing:-.01em}
.post-list{list-style:none;margin:0;padding:0;display:grid;gap:8px;max-width:70ch}
.post-list li{display:flex;gap:11px;align-items:flex-start;font-size:.96rem;
  line-height:1.6;color:var(--ink)}
.post-list li::before{content:"";flex:none;width:5px;height:5px;border-radius:50%;
  background:var(--navy);margin-top:.62em}

/* the facts box */
.jobinfo{margin:0;display:grid;gap:12px}
.jobinfo > div{display:grid;gap:3px}
@media(min-width:620px){.jobinfo > div{grid-template-columns:190px minmax(0,1fr);gap:16px;align-items:baseline}}
.jobinfo dt{font-size:.82rem;font-weight:700;color:var(--muted)}
.jobinfo dd{margin:0;font-size:.95rem;color:var(--ink)}

/* other roles, the way a posting lists its siblings */
.other-roles{display:grid;gap:10px}
.other-role{display:grid;gap:4px;text-align:left;cursor:pointer;width:100%;
  background:var(--white);border:1px solid var(--line);border-radius:14px;
  padding:16px 18px;font-family:inherit;
  transition:border-color var(--dur) var(--ease-out)}
.other-name{font-size:1rem;font-weight:800;letter-spacing:-.01em;color:var(--ink)}
.other-meta{font-size:.84rem;color:var(--muted)}
.other-tag{font-size:.88rem;line-height:1.5;color:var(--muted)}
.other-role:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
@media (hover:hover) and (pointer:fine){.other-role:hover{border-color:var(--navy)}}

/* ── one question at a time ──────────────────────────────────────────
   Every question is its own step. .step-off is the wizard's own switch so
   it never fights the `hidden` attribute, which belongs to the conditional
   graduation-year fields. With JS off nothing is switched off at all. */
.fields{grid-template-columns:minmax(0,1fr) !important}
.field.step-off{display:none}
.apply-sec .fields{margin-top:4px;min-height:150px}
.wiz-top{display:grid;gap:8px;margin-bottom:18px}
.wiz-count{margin:0;font-size:.78rem;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted)}
.wiz-bar{height:4px;border-radius:99px;background:var(--line);overflow:hidden}
.wiz-bar i{display:block;height:100%;width:0;border-radius:99px;background:var(--navy);
  transition:width var(--dur) var(--ease-out)}
@media (prefers-reduced-motion:reduce){.wiz-bar i{transition:none}}
.wiz-nav{display:flex;align-items:center;gap:12px;margin-top:22px}
.wiz-nav .wiz-next,.wiz-nav .wiz-submit{margin-left:auto}
.btn-ghost{font-family:inherit;font-size:.95rem;font-weight:700;cursor:pointer;
  background:none;border:1px solid var(--line);border-radius:12px;padding:13px 22px;
  color:var(--ink);transition:border-color var(--dur) var(--ease-out)}
.btn-ghost[hidden],.wiz-next[hidden],.wiz-submit[hidden]{display:none}
.btn-ghost:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
@media (hover:hover) and (pointer:fine){.btn-ghost:hover{border-color:var(--navy)}}
.post-sec > p + p{margin-top:12px}
.post-sec > p a{color:var(--navy);font-weight:700;text-underline-offset:3px}
