/* =====================================================================
   Global Drishti — Single Post "Notice Board" UI (reskin 27.07.2026)
   Scoped entirely under .gd-single so the main sarkari-style.css and all
   other templates remain 100% untouched (zero regression risk).
   CSS-ONLY reskin — every selector below already existed and is driven by
   the same PHP/JS as before; only property VALUES changed (color,
   spacing, radius, table styling). No markup, no class names, no JS
   behavior changed. Brand tokens reused: --gd-blue #0A2463, --gd-red
   #D90429, --gd-green (functional apply/status color), --gd-link.
   Dark mode is a MANUAL body.gd-dark toggle (not prefers-color-scheme —
   see the color-scheme line below), so every dark variant here hangs off
   body.gd-dark, matching the site's existing convention.
   ===================================================================== */

/* Backup for the color-scheme meta tag in header.php — belt and suspenders
   against Android Chrome's auto-dark-theme feature re-coloring table cells
   inconsistently (dark background, unchanged text color) when the phone is
   in system dark mode. This site's own dark mode is a manual .gd-dark
   toggle, not tied to prefers-color-scheme, so we always want light here. */
html { color-scheme: light; }

.gd-single {
    --gd-blue: #0A2463;
    --gd-red: #D90429;
    --gd-green: #1a9d54;
    --gd-link: #1551d4;
    /* ---- Notice-board tokens (added 27.07.2026) ---- */
    --gd-paper: #f3f1ec;
    --gd-paper-raised: #ffffff;
    --gd-navy-soft: #eef1f8;
    --gd-ink: #1c1d1f;
    --gd-ink-soft: #55575c;
    --gd-rule: #d8d3c6;
    --gd-border: var(--gd-rule); /* legacy alias — was a hard #111, now the soft hairline */
}
body.gd-dark .gd-single {
    --gd-paper: #1a1d23;
    --gd-paper-raised: #20242c;
    --gd-navy-soft: #1b2740;
    --gd-ink: #e3e6ea;
    --gd-ink-soft: #a3a7ae;
    --gd-rule: #3a3f47;
}

/* ---- Title + meta ---- */
.gd-single .gd-post-head { margin-bottom: 12px; }
.gd-single .post-title {
    line-height: 1.3;
    color: var(--gd-blue);
    background: var(--gd-paper-raised);
    text-align: center;
    border-bottom: 3px solid #C2410C;
    padding-bottom: 10px;
}
.gd-single .gd-meta-row { display: flex; flex-wrap: wrap; gap: 14px; font-size: 0.85rem; color: var(--gd-ink-soft); margin-top: 6px; font-variant-numeric: tabular-nums; }
.gd-single .gd-meta-row i { color: var(--gd-blue); }

/* ---- E-E-A-T trust strip (Reviewed by / Last fact-checked, Pillar 1) ---- */
.gd-single .gd-trust-strip { display: flex; flex-wrap: wrap; gap: 14px; font-size: 0.8rem; color: #1a7a44; margin-top: 4px; font-variant-numeric: tabular-nums; }
.gd-single .gd-trust-strip i { color: #1a7a44; margin-right: 3px; }
body.gd-dark .gd-single .gd-trust-strip { color: #6fd39a; }
body.gd-dark .gd-single .gd-trust-strip i { color: #6fd39a; }

/* ---- High-visibility Telegram CTA (brand colors untouched — Telegram/WhatsApp identity) ---- */
.gd-single .gd-telegram-hero-cta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin: 14px 0 16px;
    padding: 15px;
    border-radius: 14px;
    background:
        radial-gradient(circle at 15% 10%, rgba(255,255,255,0.45), transparent 28%),
        linear-gradient(135deg, #0088cc 0%, #0A2463 58%, #10b981 100%);
    color: #fff;
    box-shadow: 0 14px 34px rgba(0, 136, 204, 0.24);
}
.gd-single .gd-telegram-hero-copy {
    display: flex;
    flex-direction: column;
    gap: 3px;
    line-height: 1.35;
}
.gd-single .gd-telegram-hero-copy strong {
    font-size: 1.02rem;
    font-weight: 800;
}
.gd-single .gd-telegram-hero-copy span {
    font-size: 0.88rem;
    opacity: 0.94;
}
.gd-single .gd-telegram-hero-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 0 0 auto;
}
.gd-single .gd-telegram-hero-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    flex: 0 0 auto;
    min-height: 46px;
    padding: 11px 18px;
    border-radius: 999px;
    background: #fff;
    color: #0A2463 !important;
    font-weight: 800;
    text-decoration: none !important;
    box-shadow: 0 8px 18px rgba(0,0,0,0.18);
}
.gd-single .gd-telegram-hero-btn:hover {
    transform: translateY(-1px);
    color: #0088cc !important;
}
.gd-single .gd-whatsapp-hero-btn {
    background: #25D366;
    color: #fff !important;
}
.gd-single .gd-whatsapp-hero-btn:hover {
    color: #fff !important;
    background: #1fb85a;
}
@media (max-width: 600px) {
    .gd-single .gd-telegram-hero-cta {
        flex-direction: column;
        align-items: stretch;
        text-align: center;
        padding: 15px 13px;
    }
    .gd-single .gd-telegram-hero-actions {
        flex-direction: column;
        width: 100%;
    }
    .gd-single .gd-telegram-hero-btn {
        width: 100%;
        font-size: 1rem;
    }
}

/* ---- FAQ block heading (accordion itself reuses .post-body details CSS) ---- */
.gd-single .gd-faq-block { margin-top: 24px; }
.gd-single .gd-faq-block h2 { margin-bottom: 10px; }

/* ---- Status badge — pill shape, same 3-state semantics ---- */
.gd-single .gd-badge { display: inline-flex; align-items: center; gap: 5px; font-size: 0.72rem; font-weight: 700; padding: 3px 10px; border-radius: 999px; vertical-align: middle; margin-left: 6px; white-space: nowrap; border: 1px solid transparent; }
.gd-single .gd-badge-active { background: #e6f7ee; color: #146c43; border-color: #146c43; }
.gd-single .gd-badge-soon   { background: #fdf1dc; color: #8a5a00; border-color: #8a5a00; }
.gd-single .gd-badge-exp    { background: #fdebec; color: #b3261e; border-color: #b3261e; }
body.gd-dark .gd-single .gd-badge-active { background: #12281d; color: #5fd394; border-color: #5fd394; }
body.gd-dark .gd-single .gd-badge-soon   { background: #2c2311; color: #e3ac4e; border-color: #e3ac4e; }
body.gd-dark .gd-single .gd-badge-exp    { background: #341313; color: #f0a3a3; border-color: #f0a3a3; }

/* ---- Countdown — kept as an urgency signal, softened from a hard gradient ---- */
.gd-single .gd-countdown { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; background: var(--gd-red); color: #fff; padding: 10px 14px; border-radius: 8px; font-weight: 600; margin: 14px 0; }
.gd-single .gd-cd-timer { font-variant-numeric: tabular-nums; letter-spacing: 0.3px; background: rgba(0,0,0,0.18); padding: 3px 10px; border-radius: 6px; font-family: ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace; }

/* ---- Generic CTA buttons — flatter, "official notice" shape, same 4 functional colors ---- */
.gd-single .gd-btn { display: inline-block; padding: 11px 16px; border-radius: 6px; font-weight: 700; font-size: 0.92rem; text-decoration: none; color: #fff !important; text-align: center; border: none; cursor: pointer; transition: transform .08s ease, filter .15s ease; }
/* Older sitewide rules (.post-body a / .entry-content a, color:#0A2463 !important)
   are MORE specific than the rule above and were winning, forcing dark navy text
   onto every button rendered inside post content (e.g. mock-test CTA "Start Test"
   / "View All Mock Tests" buttons) — invisible on dark backgrounds. This matches
   or exceeds that specificity so button text always stays readable. */
.single .sarkari-main-wrapper .post-body a.gd-btn,
.single .sarkari-main-wrapper .entry-content a.gd-btn,
.post-main a.gd-btn {
  color: #fff !important;
  text-decoration: none !important;
}
/* Same root cause, different element (found 31.07.2026): the Important
   Links table's plain <a> links (styled as red/green "buttons" by
   sarkari-style-v7.css's ".post-body table td a" rule, no .gd-btn class
   involved) were ALSO losing their white text to the same
   ".post-body a"/".entry-content a" navy rule — invisible on the red
   variant specifically (navy-on-red reads as illegible; navy-on-green was
   borderline-passable, which is why only the red links got reported). */
.single .sarkari-main-wrapper .post-body table td a,
.single .sarkari-main-wrapper .entry-content table td a,
.post-main table td a {
  color: #fff !important;
}
.gd-single .gd-btn:hover { filter: brightness(1.08); transform: translateY(-1px); }
.gd-single .gd-btn:active { transform: translateY(0); }
.gd-single .gd-btn-green { background: var(--gd-green); }
.gd-single .gd-btn-red   { background: var(--gd-red); }
.gd-single .gd-btn-blue  { background: var(--gd-blue); }
.gd-single .gd-btn-dark  { background: #334155; }

/* ---- Quick links box (top) ---- */
.gd-single .gd-quicklinks { border: 1.5px solid var(--gd-rule); border-radius: 8px; margin: 16px 0; overflow: hidden; background: var(--gd-paper-raised); }
.gd-single .gd-ql-title { background: var(--gd-blue); color: #fff; font-weight: 700; padding: 9px 14px; }
.gd-single .gd-ql-btns { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; padding: 14px; }

/* ---- Short info box ---- */
.gd-single .gd-shortinfo { border: 1.5px solid var(--gd-rule); border-radius: 8px; margin: 16px 0; overflow: hidden; background: var(--gd-paper-raised); }
.gd-single .gd-si-title { background: var(--gd-navy-soft); color: var(--gd-blue); font-weight: 700; padding: 9px 14px; border-bottom: 1.5px solid var(--gd-rule); font-size: 0.85rem; letter-spacing: 0.04em; text-transform: uppercase; text-align: center; }
.gd-single .gd-si-body { padding: 12px 14px; color: var(--gd-ink); }
.gd-single .gd-si-body p { margin: 4px 0; }

/* =====================================================================
   IN-CONTENT TABLES — Notice Board style
   Navy header row, hairline paper-toned borders, tabular numerals for
   easy date/marks/fee scanning, horizontal scroll on mobile. Targets
   existing content tables without altering their HTML — this single
   selector reskins every AI-authored table on every existing post.
   ===================================================================== */
/* Wrapper handles the mobile horizontal scroll. The <table> itself keeps
   display:table (the default) so the browser's normal cross-row column
   layout algorithm runs intact — putting display:block directly on a
   <table> disables that algorithm and can misalign columns row-to-row
   (seen live: first data row's column boundaries didn't match the rest). */
.gd-single .gd-table-scroll {
    overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 18px 0;
    border: 1px solid var(--gd-rule) !important; border-radius: 8px;
    box-shadow: 0 1px 4px rgba(16, 24, 40, 0.06);
}
/* 04.07.2026: keeps Google Auto ads from inserting an ad right after the
   "... status" heading (admit_card/result/cutoff posts). Only takes effect
   once ".gd-no-autoads" is also registered as an excluded-area selector in
   AdSense dashboard -> Ads -> Overview -> Excluded areas — this CSS property
   alone does nothing without that registration. */
.gd-no-autoads { google-auto-ads: ignore; }
/* !important + boosted specificity below (added 27.07.2026) is a targeted
   counter to sarkari-style-v7.css, an older, separate stylesheet that
   blanket-!important-forces every table/th/td border to solid black across
   dozens of overlapping selectors — this was silently overriding even the
   PREVIOUS gd-single.css border color too, not just this new one, so it's
   not a regression, just newly visible once this reskin made the intended
   color worth actually seeing. !important alone wasn't enough: that file's
   highest-specificity border rule is ".single .sarkari-main-wrapper
   .post-body table td" (3 classes + 2 type selectors) — among tied
   !important declarations the browser picks by specificity FIRST, source
   order only as a tiebreak, so plain ".gd-single .post-body table td" (2
   classes) loses even with !important. The selectors below add the same
   "body.single" + ".sarkari-main-wrapper" ancestor classes (both genuinely
   present in the real DOM — see single.php's <body> and <main
   class="sarkari-main-wrapper gd-single">) to reach a decisively higher
   specificity, rather than an unbounded !important arms race. Not touching
   sarkari-style-v7.css itself (out of scope, much larger/riskier file). */
.gd-single .post-body table,
body.single .sarkari-main-wrapper.gd-single .post-body table {
    width: 100%; border-collapse: collapse; margin: 0;
    border: none !important; font-size: 0.95rem;
}
.gd-single .post-body table th,
.gd-single .post-body table td,
body.single .sarkari-main-wrapper.gd-single .post-body table th,
body.single .sarkari-main-wrapper.gd-single .post-body table td {
    border: 1px solid var(--gd-rule) !important; padding: 9px 14px; color: var(--gd-ink); vertical-align: top;
    font-variant-numeric: tabular-nums;
}
.gd-single .post-body table th {
    background: var(--gd-blue); color: #fff; font-weight: 700; text-align: left;
    font-size: 0.78rem; letter-spacing: 0.04em; text-transform: uppercase; border-color: var(--gd-blue);
}
.gd-single .post-body table td:first-child { font-weight: 600; }
.gd-single .post-body table tr:nth-child(even) td { background: var(--gd-paper); }
.gd-single .post-body table tbody tr:hover td { background: var(--gd-navy-soft); }

/* =====================================================================
   Plain headings (found live 27.07.2026) — sarkari-style-v7.css draws a
   filled box AROUND every h2/h3 (border + #f4f7fb background) and expects
   the immediately-following table/p/ol/ul to "close" that box via an
   `h2 + table` sibling selector (matching left/right/bottom border, no
   top, so heading+table read as ONE continuous box). That trick only
   works when the table is the literal next sibling of the h2 — but
   AI-authored content wraps every table in a
   <div class="gd-table-scroll">, so the sibling selector never matches,
   and the heading's box is left visually "open" with a gap before an
   entirely separate table box below it — exactly the disconnected-look
   bug reported live. The mockup this whole reskin is based on never used
   a filled heading box at all — just bold text + a bottom rule — so the
   fix is to neutralize the old box (needs matching/exceeding specificity,
   same pattern as the border fix above) rather than try to re-glue two
   boxes together.
   ===================================================================== */
.gd-single .post-body h2,
.gd-single .post-body h3,
body.single .sarkari-main-wrapper.gd-single .post-body h2,
body.single .sarkari-main-wrapper.gd-single .post-body h3 {
    border: none !important;
    background: transparent !important;
    padding: 0 0 8px !important;
    margin: 28px 0 14px !important;
    border-bottom: 1.5px solid var(--gd-rule) !important;
    font-weight: 700 !important;
    color: var(--gd-ink);
}
.gd-single .post-body h2,
body.single .sarkari-main-wrapper.gd-single .post-body h2 {
    text-align: center !important;
}
.gd-single .post-body h2 + table,
.gd-single .post-body h2 + p,
.gd-single .post-body h2 + ol,
.gd-single .post-body h2 + ul,
.gd-single .post-body h3 + table,
.gd-single .post-body h3 + p,
.gd-single .post-body h3 + ol,
.gd-single .post-body h3 + ul,
body.single .sarkari-main-wrapper.gd-single .post-body h2 + table,
body.single .sarkari-main-wrapper.gd-single .post-body h2 + p,
body.single .sarkari-main-wrapper.gd-single .post-body h2 + ol,
body.single .sarkari-main-wrapper.gd-single .post-body h2 + ul,
body.single .sarkari-main-wrapper.gd-single .post-body h3 + table,
body.single .sarkari-main-wrapper.gd-single .post-body h3 + p,
body.single .sarkari-main-wrapper.gd-single .post-body h3 + ol,
body.single .sarkari-main-wrapper.gd-single .post-body h3 + ul {
    border: none !important;
    background: transparent !important;
    padding: 0 !important;
    margin-top: 10px !important;
}
/* The CTR-blink heading (Important Links) is a deliberate exception —
   h2.gd-blink-important keeps its own box treatment further down this
   file; nothing above targets that specific class so it's unaffected. */
/* Touch target: table links (Download Result/Cutoff/PDF etc.) get an
   invisible padded hit area >=44px tall — negative margin keeps the
   visible link box unchanged so table alignment/spacing doesn't shift. */
.gd-single .post-body table td a,
.gd-single .post-body table th a {
    display: inline-block; padding: 12px 8px; margin: -12px -8px;
}
/* Swipe affordance hint — hidden by default (JS unhides only when a table
   actually overflows horizontally); disappears after first scroll. */
.gd-single .gd-scroll-hint-label {
    text-align: center; font-size: 0.75rem; color: var(--gd-ink-soft);
    padding: 5px 0 0; margin: 0 0 10px;
}
.gd-single .gd-scroll-hint-label[hidden] { display: none; }
/* Links inside content + tables: blue + underline; red on hover */
.gd-single .post-body a { color: var(--gd-link); text-decoration: underline; font-weight: 600; }
.gd-single .post-body a:hover { color: var(--gd-red); }

/* ---- Salary reveal ---- */
.gd-single .gd-salary { margin: 18px 0; }
.gd-single .gd-salary-btn { width: 100%; background: var(--gd-green); color: #fff; border: none; padding: 13px; border-radius: 8px; font-weight: 700; cursor: pointer; }
.gd-single .gd-salary-body { border: 1.5px solid var(--gd-rule); border-top: none; padding: 12px 14px; border-radius: 0 0 8px 8px; background: var(--gd-paper-raised); }
.gd-single .gd-salary-range { font-weight: 700; color: var(--gd-green); font-variant-numeric: tabular-nums; }
.gd-single .gd-salary-note { margin: 6px 0; color: var(--gd-ink); }

/* ---- Eligibility checker (Concept A — badge + range meter) ---- */
.gd-single .gd-eligi { border: 1.5px solid var(--gd-blue); border-radius: 8px; padding: 14px; margin: 18px 0; background: var(--gd-navy-soft); }
.gd-single .gd-eligi-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.gd-single .gd-eligi-badge { width: 32px; height: 32px; border-radius: 50%; background: var(--gd-blue); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 0.95rem; flex-shrink: 0; }
.gd-single .gd-eligi-title { font-weight: 700; color: var(--gd-blue); }
.gd-single .gd-eligi-row { display: flex; flex-wrap: wrap; gap: 8px; }
.gd-single .gd-eligi-age { flex: 1 1 100px; padding: 10px; border: 1.5px solid var(--gd-rule); border-radius: 6px; font-size: 0.95rem; font-variant-numeric: tabular-nums; }
.gd-single .gd-eligi-cats { display: flex; gap: 6px; flex: 1 1 220px; }
.gd-single .gd-eligi-cat-btn { flex: 1; padding: 9px 6px; border: 1.5px solid var(--gd-rule); border-radius: 6px; background: var(--gd-paper-raised); color: var(--gd-ink-soft); font-size: 0.85rem; font-weight: 600; cursor: pointer; transition: background .12s ease, color .12s ease, border-color .12s ease; }
.gd-single .gd-eligi-cat-btn.active { background: var(--gd-blue); border-color: var(--gd-blue); color: #fff; }
.gd-single .gd-eligi-bar { height: 8px; border-radius: 4px; background: var(--gd-rule); overflow: hidden; margin-top: 12px; }
.gd-single .gd-eligi-bar-fill { height: 100%; width: 0%; background: var(--gd-green); transition: width .3s ease, background .2s ease; }
.gd-single .gd-eligi-result { margin-top: 8px; font-weight: 700; }
.gd-single .gd-eligi-result.ok  { color: #146c43; }
.gd-single .gd-eligi-result.no  { color: #b3261e; }
.gd-single .gd-eligi small, .gd-single .gd-salary-body small { color: var(--gd-ink-soft); display: block; margin-top: 6px; font-size: 0.78rem; }

/* ---- Important links hub — border/title-bar re-toned, blink animation KEPT (deliberate CTR decision, 18.07.2026) ---- */
.gd-single .gd-implinks { border: 1.5px solid var(--gd-blue); border-radius: 8px; margin: 22px 0; overflow: hidden; background: var(--gd-paper-raised); }
.gd-single .gd-implinks-title { background: var(--gd-red); color: #fff; margin: 0; padding: 11px 14px; font-size: 1.1rem; animation: gd-blink-color 1s step-start infinite; }
@media (prefers-reduced-motion: reduce) {
    .gd-single .gd-implinks-title { animation: none; }
}
.gd-single .gd-implinks-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 11px; padding: 16px; }
.gd-single .gd-cal-btn { display: block; width: calc(100% - 32px); margin: 0 16px 16px; background: var(--gd-paper-raised); border: 1.5px dashed var(--gd-blue); color: var(--gd-blue); padding: 9px; border-radius: 6px; font-weight: 600; cursor: pointer; }


/* ---- Copy buttons (injected by JS) ---- */
.gd-single .gd-copy { background: var(--gd-paper-raised); border: 1.5px solid var(--gd-blue); border-radius: 6px; cursor: pointer; color: var(--gd-blue); font-size: 1.1rem; display: flex; align-items: center; justify-content: center; min-height: 44px; }
.gd-single .gd-copy:hover { color: var(--gd-red); border-color: var(--gd-red); }

/* ---- Sticky mobile action rail ---- */
.gd-sticky-bar { display: none; }
.gd-toc-fab { display: none !important; }
@media (max-width: 860px) {
    .gd-sticky-bar.gd-mobile-rail {
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 8px;
        position: fixed;
        left: 10px;
        right: 10px;
        /* --gd-anchor-h is set by gd-single.js when an AdSense anchor ad is on
           screen (both are fixed to the bottom, so without this the rail sits on
           top of the ad — or the ad on top of the rail's buttons). Defaults to 0
           so nothing changes while anchor ads are off.
           Applied as a TRANSFORM, not by changing `bottom`: moving an element via
           bottom/top is a real layout shift and would land in CLS every time the
           anchor appears (no user input precedes it, so it wouldn't be excused).
           A transform is composited only — same visual result, zero CLS. */
        bottom: calc(10px + env(safe-area-inset-bottom, 0px));
        transform: translateY(calc(-1 * var(--gd-anchor-h, 0px)));
        transition: transform .18s ease;
        z-index: 9990;
        padding: 8px;
        background: rgba(255,255,255,0.86);
        backdrop-filter: blur(14px);
        -webkit-backdrop-filter: blur(14px);
        border: 1px solid rgba(10, 36, 99, 0.12);
        border-radius: 16px;
        box-shadow: 0 8px 30px rgba(0,0,0,0.12);
    }
    .gd-mobile-rail .gd-rail-btn {
        appearance: none;
        border: 0;
        border-radius: 12px;
        min-height: 56px;
        padding: 7px 4px 6px;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 4px;
        font-size: 0.72rem;
        font-weight: 700;
        text-decoration: none;
        background: #fff;
        color: var(--gd-blue);
        box-shadow: inset 0 0 0 1px rgba(10, 36, 99, 0.08);
    }
    .gd-mobile-rail .gd-rail-btn i {
        font-size: 1.05rem;
        line-height: 1;
    }
    .gd-mobile-rail .gd-rail-btn[hidden] { display: none !important; }
    .gd-mobile-rail .gd-rail-index { color: #0A2463; }
    .gd-mobile-rail .gd-rail-whatsapp {
        background: linear-gradient(135deg, #25D366, #20b858);
        color: #fff;
        box-shadow: 0 8px 18px rgba(37, 211, 102, 0.28);
    }
    .gd-mobile-rail .gd-rail-telegram {
        background: linear-gradient(135deg, #0088cc, #21a9e8);
        color: #fff;
        box-shadow: 0 8px 18px rgba(0, 136, 204, 0.28);
    }
    .gd-mobile-rail .gd-rail-tools { color: #6d28d9; }
    /* keep content clear of the fixed rail */
    .gd-single { padding-bottom: 120px; }
    /* remove the separate floating tools button on single mobile pages */
    body.single .gdt-fab { display: none !important; }
}
.gd-toc-sheet { position: fixed; left: 0; right: 0; bottom: 0; z-index: 9995; background: #fff; border-radius: 16px 16px 0 0; box-shadow: 0 -8px 30px rgba(0,0,0,0.25); transform: translateY(100%); transition: transform .28s ease; max-height: 70vh; overflow-y: auto; padding: 8px 0 20px; }
.gd-toc-sheet.open { transform: translateY(0); }
.gd-toc-sheet h4 { margin: 10px 16px; padding-bottom: 8px; border-bottom: 1.5px solid var(--gd-rule); }
.gd-toc-sheet a { display: block; padding: 11px 16px; color: var(--gd-link); text-decoration: none; border-bottom: 1px solid #eee; }
.gd-toc-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,0.4); z-index: 9994; opacity: 0; pointer-events: none; transition: opacity .28s; }
.gd-toc-backdrop.show { opacity: 1; pointer-events: auto; }

/* =====================================================================
   DARK MODE — "Night Study Mode". Scoped to .gd-single wrapper only, so
   header/footer/other pages are never affected. Toggled via body class.
   ===================================================================== */
body.gd-dark .gd-single { background: var(--gd-paper); color: var(--gd-ink); }
body.gd-dark .gd-single .post-main { background: var(--gd-paper-raised); box-shadow: none; }
body.gd-dark .gd-single .gd-meta-row { color: var(--gd-ink-soft); }
body.gd-dark .gd-single .breadcrumb,
body.gd-dark .gd-single .breadcrumb span { color: var(--gd-ink-soft); }
body.gd-dark .gd-single .post-title,
body.gd-dark .gd-single .gd-si-body,
body.gd-dark .gd-single .post-body { color: var(--gd-ink); }
body.gd-dark .gd-single .post-body table th { background: #1f2a44; }
body.gd-dark .gd-single .post-body table td { background: var(--gd-paper-raised); color: var(--gd-ink); border-color: var(--gd-rule); }
body.gd-dark .gd-single .post-body table tr:nth-child(even) td { background: var(--gd-paper); }
body.gd-dark .gd-single .post-body table { border-color: var(--gd-rule); }
body.gd-dark .gd-single .gd-table-scroll { border-color: var(--gd-rule); box-shadow: none; }
body.gd-dark .gd-single .post-body table tbody tr:hover td { background: var(--gd-navy-soft); }
body.gd-dark .gd-single .gd-scroll-hint-label { color: var(--gd-ink-soft); }
body.gd-dark .gd-single .post-body a { color: #6ea8ff; }
body.gd-dark .gd-single .gd-shortinfo,
body.gd-dark .gd-single .gd-eligi { background: var(--gd-navy-soft); }
body.gd-dark .gd-single .gd-si-title { background: var(--gd-navy-soft); color: #cfe0ff; }
body.gd-dark .sarkari-box .box-content { background: #1a1d23; }

/* =====================================================================
   BATCH-1.5 ADDITIONS — ad slots, FAQ accordion, a11y, freshness
   ===================================================================== */

/* ---- Policy-safe ad slot (CLS-safe; only renders when configured) ---- */
/* min-height must MATCH the height the unit actually renders at, or every slot
   contributes a shift when the ad arrives (06.08.2026: reserved 250px on mobile
   while the responsive unit came in at 280px — a 30px jump per slot, and there
   are now 5 slots on a mobile post, i.e. 5 avoidable CLS events). */
.gd-single .gd-ad-slot { min-height: 280px; margin: 22px 0; text-align: center; display: flex; flex-direction: column; align-items: center; justify-content: center; contain: layout paint; }
.gd-single .gd-ad-label { font-size: 0.62rem; letter-spacing: 1px; text-transform: uppercase; color: #aaa; margin-bottom: 4px; }
.gd-single .gd-ad-slot ins { width: 100%; }
@media (min-width: 768px) { .gd-single .gd-ad-slot { min-height: 280px; } }

/* ---- FAQ accordion (native <details> inside .schema-faq) ---- */
.gd-single .post-body .schema-faq details,
.gd-single .post-body details { border: 1.5px solid var(--gd-rule); border-radius: 6px; margin: 10px 0; overflow: hidden; background: var(--gd-paper-raised); }
.gd-single .post-body details summary { cursor: pointer; padding: 12px 14px; font-weight: 700; color: var(--gd-blue); list-style: none; position: relative; padding-right: 40px; }
.gd-single .post-body details summary::-webkit-details-marker { display: none; }
.gd-single .post-body details summary::after { content: "+"; position: absolute; right: 16px; top: 50%; transform: translateY(-50%); font-size: 1.3rem; color: var(--gd-red); transition: transform .2s; }
.gd-single .post-body details[open] summary::after { content: "\2212"; }
.gd-single .post-body details[open] summary { border-bottom: 1.5px solid var(--gd-rule); }
.gd-single .post-body details > *:not(summary) { padding: 6px 14px 12px; margin: 0; }

/* ---- Last-updated freshness ---- */
.gd-single time { font-weight: 600; font-variant-numeric: tabular-nums; }

/* ---- a11y: screen-reader-only helper ---- */
.gd-single .gd-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.gd-single .gd-btn:focus-visible, .gd-single button:focus-visible, .gd-single a:focus-visible { outline: 3px solid #1551d4; outline-offset: 2px; }

/* dark mode for new elements */
body.gd-dark .gd-single .post-body details { background: var(--gd-paper-raised); border-color: var(--gd-rule); }
body.gd-dark .gd-single .post-body details summary { color: #cfe0ff; }

/* ---- Reduce motion respect ---- */
@media (prefers-reduced-motion: reduce) {
    .gd-single .gd-btn, .gd-toc-sheet, .gd-toc-backdrop { transition: none; }
}

/* =====================================================================
   Pillar 5 — Inline Table of Contents (09.07.2026)
   PHP-generated, avoids cwvpsbdelayedscript JS delay.
   ===================================================================== */
.gd-single .gd-toc-inline {
    background: var(--gd-paper);
    border: 1.5px solid var(--gd-rule);
    border-radius: 8px;
    padding: 12px 16px 14px;
    margin: 0 0 22px;
    max-width: 540px;
    font-size: 0.9rem;
}
.gd-single .gd-toc-hdr {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
}
.gd-single .gd-toc-hdr strong {
    font-size: 0.92rem;
    color: var(--gd-blue, #0A2463);
    letter-spacing: 0.01em;
}
.gd-single .gd-toc-btn {
    background: none;
    border: none;
    color: var(--gd-link, #1551d4);
    cursor: pointer;
    font-size: 0.82rem;
    padding: 0;
    line-height: 1;
}
.gd-single .gd-toc-ol {
    margin: 0;
    padding-left: 20px;
    line-height: 1.7;
}
.gd-single .gd-toc-ol a {
    color: var(--gd-link, #1551d4);
    text-decoration: none;
}
.gd-single .gd-toc-ol a:hover { text-decoration: underline; }
@media (max-width: 600px) { .gd-single .gd-toc-inline { max-width: 100%; } }

/* =====================================================================
   Sticky left TOC rail — ClearTax-style scrollspy nav (03.08.2026,
   user-requested reference: cleartax.in article sidebar — sticky, scrolls
   along with the content, current section highlighted).
   Desktop-only (≥1200px, chosen wide enough that the hard-gated per-H2
   tables — see CLAUDE.md STEP 2.6 — never get squeezed for width). Below
   that breakpoint the rail doesn't render server-side content is unaffected
   and the existing inline .gd-toc-inline box + mobile Index sheet
   (gd-single.js "Jump-link IDs + Mobile TOC drawer") keep doing the job.
   ===================================================================== */
.gd-single .gd-toc-rail { display: none; }
@media (min-width: 1200px) {
    .gd-single .gd-post-grid {
        display: grid;
        grid-template-columns: 250px 1fr;
        gap: 32px;
        align-items: start;
    }
    /* min-width:0 is required on a grid item that contains wide tables —
       without it the tables force the track wider than 1fr and shove the
       rail out of the viewport instead of scrolling inside their own
       .gd-table-scroll wrapper (js/gd-single.js #0) as intended. */
    .gd-single .gd-post-grid .gd-content-wrap { min-width: 0; }
    /* Explicit track assignment — DO NOT rely on source order here (bug found
       live 06.08.2026, reported as "har post is tarah kyun dikh rahi hai").
       In the markup .gd-content-wrap comes FIRST and the <aside> rail LAST
       (single.php ~598 and ~901), so with auto-placement the article landed in
       the 250px track and the rail got the 1fr one: every post ≥1200px rendered
       its content in a 250px strip with one word per line and 1200px of empty
       space beside it. Pinning both to a track and to row 1 fixes it without
       moving the rail above the article in the source, which would put
       navigation before content for crawlers and screen readers. */
    .gd-single .gd-post-grid .gd-content-wrap { grid-column: 2; grid-row: 1; }
    .gd-single .gd-post-grid .gd-toc-rail { grid-column: 1; grid-row: 1; }
    .gd-single .gd-toc-rail {
        display: block;
        position: sticky;
        top: 24px;
        max-height: calc(100vh - 48px);
        overflow-y: auto;
    }
    /* The rail replaces the inline "Contents" box on desktop so the reader
       doesn't see the same navigation rendered twice. */
    .gd-single .gd-toc-inline { display: none; }
}
.gd-single .gd-toc-rail-inner {
    background: var(--gd-paper, #fff);
    border: 1px solid var(--gd-rule, #dfe3ea);
    border-radius: 8px;
    padding: 16px;
}
.gd-single .gd-toc-rail-hdr {
    font-weight: 700;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--gd-blue, #0A2463);
    margin-bottom: 10px;
    padding-bottom: 8px;
    border-bottom: 2px solid var(--gd-rule, #dfe3ea);
}
.gd-single .gd-toc-rail-list {
    list-style: none;
    margin: 0;
    padding: 0;
}
.gd-single .gd-toc-rail-list li { margin: 0; }
.gd-single .gd-toc-rail-list a {
    display: block;
    padding: 7px 10px;
    margin: 1px 0;
    font-size: 0.85rem;
    line-height: 1.35;
    color: #475569;
    text-decoration: none;
    border-left: 2px solid transparent;
    border-radius: 0 4px 4px 0;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.gd-single .gd-toc-rail-list a:hover {
    background: var(--gd-paper-raised, #f1f5f9);
    color: var(--gd-blue, #0A2463);
}
.gd-single .gd-toc-rail-list a.active {
    color: var(--gd-blue, #0A2463);
    border-left-color: var(--gd-blue, #0A2463);
    background: var(--gd-paper-raised, #f1f5f9);
    font-weight: 600;
}
.gd-single .post-body h2[id],
.gd-single .post-body h3[id] { scroll-margin-top: 24px; }
body.gd-dark .gd-single .gd-toc-rail-inner { background: var(--gd-paper-raised); }
body.gd-dark .gd-single .gd-toc-rail-list a { color: #b6c2d9; }
@media (prefers-reduced-motion: reduce) {
    .gd-single .gd-toc-rail-list a { transition: none; }
}

/* =====================================================================
   Pillar 6 — "More from [Org]" cluster block (09.07.2026)
   Cross-links same-org posts to build vertical topical authority.
   ===================================================================== */
.gd-single .gd-org-cluster {
    background: var(--gd-paper);
    border: 1.5px solid var(--gd-rule);
    border-radius: 8px;
    padding: 14px 16px;
    margin-top: 24px;
}
.gd-single .gd-org-cluster-title {
    font-size: 1rem;
    color: var(--gd-blue, #0A2463);
    margin: 0 0 10px;
    border-bottom: 1px solid var(--gd-rule);
    padding-bottom: 8px;
}
.gd-single .gd-cluster-list {
    margin: 0;
    padding: 0;
    list-style: none;
}
.gd-single .gd-cluster-list li {
    border-bottom: 1px solid var(--gd-rule);
    padding: 7px 0;
    font-size: 0.88rem;
}
.gd-single .gd-cluster-list li:last-child { border-bottom: none; }
.gd-single .gd-cluster-list a {
    color: var(--gd-link, #1551d4);
    text-decoration: none;
}
.gd-single .gd-cluster-list a:hover { text-decoration: underline; }

/* =====================================================================
   Pillar spoke-links table + reverse backlink (26.07.2026, re-toned 27.07.2026)
   Table: shows a pillar's full spoke history (syllabus/admit_card/
   result/cutoff/update), queried live via gd_pillar_post_id at render
   time in single.php. Backlink: shown on a spoke pointing back to its
   pillar. Modeled on the existing .gd-org-cluster / .gd-hub-table
   conventions above and in class-gd-hub.php.
   ===================================================================== */
.gd-single .gd-pillar-spokes {
    background: var(--gd-paper);
    border: 1.5px solid var(--gd-rule);
    border-radius: 8px;
    padding: 14px 16px;
    margin-top: 24px;
}
.gd-single .gd-pillar-spokes-title {
    font-size: 1rem;
    color: var(--gd-blue, #0A2463);
    margin: 0 0 10px;
    border-bottom: 1px solid var(--gd-rule);
    padding-bottom: 8px;
}
.gd-single .gd-pillar-spokes .gd-table-scroll { overflow-x: auto; }
/* Same specificity-boost pattern as .post-body table above (see that
   comment for why plain .gd-single-scoped !important isn't enough against
   sarkari-style-v7.css's ".single .sarkari-main-wrapper .post-body table
   td" rule) — this table also renders inside .post-body. */
.gd-single .gd-pillar-spokes-table,
body.single .sarkari-main-wrapper.gd-single .gd-pillar-spokes-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.88rem;
    border: none !important;
}
.gd-single .gd-pillar-spokes-table th,
body.single .sarkari-main-wrapper.gd-single .gd-pillar-spokes-table th {
    background: var(--gd-blue, #0A2463);
    color: #fff;
    padding: 8px 10px;
    text-align: left;
    white-space: nowrap;
    font-size: 0.74rem;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    border: none !important;
}
.gd-single .gd-pillar-spokes-table td,
body.single .sarkari-main-wrapper.gd-single .gd-pillar-spokes-table td {
    padding: 8px 10px;
    border: none !important;
    border-bottom: 1px solid var(--gd-rule) !important;
    vertical-align: top;
    font-variant-numeric: tabular-nums;
}
.gd-single .gd-pillar-spokes-table tr:hover td { background: var(--gd-navy-soft); }
.gd-single .gd-pillar-spokes-stage { font-weight: 600; color: var(--gd-blue, #0A2463); white-space: nowrap; }
.gd-single .gd-pillar-spokes-title-cell a { color: var(--gd-link, #1551d4); text-decoration: none; }
.gd-single .gd-pillar-spokes-title-cell a:hover { text-decoration: underline; }
.gd-single .gd-pillar-spokes-date { color: var(--gd-ink-soft); font-size: 0.82rem; white-space: nowrap; }
/* Mobile: keep Stage + Title (what a reader actually needs to find the
   right page), hide the Updated column rather than letting the table
   overflow or break layout. */
@media (max-width: 600px) {
    .gd-single .gd-pillar-spokes-table th:nth-child(3),
    .gd-single .gd-pillar-spokes-table td:nth-child(3) { display: none; }
}

.gd-single .gd-spoke-backlink {
    font-size: 0.82rem;
    color: var(--gd-ink-soft);
    margin: 0 0 16px;
    padding: 5px 12px;
    border: 1px solid var(--gd-rule);
    border-radius: 999px;
    display: inline-block;
    background: var(--gd-paper-raised);
}
.gd-single .gd-spoke-backlink a {
    color: var(--gd-blue);
    font-weight: 700;
    text-decoration: none;
}
.gd-single .gd-spoke-backlink a:hover { text-decoration: underline; }

/* — Notify Me widget (Pillar 5 — 09.07.2026) — */
.gd-notify-box {
    background: var(--gd-navy-soft, #eef6ff);
    border: 1.5px solid var(--gd-blue, #3b82f6);
    border-radius: 8px;
    padding: 16px 20px;
    margin: 20px 0;
    text-align: center;
}
.gd-notify-title { font-weight: 600; margin: 0 0 12px; font-size: 1rem; }
.gd-notify-form {
    display: flex;
    gap: 8px;
    justify-content: center;
    flex-wrap: wrap;
    margin-bottom: 4px;
}
.gd-notify-form input[type=email] {
    border: 1.5px solid var(--gd-blue, #3b82f6);
    border-radius: 6px;
    padding: 8px 12px;
    font-size: 0.9rem;
    min-width: 200px;
    outline: none;
}
.gd-notify-form button {
    background: var(--gd-blue, #2563eb);
    color: #fff;
    border: none;
    border-radius: 6px;
    padding: 8px 16px;
    cursor: pointer;
    font-size: 0.9rem;
    font-weight: 600;
}
.gd-notify-form button:hover { filter: brightness(1.1); }
.gd-notify-msg { color: #146c43; font-size: 0.88rem; margin-top: 8px; }
body.gd-dark .gd-notify-box { background: var(--gd-navy-soft, #1e3a5f); border-color: var(--gd-blue, #60a5fa); }
body.gd-dark .gd-notify-form input[type=email] { background: #0f172a; color: #e2e8f0; border-color: var(--gd-blue, #60a5fa); }

/* Type-specific status banner CSS moved OUT of this shared file (01.07.2026)
   — each of admit_card/result/cutoff now has its own fully separate CSS
   file (css/gd-type-admit_card.css, gd-type-result.css, gd-type-cutoff.css),
   per explicit instruction: every post type gets its own CSS, no sharing,
   even at the cost of some duplication. Do not re-add banner rules here. */

/* ---- Org Hub page (Pillar 6 — page-org-hub.php) ---- */
.gd-hub-page { max-width: 860px; margin: 0 auto; padding: 16px; }
.gd-hub-header { border-bottom: 3px solid var(--gd-blue); padding-bottom: 12px; margin-bottom: 24px; }
.gd-hub-title { font-size: 1.6rem; color: var(--gd-blue); margin: 0 0 6px; }
.gd-hub-count { font-size: 0.9rem; color: #666; margin: 0; }
.gd-hub-section { margin-bottom: 28px; }
.gd-hub-section-title {
    font-size: 1.05rem; font-weight: 700; color: var(--gd-blue);
    border-left: 4px solid var(--gd-red); padding-left: 10px;
    margin-bottom: 10px;
}
.gd-hub-list { list-style: none; padding: 0; margin: 0; }
.gd-hub-item { border-bottom: 1px solid #eee; padding: 10px 0; display: flex; flex-direction: column; gap: 2px; }
.gd-hub-item:last-child { border-bottom: none; }
.gd-hub-item-title { font-weight: 600; color: var(--gd-link); text-decoration: none; font-size: 0.97rem; }
.gd-hub-item-title:hover { text-decoration: underline; }
.gd-hub-item-meta { font-size: 0.82rem; color: #555; }
.gd-hub-item-date { font-size: 0.78rem; color: #888; }
.gd-hub-empty { color: #888; font-style: italic; }

/* "View all" link at bottom of org cluster (single.php) */
.gd-cluster-hub-link { display: block; margin-top: 8px; font-size: 0.85rem; text-align: right; }
.gd-cluster-hub-link a { color: var(--gd-link); text-decoration: none; font-weight: 600; }
.gd-cluster-hub-link a:hover { text-decoration: underline; }

@media (max-width: 600px) {
    .gd-hub-title { font-size: 1.25rem; }
}

/* Live-updates ticker (26.07.2026, re-toned 27.07.2026) — short timestamped
   entries added incrementally as real developments happen, instead of
   padding a quick-answer admit_card page with static filler content to hit
   a word count. Newest entries kept at the top of the section by whoever
   edits it (or auto-sorted by gd-live-update.php). */
.gd-live-update-item {
    border-left: 4px solid var(--gd-blue, #0A2463);
    background: var(--gd-navy-soft, #eef1f8);
    border-radius: 0 8px 8px 0;
    padding: 10px 14px;
    margin: 0 0 10px;
    font-size: 0.95rem;
    line-height: 1.5;
}

.gd-live-update-item strong {
    color: var(--gd-blue, #0A2463);
    font-variant-numeric: tabular-nums;
}

/* =====================================================================
   Centered content column (27.07.2026) — comfortable reading width for
   the article's own content.
   ===================================================================== */
.gd-single .gd-content-wrap {
    max-width: 100%;
}

/* =====================================================================
   Desktop layout: centered content + horizontal card row below
   (27.07.2026, user-requested). Previously .layout was a 2-column grid
   (article | narrow sidebar) that only stacked below 1024px. User wants
   the article centered on desktop too, with the sidebar's Latest Jobs /
   Admit Card / Result boxes moved BELOW the article as a horizontal row —
   the same 3-column convention the homepage already uses for these exact
   boxes (.sarkari-grid-wrapper in sarkari-style-v7.css: display:grid;
   grid-template-columns:repeat(3,1fr)). Reusing that convention here
   instead of inventing a new one.

   Scoped to ".gd-single .layout"/".gd-single .sidebar" specifically —
   plain ".layout" is ALSO used on category-admit-card.php (a different
   template, no .gd-single wrapper), which must not be affected.
   ===================================================================== */
.gd-single .layout {
    display: block;
}
.gd-single .post-main {
    max-width: 1500px;
    margin: 0 auto;
}
/* Desktop side gutter (31.07.2026) — bootstrap's .container only gives
   15px each side, which reads as edge-to-edge on wide monitors once wide
   content tables are in the mix. Scoped to .gd-single so other templates
   (homepage/category) keep their existing bootstrap gutter untouched. */
@media (min-width: 992px) {
    .gd-single .container {
        padding-left: 40px;
        padding-right: 40px;
    }
}
.gd-single .sidebar {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    flex-direction: unset; /* override the old vertical-stack flex direction */
    max-width: 1500px;
    margin: 32px auto 0;
}
.gd-single .sidebar .gd-ad-slot {
    grid-column: 1 / -1; /* ad unit (if configured) spans the full row, above the 3 boxes */
}
@media (max-width: 900px) {
    .gd-single .sidebar { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
    .gd-single .sidebar { grid-template-columns: 1fr; }
}

/* =====================================================================
   Fixed mobile action rail clearance (06.08.2026 audit)
   .gd-sticky-bar.gd-mobile-rail is position:fixed, 79px tall, z-index 9990,
   but nothing reserved space for it — the bottom ~79px of every page (footer
   links, the last content block) sat underneath it, unreachable. Padding on
   .site rather than body so it also survives themes/plugins that reset body.
   ===================================================================== */
@media (max-width: 860px) {
    body.single #page.site,
    body.single .site {
        padding-bottom: 90px;
    }
}
/* TOC rail: on a post with many headings the sticky rail grew taller than the
   viewport, so its last links could never be reached while it stayed stuck.
   Cap it to the viewport and let the list itself scroll. */
@media (min-width: 1200px) {
    .gd-single .gd-toc-rail {
        max-height: calc(100vh - 48px);
        overflow-y: auto;
        overscroll-behavior: contain;
    }
}

/* =====================================================================
   H2 SECTION HEADINGS — bigger + brand-colored band (06.08.2026)
   Problem: sarkari-style-v7.css pins every .post-body h2 to
   `font-size: 1.075rem !important` in six duplicated legacy blocks, and
   the reskin block above (line ~280) paints it near-black --gd-ink with a
   thin bottom rule. On a 20-heading exam post that reads as one flat wall
   of text — no size contrast, no color contrast, nothing for the eye to
   land on while scanning between tables.
   Fix: solid navy band + white text + a red accent bar on BOTH sides,
   text stays centered. Both colors are existing brand tokens (--gd-blue,
   --gd-red), so nothing new enters the palette.
   Specificity: this reuses the exact
   `body.single .sarkari-main-wrapper.gd-single` pattern already used by
   the reskin block — that's what outranks v7's own `!important` rules.
   Deliberately excluded: h2.gd-blink-important (Important Links keeps its
   own CTR box treatment) and the h2[id] scroll-margin-top rule for TOC
   anchor jumps (not redeclared here, so it survives).
   ===================================================================== */
.gd-single .post-body h2:not(.gd-blink-important),
body.single .sarkari-main-wrapper.gd-single .post-body h2:not(.gd-blink-important) {
    font-size: 1.35rem !important;
    font-weight: 800 !important;
    line-height: 1.35 !important;
    color: #ffffff !important;
    background: var(--gd-blue) !important;
    border: none !important;
    border-left: 5px solid var(--gd-red) !important;
    border-right: 5px solid var(--gd-red) !important;
    border-bottom: none !important;
    border-radius: 0 !important;
    padding: 10px 14px !important;
    margin: 30px 0 12px !important;
    text-align: center !important;
}
/* Dark mode: the navy band is already dark enough to keep white text, so
   only the accent bar is lifted (pure #D90429 goes muddy on a dark page). */
body.gd-dark .gd-single .post-body h2:not(.gd-blink-important),
body.gd-dark.single .sarkari-main-wrapper.gd-single .post-body h2:not(.gd-blink-important) {
    border-left-color: #ff5566 !important;
    border-right-color: #ff5566 !important;
}
@media (max-width: 767px) {
    .gd-single .post-body h2:not(.gd-blink-important),
    body.single .sarkari-main-wrapper.gd-single .post-body h2:not(.gd-blink-important) {
        font-size: 1.2rem !important;
        padding: 9px 10px !important;
        margin: 24px 0 10px !important;
        border-left-width: 4px !important;
        border-right-width: 4px !important;
    }
}

/* =====================================================================
   TABLE STROKE + LABEL COLUMN — scannability pass (06.08.2026)
   Same problem as the h2 band above, one level down: the 1px #d8d3c6
   hairline grid set at line ~252 makes a data table read as a soft grey
   mesh, so on a post with a dozen tables the eye has nothing to anchor on
   and every cell carries equal visual weight. Works for both the 2-column
   (label | value) and 3-column (label | value | value) shapes the content
   spec produces — the rules key off :first-child, not off a column count.
   Three changes: a 2px navy outer stroke so each table reads as one block
   under its heading band, a darker grid line between cells, and a tinted
   navy label column with a heavier divider after it.
   Specificity: same body.single + .sarkari-main-wrapper ancestor pattern
   as the existing table block — needed to outrank sarkari-style-v7.css's
   blanket black-border !important rules (see the note at line ~226).
   ===================================================================== */
/* Outer stroke uses outline, NOT border: border-collapse:collapse makes the
   table's own border participate in the cell-border collapsing algorithm, and
   Chrome then reports/paints it as 0 (verified live in a cascade test — the
   2px border simply vanished). outline sits outside that algorithm entirely;
   outline-offset:-2px pulls it inward so it hugs the cell grid. */
.gd-single .post-body table,
body.single .sarkari-main-wrapper.gd-single .post-body table {
    border: none !important;
    outline: 2px solid var(--gd-blue);
    outline-offset: -2px;
    font-size: 1rem !important;
}
.gd-single .post-body table th,
.gd-single .post-body table td,
body.single .sarkari-main-wrapper.gd-single .post-body table th,
body.single .sarkari-main-wrapper.gd-single .post-body table td {
    border: 1.5px solid #c2cada !important;
    padding: 10px 14px !important;
    line-height: 1.5 !important;
    font-size: 0.95rem !important;
}
/* Header row: v7 line ~2017 forces `thead th { background: var(--table-header-bg)
   !important; color: #000 !important }` (an orange fill) at a specificity the
   existing th rule at line ~255 never beat — so the navy header this file has
   always intended was silently orange on the live site. Restated here with the
   boosted ancestor chain + thead in the selector so it actually lands. */
.gd-single .post-body table th,
.gd-single .post-body table thead th,
body.single .sarkari-main-wrapper.gd-single .post-body table th,
body.single .sarkari-main-wrapper.gd-single .post-body table thead th {
    background: var(--gd-blue) !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    font-size: 0.82rem !important;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    border-color: var(--gd-blue) !important;
    border-bottom: 2px solid var(--gd-blue) !important;
}
/* Label column: tinted, navy, heavier weight + a 2px divider after it —
   this is what makes a row scannable left-to-right without reading it. */
.gd-single .post-body table td:first-child,
body.single .sarkari-main-wrapper.gd-single .post-body table td:first-child {
    background: var(--gd-navy-soft) !important;
    color: var(--gd-blue) !important;
    font-weight: 700 !important;
    border-right: 2px solid #8fa2c8 !important;
}
/* Zebra must not repaint the label column — restate it after the generic
   nth-child rule at line ~260, which would otherwise win on source order. */
.gd-single .post-body table tr:nth-child(even) td:first-child,
body.single .sarkari-main-wrapper.gd-single .post-body table tr:nth-child(even) td:first-child {
    background: var(--gd-navy-soft) !important;
}
/* The wrapper draws its own 1px border (line ~217); with the table now
   carrying a 2px navy stroke that would read as a double outline. */
.gd-single .gd-table-scroll {
    border: none !important;
    box-shadow: none;
}
/* Dark mode: #c2cada grid lines glow against a dark surface — step them
   down, and lift the label-column text since navy-on-navy is unreadable. */
body.gd-dark .gd-single .post-body table th,
body.gd-dark .gd-single .post-body table td,
body.gd-dark.single .sarkari-main-wrapper.gd-single .post-body table td {
    border-color: #4a5160 !important;
}
body.gd-dark .gd-single .post-body table td:first-child,
body.gd-dark.single .sarkari-main-wrapper.gd-single .post-body table td:first-child {
    color: #cdd9f5;
    border-right-color: #5a6a8c !important;
}
@media (max-width: 767px) {
    .gd-single .post-body table th,
    .gd-single .post-body table td,
    body.single .sarkari-main-wrapper.gd-single .post-body table th,
    body.single .sarkari-main-wrapper.gd-single .post-body table td {
        padding: 9px 10px;
        font-size: 0.95rem;
    }
}
