/* ============================================================
   AMV Technical Survey — FRINGE WORLD theme ("A2 Festival")
   Loads AFTER vendored bootstrap.min.css and overrides it.
   Brand: Fringe Pink #F81E7C (sampled from FW logo kit 2026-07-22),
   Geometria (display) + Nunito Sans (body), both licence-cleared.
   Pink never carries small text: #C01161 is the accessible accent
   (6.0:1 on white); ink-on-pink buttons are 4.65:1 (AA).
   ============================================================ */

@font-face{font-family:Geometria;src:url("../fonts/geometria-medium.fee7c94d10bc.woff2") format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:Geometria;src:url("../fonts/geometria-bold.8791b232c72b.woff2") format('woff2');font-weight:700;font-display:swap}
@font-face{font-family:Geometria;src:url("../fonts/geometria-extrabold.fada6d172ab0.woff2") format('woff2');font-weight:800;font-display:swap}
@font-face{font-family:"Nunito Sans";src:url("../fonts/nunitosans-regular.9838dee4e7df.woff2") format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:"Nunito Sans";src:url("../fonts/nunitosans-semibold.2b7209c35fa4.woff2") format('woff2');font-weight:600;font-display:swap}
@font-face{font-family:"Nunito Sans";src:url("../fonts/nunitosans-bold.e79c07b7593f.woff2") format('woff2');font-weight:700;font-display:swap}

:root{
  --fw-yellow:#DEFF00;   /* acid yellow, sampled from the FW26 guide cover strip */
  --fw-pink:#F81E7C;
  --fw-pink-ink:#C01161;
  --fw-pink-soft:#FDE7F1;
  --fw-ink:#17171B;
  --fw-ink-2:#33333B;
  --fw-muted:#5A5A64;
  --fw-wash:#F4F4F6;
  --fw-line:#E3E3E9;
  --fw-ok:#1F7A45;
  --fw-ok-soft:#E3F2E9;
  --fw-warn:#8A6100;
  --fw-warn-soft:#FBF0D3;
  --fw-radius:12px;
  --fw-display:Geometria,"Nunito Sans",system-ui,sans-serif;
}

body{
  font-family:"Nunito Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  color:var(--fw-ink);
  background:var(--fw-wash);
}
a{color:var(--fw-pink-ink)}
a:hover{color:#A30E52}
h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:var(--fw-display);font-weight:700}

/* Accessible focus everywhere (keyboard nav) */
:focus-visible{outline:3px solid var(--fw-pink);outline-offset:2px;border-radius:4px}
.form-control:focus,.form-select:focus,.form-check-input:focus{
  border-color:var(--fw-pink);
  box-shadow:0 0 0 3px rgba(248,30,124,.25);
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ── Header ─────────────────────────────────────────────── */
.fw-header{background:var(--fw-ink);color:#fff;padding:14px 0;margin-bottom:28px}
.fw-header .container{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.fw-header img{width:104px;height:auto;display:block}
.fw-head-title{font-family:var(--fw-display);font-weight:700;font-size:1.08rem;letter-spacing:.02em;color:#fff}
.fw-head-sub{font-size:.8rem;color:#C9C9D2}
.fw-season{margin-left:auto;background:var(--fw-pink);color:var(--fw-ink);font-family:var(--fw-display);
  font-weight:800;font-size:.76rem;letter-spacing:.09em;padding:5px 14px;border-radius:2px;
  transform:rotate(-2deg);box-shadow:1px 2px 0 rgba(0,0,0,.35);white-space:nowrap}
@media (max-width:576px){.fw-season{margin-left:0}}

/* ── Ticket identity block (signature) ──────────────────── */
.fw-ticket{position:relative;display:flex;background:#fff;border-radius:var(--fw-radius);
  box-shadow:0 2px 6px rgba(23,23,27,.10);overflow:hidden;margin-bottom:10px}
.fw-ticket-stub{background:var(--fw-pink);width:48px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.fw-ticket-stub span{writing-mode:vertical-rl;transform:rotate(180deg);font-family:var(--fw-display);
  font-weight:800;font-size:.74rem;letter-spacing:.24em;color:var(--fw-ink)}
.fw-ticket-stub.fw-stub-ok{background:var(--fw-ok)}
.fw-ticket-stub.fw-stub-ok span{color:#fff}
.fw-ticket-seam{position:relative;width:0;flex-shrink:0}
.fw-ticket-seam::before{content:"";position:absolute;top:8px;bottom:8px;left:-1px;border-left:2px dashed rgba(23,23,27,.22)}
.fw-ticket-seam::after{content:"";position:absolute;left:-7px;top:-7px;width:14px;height:14px;border-radius:50%;background:var(--fw-wash)}
.fw-ticket-seam .fw-notch-b{position:absolute;left:-7px;bottom:-7px;width:14px;height:14px;border-radius:50%;background:var(--fw-wash)}
.fw-ticket-body{padding:24px 28px;flex:1;min-width:0}
.fw-ticket-eyebrow{font-family:var(--fw-display);font-weight:700;font-size:.72rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--fw-pink-ink);margin-bottom:7px}
.fw-ticket-event{font-family:var(--fw-display);font-weight:800;font-size:clamp(1.6rem,4.5vw,2.3rem);
  line-height:1.1;margin-bottom:12px;letter-spacing:-.01em}
.fw-ticket-meta{display:flex;flex-wrap:wrap;gap:8px 30px;font-size:.97rem;margin-bottom:0}
.fw-ticket-meta dt{font-size:.67rem;letter-spacing:.13em;text-transform:uppercase;color:var(--fw-muted);font-weight:700}
.fw-ticket-meta dd{font-weight:700;margin-bottom:0}
.fw-ticket-aside{padding:24px 26px;flex-shrink:0;display:flex;flex-direction:column;
  justify-content:center;gap:3px;text-align:right;position:relative}
.fw-ticket-aside::before{content:"";position:absolute;left:0;top:10px;bottom:10px;border-left:2px dashed var(--fw-line)}
.fw-due-label{font-size:.67rem;letter-spacing:.13em;text-transform:uppercase;color:var(--fw-muted);font-weight:700}
.fw-due{font-family:var(--fw-display);font-weight:800;font-size:1.14rem}
.fw-due small{display:block;font-family:"Nunito Sans";font-weight:600;font-size:.78rem;color:var(--fw-muted)}
/* Deadline highlight — brand acid yellow, ink text (~16:1) */
.fw-due mark{background:var(--fw-yellow);color:var(--fw-ink);padding:2px 10px 3px;border-radius:3px;
  display:inline-block;font-size:1.3rem;transform:rotate(-1.5deg);box-shadow:1px 2px 0 rgba(0,0,0,.12);margin:2px 0 4px}
.fw-due-rel{font-size:.78rem;font-weight:700;color:var(--fw-pink-ink)}
.fw-not-you{font-size:.87rem;margin:0 0 28px 2px}
@media (max-width:640px){
  .fw-ticket{flex-direction:column}
  .fw-ticket-stub{width:auto;height:36px}
  .fw-ticket-stub span{writing-mode:horizontal-tb;transform:none;letter-spacing:.3em}
  .fw-ticket-seam{display:none}
  .fw-ticket-aside{text-align:left;padding-top:0}
  .fw-ticket-aside::before{left:26px;right:26px;top:0;bottom:auto;border-left:0;border-top:2px dashed var(--fw-line)}
}

/* ── Cards ──────────────────────────────────────────────── */
.card{border-radius:var(--fw-radius);border:0;box-shadow:0 1px 3px rgba(23,23,27,.08)}
.card-header{background:#fff;border-bottom:1px solid var(--fw-line);
  border-radius:var(--fw-radius) var(--fw-radius) 0 0!important;padding:16px 24px}
.landing-intro{background:#fff;border-radius:var(--fw-radius);box-shadow:0 1px 3px rgba(23,23,27,.08);
  padding:22px 28px;margin-bottom:14px;color:var(--fw-ink-2)}
.landing-intro p:last-child{margin-bottom:0}

/* Section label above module list */
.fw-section{font-family:var(--fw-display);font-weight:700;font-size:.8rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--fw-muted);margin:0 0 10px 2px}

/* Segmented progress strip — one segment per module */
.fw-meter{display:flex;gap:4px;margin:0 2px 14px;height:8px}
.fw-meter span{flex:1;border-radius:5px;background:#E5E5EA}
.fw-meter span.done{background:var(--fw-ok)}
.fw-meter span.part{background:var(--fw-pink)}

/* Module list rows */
.fw-mod{display:flex;align-items:center;gap:16px;padding:15px 24px;border-top:1px solid var(--fw-line);
  text-decoration:none;color:var(--fw-ink)}
.fw-mod:first-child{border-top:0}
.fw-mod:hover{background:#FBFBFD;color:var(--fw-ink)}
.fw-mod-num{font-family:var(--fw-display);font-weight:700;font-size:.78rem;color:var(--fw-muted);
  width:26px;flex-shrink:0;text-align:right}
.fw-mod-main{flex:1;min-width:0}
.fw-mod-title{font-family:var(--fw-display);font-weight:700;font-size:1.03rem}
.fw-mod-desc{font-size:.85rem;color:var(--fw-muted)}
.fw-pill{font-size:.76rem;font-weight:700;padding:3px 12px;border-radius:20px;white-space:nowrap;flex-shrink:0}
.fw-pill-done{background:var(--fw-ok-soft);color:var(--fw-ok)}
.fw-pill-part{background:var(--fw-pink-soft);color:var(--fw-pink-ink)}
.fw-pill-todo{background:var(--fw-wash);color:var(--fw-muted);border:1px solid var(--fw-line)}

/* Legacy phase badges (multi-phase branch; class names pinned by tests) */
.phase-badge{display:inline-block;font-size:.75rem;font-weight:700;padding:2px 10px;border-radius:20px}
.phase-open{background:var(--fw-ok-soft);color:var(--fw-ok)}
.phase-locked{background:var(--fw-pink-soft);color:var(--fw-pink-ink)}
.phase-future{background:var(--fw-wash);color:var(--fw-muted)}

/* Continue strip ("pick up where you left off") */
.fw-continue{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;
  background:#fff;border-radius:var(--fw-radius);box-shadow:0 1px 3px rgba(23,23,27,.08);
  padding:18px 24px;margin-bottom:24px;border-left:6px solid var(--fw-pink)}
.fw-continue + .fw-continue{display:none}  /* dormant multi-phase safety: one strip max */
.fw-continue .fw-t{font-family:var(--fw-display);font-weight:700;font-size:1.02rem}
.fw-continue .fw-s{font-size:.85rem;color:var(--fw-muted)}
/* Template renders every candidate link; only the first (= first incomplete
   module, or the review link when none are incomplete) is shown. */
.fw-continue-cta a:not(:first-of-type){display:none}

/* Help footer (all presenter pages) */
.fw-footer{border-top:1px solid var(--fw-line);margin-top:44px;padding:24px 0 44px;
  text-align:center;font-size:.86rem;color:var(--fw-muted)}
.fw-foot-note{font-size:.78rem;margin-top:6px;color:#8A8A93}

/* Submit banner */
.fw-submit-banner{border-left:6px solid var(--fw-pink)}
.fw-submit-banner .fw-t{font-family:var(--fw-display);font-weight:700;font-size:1.06rem}
.fw-submit-banner .fw-s{font-size:.88rem;color:var(--fw-muted)}
.fw-submit-banner.fw-ready{border-left-color:var(--fw-ok)}

/* ── Buttons — Bootstrap classes, brand skins ───────────── */
.btn{font-family:var(--fw-display);font-weight:700;border-radius:9px}
.btn-primary,.btn-success{
  --bs-btn-bg:var(--fw-pink);--bs-btn-border-color:var(--fw-pink);--bs-btn-color:var(--fw-ink);
  --bs-btn-hover-bg:#E01870;--bs-btn-hover-border-color:#E01870;--bs-btn-hover-color:var(--fw-ink);
  --bs-btn-active-bg:#C9145F;--bs-btn-active-border-color:#C9145F;--bs-btn-active-color:var(--fw-ink);
  --bs-btn-disabled-bg:var(--fw-pink);--bs-btn-disabled-border-color:var(--fw-pink);--bs-btn-disabled-color:var(--fw-ink);
}
.btn-outline-primary,.btn-outline-secondary,.btn-secondary{
  --bs-btn-bg:#fff;--bs-btn-border-color:var(--fw-ink);--bs-btn-color:var(--fw-ink);
  --bs-btn-hover-bg:var(--fw-wash);--bs-btn-hover-border-color:var(--fw-ink);--bs-btn-hover-color:var(--fw-ink);
  --bs-btn-active-bg:var(--fw-wash);--bs-btn-active-border-color:var(--fw-ink);--bs-btn-active-color:var(--fw-ink);
  --bs-btn-disabled-bg:#fff;--bs-btn-disabled-border-color:#C9C9D2;--bs-btn-disabled-color:var(--fw-muted);
  border-width:2px;
}
.btn-warning{
  --bs-btn-bg:#fff;--bs-btn-border-color:var(--fw-ink);--bs-btn-color:var(--fw-ink);
  --bs-btn-hover-bg:var(--fw-wash);--bs-btn-hover-border-color:var(--fw-ink);--bs-btn-hover-color:var(--fw-ink);
  border-width:2px;
}
.btn-outline-danger{--bs-btn-color:#B02A37;--bs-btn-border-color:#C9C9D2;--bs-btn-hover-bg:#F8E7E9;
  --bs-btn-hover-color:#B02A37;--bs-btn-hover-border-color:#B02A37}

/* ── Module page ────────────────────────────────────────── */
.sidebar{position:sticky;top:1rem}
.fw-side-label{font-family:var(--fw-display);font-weight:700;font-size:.72rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--fw-muted);margin-bottom:8px;padding:0 4px}
.module-link{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 13px;
  border-radius:8px;border-left:3px solid transparent;text-decoration:none;color:var(--fw-ink);
  font-size:.9rem;margin-bottom:2px;transition:background .1s}
.module-link:hover{background:#EBEBF0;color:var(--fw-ink)}
.module-link.active{background:var(--fw-ink);color:#fff;font-weight:700;border-left-color:var(--fw-pink)}
.module-link .badge{background:var(--fw-ok-soft)!important;color:var(--fw-ok)!important;font-weight:700}
.module-link .badge.bg-warning{background:var(--fw-pink-soft)!important;color:var(--fw-pink-ink)!important}

.fw-mod-head{padding:22px 28px;border-bottom:1px solid var(--fw-line)}
.fw-mod-head h1{font-weight:800;font-size:1.55rem;margin-bottom:2px}
.fw-mod-head p{font-size:.9rem;color:var(--fw-muted);margin-bottom:0}

.question-block{margin-bottom:1.85rem}
.question-block label.question-label{font-weight:700;margin-bottom:.45rem;display:block;line-height:1.4}
.question-block .text-danger{color:var(--fw-pink-ink)!important}
.instructions{font-size:.85rem;color:var(--fw-muted);margin-bottom:.55rem}
.module-intro{font-size:.92rem;color:var(--fw-ink-2)}
.module-intro p:last-child{margin-bottom:0}
.form-check-input{width:1.2em;height:1.2em}
.form-check-input:checked{background-color:var(--fw-pink-ink);border-color:var(--fw-pink-ink)}
.fw-ack{border:1.5px solid var(--fw-line);border-radius:9px;background:#FBFBFD}

/* Locked banner (submitted / deadline passed) */
.locked-banner{background:var(--fw-warn-soft);border:1px solid #E8D089;border-radius:var(--fw-radius);
  padding:16px 22px;margin-bottom:1.5rem}
.locked-banner strong{color:var(--fw-warn)}

/* Question reference tags (staging review aid — SHOW_QUESTION_REFS) */
.q-ref{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;
  font-weight:400;color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0;
  border-radius:4px;padding:1px 6px;margin-left:.5rem;vertical-align:middle;
  user-select:all;white-space:nowrap}

/* Thank-you (post-submit) ticket variant */
.fw-thanks-title{font-family:var(--fw-display);font-weight:800;font-size:1.4rem;margin-bottom:8px}

/* Modal polish (change-request) */
.modal-content{border:0;border-radius:var(--fw-radius)}
.modal-title{font-family:var(--fw-display);font-weight:700}

/* Tables on the submit summary */
.table{--bs-table-color:var(--fw-ink)}

/* Demo-mode bar (staging only) keeps its inline styles in base.html */
