:root{
  --blue:#2563eb; --blue-d:#1d4ed8; --blue-l:#eff6ff;
  --bg:#f1f5f9; --panel:#ffffff; --border:#e2e8f0; --border2:#cbd5e1;
  --text:#0f172a; --text2:#475569; --text3:#94a3b8;
  --green:#16a34a; --green-l:#dcfce7; --amber:#d97706; --amber-l:#fef3c7;
  --red:#dc2626; --red-l:#fee2e2; --slate:#64748b; --slate-l:#f1f5f9;
  --shadow:0 1px 3px rgba(15,23,42,.08),0 1px 2px rgba(15,23,42,.04);
  --shadow-lg:0 10px 30px rgba(15,23,42,.12);
  --radius:12px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;overflow:hidden}

/* ─── Header ─── */
#header{height:58px;background:var(--panel);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:14px;padding:0 18px;position:relative;z-index:1000;box-shadow:var(--shadow)}
.logo{display:flex;align-items:center;gap:8px;font-weight:800;font-size:18px;color:var(--text);text-decoration:none;letter-spacing:-.02em}
.logo span{color:var(--blue)}
.module-tag{font-size:12px;font-weight:600;color:var(--blue);background:var(--blue-l);padding:4px 10px;border-radius:20px;border:1px solid #dbeafe}
.spacer{flex:1}
.lang-toggle{display:flex;background:var(--slate-l);border-radius:8px;padding:2px}
.lang-toggle button{border:0;background:transparent;font-family:inherit;font-weight:600;font-size:12px;color:var(--text2);padding:5px 9px;border-radius:6px;cursor:pointer}
.lang-toggle button.active{background:var(--panel);color:var(--blue);box-shadow:var(--shadow)}
.ghost-btn{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--text2);text-decoration:none;padding:7px 12px;border-radius:8px;border:1px solid var(--border);background:var(--panel);cursor:pointer}
.ghost-btn:hover{border-color:var(--border2);color:var(--text)}
.user-chip{display:flex;align-items:center;gap:8px}
.user-chip .avatar{width:30px;height:30px;border-radius:50%;background:var(--blue);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px;overflow:hidden}
.user-chip .avatar img{width:100%;height:100%;object-fit:cover}
.user-chip .uname{font-weight:600;font-size:13px}
.user-chip .login-btn{background:var(--blue);color:#fff;border:0;font-family:inherit;font-weight:600;font-size:13px;padding:8px 14px;border-radius:8px;text-decoration:none;cursor:pointer}
.user-chip .login-btn:hover{background:var(--blue-d)}

/* ─── Layout ─── */
#layout{display:grid;grid-template-columns:340px 1fr 0;height:calc(100% - 58px);transition:grid-template-columns .25s ease}
#layout.report-open{grid-template-columns:340px 1fr 420px}
#layout.sidebar-collapsed{grid-template-columns:0 1fr 0}
#layout.sidebar-collapsed.report-open{grid-template-columns:0 1fr 420px}

/* ─── Sidebar ─── */
#sidebar{background:var(--panel);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}
.sidebar-head{padding:14px;border-bottom:1px solid var(--border)}
#search-box{display:flex;align-items:center;gap:8px;background:var(--slate-l);border:1px solid var(--border);border-radius:9px;padding:8px 11px;color:var(--text3)}
#search-box input{border:0;background:transparent;font-family:inherit;font-size:13px;color:var(--text);width:100%;outline:none}
.list-meta{font-size:12px;color:var(--text3);margin-top:10px;font-weight:500}
#listing-count{color:var(--text);font-weight:700}
#listings{overflow-y:auto;flex:1;padding:8px}
.listing-card{display:flex;gap:10px;padding:10px;border-radius:10px;cursor:pointer;border:1px solid transparent}
.listing-card:hover{background:var(--slate-l)}
.listing-card.active{background:var(--blue-l);border-color:#bfdbfe}
.listing-card .thumb{width:64px;height:64px;border-radius:8px;background:var(--slate-l) center/cover no-repeat;flex-shrink:0;display:grid;place-items:center;color:var(--text3)}
.listing-card .info{min-width:0;flex:1}
.listing-card .title{font-weight:600;font-size:13px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.listing-card .sub{font-size:12px;color:var(--text3);margin-top:3px;display:flex;gap:8px;flex-wrap:wrap}
.listing-card .price{font-weight:700;color:var(--blue);font-size:13px;margin-top:4px}
.badge-done{font-size:10px;font-weight:700;color:var(--green);background:var(--green-l);padding:1px 6px;border-radius:10px}

/* ─── Map ─── */
#map-wrap{position:relative}
#map{height:100%;width:100%;background:#dbe4ea}
.map-hint{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);background:rgba(15,23,42,.85);color:#fff;font-size:12px;font-weight:500;padding:7px 14px;border-radius:20px;z-index:500;pointer-events:none;backdrop-filter:blur(4px)}
.leaflet-marker-land{filter:hue-rotate(0)}

/* ─── Report ─── */
#report{background:var(--panel);border-left:1px solid var(--border);overflow-y:auto;overflow-x:hidden}
#report.report-empty #report-content{display:none}
#report:not(.report-empty) #report-placeholder{display:none}
.report-placeholder{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;color:var(--text3)}
.report-placeholder h3{margin:16px 0 6px;color:var(--text2);font-size:16px}
.report-placeholder p{font-size:13px;max-width:240px}

#report-content{padding:18px}
.rc-head{margin-bottom:14px}
.rc-addr{font-weight:700;font-size:15px;line-height:1.35}
.rc-coords{font-size:12px;color:var(--text3);margin-top:4px}
.rc-coords b{color:var(--text2);font-weight:600}

.verdict-card{border-radius:var(--radius);padding:15px;margin-bottom:14px;border:1px solid}
.verdict-card.buildable{background:var(--green-l);border-color:#bbf7d0}
.verdict-card.buildable_with_change{background:var(--amber-l);border-color:#fde68a}
.verdict-card.restricted{background:var(--red-l);border-color:#fecaca}
.verdict-card.not_buildable{background:var(--red-l);border-color:#fecaca}
.verdict-card.unknown{background:var(--slate-l);border-color:var(--border)}
.verdict-row{display:flex;align-items:center;gap:12px}
.verdict-icon{width:36px;height:36px;border-radius:9px;display:grid;place-items:center;flex-shrink:0;background:rgba(255,255,255,.6)}
.verdict-label{font-weight:800;font-size:15px;line-height:1.25}
.verdict-purpose{font-size:12px;color:var(--text2);margin-top:2px}
.gauge{margin-top:12px}
.gauge-track{height:8px;background:rgba(255,255,255,.6);border-radius:6px;overflow:hidden}
.gauge-fill{height:100%;border-radius:6px;transition:width .5s ease}
.gauge-meta{display:flex;justify-content:space-between;font-size:11px;color:var(--text2);margin-top:5px;font-weight:600}

.rc-section{margin-bottom:16px}
.rc-section h4{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);margin-bottom:9px;display:flex;align-items:center;gap:6px}
.kv{display:flex;gap:8px;font-size:13px;padding:5px 0;border-bottom:1px dashed var(--border)}
.kv:last-child{border-bottom:0}
.kv .k{color:var(--text2);min-width:120px}
.kv .v{font-weight:600;text-align:right;flex:1}

.build-item{display:flex;gap:9px;align-items:flex-start;font-size:13px;padding:6px 0}
.build-item .ic{flex-shrink:0;width:18px;height:18px;border-radius:5px;display:grid;place-items:center;font-weight:800;font-size:12px;margin-top:1px}
.build-item .ic.yes{background:var(--green-l);color:var(--green)}
.build-item .ic.cond{background:var(--amber-l);color:var(--amber)}
.build-item .ic.no{background:var(--red-l);color:var(--red)}

.steps{counter-reset:step;list-style:none}
.steps li{position:relative;padding:0 0 12px 30px;font-size:13px;color:var(--text2)}
.steps li:before{counter-increment:step;content:counter(step);position:absolute;left:0;top:0;width:20px;height:20px;background:var(--blue);color:#fff;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700}
.steps li:not(:last-child):after{content:"";position:absolute;left:9px;top:22px;bottom:2px;width:2px;background:var(--border)}

.feas-badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;padding:4px 10px;border-radius:20px}
.feas-moderate{background:var(--amber-l);color:var(--amber)}
.feas-easy{background:var(--green-l);color:var(--green)}
.feas-hard,.feas-very_hard{background:var(--red-l);color:var(--red)}
.feas-na,.feas-unknown{background:var(--slate-l);color:var(--slate)}

.constraint{display:flex;gap:9px;align-items:flex-start;font-size:13px;padding:8px 0;border-bottom:1px solid var(--border)}
.constraint:last-child{border-bottom:0}
.constraint .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;margin-top:5px}
.constraint .dot.high{background:var(--red)}
.constraint .dot.medium{background:var(--amber)}
.constraint .dot.low{background:var(--slate)}

.src-link{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--border);border-radius:9px;text-decoration:none;color:var(--text);margin-bottom:8px;transition:.15s}
.src-link:hover{border-color:var(--blue);background:var(--blue-l)}
.src-link .nm{font-weight:600;font-size:13px}
.src-link .ds{font-size:11px;color:var(--text3);margin-top:2px;line-height:1.35}
.src-link .arr{margin-left:auto;color:var(--text3);flex-shrink:0}

.datasrc{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text2);padding:3px 0}
.datasrc .st{width:7px;height:7px;border-radius:50%}
.datasrc .st.ok{background:var(--green)}
.datasrc .st.error{background:var(--red)}

.disclaimer{font-size:11px;color:var(--text3);line-height:1.5;background:var(--slate-l);padding:11px;border-radius:9px;margin-top:6px}
.rc-actions{display:flex;gap:8px;margin:6px 0 16px}
.btn{flex:1;border:0;font-family:inherit;font-weight:600;font-size:13px;padding:10px;border-radius:9px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue-d)}
.btn-ghost{background:var(--slate-l);color:var(--text2)}
.btn-ghost:hover{background:var(--border)}
.cached-note{font-size:11px;color:var(--text3);text-align:center;margin-bottom:10px}

/* ─── Loading overlay ─── */
.loading-overlay{position:fixed;inset:0;background:rgba(241,245,249,.75);backdrop-filter:blur(3px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:2000}
.loading-overlay.hidden{display:none}
.spinner{width:42px;height:42px;border:4px solid var(--border);border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}
#loading-text{font-weight:600;color:var(--text2);font-size:14px}
@keyframes spin{to{transform:rotate(360deg)}}

.empty-list{padding:30px 16px;text-align:center;color:var(--text3);font-size:13px}

/* ─── v2: cadastre, risk, comparables, AI ─── */
.cadastre-row{display:flex;gap:6px;margin-bottom:14px}
.cadastre-row input{flex:1;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-family:inherit;font-size:12px;outline:none;color:var(--text)}
.cadastre-row input:focus{border-color:var(--blue)}
.cadastre-row .btn{flex:0 0 auto}
.risk-chips{display:flex;gap:6px;margin-bottom:10px}
.chip{font-size:12px;font-weight:700;padding:3px 11px;border-radius:14px}
.chip.green{background:var(--green-l);color:var(--green)}
.chip.yellow{background:var(--amber-l);color:var(--amber)}
.chip.red{background:var(--red-l);color:var(--red)}
.risk-item{display:flex;gap:9px;align-items:flex-start;font-size:13px;padding:7px 0;border-bottom:1px solid var(--border)}
.risk-item:last-child{border-bottom:0}
.rdot{width:9px;height:9px;border-radius:50%;flex-shrink:0;margin-top:5px}
.ri-text b{font-weight:600}
.comp-tbl{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}
.comp-tbl td{padding:5px 4px;border-bottom:1px solid var(--border);vertical-align:top}
.pos{font-weight:700;font-size:11px;padding:1px 7px;border-radius:8px;margin-left:4px}
.pos.hi{background:var(--amber-l);color:var(--amber)}
.pos.lo{background:var(--green-l);color:var(--green)}
.ai-exec{font-size:13px;line-height:1.6;color:var(--text);background:var(--slate-l);padding:11px;border-radius:9px}
.ai-sub{font-weight:700;font-size:12px;margin:11px 0 4px;color:var(--text2)}
.ai-list{margin:2px 0;padding-left:18px;font-size:13px}
.ai-list li{margin:4px 0;color:var(--text2)}
#btn-pdf{text-decoration:none}

/* ─── v3: identify, tabs, saved/TOP, invest score ─── */
#identify-box{display:flex;gap:6px;margin-bottom:10px}
#identify-box input{flex:1;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-family:inherit;font-size:12px;outline:none;color:var(--text)}
#identify-box input:focus{border-color:var(--blue)}
#identify-box button{background:var(--blue);color:#fff;border:0;border-radius:8px;font-family:inherit;font-weight:600;font-size:12px;padding:0 13px;cursor:pointer;flex:0 0 auto}
#identify-box button:hover{background:var(--blue-d)}
#mode-tabs{display:flex;background:var(--slate-l);border-radius:9px;padding:3px;margin-bottom:10px}
#mode-tabs button{flex:1;border:0;background:transparent;font-family:inherit;font-weight:600;font-size:12px;color:var(--text2);padding:6px;border-radius:7px;cursor:pointer}
#mode-tabs button.active{background:var(--panel);color:var(--blue);box-shadow:var(--shadow)}
.listing-card.mini{align-items:center}
.listing-card .rank{flex:0 0 22px;font-weight:800;color:var(--text3);font-size:14px;text-align:center}
.score-badge{flex:0 0 auto;font-weight:800;font-size:13px;padding:4px 9px;border-radius:8px;align-self:center}
.score-badge.green{background:var(--green-l);color:var(--green)}
.score-badge.amber{background:var(--amber-l);color:var(--amber)}
.score-badge.red{background:var(--red-l);color:var(--red)}
.invest-badge{margin-top:9px;font-size:12px;color:var(--text2);background:rgba(255,255,255,.55);padding:6px 10px;border-radius:8px;font-weight:500}
.invest-badge b{color:var(--text);font-weight:800}

/* ─── v4: official cadastre block ─── */
.official-cad{background:var(--green-l);border:1px solid #16a34a55;border-radius:9px;padding:10px 12px;margin-bottom:10px}
.oc-row{display:flex;justify-content:space-between;gap:10px;font-size:12px;padding:3px 0;border-bottom:1px solid #16a34a22}
.oc-row:last-of-type{border-bottom:0}
.oc-row span{color:var(--text2)}
.oc-row b{color:var(--text);text-align:right;font-weight:700}
.oc-src{font-size:10px;color:var(--text3);margin-top:6px}

/* ─── v10: nearby listings ─── */
.nearby-exact{background:var(--amber-l);color:var(--amber);font-weight:700;font-size:12px;padding:7px 10px;border-radius:8px;margin-bottom:8px}
.nearby-row{display:flex;gap:10px;align-items:flex-start;padding:7px 2px;border-bottom:1px solid var(--border);text-decoration:none;color:inherit}
.nearby-row:last-child{border-bottom:0}
.nearby-row:hover{background:var(--slate-l)}
.nb-dist{flex:0 0 auto;font-weight:700;font-size:11px;color:var(--blue);min-width:50px;padding-top:1px}
.nb-info{display:flex;flex-direction:column;min-width:0;flex:1}
.nb-title{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nb-sub{font-size:11px;color:var(--text2)}

/* ─── v9: target price calculator ─── */
.target-calc{margin-top:8px;background:var(--slate-l);border-radius:8px;padding:10px}
.target-calc label{font-size:11px;color:var(--text2);font-weight:600;display:block;margin-bottom:5px}
.tc-row{display:flex;align-items:center;gap:10px}
.tc-row input{width:130px;border:1px solid var(--border);border-radius:8px;padding:7px 9px;font-family:inherit;font-size:13px;outline:none;color:var(--text)}
.tc-row input:focus{border-color:var(--blue)}
#target-total{font-weight:800;font-size:15px;color:var(--blue)}

/* ─── v8: asset selector (land / apartment) ─── */
#asset-tabs{display:flex;gap:6px;margin-bottom:10px}
#asset-tabs button{flex:1;border:1px solid var(--border);background:var(--panel);font-family:inherit;font-weight:700;font-size:12.5px;color:var(--text2);padding:8px;border-radius:9px;cursor:pointer}
#asset-tabs button.active{background:var(--blue);color:#fff;border-color:var(--blue)}

/* ─── v7: paste-ad ─── */
.paste-toggle{background:none;border:0;color:var(--blue);font-family:inherit;font-size:12px;font-weight:600;cursor:pointer;padding:0 0 10px;text-align:left;display:block}
#paste-box{margin-bottom:10px}
#paste-box.hidden{display:none}
#paste-input{width:100%;min-height:92px;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-family:inherit;font-size:12px;line-height:1.5;outline:none;resize:vertical;box-sizing:border-box;margin-bottom:6px;color:var(--text)}
#paste-input:focus{border-color:var(--blue)}
#paste-analyze{width:100%}

/* ─── v6: toast ─── */
#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--text);color:#fff;padding:10px 18px;border-radius:10px;font-size:13px;font-weight:600;opacity:0;pointer-events:none;transition:.25s;z-index:3000;box-shadow:0 8px 24px rgba(0,0,0,.25);max-width:80%;text-align:center}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* ─── v12: collapsible panels, nearby-link arrow, mobile nav ─── */
.panel-toggle{position:absolute;top:50%;transform:translateY(-50%);z-index:600;width:22px;height:56px;display:grid;place-items:center;padding:0;cursor:pointer;background:var(--panel);border:1px solid var(--border);color:var(--text2);box-shadow:var(--shadow)}
.panel-toggle:hover{color:var(--blue);border-color:var(--blue)}
#toggle-sidebar{left:0;border-left:0;border-radius:0 10px 10px 0}
#toggle-report{right:0;border-right:0;border-radius:10px 0 0 10px}
.nb-arr{margin-left:auto;align-self:center;flex-shrink:0;color:var(--text3)}
.nearby-row:hover .nb-arr{color:var(--blue)}

#mobile-nav{display:none;position:fixed;left:0;right:0;bottom:0;height:56px;background:var(--panel);border-top:1px solid var(--border);box-shadow:0 -2px 12px rgba(15,23,42,.10);z-index:1800}
#mobile-nav button{flex:1;border:0;background:transparent;font-family:inherit;font-size:11px;font-weight:600;color:var(--text3);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer}
#mobile-nav button svg{width:20px;height:20px}
#mobile-nav button.active{color:var(--blue)}

/* ─── v15: building proposal drawings ─── */
.bp-draw{margin-top:12px}
.bp-cap{font-size:11px;font-weight:700;color:var(--text2);margin-bottom:5px;text-transform:uppercase;letter-spacing:.04em}
.bp-svg{width:100%;height:auto;background:#fff;border:1px solid var(--border);border-radius:8px;display:block}
.bp-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:10px 0 2px;font-size:12px;color:var(--text2)}
.bp-controls label{display:flex;align-items:center;gap:5px}
.bp-controls select,.bp-controls input{border:1px solid var(--border);border-radius:7px;padding:5px 7px;font-family:inherit;font-size:12px;color:var(--text);width:62px}
.bp-controls .btn{flex:0 0 auto;width:auto;padding:7px 12px}

/* ─── Responsive / mobile ─── */
@media(max-width:900px){
  #layout,#layout.report-open,#layout.sidebar-collapsed,#layout.sidebar-collapsed.report-open{display:block;grid-template-columns:none;position:relative}
  #sidebar,#map-wrap,#report{position:absolute;inset:0;width:100%;height:100%;border:0}
  #map-wrap{z-index:1}
  #sidebar{z-index:3;transform:translateX(-100%);transition:transform .28s ease}
  #report{z-index:4;transform:translateX(100%);transition:transform .28s ease}
  #report.report-empty{transform:translateX(100%)}
  #layout[data-mview="list"] #sidebar{transform:none}
  #layout[data-mview="report"] #report,#layout[data-mview="report"] #report.report-empty{transform:none}
  .panel-toggle{display:none}
  #mobile-nav{display:flex}
  #map-hint{bottom:72px}
  #listings{padding-bottom:70px}
  #report-content,.report-placeholder{padding-bottom:78px}
  .leaflet-bottom{bottom:56px}
}
@media(max-width:560px){
  #header{gap:8px;padding:0 12px}
  .module-tag{display:none}
  .ghost-btn span{display:none}
  .ghost-btn{padding:7px 9px}
}
