@charset "UTF-8";
/* ==================================================================
   PROGRESS WORKS — Brand Renewal Stylesheet
   Scope: new global header/footer + HOME + (future) new service pages.
   All selectors are prefixed `pw-` so nothing here collides with the
   production styles.css that still serves untouched legacy templates
   (company / contact / staff / achievement / columns / news / etc.).
   ================================================================== */

/* ---------- 1. Design tokens ---------- */
:root{
  /* Brand palette */
  --pw-charcoal: #171717;
  --pw-charcoal-soft: #2b2a28;
  --pw-ivory: #F5F2EC;
  --pw-greige: #8B8175;
  --pw-stone: #E8E3DB;
  --pw-champagne: #D8C6A0;
  --pw-white: #FFFFFF;

  --pw-text-on-light: #171717;
  --pw-text-muted: #6f675c;
  --pw-text-on-dark: #F5F2EC;
  --pw-text-on-dark-muted: #b9b2a5;
  --pw-line-light: rgba(23,23,23,0.12);
  --pw-line-dark: rgba(245,242,236,0.16);

  /* Type */
  --pw-font-en: 'Cormorant Garamond', 'Times New Roman', serif;
  --pw-font-jp-serif: 'Noto Serif JP', serif;
  --pw-font-jp-sans: 'Noto Sans JP', -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic ProN", sans-serif;

  /* Layout */
  --pw-max: 1320px;
  --pw-pad-x: clamp(20px, 5vw, 64px);
  --pw-pad-y: clamp(96px, 11vw, 176px);
  --pw-pad-y-tight: clamp(64px, 7vw, 112px);

  /* Motion */
  --pw-ease: cubic-bezier(.22,.61,.36,1);
}

/* ---------- 2. Base / reset ----------
   Scoped ONLY to the actual new-brand containers (header, footer, hero,
   sub-hero, .pw-section, and the columns-article end-matter block) via
   :is() — never to `body` or `.pw-scope` broadly. Legacy templates
   (company/contact/staff/achievement, and — critically — the existing
   .editor-entry column article body) sit outside every one of these
   containers, so none of this can touch their fonts, links, lists,
   heading margins, or image display. `body` still gets a `pw-scope`
   class for identification, but no CSS rule targets it directly. */
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end),
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end) *{
  box-sizing: border-box;
}
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end){
  color: var(--pw-text-on-light);
  font-family: var(--pw-font-jp-sans);
  -webkit-font-smoothing: antialiased;
  /* The production-only styles.css sets `text-align: justify` on <body>,
     which every descendant inherits — any heading or lead that wraps to
     more than one line then gets its non-final lines stretched to the
     full column width (this is what pushed "Nationwide" and "Villa" to
     opposite edges in HOME's AREAS heading). Reset once here on the
     component root: text-align inherits, so this covers all descendants,
     and being early in the cascade it still lets every intentional
     `text-align:center` later in this file win. See section 31. */
  text-align: left;
}
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end) img{ max-width:100%; display:block; }
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end) a{ color:inherit; text-decoration:none; }
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end) ul,
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end) ol{ list-style:none; margin:0; padding:0; }
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end) h1,
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end) h2,
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end) h3,
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end) h4,
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end) p{ margin:0; }
:is(.pw-header, .pw-footer, .pw-hero, .pw-subhero, .pw-section, .pw-article-end) button{ font:inherit; background:none; border:none; cursor:pointer; color:inherit; }

body.pw-home, body.pw-page{ background: var(--pw-ivory); }

/* ---------- 3. Layout primitives ---------- */
.pw-container{
  max-width: var(--pw-max);
  margin: 0 auto;
  padding-left: var(--pw-pad-x);
  padding-right: var(--pw-pad-x);
}
.pw-section{
  position: relative;
  padding-top: var(--pw-pad-y);
  padding-bottom: var(--pw-pad-y);
}
.pw-section--tight{ padding-top: var(--pw-pad-y-tight); padding-bottom: var(--pw-pad-y-tight); }
.pw-section--ivory{ background: var(--pw-ivory); }
.pw-section--stone{ background: var(--pw-stone); }
.pw-section--white{ background: var(--pw-white); }
.pw-section--dark{ background: var(--pw-charcoal); color: var(--pw-text-on-dark); }
.pw-section--dark .pw-eyebrow{ color: var(--pw-greige); }

/* Typography */
.pw-eyebrow{
  display:flex; align-items:center; gap:.7em;
  font-family: var(--pw-font-en);
  font-size: clamp(13px,1.1vw,15px);
  letter-spacing: .28em;
  text-transform: uppercase;
  color: var(--pw-greige);
  font-weight: 500;
}
.pw-eyebrow .pw-eyebrow-num{
  font-size: 1.3em;
  color: var(--pw-charcoal);
}
.pw-section--dark .pw-eyebrow .pw-eyebrow-num{ color: var(--pw-stone); }
.pw-eyebrow::after{
  content:"";
  width: 40px; height:1px;
  background: currentColor;
  opacity:.5;
}

.pw-h-display{
  font-family: var(--pw-font-en);
  font-weight: 500;
  line-height: .96;
  letter-spacing: -.01em;
  font-size: clamp(44px, 7.2vw, 118px);
  text-transform: uppercase;
}
.pw-h-xl{
  font-family: var(--pw-font-jp-serif);
  font-weight: 500;
  line-height: 1.42;
  letter-spacing: .02em;
  font-size: clamp(28px, 3.4vw, 46px);
}
.pw-h-lg{
  font-family: var(--pw-font-jp-serif);
  font-weight: 500;
  line-height: 1.5;
  font-size: clamp(22px, 2.2vw, 30px);
}
.pw-h-md{
  font-family: var(--pw-font-jp-serif);
  font-weight: 500;
  line-height: 1.55;
  font-size: clamp(19px, 1.6vw, 22px);
}
.pw-lead{
  font-size: clamp(15px, 1.05vw, 17px);
  line-height: 2;
  color: var(--pw-text-muted);
  max-width: 46em;
}
.pw-section--dark .pw-lead{ color: var(--pw-text-on-dark-muted); }
.pw-em{ font-family: var(--pw-font-en); font-style: italic; }

.pw-section-head{ margin-bottom: clamp(40px,5vw,72px); max-width: 720px; }
.pw-section-head .pw-h-xl{ margin-top: 18px; }
.pw-section-head .pw-lead{ margin-top: 20px; }
.pw-section-head--center{ margin-left:auto; margin-right:auto; text-align:center; }
.pw-section-head--center .pw-eyebrow{ justify-content:center; }
.pw-section-head--center .pw-eyebrow::after{ display:none; }

/* HOME only ("03 Our Business" heading, #business is unique to this
   section) — "DEVELOPMENT・REAL ESTATE、" was wrapping mid-phrase after
   the "・" (a valid CJK line-break point even with no space there), and
   the browser was stretching that line to fill its full width, leaving
   "・" stranded alone on the right. Locking this phrase to one line
   above 640px removes that break point entirely; below 640px it's
   allowed to wrap again (the &nbsp; between REAL and ESTATE in the
   markup still keeps those two together). Scoped to #business so no
   other page's heading is affected. */
@media (min-width: 641px){
  #business .pw-nowrap-group{ white-space: nowrap; }
}
/* Below 641px the phrase is allowed to wrap again (see comment above),
   but "・" between DEVELOPMENT and REAL ESTATE is itself a valid CJK
   line-break point, so on narrow SP widths the wrap can still land right
   after it, stranding it alone at the end of the DEVELOPMENT line. Rather
   than fight CJK line-breaking rules, just hide that one character on SP
   — the wrap then reads as a clean break between the two words with
   nothing left dangling. Text content unchanged; PC/tablet (≥641px,
   where the phrase is locked to one line above) keeps showing it. The
   unrelated "・" in "VILLA・MINPAKU" is a different span and untouched. */
@media (max-width: 640px){
  #business .pw-business-dot{ display: none; }
}

/* Buttons */
.pw-btn{
  display:inline-flex; align-items:center; gap:14px;
  font-family: var(--pw-font-en);
  font-size: 15px; letter-spacing:.14em; text-transform:uppercase; font-weight:600;
  padding: 17px 30px;
  border: 1px solid var(--pw-charcoal);
  color: var(--pw-charcoal);
  transition: background .35s var(--pw-ease), color .35s var(--pw-ease), border-color .35s var(--pw-ease);
}
.pw-btn:hover{ background: var(--pw-charcoal); color: var(--pw-ivory); }
.pw-btn .pw-arrow{ width:16px; height:9px; position:relative; overflow:hidden; }
.pw-btn .pw-arrow::before{
  content:"\2192"; position:absolute; inset:0; display:flex; align-items:center;
  transition: transform .35s var(--pw-ease);
}
.pw-btn:hover .pw-arrow::before{ transform: translateX(4px); }
.pw-btn--on-dark{ border-color: var(--pw-stone); color: var(--pw-ivory); }
.pw-btn--on-dark:hover{ background: var(--pw-ivory); color: var(--pw-charcoal); }
.pw-btn--quiet{ border-color: transparent; padding-left:0; padding-right:0; }
.pw-btn--quiet:hover{ background:none; color: var(--pw-greige); }

.pw-textlink{
  display:inline-flex; align-items:center; gap:10px;
  font-size:14px; letter-spacing:.05em;
  border-bottom: 1px solid currentColor;
  padding-bottom: 3px;
}
/* This is an inline-flex box, so a plain <br> inside it does not break the
   line — it just becomes another flex item on the same row. Where a link
   deliberately contains a <br> (currently only OPERATOR CHANGE's
   "運営を変えたい人を、なぜ支援するのか / — Our Story"), let the box wrap and
   turn that <br> into a full-width zero-height item, which is the standard
   way to force a line break inside a flex container. Gated behind :has(br)
   so every other .pw-textlink on the site keeps its exact current single-row
   behaviour. */
.pw-textlink:has(br){ flex-wrap: wrap; }
.pw-textlink br{ flex-basis: 100%; height: 0; }

/* Photo placeholder (temporary — swap with real photography) */
.pw-photo{
  position: relative;
  overflow: hidden;
  background:
    linear-gradient(135deg, rgba(23,23,23,.08), transparent 60%),
    linear-gradient(#e2ddd0, #cfc8b6);
  isolation: isolate;
}
.pw-photo img{ width:100%; height:100%; object-fit:cover; }
.pw-photo::after{
  content:"";
  position:absolute; inset:0;
  background-image: repeating-linear-gradient(135deg, rgba(23,23,23,.05) 0 2px, transparent 2px 18px);
}
.pw-photo:has(img)::after{ display:none; }
.pw-photo-tag{
  position:absolute; left:16px; bottom:16px; z-index:2;
  font-family: var(--pw-font-en);
  font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  color: var(--pw-charcoal);
  background: rgba(245,242,236,.88);
  padding: 6px 12px;
}

/* Reveal-on-scroll (vanilla IO, see renewal.js) */
.pw-reveal{ opacity:0; transform: translateY(28px); transition: opacity .8s var(--pw-ease), transform .8s var(--pw-ease); }
.pw-reveal.is-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){
  .pw-reveal{ opacity:1; transform:none; transition:none; }
}

/* ==================================================================
   4. HEADER / GLOBAL NAV
   ================================================================== */
.pw-header{
  position: fixed; top:0; left:0; right:0; z-index: 500;
  padding: 22px var(--pw-pad-x);
  display:flex; align-items:center; justify-content:space-between;
  color: var(--pw-ivory);
  transition: background .4s var(--pw-ease), color .4s var(--pw-ease), padding .4s var(--pw-ease), border-color .4s var(--pw-ease);
  border-bottom: 1px solid transparent;
}
.pw-header.is-scrolled,
body.pw-no-hero .pw-header{
  background: rgba(245,242,236,.92);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  color: var(--pw-charcoal);
  padding-top: 16px; padding-bottom: 16px;
  border-bottom-color: var(--pw-line-light);
}
/* backdrop-filter above makes .pw-header a containing block for its
   position:fixed child .pw-nav, collapsing the full-screen mobile drawer
   down to the header's own height. Drop it while the drawer is open. */
body.pw-nav-open .pw-header{
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
/* Lock background scroll while the mobile drawer is open. position:fixed
   on body (not just overflow:hidden) is needed for iOS Safari, where
   overflow:hidden alone still allows the page behind a fixed overlay to
   scroll/bounce. renewal.js sets body.style.top to -scrollY on open and
   restores scrollTo() on close, so the page doesn't visibly jump. width:100%
   keeps body from collapsing to content width once position:fixed removes
   it from normal flow. Desktop nav is unaffected — .pw-nav-open is only
   ever added on the mobile-drawer breakpoint (toggle.click, ≤900px). */
body.pw-nav-open{
  position: fixed;
  width: 100%;
  overflow: hidden;
}
.pw-header-logo{
  font-family: var(--pw-font-en);
  font-size: 20px; letter-spacing:.16em; font-weight:600;
  display:flex; flex-direction:column; line-height:1.1;
}
.pw-header-logo small{
  font-family: var(--pw-font-jp-sans);
  font-size: 10px; letter-spacing:.08em; font-weight:400; opacity:.7; margin-top:4px;
}
.pw-nav{ display:flex; align-items:center; gap:20px; }
.pw-nav-list{ display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.pw-nav-list > li{ position:relative; }
.pw-nav-link{
  font-family: var(--pw-font-en);
  font-size:14px; letter-spacing:.08em; text-transform:uppercase; font-weight:500;
  padding: 6px 0; position:relative;
}
.pw-nav-link::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:currentColor; transform:scaleX(0); transform-origin:right; transition:transform .3s var(--pw-ease);
}
.pw-nav-link:hover::after, .pw-nav-link.is-current::after{ transform:scaleX(1); transform-origin:left; }

.pw-nav-group{ position:relative; }
.pw-nav-group > .pw-nav-link::before{
  content:""; display:inline-block; width:5px; height:5px; border-right:1px solid currentColor; border-bottom:1px solid currentColor;
  transform: rotate(45deg); margin-left:8px; position:relative; top:-2px;
}
.pw-nav-sub{
  position:absolute; top:100%; left:50%; transform:translate(-50%,6px);
  min-width: 220px; padding:10px 0; margin-top:14px;
  background: var(--pw-charcoal); color: var(--pw-ivory);
  opacity:0; pointer-events:none; transition: opacity .25s var(--pw-ease), transform .25s var(--pw-ease);
}
.pw-nav-group:hover .pw-nav-sub, .pw-nav-group:focus-within .pw-nav-sub{
  opacity:1; pointer-events:auto; transform:translate(-50%,0);
}
.pw-nav-sub a{
  display:block; padding:12px 22px; font-size:13px; letter-spacing:.05em;
  border-top:1px solid var(--pw-line-dark);
}
.pw-nav-sub li:first-child a{ border-top:none; }
.pw-nav-sub a:hover{ color: var(--pw-greige); }

.pw-nav-cta{
  border:1px solid currentColor; padding:9px 16px; font-size:13px;
}
.pw-header-actions{ display:flex; align-items:center; gap:14px; }
.pw-header-tel{
  font-family: var(--pw-font-en); font-size:12px; letter-spacing:.06em;
  color: var(--pw-greige); display:none;
}
.pw-header-tel a{ color:inherit; }
@media (min-width:1620px){
  .pw-header-tel{ display:inline-flex; }
}

.pw-menu-toggle{ display:none; width:30px; height:20px; position:relative; z-index:600; }
.pw-menu-toggle span{
  position:absolute; left:0; right:0; height:1px; background:currentColor; transition: all .3s var(--pw-ease);
}
.pw-menu-toggle span:nth-child(1){ top:0; }
.pw-menu-toggle span:nth-child(2){ top:9px; }
.pw-menu-toggle span:nth-child(3){ top:18px; }
body.pw-nav-open .pw-menu-toggle span:nth-child(1){ top:9px; transform:rotate(45deg); }
body.pw-nav-open .pw-menu-toggle span:nth-child(2){ opacity:0; }
body.pw-nav-open .pw-menu-toggle span:nth-child(3){ top:9px; transform:rotate(-45deg); }

@media (max-width: 1080px){
  .pw-nav-list{ gap:24px; }
  .pw-header-tel{ display:none; }
}
@media (max-width: 900px){
  .pw-nav{
    position:fixed; inset:0; z-index:520;
    background: var(--pw-charcoal); color: var(--pw-ivory);
    display:flex; flex-direction:column; align-items:flex-start; justify-content:center;
    padding: 40px var(--pw-pad-x);
    transform: translateX(100%); transition: transform .5s var(--pw-ease);
    overflow-y:auto;
  }
  body.pw-nav-open .pw-nav{ transform: translateX(0); }
  .pw-nav-list{ flex-direction:column; align-items:flex-start; gap:0; width:100%; }
  .pw-nav-list > li{ width:100%; border-top:1px solid var(--pw-line-dark); }
  .pw-nav-list > li:last-child{ border-bottom:1px solid var(--pw-line-dark); }
  .pw-nav-link{ display:block; padding:18px 0; font-size:22px; }
  .pw-nav-sub{
    position:static; transform:none; opacity:1; pointer-events:auto; background:none;
    display:none; margin-top:0; padding:0 0 12px;
  }
  .pw-nav-group.is-expanded .pw-nav-sub{ display:block; }
  .pw-nav-sub a{ padding:10px 0 10px 18px; border-top:none; font-size:16px; }
  .pw-header-actions .pw-btn{ display:none; }
  .pw-menu-toggle{ display:block; }
}

/* ==================================================================
   5. HERO
   ================================================================== */
.pw-hero{
  position:relative;
  min-height: 100svh;
  display:flex; align-items:flex-end;
  color: var(--pw-ivory);
  overflow:hidden;
}
.pw-hero-photo{ position:absolute; inset:0; z-index:0; }
.pw-hero-photo::before{
  content:""; position:absolute; inset:0; z-index:1;
  background: linear-gradient(0deg, rgba(15,15,14,.86) 0%, rgba(15,15,14,.32) 46%, rgba(15,15,14,.5) 100%);
}
.pw-hero-inner{
  position:relative; z-index:2; width:100%; min-width:0;
  padding: 0 var(--pw-pad-x) clamp(56px,7vw,96px);
}
.pw-hero-eyebrow{
  font-family: var(--pw-font-en); font-size:13px; letter-spacing:.32em; text-transform:uppercase;
  color: var(--pw-stone); margin-bottom:22px;
  animation: pwRise .9s var(--pw-ease) both; animation-delay:.1s;
}
.pw-hero-title{
  font-family: var(--pw-font-en); font-weight:500; letter-spacing:-.01em;
  font-size: clamp(46px, 8vw, 132px); line-height:.94; text-transform:uppercase;
  animation: pwRise 1s var(--pw-ease) both; animation-delay:.22s;
}
.pw-hero-jp{
  margin-top: 26px;
  font-family: var(--pw-font-jp-serif); font-weight:500;
  font-size: clamp(18px, 1.9vw, 26px); line-height:1.7;
  color: var(--pw-ivory);
  animation: pwRise 1s var(--pw-ease) both; animation-delay:.34s;
}
.pw-hero-foot{
  margin-top: 40px; display:flex; align-items:center; gap:32px; flex-wrap:wrap;
  animation: pwRise 1s var(--pw-ease) both; animation-delay:.46s;
}
.pw-hero-scope{
  font-family: var(--pw-font-en); font-size:12px; letter-spacing:.22em; text-transform:uppercase; color:var(--pw-text-on-dark-muted);
}
.pw-hero-scroll{
  position:absolute; right: var(--pw-pad-x); bottom:40px; z-index:2;
  writing-mode: vertical-rl;
  font-family: var(--pw-font-en); font-size:11px; letter-spacing:.2em; text-transform:uppercase;
  color: var(--pw-text-on-dark-muted);
  display:flex; align-items:center; gap:10px;
  animation: pwRise 1s var(--pw-ease) both; animation-delay:.6s;
}
.pw-hero-scroll::after{ content:""; width:1px; height:46px; background: currentColor; opacity:.6; }

@keyframes pwRise{ from{ opacity:0; transform: translateY(22px);} to{ opacity:1; transform:none; } }

@media (max-width: 640px){
  .pw-hero{ min-height: 100svh; align-items:flex-end; }
  .pw-hero-title{ font-size: clamp(40px,13vw,64px); }
  .pw-hero-scroll{ display:none; }
}

/* ==================================================================
   6. WHAT ARE YOU LOOKING FOR
   ================================================================== */
.pw-intent{ border-top:1px solid var(--pw-line-light); }
.pw-intent-list{ border-bottom:1px solid var(--pw-line-light); }
.pw-intent-row{
  display:grid; grid-template-columns: 90px 1fr auto; align-items:center; gap:32px;
  padding: 38px 0; border-top:1px solid var(--pw-line-light);
  transition: padding-left .4s var(--pw-ease), background .4s var(--pw-ease);
}
.pw-intent-row:first-child{ border-top:none; }
.pw-intent-row:hover{ padding-left:16px; background: rgba(23,23,23,.03); }
.pw-intent-num{ font-family: var(--pw-font-en); font-size:16px; color: var(--pw-greige); }
.pw-intent-body .pw-en{
  display:block;
  font-family: var(--pw-font-en); font-size: clamp(26px,3vw,40px); text-transform:uppercase; font-weight:500;
}
.pw-intent-body .pw-jp{ display:block; margin-top:8px; font-size:15px; color: var(--pw-text-muted); }
.pw-intent-arrow{
  width:52px; height:52px; border:1px solid var(--pw-line-light); border-radius:50%;
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
  transition: background .35s var(--pw-ease), border-color .35s var(--pw-ease);
}
.pw-intent-row:hover .pw-intent-arrow{ background: var(--pw-charcoal); border-color:var(--pw-charcoal); color:var(--pw-ivory); }

@media (max-width: 640px){
  .pw-intent-row{ grid-template-columns: 40px 1fr auto; gap:16px; padding:26px 0; }
  .pw-intent-arrow{ width:40px; height:40px; }
  .pw-intent-row:hover{ padding-left:0; }
}

/* ==================================================================
   7. PHILOSOPHY + VILLA LIFECYCLE (dark)
   ================================================================== */
.pw-philosophy .pw-h-xl{ color: var(--pw-ivory); max-width: 16em; }
.pw-philosophy .pw-h-xl em{ font-style:normal; color: var(--pw-greige); }

.pw-lifecycle{ margin-top: clamp(64px,7vw,104px); }
.pw-lifecycle-track{
  display:grid; grid-auto-flow:column; grid-auto-columns: minmax(150px,1fr);
  gap: 0; overflow-x:auto; padding-bottom: 8px;
  border-top: 1px solid var(--pw-line-dark);
}
.pw-lifecycle-step{
  padding: 28px 20px 0 0; border-right:1px solid var(--pw-line-dark); position:relative;
}
.pw-lifecycle-step:last-child{ border-right:none; }
.pw-lifecycle-step::before{
  content:""; position:absolute; top:-1px; left:0; width:0; height:2px; background: var(--pw-stone);
  transition: width .6s var(--pw-ease);
}
.pw-lifecycle-step.is-in::before{ width:100%; }
.pw-lifecycle-index{ font-family: var(--pw-font-en); font-size:13px; color: var(--pw-greige); }
.pw-lifecycle-name{
  margin-top:14px; font-family: var(--pw-font-en); font-size: clamp(20px,2.1vw,28px);
  text-transform:uppercase; letter-spacing:.02em;
}
.pw-lifecycle-jp{ margin-top:10px; font-size:13px; color: var(--pw-text-on-dark-muted); line-height:1.8; }

@media (max-width: 900px){
  .pw-lifecycle-track{ grid-auto-columns: minmax(180px,1fr); }
}
@media (max-width: 640px){
  .pw-lifecycle-track{ grid-auto-flow:row; overflow-x:visible; }
  .pw-lifecycle-step{ border-right:none; border-bottom:1px solid var(--pw-line-dark); padding:22px 0; }
  .pw-lifecycle-step::before{ width:0; height:0; }
}

/* HOME only ("02 Our Philosophy" section is the only .pw-philosophy on
   the site) — breaks this one graph out of .pw-container's 1320px cap
   so it can use more of the viewport at wide desktop widths. Every
   other page's identical .pw-lifecycle/.pw-lifecycle-track (villa-
   development, operator-change, minpaku, real-estate, partners) keeps
   the base rules above untouched. */
@media (min-width: 641px){
  .pw-philosophy .pw-lifecycle{
    width: 100vw;
    margin-left: 50%;
    transform: translateX(-50%);
  }
  .pw-philosophy .pw-lifecycle-track{
    max-width: 1600px;
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--pw-pad-x);
    padding-right: var(--pw-pad-x);
  }
}

/* VILLA only ("開業までの流れ" inside the Development section, body#villa
   is unique to this page) — same breakout as .pw-philosophy above, plus
   typographic fixes for this page's step labels: "Design & Permit" was
   wrapping with the "&" left stranded alone on its own line, and with
   only 6 steps (vs HOME's 8) each column has more room to breathe once
   widened. Every other page sharing .pw-lifecycle keeps the base rules
   untouched. */
@media (min-width: 641px){
  body#villa .pw-lifecycle{
    width: 100vw;
    margin-left: 50%;
    transform: translateX(-50%);
  }
  body#villa .pw-lifecycle-track{
    max-width: 1600px;
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--pw-pad-x);
    padding-right: var(--pw-pad-x);
  }
}
body#villa .pw-lifecycle-name{
  overflow-wrap: normal;
  word-break: normal;
  line-height: 1.25;
  font-size: clamp(18px,1.7vw,23px);
}
body#villa .pw-lifecycle-jp{ margin-top:12px; }
@media (min-width: 641px){
  body#villa .pw-lifecycle-step{ padding-right: 32px; }
}

/* REAL ESTATE only ("土地から、長期運用まで。" Flow, body#real-estate is
   unique to this page) — the base .pw-lifecycle-track column floor
   (150px / 180px, see above) is narrower than single unbreakable words
   like "DEVELOPMENT" and "OPERATION" at this step-name font size, so
   those two steps were overflowing their grid track into each other
   ("DEVELOPMENTOPERATION"). Swapping the fixed-px floor for min-content
   guarantees each column is at least as wide as its longest unbreakable
   word (no more overflow) while 1fr still shares out any extra space,
   so multi-word labels ("BUSINESS DESIGN", "LONG-TERM VALUE") keep
   wrapping to two lines instead of being forced onto one. Every other
   page sharing .pw-lifecycle keeps the base rules untouched.
   Below 641px the base rules already switch grid-auto-flow to row
   (steps stack full-width) where this isn't an issue. */
body#real-estate .pw-lifecycle-track{
  grid-auto-columns: minmax(min-content,1fr);
}

/* REAL ESTATE only — step 06's jp caption ("長期的な価値として育てる") was
   wrapping mid-phrase at some widths. Forced to one line via white-space
   only, font-size/line-height untouched. Scoped to the 6th
   .pw-lifecycle-step on body#real-estate only, so the other 5 steps'
   captions on this page and every other page sharing .pw-lifecycle-jp
   (villa-development, operator-change, minpaku, partners) are unaffected. */
body#real-estate .pw-lifecycle-step:nth-child(6) .pw-lifecycle-jp{
  white-space: nowrap;
}

/* OPERATOR CHANGE only ("02 Process" 切り替えの流れ, body#operator-change
   is unique to this page) — the min-content column floor tried previously
   ("Sales Strategy" was breaking into "Sales / Strategy" and spilling into
   the next column) backfired at full 6-up width: min-content let the 6th
   column ("Optimization") push the whole track wider than .pw-container,
   which triggered .pw-lifecycle-track's overflow-x:auto scrollbar and cut
   "Optimization" off-screen. Switched the column sizing to a flat 1fr so
   all 6 columns always divide the container evenly and the track can
   never exceed it (no scrollbar, nothing cut off), and instead made each
   step's English name small enough + non-wrapping to fit that even
   6-way split ("Interior Design"/"Sales Strategy"/"Optimization" now stay
   on one line at every width down to the 1024px breakpoint below).
   Between 641-1024px, 6 columns in a single row still get too narrow to
   stay comfortable even at the smaller name size, so this page switches
   to a 3-column / 2-row grid instead of compressing further (matching
   the base rules' own row-stack fallback below 640px). Every other page
   sharing .pw-lifecycle keeps the base rules above untouched. */
body#operator-change .pw-lifecycle-track{
  grid-auto-columns: 1fr;
  gap: 0 24px;
}
body#operator-change .pw-lifecycle-step{
  padding: 28px 16px 0;
}
body#operator-change .pw-lifecycle-name{
  font-size: clamp(12px,1.15vw,14px);
  white-space: nowrap;
}
body#operator-change .pw-lifecycle-jp{
  margin-top: 20px;
}
@media (min-width: 641px) and (max-width: 1024px){
  body#operator-change .pw-lifecycle-track{
    grid-auto-flow: row;
    grid-template-columns: repeat(3, minmax(min-content,1fr));
    gap: 36px 28px;
    overflow-x: visible;
  }
  body#operator-change .pw-lifecycle-step{
    border-right: none;
    border-bottom: 1px solid var(--pw-line-dark);
    padding: 24px 16px;
  }
  body#operator-change .pw-lifecycle-step::before{ width:0; height:0; }
}
@media (max-width: 640px){
  /* base rules already stack one step per row here; restore bottom
     padding (this page's unconditional top-only override above would
     otherwise remove it) and keep the same left/right breathing room. */
  body#operator-change .pw-lifecycle-step{
    padding: 22px 16px;
  }
}

/* ---------- For Business ---------- */
.pw-forbiz{ display:grid; grid-template-columns: 1fr 1fr; gap: clamp(32px,5vw,72px); align-items:start; }
.pw-forbiz-head .pw-lead{ max-width:34em; }
.pw-forbiz-list{ display:grid; grid-template-columns: repeat(2,1fr); gap:1px; background: var(--pw-line-light); border:1px solid var(--pw-line-light); }
.pw-forbiz-list li{
  background: var(--pw-stone);
  padding: 20px 20px 18px;
  font-family: var(--pw-font-en); font-size:14px; letter-spacing:.04em;
}
.pw-forbiz-list li small{ display:block; margin-top:6px; font-family: var(--pw-font-jp-sans); font-size:12px; color: var(--pw-text-muted); letter-spacing:.02em; }
.pw-forbiz-list li em{ display:block; margin-top:10px; padding-top:10px; border-top:1px solid var(--pw-line-light); font-style:normal; font-family: var(--pw-font-jp-sans); font-size:11.5px; line-height:1.6; color: var(--pw-greige); }
@media (max-width: 900px){
  .pw-forbiz{ grid-template-columns:1fr; }
}
@media (max-width: 560px){
  .pw-forbiz-list{ grid-template-columns:1fr; }
}

/* ==================================================================
   8. OUR BUSINESS — alternating split rows
   ================================================================== */
.pw-business-row{
  display:grid; grid-template-columns: 1fr 1fr; align-items:center; gap: clamp(32px,5vw,80px);
  padding: clamp(40px,5vw,64px) 0; border-top:1px solid var(--pw-line-light);
}
.pw-business-row:last-child{ border-bottom:1px solid var(--pw-line-light); }
.pw-business-row:nth-child(even) .pw-business-media{ order:2; }
.pw-business-index{ font-family: var(--pw-font-en); font-size:14px; color: var(--pw-greige); }
.pw-business-name{
  margin-top:14px; font-family: var(--pw-font-en); font-size: clamp(28px,3.4vw,44px); text-transform:uppercase;
}
.pw-business-jp{ margin-top:6px; font-family: var(--pw-font-jp-serif); font-size:18px; color: var(--pw-greige); }
.pw-business-desc{ margin-top:20px; font-size:15px; line-height:1.95; color: var(--pw-text-muted); max-width:36em; }
.pw-business-link{ margin-top:26px; }
.pw-business-media{ aspect-ratio: 4/3; }

@media (max-width: 900px){
  .pw-business-row{ grid-template-columns:1fr; }
  .pw-business-row:nth-child(even) .pw-business-media{ order:0; }
}

/* ==================================================================
   9. OUR CAPABILITIES (dark, typographic list)
   ================================================================== */
.pw-cap-list{ margin-top: clamp(40px,5vw,64px); border-top:1px solid var(--pw-line-dark); }
.pw-cap-row{
  display:grid; grid-template-columns: 80px 1fr 2fr; gap:28px; align-items:baseline;
  padding: 30px 0; border-bottom:1px solid var(--pw-line-dark);
}
.pw-cap-num{ font-family: var(--pw-font-en); font-size:14px; color: var(--pw-greige); }
.pw-cap-name{ font-family: var(--pw-font-en); font-size: clamp(20px,2vw,26px); text-transform:uppercase; }
.pw-cap-name small{ display:block; font-family: var(--pw-font-jp-sans); font-size:12px; letter-spacing:.05em; color: var(--pw-text-on-dark-muted); margin-top:6px; text-transform:none; }
.pw-cap-desc{ font-size:14px; line-height:1.9; color: var(--pw-text-on-dark-muted); }
/* HOME "Our Capabilities" — tightens only the two spaces around the "/"
   in "Villa / Minpaku Development" (word-spacing only touches whitespace,
   so font/color/size/letter-spacing/every other cap-name is untouched). */
.pw-cap-name--slash{ word-spacing: -0.06em; }
/* This one row only: give the name column more of the row's own width
   so "Villa / Minpaku Development" fits on one line at the same font
   size. Each .pw-cap-row is its own independent grid, so this doesn't
   touch any other row's 80px/1fr/2fr columns. Guarded to desktop widths
   so it never competes with the ≤760px single-column stack rule below. */
@media (min-width: 761px){
  .pw-cap-row--wide-name{ grid-template-columns: 80px 1.4fr 1.6fr; }
}

@media (max-width: 760px){
  .pw-cap-row{ grid-template-columns:1fr; gap:8px; }
}

/* ==================================================================
   10. PROJECTS — portfolio
   ================================================================== */
.pw-projects-list{ margin-top: clamp(40px,5vw,64px); }
.pw-project{
  display:grid; grid-template-columns: 1.15fr 1fr; gap: clamp(28px,4vw,64px);
  padding: clamp(40px,5vw,64px) 0; border-top:1px solid var(--pw-line-light);
}
.pw-project:last-child{ border-bottom:1px solid var(--pw-line-light); }
.pw-project-media{ aspect-ratio: 5/4; }
.pw-project-loc{ font-family: var(--pw-font-en); font-size:13px; letter-spacing:.14em; text-transform:uppercase; color: var(--pw-greige); }
.pw-project-name{ margin-top:12px; font-family: var(--pw-font-jp-serif); font-size: clamp(22px,2.4vw,30px); }
.pw-project-type{ margin-top:6px; font-size:13px; color: var(--pw-text-muted); }
.pw-project-stats{ display:flex; gap: clamp(20px,3vw,40px); margin-top:24px; flex-wrap:wrap; }
.pw-project-stat b{ display:block; font-family: var(--pw-font-en); font-size:26px; }
.pw-project-stat span{ font-size:11px; letter-spacing:.08em; text-transform:uppercase; color: var(--pw-text-muted); }
.pw-project-csar{ margin-top:26px; display:grid; gap:14px; }
.pw-project-csar div{ font-size:14px; line-height:1.85; }
.pw-project-csar b{ font-family: var(--pw-font-en); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color: var(--pw-greige); display:block; margin-bottom:4px; }

@media (max-width: 900px){
  .pw-project{ grid-template-columns:1fr; }
}

/* ==================================================================
   11. OUR EXPERTS (dark)
   ================================================================== */
.pw-experts{ margin-top: clamp(40px,5vw,64px); display:grid; grid-template-columns: repeat(3,1fr); gap: clamp(24px,3vw,40px); }
.pw-expert-photo{
  aspect-ratio: 3/4;
  background: linear-gradient(180deg, #3a3733, #232120);
}
.pw-expert-photo img{
  object-position: var(--pw-expert-pos, center 22%);
}
.pw-expert-photo::after{ content:none; }
.pw-expert-role{ margin-top:22px; font-family: var(--pw-font-en); font-size:12px; letter-spacing:.14em; text-transform:uppercase; color: var(--pw-greige); }
.pw-expert-name{ margin-top:16px; display:flex; flex-direction:column; }
.pw-expert-sign{
  display:block;
  width: clamp(150px,15vw,200px);
  height:auto;
}
.pw-expert-title-en{ margin-top:18px; font-family: var(--pw-font-jp-sans); font-size:12px; font-weight:500; letter-spacing:.16em; text-transform:uppercase; color: var(--pw-text-on-dark); }
.pw-expert-name-jp{ margin-top:16px; font-family: var(--pw-font-jp-serif); font-size:18px; }
.pw-expert-desc{ margin-top:16px; font-size:13.5px; line-height:1.9; color: var(--pw-text-on-dark-muted); }
.pw-expert-badge{ margin-top:14px; font-size:11px; letter-spacing:.08em; color: var(--pw-stone); border:1px solid var(--pw-line-dark); display:inline-block; padding:5px 10px; }

@media (max-width: 900px){
  .pw-experts{ grid-template-columns:1fr; max-width:420px; margin-left:auto; margin-right:auto; }
}

/* ==================================================================
   11b. OUR EXPERTS — editorial feature layout (pages/experts.php only,
   independent of .pw-expert* above so the HOME teaser is never affected)
   ================================================================== */
.pw-expert-feature{ border-top:1px solid var(--pw-line-dark); }
.pw-expert-feature--first{ border-top:none; }
.pw-expert-feature-grid{
  display:grid;
  grid-template-columns: 1.1fr 1fr;
  gap: clamp(40px,6vw,96px);
  align-items:center;
}
.pw-expert-feature--reverse .pw-expert-feature-photo{ order:2; }
.pw-expert-feature-photo{ aspect-ratio: 4/5; background: linear-gradient(180deg, #3a3733, #232120); }
.pw-expert-feature-photo img{ width:100%; height:100%; object-fit:cover; object-position:center 22%; display:block; }
.pw-expert-feature-photo::after{ content:none; }
.pw-expert-feature-num{
  display:block;
  font-family: var(--pw-font-en);
  font-size: clamp(90px,11vw,150px);
  line-height:.9;
  color: var(--pw-line-dark);
  margin-bottom:6px;
}
.pw-expert-feature-specialty{ font-family: var(--pw-font-en); font-size:12px; letter-spacing:.14em; text-transform:uppercase; color: var(--pw-greige); }
.pw-expert-feature-sign{ display:block; width: clamp(140px,14vw,190px); height:auto; margin-top:26px; }
.pw-expert-feature-title-en{ margin-top:18px; font-family: var(--pw-font-jp-sans); font-size:13px; font-weight:500; letter-spacing:.18em; text-transform:uppercase; color: var(--pw-text-on-dark); }
.pw-expert-feature-name-jp{ margin-top:14px; font-family: var(--pw-font-jp-serif); font-size:22px; color: var(--pw-text-on-dark); }
.pw-expert-feature-desc{ margin-top:24px; font-size:14.5px; line-height:2; color: var(--pw-text-on-dark-muted); max-width:34em; }
.pw-expert-feature-badge{ margin-top:20px; font-size:11px; letter-spacing:.08em; color: var(--pw-stone); border:1px solid var(--pw-line-dark); display:inline-block; padding:5px 10px; }

.pw-expert-feature-text.pw-reveal{ transform: translateY(20px); transition-delay:.15s; }

@media (max-width:900px){
  .pw-expert-feature-grid{ grid-template-columns:1fr; }
  .pw-expert-feature--reverse .pw-expert-feature-photo{ order:0; }
  .pw-expert-feature-num{ font-size: clamp(64px,18vw,90px); }
}

/* ==================================================================
   12. AREAS
   ================================================================== */
.pw-areas-grid{ margin-top: clamp(40px,5vw,64px); display:grid; grid-template-columns: repeat(3,1fr); border-top:1px solid var(--pw-line-light); border-left:1px solid var(--pw-line-light); }
.pw-area-cell{
  padding: 30px 26px; border-right:1px solid var(--pw-line-light); border-bottom:1px solid var(--pw-line-light);
  min-height:132px; display:flex; flex-direction:column; justify-content:space-between;
}
.pw-area-jp{ font-family: var(--pw-font-jp-serif); font-size:19px; }
.pw-area-en{ font-family: var(--pw-font-en); font-size:12px; letter-spacing:.14em; text-transform:uppercase; color: var(--pw-greige); }

@media (max-width: 760px){
  .pw-areas-grid{ grid-template-columns: repeat(2,1fr); }
}

/* ---------- News ---------- */
.pw-news-list{ margin-top: clamp(32px,4vw,48px); border-top:1px solid var(--pw-line-light); }
.pw-news-row{
  display:flex; align-items:baseline; gap:28px;
  padding: 22px 0; border-bottom:1px solid var(--pw-line-light);
  transition: gap .3s var(--pw-ease);
}
a.pw-news-row:hover{ gap:20px; color: var(--pw-greige); }
.pw-news-row time{ font-family: var(--pw-font-en); font-size:13px; letter-spacing:.04em; color: var(--pw-greige); flex-shrink:0; }
.pw-news-title{ flex:1; font-size:14.5px; }
.pw-news-arrow{ font-size:12px; opacity:.6; }
@media (max-width: 560px){
  .pw-news-row{ flex-wrap:wrap; gap:6px 20px; }
}

/* ==================================================================
   13. COLUMN teaser
   ================================================================== */
.pw-journal-grid{ margin-top: clamp(40px,5vw,64px); display:grid; grid-template-columns: repeat(3,1fr); gap: clamp(24px,3vw,36px); }
.pw-journal-card .pw-photo{ aspect-ratio: 4/3; }
.pw-journal-date{ display:block; margin-top:16px; font-family: var(--pw-font-en); font-size:12px; letter-spacing:.08em; color: var(--pw-greige); }
.pw-journal-title{ margin-top:8px; font-size:14.5px; line-height:1.7; }

@media (max-width: 900px){
  .pw-journal-grid{ grid-template-columns: repeat(2,1fr); }
}
@media (max-width: 560px){
  .pw-journal-grid{ grid-template-columns: 1fr; }
}

/* COLUMN一覧ページ（archives/columns.php, body#columns）のみ、サムネイルを
   横方向に大きく見せる。2カラム化 + 横長のaspect-ratioで、テキスト入り
   サムネイルの左右クロップを軽減する。HOME・記事詳細（body#single-detail）
   ・COMPANYページ等が共有する .pw-journal-grid の既定値には触れず、
   body#columns 限定で上書きする。 */
body#columns .pw-journal-grid{ grid-template-columns: repeat(2,1fr); }
body#columns .pw-journal-card .pw-photo{ aspect-ratio: 16/9; }
body#columns .pw-journal-title{ display:none; }
@media (max-width: 560px){
  body#columns .pw-journal-grid{ grid-template-columns: 1fr; }
}

/* HOME(body#top)の「民泊・ヴィラ事業コラム」だけ、サムネイルの
   left/rightクロップを軽減する。原因・対処法はbody#columnsの上と同じ
   (同じcolumnsサムネイルを4:3で表示すると横方向が大きく切れるため、
   実際の画像に近い16:9へ)。カード枚数・グリッド列数(3列)は変更しない
   ため、grid-template-columnsの上書きは行わない — .pw-photoの
   aspect-ratioのみ上書き。 */
body#top .pw-journal-card .pw-photo{ aspect-ratio: 16/9; }

/* HOME(body#top)の「民泊・ヴィラ事業コラム」を画像のみの表示にする。
   マークアップ(index.php)側の日付・タイトルは削除せず(記事データ自体は
   温存)、CSSのdisplay:noneで非表示にするだけに留める。display:noneは
   要素をレイアウトから完全に外すため、margin-top分の余白も含めて
   残留せず、カードの高さは.pw-photoのぶんだけになる。COLUMN一覧ページ
   (body#columns、上のブロック)や記事詳細・COMPANYページ等、他で
   .pw-journal-cardを使っている箇所には一切影響しない。 */
body#top .pw-journal-date,
body#top .pw-journal-title{ display:none; }

/* ==================================================================
   14. LOCAL PARTNERS
   ================================================================== */
.pw-partners{ display:grid; grid-template-columns: 1fr 1fr; align-items:center; gap: clamp(32px,5vw,64px); }
.pw-partners-media{ aspect-ratio: 16/10; }

@media (max-width: 900px){ .pw-partners{ grid-template-columns:1fr; } }

/* ==================================================================
   15. CONTACT band
   ================================================================== */
.pw-cta{ text-align:center; }
.pw-cta .pw-section-head{ margin-left:auto; margin-right:auto; }
.pw-cta-intents{
  margin-top: clamp(36px,4vw,56px);
  display:flex; flex-wrap:wrap; justify-content:center; gap:12px;
}
.pw-cta-intents a{
  border:1px solid var(--pw-line-dark); padding: 13px 22px; font-size:13.5px;
  transition: background .3s var(--pw-ease), border-color .3s var(--pw-ease);
}
.pw-cta-intents a:hover{ background: var(--pw-ivory); color: var(--pw-charcoal); border-color: var(--pw-ivory); }
.pw-cta-main{ margin-top:44px; }
.pw-cta-tel{ margin-top:18px; font-size:13px; color: var(--pw-text-on-dark-muted); }
.pw-cta-tel a{ color: var(--pw-ivory); }

/* ==================================================================
   16. FOOTER
   ================================================================== */
.pw-footer{ background: var(--pw-charcoal); color: var(--pw-text-on-dark-muted); }
.pw-footer-top{
  display:grid; grid-template-columns: 1.4fr repeat(3,1fr); gap: clamp(32px,4vw,56px);
  padding: clamp(64px,6vw,96px) 0 clamp(48px,5vw,72px);
  border-bottom:1px solid var(--pw-line-dark);
}
.pw-footer-brand{ font-family: var(--pw-font-en); font-size:20px; letter-spacing:.14em; color: var(--pw-ivory); }
/* Brand mark beside the company name. The name is wrapped in its own
   inline-flex line so the logo can sit on the text baseline block without
   affecting <small> or <address> below it. Sized in em so it always tracks
   the 20px brand type (and its SP size) instead of needing its own
   breakpoint; the source PNG is already RGBA/transparent, so no background
   or blend mode is needed. Slightly dimmed so it reads as a quiet mark
   next to the wordmark rather than competing with it. */
.pw-footer-brand-name{ display:inline-flex; align-items:center; gap:.55em; }
.pw-footer-logo{
  width:auto; height:1.5em; flex-shrink:0;
  opacity:.92;
}
.pw-footer-brand small{ display:block; margin-top:10px; font-family: var(--pw-font-jp-sans); font-size:12px; letter-spacing:.02em; color: var(--pw-text-on-dark-muted); }
.pw-footer-addr{ margin-top:22px; font-family: var(--pw-font-jp-sans); font-size:12.5px; line-height:2; }
.pw-footer-addr a{ color: var(--pw-ivory); }
.pw-footer-col h4{ font-family: var(--pw-font-en); font-size:12px; letter-spacing:.14em; text-transform:uppercase; color: var(--pw-ivory); margin-bottom:18px; }
.pw-footer-col li{ margin-bottom:12px; font-size:13.5px; }
.pw-footer-col a:hover{ color: var(--pw-ivory); }
.pw-footer-bottom{
  display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px;
  padding: 26px 0; font-size:12px;
}
.pw-footer-legal{ display:flex; gap:22px; flex-wrap:wrap; }
.pw-footer-legal a:hover{ color: var(--pw-ivory); }
.pw-footer-social{ display:flex; gap:16px; }

.pw-fixed-cta{
  position:fixed; right:26px; bottom:26px; z-index:400;
  display:flex; align-items:center; gap:10px;
  background: var(--pw-charcoal); color: var(--pw-ivory);
  padding:14px 20px; font-size:13px; letter-spacing:.04em;
  opacity:1; transform:translateY(0); transition: opacity .35s var(--pw-ease), transform .35s var(--pw-ease);
}
.pw-fixed-cta.is-hidden{ opacity:0; transform:translateY(12px); pointer-events:none; }
@media (max-width: 640px){ .pw-fixed-cta{ right:16px; bottom:16px; padding:12px 16px; font-size:12px; } }

@media (max-width: 900px){
  .pw-footer-top{ grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px){
  .pw-footer-top{ grid-template-columns: 1fr; }
}

/* ==================================================================
   18. SUB-PAGE HERO (service pages)
   ================================================================== */
.pw-subhero{
  position:relative; min-height: 62svh; display:flex; align-items:flex-end;
  color: var(--pw-ivory); overflow:hidden;
}
.pw-subhero-photo{ position:absolute; inset:0; z-index:0; }
.pw-subhero-photo::before{
  content:""; position:absolute; inset:0; z-index:1;
  background: linear-gradient(0deg, rgba(15,15,14,.88) 0%, rgba(15,15,14,.38) 55%, rgba(15,15,14,.55) 100%);
}
.pw-subhero-inner{
  position:relative; z-index:2; width:100%; min-width:0;
  padding: 130px var(--pw-pad-x) 56px;
}
.pw-subhero-eyebrow{
  font-family: var(--pw-font-en); font-size:13px; letter-spacing:.24em; text-transform:uppercase;
  color: var(--pw-stone); margin-bottom:18px;
}
.pw-subhero-eyebrow a{ color: var(--pw-text-on-dark-muted); }
.pw-subhero-eyebrow a:hover{ color: var(--pw-ivory); }
.pw-subhero-title{
  font-family: var(--pw-font-en); font-weight:500; letter-spacing:-.01em;
  font-size: clamp(38px, 5.2vw, 84px); line-height:1.02; text-transform:uppercase;
}
.pw-subhero-jp{
  margin-top:20px; font-family: var(--pw-font-jp-serif); font-weight:500;
  font-size: clamp(17px, 1.6vw, 21px); line-height:1.8; max-width:34em;
  color: var(--pw-ivory);
}
@media (max-width:640px){ .pw-subhero-inner{ padding-top:110px; } }

/* ==================================================================
   19. Numbered intro lead (used under sub-hero: "who this is for")
   ================================================================== */
.pw-lead-block{ max-width: 760px; }
.pw-lead-block .pw-h-xl{ margin-top:16px; }
.pw-lead-block .pw-lead{ margin-top:22px; }

/* ==================================================================
   20. FAQ accordion
   ================================================================== */
.pw-faq-list{ border-top:1px solid var(--pw-line-light); }
.pw-faq-item{ border-bottom:1px solid var(--pw-line-light); }
.pw-faq-item summary{
  list-style:none; cursor:pointer; padding: 26px 40px 26px 0; position:relative;
  display:flex; gap:20px; font-size:15.5px; line-height:1.7;
}
.pw-faq-item summary::-webkit-details-marker{ display:none; }
.pw-faq-item summary::after{
  content:"+"; position:absolute; right:4px; top:24px;
  font-family: var(--pw-font-en); font-size:20px; color: var(--pw-greige);
  transition: transform .3s var(--pw-ease);
}
.pw-faq-item[open] summary::after{ transform: rotate(135deg); }
.pw-faq-q{ font-family: var(--pw-font-en); font-size:14px; color: var(--pw-greige); flex-shrink:0; }
.pw-faq-a{ display:flex; gap:20px; padding: 0 40px 28px 0; font-size:14.5px; line-height:2; color: var(--pw-text-muted); }
.pw-faq-a-label{ font-family: var(--pw-font-en); font-size:14px; color: var(--pw-greige); flex-shrink:0; }

/* ==================================================================
   21. Related services / cross-links strip
   ================================================================== */
.pw-related-grid{ display:grid; grid-template-columns: repeat(3,1fr); border-top:1px solid var(--pw-line-light); border-left:1px solid var(--pw-line-light); }
.pw-related-cell{
  padding: 32px 28px; border-right:1px solid var(--pw-line-light); border-bottom:1px solid var(--pw-line-light);
  min-height:150px; display:flex; flex-direction:column; justify-content:space-between;
  transition: background .3s var(--pw-ease);
}
.pw-related-cell:hover{ background: rgba(23,23,23,.03); }
.pw-related-en{ font-family: var(--pw-font-en); font-size:12px; letter-spacing:.12em; text-transform:uppercase; color: var(--pw-greige); }
.pw-related-jp{ margin-top:10px; font-family: var(--pw-font-jp-serif); font-size:19px; }
@media (max-width:760px){ .pw-related-grid{ grid-template-columns: repeat(2,1fr); } }
@media (max-width:480px){ .pw-related-grid{ grid-template-columns: 1fr; } }

/* ==================================================================
   22. EXISTING column article — visual restyle only
   Every selector below is scoped to #columns-detail (single/columns.php's
   existing wrapper) or its existing children (.article-container,
   .thumbnail, .editor-entry, .toc-sidebar). No HTML, taxonomy, ACF
   field, or URL is touched — this only restyles content that already
   renders there. Nothing here targets other templates.
   ================================================================== */
#columns-detail{ background: var(--pw-white); padding-top: 96px; padding-bottom: clamp(64px,7vw,112px); }
#columns-detail .mod-pagetitle{
  padding: 48px var(--pw-pad-x) 0; text-align:left; background:none;
}
#columns-detail .mod-pagetitle h1{
  font-family: var(--pw-font-jp-sans); font-size:12px; letter-spacing:.14em; color: var(--pw-greige);
  text-transform:uppercase; font-weight:500;
}
#columns-detail .mod-pagetitle h1 span{ font-family: var(--pw-font-en); margin-right:8px; }

#columns-detail .article-container{ max-width: 880px; margin: 0 auto; padding: 40px var(--pw-pad-x) 0; }

#columns-detail article > time{
  display:block; font-family: var(--pw-font-en); font-size:12px; letter-spacing:.1em;
  text-transform:uppercase; color: var(--pw-greige); max-width:720px; margin:0 auto;
}
#columns-detail article > h1{
  font-family: var(--pw-font-jp-serif); font-weight:500; color: var(--pw-charcoal);
  font-size: clamp(28px,4vw,42px); line-height:1.55; margin: 16px auto 40px; max-width:720px;
}
#columns-detail .thumbnail{ margin: 0 0 48px; }
#columns-detail .thumbnail img{ width:100%; height:auto; display:block; }

#columns-detail .toc-sidebar{
  max-width:720px; margin: 0 auto 56px; border: 1px solid var(--pw-line-light);
  background: var(--pw-ivory); padding: 26px 32px;
}
#columns-detail .toc-sidebar summary{
  cursor:pointer; list-style:none; display:flex; align-items:baseline; gap:12px;
  font-family: var(--pw-font-jp-sans); font-size:14.5px; color: var(--pw-charcoal); font-weight:500;
}
#columns-detail .toc-sidebar summary::-webkit-details-marker{ display:none; }
#columns-detail .toc-sidebar summary::before{
  content:"Table of Contents"; font-family: var(--pw-font-en); font-size:11px;
  letter-spacing:.14em; text-transform:uppercase; color: var(--pw-greige); order:-1;
}
#columns-detail .toc-sidebar ol{ margin-top:18px; padding-left:0; list-style:none; counter-reset: pw-toc; }
#columns-detail .toc-sidebar li{ margin-bottom:10px; border-top:1px solid var(--pw-line-light); padding-top:10px; }
#columns-detail .toc-sidebar li:first-child{ border-top:none; padding-top:0; }
#columns-detail .toc-sidebar li.ttl-h3{ padding-left:1.4em; font-size:12.5px; }
#columns-detail .toc-sidebar li.ttl-h2::before{
  counter-increment: pw-toc;
  content: counter(pw-toc, decimal-leading-zero);
  font-family: var(--pw-font-en); font-size:13px; letter-spacing:.04em;
  color: #5A4635; margin-right:10px;
}
#columns-detail .toc-sidebar a{
  font-size:14px; color: var(--pw-text-on-light); border-bottom:none; text-decoration:none;
}
#columns-detail .toc-sidebar a:hover{ color: var(--pw-greige); }

#columns-detail .editor-entry{
  max-width: 720px; margin: 0 auto; font-size:16px; line-height:2; color: #2A2825;
}
#columns-detail .editor-entry p{ margin: 0 0 32px; }
#columns-detail .editor-entry h2{
  font-family: var(--pw-font-jp-serif); font-weight:500; color: var(--pw-charcoal);
  font-size: clamp(23px,2.6vw,28px); line-height:1.6;
  margin: 72px 0 28px; padding: 22px 28px;
  background: var(--pw-stone); border-bottom: 2px solid var(--pw-champagne);
}
#columns-detail .editor-entry h2:first-child{ margin-top:0; }
#columns-detail .editor-entry h3{
  font-family: var(--pw-font-jp-serif); font-weight:500; color: var(--pw-charcoal);
  font-size: clamp(18px,2vw,21px); line-height:1.6; margin: 48px 0 20px;
}
#columns-detail .editor-entry a{
  color: var(--pw-charcoal); text-decoration:none; border-bottom:1px solid var(--pw-greige);
  transition: color .25s var(--pw-ease), border-color .25s var(--pw-ease);
  overflow-wrap: anywhere;
}
#columns-detail .editor-entry a:hover{ color: var(--pw-greige); border-bottom-color: var(--pw-charcoal); }
#columns-detail .editor-entry strong, #columns-detail .editor-entry b{ font-weight:600; color: var(--pw-charcoal); }
#columns-detail .editor-entry ul, #columns-detail .editor-entry ol{ margin: 0 0 32px; padding-left:1.3em; }
#columns-detail .editor-entry li{ margin-bottom:12px; line-height:1.9; }
#columns-detail .editor-entry ul li::marker{ color: var(--pw-greige); }
#columns-detail .editor-entry ol li::marker{ color: var(--pw-greige); font-family: var(--pw-font-en); }
#columns-detail .editor-entry blockquote{
  margin: 48px 0; padding: 28px 32px; border-left:2px solid var(--pw-greige);
  background: var(--pw-ivory); font-family: var(--pw-font-jp-serif); font-size:18px; line-height:1.9;
  color: var(--pw-charcoal);
}
#columns-detail .editor-entry blockquote p:last-child{ margin-bottom:0; }
#columns-detail .editor-entry img{ width:100%; height:auto; display:block; margin: 8px 0; border-radius:0; }
#columns-detail .editor-entry figure{ margin: 40px 0; }
#columns-detail .editor-entry figcaption{ margin-top:10px; font-size:12.5px; color: var(--pw-text-muted); text-align:center; }
#columns-detail .editor-entry table{ width:100%; border-collapse:collapse; margin: 40px 0; font-size:14.5px; }
#columns-detail .editor-entry th, #columns-detail .editor-entry td{ padding:14px 16px; border-bottom:1px solid var(--pw-stone); text-align:left; }
#columns-detail .editor-entry thead th{
  font-family: var(--pw-font-en); font-size:11px; letter-spacing:.08em; text-transform:uppercase;
  color: var(--pw-greige); border-bottom:1px solid var(--pw-charcoal); font-weight:500;
}
#columns-detail .editor-entry hr{ border:none; border-top:1px solid var(--pw-line-light); margin:48px 0; }

@media (max-width: 640px){
  #columns-detail{ padding-top:76px; }
  #columns-detail .article-container{ padding-top:28px; }
  #columns-detail .toc-sidebar{ padding: 22px 22px; }
  #columns-detail .editor-entry{ font-size:16px; line-height:1.95; }
  #columns-detail .editor-entry h2{ margin-top:56px; }
  #columns-detail .editor-entry blockquote{ padding: 22px 22px; }
  /* A wide CMS-inserted table can't shrink below its content width; make
     the table itself the scroll container (display:block lets a table
     element scroll) instead of touching existing HTML with a wrapper. */
  #columns-detail .editor-entry table{ display:block; overflow-x:auto; -webkit-overflow-scrolling:touch; }
}

/* ---------- 22b. EXISTING column article — hardening pass ----------
   Section 22 above was written and verified with no copy of
   assets/css/styles.css loaded locally (same gap noted throughout this
   theme's other hardening passes), so on production the legacy
   stylesheet still wins the cascade for the bare <time> element and
   the WYSIWYG editor's h2/h3/a/blockquote/table — the light-blue
   "公開日" pill and light-blue H2 background+underline the user
   reports. Everything below re-asserts the same charcoal/ivory/greige
   design with !important and strips any ::before/::after/
   background-image/box-shadow a legacy rule might still be drawing,
   so this stylesheet always wins regardless of styles.css's
   specificity. Scoped to #columns-detail only (single/columns.php's
   own wrapper) — no HTML, ACF field, taxonomy, or URL touched, and no
   other template is targeted. */
#columns-detail .mod-pagetitle{
  background:none !important; background-image:none !important; box-shadow:none !important;
}
#columns-detail .mod-pagetitle h1{
  font-family: var(--pw-font-jp-sans) !important; color: var(--pw-greige) !important;
  background:none !important; border:none !important; text-shadow:none !important;
}
#columns-detail .mod-pagetitle h1::before,
#columns-detail .mod-pagetitle h1::after,
#columns-detail .mod-pagetitle h1 span::before,
#columns-detail .mod-pagetitle h1 span::after{
  content:none !important; display:none !important; background:none !important;
}

#columns-detail article > time{
  font-family: var(--pw-font-en) !important; color: var(--pw-greige) !important;
  background:none !important; background-image:none !important;
  border:none !important; box-shadow:none !important; border-radius:0 !important;
  padding:0 !important; text-decoration:none !important;
}
#columns-detail article > time::before,
#columns-detail article > time::after{
  content:none !important; display:none !important; background:none !important;
}

#columns-detail article > h1{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-charcoal) !important;
  background:none !important; border:none !important; text-shadow:none !important;
}

#columns-detail .editor-entry,
#columns-detail .editor-entry p,
#columns-detail .editor-entry li{ color: #2A2825 !important; }

#columns-detail .editor-entry h2{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-charcoal) !important;
  background: var(--pw-stone) !important; background-image:none !important; box-shadow:none !important;
  border:none !important; border-bottom: 2px solid var(--pw-champagne) !important;
  padding: 22px 28px !important; text-decoration:none !important; text-shadow:none !important;
}
#columns-detail .editor-entry h2::before,
#columns-detail .editor-entry h2::after{
  content:none !important; display:none !important; background:none !important;
}
#columns-detail .editor-entry h3{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-charcoal) !important;
  background:none !important; background-image:none !important; box-shadow:none !important;
  border:none !important; text-decoration:none !important; text-shadow:none !important;
}
#columns-detail .editor-entry h3::before,
#columns-detail .editor-entry h3::after{
  content:none !important; display:none !important; background:none !important;
}
#columns-detail .editor-entry a{
  color: var(--pw-charcoal) !important; background:none !important;
  border:none !important; border-bottom:1px solid var(--pw-greige) !important;
  text-decoration:none !important; box-shadow:none !important;
  overflow-wrap: anywhere !important;
}
#columns-detail .editor-entry a:hover{
  color: var(--pw-greige) !important; border-bottom-color: var(--pw-charcoal) !important;
}
#columns-detail .editor-entry strong,
#columns-detail .editor-entry b{ color: var(--pw-charcoal) !important; background:none !important; }
/* "マーカー下線" editor button (assets/js/custom-richeditor-button.js) wraps
   selected text in <span class="mod-underline">. This class has no renewal.css
   rule at all — its light-blue look on production comes entirely from the
   legacy assets/css/styles.css (not present in this checkout). Reasserting a
   champagne-toned highlighter effect here, matching the H2 accent color,
   and neutralizing every technique styles.css might be using (background,
   gradient, border, text-decoration, box-shadow, pseudo-elements). */
#columns-detail .editor-entry .mod-underline{
  background: linear-gradient(transparent 65%, var(--pw-champagne) 65%) !important;
  color: var(--pw-charcoal) !important;
  border:none !important; box-shadow:none !important;
  text-decoration:none !important; text-decoration-color:transparent !important;
  padding:0 2px !important;
}
#columns-detail .editor-entry .mod-underline::before,
#columns-detail .editor-entry .mod-underline::after{
  content:none !important; display:none !important; background:none !important;
}
#columns-detail .editor-entry ul li::marker{ color: var(--pw-greige) !important; }
#columns-detail .editor-entry ol li::marker{ color: var(--pw-greige) !important; }
#columns-detail .editor-entry blockquote{
  background: var(--pw-ivory) !important; color: var(--pw-charcoal) !important;
  border:none !important; border-left:2px solid var(--pw-greige) !important;
  box-shadow:none !important;
}
#columns-detail .editor-entry blockquote::before,
#columns-detail .editor-entry blockquote::after{
  content:none !important; display:none !important; background:none !important;
}
#columns-detail .editor-entry table{ border:none !important; box-shadow:none !important; }
#columns-detail .editor-entry th,
#columns-detail .editor-entry td{
  border:none !important; border-bottom:1px solid var(--pw-stone) !important; background:none !important;
}
#columns-detail .editor-entry thead th{
  color: var(--pw-greige) !important; background:none !important;
  border-bottom:1px solid var(--pw-charcoal) !important;
}
#columns-detail .editor-entry hr{ background:none !important; border:none !important; border-top:1px solid var(--pw-line-light) !important; }

#columns-detail .toc-sidebar{
  background: var(--pw-ivory) !important; border:1px solid var(--pw-line-light) !important;
  box-shadow:none !important; border-radius:0 !important;
}
#columns-detail .toc-sidebar a{ color: var(--pw-text-on-light) !important; background:none !important; border:none !important; }
#columns-detail .toc-sidebar a:hover{ color: var(--pw-greige) !important; }
#columns-detail .toc-sidebar li{ border-top:1px solid var(--pw-line-light) !important; background:none !important; }
#columns-detail .toc-sidebar li:first-child{ border-top:none !important; }
/* The "−" separator in front of each h3-level (sub) entry is drawn by
   styles.css, which does not exist anywhere in this local checkout (see
   git history of this comment for the full investigation — confirmed
   via full-repo search that no local file, and no HTML single/columns.php
   generates, is responsible; only the production-only styles.css draws
   it). Recoloring it (previous attempt, color/background-color/
   border-color on every plausible element) still left it visibly blue,
   so instead of guessing at the exact property again, this removes the
   mark outright regardless of which mechanism draws it: list-style:none
   suppresses it if it's a native/string list marker, content:none
   suppresses it if it's a ::before/::after/::marker with generated
   content, and display:none/background:none/border:none is a final
   catch-all for a drawn shape. Scoped to li.ttl-h3 only — the h2-level
   counter() numbering two rules above is untouched, as is every other
   part of the toc (text, spacing, dividers, Show link, layout). */
#columns-detail .toc-sidebar li.ttl-h3{
  list-style: none !important;
}
#columns-detail .toc-sidebar li.ttl-h3::before,
#columns-detail .toc-sidebar li.ttl-h3::after,
#columns-detail .toc-sidebar li.ttl-h3 a::before,
#columns-detail .toc-sidebar li.ttl-h3 a::after{
  content: none !important;
  display: none !important;
  background: none !important;
  border: none !important;
}
#columns-detail .toc-sidebar li.ttl-h3::marker{
  content: "" !important;
}

/* ==================================================================
   22b. EXISTING news article (single/news.php) — visual restyle only
   Mirrors section 22 above (#columns-detail) exactly, scoped to
   #news-detail (single/news.php's own <main> id) instead. News has no
   thumbnail field and no table-of-contents block, so those rules are
   simply omitted — everything else (mod-pagetitle, article-container,
   time/h1, editor-entry incl. the !important overrides that beat
   styles.css regardless of its specificity) is reused unchanged. No
   HTML, ACF field, taxonomy, or URL is touched; no other template is
   targeted.
   ================================================================== */
#news-detail{ background: var(--pw-white); padding-top: 96px; padding-bottom: clamp(64px,7vw,112px); }
#news-detail .mod-pagetitle{
  padding: 48px var(--pw-pad-x) 0; text-align:left; background:none;
}
#news-detail .mod-pagetitle h1{
  font-family: var(--pw-font-jp-sans); font-size:12px; letter-spacing:.14em; color: var(--pw-greige);
  text-transform:uppercase; font-weight:500;
}
#news-detail .mod-pagetitle h1 span{ font-family: var(--pw-font-en); margin-right:8px; }

#news-detail .article-container{ max-width: 880px; margin: 0 auto; padding: 40px var(--pw-pad-x) 0; }

#news-detail article > time{
  display:block; font-family: var(--pw-font-en); font-size:12px; letter-spacing:.1em;
  text-transform:uppercase; color: var(--pw-greige); max-width:720px; margin:0 auto;
}
#news-detail article > h1{
  font-family: var(--pw-font-jp-serif); font-weight:500; color: var(--pw-charcoal);
  font-size: clamp(28px,4vw,42px); line-height:1.55; margin: 16px auto 40px; max-width:720px;
}

#news-detail .editor-entry{
  max-width: 720px; margin: 0 auto; font-size:16px; line-height:2; color: #2A2825;
}
#news-detail .editor-entry p{ margin: 0 0 32px; }
#news-detail .editor-entry h2{
  font-family: var(--pw-font-jp-serif); font-weight:500; color: var(--pw-charcoal);
  font-size: clamp(23px,2.6vw,28px); line-height:1.6;
  margin: 64px 0 24px; padding: 22px 28px;
  background: var(--pw-stone); border-bottom: 2px solid var(--pw-champagne);
}
#news-detail .editor-entry h2:first-child{ margin-top:0; }
#news-detail .editor-entry h3{
  font-family: var(--pw-font-jp-serif); font-weight:500; color: var(--pw-charcoal);
  font-size: clamp(18px,2vw,21px); line-height:1.6; margin: 48px 0 20px;
}
#news-detail .editor-entry a{
  color: var(--pw-charcoal); text-decoration:none; border-bottom:1px solid var(--pw-greige);
  transition: color .25s var(--pw-ease), border-color .25s var(--pw-ease);
  overflow-wrap: anywhere;
}
#news-detail .editor-entry a:hover{ color: var(--pw-greige); border-bottom-color: var(--pw-charcoal); }
#news-detail .editor-entry strong, #news-detail .editor-entry b{ font-weight:600; color: var(--pw-charcoal); }
#news-detail .editor-entry ul, #news-detail .editor-entry ol{ margin: 0 0 32px; padding-left:1.3em; }
#news-detail .editor-entry li{ margin-bottom:12px; line-height:1.9; }
#news-detail .editor-entry ul li::marker{ color: var(--pw-greige); }
#news-detail .editor-entry ol li::marker{ color: var(--pw-greige); font-family: var(--pw-font-en); }
#news-detail .editor-entry blockquote{
  margin: 48px 0; padding: 28px 32px; border-left:2px solid var(--pw-greige);
  background: var(--pw-ivory); font-family: var(--pw-font-jp-serif); font-size:18px; line-height:1.9;
  color: var(--pw-charcoal);
}
#news-detail .editor-entry blockquote p:last-child{ margin-bottom:0; }
#news-detail .editor-entry img{ width:100%; height:auto; display:block; margin: 8px 0; border-radius:0; }
#news-detail .editor-entry figure{ margin: 40px 0; }
#news-detail .editor-entry figcaption{ margin-top:10px; font-size:12.5px; color: var(--pw-text-muted); text-align:center; }
#news-detail .editor-entry table{ width:100%; border-collapse:collapse; margin: 40px 0; font-size:14.5px; }
#news-detail .editor-entry th, #news-detail .editor-entry td{ padding:14px 16px; border-bottom:1px solid var(--pw-stone); text-align:left; }
#news-detail .editor-entry thead th{
  font-family: var(--pw-font-en); font-size:11px; letter-spacing:.08em; text-transform:uppercase;
  color: var(--pw-greige); border-bottom:1px solid var(--pw-charcoal); font-weight:500;
}
#news-detail .editor-entry hr{ border:none; border-top:1px solid var(--pw-line-light); margin:48px 0; }

@media (max-width: 640px){
  #news-detail{ padding-top:76px; }
  #news-detail .article-container{ padding-top:28px; }
  #news-detail .editor-entry{ font-size:16px; line-height:1.95; }
  #news-detail .editor-entry h2{ margin-top:56px; }
  #news-detail .editor-entry blockquote{ padding: 22px 22px; }
  #news-detail .editor-entry table{ display:block; overflow-x:auto; -webkit-overflow-scrolling:touch; }
}

/* Same reasoning as the #columns-detail !important block above: this
   guarantees the new look wins over styles.css regardless of its
   specificity, without editing or being able to see that file. */
#news-detail .mod-pagetitle{
  background:none !important; background-image:none !important; box-shadow:none !important;
}
#news-detail .mod-pagetitle h1{
  font-family: var(--pw-font-jp-sans) !important; color: var(--pw-greige) !important;
  background:none !important; border:none !important; text-shadow:none !important;
}
#news-detail .mod-pagetitle h1::before,
#news-detail .mod-pagetitle h1::after,
#news-detail .mod-pagetitle h1 span::before,
#news-detail .mod-pagetitle h1 span::after{
  content:none !important; display:none !important; background:none !important;
}

#news-detail article > time{
  font-family: var(--pw-font-en) !important; color: var(--pw-greige) !important;
  background:none !important; background-image:none !important;
  border:none !important; box-shadow:none !important;
  padding:0 !important; text-decoration:none !important;
}
#news-detail article > time::before,
#news-detail article > time::after{
  content:none !important; display:none !important; background:none !important;
}

#news-detail article > h1{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-charcoal) !important;
  background:none !important; border:none !important; text-shadow:none !important;
}

#news-detail .editor-entry,
#news-detail .editor-entry p,
#news-detail .editor-entry li{ color: #2A2825 !important; }

#news-detail .editor-entry h2{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-charcoal) !important;
  background: var(--pw-stone) !important; background-image:none !important; box-shadow:none !important;
  border:none !important; border-bottom:2px solid var(--pw-champagne) !important;
  padding: 22px 28px !important; text-decoration:none !important; text-shadow:none !important;
}
#news-detail .editor-entry h2::before,
#news-detail .editor-entry h2::after{
  content:none !important; display:none !important; background:none !important;
}
#news-detail .editor-entry h3{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-charcoal) !important;
  background:none !important; background-image:none !important; box-shadow:none !important;
  border:none !important; text-decoration:none !important; text-shadow:none !important;
}
#news-detail .editor-entry h3::before,
#news-detail .editor-entry h3::after{
  content:none !important; display:none !important; background:none !important;
}
#news-detail .editor-entry a{
  color: var(--pw-charcoal) !important; background:none !important;
  border:none !important; border-bottom:1px solid var(--pw-greige) !important;
  text-decoration:none !important; box-shadow:none !important;
  overflow-wrap: anywhere !important;
}
#news-detail .editor-entry a:hover{
  color: var(--pw-greige) !important; border-bottom-color: var(--pw-charcoal) !important;
}
#news-detail .editor-entry strong,
#news-detail .editor-entry b{ color: var(--pw-charcoal) !important; background:none !important; }
#news-detail .editor-entry .mod-underline{
  background: linear-gradient(transparent 65%, var(--pw-champagne) 65%) !important;
  color: var(--pw-charcoal) !important;
  border:none !important; box-shadow:none !important; text-decoration:none !important;
  padding:0 2px !important;
}
#news-detail .editor-entry .mod-underline::before,
#news-detail .editor-entry .mod-underline::after{
  content:none !important; display:none !important; background:none !important;
}
#news-detail .editor-entry ul li::marker{ color: var(--pw-greige) !important; }
#news-detail .editor-entry ol li::marker{ color: var(--pw-greige) !important; }
#news-detail .editor-entry blockquote{
  background: var(--pw-ivory) !important; color: var(--pw-charcoal) !important;
  border:none !important; border-left:2px solid var(--pw-greige) !important;
  box-shadow:none !important;
}
#news-detail .editor-entry blockquote::before,
#news-detail .editor-entry blockquote::after{
  content:none !important; display:none !important; background:none !important;
}
#news-detail .editor-entry table{ border:none !important; box-shadow:none !important; }
#news-detail .editor-entry th,
#news-detail .editor-entry td{
  border:none !important; border-bottom:1px solid var(--pw-stone) !important; background:none !important;
}
#news-detail .editor-entry thead th{
  color: var(--pw-greige) !important; background:none !important;
  border-bottom:1px solid var(--pw-charcoal) !important;
}
#news-detail .editor-entry hr{ background:none !important; border:none !important; border-top:1px solid var(--pw-line-light) !important; }

/* ==================================================================
   22c. Article end-matter (single/columns.php + single/news.php cross-links)
   ================================================================== */
.pw-article-end{ background: var(--pw-ivory); }
.pw-article-end .pw-container{ max-width: 880px; }
.pw-article-end .pw-section{ padding-top: clamp(56px,6vw,88px); padding-bottom: clamp(56px,6vw,88px); }
.pw-article-end .pw-section + .pw-section{ border-top: 1px solid var(--pw-line-light); }

/* Prev/Next navigation (single/columns.php and single/news.php both use
   body#single-detail, so both get this styling automatically).
   .pw-article-end is already unique to these two templates, but scoped
   under body#single-detail too per spec, so nothing here can leak
   elsewhere. */
body#single-detail .pw-column-nav{
  display:flex; justify-content:space-between; gap: clamp(24px,4vw,48px);
  padding: clamp(40px,5vw,64px) 0;
}
body#single-detail .pw-column-nav-link{
  display:flex; flex-direction:column; gap:10px; max-width:46%;
  text-decoration:none;
}
body#single-detail .pw-column-nav-next{ margin-left:auto; align-items:flex-end; text-align:right; }
body#single-detail .pw-column-nav-label{
  font-family: var(--pw-font-en); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color: var(--pw-greige);
}
body#single-detail .pw-column-nav-title{
  font-family: var(--pw-font-jp-serif); font-size:16px; line-height:1.6; color: var(--pw-charcoal);
  transition: color .25s var(--pw-ease);
}
body#single-detail .pw-column-nav-link:hover .pw-column-nav-title{ color: var(--pw-greige); }

body#single-detail .pw-column-banner{ padding: clamp(40px,5vw,64px) 0; border-top:1px solid var(--pw-line-light); }
body#single-detail .pw-column-banner a{ display:block; }
body#single-detail .pw-column-banner img{
  width:100%; height:auto; display:block;
  transition: opacity .3s var(--pw-ease);
}
body#single-detail .pw-column-banner a:hover img{ opacity:.92; }

@media (max-width:640px){
  body#single-detail .pw-column-nav{ flex-direction:column; gap:28px; padding: 32px 0; }
  body#single-detail .pw-column-nav-link,
  body#single-detail .pw-column-nav-next{ max-width:100%; align-items:flex-start; text-align:left; margin-left:0; }
  body#single-detail .pw-column-banner{ padding: 32px 0; }
}

.pw-mini-experts{
  display:flex; gap: clamp(20px,3vw,36px); flex-wrap:wrap; margin-top: clamp(28px,3vw,40px);
}
.pw-mini-expert{ display:flex; align-items:center; gap:14px; flex: 1 1 220px; }
.pw-mini-expert-photo{ width:56px; height:56px; border-radius:50%; overflow:hidden; flex-shrink:0; background: linear-gradient(180deg,#3a3733,#232120); }
.pw-mini-expert-photo img{ width:100%; height:100%; object-fit:cover; object-position: var(--pw-expert-pos, center 18%); }
.pw-mini-expert-name{ font-family: var(--pw-font-jp-serif); font-size:14.5px; }
.pw-mini-expert-role{ margin-top:2px; font-family: var(--pw-font-en); font-size:10.5px; letter-spacing:.06em; color: var(--pw-greige); }

/* COLUMN一覧・COLUMN記事下部の Our Experts のみ、写真を約18%大きく見せる。
   .pw-mini-expert-photo は parts/mini-experts.php 以外から使われないが、
   HOME/OUR EXPERTS側に影響が及ばないことを明示するため body#columns /
   body#single-detail に明示スコープする。 */
body#columns .pw-mini-expert-photo,
body#single-detail .pw-mini-expert-photo{ width:66px; height:66px; }

.pw-brand-line{
  margin-top: 20px; padding: 28px 0 0; border-top: 1px solid var(--pw-line-light);
  font-size: 14px; line-height:2; color: var(--pw-text-muted); max-width: 42em;
}

@media (max-width:640px){
  .pw-mini-experts{ gap:20px 28px; }
  .pw-mini-expert{ flex-basis: 100%; }
}

/* ---------- Company profile table ---------- */
.pw-profile-row{
  display:grid; grid-template-columns: 200px 1fr; gap:16px;
  padding:20px 0; border-bottom:1px solid var(--pw-line-light);
}
.pw-profile-row dt{ font-size:13px; color: var(--pw-greige); }
.pw-profile-row dd{ margin:0; font-size:14.5px; line-height:1.9; }
/* Scoped to body#company (the only page using .pw-profile-row): the
   business-content row's phone/email/URL values can be long unbroken
   strings that would otherwise overflow the narrow single-column layout
   below and cause SP horizontal scroll. Normal Japanese text already
   wraps fine, so this only affects unbroken ASCII runs. */
body#company .pw-profile-row dd{ overflow-wrap: anywhere; }
@media (max-width:560px){
  .pw-profile-row{ grid-template-columns:1fr; gap:6px; }
}

/* ---------- Contact page: the new .pw-subhero above is now the page's
   real first view, so the legacy .mod-pagetitle banner that used to sit
   directly above .sec-form is hidden here (CSS-only). Scoped to
   body#contact.input specifically — id="contact" alone is shared with
   the confirm (class="confirm") and thanks (class="thanks") steps, which
   have no new subhero and must keep their own .mod-pagetitle heading. */
body#contact.input .mod-pagetitle{ display:none; }

/* ---------- Journal (columns archive): featured ---------- */
/* Featured (COLUMN一覧, body#columns only) — image-free editorial intro.
   .pw-featured-link has no other consumer in the theme, but scoped to
   body#columns anyway so a future reuse elsewhere can't inherit this. */
body#columns .pw-featured-link{
  display:block; margin-top:32px; max-width:820px;
  padding-top:32px; border-top:2px solid var(--pw-champagne);
  text-decoration:none;
}
body#columns .pw-featured-date{
  display:block; font-family: var(--pw-font-en); font-size:12px;
  letter-spacing:.1em; text-transform:uppercase; color: var(--pw-greige);
}
body#columns .pw-featured-link:hover .pw-h-xl{ color: var(--pw-greige); }

/* ---------- WP-PageNavi output (existing plugin markup, styled only) ---------- */
.pw-pagenavi-wrap .wp-pagenavi{
  display:flex; align-items:center; justify-content:center; gap:8px; flex-wrap:wrap;
  font-family: var(--pw-font-en); font-size:14px;
}
.pw-pagenavi-wrap .wp-pagenavi a,
.pw-pagenavi-wrap .wp-pagenavi span{
  display:inline-flex; align-items:center; justify-content:center;
  min-width:38px; height:38px; padding:0 10px;
  border:1px solid var(--pw-line-light); color: var(--pw-text-on-light);
}
.pw-pagenavi-wrap .wp-pagenavi a:hover{ border-color: var(--pw-charcoal); }
.pw-pagenavi-wrap .wp-pagenavi span.current{ background: var(--pw-charcoal); border-color: var(--pw-charcoal); color: var(--pw-ivory); }
.pw-pagenavi-wrap .wp-pagenavi span.extend{ border:none; }

/* ==================================================================
   17. Generic responsive helpers
   ================================================================== */
.pw-sp{ display:none; }
@media (max-width: 640px){
  .pw-sp{ display:inline; }
  .pw-pc{ display:none; }
}

/* ==================================================================
   18. NUMBERS strip (HOME, quiet proof band below HERO)
   ================================================================== */
.pw-numbers{ background: var(--pw-charcoal); padding: 48px 0; }
.pw-numbers-grid{
  display:grid; grid-template-columns:repeat(4,1fr); gap:32px; text-align:center;
}
.pw-numbers-item{ display:flex; flex-direction:column; gap:10px; }
.pw-numbers-value{
  font-family: var(--pw-font-en); font-weight:500; letter-spacing:.02em;
  font-size:clamp(30px,3.4vw,44px); color: var(--pw-ivory); line-height:1;
}
.pw-numbers-plus{ font-size:0.55em; vertical-align:super; }
.pw-numbers-label{
  display:flex; flex-direction:column; gap:3px;
  font-family: var(--pw-font-en); font-size:11px; letter-spacing:.14em; text-transform:uppercase;
  color: var(--pw-greige);
}
.pw-numbers-label small{
  font-family: var(--pw-font-jp-sans); font-size:11px; letter-spacing:.03em; text-transform:none; opacity:.85;
}
@media (max-width:760px){
  .pw-numbers{ padding:36px 0; }
  .pw-numbers-grid{ grid-template-columns:repeat(2,1fr); gap:28px 16px; }
  .pw-numbers-value{ font-size:28px; }
}

/* ==================================================================
   19. CASE STUDIES grid (service pages — Development / Management /
   Operator Change). Reuses existing tokens; a distinct grid layout from
   .pw-project (which stays as-is, unused by these new sections).
   ================================================================== */
.pw-case-grid{
  display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(28px,3vw,40px);
  margin-top:40px;
}
.pw-case-card{ display:flex; flex-direction:column; }
.pw-case-card .pw-photo{ aspect-ratio:4/3; }
.pw-case-loc{
  font-family: var(--pw-font-en); font-size:12px; letter-spacing:.12em; text-transform:uppercase;
  color: var(--pw-greige); margin-top:18px;
}
.pw-case-name{
  font-family: var(--pw-font-jp-serif); font-size:18px; line-height:1.5; margin-top:8px;
}
.pw-case-tag{
  display:inline-block; margin-top:10px;
  font-family: var(--pw-font-en); font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  border:1px solid var(--pw-line-light); padding:4px 10px;
}
.pw-case-desc{ margin-top:12px; font-size:14px; line-height:1.8; color: var(--pw-text-muted); }
.pw-case-stats{ display:flex; gap:24px; margin-top:16px; }
.pw-case-stat b{ font-family: var(--pw-font-en); font-size:22px; font-weight:500; }
.pw-case-stat span{
  display:block; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color: var(--pw-greige); margin-top:2px;
}
.pw-case-empty{
  grid-column:1 / -1; padding:40px; border:1px dashed var(--pw-line-light);
  text-align:center; color: var(--pw-text-muted); font-size:14px; line-height:1.8;
}
@media (max-width:960px){ .pw-case-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){ .pw-case-grid{ grid-template-columns:1fr; } }

/* ==================================================================
   23. CONTACT flow — visual refresh only (pages/contact.php,
   pages/contact/confirm.php, pages/contact/thanks.php).
   Everything below is scoped to `body#contact` (all three steps share
   this id — see parts/head.php), so nothing here can leak onto any
   other legacy page that also uses .mod-pagetitle/.sec-form-style
   markup. No name/id/value/class in the underlying HTML is touched;
   this is a pure CSS re-skin of the existing table-based form and
   step markup — the <table>/<tr>/<th>/<td> elements stay in the DOM,
   just laid out via CSS grid instead of a literal table.
   ================================================================== */
body#contact.input .mod-pagetitle{ display:none; }

body#contact .sec-form{
  max-width: 840px;
  margin: 0 auto;
  padding: clamp(64px,9vw,128px) var(--pw-pad-x) clamp(96px,10vw,160px);
  background: var(--pw-white);
  font-family: var(--pw-font-jp-sans);
  color: var(--pw-text-on-light);
}
body#contact .sec-form *{ box-sizing: border-box; }

body#contact .form-header{ margin-bottom:48px; padding-bottom:32px; border-bottom:1px solid var(--pw-line-light); }
body#contact .form-header h2.mod-heading-standard{
  display:flex; flex-direction:column; gap:8px;
  font-family: var(--pw-font-jp-serif); font-weight:500;
  font-size: clamp(24px,2.8vw,32px); color: var(--pw-text-on-light);
}
body#contact .form-header h2.mod-heading-standard span{
  order:-1;
  font-family: var(--pw-font-en); font-size:11px; letter-spacing:.2em; text-transform:uppercase; color: var(--pw-greige);
}
body#contact .form-header ul{ display:flex; list-style:none; margin:28px 0 0; padding:0; gap:40px; }
body#contact .form-header ul li{
  font-family: var(--pw-font-en); font-size:12px; letter-spacing:.12em; text-transform:uppercase;
  color: var(--pw-greige); padding-bottom:12px; border-bottom:2px solid var(--pw-line-light);
}
body#contact .form-header ul li.active{ color: var(--pw-text-on-light); border-bottom-color: var(--pw-charcoal); }

body#contact .sec-form > p{ margin:32px 0 48px; font-size:14px; line-height:1.9; color: var(--pw-text-muted); }

/* Table -> CSS grid rows, DOM untouched */
body#contact .sec-form table{ display:block; width:100%; border-collapse:collapse; }
body#contact .sec-form table tbody{ display:block; }
body#contact .sec-form table tr{
  display:grid; grid-template-columns: 200px 1fr; gap:16px 32px; align-items:start;
  padding:28px 0; border-top:1px solid var(--pw-line-light);
}
body#contact .sec-form table tr:first-child{ border-top:none; }
body#contact .sec-form th, body#contact .sec-form td{ display:block; text-align:left; padding:0; border:none; background:none; font-weight:400; }
body#contact .sec-form th label{
  display:inline-flex; align-items:center; gap:8px;
  font-family: var(--pw-font-jp-sans); font-size:13.5px; letter-spacing:.02em; color: var(--pw-text-on-light);
  padding-top:14px;
}
body#contact .sec-form th label span{
  font-family: var(--pw-font-en); font-size:10px; letter-spacing:.06em;
  color: var(--pw-ivory); background: var(--pw-charcoal); padding:3px 8px; border-radius:2px;
}

body#contact .sec-form input[type="text"],
body#contact .sec-form input[type="email"],
body#contact .sec-form input[type="tel"],
body#contact .sec-form textarea{
  width:100%; background: var(--pw-ivory); border:1px solid var(--pw-line-light); border-radius:2px;
  padding:14px 16px; font-family: var(--pw-font-jp-sans); font-size:15px; color: var(--pw-text-on-light);
  box-shadow:none; -webkit-appearance:none; appearance:none;
  transition: border-color .3s var(--pw-ease), background .3s var(--pw-ease);
}
body#contact .sec-form input[type="text"]:focus,
body#contact .sec-form input[type="email"]:focus,
body#contact .sec-form input[type="tel"]:focus,
body#contact .sec-form textarea:focus{
  outline:none; border-color: var(--pw-charcoal); background: var(--pw-white);
}
body#contact .sec-form input::placeholder,
body#contact .sec-form textarea::placeholder{ color: var(--pw-greige); opacity:.8; }
body#contact .sec-form textarea{ min-height:200px; line-height:1.85; resize:vertical; }

/* Plain-text values on the confirm step (td with no input) */
body#contact.confirm .sec-form td{ padding-top:14px; font-size:15px; line-height:1.8; color: var(--pw-text-on-light); }

body#contact .sec-form .zipcode{ display:flex; align-items:center; gap:10px; }
body#contact .sec-form .zipcode input{ width:140px; flex:none; }
body#contact .sec-form .zipcode span{ font-size:12px; color: var(--pw-greige); }

body#contact .sec-form .label-flex{ display:flex; flex-wrap:wrap; gap:14px 24px; padding-top:12px; }
body#contact .sec-form .label-flex label{
  display:inline-flex; align-items:center; gap:9px;
  font-size:13.5px; color: var(--pw-text-on-light); cursor:pointer;
}

body#contact .sec-form input[type="checkbox"]{
  appearance:none; -webkit-appearance:none;
  width:18px; height:18px; flex-shrink:0; margin:0;
  border:1px solid var(--pw-line-light); border-radius:2px; background: var(--pw-ivory);
  position:relative; cursor:pointer;
  transition: background .25s var(--pw-ease), border-color .25s var(--pw-ease);
}
body#contact .sec-form input[type="checkbox"]:checked{ background: var(--pw-charcoal); border-color: var(--pw-charcoal); }
body#contact .sec-form input[type="checkbox"]:checked::after{
  content:""; position:absolute; left:5px; top:1px; width:5px; height:9px;
  border:solid var(--pw-ivory); border-width:0 2px 2px 0; transform:rotate(45deg);
}

body#contact .sec-form .privacy-block{
  margin-top:48px; padding: clamp(28px,3vw,40px); background: var(--pw-ivory); border:1px solid var(--pw-line-light);
}
body#contact .sec-form .privacy-block h3{
  font-family: var(--pw-font-jp-serif); font-size:16px; font-weight:500; color: var(--pw-text-on-light); margin:0 0 16px;
}
body#contact .sec-form .privacy-block p{ font-size:12.5px; line-height:1.95; color: var(--pw-text-muted); margin:0; }
body#contact .sec-form .privacy-block .block{ margin-top:24px; padding-top:24px; border-top:1px solid var(--pw-line-light); }
body#contact .sec-form .privacy-block .block p{ margin-bottom:0; }
body#contact .sec-form .privacy-block label.center{
  display:flex; align-items:center; justify-content:center; gap:10px; margin-top:20px;
  font-size:14px; color: var(--pw-text-on-light); cursor:pointer;
}

body#contact .sec-form .btn-container{
  margin-top:56px; display:flex; align-items:center; justify-content:center; gap:20px; flex-wrap:wrap;
}
body#contact .sec-form input[type="submit"]{
  appearance:none; -webkit-appearance:none; cursor:pointer;
  min-width:280px; background: var(--pw-charcoal); color: var(--pw-ivory); border:1px solid var(--pw-charcoal);
  padding:18px 40px; font-family: var(--pw-font-en); font-size:13px; letter-spacing:.16em; text-transform:uppercase;
  transition: background .3s var(--pw-ease), color .3s var(--pw-ease);
}
body#contact .sec-form input[type="submit"]:hover{ background: var(--pw-ivory); color: var(--pw-charcoal); }
body#contact .sec-form #backBtn{
  appearance:none; -webkit-appearance:none; cursor:pointer;
  background:transparent; color: var(--pw-text-on-light); border:1px solid var(--pw-line-light);
  padding:18px 36px; font-family: var(--pw-font-en); font-size:13px; letter-spacing:.16em; text-transform:uppercase;
  transition: border-color .3s var(--pw-ease), background .3s var(--pw-ease);
}
body#contact .sec-form #backBtn:hover{ border-color: var(--pw-charcoal); background: var(--pw-ivory); }

/* Thanks step */
body#contact.thanks .sec-form p.center{
  text-align:center; font-size:14.5px; line-height:2.1; color: var(--pw-text-muted); max-width:52em; margin:0 auto;
}
body#contact.thanks .sec-form p.center a{ color: var(--pw-text-on-light); text-decoration:underline; text-underline-offset:3px; }

@media (max-width: 760px){
  body#contact .sec-form table tr{ grid-template-columns:1fr; gap:8px; padding:22px 0; }
  body#contact .sec-form th label{ padding-top:0; }
  body#contact .form-header ul{ gap:24px; }
  body#contact .sec-form .zipcode{ flex-wrap:wrap; }
  body#contact .sec-form input[type="submit"],
  body#contact .sec-form #backBtn{ width:100%; min-width:0; }
}

/* ---------- 23b. CONTACT hardening pass ----------
   The theme ships an assets/css/styles.css that this checkout doesn't
   contain a copy of, so the section above was verified against a page
   with no legacy stylesheet loaded at all — it couldn't reveal where
   styles.css still wins the cascade on production (old light-blue
   step UI, a paper-plane icon, a red required badge, a pre-renewal
   gothic font). Everything below re-asserts the same design with
   !important and explicitly kills any ::before/::after/background-image
   a legacy rule might be drawing, so this stylesheet always wins
   regardless of styles.css's specificity. Still scoped to body#contact
   only, and only in this stylesheet — styles.css itself, and every
   name/id/value/class in the PHP, remain untouched. */
body#contact .sec-form,
body#contact .sec-form *{
  font-family: var(--pw-font-jp-sans) !important;
}
body#contact .form-header h2.mod-heading-standard,
body#contact .form-header h2.mod-heading-standard *{
  font-family: var(--pw-font-jp-serif) !important;
  color: var(--pw-text-on-light) !important;
  background:none !important; background-image:none !important;
}
body#contact .form-header h2.mod-heading-standard span{
  font-family: var(--pw-font-en) !important;
  color: var(--pw-greige) !important;
}
body#contact .form-header h2.mod-heading-standard::before,
body#contact .form-header h2.mod-heading-standard::after,
body#contact .form-header h2.mod-heading-standard span::before,
body#contact .form-header h2.mod-heading-standard span::after{
  content:none !important; display:none !important; background:none !important;
}

body#contact .form-header ul,
body#contact .form-header ul li{
  font-family: var(--pw-font-en) !important;
  background:none !important; background-image:none !important;
  box-shadow:none !important; border-radius:0 !important;
}
body#contact .form-header ul li{
  color: var(--pw-greige) !important;
  border:none !important; border-bottom:2px solid var(--pw-line-light) !important;
}
body#contact .form-header ul li.active{
  color: var(--pw-text-on-light) !important; border-bottom-color: var(--pw-charcoal) !important;
}
body#contact .form-header ul li::before,
body#contact .form-header ul li::after{
  content:none !important; display:none !important; background:none !important; box-shadow:none !important;
}

body#contact .sec-form th label span{
  background: var(--pw-charcoal) !important; color: var(--pw-ivory) !important;
  border:none !important; border-radius:2px !important; box-shadow:none !important;
  font-family: var(--pw-font-en) !important;
}

body#contact .sec-form input[type="text"],
body#contact .sec-form input[type="email"],
body#contact .sec-form input[type="tel"],
body#contact .sec-form textarea,
body#contact .sec-form select{
  font-family: var(--pw-font-jp-sans) !important;
  color: var(--pw-text-on-light) !important;
  background: var(--pw-ivory) !important;
  border:1px solid var(--pw-line-light) !important;
  border-radius:2px !important;
  box-shadow:none !important;
}
body#contact .sec-form input[type="text"]:focus,
body#contact .sec-form input[type="email"]:focus,
body#contact .sec-form input[type="tel"]:focus,
body#contact .sec-form textarea:focus,
body#contact .sec-form select:focus{
  border-color: var(--pw-charcoal) !important;
  background: var(--pw-white) !important;
  box-shadow:none !important; outline:none !important;
}

body#contact .sec-form input[type="checkbox"]{
  -webkit-appearance:none !important; appearance:none !important;
  background: var(--pw-ivory) !important; border:1px solid var(--pw-line-light) !important;
  border-radius:2px !important; box-shadow:none !important;
}
body#contact .sec-form input[type="checkbox"]:checked{
  background: var(--pw-charcoal) !important; border-color: var(--pw-charcoal) !important;
}

/* Privacy-block ("個人情報の利用目的") still showed the legacy light-blue
   panel/border/link on production because styles.css's rule won the
   cascade there too — reasserting the same ivory/charcoal palette with
   !important, scoped to body#contact only. */
body#contact .sec-form .privacy-block{
  background: var(--pw-ivory) !important; border:1px solid var(--pw-line-light) !important;
  border-radius:0 !important; box-shadow:none !important; background-image:none !important;
}
body#contact .sec-form .privacy-block::before,
body#contact .sec-form .privacy-block::after{
  content:none !important; display:none !important; background:none !important;
}
body#contact .sec-form .privacy-block h3{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-text-on-light) !important;
  background:none !important; border:none !important;
}
body#contact .sec-form .privacy-block h3::before,
body#contact .sec-form .privacy-block h3::after{
  content:none !important; display:none !important; background:none !important;
}
body#contact .sec-form .privacy-block p{ color: var(--pw-text-muted) !important; }
body#contact .sec-form .privacy-block p a{
  color: var(--pw-text-on-light) !important; text-decoration:underline !important; text-underline-offset:3px !important;
}
body#contact .sec-form .privacy-block .block{
  border-top:1px solid var(--pw-line-light) !important; background:none !important;
}
body#contact .sec-form .privacy-block label.center{ color: var(--pw-text-on-light) !important; }

body#contact .sec-form input[type="submit"]{
  background: var(--pw-charcoal) !important; color: var(--pw-ivory) !important;
  border:1px solid var(--pw-charcoal) !important; border-radius:0 !important;
  box-shadow:none !important; background-image:none !important;
  font-family: var(--pw-font-en) !important;
}
body#contact .sec-form input[type="submit"]:hover{
  background: var(--pw-ivory) !important; color: var(--pw-charcoal) !important;
}
body#contact .sec-form input[type="submit"]::before,
body#contact .sec-form input[type="submit"]::after,
body#contact .sec-form .btn-container::before,
body#contact .sec-form .btn-container::after{
  content:none !important; display:none !important; background:none !important;
}
body#contact .sec-form #backBtn{
  background:transparent !important; color: var(--pw-text-on-light) !important;
  border:1px solid var(--pw-line-light) !important; border-radius:0 !important;
  box-shadow:none !important; font-family: var(--pw-font-en) !important;
}
body#contact .sec-form #backBtn:hover{
  border-color: var(--pw-charcoal) !important; background: var(--pw-ivory) !important;
}

body#contact .form-header::before,
body#contact .form-header::after,
body#contact .mailform::before,
body#contact .mailform::after,
body#contact .sec-form > p::before,
body#contact .sec-form > p::after{
  content:none !important; display:none !important; background:none !important;
}

/* The sitewide bottom-right fixed CTA is redundant on the page that
   already is the contact form — hidden here only (body#contact),
   every other page keeps it exactly as-is. */
body#contact .pw-fixed-cta{ display:none !important; }

/* ==================================================================
   24. CO-CREATION — partner category grid (pages/co-creation.php)
   Modeled directly on .pw-areas-grid's proven bordered-cell pattern,
   just 2 columns instead of 3 so each of the 4 partner categories
   gets more room for a name + jp + description line.
   ================================================================== */
.pw-partner-grid{
  margin-top: clamp(40px,5vw,64px);
  display:grid; grid-template-columns: repeat(2,1fr);
  border-top:1px solid var(--pw-line-light); border-left:1px solid var(--pw-line-light);
}
.pw-partner-cell{
  padding: clamp(32px,4vw,48px);
  border-right:1px solid var(--pw-line-light); border-bottom:1px solid var(--pw-line-light);
}
.pw-partner-num{ font-family: var(--pw-font-en); font-size:14px; color: var(--pw-greige); }
.pw-partner-name{
  margin-top:14px; font-family: var(--pw-font-en); font-weight:500;
  font-size: clamp(22px,2.4vw,30px); text-transform:uppercase; color: var(--pw-text-on-light);
}
.pw-partner-jp{ margin-top:6px; font-family: var(--pw-font-jp-serif); font-size:16px; color: var(--pw-greige); }
.pw-partner-desc{ margin-top:18px; font-size:14px; line-height:1.9; color: var(--pw-text-muted); }

@media (max-width:760px){
  .pw-partner-grid{ grid-template-columns:1fr; }
}

/* ==================================================================
   25. AREAS — photo-forward grid (pages/areas.php only)
   Replaces the old text-row list (area name + inline stats/description)
   with a large-photo editorial grid. Distinct, page-scoped class names
   (.pw-area-photo-*) so nothing here touches the unrelated HOME
   component of the same era, .pw-areas-grid/.pw-area-cell (section 12,
   index.php's small text-only area teaser) — that component and every
   other page keep their current layout untouched. Everything below is
   additionally scoped under body#areas as a second safeguard.
   ================================================================== */
body#areas .pw-area-photo-grid{
  margin-top: clamp(40px,5vw,64px);
  display:grid; grid-template-columns: repeat(3,1fr);
  gap: clamp(40px,4.5vw,64px) clamp(28px,3vw,40px);
}
body#areas .pw-area-photo-card{ display:block; }
body#areas .pw-area-photo{
  aspect-ratio: 4/3; overflow:hidden; background: var(--pw-stone);
}
body#areas .pw-area-photo img{
  width:100%; height:100%; object-fit:cover; display:block;
  transition: transform .6s var(--pw-ease);
}
body#areas a.pw-area-photo-card:hover .pw-area-photo img{ transform: scale(1.045); }
body#areas .pw-area-photo-name{
  margin-top:18px; font-family: var(--pw-font-en); font-weight:500;
  font-size: clamp(18px,1.8vw,22px); letter-spacing:.03em; text-transform:uppercase;
  color: var(--pw-charcoal);
}
body#areas .pw-area-photo-jp{
  display:block; margin-top:4px;
  font-family: var(--pw-font-jp-serif); font-size:14px; letter-spacing:0; text-transform:none;
  color: var(--pw-greige);
}

@media (max-width:1024px){
  body#areas .pw-area-photo-grid{ grid-template-columns: repeat(2,1fr); }
}
@media (max-width:640px){
  body#areas .pw-area-photo-grid{ grid-template-columns: 1fr; }
}

/* ==================================================================
   26. EXISTING contact confirm/thanks steps — visual restyle only
   pages/contact/confirm.php (body#contact.confirm) and
   pages/contact/thanks.php (body#contact.thanks) keep their existing
   HTML exactly as-is — form fields, name attributes, action/method,
   #backBtn, session/token PHP are untouched. This only restyles what
   already renders, scoped to .confirm/.thanks specifically (never
   bare body#contact, which is shared with the live input form at
   pages/contact.php and must not be affected). The one new element,
   .pw-confirm-photo, is an additive <div class="pw-photo"> wrapper
   already inserted in confirm.php next to the existing .mod-pagetitle
   — .pw-photo itself is the same global photo component used
   sitewide, so no new image styling is needed here.
   ================================================================== */
body#contact.confirm,
body#contact.thanks{ background: var(--pw-white); padding-top: 96px; padding-bottom: clamp(64px,7vw,112px); }

body#contact.confirm .mod-pagetitle,
body#contact.thanks .mod-pagetitle{
  padding: 48px var(--pw-pad-x) 0; text-align:left; background:none;
}
body#contact.confirm .mod-pagetitle h1,
body#contact.thanks .mod-pagetitle h1{
  font-family: var(--pw-font-jp-sans); font-size:12px; letter-spacing:.14em; color: var(--pw-greige);
  text-transform:uppercase; font-weight:500;
}
body#contact.confirm .mod-pagetitle h1 span,
body#contact.thanks .mod-pagetitle h1 span{ font-family: var(--pw-font-en); margin-right:8px; }

body#contact.confirm .pw-confirm-photo{
  max-width: 880px; margin: 32px auto 0; padding: 0 var(--pw-pad-x);
}
body#contact.confirm .pw-confirm-photo img{ width:100%; height:100%; }

body#contact.confirm .sec-form,
body#contact.thanks .sec-form{ max-width: 880px; margin: 0 auto; padding: 40px var(--pw-pad-x) 0; }

body#contact.confirm .form-header,
body#contact.thanks .form-header{ text-align:left; margin-bottom: clamp(40px,5vw,56px); }
body#contact.confirm .mod-heading-standard,
body#contact.thanks .mod-heading-standard{
  font-family: var(--pw-font-jp-serif); font-weight:500; color: var(--pw-charcoal);
  font-size: clamp(24px,3vw,32px); line-height:1.5; background:none; border:none; padding:0;
  display:flex; flex-direction:column; gap:8px;
}
body#contact.confirm .mod-heading-standard span,
body#contact.thanks .mod-heading-standard span{
  font-family: var(--pw-font-en); font-size:12px; letter-spacing:.14em; text-transform:uppercase;
  color: var(--pw-greige); order:-1;
}
body#contact.confirm .form-header ul,
body#contact.thanks .form-header ul{
  display:flex; gap: clamp(20px,3vw,32px); margin-top: 28px; padding-top: 24px;
  border-top: 1px solid var(--pw-line-light);
}
body#contact.confirm .form-header ul li,
body#contact.thanks .form-header ul li{
  font-family: var(--pw-font-en); font-size:12px; letter-spacing:.12em; text-transform:uppercase;
  color: var(--pw-greige);
}
body#contact.confirm .form-header ul li.active,
body#contact.thanks .form-header ul li.active{ color: var(--pw-charcoal); }

/* Confirm: field table restyled to a label/value editorial pattern */
body#contact.confirm .sec-form table{ width:100%; border-collapse:collapse; }
body#contact.confirm .sec-form table tr{ border-top: 1px solid var(--pw-line-light); }
body#contact.confirm .sec-form table tr:last-child{ border-bottom: 1px solid var(--pw-line-light); }
body#contact.confirm .sec-form table th,
body#contact.confirm .sec-form table td{
  padding: 20px 4px; vertical-align:top; text-align:left; background:none; border:none;
}
body#contact.confirm .sec-form table th{
  width: 220px; font-family: var(--pw-font-en); font-size:11px; letter-spacing:.1em;
  text-transform:uppercase; color: var(--pw-greige); font-weight:500;
}
body#contact.confirm .sec-form table th label{ font: inherit; color: inherit; }
body#contact.confirm .sec-form table td{
  font-family: var(--pw-font-jp-sans); font-size:15px; line-height:1.9; color: var(--pw-charcoal);
  white-space: pre-wrap; word-break: break-word;
}

/* Thanks: body copy */
body#contact.thanks .sec-form p.center{
  font-family: var(--pw-font-jp-sans); font-size:15px; line-height:2; color: #2A2825;
  text-align:left; max-width: 640px; margin: 0 auto;
}
body#contact.thanks .sec-form p.center a{
  display:inline-block; margin-top: 32px; padding-bottom:3px;
  font-family: var(--pw-font-en); font-size:13px; letter-spacing:.14em; text-transform:uppercase;
  color: var(--pw-charcoal); border-bottom: 1px solid var(--pw-greige);
  transition: color .25s var(--pw-ease), border-color .25s var(--pw-ease);
}
body#contact.thanks .sec-form p.center a:hover{ color: var(--pw-greige); border-bottom-color: var(--pw-charcoal); }

/* Buttons: back / submit, shared shape */
body#contact.confirm .btn-container{
  display:flex; gap:20px; margin-top: clamp(40px,5vw,56px); padding-top: 32px;
  border-top: 1px solid var(--pw-line-light);
}
body#contact.confirm .btn-container #backBtn,
body#contact.confirm .btn-container input[type="submit"]{
  flex:1; padding: 18px 36px; font-family: var(--pw-font-en); font-size:13px;
  letter-spacing:.16em; text-transform:uppercase; text-align:center;
  border-radius:0; cursor:pointer; transition: opacity .25s var(--pw-ease);
}
body#contact.confirm .btn-container #backBtn{
  background: var(--pw-white); color: var(--pw-charcoal); border: 1px solid var(--pw-line-light);
}
body#contact.confirm .btn-container input[type="submit"]{
  background: var(--pw-charcoal); color: var(--pw-ivory); border: 1px solid var(--pw-charcoal);
}
body#contact.confirm .btn-container #backBtn:hover,
body#contact.confirm .btn-container input[type="submit"]:hover{ opacity:.75; }

@media (max-width:640px){
  body#contact.confirm,
  body#contact.thanks{ padding-top:76px; }
  body#contact.confirm .sec-form,
  body#contact.thanks .sec-form{ padding-top:28px; }
  body#contact.confirm .sec-form table th{ width:100%; display:block; padding-bottom:6px; }
  body#contact.confirm .sec-form table td{ display:block; padding-top:0; }
  body#contact.confirm .btn-container{ flex-direction:column; }
}

/* ---------- 26b. EXISTING contact confirm/thanks — hardening pass ----------
   Written with no local copy of assets/css/styles.css (same known gap as
   sections 22/22b and 23/23b above), so on production the legacy
   stylesheet may still win the cascade for .mod-pagetitle, .mod-heading-standard,
   the step list, the field table, and the buttons — reasserting the same
   charcoal/ivory/greige design with !important and stripping any
   ::before/::after/background-image/box-shadow a legacy rule might still
   draw, so this stylesheet always wins regardless of styles.css's
   specificity. Scoped to body#contact.confirm / body#contact.thanks only
   — never bare body#contact — so pages/contact.php (class="input") is
   completely unaffected, and no HTML, form field, session, or routing
   is touched. */
body#contact.confirm .mod-pagetitle,
body#contact.thanks .mod-pagetitle{
  background:none !important; background-image:none !important; box-shadow:none !important;
}
body#contact.confirm .mod-pagetitle h1,
body#contact.thanks .mod-pagetitle h1{
  font-family: var(--pw-font-jp-sans) !important; color: var(--pw-greige) !important;
  background:none !important; border:none !important; text-shadow:none !important; font-weight:500 !important;
}
body#contact.confirm .mod-pagetitle h1::before,
body#contact.confirm .mod-pagetitle h1::after,
body#contact.thanks .mod-pagetitle h1::before,
body#contact.thanks .mod-pagetitle h1::after{
  content:none !important; display:none !important; background:none !important;
}

body#contact.confirm .mod-heading-standard,
body#contact.thanks .mod-heading-standard{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-charcoal) !important;
  background:none !important; background-image:none !important; box-shadow:none !important;
  border:none !important; text-decoration:none !important; text-shadow:none !important;
}
body#contact.confirm .mod-heading-standard span,
body#contact.thanks .mod-heading-standard span{
  font-family: var(--pw-font-en) !important; color: var(--pw-greige) !important;
}

body#contact.confirm .form-header ul li,
body#contact.thanks .form-header ul li{
  font-family: var(--pw-font-en) !important; color: var(--pw-greige) !important;
  background:none !important; border:none !important;
}
body#contact.confirm .form-header ul li.active,
body#contact.thanks .form-header ul li.active{ color: var(--pw-charcoal) !important; }
body#contact.confirm .form-header ul li::before,
body#contact.confirm .form-header ul li::after,
body#contact.thanks .form-header ul li::before,
body#contact.thanks .form-header ul li::after{
  content:none !important; display:none !important; background:none !important;
}

body#contact.confirm .sec-form table,
body#contact.confirm .sec-form table tr,
body#contact.confirm .sec-form table th,
body#contact.confirm .sec-form table td{
  background:none !important; background-image:none !important; box-shadow:none !important;
}
body#contact.confirm .sec-form table th{
  font-family: var(--pw-font-en) !important; color: var(--pw-greige) !important; font-weight:500 !important;
}
body#contact.confirm .sec-form table td{
  font-family: var(--pw-font-jp-sans) !important; color: var(--pw-charcoal) !important;
}

body#contact.thanks .sec-form p.center{
  font-family: var(--pw-font-jp-sans) !important; color: #2A2825 !important;
}
body#contact.thanks .sec-form p.center a{
  font-family: var(--pw-font-en) !important; color: var(--pw-charcoal) !important;
  background:none !important; border:none !important; border-bottom: 1px solid var(--pw-greige) !important;
  text-decoration:none !important; box-shadow:none !important; border-radius:0 !important;
}

body#contact.confirm .btn-container #backBtn,
body#contact.confirm .btn-container input[type="submit"]{
  font-family: var(--pw-font-en) !important; border-radius:0 !important; box-shadow:none !important;
  text-shadow:none !important; text-decoration:none !important;
}
body#contact.confirm .btn-container #backBtn{
  background: var(--pw-white) !important; color: var(--pw-charcoal) !important;
  border: 1px solid var(--pw-line-light) !important;
}
body#contact.confirm .btn-container input[type="submit"]{
  background: var(--pw-charcoal) !important; color: var(--pw-ivory) !important;
  border: 1px solid var(--pw-charcoal) !important;
}

/* ==================================================================
   27. EXISTING privacy policy — visual restyle only
   pages/privacy.php keeps its existing HTML exactly as-is — every
   paragraph, heading, and list item of the policy text is untouched,
   nothing is added, removed, or reworded. This only restyles what
   already renders, scoped to body#privacy (unique to this page) or
   its existing children (.mod-pagetitle, .sec-content). No other
   page (including pages/terms.php, which shares the same old
   .mod-pagetitle/.sec-content markup pattern) is targeted.
   ================================================================== */
body#privacy{ background: var(--pw-white); }

/* .mod-pagetitle becomes this page's hero title block: the existing
   <span>Privacy Policy</span>プライバシーポリシー text is kept exactly
   as-is, just given the site's eyebrow(EN)+serif-headline(JP) hero
   typography instead of the old page-title banner look. */
body#privacy .mod-pagetitle{
  background: var(--pw-ivory);
  text-align:left;
  padding: 130px var(--pw-pad-x) 56px;
  border-bottom: 1px solid var(--pw-line-light);
}
body#privacy .mod-pagetitle h1{
  font-family: var(--pw-font-jp-serif); font-weight:500; color: var(--pw-charcoal);
  font-size: clamp(30px,4vw,48px); line-height:1.4;
}
body#privacy .mod-pagetitle h1 span{
  display:block; margin-bottom:16px;
  font-family: var(--pw-font-en); font-size:13px; letter-spacing:.24em; text-transform:uppercase;
  color: var(--pw-greige);
}

/* .sec-content: the policy body. Constrained to a readable column,
   numbered <h3> articles get generous top spacing + a hairline rule
   as a section divider, the intro paragraph (before the first <h3>)
   reads as a short lead separated by its own rule. */
body#privacy .sec-content{
  max-width: 760px; margin: 0 auto;
  padding: clamp(64px,7vw,96px) var(--pw-pad-x) clamp(96px,10vw,140px);
  font-family: var(--pw-font-jp-sans); font-size:15.5px; line-height:2; color:#2A2825;
}
body#privacy .sec-content > p{ margin: 0 0 32px; }
body#privacy .sec-content > p:first-child{
  font-size:16.5px; color: var(--pw-text-muted);
  padding-bottom:40px; margin-bottom:56px; border-bottom:1px solid var(--pw-line-light);
}
body#privacy .sec-content h3{
  margin: 56px 0 20px; padding-top:32px; border-top:1px solid var(--pw-line-light);
  font-family: var(--pw-font-jp-serif); font-weight:500; color: var(--pw-charcoal);
  font-size: clamp(18px,2vw,21px); line-height:1.6;
}
body#privacy .sec-content h3:first-of-type{ margin-top:0; }
body#privacy .sec-content ul{ margin:0 0 32px; padding-left:0; list-style:none; }
body#privacy .sec-content li{
  position:relative; padding-left:1.5em; margin-bottom:14px; line-height:1.9;
}
body#privacy .sec-content li::before{
  content:""; position:absolute; left:2px; top:0.85em;
  width:5px; height:5px; background: var(--pw-champagne);
}
body#privacy .sec-content a{
  color: var(--pw-charcoal); text-decoration:none; border-bottom:1px solid var(--pw-greige);
  transition: color .25s var(--pw-ease), border-color .25s var(--pw-ease);
}
body#privacy .sec-content a:hover{ color: var(--pw-greige); border-bottom-color: var(--pw-charcoal); }

@media (max-width:640px){
  body#privacy .mod-pagetitle{ padding-top:104px; padding-bottom:44px; }
  body#privacy .sec-content{ font-size:15px; line-height:1.95; }
  body#privacy .sec-content h3{ margin-top:48px; }
}

/* ---------- 27b. EXISTING privacy policy — hardening pass ----------
   Written with no local copy of assets/css/styles.css (same known gap
   as sections 22/26 above), so on production the legacy stylesheet may
   still win the cascade for .mod-pagetitle and .sec-content's h3/p/ul/a.
   Reasserts the same charcoal/ivory/greige design with !important and
   strips any ::before/::after/background-image/box-shadow a legacy
   rule might still draw. Scoped to body#privacy only — pages/terms.php
   and every other page keep their current look untouched. */
body#privacy .mod-pagetitle{
  background: var(--pw-ivory) !important; background-image:none !important; box-shadow:none !important;
}
body#privacy .mod-pagetitle h1{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-charcoal) !important;
  background:none !important; border:none !important; text-shadow:none !important;
}
body#privacy .mod-pagetitle h1 span{
  font-family: var(--pw-font-en) !important; color: var(--pw-greige) !important;
}
body#privacy .mod-pagetitle h1::before,
body#privacy .mod-pagetitle h1::after{
  content:none !important; display:none !important; background:none !important;
}
body#privacy .sec-content,
body#privacy .sec-content > p{ color:#2A2825 !important; background:none !important; }
body#privacy .sec-content h3{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-charcoal) !important;
  background:none !important; background-image:none !important; box-shadow:none !important;
  border:none !important; border-top: 1px solid var(--pw-line-light) !important;
  text-decoration:none !important; text-shadow:none !important;
}
body#privacy .sec-content h3::before,
body#privacy .sec-content h3::after{
  content:none !important; display:none !important; background:none !important;
}
body#privacy .sec-content li{ background:none !important; }
body#privacy .sec-content li::marker{ content:none !important; }
body#privacy .sec-content a{
  color: var(--pw-charcoal) !important; background:none !important;
  border:none !important; border-bottom:1px solid var(--pw-greige) !important;
  text-decoration:none !important; box-shadow:none !important;
}

/* ==================================================================
   28. EXISTING terms of use — visual restyle only
   pages/terms.php keeps its existing HTML exactly as-is — every
   article, paragraph, list, link, and its wording/punctuation/order
   is untouched. Same design system as section 27 (privacy policy)
   above, scoped to body#terms (unique to this page) instead, so
   body#privacy and every other page sharing .mod-pagetitle/.sec-content
   (pages/privacy.php, 404.php) are completely unaffected. Adds h4
   support (terms.php has "推奨環境について"/"ダウンロード"/"Soft関連商標
   について" sub-headings that privacy.php doesn't have) as a visually
   smaller step below h3, to keep the heading hierarchy readable.
   ================================================================== */
body#terms{ background: var(--pw-white); }

body#terms .mod-pagetitle{
  background: var(--pw-ivory);
  text-align:left;
  padding: 130px var(--pw-pad-x) 56px;
  border-bottom: 1px solid var(--pw-line-light);
}
body#terms .mod-pagetitle h1{
  font-family: var(--pw-font-jp-serif); font-weight:500; color: var(--pw-charcoal);
  font-size: clamp(26px,3.6vw,44px); line-height:1.4;
}
body#terms .mod-pagetitle h1 span{
  display:block; margin-bottom:16px;
  font-family: var(--pw-font-en); font-size:13px; letter-spacing:.24em; text-transform:uppercase;
  color: var(--pw-greige);
}

body#terms .sec-content{
  max-width: 760px; margin: 0 auto;
  padding: clamp(64px,7vw,96px) var(--pw-pad-x) clamp(96px,10vw,140px);
  font-family: var(--pw-font-jp-sans); font-size:15.5px; line-height:2; color:#2A2825;
}
body#terms .sec-content > p{ margin: 0 0 32px; }
body#terms .sec-content h3{
  margin: 56px 0 20px; padding-top:32px; border-top:1px solid var(--pw-line-light);
  font-family: var(--pw-font-jp-serif); font-weight:500; color: var(--pw-charcoal);
  font-size: clamp(18px,2vw,21px); line-height:1.6;
}
body#terms .sec-content h3:first-of-type{ margin-top:0; }
body#terms .sec-content h4{
  margin: 40px 0 16px;
  font-family: var(--pw-font-jp-serif); font-weight:500; color: var(--pw-charcoal);
  font-size: clamp(15.5px,1.6vw,17px); line-height:1.6;
}
body#terms .sec-content ul{ margin:0 0 32px; padding-left:0; list-style:none; }
body#terms .sec-content li{
  position:relative; padding-left:1.5em; margin-bottom:10px; line-height:1.9;
}
body#terms .sec-content li::before{
  content:""; position:absolute; left:2px; top:0.85em;
  width:5px; height:5px; background: var(--pw-champagne);
}
body#terms .sec-content a{
  color: var(--pw-charcoal); text-decoration:none; border-bottom:1px solid var(--pw-greige);
  word-break: break-all;
  transition: color .25s var(--pw-ease), border-color .25s var(--pw-ease);
}
body#terms .sec-content a:hover{ color: var(--pw-greige); border-bottom-color: var(--pw-charcoal); }

@media (max-width:640px){
  body#terms .mod-pagetitle{ padding-top:104px; padding-bottom:44px; }
  body#terms .sec-content{ font-size:15px; line-height:1.95; }
  body#terms .sec-content h3{ margin-top:48px; }
  body#terms .sec-content h4{ margin-top:32px; }
}

/* ---------- 28b. EXISTING terms of use — hardening pass ----------
   Same reasoning as 27b: no local copy of assets/css/styles.css, so
   this reasserts the design with !important and strips any legacy
   ::before/::after/background/box-shadow (the old blue headings, light
   blue backgrounds, and heavy boxes the user reported). Scoped to
   body#terms only — pages/privacy.php and every other page keep their
   current look untouched. */
body#terms .mod-pagetitle{
  background: var(--pw-ivory) !important; background-image:none !important; box-shadow:none !important;
}
body#terms .mod-pagetitle h1{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-charcoal) !important;
  background:none !important; border:none !important; text-shadow:none !important;
}
body#terms .mod-pagetitle h1 span{
  font-family: var(--pw-font-en) !important; color: var(--pw-greige) !important;
}
body#terms .mod-pagetitle h1::before,
body#terms .mod-pagetitle h1::after{
  content:none !important; display:none !important; background:none !important;
}
body#terms .sec-content,
body#terms .sec-content > p{ color:#2A2825 !important; background:none !important; }
body#terms .sec-content h3{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-charcoal) !important;
  background:none !important; background-image:none !important; box-shadow:none !important;
  border:none !important; border-top: 1px solid var(--pw-line-light) !important;
  text-decoration:none !important; text-shadow:none !important;
}
body#terms .sec-content h3::before,
body#terms .sec-content h3::after{
  content:none !important; display:none !important; background:none !important;
}
body#terms .sec-content h4{
  font-family: var(--pw-font-jp-serif) !important; color: var(--pw-charcoal) !important;
  background:none !important; background-image:none !important; box-shadow:none !important;
  border:none !important; text-decoration:none !important; text-shadow:none !important;
}
body#terms .sec-content li{ background:none !important; }
body#terms .sec-content li::marker{ content:none !important; }
body#terms .sec-content a{
  color: var(--pw-charcoal) !important; background:none !important;
  border:none !important; border-bottom:1px solid var(--pw-greige) !important;
  text-decoration:none !important; box-shadow:none !important;
}

/* ==================================================================
   29. SP (≤640px) overflow guards — HOME + shared footer
   Everything here lives inside @media (max-width:640px), so PC and
   tablet rendering is byte-for-byte unchanged. No body{overflow-x:hidden}
   anywhere — each rule targets the element that can actually exceed the
   viewport, so the content is made to fit rather than clipped.
   ================================================================== */
@media (max-width: 640px){
  /* .pw-eyebrow is display:flex with three items: the "01" number, the
     label text, and a 40px ::after rule. At 13px + .28em tracking the
     longest labels on the site ("Avoiding Real Estate Mistakes" → ~481px,
     "What are you looking for?" → ~415px, both uppercased) far exceed the
     ~335px of usable width at 375px, and the rule competes with them for
     space on the same flex row. Applies to every page, not just HOME —
     the longest labels live on the sub-pages. Allow the row to wrap,
     tighten the tracking a little, and stop the rule being squeezed. */
  .pw-eyebrow{ flex-wrap: wrap; letter-spacing: .18em; }
  .pw-eyebrow::after{ flex: 0 0 32px; }

  /* Long unbroken ASCII runs are the one thing CJK line-breaking can't
     resolve on a narrow screen: the hero's service list, the CTA phone
     line, and the footer address/tel/Map links. These wrap normally at
     spaces but have no break opportunity inside a run like a phone
     number or a postal code, so give them an explicit last resort. */
  .pw-hero-scope,
  .pw-cta-tel{ overflow-wrap: anywhere; }
}
/* Footer address block: shared by every page, and the reported overflow
   (〒542-0086 / 大阪市中央区西心斎橋1-12-8 / 06-4708-8120) is entirely
   ASCII runs with no break opportunity. Safe at every width — normal
   Japanese text already had break points and is unaffected. */
.pw-footer-addr{ overflow-wrap: anywhere; }

/* ==================================================================
   30. SP paragraph rhythm — <br class="pw-gap">
   A long single <p> often carries several distinct thoughts (catch line
   → explanation → next point → conclusion). On SP those need visible
   breathing room, not just a line break, but splitting the <p> into
   several elements would change the HTML structure and the PC layout.
   So: a break that also opens vertical space, and only on SP.

   Hidden entirely above 640px, so PC/tablet line structure is untouched
   (PC keeps using plain <br> / <br class="pw-pc">). On SP it becomes a
   block-level break with a top margin, which reads as a small paragraph
   gap inside the existing <p>. display:block on a <br> is what makes the
   margin apply; if a browser ignored it the element would still perform
   its normal line break, so the worst case is "no extra gap" rather than
   broken text. Specificity (element+class) beats .pw-sp's display:inline,
   so `class="pw-gap"` needs no companion class.
   ================================================================== */
br.pw-gap{ display: none; }
@media (max-width: 640px){
  br.pw-gap{ display: block; margin-top: .95em; }
}

/* ==================================================================
   31. Undo the legacy body{text-align:justify}
   The production-only assets/css/styles.css (compiled SCSS, not present
   in this checkout — read from the live site to confirm) sets on <body>:
       text-align: justify;  letter-spacing: .1em;  overflow-x: hidden;
   `justify` is inherited by every descendant, so any heading or lead that
   wraps to more than one line gets its non-final lines stretched to the
   full column width. That is what pushed "Nationwide" and "Villa" to
   opposite edges in HOME's AREAS heading ("Nationwide Villa Operations"
   wrapping to two lines), and it silently spaces out every other wrapped
   line in the pw-* design system too. Reset to left alignment for the
   renewal components only — the `:is()` list is the same one section 2
   uses to scope this design system, so legacy templates that still rely
   on the justified look are untouched. Higher specificity than the bare
   `body` selector, so no !important needed. Centred components keep
   their own explicit `text-align:center` (defined later in the file and
   more specific), so they are unaffected.
   ================================================================== */
   NOTE: the actual declaration is NOT here — it lives in the section 2
   base block near the top of this file (`text-align: left` alongside the
   font-family reset). It has to be early: `text-align` inherits, so
   setting it once on the component root covers every descendant, and
   placing it early means every later, intentional `text-align:center`
   (.pw-cta, .pw-section-head--center, .pw-numbers-grid, figcaption, …)
   still wins the cascade. A late blanket reset would have silently
   left-aligned all of those.
   ================================================================== */

/* ==================================================================
   32. HOME AREAS section — SP layout
   Scoped with :has() to the one section that contains .pw-areas-grid,
   so no other HOME section or page shifts. All inside max-width:640px,
   so PC/tablet is untouched.
   ================================================================== */
@media (max-width: 640px){
  /* The 4 forced lines of the lead sat on line-height:2, which reads as
     blank lines between phrases. Tighten the leading only here so the
     same four lines read as one paragraph. */
  body#top .pw-section:has(.pw-areas-grid) .pw-section-head .pw-lead{
    line-height: 1.75;
  }
  /* Section top padding is var(--pw-pad-y) = 96px at this width; ~28%
     tighter, still generous. Bottom padding gains clearance so the fixed
     "ご相談はこちら" CTA does not sit on top of the last row of cards. */
  body#top .pw-section:has(.pw-areas-grid){
    padding-top: 70px;
    padding-bottom: 104px;
  }
}

/* ==================================================================
   33. HOME "06 Our Experts" bio — collapse the doubled <br>
   Cause of the oversized gap inside each expert's bio on SP:
   inc/experts-data.php stores each `desc` with a literal "\n\n" between
   the two halves of the text (6 occurrences across the three people),
   and index.php renders it through nl2br(). nl2br turns EACH newline
   into a <br />, so "\n\n" becomes "<br /><br />" — the second <br>
   generates its own empty line box, i.e. a full blank line (~26px at
   this element's 13.5px/1.9 type) on top of the paragraph's own leading.
   That is markup generated at runtime from the data file, so it can't be
   fixed by editing the template, and the text itself must not change.

   Fix without touching data or wording: make the SECOND <br> of any
   consecutive pair a zero-height block instead of an inline line-break.
   It then still ends the line but no longer creates an empty line box,
   and its margin supplies a deliberate, much smaller paragraph gap —
   exactly the mechanism .pw-gap uses, so the rhythm matches the rest of
   the site. Scoped to body#top per the request that only HOME change;
   pages/experts.php renders the longer `bio` field through the same
   nl2br() path and is intentionally left as-is.
   ================================================================== */
@media (max-width: 640px){
  body#top .pw-expert-desc br + br{ display: block; margin-top: .45em; }
}
