:root{--brand: #0f766e;--brand-dark: #115e59;--bg: #f8fafc;--card: #ffffff;--border: #e2e8f0;--text: #0f172a;--muted: #64748b;--danger: #dc2626;--radius: 10px}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;overflow-x:clip;touch-action:manipulation}.app-header{display:flex;align-items:center;gap:12px;padding:12px 20px;background:var(--card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.app-header .brand{font-weight:700;color:var(--brand);font-size:18px;text-decoration:none}.app-header nav{display:flex;gap:8px;flex:1}.app-header nav a{padding:6px 12px;border-radius:8px;color:var(--muted);text-decoration:none;font-size:14px}.app-header nav a[aria-current=page]{background:#ecfdf5;color:var(--brand);font-weight:600}.app-header .who{font-size:13px;color:var(--muted)}@media(max-width:640px){.app-header{padding:10px 12px;gap:8px;flex-wrap:wrap}.app-header nav{gap:2px}.app-header nav a{padding:6px 8px;font-size:13px}.app-header .brand{font-size:16px}.app-header .who{display:none}}.guest-banner{display:flex;align-items:center;gap:10px;padding:8px 16px;background:#fef9c3;border-bottom:1px solid #fde68a;color:#713f12;font-size:13px}.guest-banner a{color:inherit;font-weight:600}.guest-banner .banner-dismiss{margin-left:auto;border:none;background:none;font-size:16px;cursor:pointer;color:inherit;padding:2px 6px;border-radius:6px}.guest-banner .banner-dismiss:hover{background:#00000014}.app-header .sign-out{border:1px solid var(--border);background:var(--card);padding:6px 12px;border-radius:8px;cursor:pointer;color:var(--muted);font-size:13px}main{max-width:860px;margin:24px auto;padding:0 16px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:16px}.auth-card{max-width:380px;margin:12vh auto;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:32px;text-align:center}.btn{display:inline-block;background:var(--brand);color:#fff;border:none;padding:10px 18px;border-radius:8px;font-size:15px;cursor:pointer;text-decoration:none}.btn:hover{background:var(--brand-dark)}.btn.ghost{background:transparent;color:var(--brand);border:1px solid var(--brand)}input[type=text]{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:15px}h1{font-size:22px;margin:0 0 4px}h2{font-size:17px;margin:0 0 12px}.dash-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}.dash-actions h1{margin:0}.dash-actions .btn{flex-shrink:0}.muted{color:var(--muted);font-size:13px}.error{color:var(--danger);font-size:14px;margin-top:12px}.empty{text-align:center;color:var(--muted);padding:32px 0}.prop-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border);text-decoration:none;color:inherit}.prop-row:last-child{border-bottom:none}.prop-row .thumb{width:56px;height:42px;border-radius:6px;background:#f1f5f9;object-fit:cover;flex-shrink:0}.prop-row>div{flex:1;min-width:0}.prop-row .title{font-weight:600}.prop-row .sub{font-size:13px;color:var(--muted)}.prop-row .title,.prop-row .sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prop-row .spacer{flex:1}.pill{font-size:12px;padding:2px 10px;border-radius:999px;background:#f1f5f9;color:var(--muted)}.tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}.tab{border:1px solid var(--border);background:var(--card);padding:5px 14px;border-radius:999px;cursor:pointer;font-size:13px;color:var(--muted)}.tab.active{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}.pill.potential{background:#f1f5f9;color:#475569}.pill.reviewing{background:#fffbeb;color:#b45309}.pill.shortlist{background:#eff6ff;color:#1d4ed8}.pill.rejected{background:#fef2f2;color:#b91c1c}.pill.purchased{background:#ecfdf5;color:#047857}.title-input{width:100%;font-size:20px;font-weight:600;border:1px solid transparent;border-radius:6px;padding:4px 6px;margin-left:-6px;background:transparent;color:var(--text)}.title-input:hover{border-color:var(--border)}.title-input:focus{outline:none;border-color:var(--brand);background:#fff}.status-pills{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}.status-pills .pill{cursor:pointer}.status-pills .pill.sel{background:var(--brand);color:#fff;font-weight:600;border-color:var(--brand)}.status-select{display:flex;align-items:center;gap:8px;margin-top:10px;color:var(--muted);font-size:13px}.status-select select{font:inherit;font-size:14px;padding:5px 10px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--text);cursor:pointer}.status-select select:focus{outline:2px solid var(--brand);outline-offset:1px;border-color:var(--brand)}.status-select select:disabled{opacity:.6;cursor:not-allowed}.source-row{margin-top:8px}.source-link{color:var(--brand);text-decoration:none;font-size:13px}.source-link:hover{text-decoration:underline}.er-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:7px 0;border-bottom:1px solid var(--border);font-size:14px;flex-wrap:wrap}.er-row:last-of-type{border-bottom:none}.er-row>span{color:var(--muted);flex-shrink:0}.er-amenities{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;flex:1 1 auto;min-width:0}.er-amenities .pill{white-space:nowrap}.note-form{display:flex;gap:8px;margin-bottom:14px}.card.notes-card{padding-top:14px}.notes-block{margin-top:18px;border-top:1px solid var(--border);padding-top:16px}.note-item{display:flex;gap:10px;padding:12px 0;border-bottom:1px solid var(--border)}.note-item:last-child{border-bottom:none}.note-avatar{width:32px;height:32px;border-radius:999px;color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex-shrink:0}.note-body{flex:1;min-width:0}.note-meta{display:flex;align-items:baseline;gap:8px;font-size:13px}.note-meta .muted{font-size:12px}.note-text{font-size:14px}.editor-badge{display:inline-block;background:#ecfdf5;color:var(--brand);font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px;margin-bottom:10px}.member-item{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--border);font-size:14px}.member-item:last-child{border-bottom:none}.member-item .spacer{flex:1}.remove-member{border:none;background:transparent;color:var(--danger);font-size:18px;cursor:pointer;line-height:1;padding:0 4px}.btn.danger{color:var(--danger);border-color:var(--danger)}.desc{color:var(--text);margin:14px 0 0}.title-view-wrap{display:flex;align-items:center;gap:8px}.title-view{font-size:20px;font-weight:600;line-height:1.3}.desc-wrap{display:flex;align-items:flex-start;gap:8px;margin:14px 0 0}.desc-wrap .desc{margin:0}.desc-input{width:100%;font:inherit;font-size:14px;line-height:1.5;padding:8px 10px;border:1px solid var(--brand);border-radius:8px;resize:vertical}.pen{border:none;background:transparent;color:var(--muted);cursor:pointer;padding:4px;border-radius:6px;display:inline-flex;align-items:center;flex-shrink:0;margin-top:2px}.pen:hover{color:var(--brand);background:#f1f5f9}.address-row{margin:12px 0 0}.address-link{color:var(--muted);text-decoration:underline;text-underline-offset:2px}.address-link:hover{color:var(--brand)}.gallery{display:flex;gap:8px;flex-wrap:wrap;max-width:340px}.gallery img{width:80px;height:60px;object-fit:cover;border-radius:6px;cursor:zoom-in;border:1px solid var(--border)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172ad9;display:flex;align-items:center;justify-content:center;z-index:100}.lightbox[hidden]{display:none}.lightbox img{max-width:92vw;max-height:88vh;border-radius:8px}.lightbox button{position:absolute;top:18px;right:24px;font-size:26px;background:transparent;border:none;color:#fff;cursor:pointer}.file-list{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}.file-link{border:1px solid var(--border);background:var(--card);border-radius:8px;padding:6px 12px;cursor:pointer;font-size:13px;color:var(--text)}.file-link:hover{border-color:var(--brand);color:var(--brand)}.stub{text-align:center;padding:48px 0;color:var(--muted)}.stub h2{color:var(--text)}#map-container{width:100%;height:calc(100vh - 53px);height:calc(100dvh - 53px);position:relative}#map-container .maplibregl-popup-content{border-radius:10px;padding:14px}#map-container .maplibregl-popup-content input[type=text]{font-size:14px}.layer-switcher{position:absolute;top:60px;left:10px;z-index:5;display:flex;flex-direction:column;gap:4px;background:#fff;border:1px solid var(--border);border-radius:10px;padding:6px;box-shadow:0 1px 4px #0f172a1f}.layer-switcher button{border:none;background:transparent;font:inherit;font-size:12px;color:var(--muted);padding:5px 10px;border-radius:7px;cursor:pointer;text-align:left;white-space:nowrap}.layer-switcher button:hover{background:#f1f5f9}.layer-switcher button.on{background:var(--brand);color:#fff;font-weight:600}.layer-switcher button .sp{display:none;width:10px;height:10px;border:2px solid #cbd5e1;border-top-color:var(--brand);border-radius:50%;animation:sk-spin .8s linear infinite;vertical-align:middle;margin-right:6px}.layer-switcher button.loading .sp{display:inline-block}.layer-switcher .layer-hint{font-size:11px;color:#b45309;max-width:170px;padding:6px 6px 2px;border-top:1px solid var(--border);margin-top:4px}.layer-switcher .layer-hint[hidden]{display:none}.layer-switcher .layer-legend{display:flex;flex-wrap:wrap;gap:3px;padding:6px 6px 2px;border-top:1px solid var(--border);margin-top:4px;max-width:170px}.layer-switcher .layer-legend[hidden]{display:none}.layer-switcher .layer-legend .lg{font-size:10px;line-height:1.5;color:#334155;padding:0 5px;border-radius:3px;border:1px solid rgba(0,0,0,.15)}.val-legend-card{position:absolute;top:10px;right:10px;z-index:5;background:#fff;border-radius:8px;border:1px solid var(--border);box-shadow:0 2px 8px #0f172a1f;padding:8px 10px;width:170px}.val-legend-card[hidden]{display:none}.val-legend-card .val-bar{height:10px;border-radius:4px;border:1px solid rgba(0,0,0,.2)}.val-legend-card .val-marks{position:relative;height:15px;margin-top:2px}.val-legend-card .val-marks span{position:absolute;top:0;font-size:9px;line-height:1.4;color:#334155;white-space:nowrap}.map-sheet{position:absolute;bottom:14px;left:50%;transform:translate(-50%);z-index:6;width:min(480px,calc(100% - 24px));display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--border);border-radius:12px;padding:10px 12px;box-shadow:0 4px 16px #0f172a2e;cursor:pointer}.map-sheet[hidden]{display:none}.map-sheet-thumb{width:64px;height:48px;border-radius:8px;object-fit:cover;flex-shrink:0;background:#f1f5f9}.map-sheet-body{flex:1;min-width:0}.map-sheet-body strong{display:block;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-sheet-body .muted{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-sheet .btn{flex-shrink:0}.sheet-chevron{color:var(--muted);font-size:22px;flex-shrink:0;line-height:1}.sheet-close{border:none;background:transparent;color:var(--muted);font-size:16px;cursor:pointer;padding:4px;flex-shrink:0}.sheet-close:hover{color:var(--text)}.zone-hover .maplibregl-popup-content{padding:8px 10px}.zone-tooltip{max-width:260px;font-size:12px}.zone-tooltip>div{display:flex;align-items:baseline;gap:6px;padding:2px 0}.zone-tooltip .zone-dot{width:8px;height:8px;border-radius:999px;flex-shrink:0;align-self:center}.zone-tooltip .muted{font-size:11px;margin-left:auto}.mini-map{height:190px;border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;margin-bottom:18px;box-shadow:0 1px 2px #0f172a0f}.mini-map .maplibregl-ctrl-attrib{font-size:9px}.mini-map .maplibregl-ctrl-top-right{top:8px;right:8px}
