:root{--bg: #FAF7F0;--surface: #FFFFFF;--surface-2: #F3EFE6;--line: #ECE7DB;--line-strong: #8E887A;--fg: #1D1D1F;--fg-2: #424245;--muted: #6A675F;--accent: #0E5A5F;--accent-fg: #FFFFFF;--accent-soft: #D9EBEA;--focus: #0E5A5F;--req-bg: #FFF0B3;--req-line: #A47C00;--req-fg: #4A3800;--occ-bg: #DED7C7;--occ-fg: #3A342A;--free-bg: #E1F2E8;--free-fg: #17603F;--off-bg: #F3EFE6;--off-fg: #6A675F;--err: #B3261E;--err-bg: #FCEBE9;--ok: #17603F;--aff-bg: #1D1D1F;--aff-fg: #FFFFFF;--r-card: 22px;--r-ctl: 14px;--r-btn: 999px;--r-pill: 999px;--shadow: 0 1px 2px rgba(60, 50, 30, .06), 0 10px 28px rgba(60, 50, 30, .07);--font: "Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:light}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;min-height:100%;background:var(--bg)}body{color:var(--fg);font-family:var(--font);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}.shell{max-width:560px;margin:0 auto;padding:calc(16px + env(safe-area-inset-top)) 16px calc(24px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px}.dashboard{max-width:1080px;gap:16px}@media(min-width:700px){.dashboard{padding:calc(24px + env(safe-area-inset-top)) 32px calc(32px + env(safe-area-inset-bottom));gap:24px}}.housing-view:not([hidden]){display:contents}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}h1{margin:0;font-size:30px;line-height:1.12;font-weight:700;letter-spacing:-.02em}h2{margin:0 0 8px;font-size:20px;line-height:1.2;font-weight:700}h3{margin:16px 0 4px;font-size:15px;font-weight:700}p{margin:0}.sub{margin:0;color:var(--muted);font-size:13px}.mono{font-family:var(--font);font-variant-numeric:tabular-nums}.card{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--shadow);padding:16px;display:grid;gap:12px}.card>h2{margin:0}.card ul{list-style:none;margin:0;padding:0;display:grid}.action,.text-action{font:inherit;font-weight:600;cursor:pointer;border-radius:var(--r-btn)}.action{min-height:44px;padding:8px 18px;border:1px solid var(--line-strong);background:var(--surface);color:var(--fg);transition:background .15s ease}.action:hover{background:var(--surface-2)}.action.primary{min-height:48px;border-color:var(--accent);background:var(--accent);color:var(--accent-fg)}.action.primary:hover{background:#0b4b4f}.text-action{min-height:44px;padding:6px 8px;border:0;background:transparent;color:var(--accent);text-decoration:underline;text-underline-offset:3px}.text-action:hover{background:var(--accent-soft)}:is(.action,.text-action):disabled{opacity:.55;cursor:not-allowed}.form-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px}:is(button,input,select,a,[role=button],[tabindex]):focus-visible{outline:2px solid var(--focus);outline-offset:2px}label{display:grid;gap:6px;font-size:14px;font-weight:600;color:var(--fg-2)}input:not([type=checkbox]),select{min-height:48px;width:100%;border:1px solid var(--line-strong);border-radius:var(--r-ctl);background:var(--surface);color:var(--fg);font:inherit;font-size:16px;font-weight:400;padding:10px 14px}input[type=checkbox]{width:22px;height:22px;margin:0;accent-color:var(--accent)}form{display:grid;gap:12px}[role=alert],.error{margin:0;color:var(--err);background:var(--err-bg);border-radius:var(--r-ctl);padding:10px 12px}.notice{margin:0;color:var(--ok);font-weight:600}.card [role=status]{color:var(--fg-2);font-size:14px}.topbar,.wordmark,.page-heading{display:flex;align-items:center;gap:12px}.topbar{justify-content:space-between}.wordmark{font-size:19px;font-weight:700}.wordmark img{border-radius:8px}.account-actions{display:flex;gap:6px;align-items:center}.page-heading{align-items:flex-start;flex-direction:column}.sign-in{min-height:100svh;justify-content:center;max-width:460px}.auth-card{padding:16px;gap:16px}.auth-card .scene{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:var(--r-ctl);background:var(--surface-2);display:block}.auth-card .mark{display:block;border-radius:12px}.password-settings{width:min(100%,460px);align-self:center}.property-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:16px}.property{display:flex;flex-direction:column;gap:12px}.property h2{margin:2px 0 0}.property-code{color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}.metrics div{display:flex;flex-direction:column-reverse;gap:2px;padding:12px;background:var(--surface-2);border-radius:var(--r-ctl)}.metrics div.has-requests{background:var(--req-bg);box-shadow:inset 0 0 0 1px var(--req-line);color:var(--req-fg)}.metrics div.has-requests dt{color:var(--req-fg)}.metrics dt{color:var(--muted);font-size:13px}.metrics dd{margin:0;font-size:24px;line-height:1.1;font-weight:700;font-variant-numeric:tabular-nums}.property-link{display:flex;justify-content:space-between;align-items:center;margin-top:auto;width:100%}.filters{display:flex;flex-wrap:wrap;gap:2px;align-self:flex-start;padding:3px;background:var(--surface-2);border-radius:var(--r-btn)}.filters button{min-height:40px;padding:6px 14px;border:0;border-radius:var(--r-btn);background:transparent;color:var(--fg-2);font:inherit;font-size:14px;font-weight:600;cursor:pointer}.filters button[aria-pressed=true]{background:var(--surface);color:var(--fg);box-shadow:0 1px 2px #3c321e1f}.legend{display:flex;flex-wrap:wrap;gap:8px 14px;color:var(--fg-2);margin:0;padding:0;list-style:none;font-size:13px}.legend li{display:flex;align-items:center;gap:6px}.unit-group h2{margin:8px 0;color:var(--muted);font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.unit-grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr;gap:8px}@media(min-width:700px){.unit-grid{grid-template-columns:1fr 1fr}}.unit-card{display:grid;grid-template-columns:minmax(52px,auto) 1fr auto auto auto;align-items:center;gap:4px 10px;min-height:60px;padding:8px 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-ctl);box-shadow:var(--shadow)}.unit-card>strong{grid-column:1;font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.unit-place{grid-column:2;color:var(--muted);font-size:13px}.unit-card .affordable-badge{grid-column:3;grid-row:1}.unit-meta{grid-column:4;grid-row:1;display:flex;justify-content:flex-end}.unit-open,.unit-select{grid-column:5;grid-row:1;justify-self:end}.unit-select{display:grid;place-items:center;min-width:44px;min-height:44px}.request-label{grid-column:1 / -1;margin:0;color:var(--req-fg);font-size:15px;font-weight:600;display:flex;flex-wrap:wrap;align-items:center;gap:2px 10px}.request-origin{color:var(--req-fg);font-weight:400;font-size:13px}.unit-card.needs-action{background:var(--req-bg);border-color:var(--req-line);box-shadow:none;color:var(--req-fg)}.unit-card.needs-action .unit-place{color:var(--req-fg)}.unit-card.focused{outline:2px solid var(--focus);outline-offset:2px}.status{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:var(--r-pill);font-size:12px;font-weight:700;white-space:nowrap;background:var(--off-bg);color:var(--off-fg)}.status.free{background:var(--free-bg);color:var(--free-fg)}.status.occupied{background:var(--occ-bg);color:var(--occ-fg)}.status.action{background:var(--req-bg);color:var(--req-fg);border:1px solid var(--req-line)}.affordable-badge{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 3px;border-radius:6px;background:var(--aff-bg);color:var(--aff-fg);font-size:11px;font-weight:700}.site-plan{display:grid;gap:10px}.site-plan-scroll{overflow:auto;border-radius:var(--r-card);background:var(--surface);box-shadow:var(--shadow);-webkit-overflow-scrolling:touch}.site-plan svg{display:block;width:100%;min-width:880px;height:auto}.site-plan svg :is(polyline,polygon,rect,circle,line,path){vector-effect:none}.sp-loop{fill:none;stroke:var(--surface-2);stroke-width:22;stroke-linejoin:round;stroke-linecap:round}.sp-road,.sp-stall{fill:none;stroke:var(--line);stroke-width:1}.sp-dash{fill:none;stroke:var(--line);stroke-width:.8;stroke-dasharray:6 6}.sp-walk{fill:none;stroke:var(--line);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.sp-deck,.sp-pool,.sp-landmark{fill:var(--surface-2);stroke:var(--line);stroke-width:.8}.sp-slab{fill:var(--surface-2);stroke:none}.sp-slab-edge{fill:none;stroke:var(--line-strong);stroke-width:1}.sp-slab-cut{fill:var(--surface);stroke:none}.sp-tree{fill:var(--surface-2);stroke:none}.sp-building{fill:none;stroke:var(--line-strong);stroke-width:1;pointer-events:none}.sp-div{stroke:var(--line-strong);stroke-width:.5;pointer-events:none}.sp-upper{fill:none;stroke:var(--fg-2);stroke-width:.8;stroke-dasharray:3 2;pointer-events:none}.site-plan svg text{font-family:var(--font);text-anchor:middle;dominant-baseline:central;pointer-events:none}.sp-label,.sp-context,.sp-floor-label,text.sp-compass{fill:var(--muted)}circle.sp-tag{fill:var(--surface);stroke:var(--line-strong);stroke-width:.8}text.sp-tag{fill:var(--fg);font-weight:700}:is(circle,polygon).sp-compass{fill:none;stroke:var(--line-strong);stroke-width:.7}polygon.sp-compass{fill:var(--muted);stroke:none}.sp-unit :is(rect,polygon){fill:var(--off-bg);stroke:var(--line-strong);stroke-width:.6}.sp-unit text{fill:var(--fg);font-weight:600;font-variant-numeric:tabular-nums}.sp-unit[role=button]{cursor:pointer}.sp-unit[data-state=free] :is(rect,polygon){fill:var(--free-bg);stroke:var(--free-fg)}.sp-unit[data-state=occupied] :is(rect,polygon){fill:var(--occ-bg);stroke:var(--fg)}.sp-unit[data-state=action] :is(rect,polygon){fill:var(--req-bg);stroke:var(--req-line);stroke-width:2.5}.sp-unit[data-state=unusable] :is(rect,polygon){fill:var(--off-bg);stroke:var(--line-strong);stroke-dasharray:2 2}.sp-unit[data-state=unknown] text{fill:var(--muted)}.sp-unit[data-state=free] text{fill:var(--free-fg)}.sp-unit[data-state=occupied] text{fill:var(--occ-fg)}.sp-unit[data-state=action] text{fill:var(--req-fg)}.sp-unit.selected :is(rect,polygon),.sp-unit:focus-visible :is(rect,polygon){stroke:var(--focus);stroke-width:3;stroke-dasharray:none}.sp-unit:focus{outline:none}.floor-count{color:var(--req-fg);background:var(--req-bg);border-radius:var(--r-pill);padding:0 6px;margin-left:2px}.sp-swatch{display:inline-block;width:16px;height:16px;border-radius:5px;border:1px solid var(--line-strong);background:var(--off-bg)}.sp-swatch[data-state=free]{background:var(--free-bg);border-color:var(--free-fg)}.sp-swatch[data-state=occupied]{background:var(--occ-bg);border-color:var(--fg)}.sp-swatch[data-state=action]{background:var(--req-bg);border:2px solid var(--req-line)}.sp-swatch[data-state=unusable]{border-style:dashed}.sp-swatch.upper{background:transparent;border-style:dashed;border-color:var(--fg-2)}.checkout-review li,.orders li,.unit-panel li{display:grid;gap:6px;padding:10px 0;border-top:1px solid var(--line)}.checkout-review li:first-child,.unit-panel li:first-child{border-top:0}.checkout-review li{grid-template-columns:1fr auto;align-items:center}.orders article{display:grid;gap:8px}.orders article li{padding:12px;border:1px solid var(--line);border-radius:var(--r-ctl)}.orders ul{gap:8px}.orders>ul li{border:0;padding:4px 0}.orders>ul label{display:flex;align-items:center;gap:10px;min-height:44px;font-weight:400;font-size:16px;color:var(--fg)}.access li{display:grid;gap:8px;padding:12px 0;border-top:1px solid var(--line)}.access li:first-child{border-top:0}.access li select{min-width:150px}.invite-link{display:grid;gap:10px;padding:12px;border-radius:var(--r-ctl);background:var(--accent-soft)}.unit-panel header{display:flex;align-items:center;justify-content:space-between;gap:12px}.unit-panel h2{margin:0}.unit-panel .warnings{background:var(--req-bg);border:1px solid var(--req-line);border-radius:var(--r-ctl);padding:10px 12px;color:var(--req-fg);font-weight:600}@media(prefers-reduced-motion:reduce){.action{transition:none}}
