      html {
        scroll-behavior: smooth;
      }
      section[id] {
        scroll-margin-top: 73px;
      }
      @media (min-width: 768px) {
        section[id] {
          scroll-margin-top: 170px;
        }
      }
      .site-modal[hidden] {
        display: none;
      }
      .site-modal {
        width: 100vw;
        max-width: none;
        height: 100dvh;
        max-height: none;
        margin: 0;
        border: 0;
        background: transparent;
        position: fixed;
        inset: 0;
        z-index: 100;
        display: flex;
        align-items: center;
        justify-content: center;
        padding: 1.5rem 1rem;
      }
      .site-modal__overlay {
        position: absolute;
        inset: 0;
        background: rgba(0, 0, 0, 0.45);
      }
      .site-modal__panel {
        position: relative;
        width: 100%;
        max-width: 700px;
        max-height: 85vh;
        overflow-y: auto;
        border-radius: 1rem;
        background: #fff;
        box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25);
      }
      .site-modal__body {
        padding: 2rem 1.5rem;
      }
      .site-modal__close {
        position: absolute;
        top: 0.75rem;
        right: 0.75rem;
        width: 2.25rem;
        height: 2.25rem;
        border-radius: 9999px;
        color: #4b5563;
        background: #f3f4f6;
        font-size: 1.5rem;
        line-height: 1;
      }
      .site-modal__title {
        padding-right: 2.5rem;
        color: #0b2349;
        font-size: 1.5rem;
        font-weight: 700;
        line-height: 1.35;
        text-align: center;
      }
      .site-modal__divider {
        width: 4rem;
        height: 2px;
        margin: 1.25rem auto;
        background: #f59e0b;
      }
      .site-modal__content {
        color: #374151;
        line-height: 1.8;
      }
      .site-modal__content p + p {
        margin-top: 1rem;
      }
      .site-modal__note {
        margin-top: 1.25rem;
        padding: 0.75rem 1rem;
        border-radius: 0.5rem;
        background: #eff6ff;
        color: #4b5563;
        font-size: 0.875rem;
      }
      @media (min-width: 768px) {
        .site-modal__body {
          padding: 2.5rem;
        }
        .site-modal__title {
          font-size: 1.75rem;
        }
      }
      /* SP下部CTA：3つの相談窓口を等幅で見やすくまとめる。 */
      body { padding-bottom: calc(58px + env(safe-area-inset-bottom)); }
      .sp-cta-bar { position: fixed; right: 0; bottom: 0; left: 0; z-index: 70; display: grid; height: calc(58px + env(safe-area-inset-bottom)); grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2px; background: #fff; box-shadow: 0 -5px 18px rgba(11,35,73,.16); }
      .sp-cta-bar__item { min-width: 0; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 0 3px env(safe-area-inset-bottom); border-radius: 6px; color: #fff; text-align: center; text-decoration: none; box-shadow: inset 0 1px 0 rgba(255,255,255,.22), inset 0 -1px 0 rgba(0,0,0,.1); transition: filter .2s ease, transform .2s ease; }
      .sp-cta-bar__item--tel { background: linear-gradient(135deg,#f59e0b,#f97316); }
      .sp-cta-bar__item--line { background: linear-gradient(135deg,#16d66b,#06b94e); }
      .sp-cta-bar__item--mail { background: linear-gradient(135deg,#17457d,#0b2349); }
      .sp-cta-bar__item:active { filter: brightness(.94); transform: translateY(1px); }
      .sp-cta-bar__main { display: flex; min-width: 0; align-items: center; justify-content: center; gap: 7px; line-height: 1.12; }
      .sp-cta-bar__icon { width: 19px; height: 19px; flex: 0 0 auto; stroke: currentColor; }
      .sp-cta-bar__copy { display: contents; }
      .sp-cta-bar__label { font-size: 12px; font-weight: 700; letter-spacing: .01em; white-space: nowrap; }
      .sp-cta-bar__note { margin-top: 4px; font-size: 8px; font-weight: 600; opacity: .9; white-space: nowrap; }
      .mobile-menu-overlay { position: fixed; z-index: 55; top: 73px; right: 0; bottom: calc(58px + env(safe-area-inset-bottom)); left: 0; background: #0e2547; opacity: 0; pointer-events: none; transition: opacity .3s ease; }
      .mobile-menu-overlay.is-open { opacity: .75; pointer-events: auto; }
      body.mobile-menu-open { overflow: hidden; }
      header.sticky { z-index: 70; }
      .mobile-navigation { z-index: 60; top: 73px !important; bottom: calc(58px + env(safe-area-inset-bottom)); height: auto !important; overflow-y: auto; overscroll-behavior: contain; }
      .mobile-menu-toggle[aria-expanded="true"] svg { visibility: hidden; }
      .mobile-menu-toggle[aria-expanded="true"]::before { content: "×"; position: absolute; font-size: 32px; font-weight: 300; line-height: 1; }
      .mobile-menu-toggle { position: relative; display: flex; align-items: center; justify-content: center; }
      @media (min-width: 768px) {
        .mobile-menu-toggle, .mobile-navigation, [data-mobile-menu-overlay] { display: none !important; }
      }
      .mobile-navigation button[aria-label="メニューを閉じる"] { display: none; }
      .mobile-menu-cta { position: relative; display: flex; min-height: 62px; width: 100%; align-items: center; justify-content: center; padding: 10px 44px 10px 16px; border-radius: 4px; background: #0b2349; color: #fff; font-size: 14px; font-weight: 700; line-height: 1.35; text-align: center; transition: background-color .2s ease; }
      .mobile-menu-cta:hover { background: #12345f; }
      .mobile-menu-cta__copy { display: flex; flex-direction: column; align-items: center; }
      .mobile-menu-cta__arrow { position: absolute; top: 50%; right: 18px; transform: translateY(-50%); animation: mobile-menu-arrow 1.5s ease-in-out infinite; }
      @keyframes mobile-menu-arrow { 0%,100% { transform: translate(0,-50%); } 50% { transform: translate(4px,-50%); } }
      .pricing-truck-card { background: #e9ecf1; }
      .news-more-link { margin-top: 2rem; }
      /* Instagram導線：ブランドカラーとプロフィール要素で視認性を高める。 */
      .instagram-card { display: grid; width: min(100%,720px); grid-template-columns: minmax(120px,42%) minmax(0,1fr); margin: 0 auto 8px; padding: 3px; overflow: hidden; border-radius: 19px; background: linear-gradient(125deg,#feda75 0%,#fa7e1e 24%,#d62976 50%,#962fbf 74%,#4f5bd5 100%); box-shadow: 0 10px 30px rgba(90,35,125,.18); text-decoration: none; transition: transform .2s ease, box-shadow .2s ease; }
      .instagram-card:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(90,35,125,.24); }
      .instagram-card__photo-wrap { position: relative; min-height: 138px; overflow: hidden; border-radius: 16px 0 0 16px; background: #fff; }
      .instagram-card__photo { display: block; width: 100%; height: 100%; object-fit: cover; }
      .instagram-card__photo-wrap::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg,transparent 65%,rgba(121,38,132,.22)); }
      .instagram-card__content { min-width: 0; display: flex; flex-direction: column; justify-content: center; padding: 16px 15px; color: #fff; background: linear-gradient(135deg,rgba(214,41,118,.96),rgba(79,91,213,.96)); border-radius: 0 16px 16px 0; }
      .instagram-card__brand { display: flex; align-items: center; gap: 8px; }
      .instagram-card__logo { width: 27px; height: 27px; flex: 0 0 auto; }
      .instagram-card__eyebrow { font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; opacity: .88; }
      .instagram-card__account { margin-top: 2px; font-size: 16px; font-weight: 700; line-height: 1.2; white-space: nowrap; }
      .instagram-card__message { margin-top: 9px; font-size: 13px; font-weight: 600; line-height: 1.45; }
      .instagram-card__button { align-self: flex-start; margin-top: 10px; padding: 7px 12px; white-space: nowrap; border: 1px solid rgba(255,255,255,.55); border-radius: 999px; background: #fff; color: #b32682; font-size: 12px; font-weight: 700; line-height: 1; box-shadow: 0 3px 10px rgba(74,19,96,.18); }
      .case-photo { border-radius: 0 !important; }
      /* 施工事例: カード枠も角丸なしにして写真・ラベルの角と揃える */
      #case-studies .rounded-2xl, #case-studies .rounded { border-radius: 0 !important; }
      .case-label { position: absolute; z-index: 2; top: 0; left: 0; display: flex; align-items: baseline; gap: 7px; padding: 8px 12px 7px; border-radius: 0; color: #fff; font-size: 14px; font-weight: 800; line-height: 1; letter-spacing: .06em; box-shadow: 0 2px 7px rgba(0,0,0,.18); }
      .case-label--before { background: #123b68; }
      .case-label--after { background: #e87521; }
      .case-label__ja { font-size: 10px; font-weight: 700; letter-spacing: .04em; opacity: .92; }
      /* JS無効時は2枚を縦に表示し、どちらの画像も確認できる。 */
      .case-comparison__panel + .case-comparison__panel { margin-top: 8px; }
      .case-comparison__stage { position: relative; }
      .case-comparison__category { position: absolute; z-index: 3; top: .5rem; right: .5rem; transform: none; opacity: 1; }
      .case-comparison__controls { display: none; }
      /* JS有効時は固定比率の1枠に重ね、奥行きを伴って前後を入れ替える。 */
      .js .case-comparison { position: relative; background: #eef2f6; }
      .js .case-comparison__stage { position: relative; isolation: isolate; aspect-ratio: 16 / 9; overflow: hidden; background: #dfe5eb; perspective: 1100px; touch-action: pan-y; }
      .js .case-comparison__stage:focus-visible { outline: 3px solid #e87521; outline-offset: -3px; }
      .js .case-comparison__panel { position: absolute; inset: 0; margin: 0; transform-origin: 50% 50%; backface-visibility: hidden; transition: transform .9s cubic-bezier(.22,.72,.18,1), opacity .9s ease, filter .9s ease; will-change: transform, opacity, filter; }
      .js .case-comparison__panel--before { z-index: 2; transform: translate3d(0,0,36px) scale(1); opacity: 1; filter: brightness(1) blur(0); }
      .js .case-comparison__panel--after { z-index: 1; transform: translate3d(7%,0,-90px) scale(.91); opacity: .72; filter: brightness(.72) blur(1.5px); }
      .js .case-comparison.is-after .case-comparison__panel--before { z-index: 1; transform: translate3d(-7%,0,-90px) scale(.91); opacity: .72; filter: brightness(.72) blur(1.5px); }
      .js .case-comparison.is-after .case-comparison__panel--after { z-index: 2; transform: translate3d(0,0,36px) scale(1); opacity: 1; filter: brightness(1) blur(0); }
      .js .case-comparison__controls { position: relative; z-index: 4; display: flex; width: max-content; margin: -17px auto 0; padding: 3px; border: 1px solid rgba(11,35,73,.12); border-radius: 999px; background: rgba(255,255,255,.96); box-shadow: 0 5px 16px rgba(11,35,73,.18); }
      .case-comparison__toggle { min-width: 88px; padding: 7px 13px; border-radius: 999px; color: #526071; background: transparent; font-size: 11px; font-weight: 800; line-height: 1; letter-spacing: .06em; transition: color .2s ease, background .2s ease, box-shadow .2s ease; }
      .case-comparison__toggle[data-case-show="before"].is-active { color: #fff; background: #123b68; box-shadow: 0 2px 7px rgba(18,59,104,.25); }
      .case-comparison__toggle[data-case-show="after"].is-active { color: #fff; background: #e87521; box-shadow: 0 2px 7px rgba(232,117,33,.25); }
      .case-comparison__toggle:focus-visible { outline: 2px solid #0b2349; outline-offset: 2px; }
      @media (max-width: 374px) { .sp-cta-bar__icon { left: 5px; width: 17px; height: 17px; } .instagram-card { grid-template-columns: 38% minmax(0,1fr); } .instagram-card__content { padding: 13px 11px; } .instagram-card__account { font-size: 14px; } .instagram-card__message { font-size: 12px; } }
      @media (max-width: 767px) { .case-label { gap: 5px; padding: 7px 10px 6px; font-size: 12px; } .case-label__ja { font-size: 9px; } .case-comparison__toggle { min-width: 78px; padding: 7px 11px; } }
      @media (min-width: 768px) { body { padding-bottom: 0; } .sp-cta-bar { display: none; } .instagram-card { grid-template-columns: 260px minmax(0,1fr); } .instagram-card__photo-wrap { min-height: 170px; } .instagram-card__content { align-items: center; padding: 24px 30px; text-align: center; } .instagram-card__brand { justify-content: center; } .instagram-card__logo { width: 34px; height: 34px; } .instagram-card__eyebrow { font-size: 12px; } .instagram-card__account { font-size: 22px; } .instagram-card__message { font-size: 16px; } .instagram-card__button { align-self: center; margin-top: 14px; padding: 9px 17px; font-size: 14px; } }
      /* FAQ回答: 「A.」の右側に本文を揃える(Q.と同じぶら下げ配置) */
      [data-slot="accordion-content"] > div { display: flex; align-items: flex-start; gap: 6px; }
      [data-slot="accordion-content"] > div > span:first-child { flex-shrink: 0; }
      @media (min-width: 768px) { [data-slot="accordion-content"] > div { gap: 8px; } }
      /* ヒーロー分解表示とサイト共通モーション */
      :root { --anim-navy:#082f63; --anim-gold:#dfad38; }
      /* ヒーロー(元画像 1920x1080 / SP 1200x1960 を基準に、全要素を幅基準(cqw)と%で配置) */
      .hero-composed{--hero-mincho:"Noto Serif JP","Shippori Mincho",YuMincho,"Yu Mincho","Hiragino Mincho ProN",serif;--hero-gothic:"Noto Sans JP","Hiragino Kaku Gothic ProN","Hiragino Sans","Yu Gothic Medium","Yu Gothic",Meiryo,sans-serif;--hero-hand:"Klee One","Noto Sans JP","Hiragino Kaku Gothic ProN",sans-serif;position:relative;isolation:isolate;overflow:hidden;container-type:inline-size;aspect-ratio:16/9;color:var(--anim-navy);background:#e6ecf1;font-family:var(--hero-mincho);font-weight:500;line-height:1.4}
      .hero-composed *,.hero-composed *::before,.hero-composed *::after{box-sizing:border-box}
      .hero-composed__bg{position:absolute;inset:0;z-index:-1;overflow:hidden;transform:scale(1.05);transform-origin:60% 40%}
      /* 生成写真(人物が元画像よりやや小さい)を1.10倍にして元画像の人物位置(x≈49〜95%, 頭頂≈30%)へ合わせる */
      .hero-composed__bg img{position:absolute;left:-8.6%;top:-11.7%;width:112%;height:112%;max-width:none;object-fit:cover;object-position:50% 50%}
      /* 元画像の左端にある薄い白もや(前景の葉の明るさ)を軽く再現。全面の白塗りはしない */
      .hero-composed__bg::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(255,255,255,.55) 0%,rgba(255,255,255,.22) 7%,rgba(255,255,255,0) 16%)}
      .hero-composed__inner{position:absolute;inset:0}
      /* 文字背後の柔らかい明るさ: 縦横のグラデーションを交差させた「縁がフェードする」マスク(四角い輪郭を出さない) */
      .hero-soft::before{content:"";position:absolute;z-index:-1;inset:var(--soft-y,-16%) var(--soft-x,-9%);pointer-events:none;background:rgba(255,255,255,var(--soft-a,.62));-webkit-backdrop-filter:blur(var(--soft-blur,6px));backdrop-filter:blur(var(--soft-blur,6px));-webkit-mask-image:linear-gradient(90deg,transparent,#000 22%,#000 78%,transparent),linear-gradient(180deg,transparent,#000 26%,#000 74%,transparent);mask-image:linear-gradient(90deg,transparent,#000 22%,#000 78%,transparent),linear-gradient(180deg,transparent,#000 26%,#000 74%,transparent);-webkit-mask-composite:source-in;mask-composite:intersect}
      .hero-ribbon{position:absolute;left:4.3%;top:1.4%;width:48.6%;z-index:3;margin:0;filter:drop-shadow(0 .5cqw .7cqw rgba(3,31,69,.18))}
      .hero-ribbon__img{display:block;width:100%;height:auto;aspect-ratio:2172/615;object-fit:fill;max-width:none}
      .hero-ribbon__text{position:absolute;left:9.9%;top:30%;width:73.5%;height:31%;display:flex;align-items:center;justify-content:center;rotate:-3.6deg;color:#fff;font-family:var(--hero-gothic);font-size:1.78cqw;font-weight:700;letter-spacing:.02em;white-space:nowrap;text-shadow:0 .05cqw .15cqw rgba(0,0,0,.25)}
      .hero-ribbon__text small{font-size:.74em;font-weight:700;margin:0 .05em}
      .hero-copy{position:absolute;left:4.2%;top:19.6%;width:44.6%;margin:0;padding:1.1cqw 1.5cqw 1.2cqw;z-index:2;isolation:isolate;--soft-x:-7%;--soft-y:-8%;--soft-a:.76}
      .hero-copy__title{margin:0;font-family:inherit;font-weight:800;font-size:5.83cqw;line-height:1.27;letter-spacing:.02em;white-space:nowrap;text-shadow:0 0 .6cqw rgba(255,255,255,.95),0 0 1.4cqw rgba(255,255,255,.8)}
      .hero-copy__underline{display:block;width:100%;height:max(1px,.1cqw);margin:.5cqw 0 .35cqw;background:var(--anim-navy);transform-origin:left}
      .hero-copy__sub{margin:0;font-family:var(--hero-gothic);font-weight:500;font-size:1.72cqw;line-height:1.72;letter-spacing:.09em;white-space:nowrap;text-shadow:0 0 .5cqw rgba(255,255,255,.95),0 0 1.2cqw rgba(255,255,255,.85)}
      .hero-copy__sub strong{color:var(--anim-gold);font-weight:800;font-size:1.27em;letter-spacing:.02em}
      .hero-handcopy{position:absolute;left:53.7%;top:4.9%;z-index:2;margin:0;font-family:var(--hero-hand);font-weight:600;font-size:1.86cqw;line-height:1.85;letter-spacing:.14em;rotate:-9.5deg;transform-origin:left top;padding:.2cqw .6cqw .3cqw;isolation:isolate;--soft-x:-14%;--soft-y:-22%;--soft-a:.74;--soft-blur:5px;text-shadow:0 0 .5cqw rgba(255,255,255,.95),0 0 1cqw rgba(255,255,255,.8)}
      .hero-handcopy__l{display:block}
      /* 斜めコピー下の手書き風二重線(SVG)。金のグラデーションは本文の金文字と同系色。JS有効時は読み込み後に1本目→2本目の順で描かれる */
      .hero-handcopy__underline{display:block;width:82%;height:1cqw;margin:.35em 0 0 -.35em;overflow:visible;pointer-events:none}
      .hero-handcopy__underline path{fill:none;stroke:url(#heroGoldStroke);stroke-width:8;stroke-linecap:round;stroke-linejoin:round}
      .js .hero-underline-stroke{stroke-dasharray:1;stroke-dashoffset:1}.js .hero-composed.is-ready .hero-underline-stroke-1{animation:heroStrokeDraw .6s ease-out 1.75s both}.js .hero-composed.is-ready .hero-underline-stroke-2{animation:heroStrokeDraw .5s ease-out 1.91s both}@keyframes heroStrokeDraw{to{stroke-dashoffset:0}}
      /* バッジ: 元画像は白円R≈133px(1920時)、葉の内縁0.81R・外縁0.94R。月桂樹はリース中心で切り出した hero4 版を99%幅で同心配置 */
      .hero-badge{position:absolute;left:77.5%;top:5.5%;z-index:2;display:grid;place-items:center;width:14.8cqw;aspect-ratio:1;border-radius:50%;background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 0 .45cqw .2cqw rgba(255,255,255,.6);text-align:center}
      .hero-badge__laurel{position:absolute;inset:1.5%;width:97%;height:97%;object-fit:contain;max-width:none}
      .hero-badge__text{position:relative;z-index:1;font-family:var(--hero-gothic);font-weight:500;font-size:1.04cqw;line-height:1.14;letter-spacing:.04em;white-space:nowrap;transform:translateY(-2%)}
      .hero-badge__text b{display:block;font-family:var(--hero-mincho);margin-top:.02em;font-size:1.5em;font-weight:700;letter-spacing:.18em;text-indent:.18em}
      .hero-badge__text strong{display:block;font-family:var(--hero-mincho);margin:.08em 0 .1em;font-size:4.6cqw;font-weight:500;line-height:1;letter-spacing:0}
      .hero-badge__text strong small{font-size:.38em;letter-spacing:0}
      .hero-badge__sub{display:block;font-family:var(--hero-mincho);font-weight:500;font-size:.96em;line-height:1.18;letter-spacing:.06em;text-indent:.06em}
      .hero-services{position:absolute;left:3.125%;bottom:5.4%;z-index:2;display:grid;grid-template-columns:repeat(4,1fr);width:46.1%;padding:2.1cqw .3cqw 1.7cqw;background:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);border-radius:.5cqw;box-shadow:0 .4cqw 1.2cqw rgba(8,47,99,.07)}
      .hero-service{margin:0;padding:.9cqw .4cqw .3cqw;text-align:center;border-right:1px solid rgba(90,90,90,.35)}.hero-service:last-child{border:0}
      .hero-icon{display:block;width:4.95cqw;aspect-ratio:1;margin:auto;padding:.5cqw;border:1px solid rgba(100,100,100,.28);border-radius:50%;object-fit:contain;background:rgba(255,255,255,.4);max-width:none}
      .hero-service h3{margin:.8cqw 0 1.05cqw;font-family:inherit;font-weight:500;font-size:1.25cqw;line-height:1.3;letter-spacing:.04em;white-space:nowrap}
      .hero-service p{margin:0;font-family:"Noto Sans JP",sans-serif;font-weight:400;font-size:.885cqw;line-height:1.5;letter-spacing:0;color:#222}
      .hero-trust{position:absolute;left:52.1%;bottom:5.2%;z-index:2;width:45.3%;padding:.5cqw .3cqw .3cqw;text-align:center;isolation:isolate}
      /* 白グラデはヒーロー下端より下まで伸ばし(はみ出しは overflow:hidden で切れる)、下端で隙間・境界線が出ないようにする */
      .hero-trust::before{content:"";position:absolute;z-index:-1;left:-4.6%;right:-6%;top:-20%;bottom:-48%;background:linear-gradient(180deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.62) 22%,rgba(255,255,255,.93) 46%,rgba(255,255,255,.98) 68%,#fff 100%);pointer-events:none}
      .hero-trust__title{font-family:inherit;font-weight:600;font-size:1.9cqw;line-height:1.3;letter-spacing:.04em;text-shadow:0 0 .5cqw rgba(255,255,255,.9);padding-bottom:.3em;border-bottom:1px solid rgba(90,90,90,.45)}
      .hero-trust__title strong{color:var(--anim-gold);font-weight:500;font-size:1.85em;line-height:1;margin:0 .04em;vertical-align:-.03em}
      .hero-trust__items{display:grid;grid-template-columns:repeat(3,1fr);gap:.4cqw;padding-top:.6cqw}
      .hero-trust__item{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.55cqw;text-align:left}
      .hero-trust__item .hero-icon{width:4.95cqw;padding:.95cqw;margin:0}
      .hero-trust__copy{font-size:1.25cqw;line-height:1.5;letter-spacing:.04em}
      .hero-trust__copy strong{display:block;font-weight:500;white-space:nowrap}
      .hero-trust__copy small{display:block;margin-top:.5em;font-family:"Noto Sans JP",sans-serif;font-weight:400;font-size:.62em;line-height:1.55;letter-spacing:0;color:#222}
      .hero-in{opacity:0;transform:translateY(22px)}.js .hero-composed.is-ready .hero-composed__bg{animation:heroZoomOut 2.2s cubic-bezier(.2,.7,.2,1) forwards}.js .hero-composed.is-ready .hero-in{animation:heroFadeUp .75s ease forwards;animation-delay:var(--hero-delay,.15s)}.js .hero-composed.is-ready .hero-copy__underline{animation:heroUnderlineDraw .9s ease .85s both}.js .hero-composed.is-ready .hero-badge{animation:heroBadgeIn .9s ease 1.05s both}.js .hero-composed:not(.is-ready) .hero-badge{opacity:0}
      /* タブレット幅: 本文が小さくなり過ぎないよう下限を設ける(パネルは下端基準なので上へ伸びる) */
      @media(min-width:768px) and (max-width:1279px){.hero-service p{font-size:max(9.5px,.885cqw)}.hero-service h3{font-size:max(12px,1.35cqw)}.hero-trust__copy{font-size:max(11px,1.25cqw)}.hero-trust__copy small{font-size:max(8.5px,.62em)}.hero-badge__text{font-size:max(8px,1.04cqw)}.hero-copy__sub{font-size:max(12px,1.67cqw)}.hero-ribbon__text{font-size:max(12px,2.1cqw)}.hero-handcopy{font-size:max(12px,1.77cqw)}}
      @keyframes heroZoomOut{to{transform:scale(1)}}@keyframes heroFadeUp{to{opacity:1;transform:none}}@keyframes heroUnderlineDraw{from{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes heroBadgeIn{from{opacity:0;transform:translateY(18px) rotate(-7deg) scale(.92)}to{opacity:1;transform:none}}@keyframes heroFloat{50%{transform:translateY(-8px)}}
      .js .reveal-item{opacity:0;transform:translateY(28px);transition:opacity .72s ease,transform .72s cubic-bezier(.2,.7,.2,1);transition-delay:var(--reveal-delay,0ms)}.js .reveal-item.is-revealed{opacity:1;transform:none}.reveal-heading::after{content:"";display:block;width:min(84px,18vw);height:3px;margin:.55em auto 0;background:linear-gradient(90deg,var(--anim-gold),#f7d979);transform:scaleX(0);transform-origin:left;transition:transform .75s ease .18s}.reveal-heading.is-revealed::after{transform:scaleX(1)}
      .anim-card{transition:transform .3s ease,box-shadow .3s ease}.anim-card img{transition:transform .55s ease}.anim-card:hover{transform:translateY(-6px);box-shadow:0 16px 36px rgba(7,47,99,.15)}.anim-card:hover img{transform:scale(1.035)}
      .anim-button{position:relative;overflow:hidden}.anim-button::after{content:"";position:absolute;inset:-60% auto -60% -45%;width:24%;background:rgba(255,255,255,.38);transform:skewX(-22deg);transition:left .55s ease}.anim-button:hover::after{left:125%}.anim-button svg{transition:transform .25s ease}.anim-button:hover svg{transform:translateX(4px)}
      /* ふわふわ浮遊アニメは削除 */@keyframes gentleFloat{50%{transform:translateY(-5px)}}
      /* SP: 元SP画像(1200x1960)の配置を幅基準(cqw)で再現。上部は絶対配置、白パネル以降は通常フローで文字の下限サイズに追従 */
      @media(max-width:767px){.hero-composed{aspect-ratio:auto;min-height:163.3cqw}.hero-composed__bg{transform:scale(1.04);transform-origin:50% 45%}.hero-composed__bg img{left:0;top:0;width:100%;height:100%;object-position:50% 0}.hero-composed__inner{position:relative;inset:auto;padding:102cqw 0 5.5cqw}
      .hero-ribbon{left:10.2cqw;top:-2.5cqw;width:78.4cqw}.hero-ribbon__text{font-size:clamp(9px,2.8cqw,12px);letter-spacing:.02em}
      .hero-copy{left:4cqw;top:11cqw;width:92cqw;padding:1.2cqw 4.5cqw 1.6cqw;--soft-x:-3%;--soft-y:-12%;--soft-a:.9;--soft-blur:8px}.hero-copy__title{font-size:9.4cqw;line-height:1.5;letter-spacing:.1em}.hero-copy__underline{width:calc(100% + 7cqw);margin:.6cqw -3.5cqw 1.6cqw}.hero-copy__sub{font-size:3.45cqw;line-height:1.65;letter-spacing:.03em}.hero-copy__sub strong{font-size:1.3em}
      .hero-badge{left:6.5cqw;top:73.5cqw;width:21cqw;background:#fff;box-shadow:0 0 1.8cqw .9cqw rgba(255,255,255,.85)}.hero-badge__text{font-size:1.85cqw;line-height:1.02;transform:none}.hero-badge__text b{font-size:1.4em}.hero-badge__text strong{font-size:7cqw;margin:.03em 0 .03em}.hero-badge__sub{font-size:.98em;line-height:1.15;letter-spacing:.03em}
      .hero-handcopy{left:56cqw;top:87cqw;width:auto;white-space:nowrap;padding:.6cqw 1.4cqw .8cqw;--soft-x:-16%;--soft-y:-42%;--soft-a:.97;--soft-blur:7px;font-size:3.05cqw;line-height:1.7;letter-spacing:.02em;rotate:-8deg}.hero-handcopy__l{display:inline}.hero-handcopy__underline{width:100%;height:1.9cqw;margin:.3em 0 0}
      .hero-services{position:static;width:auto;margin:0 2.9cqw;padding:2.8cqw .3cqw 3cqw;border-radius:1.5cqw;background:rgba(255,255,255,.97)}.hero-service{padding:1.2cqw .2cqw 0}.hero-icon{width:8.3cqw;padding:1.7cqw}.hero-service h3{margin:1.8cqw 0 1cqw;font-size:max(9px,2.5cqw);letter-spacing:-.03em}.hero-service p{font-size:max(7.5px,1.92cqw);line-height:1.6;letter-spacing:-.03em;white-space:nowrap}
      .hero-trust{position:relative;left:auto;bottom:auto;width:auto;margin:5.5cqw 2.9cqw 0;padding:1cqw .5cqw 1cqw}.hero-trust::before{left:-2.9cqw;right:-2.9cqw;top:-9cqw;bottom:-12cqw;background:linear-gradient(180deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.78) 16%,rgba(252,250,247,.97) 38%,rgba(246,243,238,1) 70%,#fff 100%)}.hero-trust__title{font-size:4.83cqw;letter-spacing:.02em;padding-bottom:.4em}.hero-trust__title strong{font-size:1.6em}.hero-trust__items{gap:.5cqw;padding-top:3.5cqw}.hero-trust__item{gap:.8cqw}.hero-trust__item .hero-icon{width:9.2cqw;padding:2.3cqw}.hero-trust__copy{font-size:max(10px,2.67cqw);line-height:1.45;letter-spacing:0}.hero-trust__copy small{display:none}.anim-card:hover{transform:none}}
      @media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.hero-in,.js .reveal-item,.js .hero-composed:not(.is-ready) .hero-badge{opacity:1!important;transform:none!important}.hero-copy__underline,.reveal-heading::after{transform:none!important}.hero-underline-stroke{animation:none!important;stroke-dashoffset:0!important}}
      @media(prefers-reduced-motion:reduce){.mobile-menu-overlay{transition:none!important}.mobile-menu-cta__arrow{animation:none!important}}
      @media(prefers-reduced-motion:reduce){.js .case-comparison__panel{transform:none!important;filter:none!important;transition:opacity .16s ease!important}.js .case-comparison__panel--before{opacity:1}.js .case-comparison__panel--after{opacity:0}.js .case-comparison.is-after .case-comparison__panel--before{opacity:0}.js .case-comparison.is-after .case-comparison__panel--after{opacity:1}}
      /* ヒーロー内テキスト全般に白ブラーのアウトライン(リボンの白文字は除外) */
      .hero-composed :is(h1,h2,h3,p,span,b,strong,small,em,li,dt,dd,div):not(.hero-ribbon__text):not(.hero-ribbon__text *){text-shadow:0 0 1px #fff,0 0 1px #fff,0 0 2px #fff,0 0 2px #fff,0 0 3px #fff,0 0 5px #fff,0 0 9px rgba(255,255,255,.95),0 0 16px rgba(255,255,255,.85),0 0 26px rgba(255,255,255,.6)}
      /* 大見出しは文字が大きいぶん白ブラーの半径も広げる */
      .hero-composed .hero-composed__inner .hero-copy__title{text-shadow:0 0 1px #fff,0 0 1px #fff,0 0 2px #fff,0 0 2px #fff,0 0 4px #fff,0 0 8px #fff,0 0 .7cqw rgba(255,255,255,.95),0 0 1.4cqw rgba(255,255,255,.85),0 0 2.4cqw rgba(255,255,255,.6)}
      /* 背景写真の直上に、下部→上部へ白から透明になるグラデーション(元画像の明るい下部に寄せる。下端はほぼ白にして次セクションとの境界線を消す) */
      .hero-composed__bg::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(to top,rgba(255,255,255,.97) 0%,rgba(255,255,255,.72) 16%,rgba(255,255,255,.35) 34%,rgba(255,255,255,.1) 50%,rgba(255,255,255,0) 62%)}
      /* 金色要素の視認性: 文字は深めのゴールドのグラデーション(background-clip:text)+白い縁取り(text-shadow は clip-text と相性が悪いので drop-shadow で代用) */
      .hero-composed .hero-composed__inner :is(.hero-copy__sub,.hero-trust__title) strong{color:#a8761c;background:linear-gradient(180deg,#d1a540 0%,#b5842a 40%,#8f6210 76%,#ad8238 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:none;filter:drop-shadow(0 0 1px #fff) drop-shadow(0 0 1px #fff) drop-shadow(0 0 2px #fff) drop-shadow(0 0 5px rgba(255,255,255,.95)) drop-shadow(0 0 10px rgba(255,255,255,.8))}
      /* 金アイコンは丸枠を白不透明にして影で浮かせ、画像自体も彩度・コントラストを上げて締める */
      .hero-composed .hero-trust__item .hero-icon{background:#fff;border-color:rgba(120,100,60,.3);box-shadow:0 .12cqw .5cqw rgba(8,47,99,.14),0 0 0 .14cqw rgba(255,255,255,.95);/* contrast(>1)は白を1.0超へ押し上げ、iPhoneのEDR表示で白飛び(HDR風)するため使わない */filter:saturate(1.2)}
      .hero-composed .hero-badge__laurel{filter:saturate(1.3) contrast(1.22)}
      /* 若葉(元画像の四隅の前ボケ若葉を透過画像で再現。写真より上・文字より下、クリックは透過。浮遊アニメなし) */
      .hero-leaf{position:absolute;z-index:1;pointer-events:none;user-select:none;max-width:none;height:auto;opacity:.9;filter:blur(.5px) brightness(1.04)}
      .hero-leaf--tl{left:-4.5cqw;top:-8.5cqw;width:26cqw;transform:scaleY(-1) rotate(-6deg)}
      .hero-leaf--tr{right:-3cqw;top:-5cqw;width:19cqw;transform:scale(-1,-1) rotate(8deg)}
      .hero-leaf--bl{left:-6cqw;bottom:-4cqw;width:14cqw;opacity:.75;filter:blur(1.2px) brightness(1.08)}
      .hero-leaf--br{right:-4cqw;bottom:2cqw;width:13cqw;transform:scaleX(-1) rotate(-6deg);opacity:.85;filter:blur(1px) brightness(1.05)}
      .hero-leaf--ml,.hero-leaf--mr{display:none}
      @media(max-width:767px){
        .hero-leaf--tl{left:-9cqw;top:-7cqw;width:30cqw;transform:scaleY(-1) rotate(-4deg)}
        .hero-leaf--tr{right:-8cqw;top:-5cqw;width:30cqw;transform:scale(-1,-1) rotate(6deg)}
        .hero-leaf--bl,.hero-leaf--br{display:none}
        .hero-trust__title,.hero-trust__items{position:relative;z-index:1}
        .hero-leaf--ml,.hero-leaf--mr{display:block;z-index:0;top:-13cqw;width:26cqw;opacity:.9;filter:blur(.7px) brightness(1.05)}
        .hero-leaf--ml{left:-13cqw;transform:scaleY(-1) rotate(-25deg)}
        .hero-leaf--mr{right:-13cqw;transform:scale(-1,-1) rotate(25deg)}
      }
