:root{--bg:#f5f6f8;--panel:#fff;--text:#1f2937;--muted:#6b7280;--line:#e5e7eb;--dark:#111827;--danger:#b91c1c;--ok:#166534}*{box-sizing:border-box}body{margin:0;font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}a{color:#111827}.topbar{height:58px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 22px;position:sticky;top:0;z-index:20}.shell{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 58px)}.sidebar{background:#111827;padding:18px 12px}.sidebar a{display:block;color:#d1d5db;text-decoration:none;padding:10px 12px;border-radius:7px;margin-bottom:3px}.sidebar a:hover{background:#1f2937;color:#fff}.content{padding:24px;min-width:0}.muted{color:var(--muted)}.small{font-size:12px}.grid{display:grid;gap:14px;margin:16px 0}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:18px;margin:16px 0;box-shadow:0 1px 2px rgba(0,0,0,.03)}.card h2{margin-top:0}.card-head{display:flex;justify-content:space-between;align-items:center;gap:16px}.stat-value{font-weight:700;font-size:28px;margin:4px 0}.badge{display:inline-block;background:#eef2f7;border:1px solid #d9dee7;border-radius:999px;padding:2px 8px;font-size:12px}.flash{padding:12px 14px;border-radius:8px;margin:12px 0;border:1px solid}.flash.success{background:#f0fdf4;border-color:#bbf7d0;color:var(--ok)}.flash.error{background:#fef2f2;border-color:#fecaca;color:var(--danger)}button,.button{appearance:none;background:#111827;color:white;border:1px solid #111827;border-radius:7px;padding:8px 12px;font-weight:600;cursor:pointer;text-decoration:none;display:inline-block}.button.ghost,button.ghost{background:white;color:#111827;border-color:#d1d5db}input,select{border:1px solid #d1d5db;border-radius:7px;padding:8px 10px;background:white;max-width:100%}label{display:block;margin-bottom:12px;font-weight:600}label input{display:block;width:100%;margin-top:5px}.check{display:inline;font-weight:400;margin-left:10px}.check input{display:inline;width:auto}.inline{display:flex;gap:7px;align-items:center}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;border-bottom:1px solid var(--line);padding:9px 8px;vertical-align:top}th{color:#4b5563;font-weight:600;background:#fafafa}.map{height:440px;border:1px solid var(--line);border-radius:8px;background:#eef2f7}.map.large{height:68vh}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:30px}.login-card{width:min(420px,100%);background:white;border:1px solid var(--line);border-radius:12px;padding:28px;box-shadow:0 12px 35px rgba(0,0,0,.08)}.login-card h1{margin-top:0}@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{display:flex;overflow:auto}.sidebar a{white-space:nowrap}.grid.four{grid-template-columns:repeat(2,1fr)}}@media(max-width:560px){.content{padding:14px}.grid.four{grid-template-columns:1fr}.card{overflow:auto}.card-head{align-items:flex-start;flex-direction:column}}
.grid.editor-grid{grid-template-columns:minmax(300px,420px) minmax(0,1fr);align-items:start}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.compact{margin:8px 0;gap:8px}.check.block{display:block;margin:12px 0}.check.block input{display:inline;width:auto}.badge.warn{background:#fff7ed;border-color:#fed7aa}.danger-zone{border-color:#fecaca;background:#fffafa}.danger-zone .danger,button.danger{background:#991b1b;border-color:#991b1b}.inline.wrap{flex-wrap:wrap}.inline.wrap input{min-width:280px;flex:1}textarea{width:100%;border:1px solid #d1d5db;border-radius:7px;padding:8px 10px;background:white;resize:vertical} @media(max-width:1100px){.grid.editor-grid{grid-template-columns:1fr}}
/* User Management */
.table-scroll{width:100%;overflow-x:auto}.table-scroll table{min-width:1180px}.table-scroll td form.inline.wrap{min-width:360px}.table-scroll input[type="password"]{min-width:170px}.table-scroll input[type="email"]{min-width:210px}.table-scroll select{min-width:120px}
/* GIS editor safety and multi-geometry support */
.coverage-vertex-icon{background:transparent;border:0}.coverage-vertex-icon span{display:block;width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid #111827;box-shadow:0 1px 3px rgba(0,0,0,.35);cursor:move}.coverage-context-popup .leaflet-popup-content{margin:10px 12px}.coverage-context-menu{display:grid;gap:7px;min-width:170px}.coverage-context-menu strong{font-size:12px}.coverage-context-menu button{width:100%;text-align:left}.gis-editor-actions{justify-content:flex-end}.badge.warn{background:#fff7ed;border-color:#fed7aa;color:#9a3412}
/* v2 major release */
.coverage-map-legend{background:rgba(255,255,255,.95);padding:9px 11px;border-radius:7px;border:1px solid #d1d5db;box-shadow:0 2px 8px rgba(0,0,0,.12);display:grid;gap:4px;min-width:135px}.coverage-map-legend strong{margin-bottom:2px}.coverage-map-legend span{display:flex;align-items:center;gap:7px;font-size:11px}.coverage-map-legend i{width:12px;height:12px;border-radius:50%;display:inline-block}.coverage-map-legend i.line{height:4px;border-radius:1px}.flash.warning{background:#fffbeb;border-color:#fde68a;color:#92400e}.secret-once{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#111827;color:#fff;padding:12px;border-radius:8px;overflow:auto;word-break:break-all}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.color-row{display:grid;grid-template-columns:1fr 110px;gap:10px;align-items:end}.color-row input[type=color]{height:38px;width:100%;padding:2px}.danger-text{color:#b91c1c}.api-scope-list{display:flex;flex-wrap:wrap;gap:10px}.api-scope-list label{font-weight:400;margin:0}.api-scope-list input{display:inline;width:auto;margin:0 4px 0 0}.map.medium{height:520px}.nowrap{white-space:nowrap}@media(max-width:900px){.settings-grid,.grid.three{grid-template-columns:1fr}}
/* API documentation */
pre{margin:8px 0;max-width:100%;overflow:auto;background:#0f172a;color:#e2e8f0;border-radius:8px;padding:12px}pre code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;white-space:pre}code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}

/* rc10 GIS point-editor marker: self-contained, CSP-safe, no external Leaflet marker PNG */
.coverage-editor-point-icon{background:transparent!important;border:0!important;overflow:visible!important}
.coverage-editor-point-pin{--pin-color:#16a34a;position:relative;display:block;width:28px;height:28px;border-radius:50% 50% 50% 0;background:var(--pin-color);border:3px solid #fff;box-shadow:0 2px 7px rgba(0,0,0,.42);transform:rotate(-45deg);transform-origin:50% 50%;cursor:move}
.coverage-editor-point-pin i{position:absolute;left:50%;top:50%;width:8px;height:8px;border-radius:50%;background:#fff;transform:translate(-50%,-50%)}
.coverage-editor-point-icon.leaflet-drag-target .coverage-editor-point-pin{box-shadow:0 3px 10px rgba(0,0,0,.5)}

/* rc11 hierarchical, foldable navigation */
.shell{grid-template-columns:280px minmax(0,1fr);transition:grid-template-columns .18s ease}
.shell.sidebar-collapsed{grid-template-columns:76px minmax(0,1fr)}
.sidebar{background:#fff;color:#1f2937;padding:14px 10px;border-right:1px solid var(--line);overflow-y:auto;overflow-x:hidden;position:sticky;top:58px;height:calc(100vh - 58px)}
.sidebar-tools{display:flex;justify-content:flex-end;margin-bottom:8px}.sidebar-toggle{width:100%;display:flex;gap:10px;align-items:center;justify-content:flex-start;background:#f8fafc!important;border-color:#e5e7eb!important;padding:9px 11px!important;color:#374151!important}.nav-icon{width:20px;height:20px;min-width:20px;display:inline-block}.sidebar-nav{display:grid;gap:6px}.nav-section{border-radius:9px}.nav-section>summary{display:flex;align-items:center;gap:10px;padding:10px 11px;border-radius:9px;cursor:pointer;color:#4b5563;font-weight:650;list-style:none;user-select:none}.nav-section>summary::-webkit-details-marker{display:none}.nav-section>summary:hover{background:#f3f4f6;color:#111827}.nav-chevron{margin-left:auto;transition:transform .15s ease;font-size:19px;line-height:1}.nav-section[open]>.nav-section{} .nav-section[open]>summary .nav-chevron{transform:rotate(90deg)}
.nav-items{margin:1px 0 5px 30px;padding-left:8px;border-left:1px solid #e5e7eb;display:grid;gap:2px}.sidebar a.nav-link{display:flex;align-items:center;gap:10px;color:#374151;text-decoration:none;padding:9px 10px;border-radius:8px;margin:0;font-weight:500}.sidebar a.nav-link:hover{background:#f3f4f6;color:#111827}.sidebar a.nav-link.active{background:#eef2f7;color:#111827;font-weight:700;box-shadow:inset 3px 0 0 #111827}.nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.shell.sidebar-collapsed .sidebar .nav-label,.shell.sidebar-collapsed .sidebar .nav-chevron{display:none}.shell.sidebar-collapsed .sidebar{padding-left:8px;padding-right:8px}.shell.sidebar-collapsed .sidebar-tools{justify-content:center}.shell.sidebar-collapsed .sidebar-toggle{justify-content:center;padding:9px!important}.shell.sidebar-collapsed .nav-section>summary{justify-content:center;padding:10px 8px}.shell.sidebar-collapsed .nav-items{margin:0;padding:0;border:0}.shell.sidebar-collapsed .sidebar a.nav-link{justify-content:center;padding:10px 8px}.shell.sidebar-collapsed .nav-section:not([open]) .nav-items{display:none}.shell.sidebar-collapsed .nav-section>summary{background:transparent}.shell.sidebar-collapsed .sidebar a.nav-link.active{box-shadow:inset 0 -3px 0 #111827}
@media(max-width:900px){.shell,.shell.sidebar-collapsed{grid-template-columns:1fr}.sidebar{position:relative;top:auto;height:auto;display:block;overflow:visible;border-right:0;border-bottom:1px solid var(--line);padding:8px}.sidebar-tools{display:none}.sidebar-nav{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px}.nav-section{min-width:max-content}.nav-section>summary{white-space:nowrap}.nav-items{margin-left:18px}.shell.sidebar-collapsed .sidebar .nav-label,.shell.sidebar-collapsed .sidebar .nav-chevron{display:inline}.shell.sidebar-collapsed .nav-items{margin:1px 0 5px 18px;padding-left:8px;border-left:1px solid #e5e7eb}.shell.sidebar-collapsed .sidebar a.nav-link{justify-content:flex-start}.shell.sidebar-collapsed .nav-section>summary{justify-content:flex-start}}

/* v2.1 operational UI */
.badge.ok{background:#f0fdf4;border-color:#bbf7d0;color:#166534}.badge.danger{background:#fef2f2;border-color:#fecaca;color:#991b1b}.progress{height:12px;background:#e5e7eb;border-radius:999px;overflow:hidden;margin:8px 0 12px}.progress>span{display:block;height:100%;background:#111827;transition:width .3s ease}.bulk-progress-card{position:relative}.user-table .user-name-link{text-decoration:none}.user-table .user-name-link:hover{text-decoration:underline}.action-menu{position:relative}.action-menu>summary{cursor:pointer;font-size:20px;line-height:1;list-style:none}.action-menu>summary::-webkit-details-marker{display:none}.action-menu>div{position:absolute;right:0;z-index:15;min-width:190px;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:0 12px 30px rgba(0,0,0,.14);padding:6px;display:grid}.action-menu>div>a,.action-menu>div>.link-button,.action-menu>div form .link-button{display:block;width:100%;text-align:left;background:#fff;color:#111827;border:0;padding:8px 9px;border-radius:6px;font-weight:500;text-decoration:none}.action-menu>div>a:hover,.action-menu>div .link-button:hover{background:#f3f4f6}.user-create{position:relative}.user-create>summary{list-style:none}.user-create>summary::-webkit-details-marker{display:none}.popover-card{position:absolute;right:0;z-index:16;width:min(430px,90vw);background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px;box-shadow:0 14px 35px rgba(0,0,0,.16)}.drawer-backdrop{position:fixed;inset:58px 0 0;background:rgba(15,23,42,.24);z-index:40;display:flex;justify-content:flex-end}.user-drawer{height:100%;width:min(520px,95vw);background:#fff;box-shadow:-12px 0 32px rgba(0,0,0,.16);overflow:auto}.drawer-head{position:sticky;top:0;background:#fff;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start;padding:18px;z-index:2}.drawer-head h2{margin:0}.drawer-close{font-size:28px;text-decoration:none;line-height:1}.drawer-body{padding:18px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}.detail-grid>div{border:1px solid var(--line);border-radius:8px;padding:10px}.detail-grid span{display:block;color:var(--muted);font-size:12px}.activity-list{display:grid;gap:8px}.activity-item{border-left:3px solid #e5e7eb;padding:7px 10px}.inline-details{display:inline-block}.inline-details>summary{cursor:pointer}.inline-details form{min-width:250px;padding:8px 0}.table-scroll .user-table{min-width:1050px}@media(max-width:700px){.detail-grid{grid-template-columns:1fr}.popover-card{position:fixed;left:12px;right:12px;top:70px;width:auto;max-height:80vh;overflow:auto}}

/* v2.2.2 GIS Map layer control UX patch */
.map-layer-panel{overflow:visible}
.map-layer-section{display:grid;gap:12px}
.map-layer-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.map-layer-heading strong{display:block;font-size:15px;line-height:1.35}
.map-layer-options{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:8px 16px}
.map-layer-option{display:flex;align-items:center;gap:9px;min-width:0;margin:0;padding:8px 10px;border:1px solid transparent;border-radius:8px;font-weight:500;line-height:1.2;cursor:pointer;user-select:none;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease}
.map-layer-option:hover{background:#f8fafc;border-color:#e5e7eb}
.map-layer-option:focus-within{outline:2px solid #94a3b8;outline-offset:1px}
.map-layer-option input[type="checkbox"]{appearance:auto;display:block;width:16px!important;height:16px;min-width:16px!important;max-width:16px;flex:0 0 16px!important;margin:0!important;padding:0}
.map-layer-option span{display:block;min-width:0}
.map-layer-divider{height:1px;background:var(--line);margin:17px 0}
.map-layer-empty{margin:2px 0 0;padding:10px 12px;background:#f8fafc;border:1px dashed #d1d5db;border-radius:8px}
.external-map-groups{display:grid;grid-template-columns:repeat(3,minmax(210px,1fr));gap:12px}
.external-map-provider{min-width:0;border:1px solid var(--line);border-radius:10px;padding:12px;background:#fafbfc}
.external-provider-head{display:flex;align-items:center;gap:8px;min-width:0;margin-bottom:9px}
.external-provider-head strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.external-provider-layers{display:flex;align-items:center;flex-wrap:wrap;gap:7px}
.external-layer-option{background:#fff;border-color:#e5e7eb;padding:7px 9px;min-width:105px}
.external-layer-option:hover{background:#f3f4f6;border-color:#d1d5db}
@media(max-width:1100px){.map-layer-options,.external-map-groups{grid-template-columns:repeat(2,minmax(160px,1fr))}}
@media(max-width:640px){.map-layer-options,.external-map-groups{grid-template-columns:1fr}.map-layer-option{padding:9px 10px}.external-provider-layers{display:grid;grid-template-columns:1fr 1fr}.external-layer-option{min-width:0}}
@media(max-width:420px){.external-provider-layers{grid-template-columns:1fr}}


/* v2.2.5 GIS Importer destination controls */
.import-commit-form{min-width:360px}.import-destination-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.import-destination-row select{width:auto;min-width:150px;max-width:260px}.import-internal-controls,.import-external-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.import-external-controls[hidden],.import-internal-controls[hidden]{display:none!important}.import-target-select{font-weight:700}.import-target-select option[value="external"]{font-weight:700}@media(max-width:760px){.import-commit-form{min-width:0}.import-destination-row,.import-internal-controls,.import-external-controls{align-items:stretch;flex-direction:column}.import-destination-row select,.import-destination-row button{width:100%;max-width:none}}

/* v2.3.0 User Management UX + SSL/TLS */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.user-filter-card{padding:12px 16px}.user-filter-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.user-filter-form input{min-width:260px;flex:1}.user-filter-form select{min-width:150px}.user-bulk-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px}.user-bulk-controls label{margin:0}.user-bulk-controls select{min-width:150px}.pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin:16px 0}.action-col{width:58px;text-align:right;white-space:nowrap}.user-action-trigger{min-width:38px;font-size:20px;line-height:1;padding:6px 10px}.user-action-popover{position:fixed;z-index:90;width:230px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 16px 42px rgba(15,23,42,.18);padding:6px}.user-action-popover[hidden]{display:none!important}.action-group{padding:4px 0;border-bottom:1px solid #eef0f3}.action-group:last-child{border-bottom:0}.action-group a,.action-link{display:block;width:100%;text-align:left;border:0!important;background:#fff!important;color:#111827!important;text-decoration:none;padding:9px 10px!important;border-radius:7px!important;font-weight:550!important;line-height:1.25;cursor:pointer}.action-group a:hover,.action-link:hover,.action-group a:focus,.action-link:focus{background:#f3f4f6!important;outline:none}.action-group form{margin:0}.action-group.destructive a,.action-group.destructive .action-link{color:#b91c1c!important}.user-modal{width:min(520px,calc(100vw - 28px));border:1px solid var(--line);border-radius:14px;padding:0;box-shadow:0 22px 65px rgba(15,23,42,.25)}.user-modal::backdrop{background:rgba(15,23,42,.42)}.dialog-head{padding:22px 22px 4px}.dialog-head h2{margin:0 0 5px}.user-modal>form[data-ajax-user-create]{padding:10px 22px 22px}.dialog-close-form{position:absolute;right:12px;top:12px;margin:0}.dialog-x{font-size:22px;padding:4px 9px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.dialog-result{border:1px solid var(--line);border-radius:9px;padding:12px;margin-top:10px;background:#f8fafc}.dialog-result.success{border-color:#bbf7d0;background:#f0fdf4}.dialog-result.error{border-color:#fecaca;background:#fef2f2}.field-feedback{display:block;margin-top:5px;font-weight:400}.field-feedback.ok{color:#166534}.field-feedback.error{color:#b91c1c}.session-list{display:grid;gap:8px}.session-item{border:1px solid var(--line);border-radius:8px;padding:9px 10px;background:#fafafa}.toast-stack{position:fixed;right:18px;bottom:18px;z-index:130;display:grid;gap:8px;max-width:min(420px,calc(100vw - 36px))}.app-toast{background:#111827;color:#fff;border-radius:9px;padding:11px 14px;box-shadow:0 12px 32px rgba(15,23,42,.25)}.app-toast.error{background:#991b1b}.mini-stat{border:1px solid var(--line);border-radius:9px;padding:12px;background:#fafafa;min-width:0}.mini-stat span{display:block;color:var(--muted);font-size:12px}.mini-stat strong{display:block;margin-top:4px;overflow-wrap:anywhere}.break-all{word-break:break-all}.ssl-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.ssl-action{border:1px solid var(--line);border-radius:9px;padding:10px 12px;background:#fafafa}.ssl-action>summary{cursor:pointer;font-weight:700}.ssl-action form{margin-top:10px}.ssl-detail-grid strong{overflow-wrap:anywhere}.external-health-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.external-health-note{padding:9px 11px;border:1px dashed #d1d5db;border-radius:8px;background:#fafafa;margin:8px 0}
@media(max-width:700px){.user-filter-form{align-items:stretch}.user-filter-form input,.user-filter-form select,.user-filter-form button,.user-filter-form .button{width:100%;min-width:0}.user-bulk-controls{align-items:stretch;flex-direction:column}.user-bulk-controls select,.user-bulk-controls button{width:100%}.user-action-popover{position:fixed!important;left:10px!important;right:10px!important;top:auto!important;bottom:10px!important;width:auto;max-height:70vh;overflow:auto;border-radius:14px}.ssl-action-grid{grid-template-columns:1fr}.drawer-backdrop{inset:58px 0 0}.user-drawer{width:100%}.dialog-actions{flex-direction:column-reverse}.dialog-actions button{width:100%}}

/* v2.3.3 Dashboard data-domain separation */
.dashboard-section{margin:20px 0 26px;padding:18px;border:1px solid var(--line);border-radius:12px;background:#fff}.dashboard-section .grid{margin-bottom:0}.dashboard-section .card{margin:0}.dashboard-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.dashboard-section-head h2{margin:7px 0 2px}.dashboard-section-head p{margin:0}.dashboard-internal{border-left:5px solid #166534}.dashboard-external{border:2px dashed #7c3aed;background:#faf8ff}.dashboard-external .card{border-color:#ddd6fe}.dashboard-operational{background:#f8fafc}.badge.external{background:#f5f3ff;border-color:#c4b5fd;color:#6d28d9}@media(max-width:700px){.dashboard-section{padding:14px}.dashboard-section-head{flex-direction:column}.dashboard-section-head .button{width:100%;text-align:center}}
.review-card{border:1px solid var(--border,#d9dee7);border-radius:10px;padding:12px;margin:12px 0;background:var(--card,#fff)}
.review-card>summary{cursor:pointer;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.review-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:14px 0}
.review-form{border-top:1px solid var(--border,#d9dee7);padding-top:14px}
.detail-list{display:grid;grid-template-columns:max-content 1fr;gap:6px 12px}.detail-list dt{font-weight:700}.detail-list dd{margin:0}
.span-two{grid-column:span 2}
@media(max-width:800px){.review-grid{grid-template-columns:1fr}.span-two{grid-column:auto}}

/* v2.3.51 public guide, Login Portal, and branding editor */
.auth-portal-body{margin:0;background:var(--portal-bg,#f3f4f6);color:var(--portal-text,#111827);min-height:100vh}.auth-portal-shell{min-height:100vh;display:grid;grid-template-columns:minmax(340px,1.05fr) minmax(420px,.95fr)}.auth-brand-panel{position:relative;overflow:hidden;background:linear-gradient(145deg,var(--portal-accent,#374151),#111827);color:#fff;min-height:100vh}.auth-hero-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.22}.auth-brand-panel:after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(17,24,39,.15),rgba(17,24,39,.82))}.auth-brand-content{position:relative;z-index:1;max-width:640px;margin:auto;padding:clamp(44px,8vw,104px);display:flex;min-height:100vh;box-sizing:border-box;flex-direction:column;justify-content:center}.auth-brand-mark{display:flex;gap:12px;align-items:center;margin-bottom:72px}.auth-brand-mark img,.auth-mobile-brand img{max-width:150px;max-height:52px;object-fit:contain}.auth-brand-mark span{display:grid;place-items:center;width:42px;height:42px;border-radius:10px;background:var(--portal-primary);font-size:22px;font-weight:800}.auth-kicker{text-transform:uppercase;letter-spacing:.16em;font-weight:800;font-size:12px;opacity:.8}.auth-brand-content h1{font-size:clamp(36px,4vw,58px);line-height:1.05;margin:10px 0 20px;color:#fff}.auth-brand-content>p{font-size:18px;line-height:1.65;opacity:.86}.auth-brand-content ul{list-style:none;padding:0;margin:28px 0 0;display:grid;gap:12px}.auth-brand-content li:before{content:"✓";display:inline-grid;place-items:center;width:22px;height:22px;margin-right:10px;border-radius:50%;background:var(--portal-primary);font-weight:800}.auth-form-panel{display:flex;justify-content:center;align-items:center;padding:42px;background:var(--portal-panel,#fff)}.auth-form-wrap{width:min(440px,100%)}.auth-mobile-brand{display:none;align-items:center;gap:10px;margin-bottom:28px}.auth-card{background:var(--portal-panel,#fff)}.auth-card header h1{font-size:32px;margin:0 0 9px;color:var(--portal-text)}.auth-card header p{color:var(--portal-muted);line-height:1.55;margin:0 0 26px}.auth-card form{display:grid;gap:16px}.auth-card label{font-weight:700;color:var(--portal-text)}.auth-card input,.auth-card select{margin-top:7px;background:#fff}.auth-card button{width:100%;background:var(--portal-primary);border-color:var(--portal-primary)}.auth-card button:hover{background:var(--portal-primary-hover);border-color:var(--portal-primary-hover)}.auth-form-links{text-align:right;margin-top:-5px}.auth-portal-footer{margin-top:28px;color:var(--portal-muted);font-size:13px}.auth-portal-footer>div{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:8px}.portal-announcement{border:1px solid #bfdbfe;background:#eff6ff;padding:11px 13px;border-radius:9px;margin-bottom:18px}.portal-announcement.warning{border-color:#fde68a;background:#fffbeb}.portal-announcement.maintenance{border-color:#fecaca;background:#fef2f2}.auth-layout-classic_card .auth-portal-shell{display:flex;align-items:center;justify-content:center;padding:28px}.auth-layout-classic_card .auth-form-panel{width:min(460px,100%);min-height:auto;border-radius:16px;box-shadow:0 18px 60px rgba(15,23,42,.14)}.auth-layout-classic_card .auth-mobile-brand{display:flex}.auth-portal-body .password-control{position:relative;display:block}.auth-portal-body .password-control input{padding-right:50px}.auth-portal-body .password-toggle{position:absolute!important;right:5px;top:12px;width:40px!important;min-width:40px;padding:7px!important;background:transparent!important;border:0!important;color:#4b5563!important}.auth-portal-body .caps-lock-warning{display:block;color:#b45309;font-size:12px;margin-top:5px}.auth-portal-body .caps-lock-warning[hidden]{display:none!important}.portal-settings-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:24px}.portal-live-preview{position:sticky;top:72px;align-self:start;min-height:440px;padding:34px;border-radius:14px;background:linear-gradient(145deg,var(--preview-primary),#111827);color:#fff;overflow:hidden}.portal-live-preview small{display:block;opacity:.75;margin-top:5px}.portal-live-preview h3{font-size:30px;line-height:1.1;margin:48px 0 12px}.portal-live-preview p{opacity:.85;line-height:1.5}.portal-preview-card{background:var(--preview-panel);color:var(--preview-text);padding:20px;border-radius:12px;display:grid;gap:12px;margin-top:28px}.portal-preview-card span{border:1px solid #d1d5db;border-radius:7px;padding:9px;color:#6b7280}.portal-preview-card b{background:var(--preview-primary);color:#fff;border-radius:7px;padding:10px;text-align:center}.portal-version-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}.portal-version-actions form{margin:0}.public-page,.guide-page{margin:0;background:#f6f7f9;color:#172033}.public-topbar{height:64px;padding:0 max(24px,calc((100vw - 1180px)/2));display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid #e5e7eb}.public-topbar nav{display:flex;gap:15px;align-items:center}.public-brand{font-weight:800;color:#b91c1c;text-decoration:none}.public-main{min-height:calc(100vh - 65px)}.guide-shell{max-width:1180px;margin:auto;padding:42px 24px 70px}.guide-hero{display:flex;justify-content:space-between;align-items:flex-start;gap:28px;margin-bottom:32px}.guide-hero h1,.guide-article h1{font-size:clamp(34px,5vw,54px);line-height:1.05;margin:8px 0 14px}.guide-hero p,.guide-article>header p{font-size:18px;color:#5f6878;max-width:780px}.guide-eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:800;color:#b91c1c}.guide-search{max-width:680px;margin:0 0 28px}.guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.guide-card{display:block;padding:22px;border:1px solid #e0e4ea;border-radius:12px;background:#fff;color:inherit;text-decoration:none;transition:.18s}.guide-card:hover{transform:translateY(-2px);border-color:#b91c1c;box-shadow:0 12px 32px rgba(15,23,42,.08)}.guide-card span{font-size:12px;color:#b91c1c;font-weight:800;text-transform:uppercase}.guide-card h2{font-size:19px;margin:9px 0}.guide-card p{color:#687181;margin:0;line-height:1.5}.guide-empty{text-align:center;padding:28px}.guide-breadcrumb{display:flex;gap:9px;color:#687181;margin-bottom:22px}.guide-article{max-width:840px;background:#fff;border:1px solid #e0e4ea;border-radius:15px;padding:clamp(26px,5vw,56px);margin:auto}.guide-article section{margin-top:36px}.guide-article section h2{font-size:23px}.guide-article li{margin:10px 0;line-height:1.65}.guide-pagination{max-width:840px;margin:22px auto;display:flex;justify-content:space-between;gap:12px}
@media(max-width:900px){.auth-portal-shell{grid-template-columns:1fr}.auth-brand-panel{display:none}.auth-form-panel{min-height:100vh}.auth-mobile-brand{display:flex}.portal-settings-layout{grid-template-columns:1fr}.portal-live-preview{position:relative;top:auto}.guide-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.auth-form-panel{padding:26px 20px}.auth-card header h1{font-size:27px}.guide-shell{padding:30px 16px 50px}.guide-hero{display:block}.guide-hero .button{margin-top:12px}.guide-grid{grid-template-columns:1fr}.guide-pagination{flex-direction:column}.guide-pagination .button{width:100%;box-sizing:border-box}.public-topbar{padding:0 16px}.portal-version-actions{flex-direction:column}.portal-version-actions button{width:100%}}
@media print{.public-topbar,.guide-search,.guide-pagination{display:none}.guide-shell{padding:0}.guide-article{border:0}}

/* v2.3.51 confirmed location preview */
.map.location-preview{height:260px;margin:12px 0}

.gis-map-cluster-count {background:transparent;border:0;box-shadow:none;color:#fff;font-weight:700;font-size:12px;}
.gis-map-cluster-count:before {display:none;}

/* v2.3.51: accessible eye control; no font-dependent password glyph. */
.auth-portal-body .password-control{margin-top:7px}
.auth-portal-body .password-control input{margin-top:0;min-height:44px}
.auth-portal-body .password-toggle{top:0;width:44px!important;min-width:44px;height:44px;display:flex;align-items:center;justify-content:center;padding:0!important;line-height:1}
.auth-portal-body .password-toggle svg{display:block;width:22px;height:22px;flex:none;pointer-events:none}
.auth-portal-body .password-toggle .password-eye-slash{display:none}
.auth-portal-body .password-toggle.is-visible .password-eye-slash{display:block}
.auth-portal-body .password-toggle:focus-visible{outline:2px solid var(--portal-primary,#b91c1c);outline-offset:1px;border-radius:6px}
