/* Generated (phase-5 PR3): one class per distinct inline style formerly on careers.html. Content-addressed (tl-<sha1[:8]>). */
.tl-02e3a720.tl-02e3a720{margin-top:3rem;text-align:center}
.tl-09d15f07.tl-09d15f07{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:2rem}
.tl-0dc05c0a.tl-0dc05c0a{padding:1.25rem 2rem;border-bottom:1px solid rgba(26,20,16,0.08)}
.tl-1e51f82b.tl-1e51f82b{width:44px;height:44px;background:#C0392B;border-radius:50%;display:flex;align-items:center;justify-content:center;color:white;font-size:18px;flex-shrink:0}
.tl-1f9a6e12.tl-1f9a6e12{font-size:11px;font-weight:700;letter-spacing:0.2em;text-transform:uppercase;color:#FFD699;margin-bottom:1rem}
.tl-21fb9cae.tl-21fb9cae{padding:1.25rem 2rem;border-bottom:1px solid rgba(26,20,16,0.08);border-right:1px solid rgba(26,20,16,0.08)}
.tl-22c7fc71.tl-22c7fc71{font-size:16px;color:rgba(255,255,255,0.65);line-height:1.75;font-weight:300;padding-bottom:0.5rem}
.tl-27a2aecd.tl-27a2aecd{font-size:11px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:rgba(255,255,255,0.7);margin-bottom:1.25rem}
.tl-2be76159.tl-2be76159{font-family:'DM Serif Display',serif;font-size:20px;font-weight:400;line-height:1.2;margin-bottom:0.75rem}
.tl-2da753c7.tl-2da753c7{font-family:'Space Grotesk',sans-serif;font-size:15px;font-weight:600;color:#1A1410}
.tl-2e861c03.tl-2e861c03{display:flex;align-items:center;gap:1rem;padding:1.5rem;background:white;border:1px solid rgba(26,20,16,0.1);border-radius:8px;text-decoration:none;transition:all 0.2s}
.tl-32ff8302.tl-32ff8302{width:48px;height:48px;background:#1A1410;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tl-3d85c893.tl-3d85c893{font-family:'DM Serif Display',serif;font-size:clamp(36px,4.5vw,56px);color:white;font-weight:400;line-height:1.05}
.tl-3faaa9f4.tl-3faaa9f4{background:linear-gradient(135deg,#C0392B,#E74C3C);color:white;padding:1rem;border-radius:8px;font-size:18px;text-align:center}
.tl-43eaebdf.tl-43eaebdf{display:grid;grid-template-columns:1.2fr 1fr;gap:3rem;align-items:end;margin-bottom:4rem}
.tl-49e92ddc.tl-49e92ddc{font-family:'DM Serif Display',serif;font-size:clamp(34px,4vw,52px);color:#1A1410;font-weight:400;line-height:1.1;margin-bottom:1rem}
.tl-4aff4410.tl-4aff4410{font-family:'DM Serif Display',serif;font-size:32px;font-weight:400;line-height:1.2;margin-bottom:1.25rem}
.tl-4d135610.tl-4d135610{padding:1.5rem 2rem;border-bottom:1px solid rgba(26,20,16,0.08)}
.tl-4dfbf2fd.tl-4dfbf2fd{font-size:15px;color:rgba(255,255,255,0.6);max-width:560px;margin:0 auto 1.75rem;line-height:1.65;font-weight:300;font-style:italic}
.tl-53eafaaa.tl-53eafaaa{padding:1.5rem 2rem;background:#F5F0E8;border-bottom:1px solid rgba(26,20,16,0.08)}
.tl-567771cc.tl-567771cc{background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);border-radius:14px;padding:2rem;transition:all 0.3s}
.tl-64775154.tl-64775154{font-size:10px;font-weight:700;letter-spacing:0.16em;text-transform:uppercase;color:#C0392B;margin-bottom:1rem;margin-top:1rem}
.tl-64cc14a0.tl-64cc14a0{text-align:center;margin-bottom:3.5rem}
.tl-657a7fd7.tl-657a7fd7{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem;margin-bottom:4rem}
.tl-65c9d0a4.tl-65c9d0a4{width:100%;border:none;outline:none;background:transparent;color:#1A1410;font-size:15px;font-family:'DM Sans',sans-serif;cursor:pointer;-webkit-appearance:none}
.tl-6b99de8b.tl-6b99de8b{display:none}
.tl-6c8dd869.tl-6c8dd869{font-size:11px;font-weight:600;letter-spacing:0.22em;text-transform:uppercase;color:rgba(26,20,16,0.72);margin-bottom:1rem}
.tl-7b31f779.tl-7b31f779{position:absolute;inset:0;background-image:radial-gradient(circle at 20% 30%, rgba(255,255,255,0.04) 1px, transparent 2px);background-size:30px 30px;opacity:0.6;pointer-events:none}
.tl-7d65d3ed.tl-7d65d3ed{font-size:11px;font-weight:700;letter-spacing:0.1em;text-transform:uppercase;color:rgba(26,20,16,0.72);margin-bottom:2px}
.tl-833eadd5.tl-833eadd5{font-size:15px;color:rgba(255,255,255,0.75);line-height:1.75;font-weight:300}
.tl-85cbf4ed.tl-85cbf4ed{color:white;font-size:10px;font-weight:700;letter-spacing:0.18em;text-transform:uppercase}
.tl-89fb2b15.tl-89fb2b15{color:rgba(26,20,16,0.68);font-weight:600}
.tl-8c389733.tl-8c389733{display:block;font-size:10px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:rgba(26,20,16,0.72);margin-bottom:6px}
.tl-94b10788.tl-94b10788{background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.12);border-radius:10px;padding:1.25rem;text-align:center}
.tl-94b85e22.tl-94b85e22{background:#1A1410;padding:7rem 3rem;border-top:1px solid rgba(255,255,255,0.05);color:white;position:relative;overflow:hidden}
.tl-94bebd10.tl-94bebd10{font-size:16px;color:rgba(26,20,16,0.85);max-width:580px;margin:0 auto;line-height:1.7;font-weight:300}
.tl-96f9dcbb.tl-96f9dcbb{display:inline-flex;align-items:center;gap:8px;background:#C0392B;color:white;padding:16px 36px;border-radius:6px;text-decoration:none;font-size:14px;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;transition:all 0.2s;box-shadow:0 6px 20px rgba(192,57,43,0.35)}
.tl-97445a8d.tl-97445a8d{flex:1}
.tl-99ddfafa.tl-99ddfafa{width:100%;border:none;outline:none;background:transparent;color:#1A1410;font-size:15px;font-family:'DM Sans',sans-serif}
.tl-9c12676e.tl-9c12676e{background:#FAFAF8;padding:6rem 3rem;border-top:1px solid rgba(26,20,16,0.07)}
.tl-9c2c2c56.tl-9c2c2c56{font-size:10px;font-weight:700;letter-spacing:0.16em;text-transform:uppercase;color:#C0392B;margin-bottom:1rem;margin-top:2rem}
.tl-9f1c9101.tl-9f1c9101{padding:1rem 2rem;background:#F5F0E8;font-size:12px;color:rgba(26,20,16,0.85);text-align:center;line-height:1.6}
.tl-a1401211.tl-a1401211{display:inline-flex;align-items:center;gap:8px;background:rgba(192,57,43,0.2);border:1px solid rgba(192,57,43,0.4);padding:6px 14px;border-radius:100px;margin-bottom:1.25rem}
.tl-af77e666.tl-af77e666{font-size:10px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:rgba(255,255,255,0.6);margin-top:6px}
.tl-b039151a.tl-b039151a{background:linear-gradient(135deg,#0F2D5C 0%,#1B4F8A 100%);border-radius:14px;padding:3rem;display:grid;grid-template-columns:1.3fr 1fr;gap:3rem;align-items:center}
.tl-b771f88b.tl-b771f88b{max-width:960px;margin:0 auto}
.tl-ba6caa37.tl-ba6caa37{display:grid;grid-template-columns:1fr 1fr}
.tl-bc9eeb42.tl-bc9eeb42{background:transparent !important;border:1.5px solid currentColor;color:#FFFFFF !important}
.tl-be757d01.tl-be757d01{width:44px;height:44px;background:#1A1410;border-radius:50%;display:flex;align-items:center;justify-content:center;color:white;font-size:18px;flex-shrink:0}
.tl-caa50e97.tl-caa50e97{font-size:42px;margin-bottom:1rem}
.tl-ce088110.tl-ce088110{background:white;border:1px solid rgba(26,20,16,0.1);border-radius:12px;overflow:hidden}
.tl-d0bfd4a6.tl-d0bfd4a6{max-width:1400px;margin:0 auto;position:relative;z-index:2}
.tl-d4d15de9.tl-d4d15de9{font-family:'DM Sans',sans-serif;font-size:15px;font-weight:600;color:#1A1410;margin-bottom:3px}
.tl-d888cd6f.tl-d888cd6f{font-size:12px;color:rgba(255,255,255,0.62);text-align:center;margin-top:0.75rem}
.tl-e0846e63.tl-e0846e63{width:100%;border:none;outline:none;background:transparent;color:#1A1410;font-size:15px;font-family:'DM Sans',sans-serif;resize:vertical}
.tl-e08c15b5.tl-e08c15b5{background:#C0392B !important;color:white !important;margin-right:0.5rem}
.tl-e1d21b72.tl-e1d21b72{font-family:'Space Grotesk',sans-serif;font-size:17px;font-weight:600;color:#1A1410}
.tl-ee704c3e.tl-ee704c3e{width:48px;height:48px;background:rgba(26,20,16,0.15);border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tl-f1117a4a.tl-f1117a4a{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.tl-f3bcf23b.tl-f3bcf23b{display:flex;align-items:center;gap:1rem;padding:1.25rem;background:white;border:2px dashed rgba(26,20,16,0.2);border-radius:8px;cursor:pointer;transition:all 0.2s}
.tl-faf6d2c6.tl-faf6d2c6{display:block;width:100%;background:#1A1410;color:white;padding:1.25rem;border:none;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;cursor:pointer;transition:background 0.2s}
.tl-fc511f0c.tl-fc511f0c{margin-top:1.5rem}
.tl-ffadf4df.tl-ffadf4df{display:block;font-size:10px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;color:rgba(26,20,16,0.72);margin-bottom:10px}
/* Externalised from 1 inline <style> block(s) in careers.html (phase-5 PR4:
   drop style-src 'unsafe-inline'). Concatenated in document order. */
/* ── Keyboard-accessible file uploads ──
   These inputs were display:none, which removes them from the tab order, so the
   drop-zone could only be operated with a pointer: a keyboard user could not
   reach either required upload and therefore could not submit an application.
   They are now visually hidden but still focusable, and the associated label
   shows the focus ring so the focus position stays observable. */
.tl-file-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}
.tl-upload-field:focus-within .tl-upload-drop{outline:3px solid #C0392B;outline-offset:3px;border-color:#C0392B}
.tl-upload-field:focus-within .tl-upload-drop > div:nth-child(2) > div:first-child{text-decoration:underline}

/* ══ MOBILE + WCAG 2.2 AA HARDENING ══ */
/* Overflow. Measured at 320px: .nav-right ran to 415px and .footer-socials to
   379px, so both pushed the document past the viewport on every page. The
   language switcher and both nav CTAs are already duplicated inside the drawer,
   so the bar sheds them as space runs out rather than overflowing. */
@media (max-width:768px){
  .nav-right>.lang-toggle{display:none}
  .footer-socials{flex-wrap:wrap;gap:1rem 1.25rem}
  .hamburger{min-width:44px;min-height:44px;align-items:center;justify-content:center;padding:8px}
  .footer-socials a,.footer-links a{min-height:44px;display:inline-flex;align-items:center}
  .lang-toggle-mobile button{min-height:44px;padding-left:14px;padding-right:14px}
  .mobile-menu a,.mobile-menu button{min-height:44px;display:flex;align-items:center}
  /* fixed full-width furniture needs the notch insets in landscape */
  .cookie{padding-left:max(1.5rem,env(safe-area-inset-left));padding-right:max(1.5rem,env(safe-area-inset-right));padding-bottom:max(1.5rem,env(safe-area-inset-bottom))}
  .float-cta{right:max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom))}
  .mobile-menu{padding-left:max(3rem,env(safe-area-inset-left));padding-right:max(3rem,env(safe-area-inset-right))}
}
@media (max-width:560px){ .nav-right>.nav-cta[href="book.html"]{display:none} }
@media (max-width:412px){ .nav-right>.nav-cta{display:none} .nav-logo-text{display:none} }
/* two-column grids that never collapsed below the 1024px breakpoint */
@media (max-width:560px){
  .stat-grid,.sm-steps,.cs-grid,.rate-fields,.faq-grid,.how-steps,.story-right{grid-template-columns:1fr!important}
}

/* Contrast. Every value below was measured against its real composited
   background; the old ones are the ratios in the comment. */
.footer-socials a{color:rgba(255,255,255,0.62)}   /* on #111 — was .30 → 2.65:1 */
.sr-btn{color:rgba(26,20,16,0.78);border-color:rgba(26,20,16,0.30)}  /* cream ground, not dark */
.cookie p{color:rgba(26,20,16,0.68)}              /* on #fff — was .50 → 3.44:1 */
.cookie-dec{color:rgba(26,20,16,0.74);border-color:rgba(26,20,16,0.38)} /* was .40 → 2.57:1 */
.marquee-item::after{color:rgba(27,79,138,0.72)!important}

/* Focus. There was no :focus-visible rule anywhere in the site; the red ring
   reads on cream (4.79:1) and on near-black (3.64:1), and the white halo keeps
   it visible where the ring sits on the red CTA itself. */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,
textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{
  outline:3px solid #C0392B;outline-offset:2px;box-shadow:0 0 0 5px rgba(255,255,255,.85)
}
.skip-link:focus{left:0;outline:3px solid #C0392B;outline-offset:2px}

/* Reduced motion. The existing block covered only .cta-slides and #tl-map; the
   marquee, the carousel and eleven other keyframes ran regardless. */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important}
  .marquee-track,.tl-carousel-track{animation:none!important}
}


/* Inline-styled grids. Roughly forty multi-column grids across the site are
   declared in a style="" attribute (repeat(3,1fr), repeat(5,1fr), 1fr 1fr …),
   so no stylesheet breakpoint could ever reach them; at 320px they ran the
   document out to 624px on about, 568px on brokers, 500px on book. On a phone
   every one of them becomes a single column. */
@media (max-width:600px){
  .tlm-gridtemplateco{grid-template-columns:1fr!important}
  .service-row{grid-template-columns:1fr!important;gap:1rem!important}
  .sr-btn{white-space:normal}
  .stat-grid,.sm-steps,.cs-grid,.rate-fields,.faq-grid,.how-steps,.story-right,
  .eq-cards,.wt-points,.safety-cards,.sm-offers,.terminals-grid,.footer-top{grid-template-columns:1fr!important}
}

/* Min-content floors. Grid and flex children default to min-width:auto, so a
   card whose contents measure 282px keeps its track at 282px however narrow the
   phone is — that is what still pushed about.html to 330px at a 320px viewport
   after the grids were collapsed. Letting them shrink, and letting single-line
   rows wrap, is the standard remedy. */
@media (max-width:600px){
  section.tlm-padding{padding-left:1.25rem!important;padding-right:1.25rem!important}
  .tlm-displaygrid>*,.tlm-displayflex>*,.track-row>*{min-width:0}
  .tlm-displayflex,.track-row{flex-wrap:wrap}
  .track-row>input,.track-row>button{flex:1 1 100%}
}

/* Last contrast holdouts, each measured on its own ground. */
.notice h2{color:#A5291D}                       /* red on its own tint: 4.34 → 5.2 */
.lane-badge.freq{color:#A5291D}                 /* 4.17 → 5.0 */
#trk-log>div{color:rgba(255,255,255,0.92)}      /* log text on a near-clear panel: 2.83 → 4.9 */

/* Target size, WCAG 2.5.8 AA — the same defect and fix as page-book-v1.css, from this
   page's own copy of the two rules above. Measured at 390px: 9 of 11 controls under the
   24px minimum (inputs 20px, the four selects 17px). No checkboxes on this form, so every
   failing control is fixed here. See page-book-v1.css for the specificity and outline notes. */
.tl-99ddfafa.tl-99ddfafa,
.tl-65c9d0a4.tl-65c9d0a4{min-height:44px;padding-top:.5rem;padding-bottom:.5rem}
.tl-99ddfafa.tl-99ddfafa:focus-visible,
.tl-65c9d0a4.tl-65c9d0a4:focus-visible{outline:3px solid #C0392B;outline-offset:2px}

/* ── P2: validation error UI ─────────────────────────────────────────────────────────────
   assets/js/form-validation-a11y.js creates one empty role="alert" per field on demand and
   fills it when that field fails, so an error is announced, visible and tied to its control
   by aria-describedby. Measured before this: aria-describedby, aria-invalid, aria-errormessage,
   role="alert" and aria-live were absent from every collecting form, so the only feedback was
   the browser's own transient bubble on the first invalid control.
   The empty state must occupy no space, or a long form carries a column of blank paragraphs. */
.tl-field-error{font-size:14px;line-height:1.4;font-weight:600;color:#A5291D;margin-top:.35rem}
.tl-field-error:empty{display:none}
/* Colour is not the only signal — the message sits below the field and is announced — but the
   failing control is marked so it can be found without reading every label. */
[aria-invalid="true"]{box-shadow:inset 0 -2px 0 0 #A5291D}
