/* =====================================================================
   SEA ROUTE MARITIME SERVICES & ACADEMY — stylesheet
   searoutemaritime.in

   Deliberately plain, in the style of an Indian government recruitment
   portal: system fonts, boxed sections, bordered tables, high contrast,
   no animation. Nothing here is loaded from a CDN except the icon font
   in the HTML, so the site stays fast on slow connections.
   ===================================================================== */

:root {
    --navy:        #12395b;
    --navy-dark:   #0b2740;
    --navy-mid:    #1c5c91;
    --navy-pale:   #e8eff5;

    --saffron:     #c2410c;
    --saffron-mid: #ea7317;
    --saffron-pale:#fff4e6;

    --green:       #15803d;
    --green-pale:  #e9f7ee;
    --red:         #b42318;
    --red-pale:    #fdecea;

    --ink:         #1f2733;
    --ink-soft:    #43505f;
    --muted:       #64748b;
    --line:        #cbd5e1;
    --line-soft:   #e2e8f0;
    --page:        #eef2f6;
    --white:       #ffffff;

    --font: Arial, "Segoe UI", Roboto, Verdana, Tahoma, sans-serif;
    --font-title: Georgia, "Times New Roman", serif;

    --fs: 15px;   /* driven by the A- / A / A+ text-size controls */
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
    font-family: var(--font);
    font-size: var(--fs);
    line-height: 1.65;
    color: var(--ink);
    background: var(--page);
}

a { color: var(--navy-mid); text-decoration: underline; }
a:hover { color: var(--saffron); }

img { max-width: 100%; height: auto; display: block; }

.container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 16px;
}

/* Keyboard users must be able to see where they are. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
    outline: 3px solid var(--saffron-mid);
    outline-offset: 1px;
}

/* ---------------------------------------------------------------------
   1. Accessibility strip  (skip link, text size, contact)
   --------------------------------------------------------------------- */

.util-bar {
    background: var(--navy-dark);
    color: #d5e2ee;
    font-size: 12.5px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.util-bar .container {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 18px;
    align-items: center;
    justify-content: space-between;
    min-height: 34px;
    padding-top: 5px;
    padding-bottom: 5px;
}

.util-left,
.util-right {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 14px;
}

.util-bar a { color: #d5e2ee; text-decoration: none; }
.util-bar a:hover { color: #ffd79a; text-decoration: underline; }

.util-sep { color: rgba(255, 255, 255, 0.3); }

.text-size { display: inline-flex; align-items: center; gap: 4px; }

.text-size button {
    font-family: var(--font);
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.25);
    width: 24px;
    height: 22px;
    font-size: 12px;
    line-height: 1;
    cursor: pointer;
}

.text-size button:hover { background: var(--saffron); border-color: var(--saffron); }

/* Visible only when tabbed to — standard government-portal pattern. */
.skip-link {
    position: absolute;
    left: -9999px;
    top: 0;
    background: var(--saffron);
    color: #fff;
    padding: 8px 16px;
    z-index: 999;
}

.skip-link:focus {
    left: 8px;
    top: 8px;
    position: fixed;
}

/* ---------------------------------------------------------------------
   2. Identity band
   --------------------------------------------------------------------- */

.identity {
    background: var(--white);
    border-bottom: 3px solid var(--saffron);
}

.identity .container {
    display: flex;
    flex-wrap: wrap;
    gap: 14px 20px;
    align-items: center;
    justify-content: space-between;
    padding-top: 12px;
    padding-bottom: 12px;
}

.identity-main {
    display: flex;
    align-items: center;
    gap: 14px;
    text-decoration: none;
}

.identity-emblem {
    width: 66px;
    height: 66px;
    flex: 0 0 66px;
    display: grid;
    place-items: center;
    border: 1px solid var(--line);
    background: var(--white);
    padding: 3px;
}

.identity-emblem img { max-height: 100%; width: auto; }

.identity-text h1 {
    font-family: var(--font-title);
    font-size: 25px;
    line-height: 1.2;
    color: var(--navy);
    font-weight: 700;
    letter-spacing: 0.2px;
}

.identity-text .org {
    font-size: 13px;
    color: var(--ink-soft);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.6px;
}

.identity-text .sub {
    font-size: 12.5px;
    color: var(--muted);
}

.advt-box {
    border: 1px solid var(--line);
    border-left: 4px solid var(--navy);
    background: #f8fafc;
    padding: 8px 14px;
    font-size: 12.5px;
    line-height: 1.5;
}

.advt-box strong { color: var(--navy); display: block; font-size: 13px; }
.advt-box span { color: var(--muted); }

/* ---------------------------------------------------------------------
   3. Navigation
   --------------------------------------------------------------------- */

.main-nav {
    background: var(--navy);
    border-bottom: 1px solid var(--navy-dark);
}

.main-nav .container { padding: 0 16px; }

.nav-toggle {
    display: none;
    width: 100%;
    background: none;
    border: 0;
    color: #fff;
    font-family: var(--font);
    font-size: 15px;
    font-weight: 700;
    padding: 12px 0;
    text-align: left;
    cursor: pointer;
}

.nav-list {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
}

.nav-list > li + li { border-left: 1px solid rgba(255, 255, 255, 0.14); }

.nav-list a {
    display: block;
    padding: 12px 17px;
    color: #eaf1f7;
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
}

.nav-list a:hover { background: var(--navy-mid); color: #fff; }

.nav-list li.current > a {
    background: var(--saffron);
    color: #fff;
}

.nav-list a.nav-apply {
    background: var(--green);
    color: #fff;
}

.nav-list a.nav-apply:hover { background: #106b32; }

/* ---------------------------------------------------------------------
   4. Page title strip + breadcrumb
   --------------------------------------------------------------------- */

.page-title {
    background: linear-gradient(180deg, #1a4a72 0%, var(--navy) 100%);
    color: #fff;
    padding: 22px 0;
    border-bottom: 3px solid var(--saffron);
}

.page-title h2 {
    font-family: var(--font-title);
    font-size: 26px;
    font-weight: 700;
    line-height: 1.25;
}

.page-title p {
    font-size: 13.5px;
    color: #c9dcec;
    margin-top: 4px;
}

.breadcrumb {
    background: var(--white);
    border-bottom: 1px solid var(--line);
    font-size: 12.5px;
    color: var(--muted);
    padding: 8px 0;
}

.breadcrumb a { text-decoration: none; }
.breadcrumb a:hover { text-decoration: underline; }
.breadcrumb .sep { margin: 0 7px; color: var(--line); }

/* ---------------------------------------------------------------------
   5. Layout: main + sidebar
   --------------------------------------------------------------------- */

.page-body { padding: 22px 0 34px; }

.layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: 22px;
    align-items: start;
}

.layout-single { display: block; }

/* ---------------------------------------------------------------------
   6. Boxes and section headings
   --------------------------------------------------------------------- */

.box {
    background: var(--white);
    border: 1px solid var(--line);
    margin-bottom: 20px;
}

.box-head {
    background: var(--navy-pale);
    border-bottom: 1px solid var(--line);
    padding: 10px 16px;
    display: flex;
    align-items: center;
    gap: 9px;
}

.box-head h3 {
    font-family: var(--font-title);
    font-size: 17px;
    color: var(--navy);
    font-weight: 700;
}

.box-head i { color: var(--saffron); }

.box-head.head-saffron { background: var(--saffron-pale); border-bottom-color: #f4cfa5; }
.box-head.head-saffron h3 { color: var(--saffron); }
.box-head.head-saffron i { color: var(--saffron); }

.box-body { padding: 16px; }

.box-body > * + * { margin-top: 12px; }

.box-body h4 {
    font-size: 15px;
    color: var(--navy);
    font-weight: 700;
    margin-top: 18px;
}

.box-body p { color: var(--ink-soft); }

.box-body ul,
.box-body ol { padding-left: 22px; color: var(--ink-soft); }

.box-body li + li { margin-top: 5px; }

/* ---------------------------------------------------------------------
   7. Tables
   --------------------------------------------------------------------- */

.table-scroll { overflow-x: auto; }

table.gov {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
    background: var(--white);
}

table.gov th,
table.gov td {
    border: 1px solid var(--line);
    padding: 9px 12px;
    text-align: left;
    vertical-align: top;
}

table.gov thead th {
    background: var(--navy);
    color: #fff;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    white-space: nowrap;
}

table.gov tbody tr:nth-child(even) { background: #f6f9fb; }
table.gov tbody tr:hover { background: var(--navy-pale); }

table.gov td.num { text-align: center; width: 56px; color: var(--muted); }

/* Key/value table used for receipts and status cards. */
table.kv { width: 100%; border-collapse: collapse; font-size: 14px; }

table.kv td {
    border: 1px solid var(--line-soft);
    padding: 8px 12px;
}

table.kv td:first-child {
    width: 42%;
    background: #f7f9fb;
    color: var(--ink-soft);
}

/* ---------------------------------------------------------------------
   8. Notices, alerts, badges
   --------------------------------------------------------------------- */

.notice-list { list-style: none; padding: 0 !important; }

.notice-list li {
    border-bottom: 1px dashed var(--line);
    padding: 10px 0;
    font-size: 13.5px;
    display: flex;
    gap: 8px;
}

.notice-list li:last-child { border-bottom: 0; }
.notice-list li i { color: var(--saffron); margin-top: 4px; }
.notice-list .date { display: block; color: var(--muted); font-size: 12px; }

.tag-new {
    display: inline-block;
    background: var(--red);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.6px;
    padding: 1px 6px;
    margin-left: 6px;
    vertical-align: 2px;
    text-transform: uppercase;
}

.alert {
    border: 1px solid var(--line);
    border-left: 4px solid var(--navy);
    background: #f8fafc;
    padding: 12px 16px;
    font-size: 13.5px;
    color: var(--ink-soft);
}

.alert strong { color: var(--navy); }
.alert-warn { border-left-color: var(--saffron); background: var(--saffron-pale); }
.alert-warn strong { color: var(--saffron); }
.alert-ok { border-left-color: var(--green); background: var(--green-pale); }
.alert-ok strong { color: var(--green); }
.alert-error { border-left-color: var(--red); background: var(--red-pale); }
.alert-error strong { color: var(--red); }

.badge {
    display: inline-block;
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: 0.5px;
    padding: 2px 9px;
    text-transform: uppercase;
    border: 1px solid;
}

.badge-paid    { color: var(--green);   border-color: var(--green);   background: var(--green-pale); }
.badge-pending { color: var(--saffron); border-color: var(--saffron); background: var(--saffron-pale); }

/* Scrolling notice ticker on the home page. */
.ticker {
    display: flex;
    align-items: stretch;
    background: var(--white);
    border: 1px solid var(--line);
    border-left: 4px solid var(--red);
    overflow: hidden;
}

.ticker-label {
    background: var(--red);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.6px;
    padding: 8px 12px;
    white-space: nowrap;
    text-transform: uppercase;
}

.ticker-text {
    padding: 8px 12px;
    font-size: 13.5px;
    color: var(--ink-soft);
    overflow: hidden;
    white-space: nowrap;
}

/* ---------------------------------------------------------------------
   9. Buttons
   --------------------------------------------------------------------- */

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    font-family: var(--font);
    font-size: 14px;
    font-weight: 700;
    padding: 10px 20px;
    border: 1px solid transparent;
    cursor: pointer;
    text-decoration: none;
    line-height: 1.4;
}

.btn:disabled { opacity: 0.6; cursor: not-allowed; }

.btn-primary { background: var(--navy); color: #fff; border-color: var(--navy-dark); }
.btn-primary:hover:not(:disabled) { background: var(--navy-mid); color: #fff; }

.btn-apply { background: var(--green); color: #fff; border-color: #0f5f2c; }
.btn-apply:hover:not(:disabled) { background: #106b32; color: #fff; }

.btn-saffron { background: var(--saffron); color: #fff; border-color: #9c330a; }
.btn-saffron:hover:not(:disabled) { background: var(--saffron-mid); color: #fff; }

.btn-outline { background: var(--white); color: var(--navy); border-color: var(--line); }
.btn-outline:hover:not(:disabled) { background: var(--navy-pale); color: var(--navy); }

.btn-block { width: 100%; }
.btn-lg { font-size: 15.5px; padding: 13px 26px; }

.btn-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.btn-row-split {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: space-between;
}

/* ---------------------------------------------------------------------
   10. Sidebar widgets
   --------------------------------------------------------------------- */

.side-links { list-style: none; padding: 0 !important; }

.side-links li + li { border-top: 1px solid var(--line-soft); }

.side-links a {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 10px 4px;
    font-size: 13.5px;
    text-decoration: none;
    color: var(--ink);
    font-weight: 700;
}

.side-links a:hover { color: var(--saffron); }
.side-links i { color: var(--navy-mid); width: 15px; text-align: center; }

.fee-callout {
    text-align: center;
    border: 1px dashed var(--saffron);
    background: var(--saffron-pale);
    padding: 14px;
}

.fee-callout .label {
    font-size: 11.5px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--saffron);
    font-weight: 700;
}

.fee-callout .amount {
    font-family: var(--font-title);
    font-size: 32px;
    font-weight: 700;
    color: var(--navy);
    line-height: 1.1;
}

.fee-callout .note { font-size: 12px; color: var(--muted); }

.helpdesk-line {
    display: flex;
    gap: 10px;
    font-size: 13.5px;
    color: var(--ink-soft);
    padding: 7px 0;
    border-bottom: 1px dashed var(--line-soft);
}

.helpdesk-line:last-child { border-bottom: 0; }
.helpdesk-line i { color: var(--navy-mid); width: 16px; text-align: center; margin-top: 3px; }

/* ---------------------------------------------------------------------
   11. Home page: highlights + post grid
   --------------------------------------------------------------------- */

.highlight-strip {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 20px;
}

.hl-card {
    background: var(--white);
    border: 1px solid var(--line);
    border-top: 3px solid var(--navy);
    padding: 14px 16px;
}

.hl-card .k {
    font-size: 11.5px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: var(--muted);
    font-weight: 700;
}

.hl-card .v {
    font-family: var(--font-title);
    font-size: 21px;
    font-weight: 700;
    color: var(--navy);
    line-height: 1.25;
}

.hl-card.hl-saffron { border-top-color: var(--saffron); }
.hl-card.hl-saffron .v { color: var(--saffron); }
.hl-card.hl-green { border-top-color: var(--green); }
.hl-card.hl-green .v { color: var(--green); }

.post-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(215px, 1fr));
    gap: 10px;
}

.post-chip {
    border: 1px solid var(--line);
    border-left: 3px solid var(--saffron);
    background: #fbfcfd;
    padding: 9px 12px;
    font-size: 13.5px;
    font-weight: 700;
    color: var(--navy);
    display: flex;
    align-items: center;
    gap: 8px;
}

.post-chip i { color: var(--saffron); font-size: 12px; }

/* ---------------------------------------------------------------------
   12. Forms
   --------------------------------------------------------------------- */

.form-note {
    font-size: 13px;
    color: var(--ink-soft);
    background: #f7f9fb;
    border: 1px solid var(--line-soft);
    padding: 10px 14px;
}

.req { color: var(--red); font-weight: 700; }

fieldset.form-block {
    border: 1px solid var(--line);
    padding: 0 16px 16px;
    margin-top: 20px;
}

fieldset.form-block legend {
    font-family: var(--font-title);
    font-size: 15.5px;
    font-weight: 700;
    color: var(--navy);
    background: var(--navy-pale);
    border: 1px solid var(--line);
    padding: 4px 14px;
}

.grid-2,
.grid-3 {
    display: grid;
    gap: 0 16px;
}

.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.field { margin-top: 14px; }

.field label {
    display: block;
    font-size: 13px;
    font-weight: 700;
    color: var(--ink);
    margin-bottom: 5px;
}

.field .hint {
    display: block;
    font-size: 12px;
    color: var(--muted);
    font-weight: 400;
    margin-top: 3px;
}

.control {
    width: 100%;
    font-family: var(--font);
    font-size: 14.5px;
    color: var(--ink);
    background: var(--white);
    border: 1px solid var(--line);
    padding: 9px 11px;
}

.control:focus { border-color: var(--navy-mid); }

.control[readonly] { background: #eef2f6; color: var(--muted); }

textarea.control { min-height: 82px; resize: vertical; }

select.control { height: 40px; }

/* Client-side validation marks the offending field, not just an alert box. */
.control.is-invalid { border-color: var(--red); background: #fffafa; }

.field-error {
    display: none;
    font-size: 12.5px;
    color: var(--red);
    margin-top: 4px;
}

.field-error.show { display: block; }

.mobile-group { display: flex; }

.mobile-group .cc {
    flex: 0 0 56px;
    text-align: center;
    font-weight: 700;
    background: #eef2f6;
    border: 1px solid var(--line);
    border-right: 0;
    color: var(--ink-soft);
    font-size: 14.5px;
    padding: 9px 0;
}

.mobile-group .control { border-left: 0; }

.declaration {
    display: flex;
    gap: 11px;
    align-items: flex-start;
    border: 1px solid var(--line);
    background: #f7f9fb;
    padding: 13px 15px;
    margin-top: 20px;
    font-size: 13.5px;
    color: var(--ink-soft);
}

.declaration input[type="checkbox"] {
    width: 17px;
    height: 17px;
    margin-top: 2px;
    flex: 0 0 17px;
    accent-color: var(--navy);
}

.form-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: center;
    justify-content: space-between;
    margin-top: 22px;
    padding-top: 18px;
    border-top: 1px solid var(--line);
}

/* ---------------------------------------------------------------------
   13. Receipt / acknowledgement
   --------------------------------------------------------------------- */

.receipt-head {
    text-align: center;
    border-bottom: 1px solid var(--line);
    padding: 24px 16px;
    background: var(--green-pale);
}

.receipt-head .tick {
    width: 52px;
    height: 52px;
    margin: 0 auto 12px;
    border-radius: 50%;
    background: var(--green);
    color: #fff;
    display: grid;
    place-items: center;
    font-size: 24px;
}

.receipt-head h3 {
    font-family: var(--font-title);
    font-size: 21px;
    color: var(--navy);
}

.receipt-head .regno {
    display: inline-block;
    margin-top: 10px;
    background: var(--white);
    border: 1px dashed var(--green);
    padding: 6px 16px;
    font-size: 16px;
    font-weight: 700;
    letter-spacing: 1px;
    color: var(--navy);
}

.lookup-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: flex-end;
}

.lookup-row .field { flex: 1 1 260px; margin-top: 0; }

.status-msg {
    display: flex;
    gap: 9px;
    align-items: flex-start;
    font-size: 13.5px;
    padding: 11px 14px;
    border: 1px solid var(--line);
    background: #f7f9fb;
    color: var(--ink-soft);
}

/* ---------------------------------------------------------------------
   14. Footer
   --------------------------------------------------------------------- */

.site-footer {
    background: var(--navy-dark);
    color: #b9cbdb;
    font-size: 13.5px;
    border-top: 4px solid var(--saffron);
    margin-top: 10px;
}

.footer-grid {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1.2fr;
    gap: 26px;
    padding: 30px 0 24px;
}

.site-footer h4 {
    font-family: var(--font-title);
    font-size: 15.5px;
    color: #fff;
    margin-bottom: 12px;
    padding-bottom: 7px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.16);
}

.site-footer ul { list-style: none; }
.site-footer li { padding: 4px 0; display: flex; gap: 9px; }
.site-footer li i { color: var(--saffron-mid); width: 15px; text-align: center; margin-top: 4px; }
.site-footer a { color: #b9cbdb; text-decoration: none; }
.site-footer a:hover { color: #ffd79a; text-decoration: underline; }

.footer-disclaimer {
    border-top: 1px solid rgba(255, 255, 255, 0.14);
    padding: 14px 0;
    font-size: 12.5px;
    color: #94aabd;
    line-height: 1.6;
}

.footer-bottom {
    border-top: 1px solid rgba(255, 255, 255, 0.14);
    padding: 12px 0;
    font-size: 12.5px;
    display: flex;
    flex-wrap: wrap;
    gap: 6px 16px;
    justify-content: space-between;
    color: #94aabd;
}

/* ---------------------------------------------------------------------
   15. Responsive
   --------------------------------------------------------------------- */

@media (max-width: 1000px) {
    .layout { grid-template-columns: 1fr; }
    .highlight-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 720px) {
    .identity-text h1 { font-size: 20px; }
    .identity-emblem { width: 54px; height: 54px; flex-basis: 54px; }
    .advt-box { width: 100%; }
    .page-title h2 { font-size: 21px; }

    .nav-toggle { display: block; }
    .nav-list { display: none; flex-direction: column; padding-bottom: 8px; }
    .nav-list.open { display: flex; }
    .nav-list > li + li { border-left: 0; border-top: 1px solid rgba(255, 255, 255, 0.14); }

    .grid-2, .grid-3 { grid-template-columns: 1fr; }
    .form-actions .btn, .btn-row .btn { width: 100%; }
    .footer-grid { grid-template-columns: 1fr; gap: 20px; }
}

@media (max-width: 460px) {
    .highlight-strip { grid-template-columns: 1fr; }
    table.kv td:first-child { width: 45%; }
}

/* ---------------------------------------------------------------------
   16. Print — used for the acknowledgement slip
   --------------------------------------------------------------------- */

@media print {
    .util-bar,
    .main-nav,
    .page-title,
    .breadcrumb,
    .site-footer,
    .no-print,
    aside { display: none !important; }

    body { background: #fff; font-size: 12pt; }
    .layout { display: block; }
    .box { border: 1px solid #000; }
    .box-head { background: #fff; }
    table.gov th, table.gov td, table.kv td { border: 1px solid #000; }
    table.gov thead th { background: #fff; color: #000; }
    a { color: #000; text-decoration: none; }
}

/* ---------------------------------------------------------------------
   17. Notice ticker animation
   Appended after the media queries so the paused-on-hover rule wins.
   --------------------------------------------------------------------- */

.ticker-text span {
    display: inline-block;
    padding-left: 100%;
    animation: ticker-scroll 26s linear infinite;
}

.ticker:hover .ticker-text span { animation-play-state: paused; }

@keyframes ticker-scroll {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-100%); }
}

@media (prefers-reduced-motion: reduce) {
    .ticker-text span { animation: none; padding-left: 0; }
}

/* =====================================================================
   18. MAIN-SITE COMPONENTS
   The fire portal is an announcement board; this site also has to sell
   courses. These are the extra pieces the marketing pages need, built
   from the same tokens so they still read as one official system.
   ===================================================================== */

/* ---- Static hero banner (a govt portal does not carousel) ---- */

.gov-hero {
    position: relative;
    background-color: var(--navy);
    /* The photograph is set per page as an inline style on the element, e.g.
       style="background-image:url('assets/images/banner-1.jpg')".
       It must NOT be passed through a CSS custom property: a relative url()
       inside a custom property resolves against the STYLESHEET's location
       (assets/css/), not the document, and silently 404s. */
    background-size: cover;
    background-position: center;
    border-bottom: 3px solid var(--saffron);
    color: #fff;
    overflow: hidden;
}

.gov-hero::after {
    /* Translucent scrim over the photo so the copy stays readable whatever
       the image is. Sits below .container, which is z-index 1. */
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(26, 74, 114, 0.84) 0%, rgba(18, 57, 91, 0.92) 100%);
    pointer-events: none;
}

.gov-hero .container {
    position: relative;
    z-index: 1;
    padding-top: 46px;
    padding-bottom: 46px;
}

.gov-hero .kicker {
    display: inline-block;
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: 1.4px;
    text-transform: uppercase;
    background: var(--saffron);
    color: #fff;
    padding: 4px 12px;
    margin-bottom: 14px;
}

.gov-hero h2 {
    font-family: var(--font-title);
    font-size: 34px;
    line-height: 1.2;
    font-weight: 700;
    max-width: 22ch;
}

.gov-hero p {
    margin-top: 12px;
    font-size: 15.5px;
    color: #cfe0ee;
    max-width: 62ch;
}

.gov-hero .btn-row { margin-top: 22px; }

/* ---- Course cards ---- */

.course-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(268px, 1fr));
    gap: 14px;
}

.course-card {
    border: 1px solid var(--line);
    border-top: 3px solid var(--navy);
    background: var(--white);
    padding: 16px 18px;
    display: flex;
    flex-direction: column;
}

.course-card h4 {
    font-family: var(--font-title);
    font-size: 16.5px;
    color: var(--navy);
    margin: 0 0 6px;
}

.course-card .meta {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 0.7px;
    color: var(--saffron);
    font-weight: 700;
    margin-bottom: 8px;
}

.course-card p {
    font-size: 13.5px;
    color: var(--ink-soft);
    margin: 0 0 14px;
    flex: 1;
}

.course-card .course-foot {
    border-top: 1px dashed var(--line);
    padding-top: 10px;
    font-size: 12.5px;
    color: var(--muted);
    display: flex;
    justify-content: space-between;
    gap: 10px;
}

/* ---- Feature / "why us" list ---- */

.feature-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 14px;
}

.feature-item {
    display: flex;
    gap: 12px;
    border: 1px solid var(--line-soft);
    background: #fbfcfd;
    padding: 14px 16px;
}

.feature-item i {
    color: var(--saffron);
    font-size: 18px;
    margin-top: 2px;
}

.feature-item h5 {
    font-size: 14.5px;
    color: var(--navy);
    margin: 0 0 3px;
}

.feature-item p { font-size: 13px; color: var(--ink-soft); margin: 0; }

/* ---- Gallery ---- */

.gallery-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 10px;
}

.gallery-grid a {
    display: block;
    border: 1px solid var(--line);
    padding: 4px;
    background: var(--white);
    line-height: 0;
}

.gallery-grid img {
    width: 100%;
    height: 132px;
    object-fit: cover;
}

.gallery-grid a:hover { border-color: var(--saffron); }

/* ---- Call-to-action band ---- */

.cta-band {
    background: var(--navy);
    color: #fff;
    border-left: 4px solid var(--saffron);
    padding: 22px 26px;
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
}

.cta-band h3 {
    font-family: var(--font-title);
    font-size: 20px;
    margin: 0 0 4px;
}

.cta-band p { font-size: 13.5px; color: #c9dcec; margin: 0; max-width: 60ch; }

/* ---- Contact form + map ---- */

.contact-grid {
    display: grid;
    grid-template-columns: 1.25fr 1fr;
    gap: 18px;
    align-items: start;
}

.map-frame {
    border: 1px solid var(--line);
    padding: 4px;
    background: var(--white);
    line-height: 0;
}

.map-frame iframe { width: 100%; height: 260px; border: 0; }

/* ---- Responsive ---- */

@media (max-width: 1000px) {
    .contact-grid { grid-template-columns: 1fr; }
}

@media (max-width: 720px) {
    .gov-hero h2 { font-size: 25px; }
    .gov-hero .container { padding-top: 32px; padding-bottom: 32px; }
    .cta-band { flex-direction: column; align-items: flex-start; }
    .cta-band .btn { width: 100%; }
    .gallery-grid img { height: 112px; }
}

/* Fire & Safety nav entry — the one link that leaves this site's colour
   scheme, so it is visibly a different intake. */
.nav-list a.nav-fire {
    background: var(--saffron);
    color: #fff;
}

.nav-list a.nav-fire:hover { background: var(--saffron-mid); color: #fff; }

/* =====================================================================
   Payment-pending note + floating Support button
   ===================================================================== */

/* Sits under the "Not Paid" badge wherever a pending fee is shown. */
.pay-note {
    display: block;
    margin-top: 6px;
    font-size: 12.5px;
    font-weight: 400;
    line-height: 1.5;
    color: var(--muted);
}

/* Floating support button, injected by the page script so it appears on
   every page without editing each file. */
.support-fab {
    position: fixed;
    right: 18px;
    bottom: 18px;
    z-index: 900;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    padding: 11px 18px;
    background: var(--navy);
    color: #fff;
    border: 1px solid var(--navy-dark);
    border-left: 4px solid var(--saffron);
    font-family: var(--font);
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
    box-shadow: 0 3px 12px rgba(11, 39, 64, 0.28);
}

.support-fab:hover { background: var(--navy-mid); color: #fff; }
.support-fab i { color: var(--saffron-mid); font-size: 15px; }

@media (max-width: 560px) {
    .support-fab { right: 12px; bottom: 12px; padding: 10px 14px; font-size: 13px; }
}

@media print { .support-fab { display: none !important; } }

/* =====================================================================
   19. ACKNOWLEDGEMENT — UNPAID STATE
   The screen after submitting used to be a green tick reading "Submitted
   Successfully", and candidates read that as "done" and never paid. The
   details ARE saved, so the page must not claim otherwise — but the
   application genuinely is not complete until the fee arrives, and the
   screen now says exactly that, in amber, with one obvious next action.
   ===================================================================== */

.receipt-head.ack-pending {
    background: var(--saffron-pale);
    border-bottom: 1px solid var(--saffron);
}

.receipt-head.ack-pending .tick {
    background: var(--saffron);
}

.receipt-head.ack-pending .regno {
    border-color: var(--saffron);
}

.receipt-head .regno-note {
    font-size: 12.5px;
    color: var(--ink-soft);
    margin-top: 8px;
}

/* ---- Step tracker ---- */

.pay-steps {
    list-style: none;
    margin: 0 0 20px;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    counter-reset: none;
}

.pay-steps li {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    border: 1px solid var(--line);
    border-top: 3px solid var(--line);
    background: var(--white);
    padding: 12px 14px;
}

.pay-steps li .n {
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    font-size: 12px;
    font-weight: 700;
    background: var(--line);
    color: var(--muted);
}

.pay-steps li .t {
    font-size: 13.5px;
    font-weight: 700;
    color: var(--muted);
    line-height: 1.35;
}

.pay-steps li .t em {
    display: block;
    font-style: normal;
    font-weight: 400;
    font-size: 12px;
    margin-top: 2px;
}

/* completed */
.pay-steps li.done { border-top-color: var(--green); }
.pay-steps li.done .n { background: var(--green); color: #fff; }
.pay-steps li.done .t { color: var(--navy); }
.pay-steps li.done .t em { color: var(--green); }

/* the one thing left to do */
.pay-steps li.now {
    border-top-color: var(--saffron);
    background: var(--saffron-pale);
}
.pay-steps li.now .n { background: var(--saffron); color: #fff; }
.pay-steps li.now .t { color: var(--navy); }
.pay-steps li.now .t em { color: var(--saffron); font-weight: 700; }

/* ---- The one action that matters on this screen ---- */

.pay-cta {
    border: 2px solid var(--saffron);
    background: var(--saffron-pale);
    padding: 18px 20px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 8px;
}

.pay-cta .pay-cta-text strong {
    display: block;
    font-family: var(--font-title);
    font-size: 17px;
    color: var(--navy);
    margin-bottom: 3px;
}

.pay-cta .pay-cta-text span {
    font-size: 13.5px;
    color: var(--ink-soft);
}

.pay-cta .btn { flex: 0 0 auto; }

@media (max-width: 720px) {
    .pay-steps { grid-template-columns: 1fr; }
    .pay-cta { flex-direction: column; align-items: stretch; }
    .pay-cta .btn { width: 100%; }
}

/* ---------------------------------------------------------------------
   Educational qualification table + document uploads (application.html)
   --------------------------------------------------------------------- */

/* Five columns do not fit a phone. Rather than restack the grid into
   something that stops looking like the certificate table candidates are
   copying from, let it scroll sideways and say so. */
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }

.block-note {
    font-size: 12.5px;
    color: var(--muted);
    margin: 10px 0 4px;
}

table.edu-table { min-width: 720px; margin-top: 6px; }

table.edu-table th[scope="row"] {
    white-space: nowrap;
    font-weight: 700;
    color: var(--navy);
    background: var(--navy-pale);
    width: 110px;
}

table.edu-table td { padding: 6px 8px; }

/* The cell is the border; a second one inside it is just noise. */
table.edu-table .control {
    border-color: transparent;
    background: transparent;
    padding: 6px 4px;
}

table.edu-table .control:focus {
    border-color: var(--navy-mid);
    background: var(--white);
}

table.edu-table .control.is-invalid {
    border-color: var(--red);
    background: #fffafa;
}

.uploads { margin-top: 6px; }

.upload-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    align-items: center;
    gap: 4px 16px;
    padding: 10px 0;
    border-bottom: 1px solid var(--line);
}

.upload-row:last-child { border-bottom: none; }

.upload-row label {
    font-size: 13.5px;
    font-weight: 700;
    color: var(--ink);
    margin: 0;
}

.upload-row .field-error { grid-column: 1 / -1; margin-top: 0; }

.control-file {
    width: 100%;
    font-family: var(--font);
    font-size: 13px;
    color: var(--ink);
    background: var(--white);
    border: 1px solid var(--line);
    padding: 7px 9px;
}

.control-file.is-invalid { border-color: var(--red); background: #fffafa; }

@media (max-width: 720px) {
    .upload-row { grid-template-columns: 1fr; }
}

/* ---------------------------------------------------------------------
   Focused application pages (body.form-only)

   The form is the whole page: no utility bar, no navigation, no footer,
   and one logo that goes home. Every other exit was a way to abandon a
   half-filled application.
   --------------------------------------------------------------------- */

.form-mast {
    background: var(--white);
    border-bottom: 3px solid var(--navy);
    padding: 16px 16px 14px;
    text-align: center;
}

.form-mast a {
    display: inline-block;
    line-height: 0;
}

.form-mast img {
    height: 84px;
    width: auto;
}

/* Without the sidebar the form would stretch to the container width, which
   is too wide to read a label and its field as one line. */
.form-solo { max-width: 880px; margin: 0 auto; }

.page-foot-note {
    max-width: 880px;
    margin: 0 auto;
    padding: 0 16px 34px;
    text-align: center;
    font-size: 12.5px;
    color: var(--muted);
}

@media (max-width: 720px) {
    .form-mast img { height: 62px; }
}

@media print {
    .form-mast { border-bottom: 1px solid #000; }
    .page-foot-note { color: #000; }
}
