:root{--bg:#f2f5fb;--white:#fff;--dark:#17243b;--muted:#687891;--line:#e0e8f1;--primary:#e76617;--primary-dark:#bb4a11;--blue:#1d3c66;--shadow:0 12px 36px rgba(16,39,75,.07)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--dark);font-family:'Noto Sans Devanagari',system-ui,sans-serif;font-size:14px;background:var(--bg)}button,input,select,textarea{font:inherit}a{color:#245c9f;text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(21px,2vw,30px);font-weight:800;line-height:1.5}h2{font-size:18px}h3{font-size:14px}.muted{color:var(--muted);line-height:1.75}.eyebrow{color:#cf651c;letter-spacing:.04em;font-size:12px;font-weight:800;margin-bottom:5px}.btn{border:1px solid var(--line);padding:10px 17px;display:inline-flex;justify-content:center;align-items:center;gap:8px;border-radius:10px;background:white;color:var(--dark);font-size:13px;font-weight:700;min-height:42px;white-space:nowrap}.btn.primary{background:linear-gradient(135deg,var(--primary),#d95413);border:0;color:white}.btn.primary:hover{background:var(--primary-dark);text-decoration:none}.btn.outline{background:#fff;color:#264469;border-color:#d8e0ef}.btn.danger{background:#fff2f2;color:#b52b2b;border-color:#f5cece}.btn.small{padding:6px 10px;min-height:28px;font-size:12px}.login-bg{min-height:100dvh;display:grid;place-items:center;padding:18px;background:radial-gradient(circle at 15% 10%,#ffe8d3 0,transparent 38%),radial-gradient(circle at 90% 70%,#deeaff 0,transparent 42%),#f4f6fc}.login-card{width:min(100%,450px);background:white;border:1px solid #e6eaf3;box-shadow:0 25px 75px rgba(20,49,90,.12);border-radius:24px;padding:clamp(23px,4vw,42px)}.login-card h1{margin-bottom:7px}.logo-mark,.brand-icon{display:grid;place-items:center;border-radius:14px;color:white;background:linear-gradient(145deg,#ee7626,#e04a17);font-weight:800}.logo-mark{width:54px;height:54px;font-size:25px;margin-bottom:20px}.login-card label{display:block;font-size:13px;font-weight:700;margin:14px 0}.login-card input,.login-card select{margin-top:7px;display:block;width:100%;border:1px solid #dbe4f0;background:#f9fbff;border-radius:10px;padding:11px 13px;height:46px}.login-card .btn{width:100%;margin:8px 0 16px}.login-card small{display:block;text-align:center}.app{min-height:100dvh;display:flex}.sidebar{width:278px;flex:0 0 278px;background:rgba(255,255,255,.98);border-right:1px solid var(--line);height:100dvh;position:sticky;top:0;display:flex;flex-direction:column;box-shadow:4px 0 15px rgba(26,44,75,.025);z-index:40}.brand{display:flex;align-items:center;gap:12px;padding:21px 19px 18px;border-bottom:1px solid var(--line)}.brand-icon{width:42px;height:42px;font-size:23px;flex-shrink:0}.brand strong{font-size:15px;display:block}.brand small{color:var(--muted)}.active-assembly{padding:15px 19px;background:#fff8f1;border-bottom:1px solid #f4e6da}.active-assembly span{font-size:11px;color:#996842;display:block}.active-assembly strong{display:block;font-size:16px;color:#a54c0b}.active-assembly small{color:#6c7282}.nav-search{margin:15px;border:1px solid #dbe4ee;border-radius:10px;background:#fafcff;padding:10px 13px;width:calc(100% - 30px)}.sidebar nav{overflow-y:auto;padding:0 12px 20px;flex:1;scrollbar-width:thin}.menu-group{margin:10px 0 19px}.menu-group h3{font-size:11px;font-weight:800;color:#8a9ab2;margin:0;padding:8px 9px;line-height:1.5}.navlink{display:block;border-radius:9px;color:#405977;padding:9px 11px;font-weight:600;line-height:1.6;margin:2px 0;word-break:break-word}.navlink:hover{background:#fff3e7;color:var(--primary-dark);text-decoration:none}.side-foot{border-top:1px solid var(--line);color:#92a0b4;font-size:10px;padding:12px 20px}.workspace{flex:1;min-width:0}.topbar{height:79px;background:rgba(255,255,255,.93);border-bottom:1px solid #e4ebf4;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:0 clamp(16px,3vw,36px);position:sticky;top:0;z-index:20;backdrop-filter:blur(12px)}.topheading{min-width:0}.topheading .eyebrow{display:block}.topheading strong{display:block;font-size:17px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.user-actions{display:flex;align-items:center;gap:14px}.user-actions form{margin:0}.user-label{font-weight:700;font-size:13px;white-space:nowrap}.user-label small{display:block;color:var(--muted);font-weight:400}.content{padding:clamp(16px,2.5vw,33px);max-width:1540px;margin:auto}.section-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:22px;flex-wrap:wrap}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:19px}.stat{display:block;padding:22px;background:#fff;border:1px solid var(--line);border-top:3px solid var(--primary);border-radius:15px;box-shadow:var(--shadow);min-height:132px}.stat:nth-child(2){border-top-color:#10a77f}.stat:nth-child(3){border-top-color:#4778d6}.stat:nth-child(4){border-top-color:#8d69cd}.stat span{display:block;color:#546a85;font-size:13px;font-weight:700;margin-bottom:12px}.stat strong{display:block;font-size:30px;color:#1e3b62;font-weight:800;line-height:1.3}.stat em{font-style:normal;font-size:11px;color:#8a98aa}.stat:hover{text-decoration:none;transform:translateY(-1px)}.panel{background:var(--white);border:1px solid var(--line);border-radius:15px;padding:clamp(16px,2.5vw,24px);margin-bottom:18px;box-shadow:var(--shadow)}.panel h2{margin-bottom:12px}.result-line{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);background:#f7faff;border-radius:10px;padding:14px;margin:14px 0}.result-line strong{font-size:20px}.btnrow{display:flex;flex-wrap:wrap;gap:10px;margin:15px 0}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:17px}.toolbar input,.toolbar select{flex:1;min-width:170px}.toolbar input,.toolbar select,.fieldgrid input,.fieldgrid select,textarea{border:1px solid #d8e1ee;border-radius:10px;background:#fff;padding:11px 13px;min-height:42px;outline-color:#f6b38b}textarea{width:100%;resize:vertical;margin-bottom:12px}.fieldgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.fieldgrid label{display:block;font-weight:700;color:#3d516b}.fieldgrid label input,.fieldgrid label select{width:100%;display:block;margin-top:7px}.fullrow{grid-column:1/-1}.table-wrap{overflow-x:auto;scrollbar-width:thin}table{width:100%;border-collapse:separate;border-spacing:0;text-align:left;min-width:650px}table th{font-size:12px;font-weight:800;background:#f0f5fb;color:#405776;padding:12px 11px;white-space:nowrap;border-bottom:1px solid #dce7f4}table td{padding:11px;border-bottom:1px solid #ebf0f6;line-height:1.65;vertical-align:top}table tbody tr:hover{background:#fffaf6}.data-table{min-width:1050px}.data-table td{min-width:75px}.mini-stat{background:#f6f9ff;border:1px solid var(--line);padding:12px;border-radius:11px;min-height:80px}.mini-stat span{display:block;color:var(--muted);font-size:12px}.mini-stat strong{display:block;font-size:17px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:center}.bar{height:34px;background:#f2f5fa;overflow:hidden;border-radius:9px;margin:8px 0}.bar span{display:block;height:100%;min-width:0;background:#ea751f;color:white;white-space:nowrap;padding:8px 12px;font-size:11px;font-weight:700}.bar.alt span{background:#277dd4}.notice{background:#eef4ff;color:#36587c;border:1px solid #dbe7f7;border-radius:12px;padding:14px 17px;margin:14px 0;line-height:1.75}.notice.error{background:#fff3f1;color:#9e3825;border-color:#f9ccc4}.notice.success{background:#eafff4;color:#136c46;border-color:#b6f0d3}.mapview{height:min(68vh,600px);min-height:380px;border-radius:12px;background:#ecf0f5;overflow:hidden}.footer{font-size:11px;text-align:center;color:#94a0b0;padding:35px 0 20px}.shade,.menu-button,.close-menu{display:none}.leaflet-popup-content{font-family:'Noto Sans Devanagari',sans-serif!important}
@media(max-width:1100px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar{width:248px;flex-basis:248px}.user-label{display:none}}
@media(max-width:900px){.sidebar{position:fixed;left:-290px;top:0;height:100dvh;width:min(285px,85vw);transition:left .25s ease;box-shadow:10px 0 35px rgba(11,26,51,.18)}.sidebar.open{left:0}.shade.open{display:block;position:fixed;inset:0;background:rgba(13,30,52,.46);z-index:35}.menu-button,.close-menu{display:inline-flex;border:1px solid var(--line);background:white;border-radius:9px;padding:8px 12px;align-items:center}.close-menu{margin-left:auto}.workspace{width:100%}.topbar{height:72px}}
@media(max-width:640px){body{font-size:13px}.topbar{padding:0 12px;gap:9px}.topheading strong{font-size:14px}.user-actions .btn{padding:7px 9px;font-size:11px;min-height:36px}.content{padding:14px}.stat-grid{gap:10px}.stat{padding:14px;min-height:108px}.stat strong{font-size:25px}.section-head{margin-bottom:14px}.section-head .btn{width:100%}.fieldgrid,.two-col{grid-template-columns:1fr}.panel{padding:14px;border-radius:11px}.toolbar input,.toolbar select,.toolbar button{width:100%;flex-basis:100%}.mapview{min-height:310px;height:58vh}h1{font-size:22px}.login-card{border-radius:18px}}

.geo-help{font-size:12px;color:#65768d;line-height:1.7;margin:0 0 12px}.login-card button:disabled{opacity:.7;cursor:progress}.login-card code{font-size:11px;word-break:break-word}

/* v0.4.0: GIS and historical comparison mobile responsiveness */
.history-table{min-width:1160px}.history-table td{font-variant-numeric:tabular-nums}
.map-search-label{display:block;font-weight:800;margin-bottom:7px;color:#39526e}
.map-search-input{display:block;width:100%;max-width:480px;border:1px solid #cbdbea;border-radius:10px;padding:11px 14px;margin-bottom:7px;background:#f9fcff}
.map-search-result{font-size:12px;color:#516881;margin-bottom:14px}
.map-warning{background:#fff;padding:12px;max-width:240px;border-radius:9px;box-shadow:0 4px 12px #0002;font-size:12px}
.check-label{display:flex!important;align-items:flex-start;gap:10px;line-height:1.7}
.check-label input{width:18px!important;height:18px;min-height:0!important;flex:none;margin:4px 0 0!important}
.panel code{font-family:ui-monospace,monospace;white-space:normal;overflow-wrap:anywhere;font-size:12px;color:#294563}
@media(max-width:640px){.history-table{min-width:1080px}.history-table th,.history-table td{padding:9px 10px;font-size:12px}.map-search-input{max-width:100%}.mapview{height:55vh;min-height:320px}.panel>.table-wrap{margin-left:-4px;margin-right:-4px}}

/* v0.5.0 — मोबाइल/डेस्कटॉप व्हाट्सऐप संपर्क प्रबंधन */
.wa-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin-bottom:16px}
.wa-stats>div{padding:17px 20px;background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow)}
.wa-stats span{display:block;color:#637893;font-size:12px;margin-bottom:5px}
.wa-stats strong{font-size:24px;color:#1d3c66}
.wa-table{min-width:900px}.wa-table td{min-width:80px}.wa-table td:last-child{min-width:200px}
.wa-number{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}
.wa-sub{font-size:10px;display:block;color:#788ba2;line-height:1.8;margin-top:3px}
.wa-tag{display:inline-block;padding:5px 9px;border-radius:8px;white-space:nowrap;font-size:11px;background:#f1f5f9;color:#465c76}
.wa-granted{color:#16754d;background:#e0f8eb}.wa-revoked{color:#a63232;background:#ffeded}
.wa-inline{display:inline-block;margin:2px 5px 2px 0}
.wa-details{margin-top:9px;max-width:290px}.wa-details summary{cursor:pointer;color:#215f99;font-size:12px;font-weight:700}
.wa-consent-form{display:grid;grid-template-columns:1fr;gap:9px;min-width:220px;margin:8px 0;background:#f8fbff;padding:12px;border:1px solid #dce8f5;border-radius:9px}
.wa-consent-form label{font-size:11px;font-weight:700;white-space:normal}.wa-consent-form select,.wa-consent-form input{display:block;width:100%;margin-top:5px;border:1px solid #ccdbea;padding:8px;border-radius:7px;min-height:36px}
.wa-pages{display:flex;flex-wrap:wrap;gap:7px;margin:15px 0 0}
@media(max-width:640px){.wa-stats{gap:8px}.wa-stats>div{padding:12px}.wa-stats strong{font-size:18px}.wa-stats span{font-size:11px}.wa-table{min-width:760px}.wa-table td:last-child{min-width:170px}}

/* v0.6.0: work plan, meetings, expenses and reminders */
.ops-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:17px}
.ops-stats>div{background:#fff;border:1px solid var(--line);box-shadow:var(--shadow);border-radius:13px;padding:18px;min-width:0}
.ops-stats span,.ops-stats small{display:block;color:var(--muted);font-size:12px}
.ops-stats strong{display:block;color:#1d3c66;font-size:22px;font-weight:800;line-height:1.6;overflow-wrap:anywhere}
.ops-form>summary,.ops-void>summary{cursor:pointer;font-weight:800;color:#27466c;list-style:revert;padding:4px 0 13px}
.ops-form>form{border-top:1px solid var(--line);padding-top:16px}
.ops-form textarea{display:block;margin-top:8px}
.ops-table{min-width:890px}.ops-table td{min-width:105px}.ops-table small{display:block;color:#6c829d;font-size:11px;margin-top:5px;max-width:350px;white-space:normal;word-wrap:break-word}
.ops-mini-form{display:flex;align-items:center;gap:7px;margin:0 0 6px;flex-wrap:wrap}.ops-mini-form select{min-width:125px;max-width:165px;padding:7px;border:1px solid #d8e1ee;border-radius:8px}.ops-mini-form .btn{padding:6px 10px;min-height:34px}
.ops-pill{display:inline-block;background:#e9f6ff;color:#185a8d;font-size:11px;border-radius:7px;padding:4px 9px;white-space:nowrap;font-weight:700}.ops-pill.late{background:#fff0e7;color:#af451d}
.ops-alert{border-left:4px solid #ea751f}.ops-alert-list{display:flex;flex-direction:column;gap:9px}
.ops-alert-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;border:1px solid #e5edf5;border-radius:10px;background:#f9fbfe;padding:12px;color:#365170}
.ops-alert-row strong{flex:1;min-width:200px}.ops-alert-row:hover{text-decoration:none;border-color:#ffbf97}
.ops-void>summary{font-size:12px;padding:0}.ops-void form{display:grid;grid-template-columns:1fr;gap:8px}.ops-void input{padding:8px;border:1px solid #cad9e9;min-width:160px;border-radius:7px}
@media(max-width:1100px){.ops-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.ops-stats{gap:8px}.ops-stats>div{padding:12px}.ops-stats strong{font-size:17px}.ops-table{min-width:850px}.ops-table th,.ops-table td{padding:9px 10px}.ops-alert-row{gap:7px}.ops-alert-row strong{min-width:160px}}

/* v0.7.0: accessible drag-and-drop software updater for touch and desktop */
.update-panel{max-width:920px}
.update-dropzone{border:2px dashed #9eb8cf;border-radius:18px;background:#f5f9ff;min-height:205px;padding:27px 15px;display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;text-align:center;cursor:pointer;transition:border-color .18s ease,background-color .18s ease,box-shadow .18s ease;color:#173a59;outline-offset:3px}
.update-dropzone:hover,.update-dropzone:focus-visible,.update-dropzone.is-dragging{background:#e8f5fd;border-color:#0b84bb;box-shadow:0 0 0 3px rgba(10,124,184,.09)}
.update-dropzone.is-invalid{border-color:#a82727;background:#fff1f1}
.update-drop-icon{display:grid;place-items:center;width:49px;height:49px;border-radius:14px;background:#d9effb;color:#0570a7;font-size:29px;font-weight:700;line-height:1}
.update-file-prompt{text-decoration:underline;text-underline-offset:3px;font-weight:700;color:#046ca3}
.update-drop-hint{font-size:.84rem;color:#607287}
.update-file-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;pointer-events:none}
.update-selected{font-size:.93rem;overflow-wrap:anywhere;margin-top:12px;padding:10px 12px;border-radius:10px;background:#f2f5f8;color:#26445a}
.update-selected.is-ready{background:#e7f7ec;color:#145b32;font-weight:650}
.update-selected.is-error{background:#fff0f0;color:#922425}
.update-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.update-actions .btn{max-width:100%;white-space:normal}
.update-actions button:disabled{opacity:.55;cursor:not-allowed}
.update-progress{height:11px;background:#e1eaf2;border-radius:15px;overflow:hidden;margin-bottom:12px}
.update-progress>div{width:0;height:100%;background:linear-gradient(90deg,#0977b5,#079f9d);transition:width .15s ease}
.update-result{line-height:1.6;overflow-wrap:anywhere}
.update-result.is-success{color:#17613c;font-weight:700}
.update-result.is-error{color:#a22323;font-weight:700}
@media(max-width:650px){.update-dropzone{min-height:168px;padding:20px 12px}.update-actions{display:grid;grid-template-columns:1fr}.update-actions .btn{width:100%;min-height:46px}}

/* v0.8.0: constituency-bound administrative masters, custom sheets and reminders */
.ext-form summary{font-size:16px;font-weight:800;cursor:pointer;padding:3px 0 14px;color:#254d76}
.ext-form form{border-top:1px solid var(--line);padding-top:15px}
.ext-form textarea{display:block;margin-top:6px;min-height:90px}
.ext-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:14px}
.ext-card{border:1px solid #dce8f4;border-radius:12px;background:#f8fbff;padding:17px;min-width:0}
.ext-card strong{font-weight:800;font-size:15px;display:block;overflow-wrap:anywhere}
.ext-card small{font-size:11px;color:#667b91;display:block;margin-top:8px}
.ext-card form{display:inline-flex}
.ext-task-list{display:grid;gap:12px}
.ext-task{display:grid;grid-template-columns:minmax(0,1fr) minmax(170px,240px);gap:15px;align-items:flex-start;border:1px solid #dde8f4;border-radius:12px;padding:15px;background:#f8fbff}
.ext-task.ext-late{border-left:4px solid #e6722f;background:#fffaf5}
.ext-task strong{font-size:14px;line-height:1.6;overflow-wrap:anywhere}
.ext-task p{margin:7px 0}
.ext-task small{font-size:11px;color:#647991;line-height:1.9}
.ext-task .ops-pill{margin-bottom:9px}
.ext-status-form{display:flex;flex-wrap:wrap;gap:7px}
.ext-status-form select{min-width:100px;max-width:150px;padding:8px;border-radius:8px;border:1px solid #d6e3f0;background:#fff}
.ext-counter{padding:10px 12px;background:#fff0df;color:#9f510c;border-radius:10px;font-weight:700;font-size:13px}
.ext-alert{border-left:4px solid #de732f}
.ext-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ext-actions form{margin:0}
@media(max-width:750px){.ext-cards{grid-template-columns:1fr}.ext-task{grid-template-columns:1fr}.ext-counter{width:100%;text-align:center}.ext-status-form select{max-width:none;flex:1}}

/* v0.9.0: printable Hindi Unicode reports */
.rpt-downloads{display:flex;flex-wrap:wrap;gap:10px}
.rpt-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:12px;margin:17px 0}
.rpt-stat{border:1px solid #dbe7f5;background:#f7fbff;padding:14px;border-radius:12px}
.rpt-stat span{display:block;color:#526983;font-size:12px;line-height:1.6}.rpt-stat strong{display:block;font-size:24px;color:#144a77;margin-top:6px}
.rpt-bars{max-width:710px;display:grid;gap:12px;margin:20px 0}.rpt-bars>div{display:grid;grid-template-columns:56px 1fr 75px;align-items:center;gap:10px}
.rpt-track{height:19px;border-radius:100px;background:#e3edf6;overflow:hidden}.rpt-track span{display:block;height:100%;background:#2784bd;border-radius:100px}.rpt-bars>div:nth-child(2) .rpt-track span{background:#299b83}
@media(max-width:660px){.rpt-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.rpt-downloads{display:grid;grid-template-columns:1fr}.rpt-downloads a{width:100%;text-align:center}}
@media print{.sidebar,.topbar,.no-print,.shade,.update-box,.page-actions,.btnrow{display:none !important}html,body,.app,.content,.main{background:#fff!important;width:100%!important;max-width:none!important;margin:0!important;padding:0!important;overflow:visible!important}.panel{border:1px solid #ddd;box-shadow:none;break-inside:avoid}.table-wrap{overflow:visible!important}table{width:100%;font-size:9px}th,td{padding:5px!important}.section-head{margin-top:0}a{color:inherit;text-decoration:none}button{display:none}}

/* v1.0.0: improve touch-friendly Excel preview and narrow viewport tables */
@media(max-width:700px){.fieldgrid input[type=file]{width:100%;max-width:100%;font-size:15px}.panel form button{min-height:44px}.table-wrap{overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}}
@media print{.sidebar,.topbar,.btn,.footer,.no-print,form,.shade{display:none!important}.workspace,.content{margin:0!important;padding:0!important;width:100%!important}.panel{box-shadow:none!important;break-inside:auto!important}.table-wrap{overflow:visible!important}table{font-size:10px!important;page-break-inside:auto}tr{break-inside:avoid}}
