:root { --brand:#6c7752; --accent:#f1f6da; --ink:#30362b; --muted:#73796b; --line:#e3e7db; }
    * { box-sizing:border-box; }
    html { scroll-behavior:smooth; scroll-padding-top:calc(var(--sticky-height, 68px) + 24px); }
    body { margin:0; color:var(--ink); background:#fff; font-family:"Yu Gothic", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif; font-size:15px; line-height:2; }
    a { color:inherit; text-underline-offset:5px; }
    a:focus-visible, summary:focus-visible, button:focus-visible { outline:3px solid var(--brand); outline-offset:5px; }
    .menu-toggle { display:none; }
    .menu-toggle:focus-visible { outline-color:white; }
    .menu-icon { width:20px; display:grid; gap:5px; }
    .menu-icon span { display:block; height:1px; background:currentColor; }
    .menu-toggle[aria-expanded="true"] .menu-icon span:first-child { transform:translateY(3px) rotate(45deg); }
    .menu-toggle[aria-expanded="true"] .menu-icon span:last-child { transform:translateY(-3px) rotate(-45deg); }
    .wrap { width:min(100% - 80px, 1040px); margin-inline:auto; }
    .brand-band { background:var(--brand); color:white; }
    .brand-inner { min-height:100px; display:flex; align-items:center; justify-content:space-between; gap:24px; }
    .brand { text-decoration:none; display:flex; flex-direction:column; line-height:1.5; }
    .brand strong { font-family:Georgia,serif; font-size:30px; font-weight:400; letter-spacing:.035em; }
    .brand span { font-size:11px; letter-spacing:.13em; }
    .brand-note { font-size:11px; letter-spacing:.18em; opacity:.8; }
    nav { position:sticky; top:0; z-index:20; background:white; border-bottom:1px solid var(--line); box-shadow:0 3px 12px #30362b08; }
    .nav-inner { min-height:68px; display:flex; justify-content:flex-end; align-items:center; gap:34px; flex-wrap:wrap; }
    nav a { font-size:12px; text-decoration:none; padding:5px 0; border-bottom:3px solid transparent; }
    nav a:hover { border-color:var(--brand); }
    nav a[aria-current="location"] { color:var(--brand); background:var(--accent); border-bottom-color:var(--brand); box-shadow:0 0 0 6px var(--accent); }
    .hero { padding:100px 0 104px; }
    .eyebrow { display:flex; align-items:center; gap:12px; color:var(--brand); font-size:11px; letter-spacing:.2em; }
    .eyebrow::before { content:""; width:32px; height:2px; background:var(--brand); }
    h1 { margin:27px 0 25px; font-size:clamp(28px,4vw,43px); line-height:1.7; font-weight:500; letter-spacing:.12em; }
    .hero h1 { width:fit-content; max-width:100%; color:var(--brand); font-weight:580; }
    .hero-char { display:inline-block; animation:hero-fade-in .7s ease-out var(--delay) both; }
    @supports ((background-clip:text) or (-webkit-background-clip:text)) {
      .hero-char { background:linear-gradient(135deg, #30452b 42%, #6c7752 50%, #97a66a 58%); background-size:var(--gradient-width, 700%) var(--gradient-height, 100%); background-position:var(--gradient-x, var(--gradient-position)) var(--gradient-y, 0px); background-repeat:no-repeat; -webkit-background-clip:text; background-clip:text; color:transparent; }
    }
    @keyframes hero-fade-in { from { opacity:0; } to { opacity:1; } }
    @media (forced-colors:active) { .hero-char { background:none; color:CanvasText; } }
    .hero p { margin:0; color:var(--muted); font-size:14px; }
    .hero-foot { margin-top:55px; display:flex; align-items:center; gap:14px; font-size:10px; letter-spacing:.15em; color:var(--brand); }
    .hero-foot span { width:60px; height:1px; background:var(--brand); }
    section { padding:0 0 88px; }
    /* Let even the final heading reach the same position below the sticky menu. */
    main > section:last-child { min-height:calc(100dvh - var(--sticky-height, 68px) - 24px); }
    .section-head { background:var(--accent); padding:18px 25px; display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 20px; margin-bottom:36px; border-left:3px solid var(--brand); }
    h2 { font-size:20px; font-weight:500; letter-spacing:.1em; margin:0; }
    .en { color:var(--brand); font-family:Georgia,serif; font-size:13px; letter-spacing:.07em; }
    .section-content { padding-inline:28px; }
    .business-list { margin:0; padding-left:1.4em; }
    .business-list li { padding:7px 0; }
    .business-list li::marker { color:var(--brand); }
    dl { margin:0; }
    .company-row { display:grid; grid-template-columns:190px 1fr; border-bottom:1px solid var(--line); padding:21px 0; gap:20px; }
    .company-row:first-child { padding-top:0; }
    dt { font-size:13px; color:var(--muted); }
    dd { margin:0; }
    .contact-box h3 { margin:0 0 12px; font-size:16px; font-weight:500; }
    .contact-box p { margin:0; }
    .email-copy { display:block; margin-top:15px; padding:0; border:0; background:white; max-width:100%; cursor:pointer; }
    .email-copy img { display:block; width:300px; max-width:100%; height:auto; }
    .contact-box .copy-status { min-height:2em; margin-top:8px; font-size:12px; color:var(--brand); }
    details { border-bottom:1px solid var(--line); padding-bottom:20px; }
    summary { cursor:pointer; font-size:14px; }
    .policy-text { color:var(--muted); font-size:13px; max-width:780px; margin:18px 0 0; }
    .policy-text h3 { margin:24px 0 8px; color:var(--ink); font-size:14px; font-weight:500; }
    .policy-text p { margin:0 0 14px; }
    footer { background:#f5f6f2; border-top:1px solid var(--line); padding:30px 0; }
    .footer-inner { display:flex; justify-content:space-between; align-items:center; gap:20px; }
    .footer-name { font-size:12px; }
    small { font-size:10px; color:var(--muted); }
    .back-top { position:fixed; right:28px; bottom:28px; width:64px; height:64px; display:flex; flex-direction:column; justify-content:center; align-items:center; text-decoration:none; background:var(--brand); color:white; border:1px solid #ffffff80; border-radius:50%; box-shadow:0 5px 20px #30362b25; z-index:10; font-size:10px; line-height:1.6; letter-spacing:.1em; transition:transform .2s,background .2s; }
    .back-top .arrow { font-size:20px; line-height:1.1; }
    .back-top:hover { transform:translateY(-4px); background:#56613e; }
    @media(max-width:640px) {
      .wrap { width:calc(100% - 40px); }
      .brand-inner { min-height:90px; }
      .brand-band { position:sticky; top:0; z-index:30; }
      nav { top:var(--sticky-height, 90px); max-height:calc(100dvh - var(--sticky-height, 90px)); overflow-y:auto; }
      .brand strong { font-size:26px; }
      .brand-note { display:none; }
      .menu-toggle:not([hidden]) { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; min-width:54px; min-height:54px; border:1px solid #ffffff70; border-radius:4px; background:transparent; color:white; font:inherit; font-size:10px; line-height:1.2; cursor:pointer; flex-shrink:0; }
      .nav-inner { flex-direction:column; align-items:stretch; gap:0; padding-block:10px; }
      nav[data-collapsed="true"] { display:none; }
      nav a { font-size:13px; padding:12px 14px; border-bottom:1px solid var(--line); }
      nav a:last-child { border-bottom:0; }
      nav a:hover { background:var(--accent); }
      nav a[aria-current="location"] { box-shadow:none; border-left:3px solid var(--brand); }
      .hero { padding:64px 0 70px; }
      h1 { letter-spacing:.06em; }
      .hero p { font-size:13px; }
      section { padding-bottom:60px; }
      .section-head { padding:14px 17px; gap:13px; margin-bottom:28px; }
      h2 { font-size:18px; }
      .section-content { padding-inline:4px; }
      .company-row { grid-template-columns:85px 1fr; gap:14px; font-size:13px; }
      .footer-inner { align-items:flex-start; flex-direction:column; gap:5px; padding-right:55px; }
      .back-top { right:16px; bottom:18px; width:54px; height:54px; }
    }
    @media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } .back-top { transition:none; } .hero-char { animation:none; } }
