/* ==========================================================================
   INDIAN LEGAL FORUM — DESIGN SYSTEM
   --------------------------------------------------------------------------
   Loaded AFTER css/legacy.css, so anything declared here wins.

   Layers
     1. Design tokens
     2. Token bridges (legacy + Bootstrap variables)
     3. Base / reset
     4. Layout primitives
     5. Components
     6. Shell — header, search band, drawer, mobile app bar, footer
     7. Utilities + responsive

   Rule of thumb: no hard-coded colours or sizes outside layer 1.
   ========================================================================== */


/* ==========================================================================
   1. DESIGN TOKENS
   ========================================================================== */
:root {
    /* --- brand ---------------------------------------------------------- */
    --ilf-navy:      #0B2545;   /* ink navy — header, footer, headings      */
    --ilf-navy-800:  #123A66;
    --ilf-navy-600:  #1D4E89;
    --ilf-navy-100:  #DCE6F2;
    --ilf-navy-50:   #EEF3F9;

    --ilf-accent:      #FF9933;  /* saffron — accent only, never a field    */
    --ilf-accent-700:  #C96F12;
    --ilf-accent-100:  #FFE7CC;
    --ilf-accent-50:   #FFF5EB;

    --ilf-green:     #138808;
    --ilf-green-700: #0E6205;
    --ilf-green-100: #D6F0D3;
    --ilf-green-50:  #EFF9EE;

    /* the Indian cue: a 3px hairline, replaces the old silver gradient */
    --ilf-tricolour: linear-gradient(90deg,
        var(--ilf-accent) 0 33.33%, #ffffff 33.33% 66.66%, var(--ilf-green) 66.66% 100%);

    /* --- neutrals ------------------------------------------------------- */
    --ilf-ink:        #101828;
    --ilf-body:       #475467;
    --ilf-muted:      #667085;
    --ilf-line:       #E4E7EC;
    --ilf-line-soft:  #F0F2F5;
    --ilf-surface:    #FFFFFF;
    --ilf-canvas:     #F7F8FA;

    /* --- status --------------------------------------------------------- */
    --ilf-success: #067647; --ilf-success-bg: #ECFDF3; --ilf-success-line: #ABEFC6;
    --ilf-warning: #B54708; --ilf-warning-bg: #FFFAEB; --ilf-warning-line: #FEDF89;
    --ilf-danger:  #B42318; --ilf-danger-bg:  #FEF3F2; --ilf-danger-line:  #FECDCA;
    --ilf-info:    #175CD3; --ilf-info-bg:    #EFF8FF; --ilf-info-line:    #B2DDFF;

    /* --- typography ----------------------------------------------------- */
    --ilf-font-display: 'Montserrat', 'Segoe UI', system-ui, sans-serif;
    --ilf-font-body:    'Roboto', 'Segoe UI', system-ui, -apple-system, sans-serif;

    --ilf-fs-xs:   0.75rem;
    --ilf-fs-sm:   0.8125rem;
    --ilf-fs-base: 0.9375rem;
    --ilf-fs-md:   1.0625rem;
    --ilf-fs-lg:   1.25rem;
    --ilf-fs-xl:   1.5rem;
    --ilf-fs-2xl:  1.875rem;
    --ilf-fs-3xl:  2.375rem;
    --ilf-lh:      1.6;

    /* --- spacing -------------------------------------------------------- */
    --ilf-sp-1: 0.25rem; --ilf-sp-2: 0.5rem;  --ilf-sp-3: 0.75rem;
    --ilf-sp-4: 1rem;    --ilf-sp-5: 1.5rem;  --ilf-sp-6: 2rem;
    --ilf-sp-7: 3rem;    --ilf-sp-8: 4rem;

    /* --- radius / shadow ------------------------------------------------ */
    --ilf-r-sm: 6px;  --ilf-r: 10px; --ilf-r-lg: 14px;
    --ilf-r-xl: 20px; --ilf-r-pill: 999px;

    --ilf-sh-xs: 0 1px 2px rgba(16,24,40,.05);
    --ilf-sh-sm: 0 1px 3px rgba(16,24,40,.08), 0 1px 2px rgba(16,24,40,.04);
    --ilf-sh:    0 4px 12px rgba(16,24,40,.07), 0 2px 4px rgba(16,24,40,.04);
    --ilf-sh-lg: 0 12px 32px rgba(16,24,40,.10), 0 4px 8px rgba(16,24,40,.04);

    /* --- layout / motion ------------------------------------------------ */
    --ilf-container: 1200px;
    --ilf-header-h:  64px;
    --ilf-appbar-h:  64px;
    --ilf-t-fast:    .15s ease;
    --ilf-t:         .25s ease;

    /* --- z index -------------------------------------------------------- */
    --ilf-z-header: 900; --ilf-z-drawer: 950;
    --ilf-z-modal: 1000; --ilf-z-toast: 1100;
}


/* ==========================================================================
   2. TOKEN BRIDGES
   Legacy.css reads these names, so re-pointing them recolours the old rules
   instantly instead of needing them all rewritten by hand.
   ========================================================================== */
:root {
    --ind-saffron: var(--ilf-accent);
    --ind-green:   var(--ilf-green);
    --dark-green:  var(--ilf-green-700);
    --royal-navy:  var(--ilf-navy);
    --dark-silver: var(--ilf-body);
}

/* Bootstrap 5 reads these, so its own components adopt the new look too. */
:root {
    --bs-body-font-family:  var(--ilf-font-body);
    --bs-body-font-size:    var(--ilf-fs-base);
    --bs-body-color:        var(--ilf-body);
    --bs-body-bg:           var(--ilf-canvas);
    --bs-body-line-height:  var(--ilf-lh);

    --bs-primary:           #0B2545;
    --bs-primary-rgb:       11,37,69;
    --bs-link-color:        var(--ilf-navy-600);
    --bs-link-hover-color:  var(--ilf-navy);

    --bs-border-color:      var(--ilf-line);
    --bs-border-radius:     var(--ilf-r);
    --bs-border-radius-sm:  var(--ilf-r-sm);
    --bs-border-radius-lg:  var(--ilf-r-lg);

    --bs-heading-color:     var(--ilf-ink);
    --bs-secondary-color:   var(--ilf-muted);
    --bs-emphasis-color:    var(--ilf-ink);
}

/* Heading font + scale for Bootstrap's own heading classes. */
h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4, .h5, .h6 {
    font-family: var(--ilf-font-display);
    font-weight: 700;
    color: var(--ilf-ink);
    letter-spacing: -0.01em;
}


/* ==========================================================================
   3. BASE / RESET
   ========================================================================== */
*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
    font-family: var(--ilf-font-body);
    font-size: var(--ilf-fs-base);
    line-height: var(--ilf-lh);
    color: var(--ilf-body);
    background: var(--ilf-canvas);
    margin: 0;
    overflow-x: hidden;                 /* no sideways scroll on phones */
    -webkit-font-smoothing: antialiased;
}

img, svg, video { max-width: 100%; height: auto; display: block; }

a { color: var(--ilf-navy-600); text-decoration: none; }
a:hover { color: var(--ilf-navy); }

p { margin: 0 0 var(--ilf-sp-4); }

/* Visible keyboard focus, but only for keyboard users. */
:focus-visible {
    outline: 3px solid var(--ilf-accent);
    outline-offset: 2px;
    border-radius: var(--ilf-r-sm);
}
:focus:not(:focus-visible) { outline: none; }

::selection { background: var(--ilf-accent-100); color: var(--ilf-ink); }

/* Thin, unobtrusive scrollbars */
* { scrollbar-width: thin; scrollbar-color: var(--ilf-line) transparent; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-thumb { background: var(--ilf-line); border-radius: var(--ilf-r-pill); }
*::-webkit-scrollbar-thumb:hover { background: var(--ilf-muted); }

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after {
        animation-duration: .001ms !important;
        transition-duration: .001ms !important;
    }
}


/* ==========================================================================
   4. LAYOUT PRIMITIVES
   ========================================================================== */
.ilf-container {
    width: 100%;
    max-width: var(--ilf-container);
    margin-inline: auto;
    padding-inline: var(--ilf-sp-4);
}
@media (min-width: 768px) { .ilf-container { padding-inline: var(--ilf-sp-5); } }

.ilf-page    { padding-block: var(--ilf-sp-6); }
.ilf-section { padding-block: var(--ilf-sp-7); }
.ilf-section--tight { padding-block: var(--ilf-sp-5); }

.ilf-section-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: var(--ilf-sp-4);
    flex-wrap: wrap;
    margin-bottom: var(--ilf-sp-5);
}
.ilf-section-head > :first-child { min-width: 0; }
.ilf-section-head h2, .ilf-section-head h3 { margin: 0; }

.ilf-eyebrow {
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-xs);
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--ilf-accent-700);
    display: block;
    margin-bottom: var(--ilf-sp-1);
}

.ilf-lead { font-size: var(--ilf-fs-md); color: var(--ilf-muted); }

.ilf-stack > * + * { margin-top: var(--ilf-sp-4); }
.ilf-row   { display: flex; gap: var(--ilf-sp-3); flex-wrap: wrap; align-items: center; }

.ilf-grid { display: grid; gap: var(--ilf-sp-4); }
.ilf-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.ilf-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ilf-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 991px) {
    .ilf-grid--3, .ilf-grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575px) {
    .ilf-grid--2, .ilf-grid--3, .ilf-grid--4 { grid-template-columns: 1fr; }
}


/* ==========================================================================
   5. COMPONENTS
   ========================================================================== */

/* --- 5.1 Buttons -------------------------------------------------------- */
.ilf-btn {
    --_bg: var(--ilf-navy);
    --_fg: #ffffff;
    --_bd: var(--ilf-navy);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--ilf-sp-2);
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-sm);
    font-weight: 700;
    line-height: 1;
    padding: .75rem 1.25rem;
    min-height: 44px;                    /* comfortable tap target */
    color: var(--_fg);
    background: var(--_bg);
    border: 1px solid var(--_bd);
    border-radius: var(--ilf-r-pill);
    cursor: pointer;
    text-decoration: none;
    white-space: nowrap;
    transition: transform var(--ilf-t-fast), box-shadow var(--ilf-t-fast),
                background var(--ilf-t-fast), color var(--ilf-t-fast);
}
.ilf-btn:hover  { color: var(--_fg); transform: translateY(-1px); box-shadow: var(--ilf-sh); }
.ilf-btn:active { transform: none; box-shadow: none; }
.ilf-btn:disabled, .ilf-btn.is-disabled { opacity: .55; pointer-events: none; }

.ilf-btn--accent  { --_bg: var(--ilf-accent); --_fg: #3A2408; --_bd: var(--ilf-accent); }
.ilf-btn--accent:hover { --_bg: var(--ilf-accent-700); --_fg: #fff; --_bd: var(--ilf-accent-700); }

.ilf-btn--outline { --_bg: transparent; --_fg: var(--ilf-navy); --_bd: var(--ilf-line); }
.ilf-btn--outline:hover { --_bg: var(--ilf-navy-50); --_bd: var(--ilf-navy-100); }

.ilf-btn--ghost { --_bg: transparent; --_fg: var(--ilf-navy); --_bd: transparent; }
.ilf-btn--ghost:hover { --_bg: var(--ilf-navy-50); box-shadow: none; }

.ilf-btn--danger { --_bg: var(--ilf-danger);  --_fg: #fff; --_bd: var(--ilf-danger); }
.ilf-btn--white  { --_bg: #ffffff; --_fg: var(--ilf-navy); --_bd: #ffffff; }

.ilf-btn--sm    { padding: .5rem .9rem;    min-height: 38px; font-size: var(--ilf-fs-xs); }
.ilf-btn--lg    { padding: .95rem 1.75rem; min-height: 52px; font-size: var(--ilf-fs-base); }
.ilf-btn--block { width: 100%; }

/* Legacy alias: .btn-action is used on many existing pages. */
.btn-action {
    display: inline-flex; align-items: center; justify-content: center; gap: var(--ilf-sp-2);
    min-height: 40px; padding: .6rem 1.1rem;
    font-family: var(--ilf-font-display); font-size: var(--ilf-fs-xs); font-weight: 700;
    color: #fff !important; background: var(--ilf-navy);
    border: 1px solid var(--ilf-navy); border-radius: var(--ilf-r-pill);
    text-decoration: none !important; transition: var(--ilf-t-fast);
}
.btn-action:hover { background: var(--ilf-navy-800); border-color: var(--ilf-navy-800); transform: translateY(-1px); }
.btn-action.is-active { background: var(--ilf-accent); border-color: var(--ilf-accent); color: #3A2408 !important; }

/* --- 5.2 Form fields ---------------------------------------------------- */
.ilf-field { display: block; margin-bottom: var(--ilf-sp-4); }

.ilf-label {
    display: block;
    margin-bottom: var(--ilf-sp-2);
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-sm);
    font-weight: 600;
    color: var(--ilf-ink);
}
.ilf-req { color: var(--ilf-danger); }

.ilf-input, .ilf-select, .ilf-textarea {
    width: 100%;
    font-family: var(--ilf-font-body);
    font-size: var(--ilf-fs-base);
    color: var(--ilf-ink);
    background: var(--ilf-surface);
    border: 1px solid var(--ilf-line);
    border-radius: var(--ilf-r);
    padding: .7rem .85rem;
    min-height: 46px;
    transition: border-color var(--ilf-t-fast), box-shadow var(--ilf-t-fast);
}
.ilf-textarea { min-height: 120px; resize: vertical; }
.ilf-input::placeholder, .ilf-textarea::placeholder { color: #98A2B3; }

.ilf-input:focus, .ilf-select:focus, .ilf-textarea:focus {
    outline: none;
    border-color: var(--ilf-navy-600);
    box-shadow: 0 0 0 4px var(--ilf-navy-50);
}

.ilf-select {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23667085' stroke-width='2'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right .8rem center;
    padding-right: 2.25rem;
}
.ilf-select[multiple] { background-image: none; padding-right: .85rem; }

.ilf-help  { display: block; margin-top: var(--ilf-sp-1); font-size: var(--ilf-fs-xs); color: var(--ilf-muted); }
.ilf-error { display: block; margin-top: var(--ilf-sp-1); font-size: var(--ilf-fs-xs); font-weight: 600; color: var(--ilf-danger); }

.ilf-input.is-invalid, .ilf-select.is-invalid, .ilf-textarea.is-invalid { border-color: var(--ilf-danger); }
.ilf-input.is-invalid:focus, .ilf-select.is-invalid:focus { box-shadow: 0 0 0 4px var(--ilf-danger-bg); }

/* Field with a leading icon (search bars, map pins, etc.) */
.ilf-search { position: relative; }
.ilf-search > i, .ilf-search > svg {
    position: absolute; left: .9rem; top: 50%; transform: translateY(-50%);
    color: var(--ilf-muted); font-size: .95rem; pointer-events: none;
}
.ilf-search .ilf-input, .ilf-search .ilf-select { padding-left: 2.5rem; }

.ilf-check { display: flex; align-items: flex-start; gap: var(--ilf-sp-2); font-size: var(--ilf-fs-sm); }
.ilf-check input[type="checkbox"], .ilf-check input[type="radio"] { margin-top: .2rem; flex: 0 0 auto; }

/* --- 5.3 Cards ---------------------------------------------------------- */
.ilf-card {
    display: flex;
    flex-direction: column;
    background: var(--ilf-surface);
    border: 1px solid var(--ilf-line);
    border-radius: var(--ilf-r-lg);
    box-shadow: var(--ilf-sh-xs);
    overflow: hidden;
    height: 100%;
}
.ilf-card--raised  { box-shadow: var(--ilf-sh-sm); }
.ilf-card--flat    { box-shadow: none; }
.ilf-card--accent  { border-top: 3px solid var(--ilf-accent); }
.ilf-card--navy    { background: var(--ilf-navy); border-color: var(--ilf-navy); color: rgba(255,255,255,.85); }
.ilf-card--navy h1, .ilf-card--navy h2, .ilf-card--navy h3,
.ilf-card--navy h4, .ilf-card--navy h5 { color: #fff; }

.ilf-card__head {
    display: flex; align-items: center; justify-content: space-between;
    gap: var(--ilf-sp-3);
    padding: var(--ilf-sp-4) var(--ilf-sp-5);
    border-bottom: 1px solid var(--ilf-line);
}
.ilf-card__head h2, .ilf-card__head h3, .ilf-card__head h4 { margin: 0; font-size: var(--ilf-fs-md); }
.ilf-card__body { padding: var(--ilf-sp-5); flex: 1 1 auto; }
.ilf-card__foot {
    padding: var(--ilf-sp-4) var(--ilf-sp-5);
    border-top: 1px solid var(--ilf-line);
    background: var(--ilf-canvas);
}
.ilf-card--navy .ilf-card__head,
.ilf-card--navy .ilf-card__foot { border-color: rgba(255,255,255,.12); }
.ilf-card--navy .ilf-card__foot { background: rgba(0,0,0,.15); }

/* Legacy aliases — the old pages use .card and .stat-box heavily. */
.card { border: 1px solid var(--ilf-line); border-radius: var(--ilf-r-lg); box-shadow: var(--ilf-sh-xs); background: var(--ilf-surface); }
.stat-box {
    background: var(--ilf-surface); border: 1px solid var(--ilf-line);
    border-radius: var(--ilf-r-lg); padding: var(--ilf-sp-4);
    box-shadow: var(--ilf-sh-xs);
}

/* --- 5.4 Stat ----------------------------------------------------------- */
.ilf-stat { display: flex; flex-direction: column; gap: var(--ilf-sp-1); }
.ilf-stat__value {
    font-family: var(--ilf-font-display); font-weight: 800;
    font-size: var(--ilf-fs-2xl); line-height: 1.1; color: var(--ilf-navy);
}
.ilf-stat__label {
    font-size: var(--ilf-fs-xs); font-weight: 600; letter-spacing: .06em;
    text-transform: uppercase; color: var(--ilf-muted);
}

/* --- 5.5 Badges & pills ------------------------------------------------- */
.ilf-badge {
    display: inline-flex; align-items: center; gap: var(--ilf-sp-1);
    padding: .3rem .6rem;
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-xs); font-weight: 700; line-height: 1;
    border-radius: var(--ilf-r-pill);
    border: 1px solid transparent;
    white-space: nowrap;
}
.ilf-badge--navy    { background: var(--ilf-navy-50);   color: var(--ilf-navy);    border-color: var(--ilf-navy-100); }
.ilf-badge--accent  { background: var(--ilf-accent-50); color: var(--ilf-accent-700); border-color: var(--ilf-accent-100); }
.ilf-badge--success { background: var(--ilf-success-bg); color: var(--ilf-success); border-color: var(--ilf-success-line); }
.ilf-badge--warning { background: var(--ilf-warning-bg); color: var(--ilf-warning); border-color: var(--ilf-warning-line); }
.ilf-badge--danger  { background: var(--ilf-danger-bg);  color: var(--ilf-danger);  border-color: var(--ilf-danger-line); }
.ilf-badge--info    { background: var(--ilf-info-bg);    color: var(--ilf-info);    border-color: var(--ilf-info-line); }
.ilf-badge--muted   { background: var(--ilf-line-soft);  color: var(--ilf-muted);   border-color: var(--ilf-line); }

/* --- 5.6 Alerts --------------------------------------------------------- */
.ilf-alert {
    display: flex; align-items: flex-start; gap: var(--ilf-sp-3);
    padding: var(--ilf-sp-4);
    border: 1px solid var(--ilf-line);
    border-left-width: 4px;
    border-radius: var(--ilf-r);
    background: var(--ilf-surface);
    font-size: var(--ilf-fs-sm);
    margin-bottom: var(--ilf-sp-4);
}
.ilf-alert > i, .ilf-alert > svg { flex: 0 0 auto; margin-top: .15rem; font-size: 1.05rem; }
.ilf-alert--success { background: var(--ilf-success-bg); border-color: var(--ilf-success-line); border-left-color: var(--ilf-success); color: #054F31; }
.ilf-alert--warning { background: var(--ilf-warning-bg); border-color: var(--ilf-warning-line); border-left-color: var(--ilf-warning); color: #7A2E0E; }
.ilf-alert--danger  { background: var(--ilf-danger-bg);  border-color: var(--ilf-danger-line);  border-left-color: var(--ilf-danger);  color: #7A271A; }
.ilf-alert--info    { background: var(--ilf-info-bg);    border-color: var(--ilf-info-line);    border-left-color: var(--ilf-info);    color: #194185; }

/* --- 5.7 Tables --------------------------------------------------------- */
.ilf-table-wrap {
    border: 1px solid var(--ilf-line);
    border-radius: var(--ilf-r-lg);
    overflow: hidden;
    background: var(--ilf-surface);
    box-shadow: var(--ilf-sh-xs);
}
.ilf-table { width: 100%; border-collapse: collapse; font-size: var(--ilf-fs-sm); }
.ilf-table th {
    text-align: left;
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-xs);
    font-weight: 700; letter-spacing: .05em; text-transform: uppercase;
    color: var(--ilf-muted);
    background: var(--ilf-canvas);
    padding: var(--ilf-sp-3) var(--ilf-sp-4);
    border-bottom: 1px solid var(--ilf-line);
    white-space: nowrap;
}
.ilf-table td {
    padding: var(--ilf-sp-4);
    border-bottom: 1px solid var(--ilf-line-soft);
    vertical-align: middle;
    color: var(--ilf-body);
}
.ilf-table tbody tr:last-child td { border-bottom: 0; }
.ilf-table tbody tr:hover { background: var(--ilf-navy-50); }

/* --- 5.8 Tabs / segmented control -------------------------------------- */
.ilf-tabs {
    display: flex; gap: var(--ilf-sp-1);
    padding: var(--ilf-sp-1);
    background: var(--ilf-line-soft);
    border-radius: var(--ilf-r-pill);
    overflow-x: auto;
}
.ilf-tabs__link {
    flex: 0 0 auto;
    padding: .55rem 1rem;
    border-radius: var(--ilf-r-pill);
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-sm); font-weight: 700;
    color: var(--ilf-muted); white-space: nowrap;
    transition: var(--ilf-t-fast);
}
.ilf-tabs__link:hover { color: var(--ilf-navy); }
.ilf-tabs__link.is-active { background: var(--ilf-surface); color: var(--ilf-navy); box-shadow: var(--ilf-sh-xs); }

/* --- 5.9 Avatar -------------------------------------------------------- */
.ilf-avatar {
    width: 44px; height: 44px; border-radius: var(--ilf-r-pill);
    object-fit: cover; border: 1px solid var(--ilf-line); background: var(--ilf-navy-50);
}
.ilf-avatar--lg { width: 96px;  height: 96px; }
.ilf-avatar--xl { width: 140px; height: 140px; }

/* --- 5.10 Page header for inner pages ---------------------------------- */
.ilf-page-head {
    position: relative;
    background: var(--ilf-navy);
    color: rgba(255,255,255,.8);
    padding-block: var(--ilf-sp-6);
}
.ilf-page-head::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: 0;
    height: 3px; background: var(--ilf-tricolour);
}
.ilf-page-head h1 { color: #fff; font-size: var(--ilf-fs-2xl); margin: 0 0 var(--ilf-sp-2); }
.ilf-page-head p  { margin: 0; color: rgba(255,255,255,.75); }

.ilf-breadcrumb {
    display: flex; flex-wrap: wrap; gap: var(--ilf-sp-2);
    font-size: var(--ilf-fs-xs); color: rgba(255,255,255,.6);
    margin-bottom: var(--ilf-sp-3);
}
.ilf-breadcrumb a { color: rgba(255,255,255,.85); }
.ilf-breadcrumb a:hover { color: #fff; }
.ilf-breadcrumb [aria-current] { color: #fff; font-weight: 600; }

/* --- 5.11 Empty state -------------------------------------------------- */
.ilf-empty { text-align: center; padding: var(--ilf-sp-7) var(--ilf-sp-4); color: var(--ilf-muted); }
.ilf-empty i { display: block; font-size: 2.5rem; color: var(--ilf-navy-100); margin-bottom: var(--ilf-sp-3); }
.ilf-empty h3 { margin: 0 0 var(--ilf-sp-2); }

/* --- 5.12 Dividers ----------------------------------------------------- */
.ilf-divider { height: 1px; border: 0; background: var(--ilf-line); margin: var(--ilf-sp-5) 0; }
.ilf-divider--tricolour { height: 3px; background: var(--ilf-tricolour); }

/* --- 5.13 Modal (desktop) / bottom sheet (mobile) ---------------------- */
.ilf-modal { position: fixed; inset: 0; z-index: var(--ilf-z-modal); display: none; }
.ilf-modal.is-open { display: block; }
.ilf-modal__backdrop { position: absolute; inset: 0; background: rgba(16,24,40,.55); }
.ilf-modal__panel {
    position: relative;
    width: min(560px, calc(100% - 2rem));
    margin: 5vh auto;
    max-height: 90vh;
    overflow: auto;
    background: var(--ilf-surface);
    border-radius: var(--ilf-r-lg);
    box-shadow: var(--ilf-sh-lg);
}
.ilf-modal__head {
    display: flex; align-items: center; justify-content: space-between;
    gap: var(--ilf-sp-3);
    padding: var(--ilf-sp-4) var(--ilf-sp-5);
    border-bottom: 1px solid var(--ilf-line);
}
.ilf-modal__head h3 { margin: 0; font-size: var(--ilf-fs-md); }
.ilf-modal__body { padding: var(--ilf-sp-5); }
.ilf-modal__foot {
    display: flex; gap: var(--ilf-sp-3); justify-content: flex-end;
    padding: var(--ilf-sp-4) var(--ilf-sp-5);
    border-top: 1px solid var(--ilf-line);
}
.ilf-modal__close {
    min-width: 40px; min-height: 40px;
    background: none; border: 0; border-radius: var(--ilf-r-pill);
    font-size: 1.15rem; color: var(--ilf-muted); cursor: pointer;
}
.ilf-modal__close:hover { background: var(--ilf-line-soft); color: var(--ilf-ink); }

@media (max-width: 575px) {
    /* On a phone a modal becomes a bottom sheet — the app-like pattern. */
    .ilf-modal__panel {
        position: absolute; inset-inline: 0; bottom: 0;
        width: 100%; margin: 0; max-height: 88vh;
        border-radius: var(--ilf-r-xl) var(--ilf-r-xl) 0 0;
    }
}


/* ==========================================================================
   6. SHELL
   ========================================================================== */

/* --- 6.1 Header --------------------------------------------------------- */
.ilf-header {
    position: sticky;
    top: 0;
    z-index: var(--ilf-z-header);
    background: var(--ilf-surface);
    border-bottom: 1px solid var(--ilf-line);
    transition: box-shadow var(--ilf-t);
}
.ilf-header.is-stuck { box-shadow: var(--ilf-sh-sm); }

/* tricolour hairline along the very bottom of the header */
.ilf-header__accent { height: 3px; background: var(--ilf-tricolour); }

.ilf-header__inner {
    display: flex;
    align-items: center;
    gap: var(--ilf-sp-5);
    min-height: var(--ilf-header-h);
}

/* --- brand ------------------------------------------------------------- */
.ilf-brand { display: flex; align-items: center; gap: var(--ilf-sp-3); flex: 0 0 auto; }
.ilf-brand:hover { text-decoration: none; }

.ilf-brand__mark {
    display: grid; place-items: center;
    width: 42px; height: 42px;
    border-radius: 12px;
    background: var(--ilf-navy);
    color: var(--ilf-accent);
    font-size: 1.2rem;
    flex: 0 0 auto;
}
.ilf-brand__text { display: flex; flex-direction: column; line-height: 1.15; }
.ilf-brand__text strong {
    font-family: var(--ilf-font-display);
    font-size: 1.0625rem; font-weight: 800;
    color: var(--ilf-navy);
    letter-spacing: -.01em;
}
.ilf-brand__text em {
    font-style: normal;
    font-size: var(--ilf-fs-xs);
    color: var(--ilf-muted);
}
/* the saffron / green halves of the wordmark */
.ilf-brand__text strong .saffron { color: var(--ilf-accent); }
.ilf-brand__text strong .green   { color: var(--ilf-green); }

/* --- desktop nav ------------------------------------------------------- */
.ilf-nav { display: flex; align-items: center; gap: var(--ilf-sp-1); margin-left: auto; }

.ilf-nav__link {
    position: relative;
    padding: .5rem .75rem;
    border-radius: var(--ilf-r-sm);
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-sm); font-weight: 600;
    color: var(--ilf-body);
    white-space: nowrap;
    transition: var(--ilf-t-fast);
}
.ilf-nav__link:hover { background: var(--ilf-navy-50); color: var(--ilf-navy); }
.ilf-nav__link.is-active { color: var(--ilf-navy); font-weight: 700; }
.ilf-nav__link.is-active::after {
    content: ''; position: absolute; left: .75rem; right: .75rem; bottom: -.35rem;
    height: 3px; border-radius: 3px; background: var(--ilf-accent);
}

.ilf-header__actions { display: flex; align-items: center; gap: var(--ilf-sp-2); flex: 0 0 auto; }

/* --- burger (mobile) --------------------------------------------------- */
.ilf-burger {
    display: none;
    width: 44px; height: 44px;
    align-items: center; justify-content: center;
    background: none; border: 1px solid var(--ilf-line);
    border-radius: var(--ilf-r);
    color: var(--ilf-navy); font-size: 1.1rem; cursor: pointer;
}
.ilf-burger:hover { background: var(--ilf-navy-50); }

/* --- 6.2 Search band --------------------------------------------------- */
.ilf-searchband {
    background: linear-gradient(180deg, var(--ilf-navy) 0%, var(--ilf-navy-800) 100%);
    color: #fff;
    padding-block: var(--ilf-sp-5);
    position: relative;
}
.ilf-searchband__title {
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-lg); font-weight: 800;
    color: #fff; margin: 0 0 var(--ilf-sp-4);
    text-align: center;
}
.ilf-searchband__title span { color: var(--ilf-accent); }

.ilf-searchband__form {
    display: grid;
    grid-template-columns: 1.4fr 1fr 1fr 1fr 0.9fr auto;
    gap: var(--ilf-sp-2);
    align-items: center;
    background: rgba(255,255,255,.06);
    border: 1px solid rgba(255,255,255,.14);
    border-radius: var(--ilf-r-lg);
    padding: var(--ilf-sp-2);
}
.ilf-searchband__form .ilf-input,
.ilf-searchband__form .ilf-select {
    border-color: transparent;
    background-color: #fff;
    min-height: 48px;
}
.ilf-searchband__form .ilf-search > i { color: var(--ilf-navy-600); }

@media (max-width: 991px) {
    .ilf-searchband__form { grid-template-columns: 1fr 1fr; }
    .ilf-searchband__form .ilf-searchband__submit { grid-column: 1 / -1; }
}
@media (max-width: 575px) {
    .ilf-searchband__form { grid-template-columns: 1fr; border-radius: var(--ilf-r-lg); }
    .ilf-searchband__title { font-size: var(--ilf-fs-md); }
}

/* --- 6.3 Mobile drawer -------------------------------------------------- */
.ilf-drawer {
    position: fixed; top: 0; right: 0; bottom: 0;
    width: min(340px, 86vw);
    display: flex; flex-direction: column;
    background: var(--ilf-surface);
    box-shadow: var(--ilf-sh-lg);
    z-index: var(--ilf-z-drawer);
    transform: translateX(100%);
    visibility: hidden;
    transition: transform var(--ilf-t), visibility var(--ilf-t);
}
.ilf-drawer.is-open { transform: translateX(0); visibility: visible; }

.ilf-drawer__head {
    display: flex; align-items: center; justify-content: space-between;
    gap: var(--ilf-sp-3);
    padding: var(--ilf-sp-4);
    border-bottom: 1px solid var(--ilf-line);
}
.ilf-drawer__nav { flex: 1 1 auto; overflow-y: auto; padding: var(--ilf-sp-3); }
.ilf-drawer__nav a {
    display: flex; align-items: center; gap: var(--ilf-sp-3);
    min-height: 48px; padding: .85rem var(--ilf-sp-3);
    border-radius: var(--ilf-r);
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-base); font-weight: 600;
    color: var(--ilf-ink);
}
.ilf-drawer__nav a i { width: 22px; text-align: center; color: var(--ilf-navy-600); }
.ilf-drawer__nav a:hover, .ilf-drawer__nav a.is-active { background: var(--ilf-navy-50); color: var(--ilf-navy); }
.ilf-drawer__foot { padding: var(--ilf-sp-4); border-top: 1px solid var(--ilf-line); display: grid; gap: var(--ilf-sp-2); }

.ilf-scrim {
    position: fixed; inset: 0;
    background: rgba(16,24,40,.5);
    z-index: calc(var(--ilf-z-drawer) - 1);
    opacity: 0; visibility: hidden;
    transition: opacity var(--ilf-t), visibility var(--ilf-t);
}
.ilf-scrim.is-open { opacity: 1; visibility: visible; }

/* --- 6.4 Mobile app bar (bottom tabs) ---------------------------------- */
.ilf-appbar {
    position: fixed; left: 0; right: 0; bottom: 0;
    display: none;
    background: var(--ilf-surface);
    border-top: 1px solid var(--ilf-line);
    box-shadow: 0 -4px 20px rgba(16,24,40,.08);
    padding-bottom: env(safe-area-inset-bottom, 0);   /* iPhone home bar */
    z-index: var(--ilf-z-header);
}
.ilf-appbar__inner { display: flex; align-items: stretch; }

.ilf-appbar__item {
    position: relative;
    flex: 1 1 0;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 3px;
    min-height: var(--ilf-appbar-h);
    padding: .5rem .25rem;
    font-family: var(--ilf-font-display);
    font-size: 10.5px; font-weight: 600;
    color: var(--ilf-muted);
    transition: var(--ilf-t-fast);
}
.ilf-appbar__item i { font-size: 1.15rem; }
.ilf-appbar__item:hover { color: var(--ilf-navy); }
.ilf-appbar__item.is-active { color: var(--ilf-navy); }
.ilf-appbar__item.is-active i { color: var(--ilf-accent); }
.ilf-appbar__item.is-active::before {
    content: ''; position: absolute; top: 0; left: 22%; right: 22%;
    height: 3px; border-radius: 0 0 3px 3px; background: var(--ilf-accent);
}
.ilf-appbar__badge {
    position: absolute; top: 6px; left: 50%; margin-left: 6px;
    min-width: 16px; height: 16px; padding: 0 4px;
    display: grid; place-items: center;
    background: var(--ilf-danger); color: #fff;
    font-size: 9.5px; font-weight: 700;
    border-radius: var(--ilf-r-pill);
}

/* --- 6.5 Footer -------------------------------------------------------- */
.ilf-footer {
    margin-top: var(--ilf-sp-8);
    background: var(--ilf-navy);
    color: rgba(255,255,255,.72);
}
.ilf-footer__accent { height: 3px; background: var(--ilf-tricolour); }

.ilf-footer__top {
    display: grid;
    grid-template-columns: 1.4fr 2.6fr;
    gap: var(--ilf-sp-7);
    padding-block: var(--ilf-sp-7) var(--ilf-sp-6);
}
.ilf-footer__brand .ilf-brand__text strong { color: #ffffff; }
.ilf-footer__brand .ilf-brand__text em     { color: rgba(255,255,255,.6); }
.ilf-footer__brand .ilf-brand__mark        { background: rgba(255,255,255,.1); }
.ilf-footer__about {
    max-width: 36ch; margin-top: var(--ilf-sp-4);
    font-size: var(--ilf-fs-sm); color: rgba(255,255,255,.66);
}

.ilf-footer__cols { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--ilf-sp-5); }
.ilf-footer__col h4 {
    margin: 0 0 var(--ilf-sp-4);
    font-size: var(--ilf-fs-sm); letter-spacing: .06em; text-transform: uppercase;
    color: #ffffff;
}
.ilf-footer__col ul { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--ilf-sp-3); }
.ilf-footer__col a { font-size: var(--ilf-fs-sm); color: rgba(255,255,255,.72); }
.ilf-footer__col a:hover { color: var(--ilf-accent); }

.ilf-social { display: flex; gap: var(--ilf-sp-2); margin-top: var(--ilf-sp-4); }
.ilf-social a {
    display: grid; place-items: center;
    width: 40px; height: 40px;
    border-radius: var(--ilf-r-pill);
    background: rgba(255,255,255,.1); color: #ffffff;
    transition: var(--ilf-t-fast);
}
.ilf-social a:hover { background: var(--ilf-accent); color: #3A2408; }

.ilf-footer__bottom {
    display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--ilf-sp-3);
    padding-block: var(--ilf-sp-4);
    border-top: 1px solid rgba(255,255,255,.12);
    font-size: var(--ilf-fs-xs); color: rgba(255,255,255,.6);
}
.ilf-footer__bottom a { color: rgba(255,255,255,.75); }
.ilf-footer__bottom a:hover { color: #ffffff; }

@media (max-width: 991px) {
    .ilf-footer__top  { grid-template-columns: 1fr; gap: var(--ilf-sp-6); }
    .ilf-footer__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575px) {
    .ilf-footer__cols { grid-template-columns: 1fr; gap: var(--ilf-sp-5); }
}

/* --- 6.6 Responsive shell behaviour ------------------------------------ */
@media (max-width: 991px) {
    .ilf-nav,
    .ilf-header__actions { display: none; }
    .ilf-burger { display: inline-flex; }
    .ilf-appbar { display: block; }
    /* clear the fixed bottom bar, including the iPhone home indicator */
    body { padding-bottom: calc(var(--ilf-appbar-h) + env(safe-area-inset-bottom, 0px)); }
}

/* --- 6.7 Instant wins ---------------------------------------------------
   These classes are already used across all 30 pages (form-control ×46,
   alert ×56, form-group ×54, badge ×25, btn ×21). Restyling them here lifts
   every page at once, before each one is individually migrated in Phase 4.
   ---------------------------------------------------------------------- */
.form-group { margin-bottom: var(--ilf-sp-4); }

.form-label {
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-sm);
    font-weight: 600;
    color: var(--ilf-ink);
    margin-bottom: var(--ilf-sp-2);
}

.form-control, .form-select {
    padding: .7rem .85rem;
    min-height: 46px;
    font-size: var(--ilf-fs-base);
    color: var(--ilf-ink);
    background-color: var(--ilf-surface);
    border: 1px solid var(--ilf-line);
    border-radius: var(--ilf-r);
}
.form-control::placeholder { color: #98A2B3; }
.form-control:focus, .form-select:focus {
    border-color: var(--ilf-navy-600);
    box-shadow: 0 0 0 4px var(--ilf-navy-50);
}
.form-control:disabled, .form-select:disabled { background: var(--ilf-canvas); color: var(--ilf-muted); }
.form-text { font-size: var(--ilf-fs-xs); color: var(--ilf-muted); }

.form-check-input:checked { background-color: var(--ilf-navy); border-color: var(--ilf-navy); }
.form-check-input:focus     { box-shadow: 0 0 0 4px var(--ilf-navy-50); }

.btn {
    min-height: 42px;
    padding: .6rem 1.15rem;
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-sm);
    font-weight: 700;
    border-radius: var(--ilf-r-pill);
    transition: var(--ilf-t-fast);
}
.btn-primary { background-color: var(--ilf-navy); border-color: var(--ilf-navy); }
.btn-primary:hover, .btn-primary:focus { background-color: var(--ilf-navy-800); border-color: var(--ilf-navy-800); }
.btn-secondary { background-color: var(--ilf-navy-600); border-color: var(--ilf-navy-600); }
.btn-warning   { background-color: var(--ilf-accent); border-color: var(--ilf-accent); color: #3A2408; }
.btn-warning:hover { background-color: var(--ilf-accent-700); border-color: var(--ilf-accent-700); color: #fff; }
.btn-outline-primary { color: var(--ilf-navy); border-color: var(--ilf-navy-100); }
.btn-outline-primary:hover { background: var(--ilf-navy-50); color: var(--ilf-navy); border-color: var(--ilf-navy-100); }

.badge {
    padding: .35rem .6rem;
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-xs);
    font-weight: 700;
    border-radius: var(--ilf-r-pill);
}

.alert {
    border-radius: var(--ilf-r);
    border-left-width: 4px;
    font-size: var(--ilf-fs-sm);
}
.alert-success { background: var(--ilf-success-bg); border-color: var(--ilf-success-line); border-left-color: var(--ilf-success); color: #054F31; }
.alert-warning { background: var(--ilf-warning-bg); border-color: var(--ilf-warning-line); border-left-color: var(--ilf-warning); color: #7A2E0E; }
.alert-danger,
.alert-error   { background: var(--ilf-danger-bg);  border-color: var(--ilf-danger-line);  border-left-color: var(--ilf-danger);  color: #7A271A; }
.alert-info    { background: var(--ilf-info-bg);    border-color: var(--ilf-info-line);    border-left-color: var(--ilf-info);    color: #194185; }

.table { --bs-table-border-color: var(--ilf-line); font-size: var(--ilf-fs-sm); }
.table > thead th {
    font-family: var(--ilf-font-display);
    font-size: var(--ilf-fs-xs);
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--ilf-muted);
    background: var(--ilf-canvas);
}
.table-responsive { border-radius: var(--ilf-r-lg); }

.modal-content { border: 0; border-radius: var(--ilf-r-lg); box-shadow: var(--ilf-sh-lg); }
.modal-header, .modal-footer { border-color: var(--ilf-line); }

.pagination .page-link { color: var(--ilf-navy); border-color: var(--ilf-line); }
.pagination .page-item.active .page-link { background: var(--ilf-navy); border-color: var(--ilf-navy); }


/* ==========================================================================
   7. UTILITIES
   ========================================================================== */
.ilf-sr-only {
    position: absolute !important; width: 1px; height: 1px;
    padding: 0; margin: -1px; overflow: hidden;
    clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
.ilf-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ilf-clamp-2, .ilf-clamp-3 {
    display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden;
}
.ilf-clamp-2 { -webkit-line-clamp: 2; }
.ilf-clamp-3 { -webkit-line-clamp: 3; }

.ilf-text-navy    { color: var(--ilf-navy) !important; }
.ilf-text-accent  { color: var(--ilf-accent-700) !important; }
.ilf-text-muted   { color: var(--ilf-muted) !important; }
.ilf-text-body    { color: var(--ilf-body) !important; }
.ilf-bg-canvas    { background: var(--ilf-canvas) !important; }
.ilf-bg-surface   { background: var(--ilf-surface) !important; }
.ilf-bg-navy      { background: var(--ilf-navy) !important; }
.ilf-radius       { border-radius: var(--ilf-r-lg); }
.ilf-shadow       { box-shadow: var(--ilf-sh); }
.ilf-w-100        { width: 100%; }
.ilf-mt-0 { margin-top: 0 !important; }
.ilf-mb-0 { margin-bottom: 0 !important; }

@media (max-width: 991px) { .ilf-hide-mobile  { display: none !important; } }
@media (min-width: 992px) { .ilf-hide-desktop { display: none !important; } }
