/* サイト内検索（T-253）。色・角丸・影は towers.css のトークンを使う。 */
.search-form{display:grid;gap:24px;margin-top:34px;padding:24px;border:1px solid var(--rule-2);border-radius:0;background:var(--ground-2)}
.search-form__query{display:grid;gap:8px}
.search-form__query label{color:var(--text-2);font-size:.84rem;letter-spacing:.06em}
.search-form__query input{min-height:48px;padding:10px 14px;border:1px solid var(--rule-2);border-radius:0;background:var(--ground);font:inherit;font-size:1rem}
.search-map{min-width:0;border-block:1px solid var(--rule-2)}
.search-map[open]{padding-bottom:16px}
.search-map>summary{min-height:48px;padding-block:13px;font-weight:600;cursor:pointer}
.search-map>summary small{margin-left:.8em;color:var(--text-3);font-size:.76rem;font-weight:400}
.search-map__controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:2px 0 12px}
.search-map__controls button{min-height:42px;padding:0 14px;border:1px solid var(--rule);background:var(--ground);color:var(--text);font:inherit;font-size:.82rem;cursor:pointer}
.search-map__controls button:first-child{border-color:var(--navy);background:var(--navy);color:#fff}
.search-map__controls button:disabled{border-color:var(--rule);background:var(--ground-2);color:var(--text-3);cursor:not-allowed}
.search-map__controls .note{margin:0 0 0 auto}
.search-map__figure{margin:0}
.search-map__canvas{width:100%;height:min(64vh,620px);min-height:360px;border:1px solid var(--rule);background:var(--ground)}
.search-map__figure figcaption{margin-top:8px;color:var(--text-2);font-size:.8rem;line-height:1.7}
.search-map__canvas .leaflet-tile-pane{filter:grayscale(1)}
.search-map-popup{min-width:190px;line-height:1.6}
.search-map-popup img{display:block;width:100%;height:120px;margin-bottom:8px;object-fit:cover}
.search-map-popup strong,.search-map-popup span{display:block}
.search-map-popup span{color:#555;font-size:.78rem}
.search-areas legend{padding:0;color:var(--text-2);font-size:.84rem;letter-spacing:.06em}
.search-areas{min-width:0;margin:0;padding:0;border:0}
.search-rooms{min-width:0;border-block:1px solid var(--rule-2)}
.search-rooms[open]{padding-bottom:16px}
.search-rooms>summary{min-height:48px;padding-block:13px;font-weight:600;cursor:pointer}
.search-rooms>summary small{margin-left:.8em;color:var(--text-3);font-size:.76rem;font-weight:400}
.search-areas .note,.search-rooms .note{margin:8px 0 0}
.search-regions{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:4px 18px;margin-top:10px}
.search-regions summary{min-height:44px;padding-block:10px;font-weight:600;cursor:pointer}
.search-regions summary small,.search-results__rooms{margin-left:.6em;color:var(--text-3);font-size:.76rem;font-weight:400}
.search-regions details[open]{grid-column:1/-1;padding-bottom:8px;border-bottom:1px solid var(--rule)}
.search-regions__list{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:0 12px}
.search-regions label{display:flex;align-items:center;gap:10px;min-height:36px;padding:2px 6px;cursor:pointer}
.search-regions label:hover{background:var(--ground)}
.search-regions input{width:18px;height:18px;min-height:0;flex:none}
.search-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px 18px;margin-top:12px}
.search-field{display:grid;gap:6px;color:var(--text-2);font-size:.84rem}
.search-range{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:6px 8px;color:var(--text-2);font-size:.84rem}
.search-range__label{grid-column:1/-1}
.search-range__label small{margin-left:.6em;color:var(--text-3);font-size:.74rem}
.search-layouts{margin-top:14px;border-top:1px solid var(--rule)}
.search-layouts>summary{min-height:44px;padding-block:11px;color:var(--text-2);font-size:.84rem;cursor:pointer}
.search-layouts>summary small{margin-left:.8em;color:var(--text-3);font-size:.76rem}
.search-layouts__list{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:0 12px}
.search-layouts label{display:flex;align-items:center;gap:8px;min-height:36px;padding:2px 6px;cursor:pointer}
.search-layouts input{width:18px;height:18px;min-height:0;flex:none}
.search-fields input,.search-fields select{width:100%;min-width:0;min-height:44px;box-sizing:border-box;padding:8px 12px;border:1px solid var(--rule-2);border-radius:0;background:var(--ground);font:inherit;font-size:1rem}
.search-errors{padding:14px 18px;border:2px solid currentColor}
.search-errors p{margin:0 0 6px;font-weight:600}
.search-errors ul{margin:0}
h2 .search-results__rooms{color:inherit;font-size:.9rem;opacity:.82}
.search-hits{display:grid;gap:28px}
.search-hit{display:grid;grid-template-columns:minmax(0,230px) minmax(0,1fr);gap:22px;align-items:start;padding-top:28px;border-top:1px solid var(--rule)}
.search-hit .bcards{grid-template-columns:1fr}
.search-hit__rooms{min-width:0}
.search-hit__rooms h3{margin:0 0 10px;font-size:.95rem}
.search-rooms-table tbody th{width:auto}
.search-rooms-table th,.search-rooms-table td{padding-right:12px;white-space:nowrap}
.search-rooms-table tbody th,.search-rooms-table tbody td{padding-top:8px;padding-bottom:8px;vertical-align:middle}
/* 行内の操作（比較・保存）は同じ形の小さなボタンを横に並べる（T-537）。 */
.search-rooms-table .sr-act{text-align:right}
.search-rooms-table .sr-act .compare-widget{display:inline-flex;margin:0;vertical-align:middle}
.search-rooms-table .sr-act .favorite-form{display:inline-block;margin:0 0 0 6px;vertical-align:middle}
.search-rooms-table .sr-act button{min-height:30px;padding:0 10px;border:1px solid var(--rule-2);border-radius:0;background:var(--ground);color:var(--text);font:inherit;font-size:.76rem;line-height:1;white-space:nowrap;cursor:pointer}
.search-rooms-table .sr-act button[aria-pressed="true"]{border-color:var(--navy);background:var(--navy);color:#fff}
.search-rooms-table .sr-act button:disabled{color:var(--text-3);cursor:not-allowed}
.search-rooms-table .compare-widget__note{display:none}
/* 文言は compare.js が「比較に追加／比較から外す」に書き換える。行内では短く見せる（読み上げは元の文言）。 */
.search-rooms-table .compare-widget__button{font-size:0!important}
.search-rooms-table .compare-widget__button::before{content:"比較";font-size:.76rem}
.search-rooms-table .compare-widget__button[aria-pressed="true"]::before{content:"比較中"}
.search-rooms-table td p{margin:0;font-size:.8rem}
.search-rooms-table .sr-kind--sale{color:var(--shu)}
.search-rooms-table .sr-kind--rent{color:var(--ai)}
.search-hit__more{margin-top:10px}
.search-hit__more summary{min-height:44px;padding-block:10px;color:var(--text-2);font-size:.88rem;cursor:pointer}
.search-form__actions{display:flex;flex-wrap:wrap;align-items:center;gap:18px}
.search-form__actions button{min-height:48px;padding:12px 28px;border:1px solid var(--navy);border-radius:0;background:var(--navy);color:#fff;font:inherit;font-size:.95rem;letter-spacing:.06em;cursor:pointer}
.search-form__actions button:hover{background:var(--text)}
.search-pager{display:flex;flex-wrap:wrap;align-items:center;gap:20px;margin-top:28px;padding-top:18px;border-top:1px solid var(--rule)}
@media (max-width:640px){
  /* スマホは条件欄を詰める（T-535）。範囲は見出しを左に置いて 1 行、区と間取りは 3 列。 */
  .search-form{gap:14px;margin-top:20px;padding:12px}
  .search-form__query input{min-height:44px}
  .search-map>summary small{display:block;margin:2px 0 0}
  .search-map__controls button{flex:1 1 calc(50% - 4px);padding-inline:8px}
  .search-map__controls .note{flex-basis:100%;margin:2px 0 0}
  .search-map__canvas{height:56vh;min-height:320px}
  .search-areas .note,.search-rooms .note{font-size:.74rem;line-height:1.5}
  .search-regions{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 6px;margin-top:4px}
  .search-regions summary{min-height:38px;padding-block:8px;font-size:.84rem;line-height:1.3}
  .search-regions summary small{margin-left:.3em;font-size:.68rem;white-space:nowrap}
  .search-regions__list,.search-layouts__list{grid-template-columns:repeat(3,minmax(0,1fr));gap:0 4px}
  .search-regions label,.search-layouts label{gap:6px;min-width:0;min-height:32px;padding:2px;font-size:.82rem;line-height:1.3;overflow-wrap:anywhere}
  .search-regions input,.search-layouts input{width:16px;height:16px}
  .search-rooms>summary{min-height:44px;padding-block:11px}
  .search-rooms>summary small{display:block;margin:2px 0 0}
  .search-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px;margin-top:8px}
  .search-field{gap:3px;font-size:.78rem}
  .search-fields input,.search-fields select{min-height:40px;padding:6px 8px;font-size:.95rem}
  .search-range{grid-column:1/-1;grid-template-columns:7.4em minmax(0,1fr) auto minmax(0,1fr);gap:6px;font-size:.78rem}
  .search-range__label{grid-column:auto;line-height:1.3}
  .search-range__label small{display:block;margin:0;font-size:.68rem}
  .search-range--single{grid-template-columns:7.4em minmax(0,1fr) auto}
  .search-layouts{margin-top:8px}
  .search-form__actions{gap:12px}
  .search-form__actions button{min-height:44px;padding:10px 20px}
  .search-hit{grid-template-columns:1fr;gap:14px}
  .search-form__actions button{width:100%}
}
/* スマホの住戸表（T-535・T-537）。共通の縦積み（.t-stack、1 住戸 6〜7 段）は使わず 1 住戸 2 行。
   列幅を固定して、行が変わっても階・間取り・面積・価格の位置が揃うようにする。
   1 行目: 階｜間取り｜面積｜価格　2 行目: 取引｜坪単価｜投資適正｜比較・保存 */
@media (max-width:760px){
  .search-hit__rooms .table-scroll{border:0;border-top:1px solid var(--rule-2);background:transparent}
  main .search-rooms-table.t-stack tr{display:grid;grid-template-columns:2.9rem minmax(0,1fr) 4.6rem 7.4rem;align-items:center;gap:3px 8px;margin:0;padding:8px 0;border:0;border-bottom:1px solid var(--rule);background:transparent}
  main .search-rooms-table.t-stack tbody tr:nth-child(even){background:transparent}
  main .search-rooms-table.t-stack tr>*{grid-row:2;min-width:0;padding:0;border:0;overflow:hidden;color:var(--text-2);font-family:inherit;font-size:.78rem;font-weight:400;line-height:1.5;text-align:left;text-overflow:ellipsis;white-space:nowrap}
  main .search-rooms-table.t-stack tr>*::before{content:none}
  main .search-rooms-table.t-stack .v{display:inline}
  main .search-rooms-table.t-stack tr>.sr-floor{grid-area:1/1;width:auto;padding:0;border:0;background:transparent;font-size:.92rem;font-weight:600;line-height:1.5}
  main .search-rooms-table.t-stack .sr-layout{grid-area:1/2;color:var(--text);font-size:.86rem}
  main .search-rooms-table.t-stack .sr-area{grid-area:1/3;color:var(--text);font-size:.86rem;text-align:right}
  main .search-rooms-table.t-stack .sr-price{grid-area:1/4;color:var(--text);font-size:.95rem;font-weight:700;text-align:right}
  main .search-rooms-table.t-stack .sr-layout[data-empty],main .search-rooms-table.t-stack .sr-area[data-empty],main .search-rooms-table.t-stack .sr-price[data-empty]{display:block}
  main .search-rooms-table.t-stack .sr-kind{grid-area:2/1;font-size:.72rem;font-weight:600}
  main .search-rooms-table.t-stack .sr-tsubo{grid-area:2/2/3/4}
  main .search-rooms-table.t-stack .sr-score{grid-area:2/4;text-align:right}
  main .search-rooms-table.t-stack .sr-score::before{content:"投資適正 ";display:inline;margin:0;color:var(--text-3);font-size:.68rem;letter-spacing:0}
  main .search-rooms-table.t-stack .sr-score .v{color:var(--text);font-weight:600}
  /* ボタンのある行（会員）は右下をボタンに使い、投資適正は坪単価の右へ寄せる。 */
  main .search-rooms-table.t-stack .sr-act{grid-area:2/4;justify-self:end;width:max-content;overflow:visible;text-align:right}
  main .search-rooms-table.t-stack tr:has(.sr-act button) .sr-tsubo{grid-area:2/2}
  main .search-rooms-table.t-stack tr:has(.sr-act button) .sr-tsubo{overflow:visible}
  main .search-rooms-table.t-stack tr:has(.sr-act button) .sr-score{grid-area:2/3;overflow:visible;justify-self:end}
  main .search-rooms-table.t-stack tr:has(.sr-act button) .sr-score::before{content:"適正 "}
  /* 非会員の「ログインして比較に追加」は 1 行ごとに繰り返さない（棟・住戸のページにある）。 */
  .search-rooms-table .sr-act>p,.search-rooms-table .sr-act .v>p,.search-hit .bcard>p{display:none}
  .search-rooms-table .sr-act button{min-height:28px;padding:0 7px;font-size:.72rem}
  main .search-rooms-table.t-stack tr:not(:has(.sr-act button)) .sr-act{display:none}
  .search-rooms-table .sr-act .favorite-form{margin-left:4px}
  .search-rooms-table .compare-widget__button::before{font-size:.72rem}
  .search-hit__rooms h3{margin-bottom:6px}
  .search-hit{gap:10px;padding-top:20px}
  .search-hits{gap:20px}
}
/* 住戸つきの結果では棟カードを詰める（T-535）。画像は上下を切ってよい（ユーザー指示）。 */
.search-hit .bcard .thumb{aspect-ratio:4/3}
/* タブレット幅（761〜900px）は表のまま、余白と文字を詰めて横スクロールを出さない。 */
@media (min-width:761px) and (max-width:900px){
  .search-rooms-table th,.search-rooms-table td{padding-right:6px;font-size:.84rem}
  .search-rooms-table tbody th{padding-left:10px}
}
/* 表が横に収まらない幅では、棟を横長の 1 行にして住戸の上へ重ねる。 */
@media (max-width:1100px){
  .search-hit{grid-template-columns:1fr;gap:10px}
  .search-hit .bcard__link{display:grid;grid-template-columns:76px minmax(0,1fr);align-items:center;height:auto}
  .search-hit .bcard .thumb{width:100%;height:72px;min-height:0;aspect-ratio:auto}
  .search-hit .bcard .thumb__badge{left:0;top:0;padding:0 4px;font-size:.56rem;letter-spacing:0}
  .search-hit .bcard__body{align-content:center;gap:1px;padding:6px 0 6px 10px}
  .search-hit .bcard__name{display:-webkit-box;overflow:hidden;font-size:.95rem;line-height:1.35;-webkit-box-orient:vertical;-webkit-line-clamp:2}
  .search-hit .bcard__facts>span{white-space:nowrap}
  .search-hit .bcard__facts .ui-icon,.search-hit .bcard__loc .ui-icon{display:inline-block;width:13px;height:13px}
  .search-hit .bcard__loc,.search-hit .bcard__facts{gap:0 8px;font-size:.74rem;line-height:1.5}
  .search-hit .bcard__stock{display:none}
  .search-hit .bcard{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:0 8px}
  .search-hit .bcard>.compare-widget{padding:0;border:0}
  .search-hit .bcard>.compare-widget .compare-widget__note{display:none}
  .search-hit .bcard>.compare-widget .compare-widget__button{min-height:28px;padding:0 8px;border:1px solid var(--rule-2);background:var(--ground);color:var(--text);font-size:0;line-height:1}
  .search-hit .bcard>.compare-widget .compare-widget__button::before{content:"比較";font-size:.72rem}
  .search-hit .bcard>.compare-widget .compare-widget__button[aria-pressed="true"]{border-color:var(--navy);background:var(--navy);color:#fff}
  .search-hit .bcard>.compare-widget .compare-widget__button[aria-pressed="true"]::before{content:"比較中"}
  .search-hit .bcard__loc{flex-wrap:nowrap;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  .search-hit .bcard__loc .ui-icon{flex:none}
}
