/* Schomburg Insurance brand system — extracted from schomburginsurance.com */
:root {
  --blue: #002B7C;
  --blue-dark: #001C54;
  --red: #B01224;
  --red-hover: #8E0E1D;
  --ink: #1E2530;
  --gray: #4E555C;
  --line: #E3E7EE;
  --bg: #F6F8FB;
  --white: #fff;
  --radius: 12px;
  --shadow: 0 8px 28px rgba(0, 27, 84, .10);
  --font: 'Montserrat', 'Helvetica Neue', Arial, sans-serif;
}
* { box-sizing: border-box; }
body { margin: 0; font-family: var(--font); color: var(--gray); background: var(--bg); font-size: 16px; line-height: 1.6; }
h1, h2, h3, h4 { color: var(--blue); line-height: 1.2; margin: 0 0 .5em; font-weight: 700; }
a { color: var(--blue); }
img { max-width: 100%; }
.wrap { max-width: 1120px; margin: 0 auto; padding: 0 20px; }
.desk-only { display: none; } @media (min-width: 760px) { .desk-only { display: inline; } }
/* Class display rules (e.g. .btn) otherwise beat the UA [hidden] rule — the wizard
   toggles Back/Continue/Submit and step sections via the hidden attribute. */
[hidden] { display: none !important; }

/* Buttons */
.btn { display: inline-block; padding: 12px 22px; border-radius: 8px; font-weight: 700; font-size: 15px; text-decoration: none; border: 0; cursor: pointer; font-family: var(--font); transition: .15s; text-align: center; }
.btn-red { background: var(--red); color: #fff; } .btn-red:hover { background: var(--red-hover); }
.btn-blue { background: var(--blue); color: #fff; } .btn-blue:hover { background: var(--blue-dark); }
.btn-outline { border: 2px solid #fff; color: #fff; background: transparent; } .btn-outline:hover { background: rgba(255,255,255,.15); }
.btn-ghost { background: #EDF1F7; color: var(--blue); } .btn-ghost:hover { background: #E0E7F2; }
.btn-lg { padding: 15px 30px; font-size: 16px; }
.btn-link { background: none; border: 0; color: var(--gray); text-decoration: underline; cursor: pointer; font-family: var(--font); font-size: 14px; }

/* Nav */
.nav { background: #fff; box-shadow: 0 1px 0 var(--line); position: sticky; top: 0; z-index: 50; }
.nav-inner { display: flex; align-items: center; justify-content: space-between; padding-top: 14px; padding-bottom: 14px; }
.nav-links { display: flex; align-items: center; gap: 22px; }
/* :not(.btn) so this doesn't out-specify .btn-red's white text on the "Get a Quote" CTA */
.nav-links a:not(.btn) { text-decoration: none; font-weight: 600; font-size: 15px; color: var(--gray); }
.nav-links a:not(.btn):hover { color: var(--blue); }
.nav-links a.btn { text-decoration: none; }
.nav-phone { color: var(--blue) !important; font-weight: 700 !important; }
@media (max-width: 700px) { .nav-links a:not(.btn):not(.nav-phone) { display: none; } }
/* On a phone the header is logo + number + Get a Quote + the Nexus mark in ~358px, and the
   number loses: it was being squeezed to 67px for fourteen characters, wrapping onto three
   lines and pushing the header to 100px tall. Below 560px the digits are replaced by a
   handset glyph — same tel: link, same one-tap call, no wrapping — and the gap tightens so
   the logo and the button sit on one line. The number stays spelled out above 560px, where
   there is room for it. */
@media (max-width: 560px) {
  .nav-links { gap: 12px; }
  /* flex: 0 0 auto because this is a flex item and the default shrink squashed the 40px
     circle to 29px — a 29x40 ellipse, not a round button. */
  .nav-phone { font-size: 0 !important; width: 40px; height: 40px; flex: 0 0 auto;
    display: inline-flex !important; align-items: center; justify-content: center;
    border-radius: 50%; background: rgba(0, 43, 124, .07); }
  /* What was actually making the header 100px tall — not the phone number, which was the
     first thing I blamed. "Get a Quote" needs 94px on one line, but the button was being
     shrunk to 113px with 22px of side padding, leaving 69px of content box. So it wrapped
     to two 24px lines: 48 + 24px padding = 72px tall, + 28px of .nav-inner padding = 100.
     Refusing to wrap and refusing to shrink puts it back on one line at 48px. */
  /* Narrower side padding here too. Once the button refuses to shrink, the logo is the only
     elastic thing left in the row and was absorbing the whole 47px overrun on its own —
     down to ~148px, a quarter off the brand mark. 14px instead of 22px gives 16px back. */
  .nav-links a.btn { white-space: nowrap; flex-shrink: 0; padding-left: 14px; padding-right: 14px; }
  .nav-phone::before { content: "\260E"; font-size: 19px; line-height: 1; }
}
/* Agency Nexus shortcut: a diamond beside the CTA, quiet until hovered. Exempt from the
   mobile rule above — it is small enough to keep, and staff use phones. */
.nav-links a.nav-diamond { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; margin-left: -8px; border-radius: 50%; color: #9AA3B2; }
.nav-links a.nav-diamond:hover, .nav-links a.nav-diamond:focus-visible { color: var(--red); background: rgba(176, 18, 36, .08); }

/* Hero */
.hero { background-size: cover; background-position: center; color: #fff; }
.hero-inner { padding: 96px 20px 72px; text-align: center; }
.eyebrow { text-transform: uppercase; letter-spacing: .18em; font-size: 12px; font-weight: 700; color: #FFD9DE; margin-bottom: 14px; }
.hero h1 { color: #fff; font-size: clamp(30px, 5vw, 48px); font-weight: 800; }
.hero-sub { max-width: 640px; margin: 16px auto 28px; font-size: 18px; color: #E8EDF7; }
.hero-ctas { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.trust-bar { margin-top: 38px; display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; font-size: 13px; color: #C9D4EA; font-weight: 600; }

/* Split cards */
.split { display: grid; gap: 22px; grid-template-columns: 1fr; padding-top: 40px; padding-bottom: 10px; }
@media (min-width: 760px) { .split { grid-template-columns: 1fr 1fr; } }
.split-card { background-size: cover; background-position: center; border-radius: var(--radius); padding: 44px 30px; color: #fff; text-decoration: none; box-shadow: var(--shadow); transition: transform .15s; display: block; }
.split-card:hover { transform: translateY(-3px); }
.split-card h2 { color: #fff; font-size: 26px; }
.split-card p { color: #DFE6F3; margin: 0 0 18px; font-size: 14.5px; }

/* Bands */
.band { padding: 64px 0; }
.band-grid { display: grid; gap: 36px; align-items: center; grid-template-columns: 1fr; }
@media (min-width: 820px) { .band-grid { grid-template-columns: 1.2fr 1fr; } }
.band-grid img { border-radius: var(--radius); box-shadow: var(--shadow); }
.band h2, .team h2, .community h2 { font-size: 30px; }

/* Team */
.team { text-align: center; padding: 30px 20px 70px; }
.team-sub { margin-top: -6px; margin-bottom: 30px; }
.team-grid { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
.team-card { background: #fff; border-radius: var(--radius); padding: 18px 14px; box-shadow: var(--shadow); }
.team-card img { width: 110px; height: 110px; object-fit: cover; border-radius: 50%; border: 3px solid var(--blue); }
.team-card h3 { font-size: 16px; margin: 12px 0 2px; }
.team-card p { font-size: 13px; margin: 0 0 6px; }
.team-card a { font-size: 12.5px; word-break: break-all; }

/* Community band */
.community { background-size: cover; background-position: center; color: #fff; text-align: center; padding: 70px 0; }
.community h2 { color: #fff; }
.community p { max-width: 640px; margin: 0 auto 26px; color: #DCE4F5; }

/* Footer */
.footer { background: var(--blue); color: #C9D4EA; margin-top: 60px; font-size: 14.5px; }
.footer a { color: #fff; }
.footer h4 { color: #fff; margin: 0 0 6px; font-size: 14px; text-transform: uppercase; letter-spacing: .08em; }
.footer-grid { display: grid; gap: 30px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); padding: 44px 20px 20px; }
.footer-logo {
  /* The logo is dark artwork on transparency, so on the navy footer it used to sit on a white
     box, which read as a sticker stuck onto the page. The artwork is knocked out to white
     instead, the way a one-colour logo is normally reversed onto a dark ground. */
  filter: brightness(0) invert(1);
  opacity: .92;
}
.footer-legal { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 10px; padding-top: 18px; padding-bottom: 26px; border-top: 1px solid rgba(255,255,255,.15); font-size: 13px; }

/* ===== Forms ===== */
.form-wrap { max-width: 780px; padding-top: 42px; padding-bottom: 60px; }
.form-head h1 { font-size: 30px; }
.form-head p { margin-top: 0; }
.progress { height: 8px; background: var(--line); border-radius: 99px; overflow: hidden; margin-top: 22px; }
.progress-bar { height: 100%; background: linear-gradient(90deg, var(--blue), var(--red)); border-radius: 99px; transition: width .3s; }
.progress-label { font-size: 13px; font-weight: 600; color: var(--gray); margin: 8px 0 24px; }
.step { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow); padding: 30px 28px; }
.step-title { font-size: 22px; border-bottom: 2px solid var(--line); padding-bottom: 12px; margin-bottom: 22px; }
.fields { display: flex; flex-direction: column; gap: 20px; }
.field .label, .field > .label, label.field .label { display: block; font-weight: 600; color: var(--ink); font-size: 15px; margin-bottom: 6px; }
.field em { color: var(--red); font-style: normal; }
.field .opt-name, .field .opt-hint { color: inherit; }
.check .opt-name, .pill .opt-name { color: var(--ink); }
.pill input:checked + span .opt-name { color: #fff; }
.desc { font-size: 13px; color: #7A828C; margin: -2px 0 8px; }
input[type=text], input[type=email], input[type=tel], input[type=number], input[type=date], input[type=password], input[type=url], select, textarea {
  width: 100%; padding: 11px 13px; border: 1.5px solid var(--line); border-radius: 8px; font-family: var(--font); font-size: 15px; color: var(--ink); background: #FBFCFE; transition: border .15s;
}
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--blue); background: #fff; }
.invalid { border-color: var(--red) !important; background: #FFF6F7 !important; }
.grid { display: grid; gap: 14px 16px; grid-template-columns: 1fr; }
@media (min-width: 640px) { .grid { grid-template-columns: 1fr 1fr; } .grid .span-2, .grid .field-html, .grid textarea, .grid .field:has(textarea) { grid-column: span 2; } }
.grid-2 { grid-template-columns: 1fr 1fr !important; }
.sub { display: flex; flex-direction: column-reverse; }
.sub span { font-size: 12px; color: #7A828C; margin-top: 4px; }
fieldset.group { border: 1.5px solid var(--line); border-radius: 10px; padding: 16px 18px 18px; margin: 0; }
fieldset.group legend { font-weight: 700; color: var(--blue); padding: 0 8px; font-size: 15px; }
.pills { display: flex; flex-wrap: wrap; gap: 10px; }
.pill input, .check input { position: absolute; opacity: 0; }
.pill > span { display: inline-block; padding: 10px 18px; border: 1.5px solid var(--line); border-radius: 99px; font-weight: 600; font-size: 14.5px; cursor: pointer; background: #fff; transition: .16s ease; }
.pill > span:hover { border-color: #C9D4EA; background: #FBFCFE; }
.pill input:checked + span { background: var(--blue); border-color: var(--blue); color: #fff; }
.pill input:focus-visible + span { outline: 2px solid var(--red); outline-offset: 2px; }
/* A pill carrying a hint needs block layout — the label and its explanation stack. */
.pill-rich > span { border-radius: 12px; text-align: left; padding: 12px 16px; }
.pill-rich .opt-name, .check .opt-name { display: block; font-style: normal; font-weight: 600; }
.pill-rich .opt-hint, .check .opt-hint { display: block; font-style: normal; font-weight: 400; font-size: 12.5px; line-height: 1.45; color: var(--gray); margin-top: 3px; }
.pill-rich input:checked + span .opt-hint { color: #C9D4EA; }

.checks { display: grid; gap: 10px; grid-template-columns: 1fr; }
@media (min-width: 640px) { .checks { grid-template-columns: 1fr 1fr; } }
.check { position: relative; }
.check > span { display: block; padding: 13px 14px 13px 42px; border: 1.5px solid var(--line); border-radius: 10px; font-size: 14.5px; cursor: pointer; background: #fff; transition: border-color .16s ease, background .16s ease, box-shadow .16s ease; height: 100%; box-sizing: border-box; }
.check > span:hover { border-color: #C9D4EA; background: #FBFCFE; }
.check > span::before { content: ''; position: absolute; left: 13px; top: 16px; width: 19px; height: 19px; border: 2px solid #B9C2CF; border-radius: 5px; background: #fff; transition: .16s ease; }
/* The tick is drawn rather than shipped as an image, so it inherits colour and scales. */
.check > span::after { content: ''; position: absolute; left: 19px; top: 20px; width: 5px; height: 10px; border: solid #fff; border-width: 0 2.5px 2.5px 0; transform: rotate(45deg) scale(0); transform-origin: center; transition: transform .16s cubic-bezier(.2,.9,.3,1.4); }
.check input:checked + span { border-color: var(--blue); background: #F0F4FB; box-shadow: 0 2px 10px rgba(0,43,124,.09); }
.check input:checked + span::before { background: var(--blue); border-color: var(--blue); }
.check input:checked + span::after { transform: rotate(45deg) scale(1); }
.check input:focus-visible + span { outline: 2px solid var(--red); outline-offset: 2px; }
.field-sm input { max-width: 200px; }
.field-html { font-size: 14px; }

/* Repeater */
.repeater .rep-item { border: 1.5px dashed var(--line); border-radius: 10px; padding: 14px 16px; margin-bottom: 12px; background: #FBFCFE; }
.rep-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.rep-title { font-weight: 700; color: var(--blue); font-size: 14px; }
.rep-remove { background: none; border: 0; font-size: 20px; color: #A5AEBA; cursor: pointer; line-height: 1; }
.rep-remove:hover { color: var(--red); }

/* Compact repeater: vehicles and drivers, where a list may run to a hundred rows. Stacked
   in two columns on a phone; one numbered row per item, under one heading row, from 720px. */
.rep-compact .label-row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.rep-count { font-size: 13px; font-weight: 700; color: var(--blue); white-space: nowrap; }
.rep-bulk-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 0 0 10px; }
.rep-limit { font-size: 12.5px; color: #7A828C; }
.rep-compact .rep-item.rc-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 10px; padding: 10px 12px; margin-bottom: 8px; border-style: solid; border-width: 1px; }
.rc-row .rc-num { grid-column: 1; font-weight: 700; color: var(--blue); font-size: 14px; }
.rc-row .rep-remove { grid-column: 2; grid-row: 1; justify-self: end; }
.rc-cell { display: flex; flex-direction: column; min-width: 0; }
.rc-cell.rc-wide { grid-column: span 2; }
.rc-label { font-size: 12px; font-weight: 600; color: var(--ink); margin-bottom: 3px; }
.rc-label em { color: var(--red); font-style: normal; }
.rc-cell input, .rc-cell select { padding: 8px 9px; font-size: 14.5px; }
.rc-head { display: none; }
.rep-compact .rep-add:disabled { opacity: .5; cursor: not-allowed; }
@media (min-width: 720px) {
  .rc-head, .rep-compact .rep-item.rc-row { grid-template-columns: 1.6rem var(--rc-cols) 1.6rem; gap: 6px; align-items: center; }
  .rc-head { display: grid; padding: 0 9px 4px; font-size: 12px; font-weight: 600; color: var(--ink); }
  .rc-head .rc-num { color: #7A828C; }
  .rc-hcell em { color: var(--red); font-style: normal; }
  .rep-compact .rep-item.rc-row { padding: 5px 9px; margin-bottom: 4px; border-radius: 8px; }
  .rc-row .rc-num, .rc-row .rep-remove { grid-column: auto; grid-row: auto; font-size: 13px; }
  .rc-row .rep-remove { font-size: 20px; }
  .rc-cell.rc-wide { grid-column: auto; }
  /* Still read by screen readers, which see no heading row. */
  .rc-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .rc-cell input, .rc-cell select { padding: 6px 7px; font-size: 14px; }
}

/* Bulk entry: paste or upload a list into a compact repeater. */
.bulk-panel { border: 1.5px solid var(--line); border-radius: 10px; background: #fff; padding: 14px 16px; margin: 0 0 12px; }
.bulk-panel h3 { font-size: 15px; margin: 0 0 6px; }
.bulk-panel textarea { font-family: ui-monospace, Menlo, monospace; font-size: 13px; min-height: 110px; }
.bulk-panel .bulk-actions { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; margin-top: 10px; }
.bulk-panel .bulk-file { font-size: 14px; }
.bulk-msg { font-size: 13.5px; margin: 8px 0 0; }
.bulk-msg.err { color: var(--red); font-weight: 600; }
.bulk-map { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; margin: 10px 0; }
.bulk-map label { display: flex; flex-direction: column; font-size: 12px; color: #7A828C; min-width: 0; }
.bulk-map select { padding: 6px 7px; font-size: 13.5px; }
.bulk-map .bulk-sample { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bulk-map .bulk-unmapped select { border-color: #E0A100; }
.bulk-preview { max-height: 320px; overflow: auto; border: 1px solid var(--line); border-radius: 8px; }
.bulk-preview table { border-collapse: collapse; width: 100%; font-size: 13px; }
.bulk-preview th, .bulk-preview td { padding: 5px 8px; border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; }
.bulk-preview th { position: sticky; top: 0; background: var(--bg); color: var(--ink); }
.bulk-preview td.bulk-problem { white-space: normal; min-width: 180px; }
.bulk-preview tr.has-error td { background: #FFF6F7; }
.bulk-preview .p-err { color: var(--red); font-weight: 600; }
.bulk-preview .p-warn { color: #8A5A00; }
.bulk-skip { font-size: 13.5px; display: flex; gap: 6px; align-items: center; }

/* File dropzone */
.dropzone { display: block; border: 2px dashed #B9C2CF; border-radius: 10px; padding: 22px; text-align: center; cursor: pointer; background: #FBFCFE; transition: .15s; }
.dropzone:hover, .dropzone.drag { border-color: var(--blue); background: #F0F4FB; }
.dropzone input { display: none; }
.dz-text { color: #7A828C; font-size: 14.5px; }
.dz-list { display: block; margin-top: 6px; font-size: 13px; color: var(--blue); font-weight: 600; }

/* Form nav */
.form-nav { display: flex; justify-content: space-between; gap: 12px; margin-top: 24px; }
.form-nav #btnNext, .form-nav #btnSubmit { margin-left: auto; }
.form-error { background: #FFF0F1; border: 1.5px solid var(--red); color: var(--red); padding: 12px 16px; border-radius: 8px; margin-top: 18px; font-weight: 600; font-size: 14.5px; }
.secure-note { text-align: center; font-size: 13px; color: #8A93A0; margin-top: 18px; }

/* Draft resume prompt. An offer, not a warning — so it sits on the page surface
   rather than borrowing the error red. */
.resume-note { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: space-between; background: var(--bg); border: 1.5px solid var(--line); border-radius: var(--radius); padding: 12px 16px; margin-bottom: 18px; font-size: 14px; color: var(--gray); }
.resume-note .resume-text { font-weight: 600; color: var(--ink); }
.resume-note .resume-actions { display: flex; gap: 8px; flex-shrink: 0; }

/* Thank you */
.ty-wrap { max-width: 640px; padding: 60px 20px; }
.ty-card { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow); padding: 44px 36px; text-align: center; }
.ty-check { width: 64px; height: 64px; border-radius: 50%; background: var(--blue); color: #fff; font-size: 34px; line-height: 64px; margin: 0 auto 18px; }
.ty-agent { display: flex; gap: 16px; align-items: center; text-align: left; background: var(--bg); border-radius: 10px; padding: 16px; margin: 26px 0; }
.ty-agent img { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; }
.ty-upsell { border-top: 1.5px solid var(--line); padding-top: 22px; }
.ty-home { display: inline-block; margin-top: 18px; font-size: 14px; }

/* Auth / admin */
.auth-wrap { max-width: 620px; padding: 60px 20px; }
.auth-card { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow); padding: 36px 32px; display: flex; flex-direction: column; gap: 16px; }
.auth-card h1 { font-size: 26px; margin-bottom: 0; }
.alert { background: #FFF0F1; color: var(--red); padding: 10px 14px; border-radius: 8px; font-weight: 600; font-size: 14px; }
.alert-inline { color: var(--red); font-size: 13.5px; }
.onboard-option { border: 1.5px solid var(--line); border-radius: 10px; padding: 18px 20px; }
.onboard-option h3 { font-size: 17px; }
.row-btns { display: flex; gap: 10px; margin-top: 10px; }
.az-status { font-size: 14px; font-weight: 600; min-height: 20px; margin: 8px 0 0; }
.az-status.ok { color: #0E7C3F; } .az-status.err { color: var(--red); }
.onboard-skip { text-align: center; }
.tag { display: inline-block; padding: 3px 10px; border-radius: 99px; font-size: 12px; font-weight: 700; background: #EDF1F7; color: var(--gray); vertical-align: middle; }
.tag-rec { background: #E7F6EC; color: #0E7C3F; }
.tag-ok, .az-synced { background: #E7F6EC; color: #0E7C3F; }
.tag-warn, .az-error { background: #FFF0F1; color: var(--red); }
.az-pending, .az-skipped { background: #FFF7E6; color: #9A6B00; }
.tag-new { background: #E8F0FF; color: var(--blue); }

/* Dashboard */
.dash-wrap { padding-top: 34px; padding-bottom: 60px; }
.dash-head { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 14px; margin-bottom: 18px; }
.dash-actions { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 14px; margin-bottom: 22px; }
.stat { background: #fff; border-radius: 10px; padding: 14px 18px; box-shadow: var(--shadow); }
.stat strong { display: block; font-size: 26px; color: var(--blue); }
.stat span { font-size: 12.5px; text-transform: uppercase; letter-spacing: .06em; font-weight: 600; }
.lead-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 10px; overflow: hidden; box-shadow: var(--shadow); font-size: 14.5px; }
.lead-table th { text-align: left; background: var(--blue); color: #fff; padding: 12px 14px; font-size: 13px; }
.lead-table td { padding: 12px 14px; border-top: 1px solid var(--line); vertical-align: top; }
.lead-table tbody tr { cursor: pointer; } .lead-table tbody tr:hover { background: #F4F7FC; }
.lead-table .empty { text-align: center; color: #8A93A0; padding: 34px; }
.lead-summary { background: #fff; border-radius: 10px; box-shadow: var(--shadow); padding: 22px; white-space: pre-wrap; font-size: 13.5px; line-height: 1.7; }
.file-list a { font-weight: 600; }

/* Time-window chips: a compact variant of .checks for short paired label/hint options */
.checks.checks-compact { grid-template-columns: repeat(auto-fit, minmax(148px, 1fr)); gap: 8px; }
.checks-compact .check > span { padding: 10px 12px 10px 36px; border-radius: 9px; }
.checks-compact .check > span::before { left: 11px; top: 13px; width: 17px; height: 17px; }
.checks-compact .check > span::after { left: 16px; top: 16px; }
.checks-compact .opt-name { font-size: 13.5px; }
.checks-compact .opt-hint { font-size: 12px; margin-top: 1px; }

/* Address autocomplete dropdown */
.field .sub { position: relative; }
.addr-list { position: absolute; z-index: 40; left: 0; right: 0; top: 100%; margin: 4px 0 0; padding: 4px; list-style: none; background: #fff; border: 1.5px solid var(--line); border-radius: 10px; box-shadow: var(--shadow); max-height: 260px; overflow-y: auto; }
.addr-item { padding: 9px 12px; font-size: 14px; line-height: 1.35; color: var(--ink); border-radius: 7px; cursor: pointer; }
.addr-item:hover, .addr-item.active { background: #F0F4FB; color: var(--blue); }

/* ===== Quick Quote / declarations-page review ===== */
.qq-dec .step-title .tag { vertical-align: middle; margin-left: 8px; }
.qq-why { font-size: 13.5px; color: #7A828C; margin: 16px 0 0; }
/* Skip sits opposite Submit rather than under it: it is a real choice on this step, not a
   consolation link, and burying it is what makes people abandon the form instead. */
.qq-nav { align-items: center; }
.qq-nav #btnSkip { margin-right: auto; }
@media (max-width: 560px) { .qq-nav { flex-direction: column-reverse; } .qq-nav .btn { width: 100%; } }

.qq-wrap { max-width: 1000px; padding-top: 42px; padding-bottom: 60px; }
.qq-head h1 { font-size: 28px; }
.qq-head p { max-width: 720px; }
.qq-card { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow); padding: 40px 34px; }
.qq-center { text-align: center; max-width: 640px; margin: 20px auto; }
.qq-center h1 { font-size: 26px; }
.qq-muted { font-size: 14px; color: #7A828C; }
.qq-spinner { width: 42px; height: 42px; margin: 0 auto 20px; border: 4px solid var(--line); border-top-color: var(--blue); border-radius: 50%; animation: qq-spin 0.9s linear infinite; }
@keyframes qq-spin { to { transform: rotate(360deg); } }
/* Respect a reduced-motion preference — the spinner is decoration, the copy carries the meaning. */
@media (prefers-reduced-motion: reduce) { .qq-spinner { animation-duration: 3s; } }

.qq-headline { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 2px; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); margin-top: 22px; }
.qq-hl { background: #fff; padding: 14px 18px; }
.qq-hl span { display: block; font-size: 11.5px; text-transform: uppercase; letter-spacing: .07em; font-weight: 700; color: #8A93A0; }
.qq-hl strong { display: block; color: var(--blue); font-size: 16px; margin-top: 3px; word-break: break-word; }
.qq-counts { font-size: 14px; color: var(--gray); margin: 16px 0 0; }
.qq-counts strong { color: var(--blue); }

.qq-warn { background: #FFF7E6; border: 1.5px solid #E7C77A; color: #7A5A00; border-radius: 10px; padding: 14px 18px; margin-top: 18px; font-size: 14px; }
.qq-warn ul { margin: 6px 0; padding-left: 20px; }
.qq-unread { text-align: left; font-size: 14px; background: var(--bg); border-radius: 10px; padding: 14px 18px 14px 34px; }

.qq-section { margin-top: 34px; }
.qq-section h2 { font-size: 20px; margin-bottom: 4px; }
.qq-sub { font-size: 13.5px; color: #7A828C; margin: 0 0 14px; max-width: 780px; }
/* Wide schedules scroll inside their own box; the page itself must never scroll sideways. */
.qq-scroll { overflow-x: auto; border-radius: 10px; box-shadow: var(--shadow); background: #fff; }
.qq-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.qq-table th { text-align: left; font-weight: 700; }
.qq-table thead th { background: var(--blue); color: #fff; padding: 11px 14px; font-size: 12.5px; text-transform: uppercase; letter-spacing: .05em; white-space: nowrap; }
.qq-table td, .qq-table tbody th { padding: 11px 14px; border-top: 1px solid var(--line); vertical-align: top; }
.qq-table tbody th { color: var(--ink); font-size: 14px; width: 200px; }
.qq-table-wide td { white-space: nowrap; }
.qq-val { color: var(--ink); font-weight: 600; }
.qq-suspect { color: var(--red); text-decoration: underline dotted; cursor: help; }
.qq-empty { color: #C2C8D2; }
.qq-note { display: block; font-weight: 400; font-size: 12px; color: #8A93A0; margin-top: 2px; }
.qq-dest { font-size: 12.5px; line-height: 1.7; }
.qq-dest code { background: #F0F4FB; color: var(--blue); padding: 1px 6px; border-radius: 5px; font-size: 12px; }
.qq-sys { font-weight: 700; color: var(--gray); }
.qq-none { color: #8A93A0; font-style: italic; }
.qq-t { margin-bottom: 4px; }
.qq-t:last-child { margin-bottom: 0; }
.qq-asval { color: var(--ink); font-weight: 600; }
/* A row with no writable destination is tinted rather than hidden — a value with nowhere to go
   is the finding, and hiding it is how a gap stays invisible for another year. */
.qq-row-blocked { background: #FDFBF6; }
.qq-row-none { background: #FBFCFE; }

.qq-conf { display: inline-block; padding: 2px 9px; border-radius: 99px; font-size: 11.5px; font-weight: 700; white-space: nowrap; cursor: help; }
.conf-high { background: #E7F6EC; color: #0E7C3F; }
.conf-medium { background: #FFF7E6; color: #9A6B00; }
.conf-low { background: #FFF0F1; color: var(--red); }
.conf-unrated { background: #EDF1F7; color: var(--gray); }
.st-mapped { background: #E7F6EC; color: #0E7C3F; }
.st-blocked { background: #FFF7E6; color: #9A6B00; }
.st-none { background: #EDF1F7; color: var(--gray); }
.qq-section h2 .qq-conf { vertical-align: middle; margin-left: 4px; font-size: 11px; }
/* The one column on a schedule that does have a live destination is marked in the header, so a
   table of otherwise-unwritable values does not read as uniformly hopeless. */
.qq-col-mapped { background: #0E7C3F !important; cursor: help; }
.qq-table-wide .qq-conf { margin-left: 6px; }

.qq-next { margin-top: 40px; text-align: left; max-width: none; }
.qq-next h2 { font-size: 20px; }
.qq-next .ty-agent { margin-bottom: 0; }
.qq-next .ty-home { display: block; margin-top: 20px; }
.qq-unrated { color: #9A6B00; }

/* ---- Renewal review ------------------------------------------------------
   Sized for a thumb: this arrives by text message more often than by email, so
   the tap targets are deliberately larger than the rest of the site's forms. */
.rn-wrap { max-width: 640px; padding-bottom: 3rem; }
.rn-head h1 { margin-bottom: .35rem; }
.rn-head p { color: #4a5568; line-height: 1.6; }
.rn-qs { list-style: none; margin: 2rem 0 0; padding: 0; }
.rn-q { border: 1px solid #dfe3ea; border-radius: 12px; padding: 1.1rem 1.15rem; margin-bottom: .85rem; background: #fff; }
.rn-q.answered { border-color: #b9c6da; }
.rn-qtext { display: flex; gap: .6rem; align-items: baseline; margin: 0 0 .85rem; font-weight: 600; line-height: 1.45; }
.rn-num { flex: none; width: 1.55rem; height: 1.55rem; border-radius: 6px; background: #002B7C; color: #fff;
          font-size: .82rem; display: grid; place-items: center; }
.rn-choice { display: flex; gap: .6rem; }
.rn-opt { flex: 1 1 0; }
.rn-opt input { position: absolute; opacity: 0; width: 0; height: 0; }
.rn-opt span { display: block; text-align: center; padding: .8rem 1rem; border: 1px solid #dfe3ea; border-radius: 9px;
               font-weight: 600; cursor: pointer; background: #f7f8fb; user-select: none; }
.rn-opt input:checked + span { background: #002B7C; border-color: #002B7C; color: #fff; }
.rn-opt input:focus-visible + span { outline: 2px solid #002B7C; outline-offset: 2px; }
.rn-detail { margin-top: .85rem; }
.rn-detail label { display: block; font-size: .9rem; font-weight: 600; margin-bottom: .35rem; }
.rn-detail input { width: 100%; padding: .75rem .85rem; border: 1px solid #dfe3ea; border-radius: 9px; font-size: 1rem; }
.rn-foot { margin-top: 1.6rem; text-align: center; }
.rn-figs { border: 1px solid #dfe3ea; border-radius: 12px; padding: 1.1rem 1.15rem; margin-top: 1.2rem; background: #fff; }
.rn-figs-title { font-size: 1.1rem; margin: 0 0 .3rem; }
.rn-figs-note { font-size: .9rem; color: #6a7688; margin: 0 0 .9rem; }
.rn-fig { display: block; margin-top: .85rem; }
.rn-fig span { display: block; font-size: .95rem; font-weight: 600; margin-bottom: .35rem; }
.rn-fig input { width: 100%; padding: .75rem .85rem; border: 1px solid #dfe3ea; border-radius: 9px; font-size: 1rem; }
.rn-call { display: flex; gap: .6rem; align-items: center; margin: 1.2rem 0 0; padding: .9rem 1.15rem; border: 1px solid #dfe3ea;
  border-radius: 12px; background: #fff; font-weight: 600; cursor: pointer; }
.rn-call input { width: 1.15rem; height: 1.15rem; flex: none; }
.rn-progress { font-size: .9rem; color: #6a7688; margin: 0 0 .8rem; }
.rn-submit { width: 100%; padding: .95rem 1rem; font-size: 1.02rem; }
.rn-err { color: #b01224; font-weight: 600; margin: .8rem 0 0; }
.rn-note { font-size: .85rem; color: #6a7688; margin: 1rem 0 0; line-height: 1.5; }
.rn-id { max-width: 420px; margin: 1.5rem 0 0; }
.rn-id label { display: block; font-weight: 600; margin: .9rem 0 .35rem; }
.rn-id input { width: 100%; padding: .75rem .85rem; border: 1px solid #dfe3ea; border-radius: 9px; font-size: 1rem; }
.rn-id .btn { margin-top: 1.2rem; width: 100%; }
@media (min-width: 640px) { .rn-submit { width: auto; min-width: 260px; } }

/* ---- Renewal queue & templates (admin) ---------------------------------- */
.rq-wrap { max-width: 1200px; }
.rq-sync { padding: .75rem 1rem; border-radius: 8px; font-size: .92rem; margin: 0 0 1.2rem; }
.rq-sync.ok { background: #e2f2ea; color: #186b48; }
.rq-sync.bad { background: #faf0dd; color: #8a5a12; }
.rq-empty { border: 1px dashed #cfd6e2; border-radius: 10px; padding: 2rem; text-align: center; color: #5c6980; }
.rq-empty p { margin: .3rem 0; }
.rq-empty-cell { text-align: center; color: #8492a8; padding: 1.4rem; }
.rq-bar { position: sticky; top: 0; z-index: 5; display: flex; gap: 1rem; align-items: center; flex-wrap: wrap;
          background: #fff; border: 1px solid #dfe3ea; border-radius: 10px; padding: .8rem 1rem; margin-bottom: 1.2rem; }
.rq-bar label { font-size: .9rem; font-weight: 600; display: flex; gap: .5rem; align-items: center; }
.rq-bar input[type=datetime-local] { padding: .45rem .6rem; border: 1px solid #dfe3ea; border-radius: 7px; font: inherit; }
.rq-count { color: #5c6980; font-size: .9rem; margin-left: auto; font-variant-numeric: tabular-nums; }
.rq-lob { border: 1px solid #dfe3ea; border-radius: 10px; margin-bottom: 1rem; overflow: hidden; background: #fff; }
.rq-lob-head { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; padding: .8rem 1rem; background: #f4f6fa;
               border-bottom: 1px solid #dfe3ea; }
.rq-all { display: flex; gap: .55rem; align-items: center; font-weight: 700; color: #002B7C; }
.rq-n { color: #5c6980; font-size: .88rem; }
.rq-tpl { margin-left: auto; display: flex; gap: .5rem; align-items: center; font-size: .88rem; color: #5c6980; }
.rq-tpl select { padding: .4rem .55rem; border: 1px solid #dfe3ea; border-radius: 7px; font: inherit; max-width: 320px; }
.scrollx { overflow-x: auto; }
.rq-table { width: 100%; min-width: 760px; }
.rq-table td, .rq-table th { padding: .6rem .75rem; }
.rq-parked td { background: #fffaf1; }
.rq-warn { color: #8a5a12; font-size: .82rem; font-weight: 600; }
.rq-note { color: #5c6980; font-size: .88rem; line-height: 1.55; padding: .8rem 1rem; margin: 0; }
.rq-tokens { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0 0 1.2rem; }
.rq-token { font-family: ui-monospace, Menlo, monospace; font-size: .78rem; background: #eef1f6; color: #28344a;
            border-radius: 5px; padding: .2rem .45rem; }
.rq-token.sm { font-size: .72rem; }
.rq-token.bad { background: #fbe6e9; color: #b01224; }
.rq-tplform { border: 1px solid #dfe3ea; border-radius: 10px; padding: 1.2rem; background: #fff; margin-bottom: 1.5rem; }
.rq-tplgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: .9rem; }
.rq-tplform label { display: block; font-weight: 600; font-size: .9rem; }
.rq-tplform label.wide { grid-column: 1 / -1; margin-top: .9rem; }
.rq-tplform input[type=text], .rq-tplform input:not([type]), .rq-tplform input[type=file], .rq-tplform textarea {
  width: 100%; margin-top: .3rem; padding: .55rem .7rem; border: 1px solid #dfe3ea; border-radius: 7px; font: inherit; }
.rq-tplform textarea { font-family: ui-monospace, Menlo, monospace; font-size: .85rem; line-height: 1.5; }
.rq-upload { margin: .9rem 0; font-weight: 600; font-size: .9rem; }
.rq-actions { white-space: nowrap; }
.btn-sm { padding: .3rem .6rem; font-size: .82rem; }
.auth-sub { color: #5c6980; font-size: .92rem; line-height: 1.55; margin: -.4rem 0 1.1rem; }

/* ---- /quote chooser ---- */
.chooser { padding-top: 10px; }
.chooser-call { text-align: center; color: var(--gray); margin: 26px 0 40px; }

/* ---- wizard: one-page view toggle ---- */
.view-toggle { font-size: 14px; margin: 6px 0 0; }
.form-page form[data-view="full"] .step + .step { margin-top: 22px; }
