:root{--bg:#0d1117;--panel:#161b22;--panel-2:#1c2430;--border:#2b3440;--text:#e6edf3;--muted:#8b949e;--accent:#ffd400;--green:#2ea043;--red:#ff3b30;--orange:#d29922;--blue:#388bfd}*{box-sizing:border-box}body,html{height:100%;margin:0}body{font-family:system-ui,"Segoe UI",Roboto,Arial,sans-serif;color:var(--text);background:var(--bg);overflow:hidden}#app{display:none;height:100vh;grid-template-rows:auto 1fr}#app.visible{display:grid}header.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--border)}header.topbar .logo{font-size:20px}header.topbar .logo-img{width:44px;height:44px;border-radius:50%;display:block}header.topbar h1{font-size:15px;margin:0;font-weight:600;letter-spacing:.3px}header.topbar .spacer{flex:1}header.topbar .userbox{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:10px}header.topbar .role-badge{font-size:11px;padding:2px 8px;border-radius:20px;font-weight:600;background:var(--panel-2);border:1px solid var(--border)}header.topbar .role-badge.master{color:var(--accent);border-color:var(--accent)}.main{display:grid;grid-template-columns:350px 1fr;min-height:0}aside.sidebar{background:var(--panel);border-right:1px solid var(--border);overflow-y:auto;padding:14px}.card{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:14px}.card h2{font-size:12px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);margin:0 0 10px;font-weight:700}label.field{display:block;font-size:12px;color:var(--muted);margin:8px 0 4px}input,select{width:100%;padding:9px 10px;border-radius:8px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:14px;outline:0}input:focus,select:focus{border-color:var(--blue)}.row{display:flex;gap:8px}.row>*{flex:1}.btn{border:1px solid var(--border);background:var(--panel);color:var(--text);padding:9px 12px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;transition:.15s}.btn:hover{background:var(--panel-2)}.btn-primary{background:var(--accent);color:#1a1400;border-color:var(--accent)}.btn-primary:hover{background:#fff;color:#1a1400;border-color:#fff}.btn-block{width:100%}.btn-sm{padding:6px 10px;font-size:12px}.msg{font-size:12.5px;margin-top:8px;min-height:16px}.msg.ok{color:var(--green)}.msg.err{color:var(--red)}.msg.info{color:var(--muted)}.tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.tab{flex:1 1 auto;text-align:center;padding:7px 8px;border-radius:8px;cursor:pointer;font-size:12.5px;font-weight:600;border:1px solid var(--border);color:var(--muted);white-space:nowrap}.tab:not(.active):hover{color:var(--text);background:var(--panel);border-color:var(--muted)}.tab.active{background:var(--panel);color:var(--text);border-color:var(--blue)}.tab-panel{display:none}.tab-panel.active{display:block}#result-card{display:none}#result-card.visible{display:block}.verdict{padding:10px;border-radius:8px;font-weight:700;font-size:13.5px;text-align:center;margin-bottom:12px;border:1px solid}.verdict.good{color:var(--green);border-color:var(--green);background:rgba(46,160,67,.08)}.verdict.warn{color:var(--orange);border-color:var(--orange);background:rgba(210,153,34,.08)}.verdict.bad{color:var(--red);border-color:var(--red);background:rgba(255,59,48,.08)}.kv{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:5px 0;border-bottom:1px dashed var(--border)}.kv span{color:var(--muted)}.cat-table{width:100%;border-collapse:collapse;margin-top:10px;font-size:12px}.cat-table td,.cat-table th{border:1px solid var(--border);padding:5px 7px;text-align:left}.cat-table th{background:var(--panel);color:var(--muted)}.muted{color:var(--muted)}.basemap-switch{display:flex;flex-wrap:wrap;gap:6px}.basemap-switch .tab{font-size:12px;padding:6px;flex:1 1 40%}#map{width:100%;height:100%}.zoom-hint{position:absolute;bottom:30px;left:50%;transform:translateX(-50%);background:rgba(13,17,23,.85);border:1px solid var(--border);color:var(--text);padding:7px 14px;border-radius:20px;font-size:12.5px;z-index:5;pointer-events:none;transition:opacity .3s;backdrop-filter:blur(4px)}.loading-pill{position:absolute;top:12px;left:50%;transform:translateX(-50%);background:rgba(13,17,23,.9);border:1px solid var(--border);padding:6px 14px;border-radius:20px;font-size:12px;z-index:6;display:none}.loading-pill.visible{display:block}.map-wrap{position:relative;min-height:0}#map-compare{position:absolute;inset:0;z-index:4;display:none}.compare-divider{position:absolute;top:0;bottom:0;width:0;z-index:5;display:flex;align-items:center}.compare-divider::before{content:"";position:absolute;top:0;bottom:0;left:-1px;width:2px;background:var(--accent);box-shadow:0 0 8px rgba(0,0,0,.7)}.compare-divider .handle{position:relative;left:-18px;width:36px;height:36px;border-radius:50%;background:var(--panel);border:2px solid var(--accent);color:var(--accent);display:flex;align-items:center;justify-content:center;cursor:ew-resize;font-size:13px;font-weight:700;user-select:none;touch-action:none;box-shadow:0 2px 10px rgba(0,0,0,.5)}.compare-select{position:absolute;bottom:30px;right:12px;z-index:5;width:auto;padding:6px 10px;font-size:12px;border-radius:8px;background:rgba(13,17,23,.9);border:1px solid var(--border);color:var(--text);backdrop-filter:blur(4px)}.compare-select.left{right:auto;left:12px}.map-toolbar{position:absolute;top:12px;left:12px;z-index:6;display:flex;align-items:center;gap:4px;background:rgba(13,17,23,.88);border:1px solid var(--border);border-radius:10px;padding:5px;backdrop-filter:blur(6px)}.map-toolbar .tool{width:34px;height:34px;border:1px solid transparent;background:0 0;color:var(--text);border-radius:8px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:.12s}.map-toolbar .tool:hover{background:var(--panel-2)}.map-toolbar .tool.active{background:var(--accent);color:#1a1400;border-color:var(--accent)}.map-toolbar .tool.on{box-shadow:inset 0 -2px 0 var(--green)}.tool-sep{width:1px;height:22px;background:var(--border);margin:0 3px}.measure-info{position:absolute;top:56px;left:12px;z-index:6;max-width:60%;background:rgba(13,17,23,.9);border:1px solid var(--accent);color:var(--text);padding:6px 12px;border-radius:8px;font-size:13px;display:none}.measure-info.visible{display:block}.coord-readout{position:absolute;bottom:8px;left:50%;transform:translateX(-50%);z-index:6;background:rgba(13,17,23,.8);border:1px solid var(--border);color:var(--muted);padding:4px 12px;border-radius:8px;font-size:11.5px;font-family:monospace;pointer-events:none;white-space:nowrap}.place-results{margin-top:8px;display:flex;flex-direction:column;gap:4px}.place-item{padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);cursor:pointer;font-size:12.5px;line-height:1.3}.place-item:hover{border-color:var(--blue);background:var(--panel-2)}.menu{display:flex;gap:4px}.menu-item{background:0 0;border:1px solid transparent;color:var(--muted);padding:7px 12px;border-radius:8px;cursor:pointer;font-size:13.5px;font-weight:600;transition:.12s}.menu-item:hover{background:var(--panel-2);color:var(--text)}.menu-item.active{color:var(--text);border-color:var(--border);background:var(--panel-2)}.modal-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:rgba(4,8,14,.66);backdrop-filter:blur(3px)}.modal{width:min(420px,calc(100vw - 32px));background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:0 22px 70px rgba(0,0,0,.55);overflow:hidden}.modal-head{padding:14px 18px;font-weight:700;font-size:15px;border-bottom:1px solid var(--border);background:var(--panel-2)}.modal-body{padding:16px 18px;font-size:13.5px;line-height:1.55}.modal-body p{margin:0 0 8px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--border)}.modal-note{color:var(--muted);font-size:12.5px}.help-list{margin:0;padding-left:18px}.help-list li{margin-bottom:8px}.modal.large{width:min(640px,calc(100vw - 32px))}.modal-body.doc-body{max-height:62vh;overflow-y:auto}.doc-body h4{margin:14px 0 4px;font-size:13.5px;color:var(--text)}.doc-body li,.doc-body p{font-size:13px;color:#c4cdd6}.doc-body ul{margin:4px 0 8px;padding-left:18px}.doc-updated{color:var(--muted);font-size:11.5px;margin-bottom:4px}.modal a{color:var(--blue);text-decoration:none}.modal a:hover{text-decoration:underline}.contact-block p{margin:4px 0;font-size:14px}.legal-links{display:flex;flex-wrap:wrap;gap:4px 14px;padding:4px 4px 10px;font-size:11.5px}.legal-links a{color:var(--muted);text-decoration:none}.legal-links a:hover{color:var(--text);text-decoration:underline}.cookie-bar{position:fixed;left:12px;right:12px;bottom:12px;z-index:150;display:flex;align-items:center;justify-content:space-between;gap:14px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 16px;font-size:12.5px;color:var(--text);box-shadow:0 10px 40px rgba(0,0,0,.5)}.cookie-bar a{color:var(--blue)}@media (min-width:900px){.cookie-bar{left:auto;max-width:560px}}.price-card{border:1px solid var(--accent);border-radius:12px;padding:14px 16px;margin:10px 0 14px;background:rgba(255,212,0,.05)}.price-card .price{font-size:28px;font-weight:800;color:var(--accent)}.price-feats{list-style:none;margin:10px 0 0;padding:0}.price-feats li{padding:3px 0;font-size:13px}.btn.locked{opacity:.62;position:relative}.btn.locked::after{content:" 🔒"}.tab.locked{opacity:.72}.tab.locked::after{content:" 🔒";font-size:11px}.doc-choice{display:flex;gap:18px;margin:4px 0 6px;font-size:13px}.doc-choice label{display:flex;align-items:center;gap:6px;cursor:pointer}.doc-choice input{width:auto}.modal-body input[type=email],.modal-body input[type=password],.modal-body input[type=tel],.modal-body input[type=text]{margin-bottom:2px}.file-drop{border:1.5px dashed var(--border);border-radius:8px;padding:14px;text-align:center;font-size:12.5px;color:var(--muted);cursor:pointer}.file-drop:hover{border-color:var(--blue);color:var(--text)}.chk{display:flex;align-items:center;gap:8px;font-size:12.5px;margin:10px 0;color:var(--muted)}.chk input{width:auto}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:10px}