/* =====================================================
   Novaris Energy — Careers
   One job: the application form. Page-scoped layer that
   loads after styles.css and reuses its tokens, buttons
   and motion primitives.
   ===================================================== */

/* =====================================================
   PAGE SHELL
   ===================================================== */
.ap-page{
  position:relative;isolation:isolate;overflow:hidden;
  min-height:100svh;
  display:flex;align-items:center;
  padding:clamp(128px,14vw,176px) 0 var(--section-y);
  background:
    linear-gradient(180deg,var(--mist-2) 0%,var(--paper) 46%,var(--mist-2) 100%);
}

/* a single warm bloom behind the card — keeps the page from reading as a blank sheet */
.ap-glow{
  position:absolute;z-index:-1;pointer-events:none;
  top:-14%;left:50%;transform:translateX(-50%);
  width:min(1100px,116vw);aspect-ratio:1.5/1;
  background:radial-gradient(ellipse at 50% 42%,rgba(255,165,31,.17),rgba(255,165,31,0) 62%);
}
.ap-page::after{
  content:"";position:absolute;inset:auto 0 0;height:1px;z-index:-1;
  background:linear-gradient(90deg,transparent,var(--line),transparent);
}

.ap-wrap{
  width:min(100% - var(--gutter) * 2,640px);
  display:grid;gap:clamp(32px,3.4vw,40px);
}

/* =====================================================
   HEAD
   ===================================================== */
.ap-head{display:grid;gap:var(--stack-md);justify-items:center;text-align:center}
.ap-head .kicker{justify-content:center}
.ap-title{
  font-size:clamp(36px,3vw + 20px,60px);
  font-weight:400;letter-spacing:-.045em;line-height:1.04;
}
.ap-lede{
  max-width:46ch;
  font-size:var(--fs-lead);line-height:1.65;color:var(--muted-2);
}

/* =====================================================
   CARD
   ===================================================== */
.ap-card{
  display:grid;gap:20px;
  padding:clamp(24px,3.4vw,40px);
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:var(--r-lg);
  box-shadow:0 1px 2px rgba(16,16,16,.03),0 30px 60px -38px rgba(16,16,16,.3);
}

/* ---------- field ---------- */
.fld{display:grid;gap:8px}
.fld-lab{
  font-size:var(--fs-sm);letter-spacing:0;font-weight:500;color:var(--ink-2);
}
.fld-in{
  width:100%;
  padding:14px 16px;
  font:inherit;font-size:16px;letter-spacing:-.01em;color:var(--ink);
  background:var(--mist-2);
  border:1px solid var(--line);
  border-radius:var(--r-sm);
  transition:border-color .3s var(--ease),background .3s var(--ease),box-shadow .3s var(--ease);
}
.fld-in::placeholder{color:#a9a9a4}
.fld-in:hover{border-color:#d8d8d2}
.fld-in:focus{
  outline:none;background:var(--paper);
  border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(255,165,31,.18);
}

/* ---------- inline error ---------- */
.fld-err{
  display:none;
  font-size:var(--fs-xs);line-height:1.5;color:#c4442c;
}
.fld.is-bad .fld-err{display:block}
.fld.is-bad .fld-in,
.fld.is-bad .drop{border-color:#dc6a52;background:#fdf7f5}

/* =====================================================
   CV UPLOAD
   ===================================================== */
.drop{
  position:relative;
  display:flex;align-items:center;gap:14px;
  min-height:96px;padding:16px 18px;
  background:var(--mist-2);
  border:1px dashed #d5d5cf;
  border-radius:var(--r-md);
  transition:border-color .3s var(--ease),background .3s var(--ease),box-shadow .3s var(--ease);
}
.drop:hover{border-color:var(--accent);background:#fffdf8}
.drop:focus-within{
  border-color:var(--accent);background:var(--paper);
  box-shadow:0 0 0 3px rgba(255,165,31,.18);
}
.drop.is-over{border-color:var(--accent);background:#fff8ec;border-style:solid}

/* the real input covers the whole zone: clickable and keyboard-reachable, no JS needed */
.drop-in{
  position:absolute;inset:0;width:100%;height:100%;
  opacity:0;cursor:pointer;
}
.drop.has-file .drop-in{cursor:default;pointer-events:none}

.drop-face,
.drop-file{display:flex;align-items:center;gap:14px;width:100%}
.drop-face[hidden],
.drop-file[hidden]{display:none}

.drop-ico{
  flex:none;display:grid;place-items:center;
  width:42px;height:42px;border-radius:50%;
  background:var(--paper);border:1px solid var(--line);color:var(--ink-2);
  transition:border-color .3s var(--ease),color .3s var(--ease);
}
.drop-ico svg{width:18px;height:18px}
.drop:hover .drop-ico{border-color:var(--accent);color:var(--accent)}
.drop-ico.ok{background:rgba(53,160,106,.1);border-color:rgba(53,160,106,.32);color:var(--green)}

.drop-txt{display:grid;gap:3px;min-width:0}
.drop-txt b{font-size:15px;font-weight:500;letter-spacing:-.015em;
            overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.drop-txt b u{text-decoration-color:var(--accent);text-underline-offset:3px}
.d-narrow{display:none}
.drop-txt em{font-style:normal;font-size:var(--fs-xs);color:var(--muted)}

.drop-x{
  position:relative;z-index:2;flex:none;margin-left:auto;
  display:grid;place-items:center;width:32px;height:32px;border-radius:50%;
  background:var(--paper);border:1px solid var(--line);color:var(--muted);
  transition:color .3s,border-color .3s,transform .3s var(--ease);
}
.drop-x svg{width:14px;height:14px}
.drop-x:hover{color:#c4442c;border-color:#e6bdb2;transform:rotate(90deg)}

/* =====================================================
   SUBMIT + STATUS
   ===================================================== */
.ap-submit{
  justify-content:center;width:100%;
  margin-top:4px;min-height:52px;padding:15px 24px;
}
.ap-submit[disabled]{opacity:.6;pointer-events:none}

.ap-note{
  font-size:var(--fs-xs);line-height:1.6;color:var(--muted);text-align:center;
}

.ap-status[hidden]{display:none}
.ap-status{
  display:grid;gap:6px;
  padding:14px 16px;border-radius:var(--r-sm);
  font-size:var(--fs-sm);line-height:1.6;
}
.ap-status b{font-weight:500}
.ap-status a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.ap-status.ok{background:rgba(53,160,106,.09);border:1px solid rgba(53,160,106,.26);color:#20623f}
.ap-status.bad{background:#fdf3f0;border:1px solid #edc9bf;color:#8f3320}

/* =====================================================
   RESPONSIVE
   ===================================================== */
@media (max-width:560px){
  .d-wide{display:none}
  .d-narrow{display:inline}
  .ap-page{padding-top:clamp(104px,26vw,140px)}
  .ap-card{padding:24px 20px;border-radius:var(--r-md)}
  .drop{flex-direction:row;padding:16px}
  .drop-ico{width:38px;height:38px}
}

/* =====================================================
   WHO WE HIRE — photo cards (card styles in styles.css)
   ===================================================== */
.ap-hire-head{display:grid;gap:var(--stack-md);justify-items:center;text-align:center;margin-bottom:var(--head-gap)}
.ap-hire-head .kicker{justify-content:center}
.ap-hire-head h2{font-size:var(--fs-h2);font-weight:400;line-height:1.1;letter-spacing:-.035em}
.ap-hire-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.ap-hire-grid .role-card{flex:none}
@media (max-width:860px){
  .ap-hire-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .ap-hire-grid{grid-template-columns:1fr}
  .ap-hire-grid .role-media{aspect-ratio:16/11}
}
