/* =====================================================================
   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-ink); }
.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;
}
.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; }
.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 + 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;
        bottom: calc(10px + env(safe-area-inset-bottom, 0px));
        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) ---- */
.gd-single .gd-ad-slot { min-height: 100px; margin: 22px 0; text-align: center; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.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%; } }

/* =====================================================================
   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: 760px;
}

/* =====================================================================
   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: 860px;
    margin: 0 auto;
}
.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: 1100px;
    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; }
}
