/*!
 * gov-components.css  -  Reusable GIGW 3.0 / DBIM 3.0 components. Every class is prefixed gov-.
 * Requires gov-tokens.css + gov-base.css. Companion JS: see assets/js/gov-*.js
 */

/* ============ Buttons / CTA  (DBIM 4.5 i; 4 states: enabled, hover, focus, disabled) ============ */
.gov-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--gov-s2);
  min-height: 44px; min-width: 44px;                 /* target size (GIGW 5.2.35) */
  padding: var(--gov-s2) var(--gov-s5);              /* uniform padding on every button */
  font: 600 var(--gov-fs-p1)/1.2 var(--gov-font); text-decoration: none; cursor: pointer;
  border: 2px solid var(--gov-key); border-radius: var(--gov-radius);
  background: var(--gov-key); color: var(--gov-white);
  transition: background .15s, color .15s, box-shadow .15s;
}
.gov-root a.gov-btn { color: var(--gov-white); text-decoration: none; }
.gov-btn:hover, .gov-root a.gov-btn:hover { text-decoration: underline; background: var(--gov-accent); border-color: var(--gov-accent); color: var(--gov-white); box-shadow: var(--gov-shadow); }
.gov-btn[disabled], .gov-btn[aria-disabled="true"] { background: var(--gov-grey-1); border-color: var(--gov-grey-1); color: var(--gov-grey-3); cursor: not-allowed; box-shadow: none; }
.gov-btn--secondary, .gov-root a.gov-btn--secondary { background: var(--gov-white); color: var(--gov-key); }
.gov-btn--secondary:hover, .gov-root a.gov-btn--secondary:hover { background: var(--gov-5); color: var(--gov-key); border-color: var(--gov-key); }
.gov-btn--ghost, .gov-root a.gov-btn--ghost { background: transparent; border-color: transparent; color: var(--gov-key); }
.gov-btn--ghost:hover, .gov-root a.gov-btn--ghost:hover { background: var(--gov-5); color: var(--gov-key); border-color: var(--gov-5); }
.gov-btn--sm { min-height: 44px; padding: var(--gov-s1) var(--gov-s3); font-size: var(--gov-fs-p2); }
.gov-btn.is-loading { position: relative; cursor: progress; }
.gov-btn.is-loading::after { content: ""; width: 1em; height: 1em; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: gov-spin .7s linear infinite; }
@keyframes gov-spin { to { transform: rotate(360deg); } }

/* ============ Icons (DBIM ch.3): one style, key colour or white, 24/32/48/64px ============ */
.gov-icon { width: 24px; height: 24px; flex: none; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; color: var(--gov-key); }
.gov-icon--32 { width: 32px; height: 32px; } .gov-icon--48 { width: 48px; height: 48px; } .gov-icon--64 { width: 64px; height: 64px; }
.gov-icon--white { color: var(--gov-white); }
.gov-icon-btn .gov-icon, .gov-btn .gov-icon, .gov-topbar__btn .gov-icon, .gov-chatfab .gov-icon { color: inherit; }   /* icon follows the button's (key or white) colour */
.gov-icon-btn .gov-icon.gov-icon--white, .gov-btn .gov-icon.gov-icon--white { color: var(--gov-white); }
.gov-icon-btn { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0; background: transparent; border: 1px solid transparent; border-radius: var(--gov-radius); cursor: pointer; color: var(--gov-key); }
.gov-icon-btn:hover { background: var(--gov-5); border-color: var(--gov-4); }

/* ============ Tooltip (DBIM 3.8 i). Content must also be reachable by keyboard focus (5.2.20) ============ */
.gov-tip { position: relative; display: inline-flex; }
.gov-tip__text { position: absolute; z-index: 50; bottom: calc(100% + 6px); left: 50%; transform: translateX(-50%); width: max-content; max-width: 16rem;
  background: var(--gov-text); color: var(--gov-white); font-size: var(--gov-fs-p2); padding: var(--gov-s1) var(--gov-s2); border-radius: 4px; visibility: hidden; opacity: 0; transition: opacity .12s; pointer-events: none; }
.gov-tip:hover .gov-tip__text, .gov-tip:focus-within .gov-tip__text { visibility: visible; opacity: 1; }
.gov-tip__text.is-dismissed { visibility: hidden !important; }

/* ============ Top utility bar: user controls (DBIM 5.4: skip link, language, accessibility) ============ */
.gov-topbar { background: var(--gov-key); color: var(--gov-white); font-size: var(--gov-fs-p2); }
.gov-topbar .gov-container { display: flex; align-items: center; justify-content: space-between; gap: var(--gov-s3); flex-wrap: wrap; min-height: 44px; }
.gov-topbar__tag { margin: 0; }
.gov-topbar__controls { display: flex; align-items: center; gap: var(--gov-s1); flex-wrap: wrap; }
.gov-topbar a, .gov-root .gov-topbar a { color: var(--gov-white); }
.gov-topbar .gov-icon-btn, .gov-topbar .gov-icon { color: var(--gov-white); }
.gov-topbar .gov-icon-btn:hover { background: var(--gov-accent); border-color: var(--gov-accent); }
.gov-topbar__btn { display: inline-flex; align-items: center; gap: var(--gov-s1); min-height: 44px; padding: 0 var(--gov-s3); background: transparent; color: var(--gov-white); border: 1px solid transparent; border-radius: var(--gov-radius); font: 600 var(--gov-fs-p2)/1 var(--gov-font); cursor: pointer; text-decoration: none; }
.gov-topbar__btn:hover, .gov-topbar__btn[aria-expanded="true"], .gov-topbar__btn[aria-pressed="true"] { background: var(--gov-accent); border-color: var(--gov-4); }
.gov-topbar .gov-sep { width: 1px; height: 20px; background: var(--gov-3); }

/* Accessibility controls panel */
.gov-popover { position: relative; }
.gov-popover__panel { position: absolute; right: 0; top: calc(100% + 4px); z-index: 200; width: 18rem; max-width: 90vw; background: var(--gov-white); color: var(--gov-text); border: 1px solid var(--gov-grey-1); border-radius: var(--gov-radius); box-shadow: 0 6px 20px rgba(0,0,0,.25); padding: var(--gov-s4); }
.gov-popover__panel[hidden] { display: none; }
.gov-popover__panel h2, .gov-popover__panel h3 { font-size: var(--gov-fs-p1); margin-bottom: var(--gov-s2); color: var(--gov-key); }
.gov-popover__row { display: flex; gap: var(--gov-s2); margin-bottom: var(--gov-s3); flex-wrap: wrap; }
.gov-popover__panel .gov-btn { flex: 1 1 auto; padding-inline: var(--gov-s3); }
.gov-popover__panel .gov-btn[aria-pressed="true"] { background: var(--gov-text); border-color: var(--gov-text); }
:root[data-contrast="high"] .gov-popover__panel { background: #000; color: #fff; border-color: #fff; }

/* ============ Header (DBIM 5.4: lockup + co-brand + search + login; sticky) ============ */
.gov-header { background: var(--gov-white); border-bottom: 1px solid var(--gov-linen); position: sticky; top: 0; z-index: 100; box-shadow: var(--gov-shadow); }
:root[data-contrast="high"] .gov-header { background: #000; border-color: #fff; }
.gov-header__main { display: flex; align-items: center; gap: var(--gov-s4); min-height: var(--gov-header-h); padding-block: var(--gov-s2); flex-wrap: wrap; }
.gov-brand { display: flex; align-items: center; gap: var(--gov-s3); margin-right: auto; text-decoration: none !important; color: var(--gov-text) !important; background: none !important; }
.gov-brand img, .gov-brand svg.gov-emblem { height: 64px; width: auto; }       /* proportional only */
.gov-brand__text { display: flex; flex-direction: column; line-height: 1.25; }
.gov-brand__gov { font-size: var(--gov-fs-p2); font-weight: 500; }
.gov-brand__name { font-size: var(--gov-fs-h3); font-weight: 700; color: var(--gov-key); }
:root[data-contrast="high"] .gov-brand__name { color: #fff; }
.gov-cobrand { display: flex; gap: var(--gov-s3); align-items: center; }   /* max 2 logos (DBIM 5.4) */
.gov-cobrand img { height: 44px; width: auto; }
.gov-header--on-dark { background: var(--gov-key); }
.gov-header--on-dark .gov-brand, .gov-header--on-dark .gov-brand__name { color: var(--gov-white) !important; }

/* ============ Search (DBIM ch.9: header, consistent placement, sufficient length) ============ */
.gov-search { position: relative; flex: 1 1 280px; max-width: 480px; }
.gov-search form { display: flex; }
.gov-search input[type="search"] { flex: 1; min-height: 44px; padding: 0 var(--gov-s3); border: 2px solid var(--gov-key); border-right: 0; border-radius: var(--gov-radius) 0 0 var(--gov-radius); font: inherit; color: var(--gov-text); background: var(--gov-white); min-width: 0; }
.gov-search button[type="submit"] { border-radius: 0 var(--gov-radius) var(--gov-radius) 0; padding-inline: var(--gov-s3); }
.gov-search__voice { margin-left: var(--gov-s1); }
.gov-search__list { position: absolute; z-index: 150; left: 0; right: 0; top: 100%; background: var(--gov-white); color: var(--gov-text); border: 1px solid var(--gov-grey-1); border-radius: 0 0 var(--gov-radius) var(--gov-radius); box-shadow: 0 6px 16px rgba(0,0,0,.2); list-style: none; margin: 0; padding: 0; max-height: 18rem; overflow: auto; }
.gov-search__list li { padding: var(--gov-s2) var(--gov-s3); cursor: pointer; border-bottom: 1px solid var(--gov-linen); }
.gov-search__list li small { display: block; color: var(--gov-grey-3); }
.gov-search__list li[aria-selected="true"], .gov-search__list li:hover { background: var(--gov-5); }
.gov-search__list li.gov-search__empty { cursor: default; }
.gov-search__list[hidden] { display: none; }

/* ============ Global navigation (DBIM Annex A.1: 5 L1 sections, 3 levels) ============ */
.gov-nav { background: var(--gov-accent); color: var(--gov-white); }
:root[data-contrast="high"] .gov-nav { background: #000; border-block: 1px solid #fff; }
.gov-nav__toggle { display: none; }
.gov-nav__list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; }
.gov-nav__item { position: relative; }
.gov-nav__link, .gov-root .gov-nav__link { display: flex; align-items: center; gap: var(--gov-s1); min-height: 48px; padding: 0 var(--gov-s4); color: var(--gov-white); background: transparent; border: 0; font: 600 var(--gov-fs-p1)/1.2 var(--gov-font); text-decoration: none; cursor: pointer; width: 100%; text-align: left; }
.gov-nav__link:hover, .gov-root .gov-nav__link:hover, .gov-nav__link[aria-expanded="true"] { background: var(--gov-key); color: var(--gov-white); text-decoration: underline; text-underline-offset: 4px; }
.gov-nav__link[aria-current="page"] { box-shadow: inset 0 -4px 0 var(--gov-white); }
.gov-nav__link::after { content: ""; }
.gov-nav__link[aria-haspopup="true"]::after { width: .5em; height: .5em; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg) translateY(-2px); margin-left: var(--gov-s1); }
.gov-nav__panel { display: none; position: absolute; z-index: 120; left: 0; top: 100%; min-width: 17rem; background: var(--gov-white); color: var(--gov-text); border: 1px solid var(--gov-grey-1); box-shadow: 0 8px 20px rgba(0,0,0,.25); list-style: none; margin: 0; padding: var(--gov-s2) 0; }
.gov-nav__panel.is-open { display: block; }
.gov-nav__panel a, .gov-root .gov-nav__panel a { display: block; padding: var(--gov-s2) var(--gov-s4); color: var(--gov-key); text-decoration: none; font-weight: 500; }
.gov-nav__panel a:hover { background: var(--gov-5); }
.gov-nav__sub { padding: 0; margin: 0 0 0 var(--gov-s4); list-style: none; border-left: 3px solid var(--gov-4); }     /* level 3 */
.gov-nav__sub a { font-weight: 400; font-size: var(--gov-fs-p2); }
:root[data-contrast="high"] .gov-nav__panel { background: #000; border-color: #fff; }
@media (max-width: 767px) {
  .gov-nav__toggle { display: flex; align-items: center; gap: var(--gov-s2); width: 100%; min-height: 48px; padding: 0 var(--gov-s4); background: transparent; color: var(--gov-white); border: 0; font: 600 var(--gov-fs-p1)/1 var(--gov-font); cursor: pointer; }
  .gov-nav__list { display: none; flex-direction: column; }
  .gov-nav__list.is-open { display: flex; }
  .gov-nav__panel { position: static; box-shadow: none; border: 0; }
  .gov-header { position: static; }               /* Sticky nav only on larger screens (reflow 5.2.17) */
}

/* ============ Breadcrumb (GIGW 5.1.18 minimum content, 5.2.31 more than one way) ============ */
.gov-breadcrumb { padding-block: var(--gov-s3); font-size: var(--gov-fs-p2); }
.gov-breadcrumb ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--gov-s2); }
.gov-breadcrumb li + li::before { content: "/"; margin-right: var(--gov-s2); color: var(--gov-grey-3); }
.gov-breadcrumb [aria-current="page"] { font-weight: 600; }

/* ============ Cards / tiles / lists ============ */
.gov-grid { display: grid; gap: var(--gov-s4); }
.gov-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
.gov-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); }
.gov-grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
.gov-card { background: var(--gov-white); border: 1px solid var(--gov-linen); border-radius: var(--gov-radius); box-shadow: var(--gov-shadow); overflow: hidden; display: flex; flex-direction: column; }
:root[data-contrast="high"] .gov-card { background: #000; border-color: #fff; }
.gov-card__body { padding: var(--gov-s4); flex: 1; }
.gov-card__body h3 { margin-bottom: var(--gov-s2); }
.gov-card__media { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: var(--gov-5); }   /* fixed ratio => no layout shift (DBIM 10.3.1) */
.gov-card__foot { padding: var(--gov-s3) var(--gov-s4); border-top: 1px solid var(--gov-linen); display: flex; justify-content: space-between; align-items: center; gap: var(--gov-s2); }
.gov-tile, .gov-root a.gov-tile { display: flex; flex-direction: column; align-items: flex-start; gap: var(--gov-s2); padding: var(--gov-s4); background: var(--gov-white); border: 2px solid var(--gov-4); border-radius: var(--gov-radius); text-decoration: none; color: var(--gov-text); }
.gov-tile:hover, .gov-root a.gov-tile:hover { background: var(--gov-5); border-color: var(--gov-key); }
.gov-tile__title { font-weight: 700; color: var(--gov-key); font-size: var(--gov-fs-h3); }
.gov-list-plain { list-style: none; padding: 0; }
.gov-list-plain li { padding: var(--gov-s3) 0; border-bottom: 1px solid var(--gov-linen); }
.gov-section-head { display: flex; justify-content: space-between; align-items: center; gap: var(--gov-s3); margin-bottom: var(--gov-s4); flex-wrap: wrap; }
.gov-section-head h2 { margin: 0; }

/* Quote / headshot (DBIM A.4.1.2 iv, 6.1.4) */
.gov-quote { display: grid; grid-template-columns: 160px 1fr; gap: var(--gov-s5); align-items: center; background: var(--gov-linen); padding: var(--gov-s5); border-radius: var(--gov-radius); }
.gov-quote blockquote { margin: 0; color: var(--gov-key); font-size: var(--gov-fs-h3); font-weight: 600; }
.gov-quote cite { display: block; margin-top: var(--gov-s2); font-size: var(--gov-fs-p2); font-style: normal; color: var(--gov-text); }
.gov-headshot { aspect-ratio: 1 / 1; width: 100%; object-fit: cover; background: var(--gov-white); border-radius: 50%; }   /* 1:1, white bg */
@media (max-width: 600px) { .gov-quote { grid-template-columns: 1fr; text-align: left; } .gov-quote .gov-headshot { max-width: 140px; } }
:root[data-contrast="high"] .gov-quote { background: #000; border: 1px solid #fff; } :root[data-contrast="high"] .gov-quote blockquote { color: #fff; }

/* ============ Announcement ticker (DBIM A.4.1.2 iii; GIGW 5.2.25 pause control) ============ */
.gov-ticker { display: flex; align-items: center; gap: var(--gov-s3); background: var(--gov-5); border-block: 1px solid var(--gov-4); }
.gov-ticker__label { flex: none; background: var(--gov-key); color: var(--gov-white); padding: var(--gov-s2) var(--gov-s4); font-weight: 600; align-self: stretch; display: flex; align-items: center; }
.gov-ticker__viewport { overflow: hidden; flex: 1; white-space: nowrap; }
.gov-ticker__track { display: inline-flex; gap: var(--gov-s6); padding-block: var(--gov-s2); animation: gov-ticker 40s linear infinite; }
.gov-ticker.is-paused .gov-ticker__track, .gov-ticker__viewport:hover .gov-ticker__track, .gov-ticker__viewport:focus-within .gov-ticker__track { animation-play-state: paused; }
@keyframes gov-ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }
.gov-ticker__ctl { flex: none; }
@media (prefers-reduced-motion: reduce) { .gov-ticker__track { animation: none; flex-wrap: wrap; white-space: normal; } }

/* ============ Carousel (DBIM A.4.1.2 ii; sizes 1800x338/500/600) ============ */
.gov-carousel { position: relative; background: var(--gov-key); }
.gov-carousel__slides { position: relative; aspect-ratio: 1800 / 500; overflow: hidden; }
.gov-carousel__slide { position: absolute; inset: 0; opacity: 0; visibility: hidden; transition: opacity .5s; display: flex; align-items: center; }
.gov-carousel__slide.is-active { opacity: 1; visibility: visible; }
.gov-carousel__slide > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.gov-carousel__caption { position: relative; z-index: 1; max-width: 640px; margin-left: var(--gov-s7); padding: var(--gov-s4) var(--gov-s5); background: rgba(0,0,0,.8); color: var(--gov-white); border-radius: var(--gov-radius); }   /* text is HTML overlaid on image (DBIM 8.1) on 80% black overlay (DBIM 3.7 v) */
.gov-carousel__caption h2 { color: var(--gov-white); margin-bottom: var(--gov-s2); }
.gov-carousel__caption p { margin-bottom: var(--gov-s3); }
.gov-carousel__controls { display: flex; align-items: center; justify-content: center; gap: var(--gov-s2); padding: var(--gov-s2); background: var(--gov-key); }
.gov-carousel__controls .gov-icon-btn { color: var(--gov-white); } .gov-carousel__controls .gov-icon-btn:hover { background: var(--gov-accent); }
.gov-carousel__dots { display: flex; gap: var(--gov-s1); }
.gov-carousel__dot { width: 44px; height: 44px; background: transparent; border: 0; cursor: pointer; position: relative; }
.gov-carousel__dot::after { content: ""; position: absolute; inset: 16px; border-radius: 50%; background: var(--gov-4); border: 2px solid var(--gov-white); }
.gov-carousel__dot[aria-current="true"]::after { background: var(--gov-white); }
@media (max-width: 767px) { .gov-carousel__slides { aspect-ratio: 4 / 3; } .gov-carousel__caption { margin: var(--gov-s3); padding: var(--gov-s3); } .gov-carousel__caption h2 { font-size: var(--gov-fs-h3); } }

/* ============ Forms (DBIM Annex B; GIGW 5.2.44-5.2.46) ============ */
.gov-form { max-width: 40rem; }
.gov-form__intro { background: var(--gov-5); border-left: 4px solid var(--gov-key); padding: var(--gov-s3) var(--gov-s4); margin-bottom: var(--gov-s5); }   /* instructions first */
.gov-field { margin-bottom: var(--gov-s4); }                       /* one field per line */
.gov-label { display: block; font-weight: 600; margin-bottom: var(--gov-s1); }   /* sentence case, on top, clickable via for= */
.gov-label .gov-req { color: #b02a37; font-weight: 700; }           /* asterisk + word 'required' for sighted + SR users */
.gov-hint { display: block; font-size: var(--gov-fs-p2); color: var(--gov-fg-muted); margin-bottom: var(--gov-s1); }
.gov-input, .gov-select, .gov-textarea { display: block; width: 100%; min-height: 44px; padding: var(--gov-s2) var(--gov-s3); font: inherit; color: var(--gov-text); background: var(--gov-white); border: 2px solid var(--gov-grey-3); border-radius: var(--gov-radius); }
.gov-textarea { min-height: 8rem; resize: vertical; }
.gov-input--sm { max-width: 10rem; } .gov-input--md { max-width: 20rem; }   /* size to expected input (DBIM B x) */
.gov-input:hover, .gov-select:hover, .gov-textarea:hover { border-color: var(--gov-key); }
.gov-input[aria-invalid="true"], .gov-select[aria-invalid="true"], .gov-textarea[aria-invalid="true"] { border-color: #b02a37; border-width: 3px; }
.gov-input:disabled, .gov-select:disabled, .gov-textarea:disabled { background: var(--gov-linen); color: var(--gov-grey-3); border-color: var(--gov-grey-1); cursor: not-allowed; }
.gov-error { display: flex; gap: var(--gov-s1); color: #b02a37; font-weight: 600; font-size: var(--gov-fs-p2); margin-top: var(--gov-s1); }
.gov-error::before { content: "Error:"; }                           /* not colour alone (5.2.12) */
:root[lang="hi"] .gov-error::before { content: "त्रुटि:"; }
.gov-error[hidden] { display: none; }
.gov-fieldset { border: 1px solid var(--gov-grey-1); border-radius: var(--gov-radius); padding: var(--gov-s3) var(--gov-s4); margin: 0 0 var(--gov-s4); min-width: 0; }
.gov-fieldset legend { font-weight: 600; padding: 0 var(--gov-s2); }
.gov-choice { display: flex; align-items: center; gap: var(--gov-s3); min-height: 44px; }
.gov-choice input { width: 1.5rem; height: 1.5rem; accent-color: var(--gov-key); flex: none; margin: 0; }
.gov-choice label { cursor: pointer; flex: 1; padding-block: var(--gov-s1); }
.gov-form__actions { display: flex; gap: var(--gov-s3); flex-wrap: wrap; margin-top: var(--gov-s5); }
.gov-steps { display: flex; gap: var(--gov-s2); list-style: none; padding: 0; margin: 0 0 var(--gov-s5); flex-wrap: wrap; }
.gov-steps li { flex: 1 1 8rem; padding: var(--gov-s2) var(--gov-s3); border-bottom: 4px solid var(--gov-grey-1); font-weight: 600; color: var(--gov-fg-muted); }
.gov-steps li[aria-current="step"] { border-color: var(--gov-key); color: var(--gov-key); }
.gov-steps li.is-done { border-color: var(--gov-success); }

/* Status / alerts (GIGW 5.2.48 status messages; colour + icon text, never colour only) */
.gov-alert { display: flex; gap: var(--gov-s3); padding: var(--gov-s3) var(--gov-s4); border-left: 6px solid; border-radius: var(--gov-radius); background: var(--gov-white); border-color: var(--gov-key); box-shadow: var(--gov-shadow); margin-bottom: var(--gov-s4); }
.gov-alert strong:first-child { flex: none; }
.gov-alert--success { border-color: var(--gov-success); background: #eaf6ef; }
.gov-alert--warning { border-color: var(--gov-warning); background: #fff8e1; }
.gov-alert--error { border-color: var(--gov-error); background: #fdecee; }
.gov-alert--info { border-color: var(--gov-accent); background: var(--gov-5); }
.gov-alert { color: var(--gov-text); }

/* ============ Download item (GIGW 5.1.6: title, format, size, usage) ============ */
.gov-download { display: flex; justify-content: space-between; align-items: center; gap: var(--gov-s4); padding: var(--gov-s3) var(--gov-s4); border: 1px solid var(--gov-linen); border-radius: var(--gov-radius); flex-wrap: wrap; }
.gov-download__meta { color: var(--gov-fg-muted); font-size: var(--gov-fs-p2); margin: 0; }

/* ============ Footer (DBIM 5.6; key colour background) ============ */
.gov-footer { background: var(--gov-key); color: var(--gov-white); padding-top: var(--gov-s6); margin-top: var(--gov-s7); font-size: var(--gov-fs-p2); }
.gov-footer a, .gov-root .gov-footer a { color: var(--gov-white); }
.gov-footer a:hover, .gov-root .gov-footer a:hover { background: var(--gov-accent); }
.gov-footer h2, .gov-root .gov-footer h2 { color: var(--gov-white); font-size: var(--gov-fs-p1); margin-bottom: var(--gov-s3); border-bottom: 1px solid var(--gov-3); padding-bottom: var(--gov-s2); }
.gov-footer ul { list-style: none; padding: 0; margin: 0; }
.gov-footer li { padding-block: var(--gov-s1); }
.gov-footer__sub { padding-left: var(--gov-s4); }   /* sitemap level 2 */
.gov-footer__lineage { border-top: 1px solid var(--gov-3); margin-top: var(--gov-s5); padding-block: var(--gov-s4); display: flex; justify-content: space-between; gap: var(--gov-s4); flex-wrap: wrap; }
.gov-footer__lineage p { margin: 0; }
.gov-social { display: flex; gap: var(--gov-s2); }
.gov-footer-carousel { background: var(--gov-white); border-top: 1px solid var(--gov-linen); padding-block: var(--gov-s4); }
.gov-logo-strip { display: flex; gap: var(--gov-s5); align-items: center; justify-content: center; flex-wrap: wrap; list-style: none; margin: 0; padding: 0; }
.gov-logo-strip img { height: 48px; width: auto; }

/* ============ Cookie consent (DBIM 7.6; bottom of page; accept / reject / customise) ============ */
.gov-cookie { position: fixed; z-index: 900; left: 0; right: 0; bottom: 0; background: var(--gov-white); color: var(--gov-text); border-top: 4px solid var(--gov-key); box-shadow: 0 -4px 16px rgba(0,0,0,.25); padding: var(--gov-s4) 0; }
.gov-cookie[hidden] { display: none; }
.gov-cookie__inner { display: flex; gap: var(--gov-s5); align-items: center; justify-content: space-between; flex-wrap: wrap; }
.gov-cookie__text { flex: 1 1 28rem; margin: 0; }
.gov-cookie__actions { display: flex; gap: var(--gov-s2); flex-wrap: wrap; }
.gov-cookie__prefs { margin-top: var(--gov-s4); flex-basis: 100%; }
.gov-cookie__prefs[hidden] { display: none; }
:root[data-contrast="high"] .gov-cookie { background: #000; color: #fff; border-color: #fff; }

/* ============ Modal / overlay banner (DBIM 7.4.2 overlay banner; focus trap via gov-ui.js) ============ */
.gov-modal { position: fixed; inset: 0; z-index: 950; display: flex; align-items: center; justify-content: center; padding: var(--gov-s4); background: rgba(0,0,0,.65); }
.gov-modal[hidden] { display: none; }
.gov-modal__box { background: var(--gov-white); color: var(--gov-text); border-radius: var(--gov-radius); max-width: 640px; width: 100%; max-height: 90vh; overflow: auto; position: relative; padding: var(--gov-s5); }
.gov-modal__close { position: absolute; top: var(--gov-s2); right: var(--gov-s2); }

/* ============ Chatbot floating button (DBIM ch.9 xiii: bottom-right) ============ */
.gov-chatfab { position: fixed; right: var(--gov-s4); bottom: var(--gov-s4); z-index: 800; width: 56px; height: 56px; border-radius: 50%; background: var(--gov-key); color: var(--gov-white); border: 2px solid var(--gov-white); box-shadow: 0 4px 12px rgba(0,0,0,.35); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; }
.gov-chatfab:hover { background: var(--gov-accent); }
.gov-chatfab .gov-icon { color: var(--gov-white); }
.gov-cookie:not([hidden]) ~ .gov-chatfab { bottom: 9rem; }

/* ============ Tabs / accordion ============ */
.gov-tabs [role="tablist"] { display: flex; gap: 2px; border-bottom: 2px solid var(--gov-key); flex-wrap: wrap; }
.gov-tabs [role="tab"] { min-height: 44px; padding: 0 var(--gov-s4); background: var(--gov-5); color: var(--gov-key); border: 1px solid var(--gov-4); border-bottom: 0; border-radius: var(--gov-radius) var(--gov-radius) 0 0; font: 600 var(--gov-fs-p2)/1 var(--gov-font); cursor: pointer; }
.gov-tabs [role="tab"][aria-selected="true"] { background: var(--gov-key); color: var(--gov-white); }
.gov-tabs [role="tabpanel"] { padding: var(--gov-s4) 0; }
.gov-accordion__btn { display: flex; width: 100%; justify-content: space-between; align-items: center; min-height: 48px; padding: var(--gov-s2) var(--gov-s4); background: var(--gov-5); color: var(--gov-key); border: 1px solid var(--gov-4); font: 600 var(--gov-fs-p1)/1.3 var(--gov-font); text-align: left; cursor: pointer; }
.gov-accordion__btn::after { content: "+"; font-size: 1.5rem; }
.gov-accordion__btn[aria-expanded="true"]::after { content: "\2212"; }
.gov-accordion__panel { padding: var(--gov-s4); border: 1px solid var(--gov-4); border-top: 0; }
.gov-accordion__panel[hidden] { display: none; }

/* External link marker (hyperlink policy; DBIM 7.1.3.3 'clearly identifiable') */
a[data-gov-external]:not(:has(img))::after { content: " \2197"; font-size: .85em; }

/* Back to top */
.gov-top { position: fixed; left: var(--gov-s4); bottom: var(--gov-s4); z-index: 700; }
.gov-top[hidden] { display: none; }

/* Skeleton (DBIM 10.1.3) */
.gov-skeleton { background: linear-gradient(90deg, var(--gov-linen) 25%, #f6f5f5 50%, var(--gov-linen) 75%); background-size: 200% 100%; animation: gov-shimmer 1.4s infinite; border-radius: var(--gov-radius); min-height: 1rem; }
@keyframes gov-shimmer { to { background-position: -200% 0; } }

/* Hindi: slightly more line height for Devanagari matras */
:root[lang="hi"] .gov-root { line-height: 1.6; }
