  /* ═══ PROPERTY DETAIL — generated by scripts/build-properties.mjs ═══ */

  /* CTAs point at #property-enquiry on this same page; glide rather than jump,
     and stop clear of the fixed nav. Respects reduced-motion. */
  html { scroll-behavior: smooth; }
  @media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
  #property-enquiry { scroll-margin-top: calc(var(--nav-height, 80px) + 16px); }

  /* ── Top summary: bright portal-style header ──────────────────
     Photo gallery on the left, a white summary panel and a compact enquiry
     form on the right — photograph, price, key facts and a way to enquire all
     in the first screen. No navy full-bleed hero. */
  /* Top padding clears the fixed header so the photo top and the tags are never
     tucked under the nav. A very light warm wash + a faint top-right glow give
     the page a little depth without touching text contrast (the copy sits over
     the near-white lower half). */
  .psummary {
    padding: calc(var(--nav-height, 80px) + 26px) 0 40px;
    background:
      radial-gradient(90% 70% at 88% -12%, rgba(196,169,122,.12), rgba(196,169,122,0) 60%),
      linear-gradient(180deg, #FCFAF6 0%, #FFFFFF 62%);
  }
  /* A whisper-soft ivory gradient carries down the rest of the page so it is not
     a flat block of colour; the section backgrounds (below) are slightly
     translucent so this shows through without lowering text contrast. */
  body { background: linear-gradient(180deg, #FBF9F5, #F1ECE2 55%, #FBF9F5) fixed; }
  .pdetail-back {
    display: inline-block; font-family: var(--font-sans); font-size: .66rem;
    font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
    color: var(--gray); text-decoration: none; margin-bottom: 16px;
    transition: color .2s;
  }
  .pdetail-back:hover, .pdetail-back:focus-visible { color: var(--gold-muted); }
  .psummary__grid {
    display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(340px, 0.95fr); gap: 32px;
    align-items: start; max-width: 1200px; margin: 0 auto;
  }
  /* Let the media column shrink so the horizontal thumbnail strip scrolls
     inside itself instead of widening the page (grid/flex min-width:auto fix). */
  .psummary__media, .psummary__aside { min-width: 0; }
  /* ★ 2026-09-25 オーナー承認の改善1・2: 写真の下に主要スペックと間取図。画面の全幅スペック帯は隠す
     （.pspecstrip--data。印刷シートが値を読むので要素は残す。中文ページは従来どおり帯を出す）。 */
  @media screen { .pspecstrip--data { display: none; } }
  /* 項目数（4〜6）に関係なく PC は横1列。罫線は 1px の隙間に地色を見せて引く（数が変わっても崩れない）。 */
  .pkeyfacts { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 1px; margin-top: 18px;
    background: var(--border); border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
  .pkf { padding: 14px 10px; text-align: center; background: var(--off-white); }
  .pkf__v { white-space: nowrap; font-family: var(--font-sans); font-size: 1.05rem; font-weight: 700; color: var(--navy-dark); line-height: 1.2;
    font-variant-numeric: lining-nums tabular-nums; font-feature-settings: "lnum" 1, "tnum" 1; }
  .pkf__l { font-family: var(--font-sans); font-size: .58rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
    color: var(--gold-muted); margin-top: 5px; line-height: 1.35; }
  html[lang="ja"] .pkf__l { letter-spacing: .04em; font-size: .66rem; text-transform: none; }
  .pplan-screen { margin: 22px 0 0; padding: 18px 18px 14px; background: #fff; border: 1px solid var(--border); border-radius: 8px; }
  .pplan-screen__h { font-family: var(--font-serif); font-size: 1.25rem; font-weight: 600; color: var(--navy-dark); margin: 0 0 12px; }
  html[lang="ja"] .pplan-screen__h { font-size: 1.1rem; font-weight: 700; }
  .pplan-screen__link { display: block; cursor: zoom-in; }
  .pplan-screen img { display: block; width: 100%; max-height: 440px; object-fit: contain; }
  .pplan-screen figcaption { margin-top: 8px; font-family: var(--font-sans); font-size: .72rem; color: var(--gray); text-align: center; }
  @media print { .pkeyfacts, .pplan-screen { display: none !important; } }
  /* スマホ・タブレット縦: 写真 → 物件名・価格 → 主要スペック → 間取図 → 問い合わせ の順に並べ替える */
  @media (max-width: 900px) {
    .psummary__grid:has(.pkeyfacts) > .psummary__media, .psummary__grid:has(.pkeyfacts) > .psummary__aside { display: contents; }
    .psummary__grid:has(.pkeyfacts) .pgal { order: 1; }
    .psummary__grid:has(.pkeyfacts) .pinfo { order: 2; }
    .pkeyfacts { order: 3; margin-top: 0; }
    .pfeat { order: 3; margin: 0; }
    .pabout-left { order: 4; }
    .pplan-screen { order: 4; margin-top: 0; }
    .psummary__grid:has(.pkeyfacts) > .psummary__aside > :not(.pinfo) { order: 5; }
  }
  @media (max-width: 600px) {
    .pkeyfacts { grid-auto-flow: row; grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .pkf:last-child:nth-child(odd) { grid-column: span 2; }
    .pplan-screen img { max-height: 360px; }
  }
  .pgal { min-width: 0; }

  /* ── Gallery: portal-style stage + thumbnail strip, brand-styled ────────
     A fixed 4:3 stage so switching images never shifts the layout. Photographs
     fill the frame (cover); floor plans, maps and brochure pages use contain on
     white so their text stays fully legible. */
  .pgal { position: relative; margin: 0; }
  .pgal__stagewrap { position: relative; }
  /* The stage is a plain container, not a control: clicking it does nothing
     since the enlarged view was removed (2026-08-05, owner's instruction — the
     source photographs do not hold up full-screen). Hence no zoom-in cursor. */
  .pgal__stage {
    display: block; width: 100%; padding: 0; border: 1px solid var(--border);
    /* 2026-09-22: カード・ボタンを丸めたので写真の角も揃える */
    border-radius: 10px;
    background: #fff; line-height: 0; overflow: hidden;
  }
  .pgal__img {
    display: block; width: 100%; aspect-ratio: 4 / 3; max-height: 600px;
    object-fit: contain; background: #fff;
    position: relative; z-index: 1;
  }
  .pgal__img[data-fit="cover"] { object-fit: cover; }

  /* ── Display modes ──────────────────────────────────────────────────────
     Source photographs arrive at whatever size the listing partner supplies —
     sometimes 1400px, sometimes 600px. Blowing the small ones up to match the
     large ones is what makes a page look untrustworthy, so the stage adapts to
     the picture instead:

       cover   a photograph big enough to fill the frame — unchanged behaviour
       contain floor plans, site plans and maps, on white so labels stay sharp
       blur    a photograph too small to fill the frame. It is drawn at its own
               size in the middle, over a blurred, lightened copy of itself, so
               the frame is filled without a single pixel being stretched.
       thumb   too small for any main stage; shown small and centred on ivory

     The backdrop is the same picture, so nothing foreign is introduced — it
     reads as a soft wash of the photograph's own colours. */
  .pgal__bg { display: none; }
  .pgal__stage[data-mode="blurred-background-contain"],
  .pgal__stage[data-mode="thumbnail-only"] { background: var(--off-white); }
  .pgal__stage[data-mode="blurred-background-contain"] .pgal__bg,
  .pgal__stage[data-mode="thumbnail-only"] .pgal__bg {
    display: block; position: absolute; inset: 0;
    width: 100%; height: 100%; object-fit: cover;
    /* scaled past the edges so the blur never shows a soft border */
    transform: scale(1.12);
    filter: blur(26px) saturate(.72) brightness(1.16);
    opacity: .5; z-index: 0;
  }
  /* A whisper of ivory over the wash keeps it in the site's palette rather than
     letting a strongly-coloured photograph tint the whole frame. */
  .pgal__stage[data-mode="blurred-background-contain"]::after,
  .pgal__stage[data-mode="thumbnail-only"]::after {
    content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background: linear-gradient(180deg, rgba(250,249,246,.34), rgba(250,249,246,.5));
  }
  /* The picture itself is never painted larger than it really is: the stage
     carries the source's own pixel size in --pgal-nat-w / --pgal-nat-h (set by
     the gallery script), and those cap the box. A small photograph therefore
     sits at 1:1 in the middle of the wash instead of being enlarged to fill. */
  /* ★ 2026-08-06: the cap is the source's own size times a small tolerance,
     not the source's size exactly. 1.15 is the point where an enlargement stops
     being visible at normal reading distance — measured against these listings,
     whose sources run 405-640px wide — and it keeps a 540px photograph at 621px
     rather than dropping it to a thumbnail. The floor stops the frame ever
     looking like a contact sheet: nothing is drawn narrower than 520px unless
     the frame itself is smaller (phones), where 100% wins anyway.
     History: 1.05 / 1.15 were compared side by side on 2026-08-06 and 1.15 was
     chosen. Raised to 1.30 the same day, once the photographs were rebuilt with
     the AI upscaler: reconstructed detail holds up at the larger size, so the
     frame is filled again for anything from about 510px up, while the small
     portrait sources still stop short of being stretched.
     Raised again to 1.65 on 2026-08-06, and this one is about consistency rather
     than size. The owner noticed the picture changing size from thumbnail to
     thumbnail. The cause was this cap: a partner's captures are usually portrait
     at ~400px wide, so they landed at ~520px, while a floor plan scanned at
     626px filled the 663px frame — a visible jump on every click. At 1.65 a
     400px source reaches 660px and everything lands at the frame, so the stage
     stays still. Verified side by side at 1.30 and 1.65 before changing.
     Do not change this number without putting the versions next to each other. */
  .pgal__stage[data-mode="blurred-background-contain"] .pgal__img {
    object-fit: contain; background: transparent;
    max-width: min(100%, max(520px, calc(var(--pgal-nat-w, 100%) * 1.65)));
    max-height: min(600px, calc(var(--pgal-nat-h, 600px) * 1.65));
    margin: 0 auto;
  }
  .pgal__stage[data-mode="thumbnail-only"] .pgal__img {
    object-fit: contain; background: transparent; max-height: 360px;
  }
  .pgal__stage[data-mode="contain"] .pgal__img { background: #fff; }
  /* Prev / next over the stage — quiet ivory discs, not portal-blue buttons. */
  .pgal__nav {
    position: absolute; top: 50%; transform: translateY(-50%);
    width: 38px; height: 38px; display: flex; align-items: center; justify-content: center;
    border: 1px solid var(--border); border-radius: 50%;
    background: rgba(255,255,255,.9); color: var(--navy-dark);
    font-size: 1.4rem; line-height: 1; cursor: pointer; z-index: 2;
    transition: background .2s, border-color .2s;
  }
  .pgal__nav:hover { background: #fff; border-color: var(--gold); }
  .pgal__nav--prev { left: 12px; }
  .pgal__nav--next { right: 12px; }
  .pgal__count {
    position: absolute; left: 12px; bottom: 12px;
    font-family: var(--font-sans); font-size: .62rem; font-weight: 700;
    letter-spacing: .08em; color: #fff;
    background: rgba(15,22,38,.72); padding: 6px 11px; border-radius: 3px;
    pointer-events: none; z-index: 2;
  }
  .pgal__caption {
    margin: 10px 2px 0; font-family: var(--font-sans); font-size: .78rem;
    line-height: 1.5; color: var(--gray);
  }
  .pgal--empty {
    display: flex; align-items: center; justify-content: center;
    aspect-ratio: 4 / 3; background: var(--beige-light); border: 1px solid var(--border);
    font-family: var(--font-sans); font-size: .8rem; letter-spacing: .04em; color: var(--gray-light);
  }
  /* ★ 2026-09-25 オーナー指示「ちっちゃい画像が横にスクロールしないと見れない。一回で見れるように」。
     横スクロールの帯をやめ、折り返して全部並べるグリッドにする（PCは1行6枚前後、スマホは5枚）。 */
  .pgal__thumbs {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; margin-top: 12px;
  }
  .pgal__thumb {
    width: auto; min-width: 0; padding: 0; border: 1px solid var(--border);
    background: none; cursor: pointer; line-height: 0; opacity: .74;
    transition: opacity .2s, border-color .2s; border-radius: 6px; overflow: hidden;
  }
  .pgal__thumb img { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; display: block; background: #fff; }
  @media (max-width: 767px) {
    .pgal__thumbs { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; margin-top: 10px; }
    .pgal__thumb { border-radius: 4px; }
  }
  .pgal__more { display: none; }
  @media (max-width: 767px) {
    .pgal__thumbs.is-collapsed .pgal__thumb:nth-child(n+5) { display: none; }
    .pgal__thumbs.is-collapsed .pgal__more { display: flex; align-items: center; justify-content: center; aspect-ratio: 4 / 3; border: 1px solid var(--border); border-radius: 4px; background: var(--beige-light, #F6F1E7); color: var(--navy-dark); font-family: var(--font-sans); font-size: .95rem; font-weight: 700; cursor: pointer; }
  }
  /* A tall room shot centre-cropped into a 96x68 chip loses the room, so the
     pictures already flagged as too small or too tall for the stage are fitted
     whole into the chip on ivory. Deliberately NOT applied to the plain contain
     mode — that is what the reference listing uses throughout, and its
     thumbnail strip is not being changed. */
  .pgal__thumb[data-mode="blurred-background-contain"] img,
  .pgal__thumb[data-mode="thumbnail-only"] img {
    object-fit: contain; background: var(--off-white); padding: 2px;
  }
  .pgal__thumb.is-active { opacity: 1; border-color: var(--gold); box-shadow: 0 0 0 1px var(--gold); }
  .pgal__thumb:hover, .pgal__thumb:focus-visible { opacity: 1; border-color: var(--gold-light); }
  .pgal__note {
    margin: 12px 2px 0; font-family: var(--font-sans); font-size: .68rem;
    line-height: 1.55; color: var(--gray-light);
  }
  /* ★ 2026-10-09: our own walk-through video from a viewing, above the photographs. */
  .pvisit { margin: 0 0 18px; background: var(--navy-dark, #0f1a30); border-radius: 6px; overflow: hidden; }
  .pvisit__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 16px; color: #fff; }
  .pvisit__t { font: 600 .74rem/1.3 var(--font-sans); letter-spacing: .1em; text-transform: uppercase; }
  .pvisit__t b { color: #E8C46A; font-weight: 600; }
  .pvisit__d { font: .72rem/1.3 var(--font-sans); color: rgba(255,255,255,.72); }
  .pvisit video { display: block; width: 100%; max-height: 72vh; aspect-ratio: 9/16; background: #000; margin: 0 auto; }
  /* ★2026-10-17 review B11: on phones the first screen was the video only — keep it to about half the screen so the name and price show */
  @media (max-width: 767px) { .pvisit video { max-height: 48vh; } }
  .pvisit__note { margin: 0; padding: 9px 16px 12px; font: .74rem/1.55 var(--font-sans); color: rgba(255,255,255,.75); }
  .pvisit__full { border-top: 1px solid rgba(255,255,255,.14); }
  .pvisit__full summary { cursor: pointer; list-style: none; padding: 12px 16px; font: 600 .8rem/1.4 var(--font-sans); color: #E8C46A; }
  .pvisit__full summary::-webkit-details-marker { display: none; }
  .pvisit__full summary::before { content: "▸"; display: inline-block; margin-right: 8px; transition: transform .2s; }
  .pvisit__full[open] summary::before { transform: rotate(90deg); }
  .pvisit__full summary span { color: rgba(255,255,255,.7); font-weight: 400; }
  @media print { .pvisit { display: none !important; } }
  /* ★ 2026-10-09: "Not in Tokyo?" line above the enquiry, and the updates list under it */
  .penq__away { margin: 0 0 10px; padding: 9px 12px; background: #fff7e6; border-left: 3px solid #b08d57; border-radius: 4px; font: .86rem/1.5 var(--font-sans); color: var(--navy-dark); }
  .pupdates { margin-top: 16px; padding: 14px 16px; border: 1px solid #e3ddd2; border-radius: 8px; background: #fff; }
  .pupdates__h { margin: 0 0 4px; font: 600 .95rem/1.35 var(--font-sans); color: var(--navy-dark); }
  .pupdates__p { margin: 0 0 10px; font: .8rem/1.55 var(--font-sans); color: var(--gray); }
  .pupdates__links { display: flex; gap: 8px; flex-wrap: wrap; }
  .pupdates__btn { display: inline-block; padding: 7px 14px; border: 1px solid var(--navy-dark); border-radius: 999px; font: 600 .78rem/1 var(--font-sans); color: var(--navy-dark); text-decoration: none; }
  .pupdates__btn:hover { background: var(--navy-dark); color: #fff; }
  .pupdates__btn--wa { border-color: #1f9d55; color: #1f9d55; }
  .pupdates__btn--wa:hover { background: #1f9d55; color: #fff; }
  .pupdates-sec { padding-top: 26px; padding-bottom: 26px; }
  .pupdates--band { display: flex; align-items: center; justify-content: space-between; gap: 18px 28px; flex-wrap: wrap; margin-top: 0; padding: 20px 26px;
    background: #f7f2e8; border: 1px solid #e6dcc8; border-left: 4px solid #b08d57; border-radius: 8px; }
  .pupdates--band .pupdates__h { font-family: var(--font-serif); font-size: 1.25rem; font-weight: 500; }
  .pupdates--band .pupdates__btn { background: var(--navy-dark); color: #fff; padding: 9px 18px; }
  .pupdates--band .pupdates__btn:hover { background: #2a3d66; }
  .pupdates--band .pupdates__btn--wa { background: #1f9d55; border-color: #1f9d55; color: #fff; }
  .pupdates--band .pupdates__btn--wa:hover { background: #17834a; }
  .pupdates-sec { scroll-margin-top: 90px; }
  .pguides { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 22px; margin: 0 0 18px; font: .86rem/1.5 var(--font-sans); }
  .pguides__k { font-size: .66rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #8E7248; }
  .pguides a { color: var(--navy-dark); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(27, 42, 74, .3); }
  .pguides a:hover { text-decoration-color: #b08d57; }
  @media print { .pguides { display: none !important; } }
  .pupdates-jump { display: inline-block; margin-top: 12px; font: 600 .8rem/1.4 var(--font-sans); color: var(--navy-dark); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(176, 141, 87, .7); }
  .pupdates-jump:hover { color: #8E7248; }
  @media print { .pupdates-jump { display: none !important; } }
  .pupdates--band .pupdates__p { margin: 0; }
  @media print { .pupdates, .penq__away { display: none !important; } }

  /* The lightbox (.pgal-lb*) was removed on 2026-08-05 at the owner's
     instruction together with the click-to-enlarge behaviour: the listing
     photographs are not supplied at a resolution that survives a full-screen
     view. Its rules were deleted with it — do not re-add them without new
     source images. */

  /* Tags reused across summary panel and list cards. */
  .pinfo__tags { display: flex; flex-wrap: wrap; gap: 9px; margin-bottom: 14px; }
  .ptag {
    font-family: var(--font-sans); font-size: .56rem; font-weight: 700;
    letter-spacing: .13em; text-transform: uppercase; padding: 6px 11px;
    border-radius: 3px; line-height: 1;
  }
  .ptag--type   { color: #0F1A30; background: var(--gold-light); }
  .ptag--live   { color: #1F5A31; background: rgba(80,160,100,.18);  border: 1px solid rgba(80,160,100,.5); }
  .ptag--hold   { color: #7A5518; background: rgba(190,150,70,.18); border: 1px solid rgba(190,150,70,.5); }
  /* Price Reduced — 淡いゴールド背景に濃ネイビー文字（カードのバッジと整合） */
  .ptag--new    { color: #0F1A30; background: #E8C46A; border: 1px solid #8E7248; }
  /* New to Market — 緑（カードのバッジと整合。2026-09-16 owner指示） */
  .ptag--fresh  { color: #0F1A30; background: #8ED9A0; border: 1px solid #4B8058; }
  .ptag--closed { color: var(--gray); background: rgba(120,120,120,.14); border: 1px solid rgba(120,120,120,.4); }

  /* Summary panel: name and price are the loudest things here. */
  .pinfo { margin-bottom: 20px; }
  .pinfo__title {
    font-family: var(--font-serif); font-size: clamp(1.75rem, 2.1vw, 2.35rem);
    font-weight: 600; line-height: 1.14; letter-spacing: -.014em;
    color: var(--navy-dark); margin: 0 0 9px; text-wrap: balance;
  }
  /* 2026-10-05 オーナー了承（評価2の提案4）: 金色の細い斜体は読みにくい → 通常体・濃い色に */
  .pinfo__sub {
    font-family: var(--font-sans); font-style: normal; font-size: .98rem; font-weight: 500;
    color: var(--navy, #1f2a44); line-height: 1.5; margin: 0 0 11px; max-width: 46ch;
  }
  .pinfo__loc {
    font-family: var(--font-sans); font-size: .9rem; font-weight: 500;
    color: var(--gray); margin: 0 0 14px;
  }
  .pinfo__price {
    font-family: var(--font-serif); font-size: clamp(2rem, 2.5vw, 2.65rem);
    font-weight: 600; color: var(--navy-dark); line-height: 1.05; letter-spacing: -.012em;
    white-space: nowrap; margin: 0 0 14px; padding-bottom: 14px; border-bottom: 1px solid var(--border);
    font-variant-numeric: lining-nums; font-feature-settings: "lnum" 1;
  }
  .pinfo__price--closed { color: var(--gray); white-space: normal; }
  .pinfo__ref {
    font-family: var(--font-sans); font-size: .72rem; font-weight: 600;
    letter-spacing: .05em; text-transform: uppercase; color: var(--gray-light);
    margin: 0; white-space: nowrap;
  }
  .pinfo__ref span { color: var(--navy-dark); }
  /* The date the listing broker last confirmed availability and price. Quiet,
     but present — a buyer should be able to see how current the page is. */
  .pinfo__verified {
    font-family: var(--font-sans); font-size: .7rem; color: var(--gray);
    margin: 6px 0 0; line-height: 1.5;
  }
  .pinfo__verified span { color: var(--navy-dark); font-weight: 600; }
  /* Direct-listing trust line — a quiet label between the tags and the name. */
  .pinfo__entrust {
    font-family: var(--font-sans); font-size: .68rem; font-weight: 700;
    letter-spacing: .07em; text-transform: uppercase; color: var(--gold-muted);
    margin: 0 0 8px;
  }
  /* One-sentence explanation, shown once in the info area. */
  .pinfo__entrust-note {
    font-family: var(--font-sans); font-size: .9rem; color: var(--gray);
    line-height: 1.62; margin: 12px 0 0; padding-left: 13px;
    border-left: 2px solid rgba(168,137,92,.42);
  }
  /* "New to market" context sits just under the entrust note, a touch darker so
     the recency reads without shouting. */
  .pinfo__market-note { color: var(--navy-dark); margin-top: 7px; }
  /* Occupancy / ownership notice. A residence with age eligibility or heavy
     service charges is not the thing its address suggests, and a buyer has to
     meet that with the price rather than three screens later. Styled as a calm
     information panel — warm off-white ground, a thin gold rule, body copy at
     reading size — deliberately NOT a red alert box: the point is accuracy,
     not discouragement. */
  .pinfo__notice {
    margin: 16px 0 0; padding: 15px 17px;
    background: var(--off-white); border: 1px solid var(--border);
    border-left: 3px solid var(--gold);
  }
  .pinfo__notice-title {
    font-family: var(--font-sans); font-size: .62rem; font-weight: 700;
    letter-spacing: .12em; text-transform: uppercase; color: var(--gold-muted);
    margin: 0 0 8px;
  }
  .pinfo__notice p:not(.pinfo__notice-title) {
    font-family: var(--font-sans); font-size: .84rem; color: var(--navy);
    line-height: 1.66; margin: 0 0 8px;
  }
  .pinfo__notice p:last-child { margin-bottom: 0; }
  @media (max-width: 768px) {
    .pinfo__notice { padding: 13px 14px; }
    .pinfo__notice p:not(.pinfo__notice-title) { font-size: .82rem; }
  }
  /* Primary action next to the price. On desktop the form is already beside it;
     on a phone this button scrolls down to the form (and focuses it). */
  .pinfo__cta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
  .pinfo__btn {
    display: inline-flex; align-items: center; justify-content: center;
    font-family: var(--font-sans); font-size: .72rem; font-weight: 700;
    letter-spacing: .08em; text-transform: uppercase; text-decoration: none;
    padding: 12px 20px; border-radius: 8px; transition: background .2s, color .2s, border-color .2s;
  }
  .pinfo__btn--primary { color: #fff; background: var(--gold-cta); border: 1.5px solid var(--gold-cta); }
  .pinfo__btn--primary:hover, .pinfo__btn--primary:focus-visible { background: var(--navy-dark); border-color: var(--navy-dark); }
  .pinfo__btn--ghost { color: var(--navy-dark); background: transparent; border: 1.5px solid var(--border); }
  .pinfo__btn--ghost:hover, .pinfo__btn--ghost:focus-visible { border-color: var(--navy-dark); }

  /* ── Section shells ───────────────────────────────────────────
     Only non-empty sections are emitted, so these paddings can never stack up
     into an unexplained gap. Rhythm is ~18% tighter than a standard page:
     this is a sales document, and density is the point. */
  .pdetail-sec { padding: 30px 0; }
  /* Slightly translucent so the soft body gradient reads through as gentle
     depth; still effectively white/ivory behind the text. */
  .pdetail-sec--tint  { background: rgba(245,241,234,.62); }
  .pdetail-sec--white { background: rgba(255,255,255,.82); }
  .pblock { max-width: 820px; margin: 0 auto; }
  .pblock--wide { max-width: 1160px; }
  .pblock--centred { text-align: center; }
  .pblock--centred .pblock__sub, .pblock--centred > p { margin-left: auto; margin-right: auto; }
  .pblock--centred .pwhy, .pblock--centred .pstat { text-align: left; }
  .pblock--centred .pnote { text-align: left; max-width: 760px; margin-left: auto; margin-right: auto; }
  .pblock + .pblock { margin-top: 40px; }
  .pblock .eyebrow { color: var(--gold-muted); margin-bottom: 8px; }
  /* Section headings read like a portal, not an editorial: sans-serif, compact,
     weight 700 — a clear label, not a display headline. */
  /* ★2026-10-17 review B8: Floor Plan and the enquiry heading were serif, the other section headings sans — one family now,
     the serif of the site's heading rule (section H2 = the serif, weight 600, navy-dark) */
  .pblock__h2 {
    font-family: var(--font-serif); font-size: clamp(1.25rem, 1.7vw, 1.45rem);
    font-weight: 600; color: var(--navy-dark); line-height: 1.22;
    letter-spacing: -.01em; margin: 0 0 8px;
  }
  .pblock__h2--sm { font-size: 1rem; }
  /* 2026-10-04: "Explore the Area" — links to the area guide and building page */
  .pexplore__list { list-style: none; margin: 12px 0 0; padding: 0; font-family: var(--font-sans); font-size: .95rem; line-height: 1.6; color: var(--charcoal); }
  .pexplore__list li { padding: 8px 0; border-top: 1px solid var(--border, #e6e1d8); }
  .pexplore__list li:first-child { border-top: 0; }
  .pexplore__list a { color: var(--navy-dark); font-weight: 700; text-decoration: none; border-bottom: 1px solid rgba(168,137,92,.45); }
  @media print { .pexplore { display: none !important; } }
  .pblock__sub {
    font-family: var(--font-sans); font-size: .82rem; font-weight: 600;
    color: var(--gray); margin: 0 0 12px;
  }
  .pblock__h2 + p, .pblock__h2 + ul, .pblock__h2 + div, .pblock__h2 + dl { margin-top: 12px; }
  .pblock p {
    font-family: var(--font-sans); font-size: .95rem; color: var(--color-body);
    line-height: 1.85; margin: 0 0 1.05em;
  }
  .pblock p:last-child { margin-bottom: 0; }

  /* ── Facts (label / value) ────────────────────────────────── */
  .pfacts { display: grid; gap: 0 44px; margin: 0; border-top: 1px solid var(--border); }
  .pfacts[data-cols="1"] { grid-template-columns: 1fr; max-width: 560px; }
  .pfacts[data-cols="2"] { grid-template-columns: repeat(2, 1fr); }
  .pfact {
    display: flex; justify-content: space-between; align-items: baseline; gap: 18px;
    padding: 10px 0; border-bottom: 1px solid var(--border);
  }
  .pfact__label {
    font-family: var(--font-sans); font-size: .76rem; font-weight: 600;
    letter-spacing: .04em; color: var(--gray); margin: 0; flex-shrink: 0;
  }
  .pfact__value {
    font-family: var(--font-sans); font-size: .89rem; font-weight: 600;
    color: var(--navy-dark); margin: 0; text-align: right;
  }

  /* ── Stat cards ───────────────────────────────────────────────
     Centred flex, so 3, 5 or 7 cards all balance and a remainder row centres
     under the row above rather than stranding one card in column 1. */
  .pstats { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
  .pstat {
    /* Basis tuned so a 7-fact property breaks 4+3 rather than 5+2 — values like
       "Approx. 25.02 sq m" then sit on one line. */
    flex: 1 1 220px; max-width: 268px;
    background: var(--white); border: 1px solid var(--border);
    border-top: 2px solid var(--gold); padding: 17px 18px 16px;
    display: flex; flex-direction: column;
  }
  .pdetail-sec--white .pstat { background: var(--beige-light); }
  .pstat__label {
    font-family: var(--font-sans); font-size: .57rem; font-weight: 700;
    letter-spacing: .11em; text-transform: uppercase; color: var(--gold-muted);
    margin-bottom: 8px;
  }
  .pstat__value {
    font-family: var(--font-serif); font-size: 1.4rem; font-weight: 600;
    color: var(--navy-dark); line-height: 1.16; letter-spacing: -.01em;
  }
  .pstat__note {
    font-family: var(--font-sans); font-size: .68rem; color: var(--gray);
    line-height: 1.5; margin-top: 7px;
  }

  /* ── "Why this property" cards ────────────────────────────── */
  .pwhys { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px; }
  .pwhy {
    flex: 1 1 220px; max-width: 320px;
    background: var(--white); border: 1px solid var(--border);
    border-top: 2px solid var(--gold); padding: 24px 22px 22px;
  }
  .pdetail-sec--white .pwhy { background: var(--beige-light); }
  .pwhy__title {
    font-family: var(--font-serif); font-size: 1.24rem; font-weight: 600;
    color: var(--navy-dark); line-height: 1.22; letter-spacing: -.008em;
    margin: 0 0 9px;
  }
  .pwhy__text {
    font-family: var(--font-sans); font-size: .85rem; color: var(--color-body);
    line-height: 1.62; margin: 0;
  }

  /* ── Bullets ──────────────────────────────────────────────── */
  .pbul { list-style: none; margin: 0; padding: 0; }
  .pbul li {
    position: relative; padding: 0 0 10px 20px;
    font-family: var(--font-sans); font-size: .92rem; color: var(--color-body);
    line-height: 1.7;
  }
  .pbul li:last-child { padding-bottom: 0; }
  .pbul li::before {
    content: ""; position: absolute; left: 0; top: 10px;
    width: 5px; height: 5px; border-radius: 50%; background: var(--gold);
  }

  /* ── Table ────────────────────────────────────────────────── */
  .ptable-wrap { overflow-x: auto; }
  .ptable { width: 100%; border-collapse: collapse; font-family: var(--font-sans); }
  .ptable th, .ptable td {
    text-align: left; padding: 11px 14px; border-bottom: 1px solid var(--border);
    font-size: .84rem; color: var(--color-body); white-space: nowrap;
  }
  .ptable th {
    font-size: .6rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase;
    color: var(--gold-muted); border-bottom: 1px solid var(--gold);
  }
  .ptable td:first-child { font-weight: 600; color: var(--navy-dark); }

  /* ── Images ───────────────────────────────────────────────── */
  .psingle-img {
    display: block; width: 100%; max-width: 620px; aspect-ratio: 4 / 3;
    object-fit: cover; border: 1px solid var(--border);
  }
  .pgallery { display: grid; gap: 12px; }
  .pgallery[data-cols="2"] { grid-template-columns: repeat(2, 1fr); }
  .pgallery[data-cols="3"] { grid-template-columns: repeat(3, 1fr); }
  .pgallery__img {
    width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block;
    border: 1px solid var(--border);
  }

  /* ── Split section: image beside the copy ─────────────────── */
  .psplit { display: grid; grid-template-columns: 48fr 52fr; gap: 32px; align-items: center; }
  .psplit__img {
    display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover;
    border: 1px solid var(--border);
  }
  .psplit__body { text-align: left; }
  .pblock--centred .psplit__body { text-align: left; }
  .psplit__body .pstats { justify-content: flex-start; }
  .psplit__body .pstat { flex: 1 1 100%; max-width: none; background: transparent; border: 0; border-top: 1px solid var(--border); border-radius: 0; padding: 11px 0 0; }
  .pdetail-sec--white .psplit__body .pstat { background: transparent; }
  .psplit__body .pstat__value { font-size: 1.02rem; font-family: var(--font-sans); font-weight: 600; }
  .psplit__body .pstat__note { margin-top: 3px; }

  /* Outbound link button (e.g. Google Maps). */
  .plink {
    display: inline-flex; align-items: center; gap: 8px; margin-top: 18px;
    font-family: var(--font-sans); font-size: .66rem; font-weight: 700;
    letter-spacing: .1em; text-transform: uppercase; color: var(--navy);
    border: 1.5px solid rgba(27,42,74,.3); padding: 12px 22px; text-decoration: none;
    transition: background .22s, color .22s, border-color .22s;
  }
  .plink:hover, .plink:focus-visible { background: var(--navy); color: #fff; border-color: var(--navy); }
  .plink__ext { font-size: .8em; }

  /* ── Property enquiry form (compact, in the summary aside) ────
     An enquiry form, not an interrogation: ivory ground, white inputs, one
     gold action. Single column so it fits the narrow right rail beside the
     photograph and stays short. */
  .penq--aside { position: sticky; top: calc(var(--nav-height, 80px) + 14px); }
  .penq__form {
    background: var(--beige-light); border: 1px solid var(--border);
    border-top: 2px solid var(--gold); padding: 22px 22px 20px;
  }
  .penq__h2 {
    font-family: var(--font-serif); font-size: 1.28rem;
    font-weight: 600; color: var(--navy-dark); line-height: 1.22;
    letter-spacing: -.01em; margin: 0 0 8px;
  }
  .penq__lead {
    font-family: var(--font-sans); font-size: .82rem; color: var(--color-body);
    line-height: 1.55; margin: 0 0 16px;
  }
  /* 2026-10-05 owner: one-tap enquiry — pick what you want, leave an e-mail, done */
  .penq__picks { border: 0; margin: 0 0 14px; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  .penq__sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .penq__pick { position: relative; cursor: pointer; }
  .penq__pick[hidden], .penq__tour-note[hidden] { display: none !important; }
  .penq__pick input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
  .penq__pick span { display: flex; flex-direction: column; justify-content: center; min-height: 52px; padding: 8px 10px 8px 36px; border: 1.5px solid var(--border); border-radius: 10px; background: var(--white);
    font-family: var(--font-sans); font-size: .84rem; font-weight: 600; line-height: 1.3; color: var(--navy-dark); transition: border-color .15s, background .15s, color .15s; position: relative; }
  .penq__pick span::before { content: ""; position: absolute; left: 11px; top: 50%; width: 15px; height: 15px; margin-top: -8px; border: 1.5px solid var(--gold); border-radius: 4px; background: #fff; }
  .penq__pick input:checked + span { border-color: var(--navy-dark); background: var(--navy-dark); color: #fff; }
  .penq__pick input:checked + span::before { background: var(--gold); border-color: var(--gold); }
  .penq__pick input:checked + span::after { content: ""; position: absolute; left: 16px; top: 50%; width: 4px; height: 8px; margin-top: -6px;
    border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
  .penq__pick b { font-weight: 700; font-size: .84rem; }
  .penq__pick small { display: block; margin-top: 2px; font-size: .7rem; font-weight: 400; color: var(--gray); }
  .penq__pick input:checked + span small { color: rgba(255,255,255,.78); }
  .penq__tour-note { margin: -4px 0 12px; font-family: var(--font-sans); font-size: .7rem; line-height: 1.45; color: var(--gray); }
  /* ★2026-10-17 review A7: two narrow columns on phones folded the report option into 7 lines — one column up to 600px */
  @media (max-width: 600px) { .penq__picks { grid-template-columns: 1fr; } }
  /* review B10: the gold capital labels wrapped to three lines on phones — tighter tracking, compare cards in one column */
  @media (max-width: 600px) {
    .pcmp__label, .ptrend__head, .plm-h, .popt__h, .ptrv__h, .pgrp__h, .poffer__h, .pkf__l { letter-spacing: .04em; }
    .pcmp { grid-template-columns: 1fr; }
  }
  .penq__pick input:focus-visible + span { box-shadow: 0 0 0 3px rgba(168,137,92,.3); }
  .penq__row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
  @media (max-width: 520px) { .penq__row { grid-template-columns: 1fr; gap: 0; }  /* 1015: "Country of residence" wrapped to 2 lines at 390px and the boxes sat at different heights */ }
  .penq__extra { margin: 2px 0 10px; font-family: var(--font-sans); font-size: .8rem; color: var(--gray); }
  .penq__extra summary { cursor: pointer; padding: 4px 0 8px; }
  .penq__extra[open] summary { color: var(--navy-dark); }
  .penq__note--free { font-weight: 600; color: var(--navy-dark); }
  .penq__field { margin-bottom: 12px; }
  .penq__field label {
    display: block; font-family: var(--font-sans); font-size: .66rem;
    font-weight: 700; letter-spacing: .07em; text-transform: uppercase;
    color: var(--navy-dark); margin-bottom: 6px;
  }
  .penq__req, .penq__opt {
    font-size: .82em; font-weight: 600; letter-spacing: .03em;
    text-transform: none; margin-left: 5px;
  }
  .penq__req { color: var(--gold-muted); }
  .penq__opt { color: var(--gray-light); }
  .penq__field input, .penq__field select, .penq__field textarea {
    width: 100%; font-family: var(--font-sans); font-size: .9rem;
    color: var(--charcoal); background: var(--white);
    border: 1px solid var(--border); border-radius: 8px; padding: 10px 12px;
    transition: border-color .2s, box-shadow .2s;
  }
  .penq__field textarea { resize: vertical; min-height: 76px; line-height: 1.55; }
  .penq__field input:focus, .penq__field select:focus, .penq__field textarea:focus {
    outline: none; border-color: var(--gold);
    box-shadow: 0 0 0 3px rgba(168,137,92,.14);
  }
  .penq__field input:invalid:not(:placeholder-shown) { border-color: rgba(170,60,60,.5); }
  .penq__submit {
    display: block; width: 100%; margin-top: 6px; padding: 14px 22px;
    font-family: var(--font-sans); font-size: .68rem; font-weight: 700;
    letter-spacing: .12em; text-transform: uppercase;
    color: #fff; background: var(--gold-cta); border: 1.5px solid var(--gold-cta);
    border-radius: 8px; cursor: pointer;
    transition: background .22s, border-color .22s, color .22s;
  }
  .penq__submit:hover:not(:disabled), .penq__submit:focus-visible {
    background: var(--navy-dark); border-color: var(--navy-dark); color: #fff;
  }
  .penq__submit:disabled { opacity: .65; cursor: default; }
  .penq__note {
    font-family: var(--font-sans); font-size: .72rem; color: var(--gray);
    line-height: 1.55; margin: 12px 0 0;
  }
  .penq__alt {
    margin-top: 12px; text-align: center;
    font-family: var(--font-sans); font-size: .8rem; color: var(--gray);
  }
  .penq__alt a {
    color: var(--navy-dark); font-weight: 600; text-decoration: none;
    border-bottom: 1px solid rgba(168,137,92,.5); margin-left: 6px;
  }
  .penq__alt a:hover { border-bottom-color: var(--gold); }
  /* "Available on Request" — a compact two-column list under the form, so the
     buyer sees what an enquiry unlocks without lengthening the form itself. */
  .penq__request { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--border); }
  .penq__request-head {
    font-family: var(--font-sans); font-size: .62rem; font-weight: 700;
    letter-spacing: .12em; text-transform: uppercase; color: var(--gold-muted);
    margin-bottom: 10px;
  }
  .penq__request-list {
    list-style: none; margin: 0; padding: 0;
    display: grid; grid-template-columns: 1fr 1fr; gap: 4px 16px;
  }
  .penq__request-list li {
    position: relative; padding-left: 13px;
    font-family: var(--font-sans); font-size: .74rem; color: var(--color-body); line-height: 1.45;
  }
  .penq__request-list li::before {
    content: ""; position: absolute; left: 0; top: .5em;
    width: 4px; height: 4px; border-radius: 50%; background: var(--gold);
  }
  .penq__request-note {
    font-family: var(--font-sans); font-size: .7rem; color: var(--gray-light);
    line-height: 1.5; margin: 10px 0 0;
  }
  @media (max-width: 420px) { .penq__request-list { grid-template-columns: 1fr; } }

  /* ── Key-spec strip ───────────────────────────────────────────
     The six numbers a buyer scans first, as a compact row under the summary —
     Beds/Baths/Area convention, not big cards. */
  .pspecstrip { background: var(--off-white); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
  .pspecrow {
    max-width: 1240px; margin: 0 auto; display: grid;
    grid-template-columns: repeat(6, 1fr);
  }
  .pspec {
    padding: 16px 14px; text-align: center;
    border-left: 1px solid var(--border);
  }
  .pspec:first-child { border-left: 0; }
  /* Sans with lining figures: the serif (Cormorant) uses old-style figures, so
     "1K" rendered the 1 short and small next to the K. Inter + lining-nums keeps
     every digit full height and the same visual size — and reads cleanly. */
  .pspec__value {
    font-family: var(--font-sans); font-size: 1.12rem; font-weight: 700;
    color: var(--navy-dark); line-height: 1.15; letter-spacing: -.006em;
    font-variant-numeric: lining-nums tabular-nums;
    font-feature-settings: "lnum" 1, "tnum" 1;
  }
  .pspec__label {
    font-family: var(--font-sans); font-size: .58rem; font-weight: 700;
    letter-spacing: .09em; text-transform: uppercase; color: var(--gold-muted);
    margin-top: 6px;
  }

  /* ── Property Details table (compact portal style) ──────────── */
  .ptable--details { max-width: none; }
  .ptable--details th[scope="row"] {
    width: 44%; text-align: left; font-family: var(--font-sans);
    font-size: .8rem; font-weight: 500; letter-spacing: 0; text-transform: none;
    color: var(--gray); background: transparent; border-bottom: 1px solid var(--border);
    padding: 8px 14px 8px 0; white-space: normal;
  }
  .ptable--details td {
    font-weight: 600; color: var(--navy-dark); padding: 8px 0;
    white-space: normal; border-bottom: 1px solid var(--border); font-size: .84rem;
  }
  .ptable--details tr:last-child th, .ptable--details tr:last-child td { border-bottom: 0; }

  /* ── Paired fact panels (Property Details + Rental Income) ────
     Two panels side by side so the width is used, not left half-empty. */
  .ppair { display: grid; grid-template-columns: 1.35fr 1fr; gap: 40px; align-items: start; }
  .ppair__col { min-width: 0; }
  .ppair__col .pfacts--inline, .ppair__col .pfacts { max-width: none; }
  .ppair__col .pblock__h2--sm { margin-bottom: 10px; }

  /* ── Embedded Google Map ──────────────────────────────────────
     English UI comes from the embed URL (hl=en). The frame keeps Google's own
     attribution and terms links intact. */
  /* 紙だけに出る紺のマストヘッド。画面では存在しないものとして扱う。 */
  .pprint-brand, .pprint-foot, .ptrans__contact, .ptrans__addr { display: none; }

  /* ★ 2026-09-22 オーナー指示:「印刷しないもともとのページにも帯を付けて。今は文字で
     会社名が出ているので、それをロゴに変えるイメージ」。紙の「取引態様・広告主」は
     RE/MAX INTERFACE のロゴ入りの帯になっているので、画面でも同じようにロゴを出す。
     英語は文字の RE/MAX INTERFACE の行がロゴと重複するので、画面ではその行を隠す
     （紙の体裁は検証済みなので触らない）。宅建業者の商号・免許番号は文字のまま残す。 */
  /* ★ 2026-09-22 オーナー指示:「帯のフォルダの中から適切なものを選んで、物件ページの
     説明のところで使ってほしい」。原本は 10_MYSOKU/_obi/obi-master/青木様_帯データ.pptx。
     日本語・英語それぞれ大小2種あるうち、幅の狭い方（横長比 約6:1）を切り出して使う。
     （広い方は 12:1 で、ページ幅に入れると文字が小さくなりすぎる。）
     帯に載っている項目（商号・免許番号・住所・TEL・担当・連絡先）は画面では文字を出さず
     帯に任せる。帯に無い「取引態様」と協会加盟の2行は文字のまま残す（宅建業法34条1項・
     表示規約の必要表示事項）。紙の体裁は検証済みなので触っていない。 */
  .ptrans__obi {
    display: block; width: 100%; max-width: 760px; height: auto;
    margin: 18px 0 4px; border-radius: 6px;
  }
  .ptrans__broker--onobi, .ptrans__broker-line--onobi { display: none; }
  .ptrans__broker-line--brand { display: none; }
  /* ロゴは帯の中に入っているので、帯を出している画面幅では単体のロゴは出さない。 */
  .ptrans__logo { display: none; }
  /* 携帯では帯の文字が小さくなりすぎて読めないので、帯は出さずに文字で見せる。 */
  @media (max-width: 767px) {
    .ptrans__obi { display: none; }
    .ptrans__broker--onobi, .ptrans__broker-line--onobi { display: block; }
    .ptrans__logo {
      display: block; height: 38px; width: auto;
      background: #fff; padding: 4px 7px; border: 1px solid var(--border); border-radius: 5px;
    }
  }
  .pmap { margin-top: 14px; border: 1px solid var(--border); border-radius: 10px; overflow: hidden; line-height: 0; }
  .pmap__frame { width: 100%; height: 360px; border: 0; display: block; }
  .pmap__note {
    font-family: var(--font-sans); font-size: .74rem; color: var(--gray);
    line-height: 1.55; margin: 10px 0 0;
  }
  .pmap__link {
    display: inline-flex; align-items: center; gap: 6px; margin-top: 8px;
    font-family: var(--font-sans); font-size: .74rem; font-weight: 600;
    color: var(--navy-dark); text-decoration: none;
    border-bottom: 1px solid rgba(168,137,92,.5);
  }
  .pmap__link:hover, .pmap__link:focus-visible { border-bottom-color: var(--gold); }
  .pmap__link .plink__ext { font-size: .82em; }

  /* ── Agent's Comments: commentary + a short "points to check" list ── */
  .pcheck { display: grid; grid-template-columns: 1.4fr 1fr; gap: 34px; align-items: start; }
  .pcheck__aside {
    background: var(--beige-light); border: 1px solid var(--border);
    border-top: 2px solid var(--gold); padding: 20px 22px;
  }
  .pcheck__title {
    font-family: var(--font-sans); font-size: .62rem; font-weight: 700;
    letter-spacing: .12em; text-transform: uppercase; color: var(--gold-muted);
    margin: 0 0 12px;
  }
  .pcheck__list { list-style: none; margin: 0; padding: 0; }
  .pcheck__list li {
    position: relative; padding: 0 0 9px 22px;
    font-family: var(--font-sans); font-size: .86rem; color: var(--color-body);
    line-height: 1.5;
  }
  .pcheck__list li:last-child { padding-bottom: 0; }
  .pcheck__list li::before {
    content: ""; position: absolute; left: 2px; top: .42em;
    width: 6px; height: 6px; border: 1.5px solid var(--gold); border-radius: 50%;
  }
  /* Two columns for longer check lists, so eight short items stay compact. */
  .pcheck__list--cols { display: grid; grid-template-columns: 1fr 1fr; column-gap: 20px; }
  .pcheck__list--cols li:nth-last-child(2):nth-child(odd) { padding-bottom: 9px; }

  /* ── Market metrics (e.g. Osaka Rental Market) ────────────────
     Two headline figures side by side with a small caption — compact, not big
     stat cards. */
  .pmetrics { margin: 16px 0 0; }
  .pmetrics__cap {
    font-family: var(--font-sans); font-size: .68rem; font-weight: 700;
    letter-spacing: .05em; text-transform: uppercase; color: var(--gold-muted);
    margin-bottom: 10px;
  }
  .pmetrics__row { display: flex; flex-wrap: wrap; gap: 14px; }
  .pmetric {
    flex: 0 1 auto; min-width: 150px; padding: 14px 20px;
    background: var(--beige-light); border: 1px solid var(--border);
    border-top: 2px solid var(--gold);
  }
  .pmetric__value {
    font-family: var(--font-sans); font-size: 1.5rem; font-weight: 700;
    color: var(--navy-dark); line-height: 1.1;
    font-variant-numeric: lining-nums tabular-nums; font-feature-settings: "lnum" 1, "tnum" 1;
  }
  .pmetric__label {
    font-family: var(--font-sans); font-size: .66rem; font-weight: 600;
    letter-spacing: .04em; color: var(--gray); margin-top: 5px;
  }
  .psource {
    font-family: var(--font-sans); font-size: .72rem; color: var(--gray-light);
    line-height: 1.5; margin: 12px 0 0;
  }
  .psource a {
    color: var(--navy-dark); text-decoration: none;
    border-bottom: 1px solid rgba(168,137,92,.5);
  }
  .psource a:hover { border-bottom-color: var(--gold); }
  .psource .plink__ext { font-size: .82em; margin-left: 3px; }
  /* Several figures, several publications — each keeps its own credit line. */
  .psource-list {
    list-style: none; margin: 4px 0 0; padding: 0;
    font-family: var(--font-sans); font-size: .72rem; color: var(--gray-light);
    line-height: 1.5;
  }
  .psource-list li { margin-top: 3px; padding-left: 12px; position: relative; }
  .psource-list li::before {
    content: ""; position: absolute; left: 0; top: .62em;
    width: 4px; height: 1px; background: var(--gray-light);
  }
  .psource-list a {
    color: var(--navy-dark); text-decoration: none;
    border-bottom: 1px solid rgba(168,137,92,.5);
  }
  .psource-list a:hover { border-bottom-color: var(--gold); }
  .psource-list .plink__ext { font-size: .82em; margin-left: 3px; }

  /* ── Ownership Support (compact block under Our Observations) ── */
  .pblock--support { border-top: 1px solid var(--border); padding-top: 24px; }
  .psupport {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin: 0 0 14px;
  }
  .psupport__item {
    font-family: var(--font-sans); font-size: .82rem; color: var(--navy-dark);
    line-height: 1.4; background: var(--beige-light); border: 1px solid var(--border);
    border-left: 2px solid var(--gold); padding: 12px 14px;
  }
  .pblock--support p { font-size: .88rem; }

  /* ── Final polish pass ──────────────────────────────────────── */
  /* Property Highlights across two columns so the right side isn't empty. */
  #section-highlights .pbul { columns: 2; column-gap: 46px; }
  #section-highlights .pbul li { break-inside: avoid; }

  /* Important Notes: three primary notes, then a native <details> accordion for
     the rest — keyboard-accessible and readable with JS disabled. */
  .pacc { margin-top: 14px; border-top: 1px solid var(--border); }
  .pacc__summary {
    list-style: none; cursor: pointer; padding-top: 12px;
    font-family: var(--font-sans); font-size: .66rem; font-weight: 700;
    letter-spacing: .1em; text-transform: uppercase; color: var(--navy);
    display: inline-flex; align-items: center; gap: 8px;
  }
  .pacc__summary::-webkit-details-marker { display: none; }
  .pacc__summary::after { content: "+"; font-size: 1.15em; color: var(--gold-muted); line-height: 1; }
  .pacc[open] .pacc__summary::after { content: "\2212"; }
  .pacc__summary:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }
  .pacc__list { margin-top: 12px; }

  /* Rental Income figures a touch stronger; lighter fact rules. */
  .ppair .pfact { border-bottom-color: rgba(216,212,204,.72); }
  .ppair__col .pfacts--inline .pfact--strong .pfact__value { font-size: 1.3rem; }

  /* Osaka Rental Market: numbers larger, labels smaller, tighter block. */
  .pmetric__value { font-size: 1.62rem; }
  .pmetric__label { font-size: .62rem; }

  /* Transit: pull the map up under the copy; the map link reads as a button. */
  .pmap { margin-top: 10px; }
  .pmap__link {
    border: 1.5px solid rgba(27,42,74,.28); padding: 9px 16px; margin-top: 12px;
    border-radius: 8px; font-size: .66rem; letter-spacing: .08em; text-transform: uppercase;
  }
  .pmap__link:hover, .pmap__link:focus-visible { background: var(--navy); color: #fff; border-color: var(--navy); }

  /* Our Observations / Points to Check: lighter box, tighter prose, aligned tops. */
  .pcheck { align-items: start; }
  .pcheck__body p { line-height: 1.72; }
  .pcheck__aside { background: rgba(245,241,234,.5); }

  /* Enquiry form: a little more compact, inputs unchanged in size. */
  .penq--aside .penq__field { margin-bottom: 10px; }

  /* ── Small note box (optional, used by short boxed asides) ────
     A quiet, boxed aside — smaller than a full section, tinted, compact. */
  .pblock--note {
    background: var(--beige-light); border: 1px solid var(--border);
    border-left: 3px solid var(--gold); padding: 20px 24px; max-width: 820px;
  }
  .pblock--note .pblock__h2 {
    font-family: var(--font-sans); font-size: .64rem; font-weight: 700;
    letter-spacing: .14em; text-transform: uppercase; color: var(--gold-muted);
    margin-bottom: 10px;
  }
  .pblock--note p { font-size: .88rem; }
  .pblock--note .pnote { margin-top: 12px !important; }

  /* ── Notes ────────────────────────────────────────────────── */
  .pnote {
    font-family: var(--font-sans) !important; font-size: .82rem !important;
    color: var(--gray) !important; line-height: 1.72 !important;
    margin: 20px 0 0 !important; padding-left: 14px;
    border-left: 2px solid rgba(168,137,92,.42);
  }
  /* Important information: legally necessary, visually quiet. It closes the
     page as a footnote rather than competing with the property itself. */
  .pblock--important {
    background: transparent; border: 0; border-top: 1px solid var(--border);
    padding: 22px 0 0; max-width: 860px;
  }
  .pblock--important .pblock__h2 {
    font-family: var(--font-sans); font-size: .62rem; font-weight: 700;
    letter-spacing: .16em; text-transform: uppercase; color: var(--gold-muted);
    margin-bottom: 10px;
  }
  .pblock--important p {
    font-size: .76rem; color: var(--gray); line-height: 1.66; margin-bottom: .7em;
  }

  /* ── Listing & Transaction Information ────────────────────────
     Who acts in what capacity, plus the standard availability notice.
     Factual and calm — this is a compliance statement, not a sales panel. The
     named brokerage and its licence sit together so a reader can never take
     AOKI LIVING LLC for the seller or for the licensed broker. */
  .ptrans__grid {
    display: grid; grid-template-columns: 1.15fr 1fr; gap: 30px;
    align-items: start; margin-top: 16px;
  }
  .ptrans__roles { margin: 0; }
  .ptrans__roles dt {
    font-family: var(--font-sans); font-size: .62rem; font-weight: 700;
    letter-spacing: .14em; text-transform: uppercase; color: var(--gold-muted);
    margin: 0 0 4px;
  }
  .ptrans__roles dd {
    font-family: var(--font-sans); font-size: .92rem; color: var(--navy-dark);
    line-height: 1.5; margin: 0 0 16px;
  }
  .ptrans__roles dd:last-child { margin-bottom: 0; }
  .ptrans__broker {
    border-left: 2px solid rgba(168,137,92,.42); padding: 2px 0 2px 16px;
  }
  .ptrans__broker-label {
    font-family: var(--font-sans); font-size: .62rem; font-weight: 700;
    letter-spacing: .14em; text-transform: uppercase; color: var(--gold-muted);
    margin-bottom: 8px;
  }
  .ptrans__broker-line {
    font-family: var(--font-sans); font-size: .88rem; color: var(--navy-dark);
    line-height: 1.62;
  }
  .ptrans__broker-line:first-of-type { font-weight: 600; }
  .ptrans__disclaimer {
    font-family: var(--font-sans); font-size: .76rem; color: var(--gray);
    line-height: 1.66; margin: 24px 0 0; padding-top: 18px;
    border-top: 1px solid var(--border); max-width: 860px;
  }

  /* ── Related properties ───────────────────────────────────────
     Deliberately light: a short Market Listing page must not end with a block
     heavier than its own content. */
  .prel__grid {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 16px;
  }
  .prel__grid[data-count="1"] { grid-template-columns: minmax(0, 380px); }
  .prel__grid[data-count="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .prel__card {
    display: flex; flex-direction: column; text-decoration: none;
    border: 1px solid var(--border); background: #fff;
    transition: border-color .22s, transform .22s;
  }
  .prel__card:hover, .prel__card:focus-visible {
    border-color: var(--gold); transform: translateY(-2px);
  }
  .prel__card:focus-visible { outline: 2px solid var(--gold); outline-offset: 2px; }
  .prel__media { display: block; line-height: 0; background: var(--beige-light); }
  .prel__media img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
  .prel__body { display: block; padding: 14px 16px 16px; }
  .prel__status {
    display: block; font-family: var(--font-sans); font-size: .58rem; font-weight: 700;
    letter-spacing: .14em; text-transform: uppercase; color: var(--gold-muted); margin-bottom: 6px;
  }
  .prel__title {
    display: block; font-family: var(--font-serif); font-size: 1.02rem; font-weight: 600;
    color: var(--navy-dark); line-height: 1.3; margin-bottom: 4px;
  }
  .prel__loc {
    display: block; font-family: var(--font-sans); font-size: .76rem;
    color: var(--gray); line-height: 1.5;
  }
  .prel__price {
    display: block; font-family: var(--font-sans); font-size: .86rem; font-weight: 700;
    color: var(--navy-dark); margin-top: 8px;
    font-variant-numeric: lining-nums tabular-nums;
  }

  /* ── Inquiry CTA ──────────────────────────────────────────── */
  .pcta { text-align: center; max-width: 660px; margin: 0 auto; }
  .pcta h2 {
    font-family: var(--font-serif); font-size: clamp(1.5rem, 2.5vw, 2rem);
    font-weight: 600; color: #fff; line-height: 1.22; margin-bottom: 14px;
  }
  .pcta p {
    font-family: var(--font-sans); font-size: .93rem; color: rgba(255,255,255,.72);
    line-height: 1.8; margin: 0 auto 24px; max-width: 540px;
  }
  .pcta__row { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; }
  .pcta__email {
    font-family: var(--font-sans); font-size: .68rem; font-weight: 700;
    letter-spacing: .1em; text-transform: uppercase; color: var(--gold-light);
    border: 1.5px solid rgba(196,169,122,.5); padding: 14px 26px; text-decoration: none;
    transition: background .22s, color .22s, border-color .22s;
  }
  .pcta__email:hover, .pcta__email:focus-visible {
    background: var(--gold-light); color: var(--navy-dark); border-color: var(--gold-light);
  }
  .pcta__aside {
    font-family: var(--font-sans) !important; font-size: .78rem !important;
    color: rgba(255,255,255,.5) !important; margin: 20px auto 0 !important;
  }

  .pdetail-back:focus-visible, .pcta__email:focus-visible, .btn:focus-visible {
    outline: 2px solid var(--gold-light); outline-offset: 3px;
  }

  /* Totals in an income breakdown carry more weight than their components. */
  .pfact--strong { border-bottom-color: var(--gold); }
  .pfact--strong .pfact__label { color: var(--navy-dark); font-weight: 700; }
  .pfact--strong .pfact__value {
    font-family: var(--font-serif); font-size: 1.2rem; font-weight: 600; color: var(--navy);
    font-variant-numeric: lining-nums; font-feature-settings: "lnum" 1;
  }
  .pfacts--inline { max-width: 560px; border-top: 1px solid var(--border); }

  /* ── Responsive ───────────────────────────────────────────── */
  /* iPad landscape (~1024): keep the two-column top, photo ~60%, form ~40%,
     and the spec strip in two rows of three. */
  @media (max-width: 1120px) {
    .psummary__grid { grid-template-columns: minmax(0, 1.5fr) minmax(330px, 1fr); gap: 26px; }
    .pblock--wide { max-width: 92vw; }
    .pspecrow { grid-template-columns: repeat(3, 1fr); }
    .pspec:nth-child(-n+3) { border-top: 0; }
    .pspec:nth-child(n+4) { border-top: 1px solid var(--border); }
    .pspec:nth-child(4) { border-left: 0; }
    .pcheck { gap: 24px; }
    .ppair { gap: 28px; }
  }
  /* iPad landscape: support grid 2x2. */
  @media (max-width: 1120px) {
    .psupport { grid-template-columns: repeat(2, 1fr); }
  }
  /* iPad portrait and below (~900): photo on top, summary + form beneath. */
  @media (max-width: 900px) {
    .psummary__grid { grid-template-columns: 1fr; gap: 24px; max-width: 680px; }
    .penq--aside { position: static; }
    .pcheck { grid-template-columns: 1fr; gap: 22px; }
    .ppair { grid-template-columns: 1fr; gap: 24px; }
    .pgal__img { aspect-ratio: 4 / 3; }
    .pgal__nav { width: 34px; height: 34px; font-size: 1.25rem; }
    .pmap__frame { height: 320px; }
  }
  @media (max-width: 560px) {
    .psupport { grid-template-columns: 1fr; }
    .pcheck__list--cols { grid-template-columns: 1fr; }
  }
  /* Related properties: 3 -> 2 -> 1 as the viewport narrows. */
  @media (max-width: 980px) {
    .prel__grid, .prel__grid[data-count="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .prel__grid[data-count="1"] { grid-template-columns: minmax(0, 380px); }
  }
  @media (max-width: 620px) {
    .prel__grid, .prel__grid[data-count="1"], .prel__grid[data-count="2"] { grid-template-columns: 1fr; }
  }
  /* Transaction block: roles above the brokerage on narrow screens. */
  @media (max-width: 760px) {
    .ptrans__grid { grid-template-columns: 1fr; gap: 22px; }
  }
  @media (max-width: 760px) {
    .psummary { padding: calc(var(--nav-height, 68px) + 12px) 0 30px; } /* 2026-10-15: スマホで写真と「戻る」がヘッダーの下に隠れていた */
    .pdetail-sec { padding: 32px 0; }
    .pblock + .pblock { margin-top: 26px; }
    .pfacts[data-cols="2"] { grid-template-columns: 1fr; gap: 0; }
    .plink { width: 100%; justify-content: center; padding: 14px 22px; }
  }
  @media (max-width: 560px) {
    /* Spec strip: two columns on phones, still compact. */
    .pspecrow { grid-template-columns: repeat(2, 1fr); }
    .pspec { border-left: 1px solid var(--border); border-top: 1px solid var(--border); }
    .pspec:nth-child(odd) { border-left: 0; }
    .pspec:nth-child(-n+2) { border-top: 0; }
    .pstat, .pwhy { flex-basis: 100%; max-width: none; }
    .pfact { padding: 12px 0; }
    .ptable th, .ptable td { padding: 10px 11px; font-size: .8rem; }
    .ptable--details th[scope="row"] { width: 46%; padding-right: 10px; }
  }

  /* ── Phones (2026-09-17, owner's instruction) ─────────────────────────────
     Same content, less scrolling: long description/highlights open with a
     "read more", the area market data opens on tap, related properties swipe
     sideways, and an enquiry bar stays at the bottom of the screen whenever
     the page's own enquiry button and form are out of view. The classes are
     only added by script while the phone query matches. The Japanese detail
     pages lift this CSS and the script, so they inherit it. */
  .pmbar, .pmore__btn, .m-acc__chev, .m-acc__sum { display: none; }
  @media (max-width: 767px) {
    .pmclamp { position: relative; max-height: 300px; overflow: hidden; -webkit-mask-image: linear-gradient(180deg, #000 62%, transparent); mask-image: linear-gradient(180deg, #000 62%, transparent); }
    .pmore__btn { display: block; width: 100%; margin: 12px 0 0; padding: 12px 14px; font-family: var(--font-sans); font-size: .66rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--navy); background: transparent; border: 1.5px solid rgba(27,42,74,.28); cursor: pointer; }
    html[lang="ja"] .pmore__btn, html[lang^="zh"] .pmore__btn { text-transform: none; letter-spacing: .06em; font-size: .78rem; }
    .pmore__btn { margin-bottom: 14px; }
    .pmore__btn::after { content: ""; display: inline-block; width: 7px; height: 7px; margin-left: 9px; border-right: 1.5px solid #9A7C50; border-bottom: 1.5px solid #9A7C50; transform: translateY(-3px) rotate(45deg); }
    .pmore__btn.is-open { margin-bottom: 8px; opacity: .8; }
    .pmore__btn.is-open::after { transform: translateY(1px) rotate(-135deg); }

    .m-acc__hd { position: relative; padding-right: 30px; cursor: pointer; -webkit-tap-highlight-color: transparent; }
    .m-acc__chev { display: block; position: absolute; right: 6px; top: .7em; width: 9px; height: 9px; border-right: 1.5px solid var(--gold-muted, #9A7C50); border-bottom: 1.5px solid var(--gold-muted, #9A7C50); transform: translateY(-50%) rotate(45deg); transition: transform .2s; pointer-events: none; }
    .m-acc.is-open .m-acc__chev { transform: translateY(-10%) rotate(-135deg); }
    .m-acc:not(.is-open) > .m-acc__hd ~ * { display: none; }
    .m-acc:not(.is-open) > .m-acc__hd { margin-bottom: 0; }
    /* ★2026-10-17 folded headings: one quiet line saying what opens; a taller tap area */
    .m-acc__hd { padding-top: 8px; padding-bottom: 8px; min-height: 44px; }
    .m-acc__sum { display: block; margin-top: 4px; font-family: var(--font-sans); font-size: .8rem; font-weight: 400; line-height: 1.4; letter-spacing: 0; text-transform: none; color: var(--gray, #6b6b6b); }
    .m-acc.is-open .m-acc__sum { display: none; }
    /* a folded block keeps only a slim band — the section's full top/bottom padding read as empty space */
    section:has(.m-acc:not(.is-open)):not(:has(.m-acc.is-open)):not(:has(.pblock:not(.m-acc))) { padding-top: 14px !important; padding-bottom: 14px !important; }

    .prel__grid, .prel__grid[data-count] { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; margin-left: -20px; margin-right: -20px; padding: 2px 20px 12px; scroll-padding-left: 20px; scrollbar-width: none; }
    .prel__grid::-webkit-scrollbar { display: none; }
    .prel__grid > .prel__card { flex: 0 0 78%; scroll-snap-align: start; }

    .pmbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 900; padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px)); background: rgba(255,255,255,.96); border-top: 1px solid var(--border); box-shadow: 0 -6px 18px rgba(27,42,74,.08); transform: translateY(110%); transition: transform .25s ease; }
    .pmbar.is-ready { display: flex; gap: 8px; }
    .pmbar.is-on { transform: translateY(0); }
    /* ★2026-10-17 review B9: no capitals or wide tracking, and WhatsApp / LINE as white with a green edge so the bar keeps to navy and gold */
    .pmbar__btn { display: block; flex: 1 1 auto; width: 100%; padding: 13px 12px; text-align: center; font-family: var(--font-sans); font-size: .9rem; font-weight: 700; letter-spacing: .01em; text-transform: none; color: #fff; background: var(--navy); border: 1px solid var(--navy); border-radius: 6px; text-decoration: none; }
    html[lang="ja"] .pmbar__btn, html[lang^="zh"] .pmbar__btn { letter-spacing: .04em; }
    .pmbar__btn--wa, .pmbar__btn--line { flex: 0 0 34%; width: auto; background: #fff; color: #17753f; border-color: #1f8f4e; }
    body.has-pmbar .footer { padding-bottom: 84px; }
    /* ★2026-10-18 owner (mock approved): navy bar, gold main button, WhatsApp / LINE white with their icon. Timing unchanged (after the title leaves the screen). */
    .pmbar { background: rgba(15,26,48,.97); border-top: 0; box-shadow: 0 -4px 18px rgba(0,0,0,.18); padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px)); }
    .pmbar__btn { display: flex; align-items: center; justify-content: center; gap: 7px; padding: 0 12px; height: 46px; font-size: .82rem; letter-spacing: .03em; color: #fff; background: var(--gold-cta, #B8863B); border-color: var(--gold-cta, #B8863B); border-radius: 4px; }
    .pmbar__btn--wa, .pmbar__btn--line { flex: 0 0 auto; padding: 0 16px; background: #fff; color: #0F1A30; border-color: #fff; }
    .pmbar__btn--wa::before, .pmbar__btn--line::before { content: ""; width: 18px; height: 18px; flex: 0 0 18px; background: center/contain no-repeat; }
    .pmbar__btn--wa::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%2325D366' d='M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.3A10 10 0 1 0 12 2z'/%3E%3Cpath fill='%23fff' d='M17.2 14.4c-.3-.1-1.7-.8-2-.9s-.5-.1-.7.1-.8.9-.9 1.1-.3.2-.6.1a7.6 7.6 0 0 1-3.8-3.3c-.3-.5.3-.5.8-1.6.1-.2 0-.4 0-.5l-.9-2.2c-.2-.6-.5-.5-.7-.5h-.6a1.1 1.1 0 0 0-.8.4 3.4 3.4 0 0 0-1 2.5 5.9 5.9 0 0 0 1.2 3.1 13.4 13.4 0 0 0 5.2 4.6c1.9.8 2.7.9 3.6.7a3.1 3.1 0 0 0 2-1.4 2.5 2.5 0 0 0 .2-1.4c-.1-.1-.3-.2-.5-.3z'/%3E%3C/svg%3E"); }
    .pmbar__btn--line::before { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect width='24' height='24' rx='6' fill='%2306C755'/%3E%3Cpath fill='%23fff' d='M12 5.5c-4 0-7.2 2.6-7.2 5.8 0 2.9 2.6 5.3 6 5.7.3.1.6.2.7.4l.1.8-.1.6c0 .2-.2.7.6.4s4.3-2.5 5.9-4.3a5.3 5.3 0 0 0 1.2-3.6c0-3.2-3.2-5.8-7.2-5.8z'/%3E%3C/svg%3E"); }
  }

  /* ═══ PRINT ═══════════════════════════════════════════════════════════
     お客さんが気に入った物件を紙かPDFで持ち帰れるように（2026-09-20 オーナー依頼）。
     ログイン機能が無いので「お気に入り」は作れない。代わりに、このページを
     そのまま A4 2〜3 枚に収めて刷れるようにしてある。

     方針は「無駄に何ページにもならないこと」。画面用の余白・背景・操作要素は
     全部落とし、写真は主写真1枚＋サムネイルの一覧だけにする。地図・相場チャート・
     関連物件・問い合わせフォームは紙では役に立たないので出さない。
     取引態様と広告主（.ptrans）は宅建業法上どうしても必要なので必ず残す。 */
  /* スマホでも出す。iOS でもこのボタンから印刷ダイアログ（＝PDFで保存）に
     入れるので、お客さんが端末を問わず持ち帰れる。問い合わせCTAと競らない
     よう、線だけの控えめな見た目にしてある。 */
  .pkeep { display: flex; flex-wrap: wrap; gap: 8px; }
  .pfav-btn { display: inline-flex; align-items: center; gap: 7px; margin: 10px 0 0; padding: 11px 14px; font-family: var(--font-sans); font-size: .64rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--navy); background: transparent; border: 1px solid rgba(27,42,74,.24); cursor: pointer; }
  .pfav-btn svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linejoin: round; }
  .pfav-btn[aria-pressed="true"] { border-color: #B03A2E; color: #B03A2E; }
  .pfav-btn[aria-pressed="true"] svg { fill: #B03A2E; stroke: #B03A2E; }
  .pfav-btn:hover { border-color: var(--navy); background: rgba(27,42,74,.04); }
  html[lang="ja"] .pfav-btn, html[lang^="zh"] .pfav-btn { text-transform: none; letter-spacing: .06em; font-size: .78rem; }
  .pprint__btn { display: inline-block; width: auto; margin: 10px 0 0; padding: 11px 14px; font-family: var(--font-sans); font-size: .64rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--navy); background: transparent; border: 1px solid rgba(27,42,74,.24); cursor: pointer; }
  .pprint__btn:hover { border-color: var(--navy); background: rgba(27,42,74,.04); }
  .pprint__btn[aria-busy="true"] { opacity: .6; }
  /* 2026-09-21: アプリ内ブラウザだと window.print() が無視されるので、ダイアログが開かなかったときだけ出す案内。 */
  .pprint__hint { margin: 10px 0 0; max-width: 34em; padding: 10px 12px; font-family: var(--font-sans); font-size: .8rem; line-height: 1.65; color: #4A5468; background: #FBF7EF; border-left: 3px solid #B08D57; }
  .pprint__hint[hidden] { display: none; }
  html[lang="ja"] .pprint__btn, html[lang^="zh"] .pprint__btn { text-transform: none; letter-spacing: .06em; font-size: .78rem; }
  .pprint-meta, .pplan-print, .pmap__print { display: none; }

  @media print {
    /* ── 物件シート（2026-09-20 オーナー指示で全面的に作り直し）────────────
       目的は「お客さんが気に入った物件を持ち帰る」こと。読み物ではないので、
       紙に載せるのは問い合わせと記録に要るものだけにして A4 1枚に収める。

       載せるもの: 写真（主写真＋サムネ5枚まで）／物件名・所在・価格・当サイトの参照番号
                   ／主要スペック帯／間取図（大きく）／物件概要の表
                   ／取引態様・広告主（宅建業法34条1項・表示規約）
                   ／印刷元URLと印刷日
       落とすもの: 説明文・ハイライト・立地の文章・共用施設・ご確認ください・
                   相場チャート・関連物件・問い合わせフォーム・地図。
       ★地図は載せない。Chrome の印刷は別ドメインの iframe を描画しないので
         埋め込み地図は紙に出ず、静的地図APIを使うとキーの管理が増えるため、
         2026-09-20 に「載せない」で確定した。所在地は概要表に入っている。 */
    @page { size: A4 portrait; margin: 7mm 9mm 7mm; }

    html, body { background: #fff !important; font-size: 8pt; line-height: 1.3; }
    body { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
    .container { max-width: none !important; width: auto !important; padding: 0 !important; margin: 0 !important; }

    /* 紙では意味を持たないもの、および読み物の部分 */
    .nav, .nav__mobile, .footer, .pmbar, .pdetail-back,
    .pgal__nav, .pgal__count, .pgal__note, .pgal__bg, .pgal__caption,
    .pinfo__cta, .pprint__btn, .pfav-btn, .pkeep, .penq, .penq__alt, .penq__request,
    .pmore__btn, .prel, .pmap, .pmap__note, .pmap__link,
    .pinfo__verified, .pinfo__entrust-note { display: none !important; }
    body.has-pmbar .footer { padding-bottom: 0 !important; }

    /* 本文セクションは既定で落とし、表のあるセクション（物件概要）だけ残す。
       英語版は .ppair の左列＝物件概要、右列＝リフォーム。1枚に収めるため
       右列は落とす。日本語・中文版も同じ構造なのでこの1行で足りる。 */
    .pdetail-sec { display: none !important; }
    .pdetail-sec:has(table) { display: block !important; padding: 2.5mm 0 0 !important; background: none !important; border: 0 !important; }
    .ppair { display: block !important; }
    .ppair__col + .ppair__col { display: none !important; }
    .ptrans { display: block !important; }

    /* スクロールで出てくる演出は、印刷だと真っ白のまま刷られてしまう */
    .fade-in, [class*="fade"] { opacity: 1 !important; transform: none !important; animation: none !important; }
    /* 折りたたみ（スマホのアコーディオン）は開いた状態で刷る */
    .m-acc:not(.is-open) > .m-acc__hd ~ * { display: revert !important; }

    /* 冒頭: 写真を左、名前・価格を右 */
    .psummary { padding: 0 0 2mm !important; background: none !important; }
    .psummary__grid { display: grid !important; grid-template-columns: 56% 44% !important; gap: 5mm !important; align-items: start !important; }
    .psummary__aside { position: static !important; }
    .pgal__stage { border: .4pt solid #ccc !important; }
    .pgal__img { max-height: 40mm !important; object-fit: contain !important; aspect-ratio: auto !important; }
    /* サムネは5枚まで。全部載せても紙の上では小さすぎて役に立たない。 */
    .pgal__thumbs { display: grid !important; grid-template-columns: repeat(5, minmax(0, 1fr)) !important; gap: 1.2mm !important; overflow: visible !important; margin-top: 1.5mm !important; }
    .pgal__thumb { display: block !important; width: 100% !important; height: 13mm !important; min-width: 0 !important; padding: 0 !important; border: .4pt solid #ddd !important; overflow: hidden !important; }
    .pgal__thumb:nth-child(n+6) { display: none !important; }
    .pgal__thumb img { display: block !important; width: 100% !important; height: 100% !important; object-fit: cover !important; }
    .pinfo__title { font-size: 14pt !important; margin: 0 0 1mm !important; }
    .pinfo__sub { font-size: 8.4pt !important; margin: 0 0 1.5mm !important; }
    .pinfo__loc { font-size: 8.4pt !important; margin: 0 0 1.5mm !important; }
    .pinfo__price { font-size: 13pt !important; margin: 1.5mm 0 !important; }
    .pinfo__ref { font-size: 7.6pt !important; }
    .pinfo__tags { margin-bottom: 1.5mm !important; }
    .ptag { border: .4pt solid #999 !important; background: none !important; color: #333 !important; }

    /* 主要スペック帯 */
    .pspecstrip { padding: 1.4mm 0 !important; background: none !important; border-top: .4pt solid #ccc !important; border-bottom: .4pt solid #ccc !important; }
    /* 項目数は物件により4〜6。4列固定だと5つ目が2行目に落ちて間延びするので、
       いくつあっても横1行に並べる。 */
    .pspecrow { display: grid !important; grid-template-columns: none !important;
      grid-auto-flow: column !important; grid-auto-columns: 1fr !important; }
    .pspec { border-top: 0 !important; border-left: .4pt solid #ddd !important; padding: 0 3mm !important; }
    .pspec:first-child { border-left: 0 !important; }
    .pspec__value { font-size: 8.6pt !important; line-height: 1.15 !important; }
    .pspec__label { font-size: 5.8pt !important; margin-top: .4mm !important; line-height: 1.15 !important; }

    /* 間取図と物件概要の表は左右に並べる。縦に積むとそれだけで紙1枚を
       越えてしまうため。間取図を左に浮かせ、表は右半分に流す。 */
    .pplan-print { display: block !important; float: left !important; width: 46% !important; padding: 2.5mm 0 0 !important; }
    .pdetail-sec:has(table) { margin-left: 50% !important; }
    .ptrans { clear: both !important; }
    .pplan-print__h { font-family: var(--font-sans) !important; font-size: 9.4pt !important; font-weight: 700 !important; color: #1b2a4a !important; margin: 0 0 1.5mm !important; }
    .pplan-print__fig { margin: 0 !important; text-align: center; break-inside: avoid; }
    .pplan-print__fig:nth-of-type(n+2) { display: none !important; }
    .pplan-print__fig img { display: block; width: auto; max-width: 100%; max-height: 72mm; margin: 0 auto; border: .4pt solid #ddd; }
    .pplan-print__fig figcaption { margin-top: 1mm; font-size: 7pt; color: #666; }

    /* 物件概要の表 */
    .pdetail-sec h2, .pblock h2 { font-family: var(--font-sans) !important; font-size: 9.4pt !important; font-weight: 700 !important; color: #1b2a4a !important; margin: 0 0 1.2mm !important; padding: 0 !important; }
    .pblock { margin: 0 !important; max-width: none !important; }
    .ptable-wrap { overflow: visible !important; }
    /* 表の見出し列を細くすると値の折り返しが減り、行数＝紙の高さが縮む。
       日本語版は項目が多く、ここが1枚に収まるかどうかを一番左右する。 */
    .ptable th, .ptable td { padding: .22mm 1.4mm !important; font-size: 6.7pt !important; line-height: 1.16 !important; }
    .ptable th { width: 27% !important; }
    .pfact { padding: .7mm 0 !important; }
    .pblock__note, .pnote { font-size: 6.8pt !important; }

    /* ── 取引態様・広告主（宅建業法34条1項・表示規約で必須）─────────
       2026-09-22 オーナー指示：ここはマイソクの帯（10_MYSOKU/_obi）と
       同じ形にする。角丸の細い枠に、ロゴ・会社情報・連絡先を横に並べる。
       見本: _obi/samples/帯見本_en.pdf */
    .ptrans { padding: 0 !important; margin-top: 2.2mm !important; border: 0 !important; break-inside: avoid; }
    .ptrans .pblock { font-size: 6.4pt !important; column-count: 1 !important; }
    .ptrans h2 { display: none !important; }
    .ptrans__grid { display: flex !important; align-items: center !important;
      gap: 4mm !important; margin: 0 !important;
      border: .7pt solid #1B2A4A !important; border-radius: 2.4mm !important;
      padding: 2mm 3.5mm !important; }
    .ptrans__obi { display: none !important; }
    .ptrans__logo { display: block !important; flex: 0 0 auto; height: 9.5mm; width: auto; }
    .ptrans__roles, .ptrans__broker, .ptrans__contact { margin: 0 !important; }
    .ptrans__roles { flex: 0 0 auto; padding-right: 3.5mm !important; border-right: .4pt solid #ccc !important; }
    .ptrans__roles dt, .ptrans__roles dd { margin: 0 !important; padding: 0 !important; line-height: 1.3 !important; }
    .ptrans__broker { flex: 1 1 auto; padding: 0 !important; border-left: 0 !important; }
    .ptrans__broker-label { display: none !important; }
    .ptrans__broker p, .ptrans__broker div { margin: 0 !important; line-height: 1.3 !important; }
    /* 会社名の行だけ下線を引く（帯の見本と同じ） */
    /* 会社名の行だけ下線（帯の見本と同じ）。ラベルが先頭の div なので
       :first-of-type では当たらない。隣接セレクタで1行目を取る。 */
    .ptrans__broker-label + .ptrans__broker-line { font-weight: 700 !important;
      border-bottom: .5pt solid #1B2A4A !important; display: inline-block !important; margin-bottom: .5mm !important; }
    .ptrans__addr { display: block !important; }
    .ptrans__contact { display: block !important; flex: 0 0 auto; text-align: left;
      padding-left: 3.5mm !important; border-left: .4pt solid #ccc !important; line-height: 1.3 !important; }
    .ptrans__contact div { margin: 0 !important; }
    .ptrans__dates, .ptrans__disclaimer { margin: 1.2mm 0 0 !important; font-size: 6.2pt !important; line-height: 1.25 !important; }

    /* 紙になった後も、どのページのいつ時点の内容かが分かるように */
    .pprint-meta { display: block !important; margin-top: 2mm; padding-top: 1.5mm; border-top: .4pt solid #bbb; font-size: 5.9pt; line-height: 1.18; color: #555; }
    .pprint-meta p { margin: 0 0 .3mm !important; }
    .pprint-meta__src { word-break: break-all; }


    /* ── 紙の体裁（2026-09-22 オーナー指示）──────────────────────
       マイソクのような1枚ものにはしないが、淡白になりすぎないようにする。
         ・上に紺のマストヘッド（RE/MAX INTERFACE＝仲介の名義。AOKI LIVING ではない）
         ・写真は箱いっぱいの帯、価格は紙の中で一番強い要素
         ・下の「取引態様・広告主」はマイソクの帯（_obi/samples/帯見本_en.pdf）と同じ形
       英語は A4 1枚、日本語は2枚まで。printcheck.mjs で毎回確かめること。 */
    .pprint-brand {
      display: flex !important; align-items: baseline; justify-content: space-between;
      gap: 4mm; padding: 1.5mm 3mm; margin: 0 0 2.6mm;
      background: #0F1A30 !important; color: #fff !important; break-inside: avoid;
    }
    .pprint-brand__l { display: flex !important; align-items: center; gap: 2.6mm; }
    /* ロゴの原画は白地なので、白いチップに載せる（サイトのヘッダーと同じ扱い）。 */
    .pprint-brand__logo { display: block; height: 5.4mm; width: auto;
      background: #fff !important; padding: .7mm 1.2mm; border-radius: .6mm; }
    .pprint-brand__co { font-family: var(--font-sans) !important; font-size: 7.4pt; font-weight: 700;
      letter-spacing: .04em; color: #fff !important; }
    .pprint-brand__r { font-family: var(--font-sans) !important; font-size: 6.2pt; font-weight: 600;
      letter-spacing: .06em; color: rgba(255,255,255,.75) !important; white-space: nowrap; }

    /* 写真: 箱いっぱいの帯にする。以前は contain で左右が大きく空き、
       紙が間延びする一番の原因になっていた。縦位置の建物写真も帯に
       断ち切った方が紙の上では強い。 */
    .pgal { display: block !important; }
    .pgal__stage { display: block !important; width: 100% !important; height: 34mm !important;
      border: .4pt solid #ddd !important; border-radius: 0 !important; background: #fff !important; }
    .pgal__img { display: block !important; width: 100% !important; height: 100% !important;
      max-width: none !important; max-height: none !important; aspect-ratio: auto !important;
      object-fit: cover !important; }
    /* 元が小さい／図面のものは切らずに収める（サイト側の判定をそのまま使う） */
    .pgal__stage[data-mode="contain"] .pgal__img,
    .pgal__stage[data-mode="thumbnail-only"] .pgal__img { object-fit: contain !important; }
    .pgal__thumbs { display: grid !important; grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
      grid-auto-rows: 12mm !important; gap: 1.2mm !important; margin-top: 1.2mm !important; overflow: visible !important; }
    .pgal__thumb { height: auto !important; }
    .pgal__thumb:nth-child(n+6) { display: none !important; }

    /* 価格を紙の中で一番強い要素にする */
    .pinfo__price { font-size: 16pt !important; line-height: 1.05 !important;
      margin: 1.6mm 0 1.2mm !important; padding-bottom: 1.2mm !important;
      border-bottom: 1pt solid #A8895C !important; }

    /* スペック帯にうすい地を敷いて、紙の区切りをはっきりさせる */
    .pspecstrip { background: #F8F6F1 !important; padding: 1.6mm 0 !important; }

    /* 見出しの前にゴールドの短い罫。線一本で「作ってある」感じが出る。 */
    .pplan-print__h::before, .pdetail-sec h2::before, .pblock h2::before, .ptrans h2::before {
      content: ""; display: block; width: 7mm; height: .9pt;
      background: #A8895C; margin: 0 0 1.1mm;
    }

    /* 空いていた下半分にハイライトを戻す。読み物ではなく箇条書きなので紙向き。 */
    /* ハイライトは間取図の下（左の列）に置く。右の列は概要表が上から通しで入る。
       ★ DOM 上はハイライトが表より前なので、全幅にして clear すると表まで
         下へ押し出されて紙が2枚になる。左の列に流すのが唯一きれいに収まる形。 */
    .pdetail-sec:has(#section-highlights) { display: block !important;
      float: left !important; clear: left !important; width: 46% !important; margin-left: 0 !important;
      padding: 2.2mm 0 0 !important; background: none !important; border: 0 !important; }
    #section-highlights { max-width: none !important; }
    #section-highlights .pbul { columns: 1 !important; margin: 0 !important; }
    #section-highlights .pbul li { font-size: 6.9pt !important; line-height: 1.2 !important;
      margin: 0 0 .5mm !important; break-inside: avoid; }
    /* 紙は A4 1枚に収める約束。物件によって箇条書きの長さがかなり違うので、
       上から4項目まで。高さで切る歯止め（overflow:hidden）は、印刷時に
       ページ送りが壊れて5枚になったので使わないこと。 */
    #section-highlights .pbul li:nth-child(n+5) { display: none !important; }

    .pprint-meta { margin-top: 1.4mm !important; padding-top: 1mm !important; }

    a { color: inherit !important; text-decoration: none !important; }
    img { max-width: 100% !important; }
  }
  /* 2026-09-24 (ad plan): reference US-dollar line under the yen price, the
     two guide links, and the reply-time / brokerage lines under the form. */
  .pinfo__usd {
    font-family: var(--font-sans); font-size: .82rem; font-weight: 600;
    color: var(--navy-dark); margin: -6px 0 14px;
  }
  .pinfo__usd span { font-weight: 400; color: var(--gray); font-size: .74rem; }
  .pinfo__unit { font-family: var(--font-sans); font-size: .82rem; font-weight: 600; color: var(--navy-dark); margin: -8px 0 14px; }
  /* ★ 2026-10-03 layout v2 (Breeze Tower pilot) */
  .pinfo__unit + .pinfo__monthly { margin-top: -10px; }
  .pinfo__monthly { font-family: var(--font-sans); font-size: .82rem; color: var(--navy-dark); margin: 0 0 14px; }
  .pinfo__monthly b { font-weight: 700; }
  .pinfo__monthly span { display: block; font-size: .72rem; color: var(--gray); }
  .pcost { margin: -4px 0 12px; max-width: 360px; }
  .pcost__top { display: flex; justify-content: space-between; align-items: baseline; font-family: var(--font-sans); }
  .pcost__lab { font-size: .78rem; font-weight: 600; color: var(--navy-dark); }
  .pcost__tot { font-size: .95rem; font-weight: 700; color: var(--navy-dark); }
  .pcost__tot small { font-size: .74rem; font-weight: 500; color: var(--gray); }
  .pcost__bar { display: flex; height: 8px; margin: 6px 0 5px; border-radius: 4px; overflow: hidden; background: var(--gold, #b08d4f); }
  .pcost__a { background: var(--navy-dark); }
  .pcost__key { display: flex; flex-wrap: wrap; gap: 4px 14px; font-family: var(--font-sans); font-size: .7rem; color: var(--charcoal); }
  .pcost__dot { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 5px; vertical-align: 0; }
  .pcost__dot--a { background: var(--navy-dark); } .pcost__dot--b { background: var(--gold, #b08d4f); }
  .pown { display: flex; align-items: center; gap: 7px; margin: 0 0 14px; font-family: var(--font-sans); font-size: .8rem; color: var(--navy-dark); }
  .pown svg { width: 17px; height: 17px; flex: none; fill: none; stroke: var(--gold, #b08d4f); stroke-width: 1.6; stroke-linejoin: round; }
  .pinc__basis { margin-left: 4px; padding: 1px 6px; border: 1px solid rgba(27,42,74,.25); border-radius: 3px; font-style: normal; font-size: .6rem; letter-spacing: .06em; text-transform: uppercase; color: var(--gray); }
  .pinc__yield { margin: 4px 0 2px; font-family: var(--font-sans); font-size: .8rem; color: var(--navy-dark); }
  .pinc__yield span { font-size: .7rem; color: var(--gray); }
  .pinc__note { margin: 2px 0 4px; font-family: var(--font-sans); font-size: .72rem; line-height: 1.45; color: var(--charcoal); }
  .pinc__units { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; gap: 3px; margin: 6px 0 5px; }
  .pinc__units span { height: 8px; border-radius: 2px; background: rgba(27,42,74,.12); }
  .pinc__units span.on { background: var(--navy-dark); }
  .pfeat__chip .pfeat__n { display: inline-flex; gap: 1px; }
  .pfeat__chip .pfeat__n svg { width: 14px; height: 14px; }
  @media (max-width: 767px) {
    .pinfo:has(.pcost) .pinfo__ref, .pinfo:has(.pcost) .pinfo__verified { display: inline; margin-right: 10px; font-size: .7rem; }
    .pinfo:has(.pcost) .pinfo__ref, .pinfo:has(.pcost) .pinfo__verified { font-size: .68rem; }
    /* v3: E-mail on one row, Save + Print side by side on the next (was three rows) */
    .pinfo:has(.pcost) .pkeep { display: flex; flex-wrap: nowrap; gap: 8px; }
    .pinfo:has(.pcost) .pkeep .pfav-btn, .pinfo:has(.pcost) .pkeep .pprint__btn { flex: 1 1 0; width: auto !important; margin: 8px 0 0 !important; justify-content: center; padding: 10px 8px; }
  }
  .pabout-left { margin-top: 24px; }
  .pabout-left > .pblock { padding: 0 !important; margin: 0 !important; max-width: none !important; background: none !important; }
  .pfeat { list-style: none; margin: 14px 0 4px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
  .pfeat__chip { display: inline-flex; align-items: center; gap: 7px; padding: 6px 12px 6px 10px; background: #fff;
    border: 1px solid rgba(27,42,74,.14); border-radius: 999px; font-family: var(--font-sans); font-size: .76rem; font-weight: 600; color: var(--navy-dark); }
  .pfeat__chip svg { width: 17px; height: 17px; flex: none; fill: none; stroke: var(--gold, #b08d4f); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
  .pplan-key { margin: 6px 0 0; font-family: var(--font-sans); font-size: .72rem; line-height: 1.6; color: var(--gray); text-align: center; }
  .penq__one { margin: 14px 0 0; font-family: var(--font-sans); font-size: .8rem; color: var(--charcoal); text-align: center; }
  .penq__one a { font-weight: 700; color: var(--navy-dark); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(176, 141, 87, .7); }  /* 2026-10-09 owner: show they are links */
  .penq__one a:hover { color: #8E7248; }
  .penq__more { margin-top: 12px; font-family: var(--font-sans); font-size: .78rem; }
  .penq__more > summary { cursor: pointer; font-weight: 700; color: var(--gold-muted); letter-spacing: .04em; }
  @media print { .pfeat, .penq__one, .penq__more, .pinfo__monthly span { display: none !important; } }
  .pinfo__guides {
    font-family: var(--font-sans); font-size: .8rem; line-height: 1.6;
    margin: 12px 0 0; color: var(--gray);
  }
  .pinfo__guides a { color: var(--navy-dark); text-decoration: underline; text-underline-offset: 3px; }
  .penq__note--reply { font-weight: 600; color: var(--navy-dark); }
  .penq__note--broker { font-size: .72rem; color: var(--gray); }
  /* 2026-10-07 owner: the related-article card was too big -> one small line under the step-by-step link */
  .pinfo__article { margin: 4px 0 0; font-family: var(--font-sans); font-size: .82rem; line-height: 1.5; }
  .pinfo__article-k { font-size: .66rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--gold-muted, #8a6d3b); margin-right: 4px; }
  .pinfo__article a { color: var(--navy-dark); text-decoration: underline; text-underline-offset: 2px; }
  @media print { .pinfo__usd, .pinfo__guides, .pinfo__article { display: none !important; } }
  /* ── 印刷用「1枚もの」物件シート（2026-09-25 オーナー承認）──────────────
     /js/print-sheet.js がページ内の値から #xs を組み立て、<html> に .has-xs を付ける。
     以下はすべて .has-xs の下だけで効く（中文ページや JS が動かない場合は従来の印刷のまま）。A4 1枚（英・日）は printcheck.mjs で確認。 */
  .xs { display: none; }
  @media print {
  /* 既存の印刷ルール（#section-highlights など id 付き）より強くするため :not(#xs) を重ねる */
  html.has-xs body > :not(#xs):not(#xs) { display: none !important; }
  .xs {
    --navy: #0F1A30; --navy2: #1B2A4A; --gold: #A8895C; --gold2: #C9AE82; --cream: #F7F3EA; --line: #E4DED2; --ink: #1F2533; --muted: #6B7280;
    display: flex !important; flex-direction: column; min-height: 282mm; gap: 2.6mm;
    font-family: var(--font-sans); color: var(--ink); font-size: 7.4pt; line-height: 1.35;
  }
  .xs h1, .xs h2 { margin: 0; }
  .xs-title h1, .xs-price strong, .xs-fact b { font-variant-numeric: lining-nums; font-feature-settings: 'lnum' 1; }
  .xs figure { margin: 0; }
  .xs img { max-width: none !important; }

  /* 1. マストヘッド */
  .xs-head { display: flex; align-items: center; justify-content: space-between; background: var(--navy); color: #fff;
    padding: 1.8mm 3.2mm; border-bottom: .9mm solid var(--gold); }
  .xs-head__l { display: flex; align-items: center; gap: 2.6mm; font-weight: 700; font-size: 7.6pt; letter-spacing: .03em; }
  .xs-head__l img { height: 5.2mm; background: #fff; padding: .6mm 1.1mm; border-radius: .6mm; }
  .xs-head__r { display: flex; flex-direction: column; align-items: flex-end; gap: .4mm; font-size: 5.8pt; color: rgba(255,255,255,.72); }
  .xs-head__r b { font-size: 6.4pt; letter-spacing: .14em; text-transform: uppercase; color: var(--gold2); }
  html[lang="ja"] .xs-head__r b { text-transform: none; letter-spacing: .08em; }

  /* 2. 物件名と価格 */
  .xs-title { display: flex; align-items: stretch; justify-content: space-between; gap: 5mm; }
  .xs-title__l { flex: 1 1 auto; min-width: 0; padding-top: .6mm; }
  .xs-chip { display: inline-block; font-size: 5.6pt; font-weight: 700; letter-spacing: .16em; text-transform: uppercase;
    color: var(--gold); border: .5pt solid var(--gold); padding: .5mm 1.8mm; margin-bottom: 1.4mm; }
  html[lang="ja"] .xs-chip { letter-spacing: .06em; }
  .xs-title h1 { font-family: var(--font-serif); font-weight: 600; font-size: 20pt; line-height: 1.02; color: var(--navy2); letter-spacing: .01em; }
  html[lang="ja"] .xs-title h1 { font-size: 19pt; font-weight: 700; }
  .xs-sub { margin: 1.3mm 0 0; font-size: 8.2pt; color: var(--ink); }
  .xs-loc { margin: .5mm 0 0; font-size: 7.4pt; color: var(--muted); }
  .xs-price { flex: 0 0 60mm; display: flex; flex-direction: column; justify-content: center; align-items: flex-end;
    background: var(--navy); color: #fff; padding: 2.6mm 4mm; border-left: 1.2mm solid var(--gold); }
  .xs-price span { font-size: 5.8pt; letter-spacing: .16em; text-transform: uppercase; color: var(--gold2); }
  html[lang="ja"] .xs-price span { letter-spacing: .08em; }
  .xs-price strong { font-family: var(--font-serif); font-weight: 600; font-size: 21pt; line-height: 1.05; margin-top: .6mm; white-space: nowrap; }
  .xs-price strong small { font-size: .5em; margin-left: .6mm; }

  /* 3. 写真（主写真＋2枚＋帯4枚） */
  .xs-photos { display: flex; flex-direction: column; gap: 1.4mm; }
  .xs-mos { display: grid; grid-template-columns: 2fr 1fr; grid-template-rows: 1fr 1fr; gap: 1.4mm; height: 70mm; }
  .xs-mos--one { grid-template-columns: 1fr; grid-template-rows: 1fr; height: 66mm; }
  .xs-mos__hero { grid-row: 1 / 3; }
  .xs-mos figure, .xs-strip figure { overflow: hidden; background: var(--cream); }
  .xs-mos img, .xs-strip img { display: block; width: 100%; height: 100%; object-fit: cover; }
  .xs-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.4mm; height: 18mm; }

  /* 4. 主要スペック */
  .xs-facts { display: grid; grid-auto-flow: column; grid-auto-columns: 1fr; background: var(--cream);
    border-top: .5pt solid var(--gold); border-bottom: .5pt solid var(--gold); }
  .xs-fact { padding: 1.4mm 2mm; border-left: .4pt solid var(--line); text-align: center; }
  .xs-fact:first-child { border-left: 0; }
  .xs-fact b { display: block; font-family: var(--font-serif); font-size: 11.5pt; font-weight: 600; line-height: 1.1; color: var(--navy2); }
  html[lang="ja"] .xs-fact b { font-size: 10pt; font-weight: 700; }
  .xs-fact span { display: block; margin-top: .6mm; font-size: 5.4pt; letter-spacing: .12em; text-transform: uppercase; color: var(--gold); font-weight: 700; }
  html[lang="ja"] .xs-fact span { letter-spacing: .04em; }

  /* 5. 間取図・ポイント／物件概要 */
  .xs-low { flex: 1 0 auto; display: grid; grid-template-columns: 42% 1fr; gap: 5mm; }
  .xs-low h2 { font-size: 8pt; font-weight: 700; color: var(--navy2); letter-spacing: .04em; margin: 0 0 1.4mm; display: flex; align-items: center; gap: 2mm; }
  .xs-low h2::before { content: ""; width: 5mm; height: .9pt; background: var(--gold); }
  .xs-low__l { display: flex; flex-direction: column; min-height: 0; }
  .xs-plan { flex: 0 1 auto; min-height: 0; border: .5pt solid var(--line); padding: 2mm; margin-bottom: 2.4mm; text-align: center; }
  .xs-plan img { max-width: 100% !important; max-height: 50mm; width: auto; }
  .xs-plan figcaption { margin-top: .8mm; font-size: 5.8pt; color: var(--muted); }
  .xs-points { list-style: none; margin: 0; padding: 0; }
  .xs-points li { position: relative; padding-left: 4mm; margin: 0 0 1mm; font-size: 6.9pt; line-height: 1.3; }
  .xs-points li::before { content: ""; position: absolute; left: .3mm; top: 1mm; width: 1.6mm; height: .9mm;
    border-left: .8pt solid var(--gold); border-bottom: .8pt solid var(--gold); transform: rotate(-45deg); }
  .xs-table { width: 100%; border-collapse: collapse; }
  .xs-table th, .xs-table td { padding: .4mm 1.6mm; font-size: 6.2pt; line-height: 1.2; vertical-align: top; text-align: left; border-bottom: .3pt solid var(--line); }
  .xs-table tr:nth-child(odd) td, .xs-table tr:nth-child(odd) th { background: #FBF9F4; }
  .xs-table th { width: 26%; font-weight: 600; color: var(--muted); }
  .xs-table td { color: var(--ink); font-weight: 500; }
  .xs-table td a { color: inherit; text-decoration: none; }

  /* 6. 帯（取引態様・広告主）＋QR */
  .xs-foot { display: flex; align-items: stretch; gap: 3mm; }
  /* 2026-09-29 オーナー指摘「稀に帯が物件概要に重なる」: 以前は .xs の高さ固定＋.xs-low が縮むため、
     物件概要の行が多いと中身が帯の上にはみ出していた。帯は必ず中身の下に置き（重ねない）、
     行が多い物件は print-sheet.js が .xs--dense / .xs--xdense を付けて写真・間取図・文字を詰める。
     それでも入らないときは2枚目に回る（オーナー了承「最悪1枚に収まりきらないときは仕方ない」）。 */
  .xs-foot { flex: 0 0 auto; break-inside: avoid; page-break-inside: avoid; }
  .xs.xs--dense { gap: 2mm; }
  .xs--dense .xs-mos { height: 60mm; }
  .xs--dense .xs-mos--one { height: 56mm; }
  .xs--dense .xs-strip { height: 15mm; }
  .xs--dense .xs-plan img { max-height: 44mm; }
  .xs--dense .xs-table th, .xs--dense .xs-table td { padding: .25mm 1.4mm; font-size: 5.9pt; line-height: 1.16; }
  .xs.xs--xdense { gap: 1.6mm; }
  .xs--xdense .xs-mos { height: 50mm; }
  .xs--xdense .xs-mos--one { height: 48mm; }
  .xs--xdense .xs-strip { display: none; }
  .xs--xdense .xs-plan img { max-height: 38mm; }
  .xs--xdense .xs-points li { font-size: 6.4pt; margin-bottom: .6mm; }
  .xs--xdense .xs-table th, .xs--xdense .xs-table td { padding: .15mm 1.2mm; font-size: 5.5pt; line-height: 1.12; }
  .xs-foot .ptrans { flex: 1 1 auto; margin: 0 !important; display: block !important; }
  .xs-foot .ptrans .container { padding: 0 !important; }
  .xs-qr { flex: 0 0 auto; display: flex; align-items: center; gap: 2mm; padding: 1.6mm 2.6mm; border: .7pt solid var(--navy2); border-radius: 2.4mm; }
  .xs-qr img { width: 15mm; height: 15mm; }
  .xs-qr span { font-size: 6pt; font-weight: 700; line-height: 1.3; color: var(--navy2); }
  .xs .pprint-meta { display: block !important; margin: 0 !important; padding-top: 1mm !important; border-top: .4pt solid var(--line) !important;
    font-size: 5.2pt !important; line-height: 1.25 !important; color: var(--muted) !important; }
  .xs .pprint-meta p { display: inline !important; margin-right: 3mm !important; font-size: 5.2pt !important; line-height: 1.25 !important; }
}
  /* ★ 2026-10-12 first-screen card on phones (detail-page.mjs firstCard) */
  .pfirst { display: none; }
  @media screen and (max-width: 767px) {
    .pfirst { display: block; background: #fff; border: 1px solid #e6e1d6; border-radius: 12px; padding: 14px 14px 12px; margin: 10px 0 14px; box-shadow: 0 2px 10px rgba(0,0,0,.05); }
    .pfirst__tags { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 6px; }
    .pfirst__tag { font-size: 11px; letter-spacing: .06em; text-transform: uppercase; border: 1px solid #d9c27a; background: #f7eccb; color: #5a4a12; border-radius: 4px; padding: 2px 7px; font-weight: 700; }
    .pfirst__tag--live { background: #e7f3ea; border-color: #a9d3b5; color: #1f5b33; }
    .pfirst__name { font-family: var(--font-display, Georgia, serif); font-size: 24px; line-height: 1.2; margin: 4px 0 2px; color: var(--navy, #14213d); letter-spacing: .02em; font-weight: 700; }
    .pfirst__loc { font-size: 14px; color: #555; margin: 0 0 6px; }
    .pfirst__price { font-family: var(--font-display, Georgia, serif); font-size: 26px; color: var(--navy, #14213d); margin: 0 0 10px; }
    .pfirst__price span { display: block; font-family: inherit; font-size: 14px; color: #666; }
    .pfirst__facts { list-style: none; display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; padding: 0; margin: 0 0 12px; }
    .pfirst__facts li { background: #f6f4ef; border-radius: 8px; padding: 7px 6px; text-align: center; }
    .pfirst__facts b { display: block; font-size: 15px; color: var(--navy, #14213d); }
    .pfirst__facts small { display: block; font-size: 11px; line-height: 1.3; color: #666; }
    .pfirst__btns { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
    .pfirst__btns--one { grid-template-columns: 1fr; }
    .pfirst__btn { display: block; text-align: center; padding: 12px 6px; border-radius: 8px; border: 1px solid var(--navy, #14213d); color: var(--navy, #14213d); font-weight: 700; font-size: 14px; text-decoration: none; }
    .pfirst__btn--main { background: var(--navy, #14213d); color: #fff; }
    .pfirst__note { font-size: 12.5px; color: #555; margin: 8px 0 0; text-align: center; }
  }
  @media print { .pfirst { display: none !important; } }
  /* ★2026-10-13 R17・R18（オーナー「改善できるところを全部やってください」）スマホだけ：
     写真 → 物件名・価格・毎月の費用（.pinfo）→ ボタン（.pfirst）→ 要点 → 間取図 → 問い合わせ の順。
     .pfirst の名前・場所・価格・要点は .pinfo / .pkeyfacts と重複するので隠す（ボタンと一言は残す）。PC は変えない。 */
  @media screen and (max-width: 767px) {
    .psummary > .container:has(> .pfirst) { display: flex; flex-direction: column; }
    .psummary > .container:has(> .pfirst) > .psummary__grid,
    .psummary > .container:has(> .pfirst) .psummary__media,
    .psummary > .container:has(> .pfirst) .psummary__aside { display: contents; }
    .psummary > .container:has(> .pfirst) > .pdetail-back { order: 0; }
    .psummary > .container:has(> .pfirst) .pvisit { order: 1; margin-bottom: 14px; }
    .psummary > .container:has(> .pfirst) .pgal { order: 2; }
    .psummary > .container:has(> .pfirst) .pinfo { order: 3; margin-top: 16px; }
    .psummary > .container:has(> .pfirst) > .pfirst { order: 4; margin-top: 0; }
    .psummary > .container:has(> .pfirst) .pkeyfacts { order: 5; margin: 0 0 16px; }
    .psummary > .container:has(> .pfirst) .pfeat { order: 6; margin: 0 0 16px; }
    .psummary > .container:has(> .pfirst) .pplan-screen { order: 7; margin: 0 0 16px; }
    .psummary > .container:has(> .pfirst) .penq { order: 8; }
    .pfirst__tags, .pfirst__name, .pfirst__loc, .pfirst__price, .pfirst__facts { display: none; }
    /* 内見動画のある物件：動画 → 物件名・価格 → ボタン → 写真 の順（物件名を1画面目に） */
    .psummary > .container:has(> .pfirst):has(.pvisit) .pinfo { order: 2; }
    .psummary > .container:has(> .pfirst):has(.pvisit) > .pfirst { order: 3; }
    .psummary > .container:has(> .pfirst):has(.pvisit) .pgal { order: 4; }
  }
  /* ★2026-10-15 アクセス分析の改善3（オーナー了承）: スマホの最初の画面に駅と徒歩を出す（PC は出さない）。
     写真はタップで次へ・左側のタップで前へ・左右スワイプで送る。拡大表示はしない（2026-08-05 オーナー指示のまま）。 */
  .pinfo__stn { display: none; }
  @media screen and (max-width: 767px) {
    .pinfo__stn { display: block; font-family: var(--font-sans); font-size: .9rem; font-weight: 600; color: var(--navy, #1f2a44); margin: -8px 0 14px; }
    .pgal__stage { cursor: pointer; touch-action: pan-y; -webkit-tap-highlight-color: transparent; }
  }
