/* ==========================================================================
   Rail Jan Pratinidhi – Eastern Railway  |  Theme: official navy + saffron
   ========================================================================== */
:root {
  --navy: #0b2f6b;
  --navy-dark: #061d45;
  --navy-light: #1d4a94;
  --saffron: #f7941d;
  --saffron-dark: #d97800;
  --green: #138808;
  --bg: #f3f5fa;
  --card-radius: .85rem;
  --font: "Segoe UI", "Noto Sans", "Nirmala UI", system-ui, -apple-system, Roboto, Arial, sans-serif;
}
html { font-size: 15px; scroll-behavior: smooth; }
html.fs-1 { font-size: 17px; } html.fs--1 { font-size: 13.5px; }
body { font-family: var(--font); background: var(--bg); color: #1f2937; display: flex; flex-direction: column; min-height: 100vh; }
a { color: var(--navy-light); }
.x-small { font-size: .75rem; }
.text-navy { color: var(--navy) !important; }
.text-saffron { color: var(--saffron-dark) !important; }
.bg-navy-subtle { background: #e7eefb; }
.border-saffron { border-top: 3px solid var(--saffron) !important; }
.letter-wide { letter-spacing: .5em; }
.skip-link { position: absolute; left: 1rem; top: .5rem; z-index: 2000; background: #fff; padding: .5rem 1rem; border-radius: .4rem; }

/* ---------- buttons ---------- */
.btn-navy { background: var(--navy); color: #fff; border: none; }
.btn-navy:hover, .btn-navy:focus { background: var(--navy-light); color: #fff; }
.btn-saffron { background: linear-gradient(135deg, var(--saffron), var(--saffron-dark)); color: #fff; border: none; box-shadow: 0 4px 14px rgba(247,148,29,.35); }
.btn-saffron:hover, .btn-saffron:focus { color: #fff; filter: brightness(1.07); transform: translateY(-1px); }
.btn-outline-navy { border: 1px solid var(--navy); color: var(--navy); }
.btn-outline-navy:hover { background: var(--navy); color: #fff; }
.btn-icon { color: #fff; border: none; background: transparent; }
.btn-icon:hover, .btn-icon:focus, .btn-icon.show { color: var(--saffron); }
.btn { transition: all .2s ease; }

/* ---------- top strips ---------- */
.gov-strip { background: var(--navy-dark); color: #dbe4f5; padding: .3rem 0; font-size: .8rem; }
.gov-strip::after { content: ""; display: block; height: 3px; margin-top: .3rem; background: linear-gradient(90deg, #ff9933 33.3%, #fff 33.3% 66.6%, #138808 66.6%); position: relative; top: .3rem; }
.brand-header { background: linear-gradient(100deg, var(--navy) 0%, var(--navy-light) 100%); color: #fff; padding: .7rem 0; box-shadow: 0 2px 10px rgba(0,0,0,.15); position: sticky; top: 0; z-index: 1030; }
.brand-logo { width: 56px; height: 56px; border-radius: 50%; background: #fff; padding: 2px; box-shadow: 0 2px 6px rgba(0,0,0,.35); object-fit: contain; }
.round-logo { border-radius: 50%; background: #fff; object-fit: contain; }
.brand-title { font-size: 1.35rem; font-weight: 700; color: #fff; letter-spacing: .2px; }
.brand-hi { font-weight: 600; color: var(--saffron); margin-left: .35rem; font-size: 1.1rem; }
.brand-sub { font-size: .78rem; color: #c9d6ef; }
.avatar-circle { width: 36px; height: 36px; border-radius: 50%; background: var(--saffron); color: #fff; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.pulse { animation: pulse 1.8s infinite; }
@keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(220,53,69,.6); } 70% { box-shadow: 0 0 0 8px rgba(220,53,69,0); } 100% { box-shadow: 0 0 0 0 rgba(220,53,69,0); } }
@media (max-width: 575px) { .brand-title { font-size: 1.05rem; } .brand-hi, .brand-sub { display: none; } .brand-logo { width: 42px; height: 42px; } }

/* ---------- portal layout ---------- */
.portal-wrap { display: flex; flex: 1; }
.sidebar { width: 260px; background: #fff; border-right: 1px solid #e3e8f1; }
@media (min-width: 992px) { .sidebar { position: sticky; top: 78px; height: calc(100vh - 78px); overflow-y: auto; flex-shrink: 0; } .sidebar .offcanvas-body { display: flex; height: 100%; } }
@media (max-width: 991.98px) { .sidebar.offcanvas-lg { background: var(--navy-dark); } .sidebar .nav-link { color: #dbe4f5 !important; } .sidebar .sidebar-heading { color: #9fb3d9; } }
.sidebar-role { background: linear-gradient(135deg, var(--saffron), var(--saffron-dark)); color: #fff; font-weight: 600; padding: .8rem 1.2rem; font-size: .9rem; }
.sidebar .nav-link { color: #374151; padding: .62rem 1.2rem; display: flex; gap: .75rem; align-items: center; border-left: 3px solid transparent; font-weight: 500; transition: all .15s; }
.sidebar .nav-link i { font-size: 1.1rem; color: var(--navy-light); }
.sidebar .nav-link:hover { background: #f0f4fb; color: var(--navy); }
.sidebar .nav-link.active { background: #e7eefb; color: var(--navy); border-left-color: var(--saffron); font-weight: 700; }
.sidebar-heading { font-size: .7rem; text-transform: uppercase; letter-spacing: .08em; color: #8b95a7; padding: 1rem 1.2rem .3rem; font-weight: 700; }
.sidebar-train { text-align: center; font-size: 3rem; color: #e3e8f1; padding: 1rem; }
.portal-main { flex: 1; min-width: 0; padding: 1.5rem; display: flex; flex-direction: column; }
@media (min-width: 1200px) { .portal-main { padding: 1.75rem 2.25rem; } }
.portal-footer { margin-top: auto; padding-top: 2rem; border-top: 1px solid #e3e8f1; padding-bottom: .5rem; }
.page-head { margin-bottom: 1.4rem; }
.page-head h1 { font-size: 1.55rem; font-weight: 700; color: var(--navy); margin-bottom: .2rem; }
.page-head h1 > i { color: var(--saffron); margin-right: .35rem; }

/* ---------- cards / tables ---------- */
.card { border: none; border-radius: var(--card-radius); }
.card > .card-header:first-child { border-radius: var(--card-radius) var(--card-radius) 0 0; border-bottom: 1px solid #edf0f6; padding: .85rem 1.1rem; }
.table-modern thead th { background: #f6f8fc; color: #5b6578; font-size: .76rem; text-transform: uppercase; letter-spacing: .04em; font-weight: 700; border-bottom: 1px solid #e6eaf2; white-space: nowrap; }
.table-modern td { border-color: #f0f2f7; }
.row-link { cursor: pointer; }
.ref-link { color: var(--navy); text-decoration: none; font-family: Consolas, "Courier New", monospace; letter-spacing: .5px; }
.table-danger-soft td { background: #fff5f5 !important; }
.status-badge { font-weight: 600; font-size: .75rem; padding: .4em .75em; }
.empty-state { text-align: center; padding: 2.5rem 1rem; color: #9aa3b5; }
.empty-state i { font-size: 2.6rem; display: block; margin-bottom: .5rem; }
.filter-card .form-label { margin-bottom: .15rem; color: #5b6578; font-weight: 600; }
.form-label.req::after { content: " *"; color: #dc3545; }
.form-control:focus, .form-select:focus { border-color: var(--navy-light); box-shadow: 0 0 0 .2rem rgba(29,74,148,.15); }

/* ---------- dashboard ---------- */
.welcome-banner { position: relative; overflow: hidden; background: linear-gradient(120deg, var(--navy) 0%, var(--navy-light) 60%, #2c63c4 100%); color: #fff; border-radius: 1rem; padding: 1.6rem 1.8rem; display: flex; flex-wrap: wrap; gap: 1rem; justify-content: space-between; align-items: center; box-shadow: 0 10px 30px rgba(11,47,107,.25); }
.welcome-banner > * { position: relative; z-index: 1; }
.banner-train { position: absolute !important; right: -10px; bottom: -30px; font-size: 9rem; opacity: .08; z-index: 0 !important; animation: drift 12s ease-in-out infinite alternate; }
@keyframes drift { from { transform: translateX(0); } to { transform: translateX(-60px); } }
.kpi-card { display: block; text-decoration: none; background: #fff; border-radius: var(--card-radius); padding: 1.1rem 1.2rem; box-shadow: 0 2px 10px rgba(16,24,40,.06); position: relative; overflow: hidden; transition: transform .2s, box-shadow .2s; border-bottom: 3px solid var(--c); }
.kpi-card:hover { transform: translateY(-4px); box-shadow: 0 10px 24px rgba(16,24,40,.12); }
.kpi-icon { width: 46px; height: 46px; border-radius: .7rem; display: flex; align-items: center; justify-content: center; font-size: 1.35rem; background: color-mix(in srgb, var(--c) 14%, white); color: var(--c); margin-bottom: .6rem; }
.kpi-num { font-size: 1.9rem; font-weight: 800; color: #1f2937; line-height: 1; }
.kpi-label { color: #6b7280; font-size: .82rem; font-weight: 600; margin-top: .25rem; }
.kpi-navy { --c: #1d4a94; } .kpi-warning { --c: #e69500; } .kpi-success { --c: #1e9e5a; } .kpi-secondary { --c: #6b7280; } .kpi-info { --c: #0e9ab3; } .kpi-danger { --c: #d64545; } .kpi-primary { --c: #2f6fdd; }
.chart-box { position: relative; min-height: 260px; }
.chart-box canvas { max-height: 280px; }
.station-chip { background: #eef3fc; color: var(--navy); font-weight: 500; border: 1px solid #d6e1f5; }
.mp-photo { width: 120px; height: 140px; object-fit: cover; border-radius: .75rem; border: 4px solid #fff; box-shadow: 0 6px 18px rgba(0,0,0,.15); background: #e9eef7; }
.mp-thumb { width: 44px; height: 52px; object-fit: cover; border-radius: .4rem; background: #e9eef7; }
.avatar-xl { width: 110px; height: 110px; border-radius: 50%; background: #e7eefb; color: var(--navy); font-size: 3.5rem; display: inline-flex; align-items: center; justify-content: center; }
.notif-unread { background: #fffaf2; }

/* ---------- request form ---------- */
.form-section > .card-header { background: #fff; font-weight: 700; color: var(--navy); }
.step-dot { display: inline-flex; width: 26px; height: 26px; border-radius: 50%; background: var(--saffron); color: #fff; font-size: .85rem; align-items: center; justify-content: center; margin-right: .4rem; }
.drop-zone { border: 2px dashed #b9c7e2; border-radius: .8rem; padding: 1.6rem 1rem; display: flex; flex-direction: column; align-items: center; gap: .25rem; cursor: pointer; text-align: center; transition: all .2s; background: #f9fbff; }
.drop-zone:hover, .drop-zone.drag { border-color: var(--saffron); background: #fff8ef; }
.drop-zone i { font-size: 2.2rem; color: var(--navy-light); }
.type-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .75rem; }
.type-card { display: flex; flex-direction: column; align-items: center; text-align: center; gap: .15rem; padding: .9rem .6rem; border: 2px solid #dfe5f0; border-radius: .8rem; cursor: pointer; background: #fff; transition: all .15s; height: 100%; }
.type-card i { font-size: 1.6rem; color: var(--navy-light); }
.type-card:hover { border-color: var(--saffron); }
.btn-check:checked + .type-card { border-color: var(--navy); background: #eef3fc; box-shadow: 0 0 0 3px rgba(29,74,148,.15); }
.btn-check:focus-visible + .type-card { outline: 3px solid var(--saffron); }
.type-card.type-eq i { color: #c62828; }
.btn-check:checked + .type-card.type-eq { border-color: #c62828; background: #fff3f3; box-shadow: 0 0 0 3px rgba(198,40,40,.15); }
fieldset.type-section { min-width: 0; }
.type-card.type-cp { border-style: dashed; }
.type-card.type-cp i { color: #b8860b; }
.btn-check:checked + .type-card.type-cp { border-color: #d4a017; background: #fffbea; box-shadow: 0 0 0 3px rgba(212,160,23,.18); }
.cp-card { border: 2px dashed #e6c35c !important; background: repeating-linear-gradient(135deg, #fffdf5 0 18px, #fff8e1 18px 36px); }
.cp-icon { width: 84px; height: 84px; margin: 0 auto; border-radius: 50%; background: #fff3cd; color: #d97800; font-size: 2.6rem; display: flex; align-items: center; justify-content: center; animation: float 3s ease-in-out infinite; }
.eq-card { border: 1px solid #f3c7c7 !important; }
.eq-card > .card-header { background: linear-gradient(90deg, #b71c1c, #d32f2f); color: #fff !important; }
.eq-certify { background: #fff8e6; border: 1px dashed #e0b44a; border-radius: .6rem; padding: .75rem 1rem; }
.letter-wide-sm { letter-spacing: .12em; }
.eq-table th { width: 38%; background: #f6f8fc; font-weight: 600; }
.eq-table td, .eq-table th { padding: .45rem .7rem; }
.check-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .15rem 1rem; max-height: 260px; overflow-y: auto; border: 1px solid #e3e8f1; border-radius: .5rem; padding: .7rem; background: #fbfcfe; }

/* ---------- request view ---------- */
.ref-title { font-family: Consolas, "Courier New", monospace; color: var(--navy); font-weight: 800; letter-spacing: 1px; }
.success-hero { background: linear-gradient(135deg, #e9f8ef, #f4fbf7); border: 1px solid #c5ead4; border-radius: 1rem; padding: 2rem 1rem; animation: fadeUp .6s ease; }
.success-check { width: 72px; height: 72px; border-radius: 50%; background: #1e9e5a; color: #fff; font-size: 2.6rem; display: inline-flex; align-items: center; justify-content: center; margin-bottom: .8rem; animation: pop .5s cubic-bezier(.2,1.6,.4,1); }
@keyframes pop { from { transform: scale(0); } to { transform: scale(1); } }
.ref-big { display: inline-block; font-family: Consolas, monospace; font-size: 2rem; font-weight: 800; color: var(--navy); background: #fff; border: 2px dashed var(--saffron); padding: .3rem 1.4rem; border-radius: .6rem; letter-spacing: 3px; }
.detail-grid .dl { display: block; font-size: .72rem; text-transform: uppercase; letter-spacing: .04em; color: #8b95a7; font-weight: 700; }
.desc-box { background: #f8fafd; border-left: 4px solid var(--saffron); padding: 1rem 1.2rem; border-radius: .4rem; white-space: normal; word-wrap: break-word; }
.reply-card { border: 1px solid #c5ead4 !important; }
.reply-card > .card-header { background: #e9f8ef; color: #136c3c; }
.action-card { border: 1px solid #d6e1f5 !important; }
.action-card > .card-header { background: var(--navy); color: #fff; }
.action-card .nav-pills .nav-link { color: var(--navy); background: #eef3fc; font-size: .88rem; }
.action-card .nav-pills .nav-link.active { background: var(--saffron); color: #fff; }
.doc-chip { display: inline-flex; align-items: center; gap: .35rem; padding: .3rem .6rem; border: 1px solid #dfe5f0; border-radius: .45rem; font-size: .8rem; text-decoration: none; color: #374151; background: #fff; transition: all .15s; }
.doc-chip:hover { border-color: var(--navy-light); background: #f3f7fe; }

/* stepper */
.stepper { display: flex; justify-content: space-between; position: relative; }
.stepper::before { content: ""; position: absolute; top: 19px; left: 8%; right: 8%; height: 3px; background: #e3e8f1; }
.step { flex: 1; text-align: center; position: relative; z-index: 1; }
.step-circle { width: 40px; height: 40px; border-radius: 50%; margin: 0 auto .4rem; display: flex; align-items: center; justify-content: center; font-weight: 700; background: #e3e8f1; color: #8b95a7; border: 3px solid #fff; box-shadow: 0 0 0 2px #e3e8f1; transition: all .3s; }
.step.done .step-circle { background: #1e9e5a; color: #fff; box-shadow: 0 0 0 2px #1e9e5a; }
.step.current .step-circle { background: var(--saffron); color: #fff; box-shadow: 0 0 0 2px var(--saffron); animation: pulseS 2s infinite; }
@keyframes pulseS { 0% { box-shadow: 0 0 0 2px var(--saffron), 0 0 0 2px rgba(247,148,29,.5); } 70% { box-shadow: 0 0 0 2px var(--saffron), 0 0 0 12px rgba(247,148,29,0); } 100% { box-shadow: 0 0 0 2px var(--saffron), 0 0 0 2px rgba(247,148,29,0); } }
.step-label { font-size: .78rem; font-weight: 600; color: #6b7280; }
.step.current .step-label, .step.done .step-label { color: #1f2937; }

/* timeline */
.timeline { list-style: none; padding: 0; margin: 0; position: relative; }
.timeline::before { content: ""; position: absolute; left: 15px; top: 4px; bottom: 4px; width: 2px; background: #e3e8f1; }
.tl-item { position: relative; padding-left: 46px; padding-bottom: 1.2rem; }
.tl-dot { position: absolute; left: 0; top: 0; width: 32px; height: 32px; border-radius: 50%; color: #fff; display: flex; align-items: center; justify-content: center; font-size: .9rem; box-shadow: 0 0 0 4px #fff; }
.tl-remarks { background: #f6f8fc; border-radius: .45rem; padding: .55rem .7rem; font-size: .84rem; margin-top: .35rem; border: 1px solid #edf0f6; }

/* star rating (CSS only) */
.star-rating { display: inline-flex; flex-direction: row-reverse; gap: .1rem; }
.star-rating input { display: none; }
.star-rating label { font-size: 1.8rem; color: #d1d5db; cursor: pointer; transition: color .15s; }
.star-rating input:checked ~ label, .star-rating label:hover, .star-rating label:hover ~ label { color: #f5b301; }

/* ---------- public site ---------- */
.ticker-bar { background: #fff4e5; border-bottom: 1px solid #fde1b8; font-size: .88rem; overflow: hidden; }
.ticker-label { background: var(--saffron); color: #fff; padding: .45rem .9rem; font-weight: 700; white-space: nowrap; position: relative; z-index: 1; }
.ticker-wrap { overflow: hidden; flex: 1; }
.ticker-move { display: inline-block; white-space: nowrap; padding-left: 100%; animation: ticker 35s linear infinite; }
.ticker-wrap:hover .ticker-move { animation-play-state: paused; }
.ticker-item { margin-right: 4rem; color: #7a4300; font-weight: 500; }
@keyframes ticker { to { transform: translateX(-100%); } }

.hero { position: relative; overflow: hidden; color: #fff; background: radial-gradient(ellipse at 80% 20%, #2c63c4 0%, transparent 55%), linear-gradient(135deg, var(--navy-dark) 0%, var(--navy) 55%, var(--navy-light) 100%); padding-bottom: 50px; }
.hero::before { content: ""; position: absolute; inset: 0; background-image: radial-gradient(rgba(255,255,255,.07) 1px, transparent 1px); background-size: 22px 22px; }
.hero-chip { display: inline-block; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.25); padding: .35rem .9rem; border-radius: 2rem; font-size: .82rem; backdrop-filter: blur(4px); }
.hero-title { font-size: clamp(1.9rem, 4vw, 3rem); font-weight: 800; line-height: 1.15; }
.hero-text { font-size: 1.08rem; color: #d3def3; max-width: 560px; }
.hero-trust i { color: var(--saffron); margin-right: .3rem; }
.hero-art img { filter: drop-shadow(0 20px 40px rgba(0,0,0,.35)); animation: float 6s ease-in-out infinite; }
@keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }
.track-strip { position: absolute; bottom: 0; left: 0; right: 0; height: 40px; background: repeating-linear-gradient(90deg, #5a4630 0 6px, transparent 6px 26px) 0 22px / 100% 8px no-repeat, linear-gradient(#9aa5b8, #9aa5b8) 0 20px / 100% 2px no-repeat, linear-gradient(#9aa5b8, #9aa5b8) 0 30px / 100% 2px no-repeat; }
.mini-train { position: absolute; bottom: 14px; left: -220px; white-space: nowrap; font-size: 1.3rem; color: var(--saffron); animation: run 14s linear infinite; }
.mini-train i { margin-right: 2px; } .mini-train .bi-square-fill { color: #fff; font-size: 1rem; }
@keyframes run { to { left: 110%; } }

.stats-band { margin-top: -1px; background: #fff; padding: 2rem 0; box-shadow: 0 6px 20px rgba(0,0,0,.05); position: relative; z-index: 2; }
.stat-tile { padding: 1rem; border-radius: .8rem; transition: transform .2s; }
.stat-tile:hover { transform: translateY(-4px); }
.stat-tile i { font-size: 2rem; color: var(--saffron); }
.stat-num { font-size: 2.2rem; font-weight: 800; color: var(--navy); }
.stat-lbl { color: #6b7280; font-weight: 600; font-size: .88rem; }

.section-light { background: #f6f8fc; }
.section-kicker { display: inline-block; color: var(--saffron-dark); font-weight: 700; text-transform: uppercase; letter-spacing: .12em; font-size: .78rem; }
.section-title { font-weight: 800; color: var(--navy); }
.process-card { background: #fff; border-radius: 1rem; padding: 2rem 1.5rem 1.5rem; text-align: center; position: relative; box-shadow: 0 4px 18px rgba(16,24,40,.06); transition: all .25s; border-bottom: 4px solid transparent; }
.process-card:hover { transform: translateY(-6px); border-bottom-color: var(--saffron); box-shadow: 0 14px 30px rgba(16,24,40,.12); }
.process-step { position: absolute; top: -14px; left: 50%; transform: translateX(-50%); background: var(--saffron); color: #fff; width: 30px; height: 30px; border-radius: 50%; font-weight: 800; display: flex; align-items: center; justify-content: center; box-shadow: 0 3px 8px rgba(247,148,29,.5); }
.process-icon { width: 70px; height: 70px; margin: .5rem auto 1rem; border-radius: 1.2rem; background: linear-gradient(135deg, #e7eefb, #f3f7fe); color: var(--navy); font-size: 2rem; display: flex; align-items: center; justify-content: center; }
@media (min-width: 992px) { .process-row > div:not(:last-child) .process-card::after { content: "\2192"; position: absolute; right: -22px; top: 45%; color: var(--saffron); font-size: 1.6rem; font-weight: 700; } }
.feature-item { display: flex; gap: .9rem; align-items: flex-start; background: #fff; border: 1px solid #edf0f6; border-radius: .8rem; padding: 1rem; height: 100%; transition: all .2s; }
.feature-item:hover { border-color: var(--saffron); box-shadow: 0 6px 18px rgba(247,148,29,.12); }
.feature-icon { flex-shrink: 0; width: 44px; height: 44px; border-radius: .7rem; background: var(--navy); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 1.2rem; }
.notice-card > .card-header { background: var(--navy); color: #fff; font-weight: 700; }
.notice-scroll { max-height: 380px; overflow-y: auto; }
.notice-item { padding: .9rem 1.1rem; border-bottom: 1px dashed #e3e8f1; }
.notice-item:hover { background: #fafbfe; }
.blink { animation: blink 1.4s step-start infinite; }
@keyframes blink { 50% { opacity: .35; } }
.mp-card { background: #fff; border-radius: 1rem; padding: 1.5rem 1rem; box-shadow: 0 4px 18px rgba(16,24,40,.06); transition: all .25s; }
.mp-card:hover { transform: translateY(-6px); box-shadow: 0 14px 30px rgba(16,24,40,.12); }
.divisions-band { background: linear-gradient(135deg, var(--navy-dark), var(--navy)); }
.division-tile { background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.15); border-radius: .9rem; padding: 1.3rem; color: #fff; text-align: center; transition: all .2s; }
.division-tile:hover { background: rgba(255,255,255,.14); transform: translateY(-4px); }
.division-code { font-size: 1.8rem; font-weight: 800; color: var(--saffron); }

.site-footer { background: #071a3a; color: #dbe4f5; margin-top: auto; }
.site-footer::before { content: ""; display: block; height: 4px; background: linear-gradient(90deg, #ff9933 33.3%, #fff 33.3% 66.6%, #138808 66.6%); }
.footer-links a { color: #c9d6ef; text-decoration: none; line-height: 2; }
.footer-links a:hover { color: var(--saffron); }
.footer-bottom { background: #04112a; color: #8c9bbb; }

/* auth */
.auth-bg { flex: 1; background: radial-gradient(circle at 15% 20%, #dfe8f8 0, transparent 40%), radial-gradient(circle at 85% 80%, #fde9cf 0, transparent 40%), var(--bg); }
.auth-shell { border-radius: 1.2rem; overflow: hidden; max-width: 1000px; margin: 0 auto; }
.auth-side { background: linear-gradient(150deg, var(--navy-dark), var(--navy-light)); color: #fff; padding: 3rem; align-items: center; }
.auth-points li { margin-bottom: .6rem; } .auth-points i { color: var(--saffron); margin-right: .5rem; }
.auth-card { border-radius: 1.2rem; border-top: 4px solid var(--saffron) !important; }
.pw-toggle { position: absolute; right: .5rem; top: 50%; transform: translateY(-50%); z-index: 5; color: #6b7280; }
.otp-icon { width: 84px; height: 84px; margin: 0 auto; border-radius: 50%; background: #fff4e5; color: var(--saffron); font-size: 2.6rem; display: flex; align-items: center; justify-content: center; animation: float 3s ease-in-out infinite; }
.otp-box { width: 50px; height: 58px; text-align: center; font-size: 1.6rem; font-weight: 700; border-radius: .6rem; border: 2px solid #d6deeb; }
.otp-box:focus { border-color: var(--saffron); box-shadow: 0 0 0 .2rem rgba(247,148,29,.2); }
@media (max-width: 400px) { .otp-box { width: 40px; height: 50px; font-size: 1.3rem; } }
.pw-meter { height: 5px; background: #e5e7eb; border-radius: 3px; overflow: hidden; }
.pw-meter div { height: 100%; width: 0; transition: all .3s; }

/* reveal on scroll */
.reveal { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; }
.reveal.visible { opacity: 1; transform: none; }
@keyframes fadeUp { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
.alert { animation: fadeUp .35s ease; border-radius: .7rem; }

/* high contrast mode */
html.hc body, html.hc .card, html.hc .sidebar, html.hc .stats-band, html.hc .section-light, html.hc .feature-item, html.hc .process-card, html.hc .mp-card { background: #000 !important; color: #ff0 !important; }
html.hc a, html.hc .nav-link, html.hc .text-muted, html.hc .section-title, html.hc .stat-num, html.hc .kpi-num, html.hc .kpi-label, html.hc h1, html.hc h5 { color: #ff0 !important; }
html.hc .table, html.hc .table td, html.hc .table th { background: #000 !important; color: #fff !important; }

@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; } .reveal { opacity: 1; transform: none; } }

/* print */
@media print {
  .gov-strip, .brand-header, .sidebar, .no-print, .portal-footer, .site-footer, .btn, .alert-dismissible .btn-close { display: none !important; }
  body { background: #fff; } .portal-main { padding: 0; } .card { box-shadow: none !important; border: 1px solid #ccc !important; break-inside: avoid; }
  .portal-main::before { content: "Rail Jan Pratinidhi – Eastern Railway"; display: block; font-size: 18px; font-weight: 700; border-bottom: 2px solid #000; margin-bottom: 12px; }
  .col-xl-8, .col-xl-4 { width: 100% !important; }
}
