/* BJP-inspired civic portal theme: saffron, green and clean white surfaces. */
:root{--bjp-saffron:#ef7b16;--bjp-saffron-dark:#c9550d;--bjp-green:#0c5b37;--bjp-green-deep:#063d28;--bjp-cream:#fffaf2;--bjp-line:#f0d9bd;--bjp-ink:#18352a}
body{background:linear-gradient(180deg,#fffaf2 0,#fff 42%,#fff8ed 100%);color:var(--bjp-ink)}
.topbar{border-bottom:4px solid var(--bjp-saffron)!important;background:linear-gradient(90deg,#073d28e8,#0c5b37b8 55%,#ef7b16b8),url("ward-50-city-park.jpg") center 54%/cover no-repeat!important;box-shadow:0 7px 20px #063d2838!important}
.topbar .portal-nav a{position:relative;color:#fff!important;font-weight:700!important}
.topbar .portal-nav a::after{content:"";position:absolute;right:0;bottom:-9px;left:0;height:3px;border-radius:999px;background:var(--bjp-saffron);opacity:0;transition:opacity .2s}
.topbar .portal-nav a:hover::after,.topbar .portal-nav a:focus-visible::after{opacity:1}
.hero{background:linear-gradient(112deg,var(--bjp-green-deep),var(--bjp-green) 56%,#1b704b)!important;border-bottom:5px solid var(--bjp-saffron)}
.hero h1 em,.candidate-hero h1 em,.vision-hero h1 em{color:#ffd05a!important}
.gold{background:linear-gradient(135deg,#ffb52d,var(--bjp-saffron))!important;color:#172222!important;box-shadow:0 8px 18px #bd510438}
.glass{border-color:#ffffff77!important;background:#ffffff1c!important}
.section h2,.request-section-heading h2,.candidate-section-head h2,.vision-heading h2{color:var(--bjp-green-deep)}
.eyebrow.dark{color:var(--bjp-saffron-dark)!important}.eyebrow.dark::before{content:"✦ ";color:var(--bjp-saffron)}
.vision-card h3,.form-card h3,.request-form-card h3,.trackbox h3,.news-card h3,.candidate-details h3,.promise-card h3,.privacy-card h2{color:var(--bjp-green-deep)!important}
.public-info,.vision-hero{background:linear-gradient(110deg,#063d28ed,#0c5b37c9 55%,#ef7b1694),url("dravyavati-riverfront.avif") center/cover no-repeat!important;border:1px solid #ffffff55}
.development-agenda{border-top:4px solid var(--bjp-saffron)}
.development-agenda .section-head>div,.public-overview .section-head>div{display:block!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
.development-agenda .section-head h2,.public-overview .section-head h2{display:block!important;color:#fff!important;text-shadow:0 2px 7px #001b18aa!important;opacity:1!important;visibility:visible!important}
.development-agenda .section-head .eyebrow,.public-overview .section-head .eyebrow{display:block!important;color:#fff1d0!important;text-shadow:0 1px 4px #001b18aa!important;opacity:1!important;visibility:visible!important}
.vision-card,.form-card,.request-form-card,.trackbox,.news-card,.candidate-details article,.promise-card,.privacy-card{border-color:var(--bjp-line)!important;box-shadow:0 10px 25px #74370a0d}
.vision-card:hover,.news-card:hover{border-color:#ef9b4b!important;box-shadow:0 16px 34px #74370a1a!important}
.vision-card .vicon,.promise-icon{filter:saturate(1.15)}
.band{background:linear-gradient(112deg,var(--bjp-green-deep),var(--bjp-green))!important;border-top:4px solid var(--bjp-saffron);border-bottom:4px solid var(--bjp-saffron)}
.feedback-card{border-color:#ffffff66!important;background:linear-gradient(145deg,#ffffff13,#ffffff08)!important}
.hero h1,.hero h2,.hero h3,.band h1,.band h2,.band h3,.band .section h2,.band .section h3,.public-info h1,.public-info h2,.public-info h3,.vision-hero h1,.vision-hero h2,.vision-hero h3,.candidate-hero h1,.candidate-hero h2,.candidate-hero h3,.pledge h1,.pledge h2,.pledge h3{color:#fff!important}
.hero .eyebrow,.band .eyebrow,.public-info .eyebrow,.vision-hero .eyebrow,.candidate-hero .eyebrow,.pledge .eyebrow{color:#ffe0a8!important}
.band .eyebrow.dark,.public-info .eyebrow.dark{color:#ffd05a!important}.band .eyebrow.dark::before,.public-info .eyebrow.dark::before{color:#fff!important}
.darkbtn{background:linear-gradient(135deg,var(--bjp-green-deep),var(--bjp-green))!important;box-shadow:0 7px 15px #063d2830}
input:focus,textarea:focus,select:focus{border-color:var(--bjp-saffron)!important;box-shadow:0 0 0 3px #ef7b1620}
.location-button,.tracking-help{color:var(--bjp-saffron-dark)!important}
.tracking-help{font-weight:800!important}.tracking-help-modal{border-top:5px solid var(--bjp-saffron)!important}
.result{border-left:4px solid var(--bjp-saffron)}
.public-overview{border-top:4px solid var(--bjp-saffron);box-shadow:0 15px 34px #063d2830}
.candidate-hero{background:linear-gradient(122deg,var(--bjp-green-deep),var(--bjp-green) 55%,#c55a12)!important;border:2px solid #f2a34a66}
.candidate-photo-wrap.candidate-poster-wrap{border-color:#f3ae5a!important;box-shadow:0 18px 36px #4f260d52!important}
.party-office-banner{background:linear-gradient(100deg,#b94c0c,#ef7b16 49%,#f7a42e)!important;border-bottom-color:var(--bjp-green)!important}
footer{background:linear-gradient(120deg,#063d28,#0c5b37)!important;border-top:5px solid var(--bjp-saffron)}
footer .footer-links a,footer .footer-service a{color:#fff1d0!important;text-decoration-color:#f6b04b!important}
footer .footer-links a:hover,footer .footer-links a:focus-visible,footer .footer-service a:hover,footer .footer-service a:focus-visible{color:#fff!important;outline-color:#ffd05a!important}
.footer-service img{border-color:#f7b143!important}.footer-admin{color:#ffd05a!important}
.adminbox{border-top:6px solid var(--bjp-saffron)!important}.adminstats div{border:1px solid var(--bjp-line)}
/* One visual language for every page: dark headings on light surfaces, white headings on image/dark surfaces. */
:root{--bjp-heading:var(--bjp-green-deep);--bjp-heading-on-dark:#fff;--bjp-kicker:var(--bjp-saffron-dark);--bjp-kicker-on-dark:#ffe0a8;--bjp-body:#415851}
body{color:var(--bjp-ink)!important}
.section-head h2,.request-section-heading h2,.candidate-section-head h2,.vision-heading h2,.news-page h2,.privacy-card h1,.privacy-card h2,.candidate-details h2,.promise-card h2{color:var(--bjp-heading)!important}
.section-head .eyebrow.dark,.request-section-heading .eyebrow.dark,.candidate-section-head .eyebrow.dark,.vision-heading .eyebrow.dark,.news-page .eyebrow.dark,.privacy-card .eyebrow.dark{color:var(--bjp-kicker)!important}
.vision-card h3,.form-card h3,.request-form-card h3,.trackbox h3,.news-card h3,.candidate-details h3,.promise-card h3,.chart-card h3,.summary-card h3,.privacy-card h2{color:var(--bjp-heading)!important}
.vision-card p,.form-card p,.request-form-card p,.trackbox p,.news-card p,.candidate-details p,.promise-card p,.privacy-card p,.privacy-card li{color:var(--bjp-body)!important}
.hero :is(h1,h2,h3,h4),.band :is(h1,h2,h3,h4),.public-info :is(h1,h2,h3,h4),.development-agenda .section-head h2,.public-overview .section-head h2,.citizen-voice :is(h1,h2,h3,h4),.vision-hero :is(h1,h2,h3,h4),.candidate-hero :is(h1,h2,h3,h4),.news-hero :is(h1,h2,h3,h4),.privacy-hero :is(h1,h2,h3,h4),.pledge :is(h1,h2,h3,h4){color:var(--bjp-heading-on-dark)!important}
.hero .eyebrow,.band .eyebrow,.public-info .eyebrow,.development-agenda .section-head .eyebrow,.public-overview .section-head .eyebrow,.citizen-voice .eyebrow,.vision-hero .eyebrow,.candidate-hero .eyebrow,.news-hero .eyebrow,.privacy-hero .eyebrow,.pledge .eyebrow{color:var(--bjp-kicker-on-dark)!important}
.development-agenda .counter{color:#fff1d0!important;text-shadow:0 1px 4px #001b18aa}
.news-card-badge,.dashboard-cards b,.summary-number,.line b{color:var(--bjp-green)!important}
.news-card-badge{background:#e9f5ed!important}.pill.pending{background:#fff1d4!important;color:#8a4d00!important}.pill.progressing{background:#e7efff!important;color:#244f9f!important}.pill.resolved{background:#dbf4e5!important;color:#0c6846!important}
@media(max-width:800px){
  .topbar{border-bottom-width:3px!important}
  .topbar .portal-nav a{background:#063d287d!important;border:1px solid #ffffff26}
  .topbar .portal-nav a::after{display:none}
  .hero{border-bottom-width:4px}
  .candidate-hero{border-radius:0!important}
  .public-info,.vision-hero{border-left:0;border-right:0}
  .development-agenda .section-head>div,.public-overview .section-head>div{width:100%;padding:0!important}
}

/* Saffron-forward BJP visual pass: green remains a supporting contrast colour. */
:root{--bjp-saffron:#f58220;--bjp-saffron-dark:#ad4005;--bjp-green:#0a4c31;--bjp-green-deep:#063720;--bjp-cream:#fff8ef;--bjp-line:#f3c28d;--bjp-ink:#27382f;--bjp-heading:#743008;--bjp-kicker:#b84608}
body{background:linear-gradient(180deg,#fff4e2 0,#fff 38%,#fff8ef 100%)!important}
.topbar{background:linear-gradient(92deg,#9b3907ef,#ef7418dd 58%,#ffc461c9),url("ward-50-city-park.jpg") center 54%/cover no-repeat!important;border-bottom-color:#ffd27c!important;box-shadow:0 7px 21px #9a3d083b!important}
.topbar .portal-nav a{background:#9a39082b!important}.topbar .portal-nav a:hover,.topbar .portal-nav a:focus-visible{background:#fff3df35!important;color:#fff!important}
.hero{background:linear-gradient(115deg,#9a3505,#e96610 54%,#ffb948)!important;border-bottom-color:#ffd17a!important}
.public-info,.vision-hero{background:linear-gradient(108deg,#963506ed,#e96b16d4 58%,#ffc261a6),url("dravyavati-riverfront.avif") center/cover no-repeat!important}
.development-agenda{background:linear-gradient(108deg,#963506e9,#e86b16cc 58%,#ffbf5e9a),url("development-agenda-background.avif") center/cover no-repeat!important;border-top-color:#ffd27c!important;border-bottom-color:#ffd27c!important}
.citizen-voice{background:linear-gradient(108deg,#833003ed,#d95c10d0 59%,#f6a534a3),url("citizen-voice-background.webp") center/cover no-repeat!important}
.public-overview{background:linear-gradient(108deg,#963506ea,#e96e17d1 59%,#ffc4679c),url("public-overview-background.png") center/cover no-repeat!important;border-top-color:#ffd27c!important;box-shadow:0 15px 35px #9a3d0830!important}
.band{background:linear-gradient(112deg,#9d3906,#eb7117 58%,#ffb744)!important;border-top-color:#ffd27c!important;border-bottom-color:#ffd27c!important}
.candidate-hero{background:linear-gradient(122deg,#923306,#e96d16 57%,#ffc05a)!important;border-color:#ffd27c99!important}
.party-office-banner{background:linear-gradient(100deg,#9b3706,#ec7118 50%,#ffba46)!important;border-bottom-color:#ffe1a7!important}
.news-hero,.privacy-hero{background:linear-gradient(112deg,#9b3808,#e86b14 58%,#ffb543)!important}
.pledge{background:linear-gradient(112deg,#8d3104,#d75a0d 58%,#f29b28)!important}
.darkbtn{background:linear-gradient(135deg,#ad4005,#f58220)!important;box-shadow:0 8px 18px #9b3b0838!important}
.gold{background:linear-gradient(135deg,#ffd064,#f58220)!important}
.vision-card,.form-card,.request-form-card,.trackbox,.news-card,.candidate-details article,.promise-card,.privacy-card,.chart-card,.summary-card{border-color:#f3c28d!important;box-shadow:0 10px 25px #9d3b0b12!important}
.vision-card:hover,.news-card:hover,.form-card:hover,.request-form-card:hover{border-color:#ef851f!important;box-shadow:0 16px 34px #9c3d0c22!important}
.vision-card .vicon,.promise-icon,.work-icon{background:#fff0d8!important;color:#ad4005!important}
.candidate-work-grid article{border-color:#f3c28d!important;background:linear-gradient(145deg,#fffdf9,#fff2df)!important}.work-number{color:#d8580c!important}
.candidate-connect{background:linear-gradient(110deg,#aa3d07,#ee7519 62%,#f7aa35)!important}
footer{background:linear-gradient(115deg,#883004,#d85a0e 58%,#0a4c31)!important;border-top-color:#ffd27c!important}
.section-head h2,.request-section-heading h2,.candidate-section-head h2,.vision-heading h2,.news-page h2,.privacy-card h1,.privacy-card h2,.candidate-details h2,.promise-card h2,.vision-card h3,.form-card h3,.request-form-card h3,.trackbox h3,.news-card h3,.candidate-details h3,.promise-card h3,.chart-card h3,.summary-card h3{color:#743008!important}
.news-card-badge,.dashboard-cards b,.summary-number,.line b{color:#b84608!important}.news-card-badge{background:#fff0d9!important}
.pill.pending{background:#fff0d6!important;color:#974000!important}.pill.progressing{background:#fff2dc!important;color:#a34a06!important}.pill.resolved{background:#e5f1e7!important;color:#0d603d!important}
input:focus,textarea:focus,select:focus{border-color:#ef7d1b!important;box-shadow:0 0 0 3px #f5822030!important}
@media(max-width:800px){.topbar .portal-nav a{background:#9137068c!important;border-color:#fff3df55}.public-info,.vision-hero,.development-agenda,.citizen-voice,.public-overview{background-position:center!important}}

/* Mobile admin panel: the close control stays in the visible viewport at all times. */
#adminModal{z-index:200!important;isolation:isolate}
#adminModal .adminbox>.x{z-index:5;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:#fff0da;color:#8f3405;font-weight:800;line-height:1;cursor:pointer}
#adminModal .adminbox>.x:hover,#adminModal .adminbox>.x:focus-visible{background:#ffd79e;outline:3px solid #f58220;outline-offset:2px}
@media(max-width:800px){
  #adminModal.modal:not(.hidden){display:block!important;overflow-y:auto!important;overscroll-behavior:contain!important;-webkit-overflow-scrolling:touch;padding:max(12px,env(safe-area-inset-top)) 10px max(12px,env(safe-area-inset-bottom))!important}
  #adminModal .adminbox{width:100%!important;min-height:0!important;max-height:none!important;margin:0 auto!important;padding:66px 16px 22px!important;border-radius:16px!important;overflow:visible!important}
  #adminModal .adminbox>.x{position:fixed!important;z-index:205!important;top:max(14px,env(safe-area-inset-top))!important;right:max(16px,env(safe-area-inset-right))!important;width:44px!important;height:44px!important;border:2px solid #fff!important;background:#fff7eb!important;box-shadow:0 6px 18px #63240145!important;font-size:30px!important}
  #adminModal #login h2,#adminModal #dash h2{padding-right:44px!important}
}
