*{box-sizing:border-box} :root{--bg:#f4f5f7;--panel:#fff;--text:#172033;--muted:#687386;--line:#e4e7ec;--primary:#111827;--radius:16px;--shadow:0 18px 45px rgba(15,23,42,.12)} html,body{height:100%;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)} button,input,textarea,select{font:inherit} button{cursor:pointer}.app-shell{height:100%;display:grid;grid-template-columns:370px 1fr}.sidebar{height:100%;overflow:auto;background:var(--panel);border-right:1px solid var(--line);padding:18px;z-index:1001}.brand{display:flex;align-items:center;gap:12px;padding:4px 2px 18px}.brand-mark{width:42px;height:42px;border-radius:13px;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:800;font-size:21px}.brand strong,.brand span{display:block}.brand span{font-size:12px;color:var(--muted);margin-top:2px}.panel{border-top:1px solid var(--line);padding:18px 0}.section-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.section-title h2{font-size:15px;margin:0}.field{display:grid;gap:6px;margin-bottom:12px}.field>span{font-size:12px;font-weight:700;color:#4b5563}.field input,.field textarea,.field select,.search-row input{width:100%;border:1px solid #d8dde5;border-radius:10px;padding:10px 11px;background:#fff;color:var(--text);outline:none}.field input:focus,.field textarea:focus,.field select:focus,.search-row input:focus{border-color:#6b7280;box-shadow:0 0 0 3px rgba(17,24,39,.08)}.search-row{display:grid;grid-template-columns:1fr auto;gap:7px}.primary-btn,.secondary-btn,.glass-btn,.file-btn{border:0;border-radius:10px;padding:10px 12px;font-weight:700}.primary-btn{background:var(--primary);color:#fff}.secondary-btn{background:#eef0f3;color:#253047}.secondary-btn.danger,.glass-btn.danger{color:#b42318}.button-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.full{width:100%}.muted{color:var(--muted)}.small{font-size:12px;margin-top:8px}.hint{font-size:11px;line-height:1.45;color:var(--muted);margin:10px 0 0}.search-results{display:grid;gap:6px;margin-top:8px;max-height:180px;overflow:auto}.search-result{border:1px solid var(--line);border-radius:10px;background:#fff;text-align:left;padding:9px;font-size:12px;color:#374151}.search-result:hover{background:#f8fafc}.category-preview{display:flex;align-items:center;gap:10px;background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:10px;margin:5px 0 12px}.category-preview strong,.category-preview span{display:block}.category-preview span{font-size:11px;color:var(--muted);margin-top:2px}.marker-pin{width:34px;height:34px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:#2563eb;color:#fff;display:grid;place-items:center;box-shadow:0 3px 10px rgba(0,0,0,.25);border:2px solid #fff}.marker-pin>*{transform:rotate(45deg)}.category-list{display:grid;gap:6px}.category-row{display:grid;grid-template-columns:28px 1fr 34px;align-items:center;gap:8px;padding:6px 7px;border:1px solid var(--line);border-radius:10px}.category-dot{width:24px;height:24px;border-radius:8px;display:grid;place-items:center;color:#fff;font-size:14px}.category-name{font-size:12px;font-weight:650}.category-row input[type=color]{width:30px;height:28px;border:0;padding:0;background:transparent}.details-box{margin-top:10px;border:1px solid var(--line);border-radius:12px}.details-box summary{padding:10px 12px;font-size:12px;font-weight:700;cursor:pointer}.details-content{padding:0 12px 12px}.two-cols{display:grid;grid-template-columns:1fr 1fr;gap:8px}.badge{background:#eef0f3;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:800}.file-btn{display:block;margin-top:9px;text-align:center;background:#fff;border:1px dashed #aeb6c2;color:#374151;font-size:12px}.file-btn input{display:none}footer{font-size:10px;color:var(--muted);padding:2px 0 10px}.map-stage{position:relative;min-width:0;background:#dbe3e8}.map-header{position:absolute;top:16px;left:16px;right:16px;z-index:500;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;pointer-events:none}.map-header>div{pointer-events:auto}.map-header h1{display:inline-block;margin:0;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.85);border-radius:12px;padding:10px 14px;box-shadow:0 8px 24px rgba(15,23,42,.12);font-size:18px}.map-header p{display:table;margin:6px 0 0;background:rgba(255,255,255,.9);border-radius:8px;padding:6px 10px;font-size:12px;color:#4b5563}.map-actions{display:flex;gap:7px}.glass-btn{background:rgba(255,255,255,.92);box-shadow:0 8px 24px rgba(15,23,42,.12);color:#253047}.placement-toast{position:absolute;z-index:500;bottom:18px;left:50%;transform:translateX(-50%);background:rgba(17,24,39,.92);color:#fff;padding:9px 14px;border-radius:999px;font-size:12px;pointer-events:none;box-shadow:var(--shadow)}#map{height:100%;width:100%}.leaflet-div-icon{background:transparent;border:0}.custom-marker{width:34px;height:34px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);display:grid;place-items:center;color:#fff;border:2px solid white;box-shadow:0 3px 10px rgba(0,0,0,.3)}.custom-marker span{transform:rotate(45deg);font-size:16px}.popup-card strong{font-size:14px}.popup-card p{margin:5px 0;color:#4b5563}.popup-card button{border:0;border-radius:7px;padding:6px 8px;font-weight:700}.icon-btn{border:0;background:transparent;font-size:24px;color:#4b5563}.mobile-only{display:none}.floating-menu{position:absolute;z-index:600;top:14px;left:14px;border:0;border-radius:11px;width:42px;height:42px;background:#fff;box-shadow:var(--shadow);font-size:20px}dialog{border:0;border-radius:16px;box-shadow:0 25px 70px rgba(15,23,42,.3);padding:0;width:min(460px,calc(100vw - 28px))}dialog::backdrop{background:rgba(15,23,42,.45);backdrop-filter:blur(3px)}#pointForm{padding:18px}.dialog-head{display:flex;align-items:center;justify-content:space-between}.dialog-head h2{font-size:18px;margin:0 0 14px}.dialog-actions{display:grid;grid-template-columns:auto 1fr auto auto;gap:8px;align-items:center;margin-top:16px}.hidden{display:none!important}@media(max-width:850px){.app-shell{display:block}.sidebar{position:fixed;inset:0 auto 0 0;width:min(390px,92vw);transform:translateX(-105%);transition:.25s;box-shadow:var(--shadow)}.sidebar.open{transform:translateX(0)}.mobile-only{display:block}.map-stage{height:100%}.map-header{left:68px}.map-actions{display:none}}@media print{.sidebar,.map-actions,.floating-menu,.placement-toast,.leaflet-control-container{display:none!important}.app-shell{display:block}.map-stage,#map{height:100vh}.map-header{top:10px;left:10px}.map-header h1{box-shadow:none;border:1px solid #ddd}.map-header p{border:1px solid #ddd}}
.zone-options{display:grid;gap:8px;margin-top:12px;padding:11px;border-radius:12px;background:#f8fafc;border:1px solid var(--line)}
.switch-row{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:650;color:#374151;margin:8px 0}
.switch-row input{width:16px;height:16px}
.map-image-mode #map{background:#eef2f7}
.leaflet-image-layer{image-rendering:auto}
.zone-label{background:rgba(255,255,255,.9);border:1px solid rgba(255,255,255,.95);box-shadow:0 4px 12px rgba(15,23,42,.12);padding:4px 7px;border-radius:8px;font-size:11px;font-weight:750;color:#111827}
.context-hint{position:absolute;z-index:510;right:18px;bottom:18px;background:rgba(255,255,255,.94);padding:8px 10px;border-radius:10px;font-size:11px;box-shadow:0 8px 24px rgba(15,23,42,.12)}
@media(max-width:850px){.context-hint{display:none}}

.empty-selection{padding:12px;border:1px dashed #cfd5df;border-radius:12px;color:var(--muted);font-size:12px;line-height:1.45;background:#fafbfc}
.context-menu,.context-submenu{position:fixed;z-index:3000;min-width:220px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:6px;box-shadow:0 18px 45px rgba(15,23,42,.2)}
.context-menu button,.context-submenu button{width:100%;border:0;background:transparent;text-align:left;padding:10px 11px;border-radius:8px;font-weight:650;color:#273449}
.context-menu button:hover,.context-submenu button:hover{background:#f1f4f8}
.context-submenu{min-width:240px;max-height:320px;overflow:auto}
.selected-marker .custom-marker{outline:4px solid rgba(17,24,39,.18);outline-offset:3px}
.selected-zone{filter:drop-shadow(0 0 5px rgba(17,24,39,.25))}
.marker-label{background:rgba(255,255,255,.94);border:1px solid rgba(255,255,255,.98);border-radius:8px;padding:4px 7px;box-shadow:0 4px 12px rgba(15,23,42,.14);font-weight:750;color:#172033;white-space:nowrap}
.marker-label:before{display:none}
.inspector-value{font-size:11px;color:var(--muted);text-align:right}


.options-title{display:block;font-size:12px;margin-bottom:10px;color:#374151}
.source-card{margin-bottom:12px;padding:10px;border:1px solid #dce3ec;border-radius:11px;background:#f7f9fc;font-size:11px;line-height:1.5;color:#4b5563}
.source-card strong{display:block;color:#1f2937;font-size:12px;margin-bottom:2px}
.search-result{position:relative}
.search-result-title{display:block;font-weight:750;color:#253047}
.search-result-meta{display:block;margin-top:4px;color:#6b7280;font-size:10px;line-height:1.35}
.search-result-badge{display:inline-flex;margin-top:6px;padding:2px 7px;border-radius:999px;background:#eef2ff;color:#4338ca;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.context-separator{height:1px;background:#e8ebf0;margin:5px 4px}
.layer-hidden-message{padding:9px 10px;border-radius:9px;background:#fff7ed;color:#9a3412;font-size:11px}
.leaflet-popup-content-wrapper{border-radius:13px}
.leaflet-popup-content{margin:12px 14px}
.popup-card{min-width:145px;padding:2px}
.popup-card p{white-space:pre-wrap}
@media(max-width:850px){
  .sidebar{padding-bottom:80px}
}

.category-select-btn{border:0;background:transparent;padding:0;text-align:left;color:inherit;cursor:pointer}
.category-select-btn:hover{text-decoration:underline}
