/* Self-hosted Montserrat — previously nothing loaded it at all in production
   (Masterhome.master never had a Google Fonts <link>, only the preview did),
   so every real page was silently falling back to system fonts. These are
   variable-weight files (one file legitimately covers 400/600/700/800 — not
   a mistake), pulled from Google Fonts and hosted locally in ~/Fonts/ instead
   of calling out to fonts.googleapis.com, so the site doesn't depend on a
   third party at runtime. Only latin + latin-ext subsets — this site has no
   Cyrillic/Vietnamese content. */
@font-face {
    font-family: "Montserrat";
    font-style: normal;
    font-weight: 400 800;
    font-display: swap;
    src: url("../Fonts/Montserrat-latin.woff2") format("woff2");
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: "Montserrat";
    font-style: normal;
    font-weight: 400 800;
    font-display: swap;
    src: url("../Fonts/Montserrat-latin-ext.woff2") format("woff2");
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: "Montserrat";
    font-style: italic;
    font-weight: 400 800;
    font-display: swap;
    src: url("../Fonts/Montserrat-Italic-latin.woff2") format("woff2");
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: "Montserrat";
    font-style: italic;
    font-weight: 400 800;
    font-display: swap;
    src: url("../Fonts/Montserrat-Italic-latin-ext.woff2") format("woff2");
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

html { scroll-behavior: smooth; }

/* Cross-fade between pages. Native same-origin MPA transitions — no JS, and
   browsers without support just navigate instantly. */
@view-transition { navigation: auto; }

::view-transition-old(root),
::view-transition-new(root) {
    animation-duration: 180ms;
    animation-timing-function: ease;
}

@media (prefers-reduced-motion: reduce) {
    @view-transition { navigation: none; }
}

* { box-sizing: border-box; }

html, body {
    margin: 0;
    padding: 0;
    background: #ffffff;
    color: #4E4E4E;
    font-family: "Montserrat", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-size: 16px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}

input, button, select, textarea { font-family: inherit; }

.link-btn {
    display: inline;
    padding: 0;
    border: none;
    background: none;
    color: #3377b9;
    font: inherit;
    text-decoration: underline;
    cursor: pointer;
}
.link-btn:focus-visible { outline: 3px solid #97C7FC; outline-offset: 3px; border-radius: 6px; }

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

a { color: #3377b9; }

p, li { font-size: 16px; line-height: 28px; }

.callout a,
.login-note a,
.login-help a,
.update-body a,
.result-card a,
.ack-card a,
.footer-copy a,
.kein-examples a,
.doc-card a,
.links-intro a,
.auditor-grid a,
.link-btn {
    background-color: transparent;
    padding: 1px 3px;
    margin: 0 -3px;
    border-radius: 3px;
    transition: background-color 0.18s ease-in-out;
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
}
.callout a:hover, .callout a:focus-visible,
.login-note a:hover, .login-note a:focus-visible,
.login-help a:hover, .login-help a:focus-visible,
.update-body a:hover, .update-body a:focus-visible,
.result-card a:hover, .result-card a:focus-visible,
.ack-card a:hover, .ack-card a:focus-visible,
.kein-examples a:hover, .kein-examples a:focus-visible,
.doc-card a:hover, .doc-card a:focus-visible,
.links-intro a:hover, .links-intro a:focus-visible,
.auditor-grid a:hover, .auditor-grid a:focus-visible,
.link-btn:hover, .link-btn:focus-visible {
    background-color: rgba(151, 199, 252, 0.5);
}

.footer-copy a:hover,
.footer-copy a:focus-visible {
    background-color: rgba(255, 255, 255, 0.22);
}

/* Declared after the highlight block, which also sets padding here. The extra
   vertical padding lifts the tap target past 24px; on an inline element it grows
   the hit area without changing line spacing. */
.link-btn { padding: 4px; margin: 0 -4px; }

.wrap {
    width: 100%;
    max-width: 1180px;
    margin: 0 auto;
    padding: 0 24px;
}


/* --- Claimant-portal notice ---------------------------------------------
   Cream / amber tokens lifted from the KCC KUIP page: #FFF3D7 ground with
   #A26016 for the link, which is the dark amber that carries contrast. */
/* --- Work Share calculator ---------------------------------------------- */
.calc {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    margin-top: 28px;
}
/* Grid items default to min-width: auto, so a nowrap table header inside
   .calc-inputs/.calc-results can hold its column open to the table's full
   intrinsic width and blow the whole page out horizontally. This lets the
   column shrink and hands overflow back to .table-wrapper's own scrollbar. */
.calc-inputs, .calc-results { min-width: 0; }
/* .doc-card h2 (below, same specificity: class+element) was winning by
   source order and overriding this with its 24px/35px + 32px-top-margin
   style — the exact same recurring specificity bug as .doc-card h3 further
   down. .doc-card .calc h2 outweighs it regardless of order, which is what
   was pushing "Your business" down out of alignment with "Results for your
   business" in the column beside it. */
.doc-card .calc h2 { margin-top: 0; font-size: 18px; line-height: 30px; }
/* Applies in both columns — .calc-inputs' "Current unemployment claim data"
   heading needs the same breathing room from the fields above it that
   .calc-results' second heading already gets. */
.doc-card .calc h2:not(:first-child) { margin-top: 32px; }
.calc .field { margin-bottom: 20px; }
.calc label { display: block; font-weight: 700; margin-bottom: 8px; color: #1A1A1A; }
.calc-actions { display: flex; flex-wrap: wrap; gap: 14px; margin: 24px 0 20px; }
.calc-actions .btn-login { width: auto; }
/* Same icon+card treatment as .result-alert (the "don't share your KEIN/
   password" warning on ObtainKEIN.aspx/ChangeYourPassword.aspx) instead of
   plain red text, so calculator validation errors get the same weight as
   every other warning on the site. :has() shows/hides the wrapper based on
   whether the JS-driven .alert-danger inside it actually has text — .alert-
   danger's own textContent assignment can't touch a sibling icon, so the
   icon has to live in a wrapper .calc-alert never gets overwritten by that. */
.calc-alert {
    display: none;
    align-items: center;
    gap: 14px;
    margin-top: 14px;
    padding: 14px 24px;
    border-radius: 14px;
    background: #fdecea;
}
.calc-alert:has(.alert-danger:not(:empty)) { display: flex; }
.calc-alert-icon {
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(192, 57, 43, 0.12);
}
.calc-alert-icon svg { width: 20px; height: 20px; }
.calc-alert .alert-danger { margin: 0; }
.calc-highlight td { background: #E8F2FB !important; font-weight: 700; color: #093B60; }
.calc-highlight-alt td { background: #FFF3D7 !important; font-weight: 700; color: #1A1A1A; }
.calc .responsive-table td:last-child { text-align: right; white-space: nowrap; font-weight: 600; }

/* Benefits Calculator: a single stacked column of label+input rows rather
   than the .calc two-column input/results grid used elsewhere, since there's
   no separate results panel — the eligibility outcome renders inline below
   the fields instead. */
.bc-inputs { max-width: 640px; margin-bottom: 32px; }
.calc-row-field {
    display: flex;
    align-items: center;
    gap: 20px;
    margin-bottom: 14px;
}
.calc-row-field label {
    flex: 0 0 110px;
    font-weight: 700;
    color: #1A1A1A;
}
.calc-row-field label sup { font-size: 0.7em; }
.calc-row-field .input { flex: 1 1 auto; max-width: 420px; }

.calc-eligibility {
    display: none;
    position: relative;
    overflow: hidden;
    margin-top: 24px;
    padding: 24px 28px 24px 38px;
    border-radius: 14px;
}
.calc-eligibility.is-visible { display: block; }
.calc-eligibility::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 8px;
}
.calc-eligibility h3 { margin: 0 0 10px; font-size: 18px; line-height: 26px; font-weight: 700; }
.calc-eligibility ul { margin: 0; padding-left: 20px; }
.calc-eligibility li { margin-bottom: 4px; color: #4E4E4E; }
.calc-eligibility--pass { background: #e3f3e9; }
.calc-eligibility--pass::before { background: #137a3f; }
.doc-card .calc-eligibility--pass h3 { color: #137a3f; }
.calc-eligibility--fail { background: #fdecea; }
.calc-eligibility--fail::before { background: #c0392b; }
.doc-card .calc-eligibility--fail h3 { color: #c0392b; }

@media (max-width: 600px) {
    .calc-row-field { align-items: flex-start; gap: 12px; }
    .calc-row-field label { flex-basis: 90px; }
}

.calc-results-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
}
.calc-results-head .calc-results-title { margin: 0; }
.calc-results h2:not(:first-child).calc-results-title { margin-top: 0; }
.print-link-btn { font-size: 14px; white-space: nowrap; }
.print-link-btn::before {
    content: "";
    display: inline-block;
    width: 15px; height: 15px;
    margin-right: 6px;
    vertical-align: -2px;
    background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M6 9V3h12v6M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2M6 14h12v7H6z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2'%3E%3Cpath d='M6 9V3h12v6M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2M6 14h12v7H6z'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* --- Resource pages ------------------------------------------------------ */
.breadcrumbs { max-width: 1180px; margin: 0 auto 14px; }
.breadcrumbs ol {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: 14px;
    line-height: 20px;
}
.breadcrumbs li { display: flex; align-items: center; gap: 8px; }
.breadcrumbs a {
    color: #3377b9;
    text-decoration: none;
    font-weight: 600;
}
.breadcrumbs a:hover, .breadcrumbs a:focus-visible {
    color: #093B60;
    text-decoration: underline;
}
.breadcrumbs .crumb-sep { color: #93A3B0; }
.breadcrumbs .crumb-current {
    color: #4E4E4E;
    font-weight: 700;
}
.doc-card {
    background: #ffffff;
    border-radius: 14px;
    box-shadow: 0 18px 45px rgba(6, 53, 122, 0.10);
    padding: 44px 48px;
    max-width: 1180px;
    margin: 0 auto;
}
/* Full-bleed navy header banner at the top of every resource page's card —
   holds the h1, the "Updated" badge, and the print link together, pulled out
   to the card's own edges with negative margins matching .doc-card's/
   .links-card's own padding (44px/48px), so it sits flush with the card's
   top corners and can share their 14px radius. Flat brand navy rather than
   the gov-bar/hero gradient — reads calmer on a page-heading bar than a big
   hero. .doc-card > .doc-header:first-child (not just .doc-header) —
   .doc-card > :first-child below sets margin-top: 0 and would otherwise win
   on specificity (two class-level selectors vs. one), cancelling the -44px
   pull-out; .doc-header is always the first element inside .doc-card/
   .links-card on every resource page, so this matches everywhere it needs to. */
.doc-card > .doc-header:first-child,
.links-card > .doc-header {
    margin: -44px -48px 28px;
    padding: 28px 48px 24px;
    background: #093B60;
    border-radius: 14px 14px 0 0;
}
.doc-header h1 {
    margin: 0 0 12px;
    font-size: 30px;
    line-height: 42px;
    font-weight: 700;
    color: #ffffff;
}
/* Light-on-navy variant — the plain .updated-badge (light blue pill on
   white) and .link-btn (blue text) both assume a white card background, so
   they need their own colors here to stay visible against the navy header.
   The badge drops its pill background/border entirely: it's sitting right
   in the header now, so it doesn't need its own visual weight to stand out
   the way it did floating on a plain white card — just plain text matching
   the print link's size/color, with enough margin below it to still read as
   a separate line from the print link rather than running together. */
.doc-header .updated-badge {
    /* Stays inline-flex (same text line as the print link that follows) —
       margin-right instead of margin-bottom, since vertical margin doesn't
       do anything between two inline-level boxes sharing a line anyway.
       vertical-align: middle — an inline-flex box's default baseline
       alignment doesn't line up with a plain inline element's text baseline
       (.print-link-btn next to it), which read as the print link sitting a
       few pixels lower on the line. */
    margin: 0 24px 0 0;
    padding: 0;
    background: none;
    border: none;
    border-radius: 0;
    color: #ffffff;
    font-size: 14px;
    font-weight: 400;
    vertical-align: middle;
}
.doc-header .print-link-btn {
    color: #ffffff;
    text-decoration: underline;
    vertical-align: middle;
}
.doc-header .print-link-btn:hover,
.doc-header .print-link-btn:focus-visible {
    background-color: rgba(255, 255, 255, 0.18);
}
.doc-card h2 {
    margin: 32px 0 12px;
    font-size: 24px;
    line-height: 35px;
    font-weight: 700;
    color: #1A1A1A;
}
.doc-card h3 {
    margin: 26px 0 10px;
    font-size: 18px;
    line-height: 30px;
    font-weight: 700;
    color: #093B60;
}
.doc-card p { margin: 0 0 16px; color: #4E4E4E; }
.doc-card ul, .doc-card ol { margin: 0 0 16px; padding-left: 22px; color: #4E4E4E; }
.doc-card li { margin-bottom: 8px; }
.doc-card > :first-child { margin-top: 0; }
.doc-card > :last-child { margin-bottom: 0; }

.updated-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0 0 18px;
    padding: 5px 12px 5px 10px;
    border-radius: 100px;
    background: #F3F9FF;
    border: 1px solid #DCEBFA;
    color: #093B60;
    font-size: 13px;
    font-weight: 600;
}
.updated-ico { width: 14px; height: 14px; flex: none; }

/* Callout for the dated notices that sit at the top of some legacy pages. */
.doc-notice {
    margin: 0 0 12px;
    padding: 14px 18px;
    background: #FFF3D7;
    border-left: 10px solid #E8A33D;
    border-radius: 8px;
    color: #1A1A1A;
    font-weight: 600;
}
.doc-notice:last-of-type { margin-bottom: 24px; }
/* Without this, a link inside a .doc-notice (like the fraud notice's "Fraud
   Reporting Form") falls back to the site's plain blue link color, which
   breaks up the notice's otherwise-uniform bold/dark text — other .doc-notice
   paragraphs with no link don't have this problem. Keeps the underline so
   it's still recognizable as a link. */
.doc-notice a { color: #1A1A1A; text-decoration: underline; }
.doc-notice a:hover, .doc-notice a:focus-visible { color: #1A1A1A; }
/* Fraud Reporting Form link (home.aspx): matches the hero yellow alert's
   uiclaimsportal.ky.gov link colors instead of .doc-notice a's dark text —
   .doc-notice a above needs beating on specificity, not just relying on
   .hero-callout-link alone. Same for the hover background: this link also
   sits inside .update-body (the accordion), and .update-body a:hover's light
   blue background (class+element, so higher specificity than
   .hero-callout-link:hover alone) was winning over the intended amber tint. */
.doc-notice a.hero-callout-link,
.doc-notice a.hero-callout-link:hover,
.doc-notice a.hero-callout-link:focus-visible { color: #A26016; }
.update-body a.hero-callout-link:hover,
.update-body a.hero-callout-link:focus-visible { background-color: rgba(162, 96, 22, 0.12); }
/* Scoped to the fraud notice on home.aspx specifically — the only .doc-notice
   sitting inside an accordion body — so this doesn't also affect the other
   resource pages reusing .doc-notice near the top of a plain .doc-card. */
.update-body .doc-notice { margin: 20px 0 24px; }
.doc-caption { margin: 0 0 8px; font-weight: 700; color: #1A1A1A; }
.doc-footnote { font-size: 14px; line-height: 22px; color: #4E4E4E; }

/* Tables scroll inside their own box rather than pushing the page wide. */
.table-wrapper {
    width: 100%;
    margin: 0 0 24px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    background: #ffffff;
}
.responsive-table { width: 100%; border-collapse: collapse; }
.responsive-table caption {
    padding: 14px 16px;
    text-align: left;
    font-weight: 700;
    color: #1A1A1A;
    background: #F3F9FF;
    border-bottom: 1px solid #e2e8f0;
}
.responsive-table th {
    background: #F3F9FF;
    color: #093B60;
    text-align: left;
    padding: 14px 16px;
    font-size: 15px;
    font-weight: 700;
    white-space: nowrap;
}
.responsive-table td {
    padding: 14px 16px;
    border-top: 1px solid #e2e8f0;
    vertical-align: top;
    color: #4E4E4E;
    font-size: 15px;
    line-height: 24px;
}
.responsive-table tbody tr:nth-child(even) td { background: #FAFCFF; }

/* --- Related Websites ---------------------------------------------------- */
.links-card {
    background: #ffffff;
    border-radius: 14px;
    box-shadow: 0 18px 45px rgba(6, 53, 122, 0.10);
    padding: 44px 48px;
    max-width: 1180px;
    margin: 0 auto;
}
.links-intro { margin: 0 0 28px; color: #4E4E4E; }

.link-grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
}
.link-card { background-color: #F3F9FF; }
.link-card {
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 16px 20px;
    background: #F3F9FF;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    color: #1A1A1A;
    font-size: 15px;
    font-weight: 600;
    line-height: 22px;
    text-decoration: none;
    transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}
.link-card:hover,
.link-card:focus-visible {
    border-color: #093B60;
    transform: translateY(-2px);
    box-shadow: 0 8px 22px rgba(6, 53, 122, 0.12);
}
.link-card .btn-arrow { flex: 0 0 auto; }
.link-card-note {
    display: block;
    margin-top: 2px;
    font-size: 13px;
    font-weight: 400;
    font-style: normal;
    color: #4E4E4E;
}

/* --- Nested contact sections inside a branch card ------------------------ */
.sub-list { display: flex; flex-direction: column; gap: 10px; margin-top: 22px; }

.sub-card {
    background: #F3F9FF;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    overflow: hidden;
}
.sub-card > summary {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 14px 18px;
    /* 9px, not the card's 10px: .sub-card's 1px border shrinks the radius the
       overflow: hidden actually clips to. At 10px the hover ring's corners get
       shaved off. */
    border-radius: 9px;
    transition: background-color 0.2s ease, box-shadow 0.2s ease;
}
.sub-card[open] > summary { border-radius: 9px 9px 0 0; }
.sub-card > summary::-webkit-details-marker { display: none; }
/* inset, not an outer ring: .sub-card sets overflow: hidden, which would
   clip a normal box-shadow away entirely. */
.sub-card > summary:hover {
    background: #E8F2FB;
    box-shadow: inset 0 0 0 1px rgba(151, 199, 252, 0.85);
}
/* Closed only, same reasoning as .branch-card[open]: once it is open the
   hover reads as a state change rather than an affordance. */
.sub-card[open] > summary:hover {
    background: transparent;
    box-shadow: none;
}
@media (prefers-reduced-motion: reduce) {
    .sub-card > summary { transition: none; }
}
.sub-card > summary:focus-visible { outline: 3px solid #97C7FC; outline-offset: -3px; border-radius: 6px; }
.sub-heading {
    margin: 0;
    font-size: 16px;
    line-height: 28px;
    font-weight: 700;
    color: #093B60;
}
.sub-body { padding: 0 18px 18px; }
.sub-duties {
    margin: 14px 0 0;
    padding-left: 20px;
    color: #4E4E4E;
}
.sub-duties li { margin-bottom: 6px; }
.sub-note { margin: 14px 0 0; color: #4E4E4E; }

/* --- Field auditor directory (modal) ------------------------------------ */
.auditor-group { margin-bottom: 26px; }
.auditor-group:last-child { margin-bottom: 0; }
.auditor-group h3 {
    margin: 0 0 12px;
    font-size: 18px;
    line-height: 30px;
    font-weight: 700;
    color: #1A1A1A;
}
.auditor-grid {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
}
/* Same LKAM-8433 fix as .contact-text/.contact-val — same Firefox mid-word-
   break risk here, not yet reported but same root cause. */
.auditor-grid li {
    padding: 14px 16px;
    background: #F3F9FF;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    font-size: 14px;
    line-height: 22px;
    color: #4E4E4E;
    min-width: 0;
}
.auditor-grid a[href^="mailto:"] { overflow-wrap: break-word; word-break: normal; }
.auditor-name {
    display: block;
    font-weight: 700;
    color: #1A1A1A;
}
.auditor-map-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    margin-left: 28px;
    vertical-align: -1px;
    border-radius: 4px;
    color: #3d84d6;
}
.auditor-map-link svg { width: 17px; height: 17px; }
.auditor-map-link:hover,
.auditor-map-link:focus-visible { background: #DCEBFA; color: #093B60; }
.auditor-map-link:focus-visible { outline: 2px solid #093B60; outline-offset: 1px; }

.alert-banner {
    padding: 16px 0;
}
/* Variants are set per-alert in Alerts.xml via type="warning|info". */
.alert-banner--warning p,
.alert-banner--info p { text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); }

.alert-banner--warning { background: linear-gradient(135deg, #FFF8E6 0%, #FFF3D7 100%); }
.alert-banner--warning .alert-icon,
.alert-banner--warning a { color: #A26016; }
.alert-banner--warning a:hover,
.alert-banner--warning a:focus-visible { background-color: rgba(162, 96, 22, 0.12); }

.alert-banner--info { background: linear-gradient(135deg, #F3F9FF 0%, #E8F2FB 100%); }
.alert-banner--info .alert-icon,
.alert-banner--info a { color: #093B60; }
.alert-banner--info a:hover,
.alert-banner--info a:focus-visible { background-color: rgba(151, 199, 252, 0.5); }

/* Full-width flat strip beneath the gov-bar, not a contained card — reads
   like a browser-level notice rather than page content. */
.alert-banner--maintenance {
    background: linear-gradient(135deg, #B84A2E 0%, #A8402A 100%);
    min-height: 98px;
    display: flex;
    align-items: center;
    box-sizing: border-box;
    padding: 8px 0;
}
.alert-banner--maintenance .alert-banner-inner {
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    width: 100%;
    gap: 2px;
}
@media (max-width: 600px) {
    .alert-banner--maintenance .alert-banner-inner {
        padding: 14px 24px;
    }
}
.alert-banner--maintenance .alert-maintenance-label {
    margin: 0;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.18);
    font-weight: 700;
    font-size: 20px;
    color: #ffffff;
}
.alert-banner--maintenance .alert-maintenance-body {
    margin: 0;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.18);
    font-size: 16px;
    font-weight: 500;
    color: #ffffff;
}
.alert-maintenance-body a { color: #ffffff; text-decoration: underline; }
.alert-maintenance-body a:hover,
.alert-maintenance-body a:focus-visible { background-color: rgba(255, 255, 255, 0.15); }
.alert-banner-inner {
    display: flex;
    align-items: flex-start;
    gap: 14px;
}
.alert-icon {
    flex: 0 0 auto;
    width: 22px;
    height: 22px;
    margin-top: 1px;
}
.alert-banner p {
    margin: 0;
    font-size: 16px;
    line-height: 24px;
    font-weight: 500;
    color: #1A1A1A;
}
.alert-banner a {
    font-weight: 600;
    text-decoration: underline;
    background-color: transparent;
    border-radius: 3px;
    padding: 1px 3px;
    margin: 0 -3px;
    transition: background-color 0.2s ease;
}
@media (prefers-reduced-motion: reduce) {
    .alert-banner a { transition: none; }
}

/* Standard Kentucky state-site identifier bar, above the site header on
   every page, so it's clear this is an official Commonwealth site before
   anything else on the page. */
.gov-bar {
    background: linear-gradient(115deg, #072241 0%, #0d3a63 48%, #17558e 100%);
    color: #ffffff;
    padding: 9px 0;
}
.gov-bar-text { font-size: 13px; line-height: 18px; }
.gov-bar-link {
    /* 20% larger than the surrounding 13px text. */
    font-size: 1.2em;
    font-weight: 800;
    margin-right: 6px;
    color: #ffffff;
    border-radius: 3px;
    padding: 0 2px;
    margin-left: -2px;
    /* The underline is always there geometrically; toggling text-decoration
       itself doesn't animate at all in any browser (it's an on/off switch,
       not an interpolable value) — so instead it's transparent at rest and
       fades to visible via a transition on color, which does animate smoothly. */
    text-decoration: underline;
    text-decoration-color: transparent;
    transition: text-decoration-color 0.2s ease;
}
.gov-bar-link:hover,
.gov-bar-link:focus-visible { text-decoration-color: currentColor; }
.gov-bar-link:focus-visible { outline: 2px solid #97C7FC; outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {
    .gov-bar-link { transition: none; }
}

.site-header {
    background: #ffffff;
    border-bottom: 1px solid #e7ebf1;
}
.header-inner {
    /* Positioning context for .nav-mega (see .nav-resources below) so the
       dropdown anchors to the full header width, not to the narrow Resources
       button itself — otherwise a wide panel opening from a button that
       isn't near the right edge overflows off-screen. */
    position: relative;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 24px;
    padding-top: 27px;
    padding-bottom: 27px;
    flex-wrap: wrap;
}
/* Desktop only (mobile's hamburger-collapsed header stays as-is): ~20% more
   breathing room above/below the logo and nav links. */
@media (min-width: 861px) {
    .header-inner { padding-top: 32px; padding-bottom: 32px; }
}
.brand-logo {
    display: inline-flex;
    align-items: center;
    text-decoration: none;
}
/* Logo is 115x32 — wordmark only, no descender text — so it sits shorter than
   the old lockup did. */
.brand-svg { height: 38px; width: auto; display: block; }

.main-nav {
    display: flex;
    align-items: center;
    gap: 40px;
    flex-wrap: wrap;
    margin-left: auto;
}
.main-nav a {
    position: relative;
    color: #1a2b3c;
    text-decoration: none;
    font-weight: 600;
    font-size: 16px;
    padding-bottom: 3px;
    transition: color 0.2s ease;
}
/* Underline sweeps in from the left, then keeps travelling out to the right on
   exit rather than retracting the way it came. The origin flip is instant — only
   the scale transitions — which is what sells the one-way motion. */
.main-nav a::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2px;
    background: currentColor;
    border-radius: 1px;
    transform: scaleX(0);
    transform-origin: right center;
    transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.main-nav a:hover,
.main-nav a:focus-visible { color: #093B60; }
.main-nav a:hover::after,
.main-nav a:focus-visible::after {
    transform: scaleX(1);
    transform-origin: left center;
}

/* --- Resources dropdown --------------------------------------------------
   Opens on hover, but aria-expanded is driven by redesign.js so keyboard and
   touch get the same menu — hover alone would strand both. */
.nav-item { position: relative; }
/* Cancels the rule above just for the Resources dropdown, so .nav-mega's
   position: absolute bubbles up to .header-inner (full header width) instead
   of this element (only as wide as the "Resources" button) — see .nav-mega. */
.nav-resources { position: static; }

.nav-dropdown-btn {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 0 0 3px;
    border: none;
    background: none;
    color: #1a2b3c;
    font-size: 16px;
    font-weight: 600;
    cursor: pointer;
    transition: color 0.2s ease;
}
.nav-dropdown-btn:hover,
.nav-dropdown-btn[aria-expanded="true"] { color: #093B60; }
.nav-dropdown-btn:focus-visible { outline: 3px solid #97C7FC; outline-offset: 3px; border-radius: 6px; }

.nav-caret {
    width: 11px;
    height: 7px;
    flex: 0 0 auto;
    transition: transform 0.25s ease;
}
.nav-dropdown-btn[aria-expanded="true"] .nav-caret { transform: rotate(180deg); }

.nav-dropdown {
    position: absolute;
    top: calc(100% + 14px);
    /* Right-aligned: Resources is the last nav item, so opening leftward keeps
       the panel on screen. */
    right: 0;
    z-index: 200;
    min-width: 300px;
    margin: 0;
    padding: 8px;
    list-style: none;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    box-shadow: 0 12px 30px rgba(6, 53, 122, 0.16);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px);
    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
}
/* A hover bridge across the gap, so the menu doesn't close on the way down. */
.nav-dropdown::before {
    content: "";
    position: absolute;
    top: -14px;
    left: 0;
    right: 0;
    height: 14px;
}
.nav-dropdown-btn[aria-expanded="true"] + .nav-dropdown {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.nav-dropdown a {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border-radius: 6px;
    color: #1A1A1A;
    font-size: 15px;
    font-weight: 500;
    line-height: 22px;
    text-decoration: none;
    transition: background-color 0.15s ease, color 0.15s ease;
}
.doc-badge {
    flex: none;
    padding: 2px 6px;
    border-radius: 4px;
    background: #E8F2FB;
    color: #093B60;
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 0.03em;
    line-height: 15px;
}
.nav-dropdown a:hover,
.nav-dropdown a:focus-visible { background: #F3F9FF; color: #093B60; }
/* The sweep belongs to the top-level nav only — on a full-width menu row it
   reads as a stray rule rather than an underline. */
.nav-dropdown a::after { content: none; }

@media (prefers-reduced-motion: reduce) {
    .nav-dropdown, .nav-caret { transition: none; }
}

/* --- Resources mega-menu ---------------------------------------------------
   Same open/close mechanics and hover bridge as .nav-dropdown above, but a
   grid of categorized columns instead of one long alphabetical list. */
.nav-mega {
    position: absolute;
    /* .nav-resources cancels .nav-item's own position: relative (see that
       rule), so this positions against .header-inner — "100%" is the bottom
       of the whole header bar, not just the button. A small gap here is
       enough for a sliver of the hero's navy to show through above the menu. */
    top: calc(100% + 10px);
    right: 0;
    z-index: 200;
    display: grid;
    grid-template-columns: repeat(5, minmax(172px, 1fr));
    gap: 4px 22px;
    width: max-content;
    max-width: min(1060px, 92vw);
    margin: 0;
    padding: 32px 24px 20px;
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    box-shadow: 0 12px 30px rgba(6, 53, 122, 0.16);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px);
    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
}
/* Covers the real travel gap between the Resources button and the menu, not
   just the 10px visual gap above .nav-mega itself — .nav-mega positions
   against .header-inner (see the comment above), so the actual empty space
   the cursor crosses also includes the header's own bottom padding
   (27-32px). A 14px bridge only covered part of that, so moving from the
   button into the menu could cross real empty space partway down and close
   the menu before the cursor ever reached it. */
.nav-mega::before {
    content: "";
    position: absolute;
    top: -40px;
    left: 0;
    right: 0;
    height: 40px;
}
.nav-dropdown-btn[aria-expanded="true"] + .nav-mega {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}
.nav-mega-col ul { list-style: none; margin: 0; padding: 0; }
.nav-mega-heading {
    /* margin-top: 0 on every column (not just :first-child) so every heading's
       top edge sits on the same grid row, regardless of how many lines the
       others wrap to. min-height is sized for the tallest heading here (two
       lines, e.g. "Tax Rates & Wage Base") so the border-bottom — the
       underline — lands on the same y in every column too, one-line headings
       included, instead of hugging shorter text. */
    display: flex;
    align-items: center;
    gap: 7px;
    min-height: 40px;
    margin: 0 0 4px;
    padding: 0 14px 8px;
    line-height: 16px;
    border-bottom: 1px solid #e2e8f0;
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: #4E4E4E;
}
.nav-mega-ico { flex: none; width: 15px; height: 15px; color: #6b7f8f; }
.nav-mega a {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 14px;
    border-radius: 6px;
    color: #1A1A1A;
    font-size: 14px;
    font-weight: 500;
    line-height: 20px;
    text-decoration: none;
    background-color: rgba(151, 199, 252, 0);
    box-shadow: 0 0 0 0 rgba(151, 199, 252, 0);
    transition: background-color 0.2s ease, box-shadow 0.2s ease, color 0.15s ease;
}
.nav-mega a:hover,
.nav-mega a:focus-visible {
    color: #093B60;
    background-color: rgba(151, 199, 252, 0.22);
    box-shadow: 0 0 0 1px rgba(151, 199, 252, 0.4);
}
.nav-mega a::after { content: none; }
@media (prefers-reduced-motion: reduce) {
    .nav-mega a { transition: none; }
}

.nav-mega-footer {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 6px;
    padding-top: 14px;
    border-top: 1px solid #e2e8f0;
}
.nav-mega-hint-text { color: #4E4E4E; font-size: 13px; }
.nav-mega-search-hint {
    padding: 7px 18px;
    border: 1.5px solid #093B60;
    border-radius: 100px;
    background: none;
    color: #093B60;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
}
.nav-mega-search-hint:hover {
    background: #093B60;
    color: #ffffff;
}
.nav-mega-search-hint:focus-visible { outline: 3px solid #97C7FC; outline-offset: 2px; }

@media (prefers-reduced-motion: reduce) {
    .nav-mega { transition: none; }
}

/* --- Site search ----------------------------------------------------------
   Same open/close mechanics as the Resources dropdown (aria-expanded driven,
   adjacent-sibling CSS), but click/tap only — a search box popping open on
   hover would be a constant annoyance. */
.nav-search { margin-left: 4px; }
.nav-search-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: none;
    color: #1a2b3c;
    cursor: pointer;
    transition: color 0.2s ease, background-color 0.2s ease;
}
.nav-search-btn:hover,
.nav-search-btn[aria-expanded="true"] { color: #093B60; background: #F3F9FF; }
.nav-search-btn:focus-visible { outline: 3px solid #97C7FC; outline-offset: 2px; }
.search-ico { width: 18px; height: 18px; }

.site-search-panel {
    position: absolute;
    top: calc(100% + 14px);
    right: 0;
    z-index: 200;
    width: min(380px, 88vw);
    padding: 14px;
    background: #ffffff;
    /* Thin/subtle used to blend in when this drops down over the light hero
       cards behind it, so it needs a harder edge, not just a shadow, to read
       as a distinct layer above whatever's behind it. */
    border: 2px solid #093B60;
    border-radius: 12px;
    box-shadow: 0 20px 45px rgba(4, 28, 56, 0.45);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-6px);
    transition: opacity 0.18s ease, transform 0.18s ease, visibility 0.18s;
}
.nav-search-btn[aria-expanded="true"] + .site-search-panel {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}
.site-search-form {
    display: flex;
    align-items: center;
    /* Fixed height rather than letting the pill's height derive from the
       input's line-height — ties every child (icon, input, close button) to
       one known box so centering can't drift a few px with font metrics. */
    height: 48px;
    gap: 10px;
    padding: 0 6px 0 14px;
    border: 1.5px solid #cfe0f0;
    border-radius: 100px;
    background: #F8FBFF;
}
.site-search-form:focus-within { border-color: #093B60; }
.site-search-form .search-ico { flex: none; color: #6b7f8f; }
.site-search-form input[type="search"] {
    flex: 1;
    min-width: 0;
    height: 100%;
    padding: 0;
    border: none;
    background: none;
    font: inherit;
    font-size: 15px;
    line-height: normal;
    color: #1A1A1A;
}
.site-search-form input[type="search"]:focus { outline: none; }
.site-search-form input[type="search"]::-webkit-search-cancel-button { display: none; }
.site-search-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    flex: none;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: none;
    color: #6b7f8f;
    cursor: pointer;
}
.site-search-close svg { width: 12px; height: 12px; }
.site-search-close:hover,
.site-search-close:focus-visible { color: #093B60; background: #E8F2FB; }

.site-search-results {
    margin: 8px 0 0;
    padding: 0 4px;
    list-style: none;
    max-height: 340px;
    overflow-y: auto;
}
/* No query typed yet means no <li> children — collapse the gap this would
   otherwise leave below the search box before there's anything to show. */
.site-search-results:empty { margin-top: 0; }
.site-search-results li + li { margin-top: 2px; }
.site-search-results a {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 9px 12px;
    border-radius: 8px;
    text-decoration: none;
    color: #1A1A1A;
}
.site-search-results a:hover { background: #F3F9FF; }
/* These links live inside .main-nav (so the search box can also sit inline
   in the mobile menu), which means they'd otherwise inherit its underline
   sweep on hover. The light blue background alone is the intended effect
   here, so that's switched off. */
.site-search-results a::after { content: none; }
/* Negative offset draws the ring inside the link's own box instead of past its
   edge. overflow-y: auto here forces overflow-x to compute as auto too (per
   spec, when one axis scrolls the other can't stay visible), so any ring drawn
   outside the link's box was getting clipped by the scroll container. */
.site-search-results a:focus-visible {
    background: #F3F9FF;
    outline: 3px solid #093B60;
    outline-offset: -3px;
}
.site-search-results .result-title { font-size: 14px; font-weight: 700; color: #093B60; }
.site-search-results .result-title mark {
    background: #FFF3D7;
    color: inherit;
    border-radius: 2px;
}
.site-search-results .result-hint { font-size: 12px; color: #4E4E4E; }

.site-search-empty { margin: 10px 4px 2px; font-size: 13px; color: #4E4E4E; }

@media (prefers-reduced-motion: reduce) {
    .site-search-panel { transition: none; }
}

/* --- Search results page --------------------------------------------------- */
.search-results-summary { color: #4E4E4E; margin: 0 0 4px; }
.search-results-summary #searchQueryText { font-weight: 700; color: #1A1A1A; }
.search-results-count { color: #4E4E4E; font-size: 14px; margin: 0 0 20px; }
.search-results-list { list-style: none; margin: 0; padding: 0; }
.search-results-list:focus { outline: none; }
.search-results-list li + li { margin-top: 10px; }
.search-results-list a {
    display: block;
    /* Negative margin equal to the horizontal padding keeps the card's
       hit area and border wide, but the text inside lands flush with the
       heading and count above instead of sitting 20px further right. */
    margin: 0 -20px;
    padding: 16px 20px;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    text-decoration: none;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.search-results-list a:hover,
.search-results-list a:focus-visible {
    border-color: #093B60;
    box-shadow: 0 6px 18px rgba(6, 53, 122, 0.10);
}
.search-results-list .result-title { display: block; font-size: 17px; font-weight: 700; color: #093B60; margin-bottom: 4px; }
.search-results-list .result-title mark { background: #FFF3D7; color: inherit; border-radius: 2px; }
.search-results-list .result-hint { display: block; font-size: 14px; color: #4E4E4E; }

.search-results-pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin-top: 28px;
}
.search-page-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 1px solid #e2e8f0;
    border-radius: 50%;
    background: #ffffff;
    color: #093B60;
    cursor: pointer;
}
.search-page-btn svg { width: 12px; height: 12px; }
.search-page-btn:hover:not(:disabled) { background: #F3F9FF; border-color: #093B60; }
.search-page-btn:focus-visible { outline: 3px solid #97C7FC; outline-offset: 2px; }
.search-page-btn:disabled { color: #b7c2cd; cursor: default; }
.search-page-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    min-width: 36px;
    height: 36px;
    padding: 0 6px;
    border: 1px solid transparent;
    border-radius: 50%;
    background: none;
    color: #093B60;
    font-size: 14px;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
}
.search-page-number:hover { background: #F3F9FF; }
.search-page-number:focus-visible { outline: 3px solid #97C7FC; outline-offset: 2px; }
.search-page-number.is-current {
    background: #093B60;
    border-color: #093B60;
    color: #ffffff;
    cursor: default;
}

.skip-link {
    position: absolute;
    left: -9999px;
    top: 0;
    background: #093B60;
    color: #ffffff;
    padding: 10px 16px;
    border-radius: 0 0 8px 0;
    z-index: 1000;
}
.skip-link:focus { left: 0; }
main:focus { outline: none; }
/* [data-autofocus] headings (Choose a New Password, Security Questions,
   Your New KEIN/Activation Code, etc.) get focus() called on them via
   initPanelFocus() in redesign.js purely so screen readers announce the new
   panel — they're tabindex="-1", never reachable by an actual Tab press, so
   suppressing the visible ring doesn't affect real keyboard navigation. Left
   as-is it read as an odd ring around a plain, non-interactive heading. */
[data-autofocus]:focus-visible { outline: none; }

/* The checkbox itself (.nav-toggle) drives the CSS-only mobile menu via
   :checked — .nav-toggle-btn below is its visible label/hamburger icon. The
   raw input had no rule of its own anywhere, so it rendered as a bare native
   checkbox in the header at every width (visible next to the logo even on
   desktop) instead of being hidden behind its label. Hidden the same way
   .sr-only hides content elsewhere: kept in the accessibility tree and
   focusable, just not rendered as a visible box. */
.nav-toggle {
    position: absolute;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    overflow: hidden;
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    white-space: nowrap;
    border: 0;
}

.nav-toggle-btn {
    display: none;
    position: relative;
    width: 44px;
    height: 44px;
    padding: 10px;
    border: none;
    background: transparent;
    border-radius: 8px;
    cursor: pointer;
}
.nav-toggle-btn:focus-visible { outline: 3px solid #97C7FC; outline-offset: 3px; border-radius: 6px; }

.nav-toggle-btn .bar {
    position: absolute;
    left: 10px;
    width: 24px;
    height: 3px;
    background: #093B60;
    border-radius: 2px;
    transition: transform 0.28s cubic-bezier(0.4, 0, 0.2, 1),
                opacity 0.18s ease;
}
.nav-toggle-btn .bar:nth-child(1) { top: 14px; }
.nav-toggle-btn .bar:nth-child(2) { top: 21px; }
.nav-toggle-btn .bar:nth-child(3) { top: 28px; }

.nav-toggle-btn[aria-expanded="true"] .bar:nth-child(1) {
    transform: translateY(7px) rotate(45deg);
}
.nav-toggle-btn[aria-expanded="true"] .bar:nth-child(2) {
    opacity: 0;
    transform: scaleX(0.4);
}
.nav-toggle-btn[aria-expanded="true"] .bar:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg);
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    .nav-toggle-btn .bar { transition: none; }
}

.hero {
    background: linear-gradient(180deg, #F3F9FF 0%, #E8F2FB 100%);
    padding: 56px 0 64px;
}
/* Double breathing room above/below the white login card specifically
   (Obtain Activation Code, Forgot/Change Password, Wage Audit), without
   touching .hero on the resource pages, which don't have a .login-card.
   Desktop only: doubled top/bottom padding reads as a lot of empty space
   on a phone screen, so mobile keeps the original .hero padding. */
@media (min-width: 861px) {
    .hero:has(.login-card),
    /* Result screens (Password Reset, Password Changed, KEIN/Activation
       Code result) sit right after a .login-card step in the same flow —
       same padding so the flow doesn't visibly shrink on its last screen. */
    .hero:has(.result-card),
    /* Acknowledgment.aspx uses its own .ack-section rather than .hero (it's
       not part of the .hero:has() selector above at all), but it's the same
       kind of single white card in the middle of this same login flow, so it
       gets the same breathing room instead of the plain default padding.
       section.ack-section (not just .ack-section) so this reliably beats the
       plain .ack-section base rule further down the file — same specificity
       otherwise means source order decides, and the base rule sits later. */
    section.ack-section {
        padding: 112px 0 128px;
    }
    /* Same idea as the login card above, but dialed back 40% (112/128 * 0.6)
       since the resource pages read as too much dead space at the full amount. */
    .hero:has(.doc-card),
    .hero:has(.links-card) {
        padding: 67px 0 77px;
    }
}

.login-card {
    background: #ffffff;
    border-radius: 14px;
    box-shadow: 0 18px 45px rgba(6, 53, 122, 0.10);
    padding: 44px 48px;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    gap: 40px;
    align-items: start;
    max-width: 900px;
    margin: 0 auto;
}

.login-intro h1 {
    margin: 0 0 16px;
    font-size: 30px;
    font-weight: 700;
    color: #1A1A1A;
    line-height: 42px;
}
.login-intro p { margin: 0 0 26px; color: #4E4E4E; }
/* align-items keeps each link only as wide as its text — without it the links
   stretch to the column width and the hover highlight paints the whole row. */
.login-help { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.login-help a { text-decoration: underline; font-size: 15px; }

.login-divider { width: 1px; background: #e2e8f0; align-self: stretch; }

.login-form .field { margin-bottom: 20px; }
.login-form label {
    display: block;
    font-weight: 700;
    margin-bottom: 8px;
    color: #1A1A1A;
}
.input {
    width: 100%;
    padding: 12px 14px;
    border: 1px solid #cfd9e6;
    border-radius: 8px;
    background: #F3F9FF;
    /* 16px minimum: iOS Safari zooms the page when a smaller field takes focus. */
    font-size: 16px;
    color: #1A1A1A;
}
.input:focus {
    outline: none;
    border-color: #093B60;
    box-shadow: 0 0 0 3px rgba(9, 59, 96, 0.12);
    background: #ffffff;
}
.input::placeholder { color: #5c6b80; opacity: 1; }

.btn-login {
    display: inline-block;
    width: 100%;
    padding: 14px 28px;
    min-height: 44px;
    background: #093B60;
    color: #ffffff;
    border: none;
    border-radius: 88px;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}
.btn-login:hover {
    background: #002459;
    transform: scale(1.04);
    box-shadow: 0 6px 16px rgba(6, 53, 122, 0.25);
}
.btn-login:focus-visible,
.btn-cancel:focus-visible,
.kuip-btn:focus-visible,
.brand-logo:focus-visible {
    outline: 3px solid #97C7FC;
    outline-offset: 3px;
    border-radius: 6px;
}

/* Required-field marker. Decorative only — aria-required on the input is what
   actually conveys the state, so the glyph is aria-hidden in the markup. */
.req { color: #c0392b; font-weight: 700; }

.alert-danger { color: #c0392b; font-weight: 600; }
.alert-required { color: #c0392b; font-size: 13px; }
.login-error { margin: 0 0 6px; min-height: 0; }

.login-note {
    max-width: 760px;
    margin: 26px auto 0;
    background: #F3F9FF;
    color: #3a4a63;
    border-radius: 10px;
    padding: 16px 22px;
    font-size: 14px;
}
.login-note a { text-decoration: underline; }
.login-note ul { margin: 4px 0 0; padding-left: 20px; }
.login-note li { margin-bottom: 4px; }
/* Password-reuse warning on ForgotYourPassword.aspx's reset step: reuses
   .result-alert (same red card + warning-triangle icon as the "don't share
   your KEIN" notice on ObtainKEIN.aspx's result screen) instead of plain red
   text, for the same warning treatment everywhere it appears. Overrides
   .result-alert's own fit-content/centered sizing to span the full card
   width like the .login-note rules box above it, and spans the grid the
   same way .login-card .login-note does below. */
.login-note-warning {
    width: auto;
    max-width: none;
    margin: 14px 0 0;
}
.login-card .login-note-warning { grid-column: 1 / -1; }

/* KEIN pill on ForgotYourPassword.aspx's reset step, so the account being
   reset stands out from the surrounding paragraph text instead of reading as
   just another sentence. */
.kein-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 4px 0 14px;
    padding: 7px 16px;
    border-radius: 88px;
    background: #E8F2FB;
    color: #093B60;
    font-size: 15px;
    font-weight: 700;
}
.kein-pill-label {
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: #3d84d6;
}

.login-card .login-note {
    grid-column: 1 / -1;
    max-width: none;
    margin: 0;
    background: #F3F9FF;
}

.kuip { background: #ffffff; padding: 60px 0; }

.kuip-card {
    /* KUIPInfoCard.svg supplies the gradient + decorative circles; the linear-gradient
       is a fallback color in case the asset fails to load. Path is relative to this
       stylesheet's location (~/Redesign/redesign.css). */
    background: linear-gradient(135deg, #17548c 0%, #0f3c68 100%);
    background-image: url("../Images/KUIPInfoCard.svg"), linear-gradient(135deg, #17548c 0%, #0f3c68 100%);
    background-size: cover, cover;
    background-position: center, center;
    background-repeat: no-repeat, no-repeat;
    border-radius: 16px;
    padding: 48px 52px;
    color: #ffffff;
    display: grid;
    grid-template-columns: 1.4fr 1fr;
    gap: 44px;
    align-items: center;
}

.kuip-badge {
    display: inline-block;
    background: rgba(255, 255, 255, 0.14);
    color: #dbe8f6;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-size: 12px;
    font-weight: 700;
    padding: 7px 14px;
    border-radius: 6px;
    margin-bottom: 20px;
}
.kuip-copy h2 { margin: 0 0 16px; font-size: 30px; font-weight: 700; line-height: 1.15; }
.kuip-copy h2 em { font-style: italic; }
.kuip-copy p { margin: 0 0 26px; color: #d6e3f1; }

.kuip-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

.kuip-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: #ffffff;
    color: #093B60;
    text-decoration: none;
    font-size: 15px;
    font-weight: 600;
    padding: 14px 28px;
    min-height: 44px;
    border-radius: 88px;
}
.kuip-btn:hover { background: #eaf2fb; }

/* Arrow.svg — shared chevron for any "go here next" link. The asset's stroke is
   #093B60, so it belongs on light backgrounds only. */
.btn-arrow {
    width: 11px;
    height: 11px;
    flex: 0 0 auto;
    display: block;
    transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.kuip-btn:hover .btn-arrow,
.kuip-btn:focus-visible .btn-arrow { transform: translateX(3px); }

@media (prefers-reduced-motion: reduce) {
    .btn-arrow { transition: none; }
}

.kuip-features { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px; }
.kuip-features li {
    background: rgba(255, 255, 255, 0.10);
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 10px;
    padding: 16px 18px;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 14px;
}
.kuip-feature-ico {
    flex: 0 0 auto;
    width: 44px;
    height: 44px;
    display: block;
}
.kuip-feature-text { display: flex; flex-direction: column; gap: 3px; }
.kuip-feature-title { font-weight: 700; font-size: 16px; }
.kuip-feature-desc { color: #cfddee; font-size: 14px; }

.site-footer {
    background: linear-gradient(115deg, #072241 0%, #0d3a63 48%, #17558e 100%);
    color: #ffffff;
    padding: 26px 0;
}
.footer-inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
}
.footer-left { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; }
.footer-teamky { height: 50px; width: auto; filter: brightness(0) invert(1); }
.footer-logo { width: 120px; height: auto; }
/* Same 50px logo reads noticeably bigger here than on the public site, since
   there it sits next to the wider Unbridled Spirit logo, which gives it a
   size reference and fills the row — without that neighbor, it needs to be
   smaller on its own to match how it visually reads on ui.ky.gov. */
.site-footer--internal .footer-teamky { height: 34px; }
.footer-copy {
    display: flex;
    flex-direction: column;
    /* Without this the links stretch to the column width and the hover
       highlight paints well past the end of the text. */
    align-items: flex-start;
    font-size: 13px;
    color: #cdd7e6;
    border-left: 1px solid rgba(255, 255, 255, 0.25);
    padding-left: 18px;
}
.footer-copy a { color: #cdd7e6; }
.footer-links { list-style: none; display: flex; gap: 26px; margin: 0; padding: 0; }
.footer-links a {
    position: relative;
    color: #ffffff;
    text-decoration: none;
    font-size: 14px;
    padding-bottom: 3px;
}
.footer-links a::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 2px;
    background: currentColor;
    border-radius: 1px;
    transform: scaleX(0);
    transform-origin: right center;
    transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.footer-links a:hover::after,
.footer-links a:focus-visible::after {
    transform: scaleX(1);
    transform-origin: left center;
}

.landing-hero {
    background: linear-gradient(180deg, #F3F9FF 0%, #E8F2FB 100%);
    padding: 48px 0;
}
.landing-card {
    background: #ffffff;
    border-radius: 14px;
    box-shadow: 0 18px 45px rgba(6, 53, 122, 0.10);
    padding: 40px 44px;
    max-width: 1000px;
    margin: 0 auto;
}
.intro-grid { display: flex; gap: 30px; align-items: flex-start; }
.intro-seal { width: 150px; height: auto; flex: 0 0 auto; border-radius: 6px; }
.intro-card h1 {
    margin: 0 0 14px;
    font-size: 28px;
    font-weight: 700;
    color: #1A1A1A;
    line-height: 1.2;
}
.intro-lead { font-weight: 700; margin: 0 0 10px; color: #1A1A1A; }
.actions-list { margin: 0; padding-left: 20px; }
.actions-list li { margin-bottom: 8px; color: #4E4E4E; }

.callout {
    border-radius: 10px;
    padding: 16px 20px;
    margin-top: 20px;
    font-size: 15px;
    line-height: 1.55;
}
.callout-info { background: #e8f1fb; border-left: 4px solid #17548c; color: #1d3550; }
.callout-warn { background: #fbf3e3; border-left: 4px solid #d99a2b; color: #5c4a26; }
/* Same left-accent-stripe technique as .kein-examples li — a clipped
   pseudo-element rather than a plain border-left, so the stripe's outer
   corner rounds with the card while its inner edge stays a straight line. */
.callout-accent {
    position: relative;
    overflow: hidden;
    padding-left: 30px;
    background: #F3F9FF;
    border: 1px solid #e2e8f0;
    color: #4E4E4E;
}
.callout-accent::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 10px;
    background: #97C7FC;
    pointer-events: none;
}
.callout a { text-decoration: underline; }

.lp-tint  { background: #F3F9FF; padding: 56px 0; }
.lp-plain { background: #ffffff; padding: 56px 0; }

/* Two intro columns (Tax / Benefits) split by a vertical rule, with the
   branch cards running full width underneath. gap stays 0 so the rule sits
   centred in one shared channel rather than gap + padding stacking up. */
.contact-intro {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: start;
    margin-bottom: 46px;
}
.contact-intro-col:first-child { padding-right: 48px; }
.contact-intro-col + .contact-intro-col {
    padding-left: 48px;
    border-left: 1px solid #DCEBFA;
}
.contact-intro-title {
    margin: 16px 0 26px;
    font-size: 19px;
    line-height: 28px;
    font-weight: 500;
    color: #4E4E4E;
}
/* Kept out of the flow entirely (not display: none) so <use> still resolves. */
.contact-ico-sprite {
    position: absolute;
    width: 0;
    height: 0;
    overflow: hidden;
}
.contact-ico {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: #E8F2FB;
    color: #093B60;
}
.contact-ico svg { width: 22px; height: 22px; }

.section-badge {
    display: flex;
    align-items: center;
    width: fit-content;
    height: 34px;
    background: rgba(0, 108, 189, 0.12);
    color: #093B60;
    text-transform: uppercase;
    letter-spacing: 1.28px;
    line-height: 1;
    font-size: 16px;
    font-weight: 700;
    padding: 9px 14px;
    border-radius: 6px;
    margin: 0 0 16px;
}

.lp-heading {
    margin: 0 0 20px;
    font-size: 24px;
    line-height: 35px;
    font-weight: 700;
    color: #1A1A1A;
}

.lp-hero {
    position: relative;
    background: linear-gradient(115deg, #072241 0%, #0d3a63 48%, #17558e 100%);
    color: #ffffff;
    padding: 112px 0 150px;
    overflow: hidden;
}

.lp-hero-grid {
    display: grid;
    grid-template-columns: 1fr 480px;
    gap: 36px;
    /* Centers the two columns against each other instead of both top-aligning
       independently — they're different heights (text block vs. card stack),
       so top-aligning left a lot of dead space below the shorter one. */
    align-items: center;
    position: relative;
    z-index: 1;
}
/* Nudged down slightly from the grid's centered position — against the card
   column's text/padding, the text block was reading a touch high. */
.lp-hero-intro { margin-top: 3px; }

.lp-hero h1 {
    margin: 0 0 20px;
    /* Display size — deliberately above the 30px h1 in the type scale, since
       this is the landing hero's one headline. */
    font-size: 40px;
    font-weight: 700;
    line-height: 52px;
    color: #ffffff;
    /* Tuned so "Self-" falls to the third line rather than hanging off the end
       of the second. 25ch pulls it back up; 20ch breaks to four lines. */
    max-width: 23ch;
}
.lp-hero h1 em {
    font-style: italic;
    color: #97C7FC;
}
.lp-hero-lead {
    margin: 0 0 14px;
    max-width: 42ch;
    color: #c2d7ea;
    font-size: 16px;
    line-height: 28px;
}
.lp-hero-lead:last-of-type { margin-bottom: 30px; }

.lp-hero-lead a {
    color: #ffffff;
    text-decoration: underline;
    background-color: transparent;
    padding: 1px 3px;
    margin: 0 -3px;
    border-radius: 3px;
    transition: background-color 0.18s ease-in-out;
    -webkit-box-decoration-break: clone;
    box-decoration-break: clone;
}
.lp-hero-lead a:hover,
.lp-hero-lead a:focus-visible { background-color: rgba(255, 255, 255, 0.22); }

@media (prefers-reduced-motion: reduce) {
    .lp-hero-lead a { transition: none; }
}

.hero-actions { display: flex; flex-wrap: wrap; gap: 14px; }

.kuip-btn--ghost {
    background: transparent;
    color: #ffffff;
    border: 1px solid rgba(255, 255, 255, 0.55);
}
.kuip-btn--ghost:hover { background: rgba(255, 255, 255, 0.12); }

.hero-visual {
    position: relative;
}

/* One evenly-spaced column sitting over the arcs. The stack is wider than the
   visual column and hangs left into the grid gap; its right edge crosses the
   rings so they read as passing behind the cards. */
.orbit-cards {
    list-style: none;
    margin: 0;
    padding: 0;
    position: absolute;
    top: 50%;
    right: 26%;
    transform: translateY(-50%);
    width: 316px;
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.orbit-card {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    padding: 18px 20px;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.10);
    border: 1px solid rgba(255, 255, 255, 0.16);
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
    /* These act as buttons (tilt + expand on hover/click), so the text-select
       I-beam cursor and drag-to-select on hover just look like a UI glitch. */
    -webkit-user-select: none;
    user-select: none;
    transform: perspective(700px);
    transition: transform 0.35s cubic-bezier(0.2, 0.8, 0.2, 1),
                box-shadow 0.35s ease, background-color 0.35s ease, border-color 0.35s ease;
}
/* JS sets the rotateX/rotateY/scale while the pointer is over the card (the
   perspective() stays fixed here so the two don't fight); hover below only
   needs to lift it when JS tilt isn't running (touch, reduced motion).
   Background and border stay at their resting values on purpose: the card
   only grows/tilts, the text never sits on a lighter surface, so contrast
   against the text never changes either. Not keyboard-focusable on purpose,
   so there's no :focus-visible state here. */
.orbit-card:not(.is-tilting):hover { transform: perspective(700px) translateY(-3px) scale(1.03); }

.orbit-more {
    display: block;
    max-height: 0;
    margin-top: 0;
    overflow: hidden;
    font-size: 13px;
    line-height: 19px;
    color: #cfe1f2;
    opacity: 0;
    transition: max-height 0.3s ease, opacity 0.25s ease, margin-top 0.3s ease;
}
.orbit-card:hover .orbit-more,
.orbit-card.is-expanded .orbit-more {
    max-height: 90px;
    margin-top: 6px;
    opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
    .orbit-card, .orbit-more { transition: none; }
}

/* Nudged down by the title's half-leading so the top of the icon sits flush
   with the top of the text beside it, not with the top of its line box. */
.orbit-ico { flex: 0 0 auto; width: 54px; height: 54px; margin-top: 4px; display: block; }
.orbit-text { display: flex; flex-direction: column; gap: 2px; }
.orbit-title { font-size: 16px; font-weight: 700; color: #ffffff; line-height: 28px; }
.orbit-desc  { font-size: 15px; color: #d5e4f2; line-height: 22px; }

@media (max-width: 1100px) {
    .lp-hero h1 { font-size: 32px; line-height: 44px; }
    .orbit-cards { width: 280px; right: 14%; gap: 14px; }
    .orbit-card { padding: 14px 16px; gap: 13px; }
    .orbit-ico { width: 48px; height: 48px; }
    .hero-login-cards { gap: 14px; }
    .hero-login-card { padding: 16px 18px; gap: 14px; }

    /* Above the ~172px-per-column floor set below, 5 columns needs ~900px of
       room just for the grid — more than fits once the viewport itself drops
       under ~1100px, so the panel would overflow/clip its own box even
       though max-width tries to shrink it. Wrapping to 3 columns (2 rows)
       drops that floor to a width that actually fits here. */
    .nav-mega { grid-template-columns: repeat(3, minmax(160px, 1fr)); max-width: min(680px, 92vw); }
}

.hero-login-cards {
    list-style: none;
    margin: 0;
    padding: 0;
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 18px;
}

.hero-login-card {
    position: relative;
    display: flex;
    align-items: center;
    gap: 18px;
    padding: 22px 26px;
    border-radius: 12px;
    /* Background is intentionally the same at rest, hover, and active — a
       darkening background here was cutting into the gray body text's
       contrast on hover. The border and shadow carry the hover/active signal
       instead, so the text's contrast never moves. */
    background: linear-gradient(135deg, rgba(9, 59, 96, 0.05) 0%, rgba(9, 59, 96, 0) 55%),
        linear-gradient(135deg, #ffffff 0%, #F3F9FF 55%, #E8F2FB 100%);
    /* 2px at rest too (not just on hover), just transparent — so revealing
       the border color on hover doesn't also change the border's width and
       shift layout. */
    border: 2px solid transparent;
    text-decoration: none;
    box-shadow: 0 12px 30px rgba(4, 28, 56, 0.28);
    transition: transform 0.2s ease, border-color 0.2s ease;
}
/* The hover/active shadow is a separate layer, cross-faded in via opacity
   instead of animating box-shadow directly. Interpolating box-shadow itself
   forces a blur repaint every frame, which reads as a jump/pop rather than a
   smooth transition — opacity is cheap and animates cleanly by comparison. */
.hero-login-card::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    box-shadow: 0 16px 36px rgba(4, 28, 56, 0.34);
    opacity: 0;
    transition: opacity 0.2s ease;
    pointer-events: none;
}
.hero-login-card:hover {
    transform: translateY(-2px) scale(1.006);
}
.hero-login-card:hover::after { opacity: 1; }
.hero-login-card:active {
    border-color: #093B60;
    transform: translateY(0);
    box-shadow: 0 6px 14px rgba(4, 28, 56, 0.24);
}
.hero-login-card:active::after { opacity: 0; }
.hero-login-card:focus-visible {
    outline: 3px solid #97C7FC;
    outline-offset: 3px;
}

@media (prefers-reduced-motion: reduce) {
    .hero-login-card,
    .hero-login-card::after { transition: none; }
}

.hero-login-icon {
    flex: 0 0 auto;
    width: 50px;
    height: 50px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.hero-login-icon svg { width: 30px; height: 30px; }

.hero-login-text { flex: 1 1 auto; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.hero-login-title { font-size: 16px; font-weight: 700; color: #093B60; line-height: 24px; }
.hero-login-desc { font-size: 16px; color: #4E4E4E; line-height: 24px; }

/* Decorative: the whole card is the real link, and its accessible name
   ("Employer Login...") already says as much, so this doesn't need to be
   read again — it's just the explicit visual target the arrow used to imply. */
.hero-login-pill {
    flex: 0 0 auto;
    background: #093B60;
    color: #ffffff;
    font-size: 14px;
    font-weight: 600;
    padding: 9px 18px;
    border-radius: 88px;
}

/* Claimant callout: same warning colors as .alert-banner--warning (this is
   the same "wrong site, go here instead" message), inside the hero so it
   can't be scrolled past unnoticed the way the thin top banner could.
   width: fit-content + centered instead of stretching full-width — at full
   width the short message left a lot of dead yellow space either side,
   reading as a stretched banner rather than a deliberate notice. The left
   accent stripe gives it presence without needing to be wide to get
   attention — same clipped-pseudo-element technique as .info-card/
   .branch-card (overflow: hidden rounds the outer corner with the card,
   while the inner edge against the fill stays a single straight line,
   unlike a plain border-left which rounds both edges of the stripe). */
.hero-callout {
    position: relative;
    z-index: 1;
    overflow: hidden;
    width: fit-content;
    max-width: 100%;
    margin: 56px auto 0;
    background: #FFF3D7;
    border-radius: 14px;
    padding: 22px 44px 22px 54px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
    box-sizing: border-box;
}
.hero-callout::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 10px;
    background: #E8A33D;
    pointer-events: none;
}
/* flex: 0 (not 1 1 auto) so this doesn't stretch to fill the full-width
   container — that would push the text left-aligned within the stretched
   box instead of letting .hero-callout's justify-content: center actually
   center the icon+text as one compact group. */
.hero-callout-copy { flex: 0 1 auto; min-width: 0; }
.hero-callout-desc { margin: 0; font-size: 16px; font-weight: 500; color: #1A1A1A; line-height: 24px; text-align: center; }
/* Firefox computes width: fit-content on a flex item slightly narrower than
   Chrome/Edge do (both Chromium-based, so they agree with each other) —
   just enough that the wrap point landed right before the link instead of
   after the sentence. Forcing one line on desktop, where it fits regardless
   of the engine, sidesteps the disagreement entirely. Mobile still wraps
   normally below 900px. */
@media (min-width: 901px) {
    .hero-callout-desc { white-space: nowrap; }
}
/* Same warning-link treatment as .alert-banner--warning a, since this
   callout carries the same "wrong site, go here instead" message. */
.hero-callout-link {
    color: #A26016;
    font-weight: 600;
    text-decoration: underline;
    background-color: transparent;
    border-radius: 3px;
    padding: 1px 3px;
    margin: 0 -3px;
    transition: background-color 0.2s ease;
}
.hero-callout-link:hover,
.hero-callout-link:focus-visible { background-color: rgba(162, 96, 22, 0.12); }

@media (prefers-reduced-motion: reduce) {
    .hero-callout-link { transition: none; }
}

@media (max-width: 900px) {
    .hero-callout { padding: 24px 28px; }
}

.hero-curve {
    position: absolute;
    left: 0;
    right: 0;
    bottom: -1px;
    width: 100%;
    height: 70px;
    display: block;
}

.info-list, .branch-list { display: flex; flex-direction: column; gap: 12px; }
/* 50px = the "Contact Us" badge's own height + margin, so the accordions
   line up with the heading text below it, not the badge. Desktop only. */
/* LKAM-8433. Wrapping flex, not a fixed column count: each row sizes to its
   own content and moves to the next line as a whole unit, so a long address
   can neither be squeezed until it breaks mid-word nor overflow into
   .update-card's overflow: hidden and get clipped. It also takes any number
   of rows per branch (Tax Enforcement has four, the rest three) with no
   per-card column count to keep in sync. */
.contact-rows {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 20px 34px;
}
.contact-rows li {
    display: flex;
    align-items: center;
    gap: 12px;
}
@media (max-width: 600px) {
    .contact-rows li { flex: 1 1 100%; }
}

/* max-width is the other half of LKAM-8433: align-items: flex-start makes
   these children fit-content-sized, so without it they size their own box
   wider than the row and the address gets cut off. */
.contact-text { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; }
.contact-label { font-size: 14px; font-weight: 700; color: #093B60; max-width: 100%; }
.contact-val { font-size: 14px; color: #4E4E4E; overflow-wrap: break-word; word-break: normal; max-width: 100%; }
/* Fax rows only (the ones with a copy button): keep the number and the
   button as one atomic group so they wrap to a new line together instead of
   the button splitting off onto its own line as the column narrows. */
.contact-val:has(.copy-btn) { display: inline-flex; align-items: center; flex-wrap: nowrap; gap: 4px; }

/* tel: links need a finger-sized hit area on a phone. 14px text alone is a
   ~17px tall target, under the 24px minimum. */
.contact-link {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    text-decoration: underline;
    border-radius: 3px;
    padding: 0 2px;
    margin: 0 -2px;
    transition: background-color 0.2s ease;
}
.contact-link:hover,
.contact-link:focus-visible { background-color: rgba(51, 119, 185, 0.12); }
@media (prefers-reduced-motion: reduce) {
    .contact-link { transition: none; }
}

.copy-btn {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    margin-left: 2px;
    padding: 0;
    border: none;
    border-radius: 6px;
    background: none;
    color: #3d84d6;
    cursor: pointer;
    vertical-align: middle;
    transition: background-color 0.18s ease, color 0.18s ease;
}
.copy-btn svg { display: block; }
.copy-btn:hover { background: #E8F2FB; color: #093B60; }
.copy-btn:focus-visible { outline: 3px solid #97C7FC; outline-offset: 3px; border-radius: 6px; }
/* Same floating badge as .code-box (Obtain KEIN's copy buttons) — .copied-flag
   itself is already defined there and shared here as-is. The icon itself no
   longer changes color on copy — the badge alone carries the "copied" signal. */
.copy-btn.is-copied .copied-flag { opacity: 1; transform: translateY(0); }

@media (prefers-reduced-motion: reduce) {
    .copy-btn { transition: none; }
}

/* Accent bars.
   A border would follow the card's corner radius on BOTH of its edges, leaving
   the inner edge curved. These are painted as a pseudo-element instead: the
   card's own overflow:hidden rounds the outer corners, while the edge that meets
   the white card stays a straight vertical (or horizontal) line. */
.update-card.branch-card,
.update-card.info-card { position: relative; }

.update-card.branch-card::before,
.update-card.info-card::before {
    content: "";
    position: absolute;
    background: #97C7FC;
    pointer-events: none;
}

.update-card.branch-card::before {
    top: 0;
    bottom: 0;
    left: 0;
    width: 10px;
}
.update-card.branch-card > summary { gap: 12px; padding-left: 30px; }
.branch-card > .update-body { padding-left: 30px; }
.branch-card .update-heading { flex: 1 1 auto; }

.update-card.info-card::before {
    top: 0;
    left: 0;
    right: 0;
    height: 12px;
}
.update-card.info-card > summary { padding-top: 28px; }
.info-card .update-heading { flex: 1 1 auto; }

.year-block { margin-bottom: 22px; }
.year-block:last-child { margin-bottom: 0; }
.year-block h4 {
    margin: 0 0 8px;
    font-size: 16px;
    line-height: 28px;
    font-weight: 700;
    color: #093B60;
}

.updates { background: #ffffff; padding: 44px 0 16px; }
.notices { background: #ffffff; padding: 8px 0 56px; }
.updates-title {
    font-size: 22px;
    font-weight: 700;
    color: #1A1A1A;
    margin: 0 0 18px;
}

.update-card {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    margin-bottom: 14px;
    box-shadow: 0 2px 10px rgba(6, 53, 122, 0.08);
    overflow: hidden;
}
.update-card summary {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 20px 24px;
    font-weight: 700;
    color: #093B60;
}
.update-card summary::-webkit-details-marker { display: none; }
.update-card summary:hover { background: #F3F9FF; }
/* Closed only: once a branch card is open the hover tint reads as a state
   change rather than an affordance, and the open chevron already says it can
   be collapsed. Child combinator so the sub-cards inside keep their own hover. */
.branch-card[open] > summary:hover { background: transparent; }
/* Inset (negative offset), not outset: .update-card has overflow: hidden for
   the accordion height animation, so an outset ring was getting clipped at
   the card edge, exactly the same issue fixed earlier for the search dropdown. */
.update-card summary:focus-visible { outline: 3px solid #97C7FC; outline-offset: -3px; border-radius: 6px; }
.update-heading {
    margin: 0;
    font-size: 18px;
    line-height: 30px;
    font-weight: 700;
    color: inherit;
}
/* .doc-card h3 (higher specificity: class+element beats a single class) sets
   margin: 26px 0 10px, which was bleeding through here on pages like
   WorkShareCalculator.aspx where an accordion's <h3> sits inside a .doc-card
   — showing as extra space above/below the heading while collapsed, on top
   of .update-card summary's own padding. */
.doc-card .update-heading { margin: 0; }
.update-meta { display: flex; align-items: center; gap: 14px; }
.update-date { font-size: 13px; color: #5a6b82; font-weight: 600; white-space: nowrap; }

.chev {
    width: 10px;
    height: 10px;
    border-right: 2px solid #093B60;
    border-bottom: 2px solid #093B60;
    transform: rotate(45deg);
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    flex: 0 0 auto;
}
/* Scoped to each card's own summary — a plain descendant selector would rotate
   the chevrons of closed sub-cards nested inside an open branch card. */
.update-card[open] > summary .chev,
.sub-card[open] > summary .chev { transform: rotate(-135deg); }

.update-body { padding: 2px 24px 22px; color: #4E4E4E; }
.update-body ul { margin: 0; padding-left: 20px; }
.update-body li { margin-bottom: 10px; line-height: 1.55; }
.update-body p { margin: 0 0 12px; line-height: 1.6; }
.browser-list { list-style: none; padding-left: 0; }
.browser-list li { margin-bottom: 8px; }

/* --- Accordion open/close animation ---------------------------------------
   redesign.js drives the height tween on <details.update-card>. The classes
   below only run while an animation is in flight, so with JS disabled the
   cards still open and close natively — just without the easing. */
.update-card.is-animating,
.sub-card.is-animating { overflow: hidden; }
.update-card.is-animating summary,
.sub-card.is-animating summary { pointer-events: none; }

.update-card.is-opening .update-body,
.sub-card.is-opening .sub-body {
    animation: update-body-in 0.3s cubic-bezier(0.4, 0, 0.2, 1) both;
}
.update-card.is-closing .update-body,
.sub-card.is-closing .sub-body {
    animation: update-body-out 0.24s cubic-bezier(0.4, 0, 1, 1) both;
}

@keyframes update-body-in {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes update-body-out {
    from { opacity: 1; transform: translateY(0); }
    to   { opacity: 0; transform: translateY(-6px); }
}

@media (prefers-reduced-motion: reduce) {
    .chev { transition: none; }
    .update-card.is-opening .update-body,
    .update-card.is-closing .update-body,
    .sub-card.is-opening .sub-body,
    .sub-card.is-closing .sub-body { animation: none; }
}

.result-card {
    background: #ffffff;
    border-radius: 14px;
    box-shadow: 0 18px 45px rgba(6, 53, 122, 0.10);
    padding: 44px 48px;
    max-width: 760px;
    margin: 0 auto;
    text-align: center;
}
.result-card h1 { margin: 0 0 12px; font-size: 30px; line-height: 42px; font-weight: 700; color: #1A1A1A; }
.result-sub { margin: 0 0 28px; color: #4E4E4E; }

.code-group { margin-bottom: 24px; }
.code-label { display: block; font-weight: 700; color: #1A1A1A; margin-bottom: 10px; }

.code-box {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-width: 220px;
    background: #F3F9FF;
    border: 1px solid #cfd9e6;
    border-radius: 8px;
    padding: 12px 18px;
    font: inherit;
    font-size: 16px;
    color: #1A1A1A;
    cursor: pointer;
    position: relative;
    transition: border-color 0.2s ease;
}
/* Icon-button blue (same as .copy-ico and the copy icons elsewhere) rather
   than dark navy, so the hover border reads as "matches the copy icon" and
   not as heavy/alarming as full navy. */
.code-box:hover { border-color: #3d84d6; background: #F3F9FF; }
.code-box:focus-visible { outline: 2px solid #093B60; outline-offset: 2px; }
.copy-ico { color: #3d84d6; display: inline-flex; }
.copy-ico svg { display: block; }
.code-val { letter-spacing: 0.5px; }

@media (prefers-reduced-motion: reduce) {
    .code-box { transition: none; }
}

.copied-flag {
    position: absolute;
    top: -16px;
    right: -10px;
    width: max-content;
    white-space: nowrap;
    background: #40617B;
    color: #ffffff;
    font-size: 14px;
    font-weight: 700;
    padding: 4px 12px;
    border-radius: 12px;
    opacity: 0;
    transform: translateY(4px);
    transition: opacity 0.15s ease, transform 0.15s ease;
    pointer-events: none;
}
.code-box.is-copied .copied-flag { opacity: 1; transform: translateY(0); }

/* Same icon+text row layout as .hero-callout, recolored red for a warning
   instead of the amber "go here instead" notice, and sized to fit content
   rather than the hero's full-bleed width since this sits on a white card. */
.result-alert {
    display: flex;
    align-items: center;
    gap: 14px;
    width: fit-content;
    max-width: 100%;
    margin: 28px auto 18px;
    background: #fdecea;
    border-radius: 14px;
    padding: 14px 24px;
}
.result-alert-icon {
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(192, 57, 43, 0.12);
}
.result-alert-icon svg { width: 20px; height: 20px; }
.result-alert p { margin: 0; font-size: 15px; font-weight: 600; color: #c0392b; text-align: left; }

.resolve-card { text-align: center; max-width: 820px; }
.resolve-note { text-align: left; margin: 0 0 24px; }
.resolve-note p { margin: 0 0 12px; }
.resolve-note p:last-child { margin-bottom: 0; }
.resolve-btn { width: auto; padding-left: 44px; padding-right: 44px; }
.print-link { margin: 8px 0 0; }
.print-link a { text-decoration: underline; font-weight: 600; }
/* "Return to log in" on the password result screens: a real navy pill button
   rather than a text link, but .btn-login is width:100% by default (meant
   for a full-width form button) — auto width + fixed horizontal padding
   here instead, same pattern as .ack-continue.
   .result-card a (above, near the top of this file) sets a transparent
   background, 1px/3px padding, 3px border-radius, and its own background-only
   transition — all at higher specificity than plain .btn-login, silently
   cancelling out the navy background, full padding, pill shape, and smooth
   hover scale/shadow. Every property .result-card a also touches needs its
   own value here, not just the ones that don't collide, to actually beat it. */
.print-link a.btn-login {
    display: inline-block;
    width: auto;
    padding: 14px 32px;
    margin: 8px 0 0;
    background-color: #093B60;
    color: #ffffff;
    border-radius: 88px;
    text-decoration: none;
    transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}
.print-link a.btn-login:hover,
.print-link a.btn-login:focus-visible {
    background-color: #002459;
    transform: scale(1.04);
    box-shadow: 0 6px 16px rgba(6, 53, 122, 0.25);
}
@media (prefers-reduced-motion: reduce) {
    .print-link a.btn-login { transition: none; }
    .print-link a.btn-login:hover, .print-link a.btn-login:focus-visible { transform: none; }
}

.print-header { display: none; }

@media print {
    .site-header, .site-footer, .kuip,
    .skip-link, .print-link, .copy-ico, .modal,
    .alert-banner, .breadcrumbs, .nav-search, .print-link-btn, .page-print-btn,
    .calc-inputs, .doc-card > .doc-notice, .updated-badge, .lp-plain { display: none !important; }
    /* BenefitsCalculator has no separate .calc-results panel — the entered
       quarter values and the eligibility outcome both render inline inside
       .calc-inputs (.bc-inputs), so hiding .calc-inputs above was hiding
       everything. Keep the input rows (so the printed page shows what was
       entered) and the outcome; only the Calculate/Clear buttons and any
       error text aren't useful on paper. */
    .bc-inputs { display: block !important; }
    .bc-inputs .calc-actions, .bc-inputs .calc-alert { display: none !important; }
    .print-header { display: block !important; margin: 0 0 24px; }
    .print-header img { height: 40px; width: auto; }
    body { background: #ffffff; }
    .hero, .result-card { background: #ffffff !important; padding: 0; box-shadow: none; }
    .code-box { border: 1px solid #333333; }
    .doc-card { box-shadow: none; padding: 0; max-width: none; }
    /* The navy banner's -44px/-48px pull-out only lines up when .doc-card's
       own padding is actually 44px/48px — here it's 0, so print gets a plain
       black-on-white heading instead (also avoids printing a full navy
       background needlessly). */
    .doc-card > .doc-header:first-child, .links-card > .doc-header {
        margin: 0 0 20px;
        padding: 0;
        background: none;
        border-radius: 0;
    }
    .doc-header h1 { color: #1A1A1A; }
    .doc-header .updated-badge { color: #093B60; }
    .calc { display: block; }
    .calc-results { margin-top: 0; }
    .table-wrapper { border-color: #999999; overflow: visible; }
    .responsive-table tbody tr:nth-child(even) td { background: #ffffff !important; }
}

.ack-section {
    background: linear-gradient(180deg, #F3F9FF 0%, #E8F2FB 100%);
    padding: 56px 0 64px;
}
.ack-card {
    background: #ffffff;
    border-radius: 14px;
    box-shadow: 0 18px 45px rgba(6, 53, 122, 0.10);
    padding: 44px 48px;
    max-width: 840px;
    margin: 0 auto;
}
.ack-head { text-align: center; margin-bottom: 28px; }
.ack-seal { width: 128px; height: 128px; }
.ack-head h1 {
    margin: 14px 0 0;
    font-size: 30px;
    font-weight: 700;
    color: #1A1A1A;
    line-height: 42px;
}
.ack-head h1 span { font-size: 20px; }
.ack-notice-title {
    color: #c0392b;
    text-decoration: underline;
    font-size: 17px;
    font-weight: 700;
    margin: 0 0 16px;
}
.ack-card p { margin: 0 0 16px; color: #4E4E4E; }

.ack-agree {
    background: #F3F9FF;
    border: 1px solid #dbe5f0;
    border-radius: 10px;
    padding: 18px 20px;
    margin: 22px 0 26px;
}
.ack-agree label { display: flex; gap: 14px; align-items: flex-start; cursor: pointer; }
/* Double the ~13px browser default so the box is an easy target on its own,
   independent of the surrounding label. */
.ack-check {
    flex: 0 0 auto;
    width: 26px;
    height: 26px;
    margin: 0;
    accent-color: #093B60;
    cursor: pointer;
}
.ack-agree .req { color: #c0392b; margin-right: 4px; }

.ack-actions { display: flex; gap: 14px; align-items: center; }
.ack-continue { width: auto; padding-left: 34px; padding-right: 34px; }
.btn-cancel {
    display: inline-block;
    padding: 12px 28px;
    min-height: 44px;
    background: #ffffff;
    color: #093B60;
    border: 1px solid #c2ccda;
    border-radius: 88px;
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease;
}
.btn-cancel:hover { background: #eef2f7; }

.modal { display: none; position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1000; }
.modal.is-open { display: block; }
body.modal-open { overflow: hidden; }

.modal-backdrop {
    position: absolute;
    top: 0; right: 0; bottom: 0; left: 0;
    background: rgba(16, 35, 59, 0.55);
    -webkit-backdrop-filter: blur(4px);
    backdrop-filter: blur(4px);
}

.modal-dialog {
    position: relative;
    z-index: 1;
    background: #ffffff;
    border-radius: 14px;
    box-shadow: 0 24px 60px rgba(10, 25, 45, 0.35);
    width: calc(100% - 40px);
    max-width: 620px;
    max-height: 84vh;
    overflow-y: auto;
    margin: 8vh auto 0;
    /* Extra right padding — overflow-y: auto puts the scrollbar right at the
       box's own edge, flush against the rounded corner with no breathing
       room, so it read as poking out past the white card instead of sitting
       inside it. */
    padding: 36px 56px 28px 40px;
    animation: modal-in 140ms ease-out;
}

@keyframes modal-in {
    from { opacity: 0; transform: translateY(-8px); }
    to   { opacity: 1; transform: translateY(0); }
}

.modal-title {
    margin: 0 0 6px;
    padding-right: 96px;
    font-size: 24px;
    font-weight: 700;
    color: #1A1A1A;
    line-height: 35px;
}
.modal-sub { margin: 0 0 20px; color: #4E4E4E; font-size: 16px; line-height: 28px; }

.modal-dialog--wide { max-width: 1040px; }

.modal-close {
    position: absolute;
    top: 14px;
    right: 16px;
    width: 72px;
    height: 72px;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: transparent;
    color: #4E4E4E;
    font-size: 52px;
    line-height: 1;
    cursor: pointer;
}
.modal-close:hover { background: #eef2f7; color: #1A1A1A; }
.modal-close:focus-visible { outline: 2px solid #093B60; outline-offset: 2px; }

.modal-actions { display: flex; justify-content: flex-end; margin-top: 24px; }
.modal-ok { width: auto; min-width: 120px; }

/* Bottom Close button on the Field Auditor directory — so a long list
   doesn't force scrolling back up to the X to close it. */
.modal-close-bottom {
    margin: 28px 0 0;
    text-align: center;
}
.modal-close-bottom .btn-login {
    width: auto;
    padding-left: 40px;
    padding-right: 40px;
}

.kein-examples { list-style: none; margin: 0; padding: 0; }
/* Same accent treatment as the accordions: a clipped pseudo-element, so the
   outer corners round with the card while the inner edge stays a straight line. */
.kein-examples li {
    position: relative;
    overflow: hidden;
    margin-bottom: 14px;
    padding: 16px 18px 16px 30px;
    background: #F3F9FF;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    color: #4E4E4E;
    line-height: 28px;
}
.kein-examples li::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 10px;
    background: #97C7FC;
    pointer-events: none;
}
.kein-examples li:last-child { margin-bottom: 0; }
.kein-example-report, .kein-example-enter { display: block; }
.kein-example-enter { margin-top: 6px; }
.kein-examples code {
    font-family: "Courier New", Courier, monospace;
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 0.5px;
    color: #1A1A1A;
}

@media (prefers-reduced-motion: reduce) {
    .modal-dialog { animation: none; }
    .main-nav a::after,
    .footer-links a::after { transition: none; }
    .callout a,
    .doc-card a,
    .auditor-grid a,
    .login-note a,
    .login-help a,
    .update-body a,
    .result-card a,
    .ack-card a,
    .footer-copy a,
    .kein-examples a { transition: none; }
}

@media (max-width: 860px) {
    .login-card { grid-template-columns: 1fr; }
    .login-divider { display: none; }
    .kuip-card { grid-template-columns: 1fr; }
    .kuip-actions { justify-content: center; }
    .kuip-btn { justify-content: center; }
    .footer-inner { flex-direction: column; text-align: center; }
    .footer-left { flex-direction: column; justify-content: center; }
    .footer-copy {
        align-items: center;
        text-align: center;
        border-left: none;
        padding-left: 0;
    }
    .footer-links { flex-wrap: wrap; justify-content: center; }

    .header-inner { position: relative; }
    .nav-toggle-btn { display: block; margin-left: auto; }
    /* The search icon + popover become one plain, always-open search box and
       fold into the top of the mobile menu — opening the hamburger is the
       only tap needed before you can type. */
    .nav-search-btn { display: none; }
    .site-search-panel {
        position: static;
        opacity: 1;
        visibility: visible;
        transform: none;
        width: 100%;
        max-width: none;
        margin: 0 0 14px;
        padding: 0;
        border: none;
        box-shadow: none;
        background: none;
    }
    .main-nav {
        display: none;
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
        width: 100%;
        margin-top: 12px;
        margin-left: 0;
    }
    .main-nav .nav-search { width: 100%; order: -1; }
    .main-nav a {
        display: block;
        width: 100%;
        padding: 12px 6px;
        border-bottom: 1px solid #eef1f5;
    }
    .main-nav a::after { content: none; }
    /* .main-nav a above (display: block) would otherwise collapse the search
       suggestion links' title/hint spans onto one run-together line — this
       wins on specificity and restores the two-line layout. */
    .main-nav .site-search-results a {
        display: flex;
        flex-direction: column;
        padding: 9px 12px;
        border-bottom: none;
    }
    .nav-item { width: 100%; }
    .nav-dropdown-btn {
        width: 100%;
        justify-content: space-between;
        padding: 12px 6px;
        border-bottom: 1px solid #eef1f5;
    }
    .nav-dropdown {
        position: static;
        min-width: 0;
        margin: 4px 0 8px;
        box-shadow: none;
        transform: none;
        display: none;
    }
    .nav-dropdown-btn[aria-expanded="true"] + .nav-dropdown { display: block; }
    .nav-mega {
        position: static;
        display: none;
        grid-template-columns: 1fr;
        max-width: none;
        width: 100%;
        margin: 4px 0 8px;
        padding: 4px 0;
        box-shadow: none;
        border: none;
        transform: none;
        gap: 0;
    }
    .nav-dropdown-btn[aria-expanded="true"] + .nav-mega { display: grid; }
    .nav-mega-col:not(:first-child) { margin-top: 16px; }
    .nav-mega-heading { padding: 0 6px 8px; }
    /* Right-aligned on mobile only — most users are right-handed, so the
       links sit closer to where a thumb naturally reaches on a one-handed
       phone grip. Desktop keeps the left-aligned icon-then-text layout. */
    .nav-mega a,
    .nav-dropdown a { padding: 13px 6px; justify-content: flex-end; }
    .main-nav.is-open { display: flex; }
    .ack-card { padding: 30px 22px; }
    .ack-actions { flex-direction: column; align-items: stretch; }
    .btn-cancel, .ack-continue { width: 100%; text-align: center; }
    /* .calc-actions .btn-login is forced to width: auto at every breakpoint
       (line ~133) so Calculate doesn't stretch full-width on desktop next to
       Clear input — undo that here so it matches every other resource-page
       button once they're stacked full-width on mobile. */
    .calc-actions { flex-direction: column; align-items: stretch; }
    .calc-actions .btn-login,
    .doc-card .btn-login,
    .doc-card .btn-cancel { width: 100%; text-align: center; justify-content: center; }

    .landing-card { padding: 28px 22px; }
    .intro-grid { flex-direction: column; align-items: center; text-align: center; }
    .intro-card h1 { text-align: left; }
    .actions-list { text-align: left; }
    /* The date is nowrap, so on narrow screens the meta block refuses to shrink
       and pushes the chevron outside the card's overflow:hidden. Let both sides
       give a little instead. */
    .contact-intro { grid-template-columns: 1fr; }
    .contact-intro-col:first-child { padding-right: 0; }
    .contact-intro-col + .contact-intro-col {
        padding-left: 0;
        padding-top: 30px;
        margin-top: 30px;
        border-left: none;
        border-top: 1px solid #DCEBFA;
    }
    .contact-intro-title { font-size: 18px; line-height: 27px; }
    .lp-heading { text-align: center; }
    /* Centres with .lp-heading above, not at a breakpoint of its own, so the
       Contact header and the columns under it never disagree. Intro only:
       the branch cards below stay left aligned. .section-badge and
       .contact-text are both flex (so block-level), so text-align can't
       centre either one; margin auto and align-items do. */
    .contact-intro-col { text-align: center; }
    .contact-intro-col .section-badge { margin-left: auto; margin-right: auto; }
    .contact-intro .contact-rows { justify-content: center; }
    .contact-intro .contact-rows li { justify-content: center; }
    .contact-intro .contact-text { align-items: center; }

    .lp-hero { padding: 80px 0 130px; }
    .lp-hero-grid { grid-template-columns: 1fr; gap: 36px; }
    .lp-hero h1 { font-size: 30px; line-height: 40px; max-width: none; text-align: center; }
    .lp-hero-lead { max-width: none; text-align: center; }
    .hero-actions .kuip-btn { justify-content: center; flex: 1 1 100%; }

    .orbit-cards {
        position: static;
        transform: none;
        width: 100%;
        gap: 12px;
    }
    .hero-login-cards { width: 100%; gap: 12px; }

    .link-grid { grid-template-columns: 1fr; }
    .doc-card { padding: 28px 22px; }
    .calc { grid-template-columns: 1fr; gap: 28px; }
    .auditor-grid { grid-template-columns: 1fr; }
    .links-card { padding: 28px 22px; }
    /* .doc-header's pull-out margin assumes .doc-card's/.links-card's
       desktop padding (44px/48px) — at this width their own padding shrinks
       to 28px/22px above, so the fixed -44px/-48px was overshooting past
       the card's actual (now narrower) edges, spilling the navy background
       wider than the white card itself. */
    .doc-card > .doc-header:first-child,
    .links-card > .doc-header {
        margin: -28px -22px 22px;
        padding: 24px 22px 20px;
    }

    .update-card summary { padding: 16px; align-items: flex-start; }
    .update-heading { min-width: 0; }
    .update-meta { min-width: 0; flex-shrink: 1; }
    .update-date { white-space: normal; text-align: right; }
    .chev { margin-top: 5px; }

    .result-card { padding: 30px 22px; }
    .code-box { width: 100%; }

    .modal-dialog { margin-top: 5vh; max-height: 90vh; padding: 28px 22px 22px; }
    .modal-title { font-size: 22px; padding-right: 36px; }
    .modal-actions { justify-content: stretch; }
    .modal-ok { width: 100%; }
}

@media (max-width: 600px) {
    .lp-hero h1 { font-size: 26px; line-height: 34px; }
}
