
    :root{
      --ink:#17283e;--soft:#64748b;--nav:#11233a;--accent:#18775e;--accent-dark:#125b49;
      --accent-soft:#e6f4ed;--bg:#f4f7f8;--line:#dce5ec;--card:#ffffff;
      --warn:#d97706;--danger:#dc2626;--blue:#0f62fe;
      --safe-bottom:env(safe-area-inset-bottom,12px);
    }
    *{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
    html,body{margin:0;min-height:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--bg);font-size:15px}
    button,input,select,textarea{font:inherit}
    button{cursor:pointer}
    button:disabled{opacity:.5;cursor:not-allowed}
    .hidden{display:none!important}

    /* Layout chính */
    .app{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}
    .sidenav{background:var(--nav);color:#e9f1f7;padding:20px 14px;display:flex;flex-direction:column;gap:18px;min-height:100vh;z-index:1000}
    .brand{display:flex;align-items:center;gap:11px;padding:0 6px}
    .brandmark{width:40px;height:40px;border-radius:12px;background:#2e8f74;display:grid;place-items:center;color:white;font-size:21px;font-weight:800;box-shadow:0 6px 18px #0003;flex:none}
    .brand strong{font-size:15px;display:block;line-height:1.25}
    .brand small{font-size:10px;letter-spacing:1.2px;color:#9db3c5;text-transform:uppercase}

    /* Hộp Trạng thái Đăng nhập & Phân quyền */
    .auth-card{background:#1b324e;border:1px solid #2e4a6b;padding:12px;border-radius:12px;display:flex;flex-direction:column;gap:8px}
    .auth-user{display:flex;align-items:center;justify-content:space-between;gap:6px}
    .auth-badge{font-size:10px;font-weight:800;text-transform:uppercase;padding:3px 8px;border-radius:20px;letter-spacing:.5px}
    .auth-badge.guest{background:#334155;color:#cbd5e1}
    .auth-badge.staff{background:#065f46;color:#6ee7b7;border:1px solid #059669}
    .auth-badge.admin{background:#991b1b;color:#fecaca;border:1px solid #dc2626}
    .auth-name{font-size:13px;font-weight:750;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .auth-btn{border:1px solid #3c5a7d;background:#0f2137;color:#fff;border-radius:8px;padding:8px 10px;font-size:12px;font-weight:750;width:100%;display:flex;align-items:center;justify-content:center;gap:6px;transition:.15s}
    .auth-btn:hover{background:#25415a}
    .auth-btn.login-primary{background:#2e8f74;border-color:#34d399;color:#fff}

    .navtitle{margin:4px 10px 4px;text-transform:uppercase;font-size:10px;font-weight:800;letter-spacing:1.6px;color:#8197af}
    .navgroup{display:grid;gap:5px}
    .navlink{border:0;background:transparent;width:100%;text-align:left;color:#b0c4d8;padding:12px 13px;display:flex;align-items:center;gap:11px;border-radius:11px;font-size:13px;font-weight:650;transition:.15s}
    .navlink:hover{background:#ffffff12;color:#fff}
    .navlink.active{background:#18775e;color:#fff;box-shadow:0 4px 12px rgba(24,119,94,.35)}
    .navicon{width:22px;font-size:17px;text-align:center}

    .navfoot{margin-top:auto;border:1px solid #2d445c;padding:12px;border-radius:12px;background:#ffffff08}
    .navfoot small{color:#9db3c5;font-size:11px;line-height:1.5;display:block}
    .navfoot b{display:block;margin-bottom:4px;color:#f0f7fb;font-size:12px}

    /* Khu vực chính */
    .main{min-width:0;padding:18px clamp(14px,2vw,28px) 28px;display:flex;flex-direction:column;gap:16px}
    .pagehead{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
    .pagehead h1{font-size:clamp(20px,2.2vw,26px);margin:0 0 4px;letter-spacing:-.5px}
    .subtitle{color:var(--soft);font-size:12.5px;margin:0}
    .actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}

    /* Nút bấm chuẩn Outdoor */
    .btn{border:1.5px solid #cbd5e1;background:#fff;border-radius:10px;padding:10px 14px;display:inline-flex;align-items:center;justify-content:center;gap:7px;color:#1e293b;font-weight:700;font-size:13px;white-space:nowrap;min-height:42px;transition:.15s}
    .btn:hover{border-color:#94b9ad;background:#f8fbf9}
    .btn.primary{border-color:var(--accent);background:var(--accent);color:white}
    .btn.primary:hover{background:var(--accent-dark)}
    .btn.blue{border-color:var(--blue);background:var(--blue);color:white}
    .btn.danger{border-color:#fca5a5;color:#b91c1c;background:#fef2f2}
    .btn.small{padding:7px 11px;font-size:12px;min-height:36px}
    .sync-pill{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:50px;font-size:12px;font-weight:750;border:1px solid #bbf7d0;background:#f0fdf4;color:#15803d}
    .sync-pill.offline{border-color:#fed7aa;background:#fffbeb;color:#b45309}

    /* Thống kê 4 ô */
    .stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
    .stat{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px 16px;box-shadow:0 2px 6px rgba(0,0,0,.03)}
    .stathead{display:flex;align-items:center;justify-content:space-between;color:var(--soft);font-size:11px;font-weight:700}
    .statnum{display:block;margin-top:6px;font-size:24px;font-weight:800;color:var(--ink)}
    .stathint{margin-top:3px;font-size:11px;color:#94a3b8}

    /* Khung Bản đồ & Danh sách bên trái */
    .panel{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 5px 15px rgba(15,23,42,.05)}
    .maplayout{height:calc(100vh - 190px);min-height:540px;display:grid;grid-template-columns:340px minmax(0,1fr);position:relative}
    .mapleft{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--line);background:#fff;z-index:400}
    .filterbox{padding:14px;border-bottom:1px solid var(--line)}
    .sectionheading{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
    .sectionheading h2{font-size:14px;margin:0;font-weight:800}
    .smallcounter{font-size:11px;color:#0f5132;background:#d1e7dd;padding:4px 9px;border-radius:20px;font-weight:800}
    .searchwrap{position:relative}
    .searchwrap input{width:100%;padding:10px 12px 10px 34px;border:1.5px solid #cbd5e1;border-radius:10px;background:#f8fafc;color:var(--ink);font-size:14px;outline:none}
    .searchwrap input:focus{border-color:var(--accent);background:#fff}
    .searchwrap span{position:absolute;top:10px;left:11px;color:#64748b;font-size:15px}
    .selectors{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:8px}
    .fieldselect{padding:9px 8px;width:100%;border:1.5px solid #cbd5e1;background:#fff;border-radius:9px;color:#334155;font-size:12.5px;font-weight:600}

    /* Danh sách điểm nhà */
    .records{overflow-y:auto;flex:1;padding:6px 8px 12px}
    .record{display:flex;align-items:center;gap:10px;border:1.5px solid transparent;border-radius:11px;padding:10px;margin:4px 0;text-align:left;width:100%;background:#fff;color:inherit;transition:.12s}
    .record:hover,.record.selected{background:#f0fdf4;border-color:#86efac}
    .numtile{min-width:46px;height:44px;padding:0 6px;flex:none;background:#e6f4ed;color:#18775e;border:1px solid #bbf7d0;border-radius:10px;display:grid;place-items:center;font-size:14px;font-weight:850}
    .record-info{flex:1;min-width:0}
    .record-info strong{display:block;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    .record-info small{color:var(--soft);font-size:11.5px;display:block;margin:3px 0 5px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
    .status{font-size:10.5px;font-weight:800;display:inline-flex;align-items:center;gap:5px}
    .status:before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}
    .verified{color:#16a34a}.pending{color:#d97706}.review{color:#dc2626}

    /* Khu vực Bản đồ GIS */
    .maparea{position:relative;min-width:0;min-height:0;background:#e2e8f0}
    #map{width:100%;height:100%;z-index:0}
    .mapcorner{position:absolute;top:12px;left:12px;right:12px;z-index:500;display:flex;gap:7px;flex-wrap:wrap;align-items:center;pointer-events:none}
    .mapcorner > *{pointer-events:auto}
    .basemap-select{border:1.5px solid #cbd5e1;border-radius:9px;padding:8px 10px;background:rgba(255,255,255,.96);color:#0f172a;font-size:12px;font-weight:750;box-shadow:0 4px 12px rgba(0,0,0,.12)}
    .legend{position:absolute;bottom:16px;left:12px;background:rgba(255,255,255,.95);z-index:500;border-radius:10px;box-shadow:0 4px 16px rgba(0,0,0,.15);padding:9px 12px;display:flex;gap:12px;flex-wrap:wrap;font-size:11px;font-weight:700;color:#334155}
    .legend span{display:flex;align-items:center;gap:5px}
    .dot{width:9px;height:9px;border-radius:50%;display:inline-block}
    .dot.verified{background:#16a34a}.dot.pending{background:#d97706}.dot.review{background:#dc2626}

    /* Tâm ngắm cố định giữa bản đồ */
    .center-crosshair{position:absolute;left:50%;top:50%;transform:translate(-50%,-100%);z-index:650;pointer-events:none;display:flex;flex-direction:column;align-items:center}
    .center-crosshair .cross-pin{width:38px;height:38px;border-radius:50% 50% 50% 2px;transform:rotate(-45deg);background:#dc2626;border:3px solid #fff;box-shadow:0 6px 18px rgba(0,0,0,.45);display:grid;place-items:center;color:#fff}
    .center-crosshair .cross-pin span{transform:rotate(45deg);font-size:16px;font-weight:900}
    .center-crosshair .cross-dot{width:8px;height:8px;border-radius:50%;background:#dc2626;border:2px solid #fff;margin-top:2px;box-shadow:0 2px 6px #000}
    .pickbanner{position:absolute;top:60px;left:50%;transform:translateX(-50%);width:min(92%,460px);z-index:850;background:#0f172a;color:white;text-align:center;padding:12px 14px;border-radius:12px;font-weight:700;font-size:13px;box-shadow:0 10px 28px rgba(0,0,0,.35);display:flex;flex-direction:column;gap:8px}
    .pickbanner-btns{display:flex;gap:8px;justify-content:center}

    /* Ghim số nhà trên bản đồ */
    .pin{width:34px;height:34px;display:flex;align-items:center;justify-content:center;color:#fff;border-radius:11px 11px 11px 2px;transform:rotate(-45deg);border:2.5px solid white;box-shadow:0 3px 10px rgba(0,0,0,.35)}
    .pin span{transform:rotate(45deg);font-size:11px;font-weight:850}
    .pin.verified{background:#16a34a}.pin.pending{background:#d97706}.pin.review{background:#dc2626}
    .pin.selected{outline:3.5px solid #0f172a;transform:rotate(-45deg) scale(1.15)}
    .gps-cluster{width:42px;height:42px;display:grid;place-items:center;border:3.5px solid white;border-radius:50%;background:#18775e;box-shadow:0 3px 14px rgba(0,0,0,.35);color:white;font-weight:800;font-size:13px}
    .gps-cluster.has-review{background:linear-gradient(135deg,#18775e,#d97706)}
    .popup-title{font-weight:850;font-size:15px;color:var(--ink)}
    .popup-sub{font-size:12.5px;color:#475569;margin-top:2px}
    .popup-owner{font-size:12.5px;font-weight:700;color:#0f5132;background:#e6f4ed;padding:5px 8px;border-radius:6px;margin-top:6px}
    .popup-btns{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
    .popup-button{border:0;background:var(--accent);color:#fff;padding:8px 12px;font-size:12px;border-radius:8px;font-weight:750;flex:1}
    .popup-button.nav{background:#0f62fe}
    .popup-button.lock{background:#475569}

    /* Bảng danh sách, Báo cáo & Khu vực Quản trị (Admin) */
    .contentpanel{padding:18px}
    .tabletop{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:10px;flex-wrap:wrap}
    .tablewrap{overflow-x:auto}
    .datatable{width:100%;border-collapse:collapse;min-width:820px;text-align:left}
    .datatable th{color:#475569;font-size:11px;text-transform:uppercase;background:#f8fafc;padding:12px;border-bottom:2px solid var(--line)}
    .datatable td{border-bottom:1px solid #e2e8f0;padding:11px 12px;font-size:13px}
    .tableaction{background:#f1f5f9;border:1px solid #cbd5e1;border-radius:6px;padding:5px 9px;color:#0f172a;font-size:11.5px;font-weight:750;margin-right:4px}
    .charts{display:grid;grid-template-columns:1fr 1fr;gap:18px}
    .chartbox{border:1px solid var(--line);border-radius:12px;padding:18px}
    .barrow{display:grid;grid-template-columns:120px minmax(0,1fr) 40px;gap:10px;align-items:center;margin:12px 0;font-size:12.5px}
    .bartrack{background:#e2e8f0;border-radius:10px;height:11px;overflow:hidden}
    .barfill{height:100%;background:#16a34a;border-radius:10px}
    .barfill.pending{background:#d97706}.barfill.review{background:#dc2626}

    /* Grid Quản trị hệ thống */
    .settingsgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}
    .settingscard{padding:20px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:0 3px 10px rgba(0,0,0,.03)}
    .settingscard h3{margin:0 0 12px;font-size:15px;display:flex;align-items:center;justify-content:space-between}
    .settingscard p{font-size:12.5px;line-height:1.6;color:var(--soft);margin:0 0 12px}
    .staff-list{border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:10px}
    .staff-item{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-bottom:1px solid var(--line);font-size:13px;background:#f8fafc}
    .staff-item:last-child{border-bottom:0}

    /* Modal Phiếu Khảo Sát & Modal Đăng Nhập */
    .modaloverlay{position:fixed;inset:0;background:rgba(15,23,42,.68);backdrop-filter:blur(3px);z-index:1500;display:flex;align-items:center;justify-content:center;padding:10px}
    .modal{width:min(650px,100%);max-height:94vh;display:flex;flex-direction:column;background:#fff;border-radius:18px;box-shadow:0 25px 70px rgba(0,0,0,.35);overflow:hidden}
    .modal.small-modal{width:min(420px,100%)}
    .modalhead{padding:15px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;background:#f8fafc}
    .modalhead h2{margin:0;font-size:17px;font-weight:800}
    .closebtn{background:#e2e8f0;border:0;border-radius:8px;font-size:22px;width:34px;height:34px;line-height:1}
    .modalbody{padding:16px 20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:14px}
    .modalfoot{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid var(--line);padding:12px 20px;background:#f8fafc;flex-wrap:wrap}

    .form-section{border:1.5px solid #e2e8f0;border-radius:12px;padding:13px;background:#ffffff}
    .form-section-title{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--accent);margin:0 0 10px;display:flex;align-items:center;justify-content:space-between}
    .twocol{display:grid;grid-template-columns:1fr 1fr;gap:11px}
    .threecol{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
    .control{display:flex;flex-direction:column;gap:5px;margin:6px 0}
    .control label{font-size:12px;color:#334155;font-weight:750}
    .control input,.control select,.control textarea{padding:11px 12px;border-radius:10px;border:1.5px solid #cbd5e1;background:#f8fafc;color:var(--ink);width:100%;outline:none;font-size:16px;min-height:46px}
    .control input:focus,.control select:focus,.control textarea:focus{border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px rgba(24,119,94,.15)}
    .control textarea{min-height:68px;resize:vertical}
    .hint-box{background:#eff6ff;border:1px solid #bfdbfe;color:#1e40af;padding:8px 11px;border-radius:8px;font-size:12px;font-weight:600;margin-top:4px}

    #qrReaderBox{border:2px dashed var(--accent);border-radius:12px;overflow:hidden;background:#0f172a;color:#fff;margin-bottom:10px}
    #qrReader{width:100%;min-height:220px}
    #qrReader video{display:block;width:100%;max-height:58dvh;object-fit:contain}
    .camera-tools{display:flex;flex-wrap:wrap;gap:8px;padding:10px;align-items:center}
    .camera-tools select{max-width:100%;min-height:42px}
    #qrMessage{padding:10px;line-height:1.5;font-size:13px}
    #qrZoom{width:130px}
    .qr-status{background:#ecfdf5;border:1px solid #6ee7b7;color:#065f46;padding:9px 12px;border-radius:9px;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:space-between;gap:8px}

    #toast{position:fixed;z-index:2500;right:18px;bottom:18px;max-width:360px;background:#0f172a;color:#fff;padding:13px 18px;border-radius:12px;box-shadow:0 10px 28px rgba(0,0,0,.35);font-size:13px;font-weight:600;opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s}
    #toast.show{opacity:1;transform:translateY(0)}

    /* Tối ưu hiển thị Điện thoại */
    .mobile-drawer-toggle{display:none}
    @media(max-width:820px){
      .app{display:flex;flex-direction:column;height:100vh;overflow:hidden}
      .sidenav{min-height:unset;height:auto;flex-direction:row;align-items:center;justify-content:space-between;padding:8px 10px;gap:6px;flex-wrap:wrap}
      .brandmark{width:34px;height:34px;font-size:17px}
      .brand strong{font-size:13px}
      .brand small,.navtitle,.navfoot{display:none}
      .navgroup{display:flex;gap:4px}
      .navlink{padding:8px 10px;font-size:12px}
      .navlink .navtext{display:none}

      .auth-card{flex-direction:row;align-items:center;padding:4px 8px;gap:8px;background:#1b324e;border-radius:9px}
      .auth-user{gap:5px}
      .auth-name{max-width:110px;font-size:12px}
      .auth-btn{padding:6px 9px;font-size:11.5px;width:auto}

      .main{flex:1;padding:8px;gap:8px;overflow-y:auto;display:flex;flex-direction:column}
      .pagehead{padding:2px 4px;gap:8px}
      .pagehead h1{font-size:16.5px;margin:0}
      .subtitle{display:none}
      .actions{width:100%;justify-content:space-between}
      .actions .btn{flex:1;padding:8px 9px;font-size:12px}

      .stats.hide-on-mobile-map{display:none}
      .stats{grid-template-columns:repeat(2,1fr);gap:8px}

      .maplayout{flex:1;display:flex;flex-direction:column-reverse;height:calc(100vh - 118px);min-height:420px;border-radius:12px}
      .maparea{flex:1;min-height:280px}
      .mapleft{height:210px;border-right:0;border-top:2px solid var(--line);transition:height .25s ease}
      .mapleft.collapsed{height:52px;overflow:hidden}
      .mobile-drawer-toggle{display:inline-flex;align-items:center;gap:5px;background:#e2e8f0;border:0;border-radius:6px;padding:4px 9px;font-size:11.5px;font-weight:800;color:#1e293b}
      .filterbox{padding:8px 10px}
      .sectionheading{margin-bottom:6px}
      .charts,.settingsgrid,.twocol,.threecol{grid-template-columns:1fr}
      .modaloverlay{padding:0;align-items:flex-end}
      .modal{width:100%;max-height:96vh;border-radius:18px 18px 0 0}
      .modal.small-modal{border-radius:18px 18px 0 0;width:100%}
      .modalfoot .btn{flex:1;min-height:48px}
    }
  
.test-banner{padding:12px 20px;background:#fff7df;border-bottom:1px solid #e5cf85;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.test-banner strong{display:block;font-size:13px;color:#704b0a}.test-banner span{display:block;font-size:12px;margin-top:4px;color:#725c32}.test-banner a{text-decoration:none}@media(max-width:600px){.test-banner{padding:10px 14px}.test-banner .actions{width:100%}.test-banner .btn{flex:1}}

.sheet-status{padding:10px 20px;font-size:13px;background:#e6f4ed;color:#145644;overflow-wrap:anywhere}#sheetConnectLink{display:block;padding:10px 20px;background:#fff7df;color:#125b49}

#qrReader{position:relative;min-height:0;background:#07111b}#qrReader video{display:block;max-height:58dvh;min-height:240px;width:100%;object-fit:contain}#qrReader:has(video)::after{content:"";position:absolute;inset:16% 20%;border:2px solid #65e8bd;border-radius:16px;pointer-events:none;box-shadow:0 0 0 1px #0005}#qrMessage{min-height:60px;font-weight:500}.qr-status{overflow-wrap:anywhere}

/* Fieldwork UI: quiet chrome, readable address cards, unobstructed picking. */
:root{--bg:#f1f5f4;--line:#dce6e2;--accent:#146c57;--accent-dark:#0c5140}
button,a,input,select,textarea{touch-action:manipulation}
button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid #149c80;outline-offset:3px}
.connection-panel{background:#fff;border-bottom:1px solid var(--line)}
.connection-panel>summary{padding:12px 24px;cursor:pointer;font-size:13px;font-weight:700;color:#245548}
.connection-panel>summary span{font-weight:400;color:#64748b;margin-left:12px}
.test-banner{background:#f6faf8;border-color:var(--line)}
.test-banner strong,.test-banner span{color:#355b4f}
.app{min-height:calc(100dvh - 44px)}
.sidenav{min-height:unset;background:#142f2b}
.auth-card{background:#203d37;border-color:#35564d}
.navlink.active{box-shadow:none;background:#286351}
.main{gap:18px;padding-top:24px}
.panel{box-shadow:0 4px 20px #193d2808;border-radius:18px}
.maplayout{height:calc(100dvh - 240px);min-height:460px;grid-template-columns:300px minmax(0,1fr)}
.btn{min-height:44px;border-width:1px;border-radius:11px}
.mapcorner .btn,.basemap-select{min-height:44px;box-shadow:0 2px 10px #17382c18}
.leaflet-popup-content-wrapper{border-radius:16px;box-shadow:0 8px 32px #102c3433}
.house-popup .leaflet-popup-content{margin:18px;line-height:1.5}
.popup-eyebrow{font-size:10px;letter-spacing:1.5px;color:#64748b;font-weight:700}
.popup-title{font-size:22px;letter-spacing:-.5px;margin:3px 0 6px;line-height:1.2}
.popup-tag{display:inline-block;padding:3px 8px;background:#f1f5f9;color:#475569;font-size:11px;border-radius:6px;margin-bottom:6px}
.popup-sub{line-height:1.5;font-size:13px}
.popup-btns{display:grid;grid-template-columns:1fr;gap:8px;margin-top:14px}
.popup-button,.leaflet-container a.popup-button{display:flex;align-items:center;justify-content:center;min-height:44px;line-height:1.3;font-size:13px;padding:10px 12px;border-radius:10px;color:#fff;text-decoration:none}
.popup-button.nav,.leaflet-container a.popup-button.nav{color:#145c4c;background:#edf5f1;border:1px solid #cbded5}
.leaflet-container a.leaflet-popup-close-button{width:32px;height:32px;line-height:32px;color:#475569}
.modalhead,.modalfoot{flex-shrink:0;background:#fff}
.modalbody{min-height:0;overscroll-behavior:contain;background:#f6f8f7}
.modal{max-height:94dvh}.closebtn{width:44px;height:44px}
.form-section{border-width:1px;padding:16px}
.pick-instruction strong,.pick-instruction span{display:block}
.pick-instruction strong{font-size:16px;letter-spacing:-.2px}
.pick-instruction span{font-size:13px;font-weight:400;color:#52665e;margin-top:4px}
body.is-picking{overflow:hidden;overscroll-behavior:none}
body.is-picking #mapView{position:fixed;inset:0;z-index:1800;width:100%;height:100vh;height:100dvh;min-height:0;border:0;border-radius:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;background:#fff}
body.is-picking .mapleft,body.is-picking .legend,body.is-picking #fitBtn{display:none}
body.is-picking .maparea{min-height:0;grid-row:1}
body.is-picking .mapcorner{top:calc(12px + env(safe-area-inset-top,0px));left:calc(12px + env(safe-area-inset-left,0px));right:12px;justify-content:space-between;flex-wrap:nowrap}
body.is-picking .mapcorner>*{min-width:0;max-width:55%;font-size:12px}
body.is-picking .pickbanner{position:static;transform:none;width:100%;grid-row:2;z-index:auto;color:var(--ink);background:#fff;border-radius:0;box-shadow:none;border-top:1px solid var(--line);padding:14px max(16px,env(safe-area-inset-right,0px)) calc(12px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));gap:7px;text-align:left;display:grid;grid-template-columns:1fr auto;align-items:center}
#pickLiveCoord{font-size:12px;font-variant-numeric:tabular-nums;color:#536b61;font-weight:400;grid-column:1}
.pickbanner-btns{grid-column:2;grid-row:1 / 3;gap:10px}
.pickbanner-btns .btn{min-height:48px}
body.is-picking .leaflet-marker-pane,body.is-picking .leaflet-popup-pane{pointer-events:none}
body.is-picking #toast{bottom:auto;top:70px}
.center-crosshair{transform:translate(-50%,calc(-100% + 4px))}
@media(max-width:820px){
  .connection-panel>summary{padding:10px 14px;font-size:12px}
  .connection-panel>summary span{font-size:11px;margin-left:6px}
  .app{height:auto;min-height:calc(100dvh - 40px);overflow:visible}
  .sidenav{display:grid;grid-template-columns:1fr auto;padding:10px 12px;gap:10px}
  .brand{padding:0}.brand strong{font-size:14px}
  .auth-card{justify-content:space-between;grid-column:1 / -1;grid-row:2;padding:6px 8px}
  .auth-btn{min-height:36px}.auth-name{max-width:180px}
  .navlink{min-width:40px;min-height:40px;justify-content:center;padding:7px}
  .main{padding:12px;gap:12px;overflow:visible}
  .pagehead{padding:0}.pagehead h1{font-size:18px;line-height:1.4}
  .actions{gap:6px;justify-content:flex-start}.actions .btn{flex:1 1 auto;min-height:44px}
  .sync-pill{font-size:11px;padding:6px 9px}
  .maplayout{height:70dvh;min-height:420px;flex:none;display:flex;flex-direction:column-reverse;border-radius:14px}
  .maparea{min-height:240px}
  .mapleft{height:240px;max-height:45%;flex-shrink:0;transition:none}
  .mapleft.collapsed{height:56px;max-height:none}
  .mapleft.collapsed .searchwrap,.mapleft.collapsed .selectors,.mapleft.collapsed .records{display:none}
  .mapleft.collapsed .filterbox{border:0}
  .filterbox{padding:10px}.sectionheading{margin:0 0 8px}.sectionheading h2{font-size:12px}
  .mobile-drawer-toggle{min-height:36px;padding:6px 9px;font-size:11px}
  .mapcorner{gap:6px;top:10px;left:10px;right:10px}
  .mapcorner .btn,.basemap-select{font-size:11px;padding:8px}
  #fitBtn{display:none}
  .legend{bottom:10px;left:8px;gap:8px;font-size:10px;padding:7px 8px;max-width:calc(100% - 60px)}
  .modal{max-height:100dvh;border-radius:18px 18px 0 0}
  .modalhead{padding:12px 16px}.modalbody{padding:12px}.modalfoot{padding:12px 12px calc(12px + env(safe-area-inset-bottom,0px))}
  body.is-picking .pickbanner{grid-template-columns:1fr;padding-top:12px}
  .pickbanner-btns{grid-column:1;grid-row:auto;display:grid;grid-template-columns:1fr 2fr;margin-top:3px}
  #toast{left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));max-width:none}
}
@media(max-height:480px) and (orientation:landscape){
  body.is-picking .pickbanner{grid-template-columns:1fr auto;padding-top:8px;padding-bottom:8px;gap:3px}
  body.is-picking .pickbanner-btns{grid-column:2;grid-row:1 / 3;display:flex;margin:0}
  .pick-instruction strong{font-size:14px}.pick-instruction span{font-size:12px}
}

/* Address actions: matching line icons and explicit Leaflet link contrast. */
.house-popup .popup-btns{gap:8px;padding-top:12px;border-top:1px solid #e4ece8;margin-top:12px}
.house-popup .popup-button,.leaflet-container .house-popup a.popup-button{
  width:100%;min-height:46px;display:flex;align-items:center;justify-content:flex-start;gap:10px;
  border:1px solid #146c57;border-radius:10px;padding:11px 14px;
  background:#146c57;color:#fff;font-size:13px;font-weight:650;line-height:1.4;
  text-decoration:none;box-shadow:none;transition:background .15s,border-color .15s;
}
.house-popup .popup-button svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.leaflet-container .house-popup a.popup-button.nav,
.leaflet-container .house-popup a.popup-button.nav:visited{background:#fff;color:#163d33;border-color:#b8cdc4}
.house-popup .popup-external{margin-left:auto;font-size:16px;color:inherit}
.house-popup .popup-button:hover{background:#0d5543;border-color:#0d5543}
.leaflet-container .house-popup a.popup-button.nav:hover{background:#eaf3ee;color:#102f27;border-color:#7eaa97}
.house-popup .popup-button:active{background:#0b4939}
.house-popup .popup-button:focus-visible{outline:3px solid #16886b;outline-offset:3px}
.house-popup .popup-button.lock{background:#475569;border-color:#475569}
.sync-result{border:1px solid #cbded5;border-left:4px solid #6b8578;background:#fff;border-radius:12px;padding:14px 16px;font-size:13px;line-height:1.55}
.sync-result p{margin:6px 0 10px;color:#42574e;overflow-wrap:anywhere}
.sync-result a{color:#145c4c;font-weight:650}.sync-result summary{cursor:pointer;padding:7px 0;font-weight:650}
.sync-result[data-state="error"],.sync-result[data-state="partial"]{border-left-color:#b45309;background:#fffaf0}
.sync-result[data-state="success"]{border-left-color:#15803d;background:#f0fdf4}
.sync-result[data-state="sending"]{border-left-color:#2563eb;background:#eff6ff}
.sync-queue-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid #e0e7e3}.sync-queue-row span{min-width:0;overflow-wrap:anywhere}.sync-queue-row small{display:block;color:#64748b;font-size:11px}.sync-queue-row button{flex-shrink:0}
.search-mode-row{display:flex;gap:6px;margin:8px 0}.search-mode-row select{min-width:0}.search-feedback{padding:8px 12px;font-size:11px;line-height:1.4;color:#52665e;background:#f3f8f5}.search-feedback button{border:0;background:transparent;color:#145c4c;text-decoration:underline;padding:8px 10px 4px 0;font-size:11px;min-height:32px}
.satellite-help{position:absolute;left:10px;right:52px;bottom:58px;z-index:500;padding:7px 10px;border-radius:8px;background:#fffffff2;color:#344a40;font-size:11px;line-height:1.35;max-width:420px;pointer-events:none}.satellite-help button{pointer-events:auto;border:0;background:transparent;color:#145c4c;font-size:11px;text-decoration:underline;min-height:32px;padding:4px 0;display:block}
body.is-picking .satellite-help{bottom:22px;max-width:280px}
@media(max-width:820px){.maplayout{height:85dvh;min-height:620px}.mapleft{height:340px;max-height:55%}.mapleft.collapsed{height:154px}.mapleft.collapsed .searchwrap{display:block}.mapleft.collapsed .search-feedback{display:none}.mapleft .records{min-height:70px}.search-mode-row{margin:4px 0}.search-mode-row .btn{min-height:36px}.mapleft.collapsed .filterbox{padding-bottom:8px}.search-feedback{padding:6px 10px}.mapleft .selectors{margin-top:5px}}
/* Role-scoped workspace. Data authorization is also enforced by the API. */
body[data-role="guest"] .auth-card,body[data-role="guest"] .navfoot,body[data-role="guest"] .navgroup,body[data-role="guest"] .connection-panel,body[data-role="guest"] .pagehead .actions,body[data-role="guest"] #statsSection,body[data-role="guest"] #syncResult,body[data-role="guest"] .legend,body[data-role="guest"] #statusFilter,body[data-role="guest"] #searchLoginBtn,body[data-role="guest"] #listView,body[data-role="guest"] #reportsView,body[data-role="guest"] #settingsView{display:none!important}
body[data-role="guest"] .main{padding-top:16px}body[data-role="guest"] .app{grid-template-columns:1fr}body[data-role="guest"] .sidenav{padding:12px 20px;min-height:0}body[data-role="guest"] .app{display:flex;flex-direction:column}body[data-role="guest"] .maplayout{height:calc(100dvh - 160px);min-height:500px}
body[data-role="guest"] .pin{background:#18775e}body[data-role="guest"] .pin span{color:#fff}body[data-role="guest"] .selectors{grid-template-columns:1fr}
body:not([data-role="admin"]) .connection-panel,body:not([data-role="admin"]) #syncResult,body:not([data-role="admin"]) [data-view="reports"],body:not([data-role="admin"]) #statsSection{display:none!important}
.workflow-row{padding:16px 0;border-top:1px solid #dde7e1;display:flex;justify-content:space-between;gap:16px;align-items:center}.workflow-row p{font-size:12px;margin:6px 0;color:#52665e}.workflow-row small{font-size:12px}.workflow-state{font-weight:750;color:#145c4c}.workflow-row .actions{max-width:420px}.review-note{background:#fff7df;padding:8px;border-radius:6px}.staff-item small{display:block;overflow-wrap:anywhere}
#workspaceTools p{margin-top:12px}#workflowTitle{font-size:18px}#legacyAdmin{display:none!important}
@media(max-width:820px){.workflow-row{display:block}.workflow-row .actions{margin-top:12px}body[data-role="guest"] .maplayout{height:85dvh;min-height:620px}}
body[data-role="guest"] #searchMode option[value="owner"]{display:none}body[data-role="guest"] .mapleft .sectionheading h2{font-size:14px}
#workflowBoard>summary{font-size:15px;font-weight:750;cursor:pointer;padding:2px 0 10px}
body[data-role="guest"] .navtitle{display:none!important}
/* Custom field administration and responsive survey inputs */
#fieldEditor{display:grid;grid-template-columns:minmax(0,2fr) minmax(150px,1fr);gap:12px;margin:18px 0}#fieldEditor .actions{grid-column:1/-1}#fieldList{margin:16px 0}#fieldSettings p{line-height:1.6;color:#475569}#customFieldInputs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}#customFieldInputs input{width:100%;min-width:0}#fieldFeedback{padding:12px;border-radius:10px;background:#edf5f2}body:not([data-role="admin"]) #fieldSettings{display:none!important}@media(max-width:600px){#fieldEditor,#customFieldInputs{grid-template-columns:minmax(0,1fr)}#fieldList .workflow-row{align-items:stretch;flex-direction:column}#fieldList .actions{flex-wrap:wrap}}
body:not([data-role="admin"]) #catalogSettings{display:none!important}#catalogForm{display:grid;grid-template-columns:minmax(150px,1fr) minmax(0,2fr);gap:12px;margin:16px 0}#catalogForm .actions{grid-column:1/-1}#catalogList{max-height:480px;overflow:auto;margin:12px 0}#catalogFeedback{background:#edf5f2;padding:12px;border-radius:10px;line-height:1.6}#catalogSettings p{line-height:1.6;color:#475569}@media(max-width:600px){#catalogForm{grid-template-columns:minmax(0,1fr)}#catalogList .workflow-row{align-items:stretch;flex-direction:column}}
.source-status{margin:8px 20px;color:#475569;font-size:13px;line-height:1.5}body[data-role="guest"] #refreshSourceBtn{display:none!important}
