*{box-sizing:border-box}
body{margin:0;font-family:system-ui,Segoe UI,Roboto,sans-serif;background:#f4f6f5;color:#1d2a24}
.banner{background:#ffcf33;text-align:center;padding:6px 10px;font-weight:600;font-size:13px}
header{background:#0f5132;color:#fff;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding:12px 18px;gap:12px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:#fff;min-width:0}
.brand-logo{width:48px;height:48px;border-radius:8px;object-fit:cover;border:1px solid #d4af3744;flex-shrink:0;background:#0a3d26}
.brand-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.brand-name{font-size:20px;letter-spacing:.4px;line-height:1.15}.brand-name b{color:#d4af37}
.brand-tag{font-size:11px;font-weight:500;color:#c8e0d2;letter-spacing:.2px;line-height:1.25;opacity:.95}
nav{display:flex;flex-wrap:wrap;align-items:center;gap:4px 0}
nav a{color:#fff;margin-left:14px;text-decoration:none;font-weight:500;font-size:14px}
nav a:hover{color:#d4af37}
nav a.nav-primary{background:#d4af37;color:#0f5132;padding:6px 12px;border-radius:16px;font-weight:700;margin-left:8px}
nav a.nav-primary:hover{background:#e8c968;color:#0a3d26}
nav a.nav-muted{color:#9bb8a8;font-weight:400;font-size:12px;opacity:.85}
nav a.nav-muted:hover{color:#d4af37;opacity:1}
main{max-width:1100px;margin:20px auto;padding:0 14px}
footer{text-align:center;color:#789;padding:22px 14px 28px;font-size:13px}
.foot-tag{margin-top:4px;font-size:12px;color:#6a8578}
.card{background:#fff;border-radius:10px;padding:18px;box-shadow:0 1px 4px #0001;margin-bottom:16px}
.card.hero{border-top:3px solid #0f5132}
h2{margin-top:0;color:#0f5132}
.lead{color:#556;margin:0 0 14px;font-size:14px;line-height:1.45}
input,select{padding:9px;border:1px solid #ccd;border-radius:6px;font-size:15px;width:100%}
label{font-size:13px;color:#556;display:block;margin-bottom:8px}
button{background:#0f5132;color:#fff;border:0;padding:10px 18px;border-radius:6px;font-size:15px;cursor:pointer}
button:disabled{background:#aab}
.demo-hint{margin-top:12px;padding:10px 12px;background:#eef5f1;border-radius:8px;font-size:13px;color:#345}
.demo-hint b{color:#0f5132}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.plots{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.own-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:14px 0 4px}
.own-item{background:#f7faf8;border:1px solid #e3ece7;border-radius:8px;padding:10px 12px}
.own-item .k{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:#678;margin-bottom:3px}
.own-item .v{font-size:15px;font-weight:600;color:#1d2a24;word-break:break-word}
.own-item .v.owner{color:#0f5132;font-size:16px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-top:14px}
.stat{background:#eef5f1;border-radius:8px;padding:12px 14px}
.stat span{display:block;font-size:12px;color:#567;margin-bottom:4px}
.stat b{display:block;font-size:20px;color:#0f5132;line-height:1.2}
.stat.paid b{color:#1a7a45}
.stat.remain b{color:#0f5132}
.stat.red{background:#fdeeee}.stat.red b{color:#b02a37}
.stat .sub{display:block;font-size:12px;color:#789;margin-top:4px;font-weight:500}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{padding:8px 7px;border-bottom:1px solid #eee;text-align:left}
th{font-size:12px;text-transform:uppercase;letter-spacing:.3px;color:#567;background:#f7faf8}
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tag{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;background:#eee;margin:2px}
.Available,.Paid{background:#d1f0dc}.Reserved,.Partially{background:#fff0c2}.Sold{background:#dde3ff}.Draft{background:#eee}.od,.Not{background:#f8d7da}
.err{color:#b02a37}.ok{background:#d1f0dc;padding:16px;border-radius:8px}.ph{border:2px dashed #d4af37;padding:12px;border-radius:8px;background:#fffbea}
.section-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px}
.section-head h2{margin:0}
.map-next{border:1px dashed #9bb8a8;background:#f7faf8;color:#456}
.map-next h2{color:#567;font-size:16px}
@media (max-width:600px){
  header{padding:10px 12px}
  .brand-logo{width:40px;height:40px}
  .brand-name{font-size:17px}
  .brand-tag{font-size:10px}
  nav a{margin-left:10px;font-size:13px}
  nav a.nav-primary{margin-left:0;margin-right:4px}
  .stats{grid-template-columns:1fr 1fr}
  .stat b{font-size:17px}
  .own-grid{grid-template-columns:1fr 1fr}
}
@media print{.banner,header,footer,nav,.noprint{display:none!important}.card{box-shadow:none}body{background:#fff}tr{break-inside:avoid}}
.maphead{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:center}.legend{font-size:13px}.lg{display:inline-block;width:12px;height:12px;border:1px solid #555;margin:0 3px 0 8px;vertical-align:middle}
.lg.Available{background:#3cb371}.lg.Reserved{background:#f2b632}.lg.Sold{background:repeating-linear-gradient(45deg,#c9cdd1 0 3px,#8a9096 3px 5px)}.lg.Unknown{background:#fff}
#mw{position:relative;margin-top:8px}#ms{width:100%;height:72vh;background:#fafbf9;border:1px solid #dde;border-radius:8px;touch-action:none;cursor:grab;display:block}
#ms .bg polyline{fill:none;stroke:#9aa;stroke-width:8;vector-effect:non-scaling-stroke}#ms .bg polyline{stroke-width:.6}
#ms polygon{stroke:#333;stroke-width:.5;vector-effect:non-scaling-stroke;fill:#fff;cursor:pointer}#ms polygon.Available{fill:#3cb371}#ms polygon.Reserved{fill:#f2b632}#ms polygon.Sold{fill:url(#hatch)}
#ms polygon.sel{stroke:#d00;stroke-width:3}#ms .nums text,#ms .st text{display:none;font-size:70px;text-anchor:middle;dominant-baseline:middle;pointer-events:none;fill:#123}#ms .st text{font-size:90px;fill:#555}
#ms.near .nums text,#ms.near .st text{display:block}
.mapinfo{position:absolute;right:10px;top:10px;background:#fff;border-radius:8px;box-shadow:0 2px 10px #0003;padding:12px 14px;max-width:290px;font-size:14px;line-height:1.5}.mapinfo .x{position:absolute;right:6px;top:4px;background:none;color:#555;padding:0 6px;font-size:18px}
@media(max-width:600px){.mapinfo{position:fixed;top:auto;bottom:8px;left:8px;right:8px;max-width:none;z-index:5}#ms{height:65vh}}
