.housing-shell{margin:0 auto;max-width:1080px;padding:24px 20px 64px;display:flex;flex-direction:column;gap:20px}.housing-hero{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;align-items:flex-start;border-bottom:1px solid var(--line-strong);padding-bottom:20px}.housing-hero__copy{max-width:640px;display:flex;flex-direction:column;gap:8px}.housing-hero__title{font-family:var(--font-display);font-size:clamp(1.9rem,4vw,2.6rem);margin:0;color:var(--ink)}.housing-hero__subtitle{margin:0;color:var(--ink-2)}.housing-hero__actions{display:flex;flex-direction:column;gap:10px;align-items:flex-end}.housing-disclaimer{margin:0;font-size:.82rem;line-height:1.6;color:var(--ink-3);border-left:3px solid var(--line-strong);padding-left:10px}.housing-button{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:9px 18px;font-size:.92rem;font-weight:600;border:1px solid transparent;cursor:pointer;text-decoration:none}.housing-button--primary{background:var(--sec-accent-strong);color:#fff}.housing-button--ghost{background:var(--surface);border-color:var(--line-strong);color:var(--ink)}.housing-button:disabled{opacity:.55;cursor:not-allowed}@media (prefers-reduced-motion:no-preference){.housing-button{transition:transform var(--mo-dur-micro,.16s) var(--mo-ease-out,ease-out),background-color var(--mo-dur-micro,.16s) var(--mo-ease-out,ease-out),border-color var(--mo-dur-micro,.16s) var(--mo-ease-out,ease-out)}.housing-button:hover:not(:disabled){transform:translateY(-2px)}.housing-button:active:not(:disabled){transform:scale(.97)}}.housing-role-badge{display:inline-flex;align-items:center;border-radius:6px;padding:3px 9px;font-size:.75rem;font-weight:700;letter-spacing:.02em;color:#fff}.housing-role-badge,.housing-role-badge--owner{background:var(--ink-2)}.housing-role-badge--tenant_sublet{background:var(--accent-strong)}.housing-role-badge--agency{background:var(--sec-accent-strong)}.housing-chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line-strong);border-radius:999px;background:var(--surface);color:var(--ink-2);padding:2px 10px;font-size:.78rem}.housing-chip--ok{border-color:var(--success);color:var(--success-strong)}.housing-chip--stale{border-color:var(--warning);color:var(--warning-strong)}.housing-chip--new-poster{border-color:var(--sec-accent);color:var(--sec-accent-strong);font-weight:600}.housing-scam-bar{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--warning);border-radius:var(--radius);background:color-mix(in srgb,var(--warning) 9%,var(--surface));padding:12px 14px}.housing-scam-bar__icon{flex-shrink:0;color:var(--warning);margin-top:2px}.housing-scam-bar__text{margin:0;font-size:.86rem;line-height:1.6;color:var(--ink)}.housing-scam-bar__link{margin-left:6px;color:var(--sec-accent-strong);font-weight:600;text-decoration:none}.housing-filters{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow);padding:4px 16px 0}.housing-filters__summary{cursor:pointer;font-weight:700;padding:12px 0;color:var(--ink)}.housing-filters__form{padding-bottom:16px;display:flex;flex-direction:column;gap:12px}.housing-filters__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px 14px}.housing-filters__field{display:flex;flex-direction:column;gap:4px;font-size:.8rem;color:var(--ink-2)}.housing-filters__field input,.housing-filters__field select{border:1px solid var(--line-strong);border-radius:8px;padding:7px 9px;font-size:.88rem;background:var(--paper);color:var(--ink)}.housing-filters__toggles{display:flex;flex-wrap:wrap;gap:14px}.housing-filters__toggle,.housing-toggle{display:inline-flex;align-items:center;gap:6px;font-size:.86rem;color:var(--ink-2);cursor:pointer}.housing-filters__actions{display:flex;gap:10px}.housing-board-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.housing-card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow);overflow:hidden}@media (prefers-reduced-motion:no-preference){.housing-card{animation:housing-card-enter var(--mo-dur-enter,.42s) var(--mo-ease-out,ease-out) both;transition:transform var(--mo-dur-micro,.16s) var(--mo-ease-out,ease-out)}.housing-card:hover{transform:translateY(-3px)}@keyframes housing-card-enter{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}}.housing-card__link{display:flex;flex-direction:column;height:100%;color:inherit;text-decoration:none}.housing-card__media{position:relative;aspect-ratio:16/10;background:var(--surface-soft);display:flex;align-items:center;justify-content:center}.housing-card__image{object-fit:cover}.housing-card__media-placeholder{color:var(--ink-3);font-size:.85rem}.housing-card__media .housing-role-badge{position:absolute;top:10px;left:10px}.housing-card__body{display:flex;flex-direction:column;gap:8px;padding:14px 16px 16px}.housing-card__header{display:flex;justify-content:space-between;gap:10px;align-items:baseline}.housing-card__title{margin:0;font-size:1.02rem;line-height:1.4;color:var(--ink)}.housing-card__price{margin:0;font-weight:800;color:var(--sec-accent-strong);white-space:nowrap}.housing-card__meta{margin:0;display:flex;flex-wrap:wrap;gap:4px 12px;color:var(--ink-2);font-size:.82rem}.housing-card__chips{margin:0;display:flex;flex-wrap:wrap;gap:6px}.housing-card__relay{margin:0;font-size:.82rem;color:var(--warning-strong);font-weight:600}.housing-card__fees{margin:0;font-size:.8rem;color:var(--sec-accent-strong);border-top:1px dashed var(--line-strong);padding-top:8px}.housing-card__freshness{margin:0;display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.76rem;color:var(--ink-3)}.housing-board-deferred{border-top:1px dashed var(--line-strong);padding-top:14px;display:flex;flex-direction:column;gap:12px}.housing-board-deferred__title{margin:0;font-size:.9rem;color:var(--ink-3);font-weight:600}.housing-empty{border:1px dashed var(--line-strong);border-radius:var(--radius-lg);background:var(--surface);padding:44px 24px;text-align:center;display:flex;flex-direction:column;gap:10px;align-items:center}.housing-empty h2{margin:0;font-family:var(--font-display)}.housing-empty p{margin:0;color:var(--ink-2);max-width:460px}.housing-empty__actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.housing-detail{max-width:860px}.housing-rented-banner{border:1px solid var(--ink-2);border-radius:var(--radius);background:var(--surface-soft);color:var(--ink);font-weight:600;padding:12px 16px;text-align:center}.housing-detail__header{display:flex;flex-direction:column;gap:8px}.housing-detail__title-row{display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap}.housing-detail__title{margin:0;font-family:var(--font-display);font-size:clamp(1.5rem,3.4vw,2.1rem)}.housing-detail__price{margin:0;font-size:1.3rem;font-weight:800;color:var(--sec-accent-strong)}.housing-detail__badges{margin:0;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.housing-detail__freshness{margin:0;display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.8rem;color:var(--ink-3)}.housing-detail__review-note{margin:0;font-size:.82rem;color:var(--ink-2)}.housing-detail__review-note a{color:var(--sec-accent-strong);font-weight:600;text-decoration:none;margin-left:4px}.housing-section-title{margin:0 0 10px;font-size:1.05rem;color:var(--ink)}.housing-contact,.housing-fee-card,.housing-form-section,.housing-key-info,.housing-location-card,.housing-relay-timeline,.housing-report{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow);padding:16px 18px}.housing-key-info__grid{margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px 18px}.housing-key-info__row{display:flex;justify-content:space-between;gap:10px;border-bottom:1px dashed var(--line);padding-bottom:6px}.housing-key-info__row dt{color:var(--ink-2);font-size:.85rem}.housing-key-info__row dd{margin:0;font-weight:600;font-size:.9rem;text-align:right}.housing-key-info__row--pending dd{color:var(--warning-strong)}.housing-fee-card__summary{margin:0 0 6px;font-weight:700;color:var(--sec-accent-strong)}.housing-fee-card__gross,.housing-fee-card__note{margin:4px 0 0;font-size:.83rem;color:var(--ink-2)}.housing-relay-timeline__track{margin:0;padding:0;list-style:none;display:flex;gap:12px;flex-wrap:wrap}.housing-relay-timeline__track li{flex:1 1 140px;border-left:3px solid var(--sec-accent);padding-left:10px;display:flex;flex-direction:column;gap:2px}.housing-relay-timeline__track strong{font-size:.8rem;color:var(--ink-2)}.housing-relay-timeline__track span{font-size:1.05rem;font-weight:700}.housing-location-card__area{margin:0 0 10px;font-weight:700}.housing-location-card__bands{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}.housing-band{display:flex;justify-content:space-between;gap:8px;border:1px solid var(--line);border-radius:8px;padding:6px 10px;font-size:.83rem}.housing-band--walk strong{color:var(--success-strong)}.housing-band--bike strong{color:var(--warning-strong)}.housing-band--far{opacity:.72}.housing-location-card__osm,.housing-location-card__pending{margin:10px 0 0;font-size:.76rem;color:var(--ink-3)}.housing-contact__hint{margin:0 0 10px;color:var(--ink-2);font-size:.86rem}.housing-contact__error{margin:8px 0 0;color:var(--danger-strong);font-size:.84rem}.housing-contact__list{margin:0 0 12px;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}.housing-contact__list li{display:flex;align-items:center;gap:8px}.housing-contact__checklist{border-top:1px dashed var(--line-strong);padding-top:12px;display:flex;flex-direction:column;gap:8px}.housing-contact__checklist-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.housing-contact__checklist-head h3{margin:0;font-size:.95rem}.housing-contact__checklist ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px}.housing-contact__q-zh{display:block;font-weight:600}.housing-contact__q-it{display:block;color:var(--ink-3);font-size:.82rem}.housing-contact__redlines{border:1px solid var(--danger);border-radius:var(--radius);padding:10px 12px;background:color-mix(in srgb,var(--danger) 6%,var(--surface))}.housing-contact__redlines h4{margin:0 0 6px;color:var(--danger-strong);font-size:.88rem}.housing-contact__redlines ul{margin:0;padding-left:18px;font-size:.84rem;display:flex;flex-direction:column;gap:4px}.housing-report{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.housing-report__fee-entry{border:none;background:none;color:var(--sec-accent-strong);font-weight:700;font-size:.9rem;cursor:pointer;padding:0;text-decoration:underline}.housing-report__dialog{width:100%;border-top:1px dashed var(--line-strong);padding-top:12px;display:flex;flex-direction:column;gap:10px}.housing-report__reasons{border:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.housing-report__reasons legend{font-weight:700;margin-bottom:6px}.housing-radio,.housing-report__reason{display:inline-flex;align-items:center;gap:6px;font-size:.88rem;cursor:pointer}.housing-report__note{display:flex;flex-direction:column;gap:4px;font-size:.82rem;color:var(--ink-2)}.housing-field input,.housing-field select,.housing-field textarea,.housing-report__note textarea{border:1px solid var(--line-strong);border-radius:8px;padding:8px 10px;font-size:.9rem;background:var(--paper);color:var(--ink);font-family:inherit}.housing-report__actions{display:flex;gap:10px}.housing-report__feedback{margin:0;font-size:.84rem;color:var(--ink-2)}.housing-publish{max-width:780px}.housing-publish__header h1{margin:0 0 6px;font-family:var(--font-display)}.housing-publish__header p{margin:0;color:var(--ink-2)}.housing-publish-form{display:flex;flex-direction:column;gap:16px}.housing-field{display:flex;flex-direction:column;gap:5px;font-size:.85rem;color:var(--ink-2);margin-bottom:10px}.housing-field-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:4px 16px}.housing-radio-row{display:flex;flex-wrap:wrap;gap:8px 16px}.housing-deposit-row{display:flex;gap:12px;align-items:center}.housing-field-error{color:var(--danger-strong);font-size:.8rem}.housing-form-hint{margin:0 0 8px;font-size:.82rem;color:var(--ink-3)}.housing-fee-echo{margin:8px 0;padding:8px 12px;border-radius:8px;background:var(--surface-accent);font-size:.88rem}.housing-fees-detail{display:flex;flex-direction:column;gap:8px;margin-top:8px}.housing-image-list{margin:6px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px;font-size:.82rem}.housing-image-list li{display:flex;justify-content:space-between;gap:8px;align-items:center}.housing-image-list button{border:none;background:none;color:var(--danger-strong);cursor:pointer;font-size:.8rem}.housing-notice ul{margin:0 0 10px;padding-left:18px;display:flex;flex-direction:column;gap:4px;font-size:.88rem}.housing-notice__accept{font-weight:700;color:var(--ink)}.housing-form-error{margin:0;color:var(--danger-strong);font-weight:600}.housing-publish-form__actions{display:flex;gap:12px;align-items:center;color:var(--ink-3);font-size:.84rem}.housing-publish-success{border:1px solid var(--success);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--success) 7%,var(--surface));padding:28px 24px;display:flex;flex-direction:column;gap:12px}.housing-publish-success h2{margin:0}.housing-publish-success p{margin:0;color:var(--ink-2)}.housing-publish-success__actions{display:flex;gap:10px;flex-wrap:wrap}.housing-subscribe{display:flex;flex-direction:column;gap:4px;align-items:flex-end}.housing-subscribe__message{font-size:.78rem;color:var(--ink-3)}.housing-gallery{border-radius:var(--radius-lg);overflow:hidden}.housing-page-footer{border-top:1px solid var(--line);padding-top:14px;display:flex;flex-direction:column;gap:8px;font-size:.8rem;color:var(--ink-3)}.housing-page-footer a{color:var(--sec-accent-strong)}.housing-about-review{max-width:720px}.housing-about-review__header h1{margin:0 0 10px;font-family:var(--font-display)}.housing-about-review__lede{margin:0;font-size:1.02rem;line-height:1.7;border-left:4px solid var(--sec-accent);padding-left:12px}.housing-about-review__section{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);padding:16px 18px}.housing-about-review__section h2{margin:0 0 8px;font-size:1.02rem}.housing-about-review__section ol,.housing-about-review__section ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px;line-height:1.6}@media (max-width:720px){.housing-shell{padding:16px 14px 48px}.housing-hero__actions{align-items:stretch;width:100%}.housing-key-info__grid{grid-template-columns:1fr}}