
:root{
  --bg:#041f14;--panel:#08281b;--panel2:#0d3625;--text:#f7fff9;--muted:#a8bdb1;
  --line:#1f513b;--accent:#00a859;--accent2:#35d07f;--danger:#f59e0b;
  --shadow:0 18px 60px rgba(0,0,0,.28)
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}
a{color:inherit;text-decoration:none}
.shell{min-height:100vh;background:
radial-gradient(circle at 15% 10%,rgba(0,168,89,.16),transparent 25%),
radial-gradient(circle at 85% 90%,rgba(53,208,127,.10),transparent 25%),var(--bg)}
.topbar{height:70px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid var(--line);background:rgba(4,31,20,.94);backdrop-filter:blur(12px);position:relative;z-index:10}
.brand{display:flex;align-items:center;gap:12px;font-weight:800;letter-spacing:.3px}
.mark{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),#006b3c);box-shadow:0 8px 28px rgba(0,168,89,.28)}
.pill{font-size:12px;color:var(--muted);border:1px solid var(--line);padding:7px 10px;border-radius:999px}
.hero{max-width:1180px;margin:0 auto;padding:86px 28px 54px}
.eyebrow{color:var(--accent);font-size:13px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
h1{font-size:clamp(42px,7vw,78px);line-height:.96;margin:18px 0 20px;max-width:900px;letter-spacing:-.04em}
.lead{max-width:760px;color:var(--muted);font-size:19px;line-height:1.65}
.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}
.btn{display:inline-flex;align-items:center;justify-content:center;padding:13px 18px;border-radius:12px;border:1px solid var(--line);font-weight:800;background:var(--panel)}
.btn.primary{background:var(--accent);color:#f7fff9;border-color:var(--accent)}
.grid{max-width:1180px;margin:0 auto;padding:0 28px 80px;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.card{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);border-radius:18px;padding:22px;box-shadow:var(--shadow)}
.card h3{margin:2px 0 8px;font-size:20px}.card p{margin:0;color:var(--muted);line-height:1.55}.status{display:inline-flex;margin-top:18px;font-size:12px;font-weight:800;padding:6px 9px;border-radius:999px;background:rgba(34,197,94,.1);color:#86efac;border:1px solid rgba(34,197,94,.24)}
.status.pending{background:rgba(245,158,11,.08);color:#fbbf24;border-color:rgba(245,158,11,.22)}
.map-layout{height:calc(100vh - 70px);display:grid;grid-template-columns:330px 1fr}
.sidebar{border-right:1px solid var(--line);background:var(--panel);padding:22px;overflow:auto}
.sidebar h2{margin:0 0 8px}.sidebar p{color:var(--muted);font-size:13px;line-height:1.5}
.field{margin-top:16px}.field label{display:block;color:var(--muted);font-size:12px;font-weight:700;margin-bottom:7px}
select,input{width:100%;background:#071c13;color:var(--text);border:1px solid var(--line);border-radius:10px;padding:12px}
.map{position:relative;min-height:420px;background:
linear-gradient(rgba(8,17,31,.35),rgba(8,17,31,.35)),
radial-gradient(circle at 60% 45%,rgba(0,168,89,.16),transparent 22%),
linear-gradient(135deg,#0b2b1e,#041f14)}
.map::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:42px 42px}
.map-center{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:30px}
.map-center .box{max-width:560px;background:rgba(15,27,45,.84);border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:var(--shadow);backdrop-filter:blur(10px)}
.map-center h2{margin:0 0 8px}.map-center p{margin:0;color:var(--muted);line-height:1.6}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:22px}
.login-card{width:min(440px,94vw);background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:26px;box-shadow:var(--shadow)}
.login-card h1{font-size:30px;line-height:1.1;margin:8px 0 12px}
.login-card .btn{width:100%;margin-top:16px;cursor:pointer}
.error{color:#fca5a5;font-size:13px;margin-top:12px}
.dashboard{max-width:1180px;margin:0 auto;padding:34px 28px 70px}
.dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.kicker{color:var(--muted);font-size:13px}.logout{background:transparent;color:var(--text);border:1px solid var(--line);padding:8px 12px;border-radius:9px;font-weight:700;cursor:pointer}
@media(max-width:850px){.grid,.dashboard-grid{grid-template-columns:1fr}.map-layout{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line)}.hero{padding-top:60px}.topbar{padding:0 18px}}


/* PUBLICMAP LIVE MDB */
.publicmap-layout{height:calc(100vh - 70px);display:grid;grid-template-columns:350px minmax(0,1fr)}
.publicmap-sidebar{border-right:1px solid var(--line);background:var(--panel);padding:22px;overflow:auto}
.publicmap-sidebar h2{margin:8px 0 6px;font-size:24px}.sidebar-note{margin:0 0 8px;color:var(--muted);font-size:13px;line-height:1.55}
.search-row{display:grid;grid-template-columns:1fr auto;gap:8px}.search-btn{border:0;border-radius:10px;background:var(--accent);color:#f7fff9;font-weight:900;padding:0 16px;cursor:pointer}
.mini-message{min-height:18px;margin-top:7px;color:var(--muted);font-size:12px}.map-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:18px}.map-stats div{border:1px solid var(--line);background:#071c13;border-radius:11px;padding:11px}.map-stats strong{display:block;font-size:17px}.map-stats span{display:block;color:var(--muted);font-size:11px;margin-top:3px}
.pu-detail{margin-top:18px;border:1px solid var(--line);background:#071c13;border-radius:14px;padding:15px}.pu-detail h3{margin:7px 0 12px;font-size:17px}.pu-detail dl{margin:0;display:grid;grid-template-columns:82px 1fr;gap:7px 10px;font-size:12px}.pu-detail dt{color:var(--muted);font-weight:700}.pu-detail dd{margin:0;overflow-wrap:anywhere}
.publicmap-map{position:relative;min-width:0}#leafletMap{height:100%;min-height:480px;background:#0b2b1e}.map-loading{position:absolute;z-index:500;left:50%;top:20px;transform:translateX(-50%);background:rgba(15,27,45,.94);border:1px solid var(--line);border-radius:999px;padding:9px 14px;font-size:12px;font-weight:800;box-shadow:var(--shadow)}.map-loading[hidden]{display:none}
@media(max-width:850px){.publicmap-layout{height:auto;grid-template-columns:1fr}.publicmap-sidebar{border-right:0;border-bottom:1px solid var(--line)}#leafletMap{height:65vh;min-height:460px}}

/* NG2027 NIGERIAN GREEN IDENTITY */
select:focus,input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(0,168,89,.14)}
.search-btn:hover,.btn.primary:hover{filter:brightness(1.06)}

/* NG2027 PUBLICMAP GREEN PU MARKERS */
.ng2027-pu-marker-wrap{background:transparent!important;border:0!important}
.ng2027-pu-marker{display:block;position:absolute;left:2px;top:2px;width:26px;height:26px;background:#00a859;border:2px solid #fff;border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 3px 8px rgba(0,0,0,.38)}
.ng2027-pu-marker>span{position:absolute;left:7px;top:7px;width:8px;height:8px;border-radius:50%;background:#fff}

/* NG2027 PUBLICMAP PU QUICK INFO POPUP */
.ng2027-pu-popup{min-width:250px;padding:4px 2px;color:#102419}
.ng2027-pu-popup-label{font-size:10px;font-weight:900;letter-spacing:.16em;color:#008751;margin-bottom:6px}
.ng2027-pu-popup-name{font-size:16px;font-weight:900;line-height:1.22;margin-bottom:11px;color:#071c13}
.ng2027-pu-popup-grid{display:grid;grid-template-columns:78px minmax(0,1fr);gap:6px 10px;font-size:12px;line-height:1.35}
.ng2027-pu-popup-grid b{color:#53665b;font-weight:800}
.ng2027-pu-popup-grid span{color:#102419;overflow-wrap:anywhere}
.leaflet-popup-content-wrapper{border-radius:14px}
.leaflet-popup-content{margin:15px 17px}

/* NG2027 PUBLICMAP PU DIRECTIONS */
.ng2027-pu-popup-actions{margin-top:13px;padding-top:11px;border-top:1px solid #dce8e0}
.ng2027-pu-directions{display:flex;align-items:center;justify-content:center;width:100%;padding:9px 12px;border-radius:8px;background:#008751;color:#fff!important;font-size:12px;font-weight:900;text-decoration:none!important}
.ng2027-pu-directions:hover{background:#006b3c}

/* NG2027 PUBLICMAP PU SHARE */
.ng2027-pu-popup-actions{display:grid;grid-template-columns:1fr;gap:8px}
.ng2027-pu-popup-actions.has-directions{grid-template-columns:1fr 1fr}
.ng2027-pu-share{border:1px solid #008751;border-radius:8px;background:#fff;color:#008751;padding:9px 10px;font-size:12px;font-weight:900;cursor:pointer}
.ng2027-pu-share:hover{background:#edf9f2}

/* NG2027 PUBLICMAP MOBILE RESPONSIVE V1 */
html,body{max-width:100%;overflow-x:hidden}
select,input,button{font:inherit}

@media(max-width:850px){
  .topbar{height:58px;padding:0 14px;position:sticky;top:0;z-index:1100}
  .brand{gap:9px;font-size:13px}
  .mark{width:30px;height:30px;border-radius:9px;font-size:12px}
  .pill{font-size:10px;padding:6px 8px;white-space:nowrap}

  .publicmap-layout{display:flex;flex-direction:column;height:auto;min-height:calc(100dvh - 58px);width:100%;overflow:visible}
  .publicmap-sidebar{width:100%;padding:16px;border-right:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;overflow:visible}
  .publicmap-sidebar>.eyebrow,
  .publicmap-sidebar>h2,
  .publicmap-sidebar>.sidebar-note,
  .publicmap-sidebar>.map-stats,
  .publicmap-sidebar>.pu-detail{grid-column:1/-1}
  .publicmap-sidebar h2{font-size:22px;margin:2px 0 0}
  .sidebar-note{margin:0 0 2px;font-size:12px}
  .field{margin-top:0;min-width:0}
  .field label{font-size:11px;margin-bottom:6px}

  select,input{min-height:46px;padding:10px 11px;border-radius:9px;font-size:14px}
  .search-row{grid-template-columns:minmax(0,1fr) auto;gap:8px}
  .search-btn{min-width:52px;min-height:46px;padding:0 14px;border-radius:9px}

  .map-stats{margin-top:4px}
  .map-stats div{padding:10px}
  .map-stats strong{font-size:16px}

  .pu-detail{margin-top:4px;padding:14px}
  .pu-detail h3{font-size:16px}
  .pu-detail dl{grid-template-columns:76px minmax(0,1fr);font-size:12px}

  .publicmap-map{width:100%;height:58dvh;min-height:420px;position:relative}
  #leafletMap{width:100%;height:100%!important;min-height:420px}
  .map-loading{top:14px;max-width:calc(100vw - 32px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

  .leaflet-control-zoom a{width:38px!important;height:38px!important;line-height:38px!important;font-size:22px!important}
  .leaflet-popup{max-width:calc(100vw - 28px)!important}
  .leaflet-popup-content-wrapper{max-width:calc(100vw - 28px)}
  .leaflet-popup-content{width:auto!important;max-width:calc(100vw - 62px);margin:14px 15px}
  .ng2027-pu-popup{min-width:0;width:min(310px,calc(100vw - 66px))}
  .ng2027-pu-popup-grid{grid-template-columns:72px minmax(0,1fr);gap:6px 8px}

  .ng2027-pu-popup-actions.has-directions{grid-template-columns:1fr 1fr}
  .ng2027-pu-directions,.ng2027-pu-share{min-height:42px}
}

@media(max-width:600px){
  .topbar{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}
  .topbar .pill{font-size:9px}

  .publicmap-sidebar{display:block;padding:14px max(12px,env(safe-area-inset-right)) 16px max(12px,env(safe-area-inset-left))}
  .publicmap-sidebar .field{margin-top:12px}
  .publicmap-sidebar>.eyebrow{font-size:11px}
  .publicmap-sidebar h2{font-size:21px;margin-top:4px}
  .sidebar-note{margin-top:4px}

  select,input{width:100%;min-height:48px;font-size:16px}
  .search-btn{min-height:48px;min-width:54px}
  .map-stats{margin-top:14px}
  .pu-detail{margin-top:14px}

  .publicmap-map{height:56dvh;min-height:390px}
  #leafletMap{min-height:390px}

  .ng2027-pu-popup-name{font-size:15px}
  .ng2027-pu-popup-grid{font-size:11px;grid-template-columns:68px minmax(0,1fr)}
  .ng2027-pu-popup-actions.has-directions{grid-template-columns:1fr}
  .ng2027-pu-directions,.ng2027-pu-share{width:100%;min-height:44px}
}

@media(max-width:380px){
  .brand span:last-child{font-size:12px}
  .topbar .pill{padding:5px 6px}
  .publicmap-sidebar{padding-left:10px;padding-right:10px}
  .publicmap-map{height:54dvh;min-height:360px}
  #leafletMap{min-height:360px}
  .pu-detail dl{grid-template-columns:68px minmax(0,1fr)}
}

@media(orientation:landscape) and (max-height:600px) and (max-width:950px){
  .publicmap-layout{display:grid;grid-template-columns:320px minmax(0,1fr);height:calc(100dvh - 58px)}
  .publicmap-sidebar{display:block;height:100%;overflow:auto;border-right:1px solid var(--line);border-bottom:0;padding:12px}
  .publicmap-sidebar .field{margin-top:10px}
  .publicmap-map{height:100%;min-height:0}
  #leafletMap{height:100%!important;min-height:0}
}

/* NG2027 PUBLICMAP MOBILE POPUP REFINEMENT V1 */
@media(max-width:600px){
  .leaflet-top.leaflet-left{left:auto;right:10px}
  .leaflet-top.leaflet-left .leaflet-control{margin-left:0;margin-right:0}

  .leaflet-popup{max-width:calc(100vw - 42px)!important}
  .leaflet-popup-content-wrapper{max-width:calc(100vw - 42px);border-radius:12px}
  .leaflet-popup-content{width:auto!important;max-width:calc(100vw - 70px)!important;margin:12px 13px}

  .ng2027-pu-popup{min-width:0;width:min(290px,calc(100vw - 76px));padding:1px}
  .ng2027-pu-popup-label{font-size:9px;margin-bottom:5px}
  .ng2027-pu-popup-name{font-size:14px;line-height:1.2;margin-bottom:9px}
  .ng2027-pu-popup-grid{grid-template-columns:64px minmax(0,1fr);gap:5px 7px;font-size:11px;line-height:1.3}

  .ng2027-pu-popup-actions{margin-top:10px;padding-top:9px;gap:7px}
  .ng2027-pu-popup-actions.has-directions{grid-template-columns:1fr!important}
  .ng2027-pu-directions,.ng2027-pu-share{width:100%;min-height:42px;padding:8px 10px;font-size:12px}
}

@media(max-width:380px){
  .ng2027-pu-popup{width:min(270px,calc(100vw - 70px))}
  .leaflet-popup-content{max-width:calc(100vw - 62px)!important;margin:11px 12px}
}

/* NG2027 PUBLICMAP MOBILE MAP-FIRST BOTTOM SHEET V1 */
.mobile-map-actions,.mobile-map-summary{display:none}

@media(max-width:600px){
  body{overflow:hidden}

  .topbar{position:relative;height:58px;z-index:1200}
  .publicmap-layout{display:block!important;position:relative;height:calc(100dvh - 58px)!important;min-height:0!important;overflow:hidden}

  .publicmap-map{position:absolute!important;inset:0;width:100%;height:100%!important;min-height:0!important;z-index:1}
  #leafletMap{width:100%;height:100%!important;min-height:0!important}

  .mobile-map-summary{display:block;position:absolute;top:12px;left:12px;z-index:650;background:rgba(255,255,255,.96);color:#173126;border:1px solid #cfe1d6;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:900;box-shadow:0 5px 16px rgba(0,0,0,.12)}

  .publicmap-sidebar{position:absolute!important;left:10px;right:10px;bottom:max(10px,env(safe-area-inset-bottom));z-index:1000;width:auto!important;max-height:none!important;padding:18px 12px 12px!important;border:1px solid var(--line)!important;border-radius:22px!important;background:rgba(247,255,249,.97)!important;box-shadow:0 10px 34px rgba(0,0,0,.22)!important;overflow:auto!important;color:#102419!important}

  .publicmap-sidebar:before{content:'';position:absolute;top:7px;left:50%;transform:translateX(-50%);width:46px;height:5px;border-radius:999px;background:#cbd8cf}

  .publicmap-sidebar>.eyebrow,
  .publicmap-sidebar>h2,
  .publicmap-sidebar>.sidebar-note,
  .publicmap-sidebar>.map-stats,
  .publicmap-sidebar>.pu-detail,
  .publicmap-sidebar>.field-state,
  .publicmap-sidebar>.field-lga,
  .publicmap-sidebar>.field-ward,
  .publicmap-sidebar>.field-pu{display:none!important}

  .publicmap-sidebar>.field-search{display:block!important;margin:0!important}
  .field-search label{display:none!important}
  .field-search .mini-message{color:#5f7568;font-size:11px;margin-top:5px;min-height:14px}
  .field-search input{background:#fff!important;color:#173126!important;border-color:#c9ddd1!important}

  .mobile-map-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}
  .mobile-map-actions button{min-width:0;min-height:66px;border:0;border-radius:14px;background:#eff8f2;color:#214437;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;font-weight:800;cursor:pointer}
  .mobile-map-actions button span{font-size:22px;line-height:1;color:#008751}
  .mobile-map-actions button small{font-size:11px;font-weight:800;white-space:nowrap}

  .publicmap-sidebar.mobile-browse-open{max-height:72dvh!important}
  .publicmap-sidebar.mobile-browse-open>.field-state,
  .publicmap-sidebar.mobile-browse-open>.field-lga,
  .publicmap-sidebar.mobile-browse-open>.field-ward,
  .publicmap-sidebar.mobile-browse-open>.field-pu{display:block!important;margin-top:10px!important}
  .publicmap-sidebar.mobile-browse-open .field label{display:block!important;color:#567064!important;font-size:11px!important}
  .publicmap-sidebar.mobile-browse-open select{background:#fff!important;color:#173126!important;border-color:#c9ddd1!important}

  .publicmap-sidebar.mobile-info-open>.pu-detail{display:block!important;margin:10px 0 0!important;background:#f7fff9!important;color:#173126!important;border-color:#c9ddd1!important}
  .publicmap-sidebar.mobile-info-open>.pu-detail h3{color:#102419!important}
  .publicmap-sidebar.mobile-info-open>.pu-detail dt{color:#62786c!important}
  .publicmap-sidebar.mobile-info-open>.pu-detail dd{color:#173126!important}

  .leaflet-bottom.leaflet-right{bottom:190px}
  .leaflet-popup{margin-bottom:20px}
}

@media(max-width:380px){
  .publicmap-sidebar{left:7px;right:7px;bottom:max(7px,env(safe-area-inset-bottom));padding-left:9px!important;padding-right:9px!important}
  .mobile-map-actions{gap:6px}
  .mobile-map-actions button{min-height:62px;border-radius:12px}
  .mobile-map-actions button small{font-size:10px}
  .mobile-map-summary{left:8px;top:8px;font-size:11px;padding:7px 10px}
}
