:root{--control-height:38px;--component-gap:10px;--editor-width:610px;--editor-padding:16px}

/* Morning Search disclosure: one CSS-drawn chevron, independent of font glyphs. */
.morning-panel summary .chevron{position:relative;align-self:center;display:block;width:20px;height:34px;font-size:0;line-height:0;transform-origin:50% 50%}
.morning-panel summary .chevron::before{content:"";position:absolute;left:50%;top:50%;width:8px;height:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translate(-50%,-65%) rotate(45deg)}
.morning-panel[open] summary .chevron{transform:rotate(180deg)}

/* Combined statuses are represented by multiple dots, never a combined Tour & App state. */
.legend-options span:has(.legend-dot.tour-application){display:none}

/* Property list: app.js is the sole renderer and behavior owner. */
.property-controls{display:grid;grid-template-columns:minmax(0,1fr) 58px 58px;gap:6px;margin:8px 0 12px}
.property-controls select{min-width:0;height:32px;padding:5px 25px 5px 9px;border-radius:10px;background:#fff;color:var(--ink);font-size:9px;font-weight:700;cursor:pointer;text-align:left;text-align-last:left}
.property-controls .property-number-filter{padding-left:9px;padding-right:20px}
.property-item{position:relative;padding:10px 42px 10px 12px;cursor:pointer;touch-action:manipulation}
.property-card-primary{display:flex;align-items:center;gap:5px;min-width:0;font-size:10px;font-weight:800;line-height:1.3;white-space:nowrap;overflow:hidden}
.property-card-primary span{flex:0 0 auto}.property-card-primary i{font-style:normal;color:var(--muted);font-weight:500}
.property-card-address{margin-top:5px;color:var(--muted);font-size:10px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.property-card-status-dots{position:absolute;top:12px;right:12px;display:flex;gap:4px;align-items:center;pointer-events:none}
.property-card-status-dot{width:12px;height:12px;border:2px solid #fff;border-radius:50%;box-shadow:0 1px 4px rgba(18,47,56,.28)}
.property-card-status-dot.new{background:var(--new)}.property-card-status-dot.info{background:var(--info)}.property-card-status-dot.tour{background:var(--tour)}.property-card-status-dot.application{background:var(--application)}.property-card-status-dot.approved{background:var(--approved)}.property-card-status-dot.inactive{background:var(--inactive)}

/* Property Editor: semantic markup and this section are the only layout owners. */
body.modal-open{overflow:hidden}
.property-editor{position:relative;display:block;width:min(var(--editor-width),calc(100vw - 40px));max-width:100%;max-height:94vh;overflow-x:hidden;overflow-y:auto;background:#fff;border-radius:18px;padding:var(--editor-padding);box-shadow:var(--shadow)}
.property-editor>*{min-width:0;max-width:100%}
.property-editor__title{display:none}
.property-editor__close{position:absolute;top:10px;right:10px;z-index:4;width:38px;height:38px;display:grid;place-items:center;padding:0;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:rgba(13,38,45,.64);color:#fff;font-size:25px;line-height:1;backdrop-filter:blur(7px)}
.property-editor__media{width:calc(100% + (var(--editor-padding)*2));max-width:none;margin:calc(var(--editor-padding)*-1) calc(var(--editor-padding)*-1) var(--component-gap);overflow:hidden;border-radius:18px 18px 0 0;background:#eef4f3}
.property-editor__preview{width:100%;aspect-ratio:5/2.45;max-height:280px;display:grid;place-items:center;overflow:hidden;color:var(--muted);font-size:11px}
.property-editor__preview img{display:block;width:100%;height:100%;object-fit:cover}
.property-editor__image-actions{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#f7faf9}
.property-editor__image-actions .quiet-button{padding:8px 4px}
.property-editor label,.property-editor .control-label{font-size:10px;font-weight:700;color:var(--muted)}
.property-editor label input,.property-editor label textarea{margin-top:5px}
.property-editor__identity{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:10px;margin-bottom:var(--component-gap)}
.property-editor__decision-row{display:grid;grid-template-columns:110px minmax(0,1fr) 110px;gap:10px;align-items:end;margin-bottom:var(--component-gap)}
.property-editor__decision-row input{height:var(--control-height)}
.property-editor__status .status-fieldset{min-height:var(--control-height);padding:5px 7px;display:flex;align-items:center}
.property-editor__status .status-options{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;width:100%}
.property-editor__status .status-options span{width:100%;justify-content:center;padding:5px 4px;font-size:8px;line-height:1.1;white-space:nowrap}
.property-editor__favorite .favorite-check{height:var(--control-height);justify-content:center;padding:7px}
.property-editor__favorite .favorite-check span{display:none}
.property-editor__facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:end;width:100%;margin:0 0 var(--component-gap)}
.property-editor__facts>label{position:static;display:block;width:100%;min-width:0;margin:0;line-height:1.2}
.property-editor__facts>label>input{position:static;display:block;width:100%;min-width:0;height:var(--control-height);margin:5px 0 0}
.property-editor__notes{display:block;margin-bottom:var(--component-gap)}
.property-editor__notes textarea{display:block;width:100%;min-height:74px;resize:vertical}
.property-editor>#geocodeMessage{margin:0 0 var(--component-gap)}
.property-editor__actions{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:8px;align-items:center;margin:0}
.property-editor__actions button{min-height:36px}
.property-editor__actions button[type="submit"]:disabled{opacity:.5;cursor:not-allowed}

/* Listing import status and memory-photo picker. import.js owns behavior only. */
.import-status{display:none;grid-template-columns:24px minmax(0,1fr);gap:9px;align-items:start;margin:0 0 var(--component-gap);padding:11px 12px;border:1px solid transparent;border-radius:11px;font-size:11px;line-height:1.45}
.import-status.visible{display:grid}
.import-status-icon{font-size:15px;font-weight:800;line-height:1.15;text-align:center}
.import-status strong{display:block;margin-bottom:2px;color:inherit;font-size:11px}
.import-status.info{background:#edf7fb;border-color:#b9dbe8;color:#24566a}.import-status.success{background:#edf8f1;border-color:#b8ddc5;color:#24623d}.import-status.warning{background:#fff8e6;border-color:#ead28b;color:#6f5612}.import-status.error{background:#fceeee;border-color:#e4b8b8;color:#7b3030}
.imported-photo-picker{display:none;margin-top:10px;min-width:0;max-width:100%;overflow:hidden}
.imported-photo-picker.visible{display:block}
.imported-photo-heading{display:flex;justify-content:space-between;align-items:center;margin:0 0 8px;color:var(--muted);font-size:11px;font-weight:700}
.imported-photo-grid{display:grid;grid-auto-flow:column;grid-auto-columns:112px;gap:8px;max-width:100%;overflow-x:auto;overflow-y:hidden;padding:2px 2px 8px;scrollbar-width:thin}
.imported-photo{position:relative;width:112px;height:74px;padding:0;border:2px solid transparent;border-radius:10px;overflow:hidden;background:#eef4f3;cursor:pointer}
.imported-photo img{display:block;width:100%;height:100%;object-fit:cover}
.imported-photo:hover{border-color:#8db8b4}
.imported-photo.selected{border-color:var(--ocean);box-shadow:0 0 0 2px rgba(11,83,104,.14)}
.imported-photo.selected::after{content:"✓";position:absolute;right:5px;top:5px;width:20px;height:20px;display:grid;place-items:center;border-radius:50%;background:var(--ocean);color:#fff;font-size:12px;font-weight:800}

@media(max-width:680px){.modal{padding:0}.property-editor{width:100%;max-height:100vh;border-radius:0;padding:14px}.property-editor__media{width:calc(100% + 28px);max-width:none;margin:-14px -14px 10px;border-radius:0}.property-editor__identity{grid-template-columns:1fr}.property-editor__decision-row{grid-template-columns:1fr 1fr}.property-editor__status{grid-column:1/-1;grid-row:2}.property-editor__status .status-options{grid-template-columns:repeat(3,minmax(0,1fr))}.property-editor__facts{grid-template-columns:repeat(3,minmax(0,1fr))}.property-editor__actions{grid-template-columns:1fr 1fr}.property-editor__actions>span{display:none}.property-editor__actions .danger-button{grid-column:1/-1}}