:root{
  --green:#3d6b4f;        /* 主役：落ち着いたグリーン */
  --green-deep:#2c5140;
  --navy:#22374e;         /* 文字・引き締め */
  --wood:#85673d;         /* 木・朱肉がわりの印色 */
  --paper:#faf8f3;        /* 和紙のような生成り白 */
  --white:#ffffff;
  --ink:#33383d;
  --gray:#5f666d;
  --rule:#d9d3c6;         /* 罫線 */
  --mincho:'Yu Mincho','Hiragino Mincho ProN','Hiragino Mincho Pro','Noto Serif JP',serif;
  --gothic:'Yu Gothic','Hiragino Kaku Gothic ProN','Hiragino Sans','Noto Sans JP',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --side:224px;
  --mobile-header-height:60px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:16px}
body{font-family:var(--gothic);color:var(--ink);background:var(--paper);font-size:16px;line-height:2;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%}
picture{display:block}
a{color:inherit;text-decoration:none}
ul{list-style:none}

/* ================= ポートフォリオ用サンプル表記 ================= */
.demo-notice{display:flex;align-items:center;justify-content:center;gap:14px;padding:10px 24px;background:var(--navy);color:#fff;font-size:12.5px;line-height:1.6;text-align:center}
.demo-notice strong{font-family:var(--mincho);font-size:11px;letter-spacing:.16em;color:#fff;border:1px solid rgba(255,255,255,.65);padding:2px 9px;white-space:nowrap}
.demo-notice-full{width:100%}
.content-disclaimer{border-left:3px solid var(--wood);background:var(--white);padding:11px 15px;color:#4a4f54;font-size:13px;line-height:1.8;margin:-30px 0 34px}

/* ================= 左固定サイドバー ================= */
.side{position:fixed;top:0;left:0;bottom:0;width:var(--side);background:var(--white);border-right:1px solid var(--rule);display:flex;flex-direction:column;padding:34px 26px 26px;z-index:100}
.side-logo{font-family:var(--mincho);font-weight:700;color:var(--navy)}
.side-logo .name{font-size:21px;letter-spacing:.08em;line-height:1.5}
.side-logo .sub{font-family:var(--gothic);font-weight:500;font-size:10.5px;color:var(--gray);letter-spacing:.14em;margin-top:6px}
.side-nav{margin-top:40px;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
.side-nav a{display:flex;align-items:baseline;gap:12px;padding:11px 2px;font-size:14px;font-weight:500;color:var(--ink);border-bottom:1px solid transparent;transition:color .25s,padding-left .25s}
.side-nav a i{font-style:normal;font-family:var(--mincho);font-size:11px;color:var(--wood);letter-spacing:.05em}
.side-nav a:hover{color:var(--green);padding-left:8px}
.side-foot{border-top:1px solid var(--rule);padding-top:18px}
.side-foot .tel-label{font-size:11px;letter-spacing:.16em;color:var(--gray)}
.side-foot .tel{font-family:var(--mincho);font-size:16px;font-weight:700;color:var(--navy);letter-spacing:0;white-space:nowrap}
.side-foot .hours{font-size:11px;color:var(--gray);margin-bottom:14px}
.btn{display:block;text-align:center;background:var(--green);color:#fff;font-weight:700;font-size:14px;padding:13px 10px;letter-spacing:.12em;transition:background .3s;border:none;cursor:pointer;font-family:var(--gothic)}
.btn:hover{background:var(--green-deep)}

/* ================= モバイルヘッダー ================= */
.m-head{display:none;position:sticky;top:0;z-index:110;background:var(--white);border-bottom:1px solid var(--rule);padding:0 16px;height:60px;align-items:center;justify-content:space-between}
.m-head .side-logo .name{font-size:17px}
.m-toggle{background:none;border:none;cursor:pointer;padding:8px;min-width:44px;min-height:44px;display:grid;place-content:center;touch-action:manipulation}
.m-toggle span{display:block;width:22px;height:2px;background:var(--navy);margin:5px 0}
.m-nav{display:none;position:fixed;top:var(--mobile-header-height);left:0;right:0;bottom:0;background:var(--white);z-index:105;padding:18px 22px;overflow:auto}
.m-nav.open{display:block}
.m-nav a{display:flex;gap:12px;align-items:baseline;min-height:44px;padding:15px 4px;border-bottom:1px solid var(--rule);font-size:15px;font-weight:500}
.m-nav a i{font-style:normal;font-family:var(--mincho);font-size:11px;color:var(--wood)}

/* ================= メイン ================= */
main{margin-left:var(--side)}
/* トップページはフッターもmain外にあるため、サイドバー分の余白を揃える */
.home-page footer{margin-left:var(--side)}
.inner{max-width:1040px;margin:0 auto;padding:0 48px}

/* ---- ヒーロー：縦書き × 余白 ---- */
.hero{min-height:92vh;display:grid;grid-template-columns:minmax(300px,46%) 1fr;background:var(--paper)}
.hero-copy{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 30px;position:relative}
.hero-v{writing-mode:vertical-rl;font-family:var(--mincho);font-weight:600;color:var(--navy);font-size:clamp(30px,3.4vw,44px);letter-spacing:.28em;line-height:1.9;max-height:min(62vh,520px)}
.hero-side{writing-mode:vertical-rl;position:absolute;left:28px;bottom:56px;font-size:12px;letter-spacing:.34em;color:var(--gray)}
.hero-stamp{position:absolute;right:34px;bottom:48px;width:86px;height:86px;border:2px solid var(--wood);color:var(--wood);border-radius:4px;display:flex;align-items:center;justify-content:center;font-family:var(--mincho);font-weight:700;font-size:14px;letter-spacing:.2em;writing-mode:vertical-rl;line-height:1.6;transform:rotate(-3deg);background:rgba(255,255,255,.55)}
.hero-photo{position:relative;overflow:hidden}
.hero-photo picture,.hero-photo img{width:100%;height:100%}
.hero-photo img{object-fit:cover}
.hero-photo::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 12px var(--paper)}
.hero-bar{grid-column:1/-1;border-top:1px solid var(--rule);background:var(--white);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;padding:16px 40px}
.hero-bar .lead{font-size:14px;color:var(--ink)}
.hero-bar .lead b{color:var(--green);font-weight:700}
.hero-bar .btn{padding:13px 34px;letter-spacing:.14em}

/* PC：ヒーロー下部の案内文とCTAを左側にまとめる */
@media (min-width:921px){
  .hero-bar{justify-content:flex-start}
}

/* ---- セクション共通：図面の様式番号 ---- */
section{padding:96px 0;border-top:1px solid var(--rule)}
.sec-head{display:flex;align-items:flex-end;gap:22px;margin-bottom:56px;flex-wrap:wrap}
.sec-no{font-family:var(--mincho);font-size:13px;color:var(--wood);letter-spacing:.2em;border:1px solid var(--wood);padding:5px 12px}
.sec-title{font-family:var(--mincho);font-size:clamp(23px,2.8vw,30px);font-weight:600;color:var(--navy);letter-spacing:.12em;line-height:1.5}
.sec-line{flex:1;height:1px;background:var(--rule);min-width:60px;margin-bottom:12px}
.sec-en{font-size:11px;letter-spacing:.3em;color:var(--gray);margin-bottom:12px}
.sec-lead{max-width:660px;color:#4a4f54;font-size:15px;margin:-30px 0 54px}

/* ---- 01 選ばれる理由：番号付き罫線リスト ---- */
.reason-list{border-top:1px solid var(--rule)}
.reason-item{display:grid;grid-template-columns:110px 260px 1fr;gap:26px;padding:30px 6px;border-bottom:1px solid var(--rule);align-items:baseline;transition:background .3s}
.reason-item:hover{background:var(--white)}
.reason-item .no{font-family:var(--mincho);font-size:26px;color:var(--wood);letter-spacing:.06em}
.reason-item h3{font-family:var(--mincho);font-size:18px;color:var(--navy);letter-spacing:.08em;font-weight:600}
.reason-item p{font-size:14.5px;color:#4a4f54}

/* ---- 02 ごあいさつ：縦書き見出し＋手紙風 ---- */
.about-grid{display:grid;grid-template-columns:64px 1fr 380px;gap:44px;align-items:start}
.about-vtitle{writing-mode:vertical-rl;font-family:var(--mincho);font-size:22px;font-weight:600;color:var(--navy);letter-spacing:.3em;line-height:1.8;border-right:1px solid var(--rule);padding-right:22px;height:300px}
.about-letter{background:var(--white);border:1px solid var(--rule);padding:44px 46px;position:relative}
.about-letter::before{content:"";position:absolute;top:12px;left:12px;right:12px;bottom:12px;border:1px solid var(--rule);pointer-events:none}
.about-letter p{font-size:15px;margin-bottom:16px;position:relative}
.about-letter .sign{text-align:right;font-size:13.5px;color:var(--gray);margin-top:26px}
.about-letter .sign strong{font-family:var(--mincho);font-size:18px;color:var(--ink);margin-left:10px;letter-spacing:.14em}
.about-photo{position:sticky;top:40px}
.about-photo img{width:100%;height:460px;object-fit:cover}
.about-photo figcaption{font-size:11.5px;color:var(--gray);letter-spacing:.1em;margin-top:10px;text-align:right}

/* ---- 03 リフォームメニュー：横帯リスト ---- */
.menu-rows{border-top:1px solid var(--rule)}
.menu-row{display:grid;grid-template-columns:210px 220px 1fr;gap:30px;align-items:center;padding:26px 6px;border-bottom:1px solid var(--rule);transition:background .3s}
.menu-row:hover{background:var(--white)}
.menu-row .thumb{height:130px;overflow:hidden}
.menu-row .thumb picture,.menu-row .thumb img{width:100%;height:100%}
.menu-row .thumb img{object-fit:cover;filter:saturate(.92);transition:transform .5s}
.menu-row:hover .thumb img{transform:scale(1.05)}
.menu-row .head .en{font-size:10.5px;letter-spacing:.26em;color:var(--wood)}
.menu-row .head h3{font-family:var(--mincho);font-size:19px;color:var(--navy);letter-spacing:.1em;font-weight:600}
.menu-row .items{display:flex;flex-wrap:wrap;gap:6px 0;font-size:13.5px;color:#4a4f54}
.menu-row .items span{padding:2px 14px;border-left:1px solid var(--rule)}
.menu-row .items span:first-child{border-left:none;padding-left:0}

/* ---- 04 施工事例：大判写真＋仕様書テーブル ---- */
.work{display:grid;grid-template-columns:1.15fr 1fr;gap:0;margin-bottom:72px;background:var(--white);border:1px solid var(--rule)}
.work:nth-child(even){grid-template-columns:1fr 1.15fr}
.work:nth-child(even) .work-photo{order:2}
.work-photo{position:relative;min-height:380px}
.work-photo picture{position:absolute;inset:0;width:100%;height:100%}
.work-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.work-body{padding:40px 44px;display:flex;flex-direction:column;justify-content:center}
.work-no{font-family:var(--mincho);font-size:12px;color:var(--wood);letter-spacing:.24em;margin-bottom:10px}
.work-body h3{font-family:var(--mincho);font-size:21px;color:var(--navy);letter-spacing:.08em;font-weight:600;line-height:1.7;margin-bottom:20px}
.spec{width:100%;border-collapse:collapse;font-size:13.5px;margin-bottom:18px}
.spec th,.spec td{border:1px solid var(--rule);padding:9px 14px;text-align:left}
.spec th{width:96px;background:var(--paper);font-family:var(--mincho);font-weight:600;color:var(--navy);letter-spacing:.14em;font-size:12.5px}
.spec td b{color:var(--green);font-size:15px}
.work-body p{font-size:14px;color:#4a4f54}

/* ---- 05 お客様の声：罫線の便箋・縦書き名札 ---- */
.voice-item{display:grid;grid-template-columns:52px 1fr;gap:30px;padding:38px 4px;border-bottom:1px solid var(--rule);align-items:stretch}
.voice-item:first-of-type{border-top:1px solid var(--rule)}
.voice-tag{writing-mode:vertical-rl;font-family:var(--mincho);font-size:12.5px;letter-spacing:.22em;color:#fff;background:var(--green);display:flex;align-items:center;justify-content:center;padding:14px 0;line-height:1.4}
.voice-body p{font-family:var(--mincho);font-size:16.5px;color:var(--ink);line-height:2.2;letter-spacing:.04em;margin-bottom:12px}
.voice-body .who{font-size:12.5px;color:var(--gray);letter-spacing:.1em}
.voice-body .who::before{content:"―";margin-right:8px;color:var(--wood)}

/* ---- 06 スタッフ：横並びプロフィール行 ---- */
.staff-row{display:grid;grid-template-columns:200px 1fr;gap:36px;padding:34px 4px;border-bottom:1px solid var(--rule);align-items:start}
.staff-row:first-of-type{border-top:1px solid var(--rule)}
.staff-row .face{overflow:hidden}
.staff-row .face picture{width:100%;height:200px}
.staff-row .face img{width:100%;height:100%;object-fit:cover;filter:saturate(.9);transition:transform .5s}
.staff-row:hover .face img{transform:scale(1.04)}
.staff-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:14px;margin-bottom:8px}
.staff-meta .role{font-size:11.5px;letter-spacing:.2em;color:#fff;background:var(--navy);padding:3px 12px}
.staff-meta h3{font-family:var(--mincho);font-size:21px;color:var(--navy);letter-spacing:.16em;font-weight:600}
.staff-meta .quali{font-size:12px;color:var(--wood);letter-spacing:.08em}
.staff-row p{font-size:14.5px;color:#4a4f54;max-width:620px}

/* ---- 07 FAQ ---- */
.faq{border-top:1px solid var(--rule)}
.faq-item{border-bottom:1px solid var(--rule)}
.faq-q{width:100%;text-align:left;background:none;border:none;font-family:var(--gothic);font-size:15.5px;font-weight:700;color:var(--navy);padding:22px 46px 22px 4px;cursor:pointer;position:relative;line-height:1.8;letter-spacing:.04em;transition:color .25s}
.faq-q:hover{color:var(--green)}
.faq-q::before{content:"問";font-family:var(--mincho);color:var(--wood);border:1px solid var(--wood);font-size:12px;padding:2px 7px;margin-right:14px;font-weight:600}
.faq-q::after{content:"";position:absolute;right:14px;top:50%;width:10px;height:10px;border-right:1.5px solid var(--wood);border-bottom:1.5px solid var(--wood);transform:translateY(-70%) rotate(45deg);transition:transform .3s}
.faq-item.open .faq-q::after{transform:translateY(-30%) rotate(-135deg)}
.faq-a{max-height:none;overflow:visible}
.js-anim .faq-a{max-height:0;overflow:hidden;transition:max-height .25s ease}
.faq-a-inner{padding:0 4px 24px 46px;font-size:14.5px;color:#4a4f54}
.faq-a-inner::before{content:"答";font-family:var(--mincho);color:#fff;background:var(--green);font-size:12px;padding:2px 7px;margin-right:14px;margin-left:-46px}

/* ---- 08 会社概要 ---- */
.company-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--rule);background:var(--white)}
.c-cell{padding:36px 40px;border-right:1px solid var(--rule)}
.c-cell:last-child{border-right:none}
.c-table{width:100%;border-collapse:collapse;font-size:14px}
.c-table th,.c-table td{padding:13px 4px;border-bottom:1px solid var(--rule);text-align:left;vertical-align:top;line-height:1.8}
.c-table tr:last-child th,.c-table tr:last-child td{border-bottom:none}
.c-table th{width:34%;font-family:var(--mincho);font-weight:600;color:var(--navy);letter-spacing:.14em;font-size:13px}
.c-cell h3{font-family:var(--mincho);font-size:16px;color:var(--navy);letter-spacing:.16em;font-weight:600;margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--rule)}
.area-tags{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}
.area-tags span{border:1px solid var(--green);color:var(--green);font-weight:500;font-size:13.5px;padding:6px 18px;letter-spacing:.06em}
.small-note{font-size:12px;color:var(--gray)}
.quali-list{margin-top:28px}
.quali-list li{font-size:14px;padding:9px 0 9px 4px;border-bottom:1px dashed var(--rule);letter-spacing:.04em}
.quali-list li::before{content:"◆";color:var(--wood);font-size:9px;margin-right:12px;vertical-align:2px}

/* ---- お問い合わせ ---- */
.contact{background:var(--white)}
.contact-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:56px;align-items:start}
.contact-info .catch{font-family:var(--mincho);font-size:20px;color:var(--navy);letter-spacing:.1em;line-height:2;font-weight:600;margin-bottom:22px}
.contact-info p{font-size:14.5px;color:#4a4f54;margin-bottom:28px}
.tel-panel{border:1px solid var(--rule);background:var(--paper);padding:28px 30px;text-align:center}
.tel-panel .label{font-size:11.5px;letter-spacing:.24em;color:var(--gray)}
.tel-panel .num{font-family:var(--mincho);font-size:34px;font-weight:700;color:var(--navy);letter-spacing:.02em;line-height:1.5;white-space:nowrap}
.tel-panel .hours{font-size:12.5px;color:var(--gray)}
.tel-panel .free{display:inline-block;margin-top:14px;border:1px solid var(--wood);color:var(--wood);font-family:var(--mincho);font-weight:600;font-size:13px;letter-spacing:.18em;padding:6px 20px}
.form legend{font-family:var(--mincho);font-size:16px;color:var(--navy);letter-spacing:.14em;margin-bottom:6px;font-weight:600}
.form .note{font-size:12px;color:var(--gray);margin-bottom:22px}
.f-row{margin-bottom:20px}
.f-row label{display:block;font-size:13px;font-weight:700;letter-spacing:.08em;color:var(--navy);margin-bottom:7px}
.f-row label .req{color:#a04a33;font-size:11px;margin-left:8px;font-weight:700}
.f-row input,.f-row select,.f-row textarea{width:100%;border:none;border-bottom:1.5px solid var(--rule);background:transparent;padding:10px 2px;font-family:var(--gothic);font-size:15px;color:var(--ink);transition:border-color .3s}
.f-row select{cursor:pointer}
.f-row input:focus,.f-row select:focus,.f-row textarea:focus{outline:none;border-color:var(--green)}
.f-row textarea{min-height:110px;resize:vertical;border:1.5px solid var(--rule);padding:12px}
.f-row textarea:focus{border-color:var(--green)}
.form-submit{margin-top:30px}
.form-submit .btn{width:100%;padding:16px;font-size:15px}
.form-submit-note{margin-top:10px;font-size:12px;color:var(--gray);text-align:center;letter-spacing:.02em}
.form-msg{display:none;margin-top:14px;border:1px solid var(--green);color:var(--green);font-size:13px;padding:12px 14px;text-align:center;letter-spacing:.04em}

/* ---- フッター ---- */
footer{border-top:1px solid var(--rule);background:var(--paper);padding:44px 0 26px;font-size:13px;color:var(--gray)}
.foot-flex{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:30px}
.foot-logo{font-family:var(--mincho);font-size:17px;color:var(--navy);font-weight:700;letter-spacing:.1em;margin-bottom:8px}
.foot-nav{display:flex;gap:20px;flex-wrap:wrap}
.foot-nav a{display:inline-block;padding:6px 0;min-height:24px;transition:color .25s}
.foot-nav a:hover{color:var(--green)}
.copyright{text-align:center;font-size:11.5px;border-top:1px solid var(--rule);padding-top:20px}
.sample-note{text-align:center;font-size:11px;color:var(--gray);margin-top:6px}

/* ---- モバイル固定CTA ---- */
.m-cta{display:none;position:fixed;left:0;right:0;bottom:0;z-index:120;background:var(--white);border-top:1px solid var(--rule);padding:10px 12px;gap:10px}
.m-cta a{flex:1;text-align:center;font-size:13.5px;font-weight:700;padding:13px 4px;letter-spacing:.06em}
.m-cta .tel{border:1.5px solid var(--green);color:var(--green)}
.m-cta .mail{background:var(--green);color:#fff}

/* ---- ヒーロー補足文 ---- */
.hero-sub{margin-top:28px;text-align:center;font-size:12.5px;line-height:2;color:#4a4f54;letter-spacing:.06em}
.hero-sub b{display:block;font-size:14.5px;color:var(--navy);font-weight:700;letter-spacing:.08em}

/* ---- 工事の流れ ---- */
.flow{max-width:820px}
.flow-step{display:grid;grid-template-columns:64px 1fr;gap:24px;position:relative;padding:0 0 34px}
.flow-step::before{content:"";position:absolute;left:31px;top:10px;bottom:-2px;width:1px;background:var(--rule)}
.flow-step:last-child{padding-bottom:0}
.flow-step:last-child::before{display:none}
.flow-no{width:64px;height:64px;border:1px solid var(--wood);background:var(--white);color:var(--wood);font-family:var(--mincho);font-size:22px;display:flex;align-items:center;justify-content:center;position:relative;z-index:1}
.flow-body h3{font-family:var(--mincho);font-size:17px;color:var(--navy);letter-spacing:.1em;font-weight:600;padding-top:6px}
.flow-body p{font-size:14px;color:#4a4f54;margin-top:2px}

.work-notes{margin-top:6px}
.work-notes dt{font-size:12px;font-weight:700;color:var(--green);letter-spacing:.14em;border-left:3px solid var(--green);padding-left:10px;margin-top:12px}
.work-notes dd{font-size:13.5px;color:#4a4f54;padding-left:13px;line-height:1.8}
.more-wrap{text-align:center;margin-top:10px}
.more-btn{display:inline-block;border:1.5px solid var(--navy);color:var(--navy);font-weight:700;font-size:14px;letter-spacing:.14em;padding:15px 54px;transition:background .3s,color .3s;cursor:pointer;background:none;font-family:var(--gothic)}
.more-btn:hover{background:var(--navy);color:#fff}
.ba-note{font-size:11px;color:var(--gray);margin-top:14px;text-align:center}

/* ---- 地図 ---- */
.map-block{margin-top:34px;border:1px solid var(--rule);background:var(--white)}
.map-placeholder{min-height:280px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:44px 24px;text-align:center;background:var(--paper)}
.map-placeholder .map-label{font-family:var(--mincho);font-size:12px;letter-spacing:.22em;color:var(--wood);background:var(--white);border:1px solid var(--rule);padding:4px 12px}
.map-placeholder p{font-size:13px;color:#4a4f54;background:var(--white);padding:2px 10px}
.map-placeholder .map-link{display:inline-block;padding:11px 22px}
.map-foot{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;padding:14px 20px;font-size:13px;color:#4a4f54;border-top:1px solid var(--rule)}
.map-foot .park{color:var(--green);font-weight:700;border:1px solid var(--green);padding:4px 14px;font-size:12.5px;letter-spacing:.08em}
.f-row label .opt{color:var(--gray);font-size:11px;margin-left:8px;font-weight:500}


/* ---- アクセシビリティ・フォーム品質 ---- */
.skip-link{position:fixed;top:8px;left:8px;z-index:9999;background:var(--navy);color:#fff;padding:10px 14px;transform:translateY(-160%);transition:transform .2s}
.skip-link:focus{transform:translateY(0)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #1d5fd1;outline-offset:3px}
.form fieldset{border:0;min-width:0}
.hp-field{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.side-foot .tel,.tel-panel .num{display:block}
body.menu-open{overflow:hidden}

/* ---- フェード ---- */
.fade{opacity:1;transform:none}
.js-anim .fade{opacity:0;transform:translateY(14px);transition:opacity .6s ease,transform .6s ease}
.js-anim .fade.show{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.js-anim .fade{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}

/* ---- レスポンシブ ---- */
@media (max-width:1080px){
  .about-grid{grid-template-columns:64px 1fr}
  .about-photo{display:none}
}
@media (max-width:920px){
  .side{display:none}
  main{margin-left:0}
  .home-page footer{margin-left:0}
  .m-head{display:flex}
  .m-cta{display:flex;padding-bottom:calc(10px + env(safe-area-inset-bottom))}
  body{padding-bottom:calc(74px + env(safe-area-inset-bottom))}
  .inner{padding:0 22px}
  section{padding:68px 0}
  .hero{grid-template-columns:1fr;min-height:auto}
  .hero-copy{order:2;padding:40px 22px 48px;min-height:auto}
  .hero-photo{order:1;height:280px}
  .hero-v{writing-mode:horizontal-tb;max-height:none;height:auto;font-size:25px;letter-spacing:.12em;text-align:center;line-height:1.8}
  .hero-v br{display:none}
  .hero-side{position:static;writing-mode:horizontal-tb;order:-1;margin-bottom:16px;font-size:11.5px;letter-spacing:.22em;text-align:center}
  .hero-stamp{display:none}
  .hero-sub{margin-top:18px;font-size:12px}
  .hero-bar{padding:14px 20px}
  .reason-item{grid-template-columns:60px 1fr;gap:12px}
  .reason-item p{grid-column:1/-1;margin-top:-6px}
  .about-grid{grid-template-columns:1fr;gap:26px}
  .about-vtitle{writing-mode:horizontal-tb;height:auto;border-right:none;border-bottom:1px solid var(--rule);padding:0 0 14px}
  .about-letter{padding:30px 24px}
  .menu-row{grid-template-columns:110px 1fr;gap:16px}
  .menu-row .items{grid-column:1/-1}
  .menu-row .items span{padding:2px 10px}
  .work,.work:nth-child(even){grid-template-columns:1fr}
  .work:nth-child(even) .work-photo{order:0}
  .work-photo{min-height:240px;height:240px;position:relative}
  .work-body{padding:28px 24px}
  .voice-item{grid-template-columns:40px 1fr;gap:16px}
  .voice-body p{font-size:15px}
  .staff-row{grid-template-columns:1fr;gap:16px}
  .staff-row .face img{height:240px}
  .company-grid,.contact-grid{grid-template-columns:1fr}
  .flow-step{grid-template-columns:48px 1fr;gap:16px;padding-bottom:26px}
  .flow-no{width:48px;height:48px;font-size:18px}
  .flow-step::before{left:23px}
  .map-placeholder{min-height:240px}
  /* スマホ：画像枠の比率を固定し、ページのガタつきを抑える */
  .hero-photo{height:auto;aspect-ratio:16/10}
  .hero-photo img{width:100%;height:100%;object-fit:cover;object-position:center}
  .menu-row .thumb{height:auto;aspect-ratio:4/3}
  .menu-row .thumb img{width:100%;height:100%;object-fit:cover}
  .staff-row .face{aspect-ratio:4/3}
  .staff-row .face picture,.staff-row .face img{width:100%;height:100%}
  .staff-row .face img{object-fit:cover}
  /* スマホ：ヘッダーは可変高。メニュー位置はJSで実測値をCSS変数へ反映 */
  .m-head{height:auto;min-height:60px;padding:10px 16px;gap:10px}
  .m-head .side-logo .name{font-size:16px;white-space:nowrap}
  .f-row input,.f-row select,.f-row textarea{font-size:16px}
  .c-cell{border-right:none;border-bottom:1px solid var(--rule);padding:28px 24px}
  .c-cell:last-child{border-bottom:none}
  .demo-notice{flex-direction:column;gap:5px;padding:9px 16px;font-size:11.5px}
  .content-disclaimer{margin-top:-20px}
}


/* ===== Production hardening / accessibility ===== */
section,[id]{scroll-margin-top:16px}
button,input,select,textarea{font:inherit}
button,a{touch-action:manipulation}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.breadcrumb{font-size:13px;color:var(--gray);margin:0 0 22px}
.breadcrumb ol{display:flex;flex-wrap:wrap;gap:8px;align-items:center;list-style:none}
.breadcrumb li+li::before{content:'›';margin-right:8px;color:var(--wood)}
.breadcrumb a{text-decoration:underline;text-underline-offset:3px}
.form-consent{font-size:13px;line-height:1.7;display:flex;gap:10px;align-items:flex-start;margin-top:8px}
.form-consent input{width:24px;height:24px;min-width:24px;margin-top:1px}
.form-consent a{text-decoration:underline;text-underline-offset:3px;color:var(--green-deep)}
.form-help{font-size:12px;color:var(--gray);margin-top:4px}
input:invalid:not(:placeholder-shown),textarea:invalid:not(:placeholder-shown){border-color:#9a2f22}
.privacy-page main{margin-left:0}
.privacy-page .inner{max-width:900px}
.privacy-page header{background:var(--white);border-bottom:1px solid var(--rule)}
.privacy-page .simple-head{display:flex;align-items:center;justify-content:space-between;min-height:70px;gap:20px}
.privacy-page article{padding:72px 0 96px}
.privacy-page article h1{font-family:var(--mincho);color:var(--navy);font-size:clamp(26px,4vw,36px);margin-bottom:28px}
.privacy-page article h2{font-family:var(--mincho);color:var(--navy);font-size:20px;margin:34px 0 10px}
.privacy-page article p,.privacy-page article li{font-size:15px;line-height:1.9}
.privacy-page article ul{list-style:disc;padding-left:1.5em}
.privacy-page .legal-note{border:1px solid var(--wood);background:var(--white);padding:18px 20px;margin-bottom:28px;color:#4a4f54;font-size:13px}
.works-page main{margin-left:0}
.works-page header{background:var(--white);border-bottom:1px solid var(--rule)}
.works-page .head-inner{display:flex;align-items:center;justify-content:space-between;min-height:70px;gap:20px}
.works-page .logo{font-family:var(--mincho);font-weight:700;color:var(--navy);font-size:19px;letter-spacing:.08em}
.works-page .logo small{display:block;font-family:var(--gothic);font-weight:500;font-size:10px;color:var(--gray);letter-spacing:.14em}
.works-page .back-link{font-size:13.5px;font-weight:500;color:var(--navy);border:1px solid var(--rule);padding:9px 20px;transition:border-color .3s,color .3s;letter-spacing:.06em;white-space:nowrap}
.works-page .back-link:hover{border-color:var(--green);color:var(--green)}
.works-page .back-link::before{content:'←';margin-right:8px;color:var(--wood)}
.works-page .page-head{padding:60px 0 0}
.works-page .notice{margin:30px 0 0;border:1px solid var(--wood);background:var(--white);padding:20px 26px;display:flex;gap:16px;align-items:baseline;flex-wrap:wrap}
.works-page .notice .tag{font-family:var(--mincho);font-size:12px;color:#fff;background:var(--wood);padding:3px 12px;letter-spacing:.18em;white-space:nowrap}
.works-page .notice p{font-size:13.5px;color:#4a4f54;line-height:1.9}
.works-list{padding:56px 0 90px;border-top:0}
.works-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px}
.work-card{background:var(--white);border:1px solid var(--rule);transition:box-shadow .25s,transform .25s}
.work-card:hover{box-shadow:0 10px 26px rgba(34,55,78,.08);transform:translateY(-2px)}
.work-card-media{aspect-ratio:16/10;overflow:hidden;border-bottom:1px solid var(--rule)}
.work-card-media picture,.work-card-media img{width:100%;height:100%}
.work-card-media img{object-fit:cover;transition:transform .5s}
.work-card:hover .work-card-media img{transform:scale(1.03)}
.work-card .work-body{padding:22px 26px 26px}
.bottom-cta{border-top:1px solid var(--rule);background:var(--white);padding:64px 0;text-align:center}
.bottom-cta .catch{font-family:var(--mincho);font-size:19px;color:var(--navy);letter-spacing:.1em;font-weight:600;margin-bottom:8px}
.bottom-cta p{font-size:14px;color:#4a4f54;margin-bottom:24px}
.bottom-cta .btn{display:inline-block;padding:15px 48px}
.bottom-cta .tel{margin-top:18px;font-size:13px;color:var(--gray)}
.bottom-cta .tel b{font-family:var(--mincho);font-size:19px;color:var(--navy);letter-spacing:.04em;margin:0 6px}
@media (max-height:780px) and (min-width:921px){
  .side{padding-top:20px;padding-bottom:18px}
  .side-nav{margin-top:20px}
  .side-nav a{padding-top:7px;padding-bottom:7px}
}
@media (max-width:920px){
  html{scroll-padding-bottom:calc(96px + env(safe-area-inset-bottom))}
  section,[id]{scroll-margin-top:calc(var(--mobile-header-height) + 12px)}
  .works-page .inner,.privacy-page .inner{padding-left:22px;padding-right:22px}
  .works-page .head-inner,.privacy-page .simple-head{min-height:62px;padding:8px 0;flex-wrap:wrap}
  .works-page .logo{font-size:17px}
  .works-page .logo small{font-size:9.5px;letter-spacing:.08em}
  .works-page .back-link{padding:8px 12px;font-size:12.5px}
  .works-page .page-head{padding-top:42px}
  .works-grid{grid-template-columns:1fr;gap:24px}
  .works-list{padding:44px 0 70px}
  .privacy-page article{padding:52px 0 76px}
  .tel-panel .num{font-size:clamp(20px,6.5vw,34px)}
}
@media (max-width:480px){
  .inner{padding-left:16px;padding-right:16px}
  .hero-bar{padding-left:16px;padding-right:16px}
  .hero-bar .btn{width:100%}
  .menu-row{grid-template-columns:92px 1fr;gap:12px}
  .sec-head{gap:12px}
  .sec-en{width:100%;margin-bottom:0}
  .company-grid{border-left:0;border-right:0}
  .c-cell{padding-left:18px;padding-right:18px}
  .work-body{padding-left:18px;padding-right:18px}
  .bottom-cta .btn{width:100%;padding-left:18px;padding-right:18px}
}

/* Final component consistency */
.work-card .work-body h2{font-family:var(--mincho);font-size:17px;color:var(--navy);letter-spacing:.08em;font-weight:600;line-height:1.6;margin-bottom:12px}
.privacy-page .back-link{font-size:13.5px;font-weight:500;color:var(--navy);border:1px solid var(--rule);padding:9px 20px;letter-spacing:.06em;white-space:nowrap}
.privacy-page .back-link::before{content:'←';margin-right:8px;color:var(--wood)}
.privacy-page .back-link:hover{border-color:var(--green);color:var(--green)}

/* ---- 404ページ ---- */
/* .privacy-page article p の font-size に勝つよう詳細度を合わせる */
.privacy-page article p.error-code{font-family:var(--mincho);font-size:clamp(56px,12vw,88px);font-weight:700;color:var(--rule);line-height:1;letter-spacing:.06em;margin-bottom:8px}
.error-nav{display:grid;gap:14px;margin-top:36px;max-width:560px}
.error-nav a{display:block;border:1px solid var(--rule);background:var(--white);padding:18px 22px;transition:border-color .3s,transform .3s}
.error-nav a:hover{border-color:var(--green);transform:translateX(4px)}
.error-nav a b{display:block;font-family:var(--mincho);font-size:16px;color:var(--navy);letter-spacing:.08em;margin-bottom:4px}
.error-nav a b::after{content:'→';margin-left:10px;color:var(--wood);font-family:var(--gothic)}
.error-nav a span{font-size:13px;color:#4a4f54;line-height:1.7}

/* ---- タップ領域の確保（WCAG 2.5.8 / 最小24px） ---- */
footer .inner > div > a{display:inline-block;padding:6px 0;min-height:24px}
