:root{
  --ink:#1F3D33;
  --ink-deep:#14241E;
  --accent:#3E6B5A;
  --paper:#F7F4EC;
  --paper-light:#FDFCF8;
  --line:#CFDAD3;
  --text:#2B2B2B;
  --text-sub:#555;
  --space-sm:clamp(28px,4vw,44px);
  --space-md:clamp(56px,8vw,88px);
  --space-lg:clamp(88px,12vw,136px);
}

body{margin:0;background:var(--paper-light);color:var(--text);font-family:"Noto Sans JP",system-ui,sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--ink)}
a:hover{color:var(--accent)}

.top-bar{height:5px;background:var(--ink)}

.site-header{position:sticky;top:0;z-index:10;background:#FFFFFF;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding:16px clamp(20px,5vw,60px)}

@media (prefers-reduced-motion:no-preference){
  @supports (animation-timeline: scroll()){
    .site-header{
      border-bottom-color:transparent;
      box-shadow:0 2px 8px rgba(0,0,0,0);
      animation-name:header-boundary-reveal;
      animation-duration:.3s;
      animation-timing-function:ease-out;
      animation-fill-mode:forwards;
      animation-timeline:scroll();
      animation-range:100px 400px;
    }
    @keyframes header-boundary-reveal{
      to{
        border-bottom-color:var(--line);
        box-shadow:0 2px 8px rgba(0,0,0,.08);
      }
    }
  }
}
.site-title{font-family:'Shippori Mincho',serif;font-weight:600;font-size:clamp(19px,2.4vw,24px);letter-spacing:.08em;color:var(--ink)}
.header-tel{display:flex;align-items:baseline;gap:10px;text-decoration:none;color:var(--ink)}
.header-tel-label{font-size:14px;color:var(--text-sub)}
.header-tel-number{font-family:'Shippori Mincho',serif;font-weight:600;font-size:clamp(20px,2.6vw,26px);letter-spacing:.05em}

.wrap{max-width:820px;margin:0 auto}

.hero{background:var(--ink);padding-block:clamp(4rem,10vw,7rem);padding-inline:clamp(20px,5vw,60px)}
.eyebrow{font-size:13px;letter-spacing:.28em;color:var(--paper);opacity:.65;margin-bottom:18px}
.hero-title{margin:0;font-family:'Shippori Mincho',serif;font-weight:600;font-size:clamp(32px,5.4vw,48px);letter-spacing:.1em;line-height:1.5;color:var(--paper)}
.hero-catch{margin:28px 0 0;font-family:'Shippori Mincho',serif;font-weight:500;font-size:clamp(20px,2.6vw,26px);line-height:2;letter-spacing:.04em;color:var(--line);text-wrap:pretty}
.hero-lead{margin:30px 0 0;font-size:18px;line-height:2.1;color:var(--paper);max-width:44em;text-wrap:pretty}

.section{padding-block:var(--space-md);padding-inline:clamp(20px,5vw,60px)}
.section-border{border-bottom:1px solid var(--line)}
.section-paper{background:var(--paper)}

.section--gap-bottom-sm{padding-block-end:var(--space-sm)}
.section--gap-bottom-lg{padding-block-end:var(--space-lg)}

@media (prefers-reduced-motion:no-preference){
  @supports (animation-timeline: view()){
    .section > .wrap{
      opacity:0;
      transform:translateY(12px);
      animation:content-rise .6s ease-out forwards;
      animation-timeline:view();
      animation-range:cover 10% cover 35%;
    }
    @keyframes content-rise{
      to{opacity:1;transform:translateY(0)}
    }
    section:nth-of-type(2) > .wrap{
      opacity:1;
      transform:none;
      animation:none;
    }
  }
}

.section-head{display:flex;align-items:center;gap:18px;margin-bottom:40px}
.section-head h2{margin:0;font-family:'Shippori Mincho',serif;font-weight:600;font-size:clamp(24px,3vw,30px);letter-spacing:.18em;color:var(--ink)}
.section-head span{flex:1;height:1px;background:var(--accent)}

.info-list{margin:0;font-size:18px;line-height:2}
.info-row{display:flex;gap:20px;flex-wrap:wrap;border-top:1px solid var(--line);padding:16px 0}
.info-row dt{width:8em;flex:none;color:var(--accent);letter-spacing:.1em}
.info-row dd{margin:0;flex:1;min-width:16em}
.info-tel{text-decoration:none;color:var(--ink);font-weight:500}

.profile-layout{display:flex;gap:clamp(28px,5vw,56px);align-items:flex-start;flex-wrap:wrap}
.portrait{width:240px;height:310px;flex:none;object-fit:cover;object-position:center top;display:block}
.profile-body{flex:1;min-width:280px}
.profile-name{font-family:'Shippori Mincho',serif;font-weight:600;font-size:clamp(24px,3vw,28px);letter-spacing:.12em;color:var(--ink)}
.profile-meta{margin-top:10px;font-size:16px;letter-spacing:.06em;color:var(--text-sub)}
.profile-list{margin:26px 0 0;font-size:18px;line-height:2}
.profile-row{display:flex;gap:20px;flex-wrap:wrap;border-top:1px solid var(--line);padding:14px 0}
.profile-row dt{width:5em;flex:none;color:var(--accent);letter-spacing:.1em}
.profile-row dd{margin:0;flex:1;min-width:15em}
.row-close{border-bottom:1px solid var(--line)}
.note{font-size:16px;color:var(--text-sub)}

.philosophy-text{margin:0;background:var(--paper-light);border-left:4px solid var(--accent);padding:2.5rem 2rem;font-family:'Shippori Mincho',serif;font-weight:500;font-size:1.05rem;line-height:2.0;color:var(--text);text-wrap:pretty}

.practice-list{margin:0;font-size:18px}
.practice-row{display:flex;gap:20px;flex-wrap:wrap;border-top:1px solid var(--line);padding:20px 0}
.practice-row dt{width:8em;flex:none;color:var(--accent);font-family:"Noto Sans JP",sans-serif;font-weight:500;letter-spacing:.12em}
.practice-row dd{margin:0;flex:1;min-width:16em;color:var(--text);line-height:1.9}

.access-address{margin:0 0 24px;font-size:18px;line-height:2}
.map-frame{border:1px solid var(--line)}
.map-frame iframe{display:block;width:100%;height:380px;border:0}

.site-footer{background:var(--ink-deep);color:#EDEFE9;padding:36px clamp(20px,5vw,60px);text-align:center}
.footer-title{font-family:'Shippori Mincho',serif;font-weight:600;font-size:20px;letter-spacing:.12em}
.footer-meta{margin-top:10px;font-size:15px;letter-spacing:.08em;color:#A9BCB1}

.nb {
  display: inline-block;
}
