/* ============================================================
   opnF.sh Career Path Finder
   Everything is scoped to .opf so the theme's global a / h2 / button rules
   can't reach in. Tokens fall back to the theme's own (--accent, --bg,
   --font-*) so it matches the site, with literals for anywhere they're missing.
   ============================================================ */

.opf {
  --opf-bg: var(--bg, #0a0a0a);
  --opf-card: var(--bg-card, #131313);
  --opf-card-2: var(--bg-card-hover, #1a1a1a);
  --opf-line: #262626;
  --opf-line-2: #333;
  --opf-text: #e8e8e8;
  --opf-head: #f2f1ec;
  --opf-mute: #8a8a8a;
  --opf-dim: #5c5c5c;
  --opf-orange: var(--accent, #ff6b1a);
  --opf-orange-hover: var(--accent-hover, #ff8a47);
  --opf-green: #5ac46a;
  --opf-red: #ef4444;
  --opf-blue: #4f7cff;
  --opf-purple: #a855f7;
  --opf-f-head: var(--font-heading, 'Space Grotesk', system-ui, sans-serif);
  --opf-f-body: var(--font-body, 'DM Sans', system-ui, sans-serif);
  --opf-f-mono: var(--font-mono, 'JetBrains Mono', ui-monospace, Menlo, monospace);
  color: var(--opf-text);
  font-family: var(--opf-f-body);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}
.opf *, .opf *::before, .opf *::after { box-sizing: border-box; }
.opf [hidden] { display: none !important; }
.opf h2, .opf p { margin: 0; }
.opf a { text-decoration: none; }
.opf button { font: inherit; }

/* ── Mascot (same character and motion as the CertPrep+ drills) ── */
.opf .opf-mascot { display: block; }
.opf .opf-m-body { animation: opf-bob 3.2s ease-in-out infinite; }
.opf .opf-m-eyes { transform-origin: 48px 44px; animation: opf-eyes 5s infinite; }
.opf .opf-m-cursor { animation: opf-cur 1.1s steps(1) infinite; }
@keyframes opf-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes opf-eyes { 0%, 46%, 50%, 100% { transform: scaleY(1); } 48% { transform: scaleY(0.1); } }
@keyframes opf-cur { 50% { opacity: 0; } }
.opf .opf-m-wave { transform-origin: 90px 50px; animation: opf-wave 1.6s ease-in-out infinite; }
@keyframes opf-wave { 0%, 60%, 100% { transform: rotate(0); } 15%, 45% { transform: rotate(14deg); } 30% { transform: rotate(-10deg); } }
@media (prefers-reduced-motion: reduce) { .opf .opf-m-wave { animation: none; } }

/* ── Buttons ─────────────────────────────────────────────────── */
.opf .opf-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: 50px; padding: 0 22px;
  border-radius: 10px; border: 1px solid transparent;
  font-family: var(--opf-f-head); font-size: 16px; font-weight: 600; letter-spacing: 0.01em;
  cursor: pointer; text-align: center;
  transition: transform 0.12s, background 0.15s, border-color 0.15s, color 0.15s;
}
.opf .opf-btn:active { transform: translateY(1px); }
.opf .opf-btn-main { background: var(--opf-orange); color: #111; }
.opf .opf-btn-main:hover, .opf .opf-btn-main:focus-visible { background: var(--opf-orange-hover); color: #111; outline: none; }
.opf .opf-btn-ghost { background: transparent; color: var(--opf-head); border-color: var(--opf-line-2); }
.opf .opf-btn-ghost:hover, .opf .opf-btn-ghost:focus-visible { border-color: var(--opf-mute); color: var(--opf-head); outline: none; }
.opf .opf-btn-ghost.is-on { border-color: var(--opf-orange); color: var(--opf-orange); }
.opf .opf-btn-block { width: 100%; }
.opf .opf-link { background: none; border: none; padding: 0; color: var(--opf-mute); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; font-size: inherit; }
.opf .opf-link:hover, .opf .opf-link:focus-visible { color: var(--opf-head); outline: none; }

/* ── The app (quiz) ──────────────────────────────────────────── */
.opf-app { max-width: 640px; margin: 0 auto; }
.opf-page { padding-block: 12px 64px; padding-left: max(16px, env(safe-area-inset-left, 0px)); padding-right: max(16px, env(safe-area-inset-right, 0px)); }
.opf-page .opf-intro .opf-eyebrow,
.opf .opf-panel .opf-intro .opf-eyebrow { display: none; }   /* the page title / panel bar already say it */

.opf .opf-prog { display: flex; align-items: center; gap: 12px; margin-bottom: 26px; min-height: 32px; }
.opf .opf-back { width: 32px; height: 32px; flex: none; display: grid; place-items: center; background: none; border: 1px solid var(--opf-line); border-radius: 8px; color: var(--opf-mute); cursor: pointer; font-size: 16px; padding: 0; }
.opf .opf-back:hover, .opf .opf-back:focus-visible { color: var(--opf-head); border-color: var(--opf-line-2); outline: none; }
.opf .opf-prog-bar { flex: 1; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 6px; }
.opf .opf-prog-bar i { height: 4px; border-radius: 2px; background: var(--opf-line); transition: background 0.25s; }
.opf .opf-prog-bar i.on { background: var(--opf-orange); }
.opf .opf-prog-n { font-family: var(--opf-f-mono); font-size: 11px; color: var(--opf-mute); letter-spacing: 0.06em; flex: none; min-width: 34px; text-align: right; }

.opf .opf-screen { display: none; animation: opf-rise 0.28s ease both; }
.opf .opf-screen.is-on { display: block; }
@keyframes opf-rise { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

.opf .opf-eyebrow { font-family: var(--opf-f-mono); font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--opf-orange); margin: 0 0 10px; }
.opf .opf-h1, .opf .opf-h2 { font-family: var(--opf-f-head); color: var(--opf-head); letter-spacing: -0.02em; text-wrap: balance; }
.opf .opf-h1 { font-size: clamp(28px, 6vw, 40px); line-height: 1.1; font-weight: 700; }
.opf .opf-h2 { font-size: clamp(23px, 5vw, 29px); line-height: 1.2; font-weight: 600; }
.opf .opf-sub { color: #a3a3a3; margin-top: 12px; max-width: 54ch; }

.opf .opf-intro { display: grid; grid-template-columns: auto 1fr; gap: 22px; align-items: center; }
.opf .opf-intro-bot { width: 100px; height: auto; }
.opf .opf-facts { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 22px 0 26px; padding: 0; list-style: none; font-family: var(--opf-f-mono); font-size: 12px; color: var(--opf-mute); letter-spacing: 0.04em; }
.opf .opf-facts li { margin: 0; }
.opf .opf-facts li::before { content: '\2713  '; color: var(--opf-green); }
.opf .opf-fine { font-size: 12px; color: var(--opf-dim); margin-top: 22px; }

/* Choices */
.opf .opf-choices { display: grid; gap: 10px; margin-top: 24px; }
.opf .opf-choices.two { grid-template-columns: 1fr 1fr; }
.opf .opf-choice {
  display: flex; align-items: center; gap: 14px; width: 100%; text-align: left;
  padding: 16px 18px; margin: 0;
  background: var(--opf-card); color: var(--opf-text);
  border: 1px solid var(--opf-line); border-radius: 12px;
  font-size: 16px; line-height: 1.35; cursor: pointer;
  transition: border-color 0.15s, background 0.15s, transform 0.12s;
}
@media (hover: hover) { .opf .opf-choice:hover { border-color: var(--opf-orange); background: var(--opf-card-2); } }
.opf .opf-choice:focus-visible { border-color: var(--opf-orange); background: var(--opf-card-2); outline: none; }
.opf .opf-choice:active { transform: scale(0.99); }
.opf .opf-ic { width: 38px; height: 38px; flex: none; border-radius: 9px; display: grid; place-items: center; background: var(--opf-card-2); border: 1px solid var(--opf-line); font-family: var(--opf-f-mono); font-size: 15px; color: var(--opf-orange); }
.opf .opf-tx { display: flex; flex-direction: column; min-width: 0; }
.opf .opf-tx b { font-weight: 600; color: var(--opf-head); }
.opf .opf-tx small { font-size: 13px; color: var(--opf-mute); margin-top: 2px; }
.opf .opf-choices.two .opf-choice { flex-direction: column; align-items: flex-start; padding: 20px 18px; }
.opf .opf-choices.two .opf-tx b { font-family: var(--opf-f-head); font-size: 22px; }

/* Location step */
.opf .opf-guess { margin-top: 24px; padding: 18px; background: var(--opf-card); border: 1px solid var(--opf-line); border-top: 2px solid var(--opf-orange); border-radius: 12px; display: grid; gap: 16px; }
.opf .opf-guess-top { display: flex; align-items: center; gap: 14px; }
.opf .opf-guess-top small { display: block; font-size: 13px; color: var(--opf-mute); }
.opf .opf-guess-top b { display: block; font-family: var(--opf-f-head); font-size: 21px; font-weight: 600; color: var(--opf-head); line-height: 1.25; }
.opf .opf-guess-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.opf .opf-metro-pick { margin-top: 18px; display: grid; gap: 10px; }
.opf .opf-metro-label { display: block; font-family: var(--opf-f-mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--opf-mute); }
.opf .opf-metro-search { width: 100%; min-height: 48px; padding: 0 14px; margin: 0; background: var(--opf-bg); color: var(--opf-head); border: 1px solid var(--opf-line-2); border-radius: 10px; font-family: var(--opf-f-body); font-size: 16px; box-shadow: none; }
.opf .opf-metro-search:focus { outline: none; border-color: var(--opf-orange); }
.opf .opf-metro-opts { max-height: 264px; overflow-y: auto; border: 1px solid var(--opf-line); border-radius: 10px; background: var(--opf-card); }
.opf .opf-metro-opt { display: block; width: 100%; text-align: left; padding: 11px 14px; margin: 0; background: none; border: none; border-bottom: 1px solid var(--opf-line); border-radius: 0; color: var(--opf-text); font-size: 15px; cursor: pointer; }
.opf .opf-metro-opt:last-child { border-bottom: none; }
.opf .opf-metro-opt:hover, .opf .opf-metro-opt:focus-visible { background: var(--opf-card-2); color: var(--opf-head); outline: none; }
.opf .opf-metro-empty { padding: 12px 14px; color: var(--opf-mute); font-size: 14px; }
.opf .opf-metro-alt { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.opf .opf-metro-alt .opf-btn { min-height: 46px; font-size: 15px; padding: 0 12px; }
.opf .opf-metro-row { display: flex; justify-content: center; margin-top: 16px; font-size: 14px; }

/* Building */
.opf .opf-building { text-align: center; padding: 56px 0; }
.opf .opf-building .opf-mascot { width: 92px; height: auto; margin: 0 auto; }
.opf .opf-term { font-family: var(--opf-f-mono); font-size: 14px; color: var(--opf-mute); margin-top: 18px; min-height: 1.6em; }
.opf .opf-p { color: var(--opf-green); }
.opf .opf-cursor { display: inline-block; width: 8px; height: 15px; background: var(--opf-green); vertical-align: -2px; margin-left: 2px; animation: opf-blink 1s steps(1) infinite; }
@keyframes opf-blink { 50% { opacity: 0; } }

/* Result */
.opf .opf-res-head { display: grid; gap: 10px; margin-bottom: 20px; }
.opf .opf-res-bot { width: 72px; margin-bottom: 4px; }
.opf .opf-res-bot svg { display: block; width: 100%; height: auto; }
.opf .opf-intro-bot.opnf-m, .opf .opf-res-bot svg { cursor: pointer; -webkit-tap-highlight-color: transparent; }
.opf .opf-pay { font-size: 16px; color: #bdbdbd; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 6px; }
.opf .opf-pay b { font-family: var(--opf-f-head); font-size: 22px; color: var(--opf-green); font-variant-numeric: tabular-nums; }
.opf .opf-vs { font-family: var(--opf-f-mono); font-size: 11px; color: var(--opf-green); border: 1px solid rgba(90, 196, 106, 0.4); border-radius: 999px; padding: 2px 8px; }
.opf .opf-why { color: #a3a3a3; max-width: 56ch; }
.opf .opf-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.opf .opf-card { display: block; background: var(--opf-card); border: 1px solid var(--opf-line); border-radius: 12px; padding: 16px; min-width: 0; color: var(--opf-text); transition: border-color 0.15s; }
.opf a.opf-card:hover, .opf a.opf-card:focus-visible { border-color: var(--opf-mute); outline: none; color: var(--opf-text); }
.opf .opf-card.is-cert { border-color: rgba(255, 107, 26, 0.55); }
.opf .opf-card-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.opf .opf-cat { font-family: var(--opf-f-mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; }
.opf .opf-cat.g { color: var(--opf-green); } .opf .opf-cat.n { color: var(--opf-orange); } .opf .opf-cat.s { color: var(--opf-red); } .opf .opf-cat.c { color: var(--opf-blue); } .opf .opf-cat.a { color: var(--opf-purple); } .opf .opf-cat.p { color: var(--opf-head); }
.opf .opf-badge { font-family: var(--opf-f-mono); font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; padding: 2px 8px; border-radius: 999px; border: 1px solid; }
.opf .opf-badge.free { color: var(--opf-green); border-color: rgba(90, 196, 106, 0.5); }
.opf .opf-badge.demo { color: var(--opf-orange); border-color: rgba(255, 107, 26, 0.5); }
.opf .opf-badge.have { color: var(--opf-head); border-color: var(--opf-line-2); }
.opf .opf-card-title { font-family: var(--opf-f-head); font-size: 19px; font-weight: 600; color: var(--opf-head); margin: 6px 0 2px; line-height: 1.25; }
.opf .opf-card-meta { font-family: var(--opf-f-mono); font-size: 12px; color: var(--opf-mute); }
.opf .opf-card-desc { font-size: 14px; color: #a3a3a3; margin-top: 8px; }
.opf .opf-time { margin: 10px 0 22px; padding: 14px 16px; border: 1px dashed var(--opf-line-2); border-radius: 12px; font-size: 14px; color: #bdbdbd; display: flex; gap: 12px; align-items: baseline; flex-wrap: wrap; }
.opf .opf-time b { font-family: var(--opf-f-head); font-size: 20px; color: var(--opf-head); font-variant-numeric: tabular-nums; }
.opf .opf-ctas { display: grid; gap: 10px; }

/* ── Result: the plan as three steps ─────────────────────────── */
.opf .opf-steps { list-style: none; margin: 4px 0 18px; padding: 0; display: grid; gap: 12px; }
.opf .opf-step { margin: 0; background: var(--opf-card); border: 1px solid var(--opf-line); border-radius: 12px; padding: 18px; display: grid; gap: 10px; min-width: 0; }
.opf .opf-step.is-cert { border-color: rgba(255, 107, 26, 0.55); }
.opf .opf-step.is-goal { background: transparent; border-style: dashed; border-color: var(--opf-line-2); }
.opf .opf-step-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.opf .opf-step-n { font-family: var(--opf-f-mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--opf-orange); }
.opf .opf-step-where { font-family: var(--opf-f-mono); font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--opf-head); padding: 2px 8px; border: 1px solid var(--opf-line-2); border-radius: 6px; }
.opf .opf-step.is-goal .opf-step-where { color: var(--opf-mute); }
.opf .opf-step-h { font-family: var(--opf-f-head); font-size: 21px; font-weight: 600; color: var(--opf-head); margin: 0; line-height: 1.2; letter-spacing: -0.01em; }
.opf .opf-step-p { font-size: 15px; color: #b5b5b5; }
.opf .opf-step-p b { color: var(--opf-head); font-weight: 600; }
.opf .opf-step-meta { font-family: var(--opf-f-mono); font-size: 12px; color: var(--opf-mute); }
.opf .opf-step .opf-btn { margin-top: 4px; }
.opf .opf-tasks { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.opf .opf-tasks li { position: relative; padding-left: 20px; font-size: 14.5px; color: var(--opf-text); }
.opf .opf-tasks li::before { content: ">"; position: absolute; left: 2px; top: 0; font-family: var(--opf-f-mono); color: var(--opf-orange); }
.opf .opf-ctas-note { font-size: 13px; color: var(--opf-mute); text-align: center; }
.opf .opf-btn.is-strong { border-color: var(--opf-orange); color: var(--opf-head); }
.opf .opf-saved { font-family: var(--opf-f-mono); font-size: 12px; color: var(--opf-green); margin-top: 14px; }
.opf .opf-foot { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 22px; font-size: 14px; }
.opf .opf-foot .opf-link { font-size: 14px; }

/* ── Banner ([opnf_pathfinder_banner]) ───────────────────────── */
.opf-banner {
  display: grid; grid-template-columns: 1fr auto; gap: 20px 32px; align-items: center;
  margin: 0 0 30px; padding: 22px 26px;
  background: var(--opf-card); border: 1px solid var(--opf-line); border-top: 2px solid var(--opf-orange); border-radius: 12px;
}
.opf-banner.is-placed { margin: 26px 0 28px; }
.opf .opf-banner-h { font-family: var(--opf-f-head); font-size: 26px; font-weight: 600; color: var(--opf-head); letter-spacing: -0.02em; line-height: 1.2; }
.opf .opf-banner-s { font-size: 15px; color: #b0b0b0; margin-top: 6px; max-width: 60ch; }
.opf .opf-banner-actions { display: grid; gap: 10px; justify-items: center; }
.opf .opf-banner-actions .opf-btn { min-width: 230px; }
.opf .opf-banner-alt { font-size: 14px; color: var(--opf-mute); text-decoration: underline; text-underline-offset: 3px; }
.opf .opf-banner-alt:hover, .opf .opf-banner-alt:focus-visible { color: var(--opf-head); outline: none; }

/* ── Corner helper ───────────────────────────────────────────── */
.opf .opf-helper {
  position: fixed; z-index: 99990;
  right: calc(20px + env(safe-area-inset-right, 0px));
  bottom: calc(20px + env(safe-area-inset-bottom, 0px));
  display: flex; flex-direction: column; align-items: flex-end; gap: 12px;
  animation: opf-pop 0.45s cubic-bezier(.2, 1.4, .4, 1) both;
}
@keyframes opf-pop { from { opacity: 0; transform: translateY(16px) scale(0.92); } to { opacity: 1; transform: none; } }
.opf .opf-bot { width: 72px; height: 72px; flex: none; padding: 7px 6px 5px; margin: 0; background: var(--opf-card); border: 1px solid var(--opf-line-2); border-radius: 50%; box-shadow: 0 8px 28px rgba(0, 0, 0, 0.55); cursor: pointer; transition: transform 0.15s, border-color 0.15s; }
.opf .opf-bot svg { width: 100%; height: 100%; display: block; }
.opf .opf-bot:hover, .opf .opf-bot:focus-visible { transform: translateY(-2px); border-color: var(--opf-orange); outline: none; }
.opf .opf-bubble { position: relative; width: 268px; padding: 16px 16px 14px; background: var(--opf-card-2); border: 1px solid var(--opf-line-2); border-radius: 14px; box-shadow: 0 10px 34px rgba(0, 0, 0, 0.55); cursor: pointer; }
/* Tail pointing down at the mascot */
.opf .opf-bubble::after {
  content: ''; position: absolute; right: 28px; bottom: -7px;
  width: 12px; height: 12px; transform: rotate(45deg);
  background: var(--opf-card-2);
  border-right: 1px solid var(--opf-line-2); border-bottom: 1px solid var(--opf-line-2);
}
.opf .opf-bubble:focus-visible { outline: 2px solid var(--opf-orange); outline-offset: 2px; }
.opf .opf-bubble-x { position: absolute; top: 6px; right: 6px; width: 28px; height: 28px; padding: 0; background: none; border: none; color: var(--opf-mute); font-size: 20px; line-height: 1; cursor: pointer; border-radius: 6px; }
.opf .opf-bubble-x:hover, .opf .opf-bubble-x:focus-visible { color: var(--opf-head); background: var(--opf-card); outline: none; }
.opf .opf-bubble-t { font-family: var(--opf-f-head); font-size: 17px; font-weight: 600; color: var(--opf-head); margin: 0 26px 4px 0; line-height: 1.25; }
.opf .opf-bubble-s { font-size: 14px; color: #b5b5b5; margin: 0 0 12px; line-height: 1.45; }
.opf .opf-bubble-go { display: flex; align-items: center; justify-content: center; min-height: 42px; background: var(--opf-orange); color: #111; border-radius: 9px; font-family: var(--opf-f-head); font-weight: 600; font-size: 15px; }

/* ── Panel ───────────────────────────────────────────────────── */
.opf .opf-scrim { position: fixed; inset: 0; z-index: 99994; background: rgba(0, 0, 0, 0.55); }
.opf .opf-panel {
  position: fixed; z-index: 99995;
  right: calc(20px + env(safe-area-inset-right, 0px));
  bottom: calc(20px + env(safe-area-inset-bottom, 0px));
  width: 440px; max-width: calc(100vw - 40px);
  height: min(760px, calc(100vh - 40px));
  overflow-y: auto; overscroll-behavior: contain;
  background: var(--opf-bg); border: 1px solid var(--opf-line-2); border-radius: 16px;
  box-shadow: 0 18px 60px rgba(0, 0, 0, 0.7);
  animation: opf-pop 0.3s ease both;
}
.opf .opf-panel-bar { position: sticky; top: 0; z-index: 2; display: flex; align-items: center; justify-content: space-between; padding: 10px 12px 10px 18px; background: var(--opf-bg); border-bottom: 1px solid #1c1c1c; }
.opf .opf-panel-title { font-family: var(--opf-f-mono); font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--opf-orange); }
.opf .opf-panel-x { width: 34px; height: 34px; padding: 0; background: none; border: 1px solid var(--opf-line); border-radius: 8px; color: var(--opf-mute); font-size: 20px; line-height: 1; cursor: pointer; }
.opf .opf-panel-x:hover, .opf .opf-panel-x:focus-visible { color: var(--opf-head); border-color: var(--opf-line-2); outline: none; }
.opf .opf-panel .opf-app { padding: 20px 20px 36px; }
.opf .opf-panel .opf-h1 { font-size: 30px; }
.opf .opf-panel .opf-pair { grid-template-columns: 1fr; }
.opf .opf-panel .opf-intro { grid-template-columns: 1fr; gap: 12px; }
.opf .opf-panel .opf-intro-bot { width: 72px; height: auto; }

.opf .opf-toast { position: fixed; z-index: 99999; left: 50%; bottom: calc(18px + env(safe-area-inset-bottom, 0px)); transform: translateX(-50%); background: var(--opf-card-2); border: 1px solid var(--opf-line-2); border-left: 2px solid var(--opf-orange); color: var(--opf-head); font-size: 14px; padding: 10px 14px; border-radius: 8px; max-width: calc(100% - 32px); }
body.opf-lock { overflow: hidden; }

/* ── Small screens ───────────────────────────────────────────── */
@media (max-width: 760px) {
  .opf-banner { grid-template-columns: 1fr; padding: 18px; }
  .opf .opf-banner-actions { justify-items: stretch; }
  .opf .opf-banner-actions .opf-btn { min-width: 0; width: 100%; }
  .opf .opf-banner-alt { text-align: center; }
  .opf-banner.is-placed { margin: 26px 0 28px; }
.opf .opf-banner-h { font-size: 22px; }
}
@media (max-width: 560px) {
  .opf .opf-intro { grid-template-columns: 1fr; gap: 14px; }
  .opf .opf-intro-bot { width: 80px; height: auto; }
  .opf .opf-pair { grid-template-columns: 1fr; }
  /* Helper: mascot + one line, so it never covers the page */
  .opf .opf-helper { right: calc(12px + env(safe-area-inset-right, 0px)); bottom: calc(12px + env(safe-area-inset-bottom, 0px)); }
  .opf .opf-bot { width: 58px; height: 58px; }
  .opf .opf-bubble { width: auto; max-width: calc(100vw - 32px); padding: 10px 34px 10px 12px; border-radius: 12px; }
  .opf .opf-bubble::after { right: 22px; }
  .opf .opf-helper { gap: 10px; }
  .opf .opf-bubble-s, .opf .opf-bubble-go { display: none; }
  .opf .opf-bubble-t { font-size: 14px; margin: 0; }
  /* Panel: a full-screen sheet */
  .opf .opf-panel { inset: 0; width: 100%; max-width: none; height: 100%; border-radius: 0; border: none; padding-top: env(safe-area-inset-top, 0px); }
  .opf .opf-scrim { display: none !important; }
}
@media (prefers-reduced-motion: reduce) {
  .opf .opf-screen, .opf .opf-cursor, .opf .opf-helper, .opf .opf-panel, .opf .opf-m-body, .opf .opf-m-eyes, .opf .opf-m-cursor { animation: none; }
}

/* "I know what I want" (1.0.20) */
.opf .opf-know { margin-top: 10px; }
.opf .opf-pick-top { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }
.opf .opf-pick-top .opf-eyebrow { margin: 0; }
.opf .opf-pick-label { font-family: var(--opf-f-mono); font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--opf-mute); margin: 22px 0 10px; }
.opf .opf-pick-group { display: flex; flex-direction: column; gap: 6px; margin-bottom: 12px; }
.opf .opf-pick-vendor { font-size: 12px; color: var(--opf-mute); }
.opf .opf-pick-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.opf .opf-pick-chip {
  min-height: 42px; padding: 0 14px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--opf-line-2); background: var(--opf-card); color: var(--opf-text);
  font: 500 14px var(--opf-f-body);
}
.opf .opf-pick-courses { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.opf .opf-pick-course {
  min-height: 72px; padding: 12px; border-radius: 10px; cursor: pointer; text-align: left;
  border: 1px solid var(--opf-line-2); background: var(--opf-card);
  display: flex; flex-direction: column; align-items: flex-start; gap: 4px;
}
.opf .opf-pick-course b { font: 600 16px var(--opf-f-head); color: var(--opf-head); }
.opf .opf-pick-course small { font-size: 12px; color: var(--opf-mute); }
.opf .opf-pick-chip:hover, .opf .opf-pick-course:hover { border-color: var(--opf-mute); }
.opf .opf-pick-chip.is-on, .opf .opf-pick-course.is-on { border-color: var(--opf-orange); background: rgba(255, 107, 26, 0.12); color: var(--opf-head); }
.opf .opf-pick-chip:focus-visible, .opf .opf-pick-course:focus-visible { outline: 2px solid var(--opf-orange); outline-offset: 2px; }
.opf .opf-pick-sum {
  margin: 22px 0 14px; padding: 16px; border-radius: 10px; border: 1px solid var(--opf-line); background: var(--opf-card);
  display: flex; flex-direction: column; gap: 4px;
}
.opf .opf-pick-sum .opf-pick-label { margin: 0; }
.opf .opf-pick-sum b { font: 600 20px var(--opf-f-head); color: var(--opf-head); }
.opf .opf-pick-sum span:last-child { font-size: 13px; color: var(--opf-mute); }
.opf .opf-btn[disabled] { opacity: 0.45; cursor: default; }
.opf .opf-plan-cta { margin: 4px 0 18px; padding: 16px; border: 1px solid var(--opf-orange); border-radius: 12px; background: rgba(255, 107, 26, 0.08); display: flex; flex-direction: column; gap: 12px; }
.opf .opf-plan-cta p { margin: 0; font-size: 14px; color: var(--opf-text); }

/* 1.0.22: skip the cert or the course */
.opf .opf-pick-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 22px 0 10px; }
.opf .opf-pick-head .opf-pick-label { margin: 0; }
.opf .opf-pick-skip { min-height: 44px; padding: 0 4px; background: none; border: 0; cursor: pointer; font: 500 13px var(--opf-f-body); color: var(--opf-orange); }
.opf .opf-pick-skip:hover { text-decoration: underline; }
.opf .opf-pick-skip:focus-visible { outline: 2px solid var(--opf-orange); outline-offset: 2px; border-radius: 6px; }
.opf .opf-pick-skip[hidden] { display: none; }
.opf .is-skipped { opacity: 0.35; }
.opf .is-skipped .opf-pick-chip.is-on, .opf .is-skipped.opf-pick-courses .is-on { border-color: var(--opf-line-2); background: var(--opf-card); }

/* 1.0.24: one way on from the result, and what's free on the path */
.opf .opf-access { margin: 4px 0 14px; padding: 14px; border-radius: 10px; border: 1px solid #4a3d22; background: rgba(232, 176, 74, 0.08); display: flex; flex-direction: column; gap: 8px; }
.opf .opf-access.is-free { border-color: #2a4a30; background: rgba(90, 196, 106, 0.08); }
.opf .opf-access-h { font: 600 15px var(--opf-f-body); color: #e8b04a; }
.opf .opf-access.is-free .opf-access-h { color: #5ac46a; }
.opf .opf-access ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; font-size: 14px; color: var(--opf-text); }
.opf .opf-access li { display: flex; gap: 8px; align-items: baseline; }
.opf .opf-access-i { width: 14px; flex: 0 0 14px; text-align: center; color: #5ac46a; }
.opf .opf-end { margin: 0 0 16px; padding: 16px; border: 1px solid var(--opf-orange); border-radius: 12px; background: rgba(255, 107, 26, 0.08); display: flex; flex-direction: column; gap: 10px; }
.opf .opf-end-h { font: 600 18px var(--opf-f-head); color: var(--opf-head); }
.opf .opf-end p { margin: 0; font-size: 14px; line-height: 1.5; color: var(--opf-text); }
.opf .opf-end .opf-end-fine { font-size: 13px; color: var(--opf-mute); text-align: center; }
.opf .opf-end .opf-end-fine a { color: var(--opf-orange); }
.opf .opf-end.is-bare { padding: 0; border: 0; background: none; }
/* 1.0.27: no page title above the quiz */
body.opf-host .page-content > h1 { display: none; }
.opf .opf-skip-site { display: flex; width: 100%; background: none; border: 0; cursor: pointer; align-items: center; justify-content: center; min-height: 44px; margin-top: 6px; font: 500 14px var(--opf-f-body); color: var(--opf-mute); text-decoration: none; }
.opf .opf-skip-site:hover { color: var(--opf-head); text-decoration: underline; }
/* 1.0.33: X on the welcome screen after Enroll */
.opf .opf-app.has-x { position: relative; padding-top: 44px; }
.opf .opf-x { position: absolute; top: 0; right: -4px; width: 44px; height: 44px; display: grid; place-items: center; border-radius: 8px; color: var(--opf-mute); font-size: 26px; line-height: 1; text-decoration: none; z-index: 2; }
.opf .opf-x:hover { color: var(--opf-head); background: #1d1d1d; }
.opf .opf-x:focus-visible { outline: 2px solid var(--opf-orange); outline-offset: 2px; }

/* Phones: no big empty band above and below the quiz on /career-path/. Desktop keeps its space. */
@media (max-width: 600px) {
  body.opf-host .page-content { padding-top: 32px; padding-bottom: 24px; }
  .opf-page { padding-block: 0 24px; }
}

/* Intro: a quiet link to the About page under "I know what I want" */
.opf .opf-about { margin: 14px 0 0; text-align: center; font-size: 14px; }
.opf .opf-about a { display: inline-flex; align-items: center; min-height: 44px; color: var(--opf-mute); text-decoration: underline; text-underline-offset: 3px; }
.opf .opf-about a:hover, .opf .opf-about a:focus-visible { color: var(--opf-orange); }

/* 1.0.50 phones: less space above the quiz. The welcome X shares the first row instead of getting its own. */
@media (max-width: 600px) {
  body.opf-host .page-content { padding-top: 16px; }
  .opf .opf-app.has-x { padding-top: 0; }
  .opf .opf-app.has-x .opf-prog,
  .opf .opf-app.has-x .opf-pick-top { padding-right: 48px; }
}

/* 1.0.51 phones: the quiz fills the screen, so the footer starts below the fold instead of right under the answers */
@media (max-width: 600px) {
  body.opf-host .page-content { min-height: calc(100vh - 72px); min-height: calc(100svh - 72px); box-sizing: border-box; }
}

/* 1.0.52 phones: Yes / Not yet stacked full width, so they read like the other questions and are easier to tap */
@media (max-width: 600px) {
  .opf .opf-choices.two { grid-template-columns: 1fr; }
  .opf .opf-choices.two .opf-choice { padding: 22px 20px; }
}
