/* 山梨建設株式会社 — Wix版の配色（オレンジ #ff9e55・墨 #313030・グレー #f0f0f0）を踏襲 */
:root{--or:#ff9e55;--or-d:#e9772a;--ink:#313030;--sub:#6f6f6f;--gray:#f0f0f0;--line:#dcdcdc;--w:1160px;--en:'Archivo Black','Arial Black',sans-serif;--ease:cubic-bezier(.22,.7,.2,1);--ja:'Inter','Zen Kaku Gothic New','Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:90px;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--ja);color:var(--ink);background:#fff;line-height:1.9;font-size:16px;letter-spacing:.04em;overflow-x:clip}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
h1,h2,h3{line-height:1.45;margin:0 0 .6em;font-weight:900}
p{margin:0 0 1.1em}
ul,ol{margin:0;padding:0;list-style:none}
.in{max-width:var(--w);margin:0 auto;padding:0 24px}
.narrow{max-width:820px}
.skip{position:absolute;left:-999px;top:0;background:#000;color:#fff;padding:8px 12px;z-index:200}.skip:focus{left:8px}
:focus-visible{outline:3px solid var(--or);outline-offset:2px}
.ta-r{text-align:right}

/* ボタン（細線・控えめな高さ・線の矢印） */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:50px;padding:0 26px 0 30px;background:var(--or);color:#fff;text-decoration:none;font-weight:700;font-size:14px;letter-spacing:.12em;border:1px solid var(--or);border-radius:2px;transition:background .25s,color .25s,border-color .25s}
.btn::after{content:"";flex:none;width:18px;height:6px;margin-top:-5px;border-bottom:1px solid currentColor;border-right:1px solid currentColor;transform:skewX(45deg);transition:transform .3s}
.btn:hover{background:var(--or-d);border-color:var(--or-d)}
.btn:hover::after{transform:translateX(4px) skewX(45deg)}
.btn-o{background:transparent;color:var(--ink);border-color:rgba(49,48,48,.5)}.btn-o:hover{background:var(--ink);border-color:var(--ink);color:#fff}
.btns{display:flex;flex-wrap:wrap;gap:12px;margin-top:1.6em}
.lnk{color:var(--or-d);font-weight:700;text-decoration:none;border-bottom:1px solid}

/* ヘッダー */
.hd{position:sticky;top:0;z-index:100;display:flex;align-items:center;gap:24px;height:84px;padding:0 0 0 24px;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);border-bottom:1px solid #eee}
.hd-logo{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:700;font-size:15px;letter-spacing:.1em;white-space:nowrap}
.lgw{position:relative;display:block;aspect-ratio:1445/1246;flex:none}
.lgw img{position:absolute;inset:0;width:100%;height:100%}
.hd-logo .lg{width:48px}
.lg .lg-o{transition:transform .5s cubic-bezier(.3,1.6,.5,1)}
.hd-logo:hover .lg-o{transform:translateY(-9%)}
.hd-nav{margin-left:auto}
.hd-nav ul{display:flex;gap:4px}
.hd-nav a{display:block;padding:8px 12px;font-size:14px;font-weight:500;text-decoration:none;position:relative}
.hd-nav a::after{content:"";position:absolute;left:12px;right:12px;bottom:2px;height:2px;background:var(--or);transform:scaleX(0);transition:.25s}
.hd-nav a:hover::after,.hd-nav a[aria-current]::after{transform:scaleX(1)}
.hd-cta{align-self:center;display:flex;align-items:center;height:44px;margin-right:24px;padding:0 24px;border-radius:2px;font-size:14px;background:var(--or);color:#fff;font-weight:700;text-decoration:none;letter-spacing:.1em}
.hd-cta:hover{background:var(--or-d)}
.hd-btn{display:none;width:64px;height:64px;margin-left:auto;margin-right:10px;border:0;background:none;cursor:pointer;position:relative}
.hd-btn span{position:absolute;left:18px;right:18px;height:2px;background:var(--ink);transition:.3s}
.hd-btn span:first-child{top:26px}.hd-btn span:last-child{top:36px}
.hd-btn[aria-expanded=true] span:first-child{top:31px;transform:rotate(45deg)}.hd-btn[aria-expanded=true] span:last-child{top:31px;transform:rotate(-45deg)}
.drawer{position:fixed;inset:72px 0 0;z-index:99;background:#fff;overflow:auto;padding:12px 24px 40px}
.drawer li a{display:flex;align-items:baseline;gap:14px;padding:16px 4px;border-bottom:1px solid var(--line);text-decoration:none}
.drawer b{font-family:var(--en);font-weight:400;font-size:18px;min-width:110px}
.drawer span{font-size:14px;color:var(--sub)}
.drawer-tel{display:block;margin-top:24px;padding:16px;text-align:center;background:var(--or);color:#fff;font-weight:700;font-size:18px;text-decoration:none}

/* 見出し */
.sh{margin-bottom:44px}
.sh-en{font-family:var(--en);font-weight:400;font-size:clamp(40px,6vw,72px);line-height:1.05;letter-spacing:.03em;margin:0;position:relative;display:inline-block}
.sh .sh-en::after,.duo-txt .sh-en::after{content:"";display:block;width:100%;height:4px;margin-top:10px;background:linear-gradient(90deg,var(--or) 0 40%,var(--ink) 40%)}
.sh-ja{font-size:15px;font-weight:700;color:var(--sub);margin:0 0 4px;letter-spacing:.12em}
.sh h2.sh-ja,.sh h1.sh-ja{font-size:clamp(22px,2.6vw,30px);color:var(--ink);margin-top:10px}
.sh-ja2{font-weight:700;color:var(--sub);margin:12px 0 18px}
.sec{padding:110px 0}
.sec-tight{padding:60px 0 100px}
.sec-gray{background:var(--gray)}
.lead{font-size:17px;margin-bottom:48px;max-width:820px}

/* ヒーロー（左：文字／右：斜め切りの写真スライド／下：数字帯） */
.hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,min(56vw,960px));grid-template-rows:1fr;min-height:calc(100svh - 84px);max-height:980px;background:#fff;overflow:hidden}
.hero-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(49,48,48,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(49,48,48,.06) 1px,transparent 1px);background-size:40px 40px;-webkit-mask-image:linear-gradient(90deg,#000 20%,transparent 55%);mask-image:linear-gradient(90deg,#000 20%,transparent 55%)}
.hero-70{position:absolute;left:-2vw;bottom:-6vw;margin:0;font-family:var(--en);font-size:clamp(220px,30vw,460px);line-height:1;color:transparent;-webkit-text-stroke:2px rgba(255,158,85,.28);pointer-events:none;user-select:none}
.hero-txt{position:relative;z-index:3;grid-row:1;align-self:center;padding:56px 32px 56px max(24px,calc((100vw - 1400px)/2 + 24px))}
.hero-lbl{display:flex;align-items:center;gap:14px;margin:0 0 26px;font-weight:700;font-size:14px;letter-spacing:.14em}
.hero-lbl span{font-family:var(--en);font-weight:400;font-size:12px;letter-spacing:.12em;color:#fff;background:var(--ink);padding:4px 10px}
.hero-en{margin:0 0 28px;font-family:var(--en);font-size:clamp(40px,4.5vw,66px);line-height:.98;letter-spacing:.01em;white-space:nowrap}
.hero-en>span{display:block;overflow:hidden}
.hero-en .ol{color:transparent;-webkit-text-stroke:1.6px var(--ink)}
.hero-en em{font-style:normal;color:var(--or)}
.hero-txt h1{font-size:clamp(18px,1.7vw,24px);letter-spacing:.14em;line-height:1.8;margin:0 0 34px;padding-left:18px;border-left:4px solid var(--or)}
.hero-txt h1 span{display:block}
.hero-txt h1 small{display:block;margin-top:10px;font-size:13px;font-weight:700;letter-spacing:.12em;color:var(--sub)}
.hero-btns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:440px}
.hero-btns .btn{padding:0 14px}
.hero-vis{position:relative;grid-row:1;grid-column:2;z-index:1}
.hero-slides{position:absolute;inset:0;clip-path:polygon(14% 0,100% 0,100% 100%,0 100%);background:var(--ink)}
.hs{position:absolute;inset:0;margin:0;opacity:0;transition:opacity 1.4s ease}
.hs.on{opacity:1;z-index:1}
.hs img{width:100%;height:100%;object-fit:cover;transform:scale(1.12);transition:transform 8s linear}
.hs.on img{transform:scale(1)}
.hs::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.25),transparent 30%,transparent 60%,rgba(0,0,0,.35))}
.hs figcaption{position:absolute;z-index:2;right:28px;top:26px;display:flex;align-items:center;gap:10px;color:#fff;font-size:13px;font-weight:700;letter-spacing:.1em;text-shadow:0 1px 6px rgba(0,0,0,.4)}
.hs figcaption b{background:var(--or);padding:2px 10px;text-shadow:none;font-size:12px}
.hero-ctl{position:absolute;z-index:3;right:28px;bottom:36px;display:flex;align-items:center;gap:14px;color:#fff;font-family:var(--en);font-size:13px;letter-spacing:.1em}
.hero-no b{font-weight:400;font-size:20px}
.hero-bar{width:120px;height:2px;background:rgba(255,255,255,.35);overflow:hidden}
.hero-bar i{display:block;height:100%;width:100%;background:#fff;transform-origin:left;transform:scaleX(0)}
.hero-bar i.run{animation:bar 6s linear forwards}
@keyframes bar{to{transform:scaleX(1)}}
.hero-v{position:absolute;z-index:3;right:10px;top:50%;margin:0;writing-mode:vertical-rl;transform:translateY(-50%);font-family:var(--en);font-size:11px;letter-spacing:.3em;color:#fff;opacity:.85}
.hero-scroll{position:absolute;z-index:5;left:calc((100vw - 1400px)/2 - 40px);top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:10px;text-decoration:none;font-family:var(--en);font-size:11px;letter-spacing:.24em;writing-mode:vertical-rl;color:var(--sub)}
.hero-scroll::after{content:"";width:1px;height:56px;background:linear-gradient(var(--ink) 50%,var(--line) 50%);background-size:1px 112px;animation:scr 1.8s linear infinite}
@keyframes scr{from{background-position:0 -56px}to{background-position:0 56px}}
/* 入場アニメ */
.hero-en>span>*,.hero-en>span{animation:up .9s cubic-bezier(.2,.7,.2,1) both}
.hero-en>span:nth-child(2){animation-delay:.12s}.hero-en>span:nth-child(3){animation-delay:.24s}
.hero-txt h1,.hero-btns,.hero-lbl{animation:fade 1s .45s both}
.hero-slides{animation:wipe 1.3s cubic-bezier(.7,0,.2,1) both}
@keyframes up{from{transform:translateY(60%);opacity:0}to{transform:none;opacity:1}}
@keyframes fade{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes wipe{from{clip-path:polygon(100% 0,100% 0,100% 100%,100% 100%)}to{clip-path:polygon(14% 0,100% 0,100% 100%,0 100%)}}

/* イントロ */
.intro{padding:120px 0;background:linear-gradient(180deg,#eaf0f4,#fff)}
.intro-in{display:grid;grid-template-columns:1fr 1.05fr;gap:64px;align-items:center}
.tag-h{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:34px}
.tag-h span{background:#fff;border:1px solid var(--ink);padding:6px 18px;font-size:clamp(20px,2.3vw,28px);letter-spacing:.1em}
.intro-img{position:relative}
.intro-img>img:first-child{width:100%;aspect-ratio:4/3;object-fit:cover}
.intro-dia{position:absolute;width:44%;right:-6%;bottom:-14%;pointer-events:none}

/* 事業カード */
.biz{display:grid;gap:22px}
.biz-i a{display:grid;grid-template-columns:380px 1fr;gap:0;background:#fff;border:1px solid var(--line);text-decoration:none;transition:box-shadow .4s var(--ease),transform .4s var(--ease)}
.biz-i a:hover{box-shadow:0 14px 40px rgba(0,0,0,.08);transform:translateY(-3px)}
.biz-img{overflow:hidden}.biz-img img{width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .8s var(--ease)}
.biz-i a:hover .biz-img img{transform:scale(1.05)}
.biz-body{display:flex;flex-direction:column;padding:34px 40px;border-left:5px solid var(--or)}
.biz-body b{font-size:24px;color:var(--or-d);margin-bottom:12px}
.more{margin-top:auto;align-self:flex-end;display:inline-flex;align-items:center;gap:12px;color:var(--or-d);font-family:var(--en);font-size:13px;letter-spacing:.12em}
.more::after{content:"";width:28px;height:6px;margin-top:-5px;border-bottom:1px solid currentColor;border-right:1px solid currentColor;transform:skewX(45deg);transition:transform .3s}
.biz-i a:hover .more::after{transform:translateX(5px) skewX(45deg)}

/* WORKS（トップ） */
.works-top{position:relative;padding:60px 24px;background:var(--gray)}
.wt-grid{max-width:var(--w);margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:16px}
.wt-grid img{width:100%;aspect-ratio:16/9;object-fit:cover}
.wt-hex{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(440px,86vw);aspect-ratio:1.08;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 56px;background:#fff;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
.wt-hex .sh-en{font-size:44px}
.wt-hex p:not(.sh-ja){font-size:14px;margin:14px 0 18px}

/* 帯（COMPANY） */
.band{position:relative;padding:150px 0;overflow:hidden;color:#fff}
.band-bg{position:absolute;inset:0}.band-bg img{width:100%;height:100%;object-fit:cover}
.band::before{content:"";position:absolute;inset:0;z-index:1;background:rgba(30,30,30,.35)}
.band .in{position:relative;z-index:2}
.band-box{max-width:600px;padding:44px 48px;background:rgba(49,48,48,.72);backdrop-filter:blur(4px)}
.band-box .sh-en{margin-bottom:18px}

/* COMPANY（左：墨の文字面／右：看板写真） */
.co-band{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);background:var(--ink);color:#fff;min-height:520px}
.co-txt{align-self:center;padding:90px 56px 90px max(24px,calc((100vw - var(--w))/2 + 24px));position:relative}
.co-txt .sh-ja{color:var(--or);margin-bottom:6px}
.co-txt .sh-en{margin-bottom:26px}
.co-txt .sh-en::after{content:"";display:block;width:100%;height:4px;margin-top:10px;background:linear-gradient(90deg,var(--or) 0 40%,rgba(255,255,255,.5) 40%)}
.co-txt p:not(.sh-ja){max-width:460px;margin-bottom:30px;opacity:.92}
.co-img{position:relative;overflow:hidden}
.co-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:70% 50%}
@media (max-width:900px){.co-band{grid-template-columns:1fr;min-height:0}.co-img{order:-1;aspect-ratio:16/10}.co-txt{padding:48px 24px 56px}}
@media (max-width:600px){.co-txt{padding:40px 16px 48px}}

/* 2カラム */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.duo-rev .duo-img{order:2}
.duo-img img{width:100%;aspect-ratio:4/3;object-fit:cover}

/* 70周年（Wix版：空の写真に白い明朝の縦書き） */
.anniv{position:relative;height:clamp(560px,100vh,960px);overflow:hidden;color:#f0f0f0}
.anniv-bg{position:absolute;inset:0}.anniv-bg img{width:100%;height:100%;object-fit:cover;object-position:center 40%}
.anniv-v{position:absolute;top:13%;left:50%;transform:translateX(-50%);display:flex;flex-direction:row-reverse;align-items:flex-end;gap:clamp(28px,3vw,44px);font-family:'Noto Serif JP',serif;font-weight:700;text-shadow:0 1px 10px rgba(30,70,120,.35)}
.anniv-v h2{writing-mode:vertical-rl;font-size:clamp(18px,1.6vw,24px);font-weight:700;letter-spacing:.32em;line-height:2.3;margin:0}
.tcy{text-combine-upright:all;-webkit-text-combine:horizontal;letter-spacing:0}
.anniv-v h2>span{display:block}
.anniv-s{writing-mode:vertical-rl;font-size:clamp(15px,1.25vw,18px);letter-spacing:.3em;margin:0 0 .3em}
.anniv-v .ln{clip-path:inset(0 0 100% 0);opacity:0;transition:clip-path 1.6s cubic-bezier(.25,.6,.2,1),opacity 1.2s}
.anniv-v .ln.on{clip-path:inset(0 0 -10% 0);opacity:1}
@media (prefers-reduced-motion:reduce){.anniv-v .ln{clip-path:none;opacity:1}}
.anniv-logo{position:absolute;left:14%;bottom:8%;width:clamp(64px,6vw,96px);opacity:.9}
/* お知らせ */
.news-list li{border-bottom:1px solid var(--line)}
.news-list li:first-child{border-top:1px solid var(--line)}
.news-list a{display:flex;gap:32px;padding:22px 8px;text-decoration:none;transition:.2s}
.news-list a:hover{background:var(--gray);color:var(--or-d)}
.news-list time{font-family:var(--en);color:var(--or-d);min-width:110px}
.news-list+.ta-r{margin-top:24px}

/* 下層ヒーロー */
.ph{position:relative;height:clamp(260px,38vw,420px);display:flex;align-items:flex-end;overflow:hidden;color:#fff}
.ph-bg{position:absolute;inset:0}.ph-bg img{width:100%;height:100%;object-fit:cover}
.ph::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(30,30,30,.75),rgba(30,30,30,.15))}
.ph .in{position:relative;z-index:2;width:100%;padding-bottom:48px}
.ph-en{font-family:var(--en);font-size:clamp(44px,8vw,104px);line-height:1;margin:0 0 8px;opacity:.95}
.ph h1{font-size:clamp(20px,2.4vw,28px);letter-spacing:.14em;margin:0;display:flex;align-items:center;gap:14px}
.ph h1::before{content:"";width:14px;height:14px;background:var(--or);transform:rotate(45deg)}
.crumb{max-width:var(--w);margin:0 auto;padding:16px 24px;font-size:13px;color:var(--sub)}
.crumb ol{display:flex;flex-wrap:wrap;gap:6px}
.crumb li+li::before{content:"/";margin-right:6px;color:#bbb}
.crumb a{text-decoration:none}.crumb a:hover{color:var(--or-d)}

/* about */
.feat{display:grid;grid-template-columns:1fr 1.1fr;gap:64px;align-items:center}
.feat-rev .feat-img{order:2}
.feat-img img{width:100%;aspect-ratio:4/3;object-fit:cover}
.feat-num{font-family:var(--en);font-size:clamp(70px,10vw,130px);line-height:1;color:var(--or);margin:0 0 10px}
.feat-num small{font-size:.26em;color:var(--ink);margin-left:10px;letter-spacing:.08em}
.feat-num .feat-q{display:block;margin:10px 0 0}
.feat-num-s{font-size:clamp(34px,4.6vw,56px)}
.feat-h{font-size:clamp(24px,2.8vw,34px)}

/* 事業内容 */
.bz-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-top:40px}
.bz-tabs a{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:58px;padding:8px;border:1px solid var(--line);font-size:14px;background:#fff;text-decoration:none;font-weight:700;text-align:center;line-height:1.4;transition:.2s}
.bz-tabs a small{font-family:var(--en);font-weight:400;color:var(--or-d)}
.bz-tabs a:hover{background:var(--ink);color:#fff}
.bz-in{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:start}
.bz-rev .bz-img{order:2}
.bz-img img{width:100%;aspect-ratio:4/3;object-fit:cover;position:sticky;top:110px}
.bz-n{font-family:var(--en);font-size:80px;line-height:1;color:var(--or);margin:0}
.bz-txt h2{font-size:clamp(24px,2.8vw,34px)}
.point{position:relative;border:2px solid var(--or);padding:26px 26px 18px;margin:30px 0 26px;background:#fff}
.point-h{position:absolute;top:-14px;left:18px;margin:0;padding:0 12px;background:var(--or);color:#fff;font-family:var(--en);font-size:14px;letter-spacing:.14em}
.point li{position:relative;padding-left:24px;font-weight:700;margin:4px 0}
.point li::before{content:"";position:absolute;left:2px;top:.75em;width:8px;height:8px;background:var(--or);transform:rotate(45deg)}

/* 施工実績 */
.wtabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:36px}
.wtabs button{flex:1 1 140px;min-height:46px;font-size:14px;letter-spacing:.06em;font:inherit;font-weight:700;background:var(--gray);border:0;cursor:pointer;color:var(--ink);transition:.2s}
.wtabs button small{margin-left:8px;font-family:var(--en);font-size:12px;color:var(--sub)}
.wtabs button[aria-selected=true]{background:var(--or);color:#fff}.wtabs button[aria-selected=true] small{color:#fff}
.wlist{display:grid;grid-template-columns:repeat(3,1fr);gap:32px 24px}
.wcard[hidden]{display:none}
.wcard a{display:block;text-decoration:none}
.wcard-img{display:block;overflow:hidden;margin-bottom:12px}
.wcard-img img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .8s var(--ease)}
.wcard a:hover img{transform:scale(1.06)}
.wcard-cat{display:inline-block;font-size:12px;font-weight:700;color:#fff;background:var(--ink);padding:2px 10px;margin-bottom:6px}
.wcard b{display:block;font-size:17px}
.wd-head{background:var(--gray);padding:0 0 44px}
.wd-head .crumb{padding-left:0;padding-right:0}
.wd-cat{color:var(--or-d);font-weight:700;margin:20px 0 4px}
.wd-head h1{font-size:clamp(26px,3.4vw,40px);margin:0}
.wd-main img{width:100%;max-height:78vh;object-fit:contain;background:var(--gray)}
.wd-main{margin:0 0 16px}
.wd-gal{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.zoom{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in;overflow:hidden}
.zoom img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:.4s}.zoom:hover img{transform:scale(1.05)}
.wd-dl{display:flex;flex-wrap:wrap;gap:8px 40px;margin:36px 0;padding:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.wd-dl div{display:flex;gap:14px}.wd-dl dt{font-weight:700;color:var(--sub)}.wd-dl dd{margin:0}
.wd-pn{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.wd-pn a{text-decoration:none;font-weight:700}.wd-pn a:hover{color:var(--or-d)}
.lb{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.9);display:flex;align-items:center;justify-content:center}
.lb[hidden]{display:none}
.lb img{max-width:92vw;max-height:86vh;object-fit:contain}
.lb button{position:absolute;width:56px;height:56px;border:0;background:rgba(255,255,255,.12);color:#fff;font-size:26px;cursor:pointer}
.lb .lb-c{top:16px;right:16px}.lb .lb-p{left:16px;top:50%}.lb .lb-n{right:16px;top:50%}

/* 会社情報 */
.greet{display:grid;grid-template-columns:.9fr 1.1fr;gap:64px;align-items:start}
.greet-img img{width:100%;aspect-ratio:3/4;object-fit:cover}
.sign{text-align:right;font-size:22px;font-weight:700;margin-top:30px}.sign small{font-size:14px;margin-right:14px;color:var(--sub)}
.tbl{border-top:2px solid var(--ink);background:#fff}
.tbl>div{display:grid;grid-template-columns:220px 1fr;border-bottom:1px solid var(--line)}
.tbl dt{padding:20px 24px;font-weight:700;background:#fafafa}
.tbl dd{margin:0;padding:20px 24px}
.tbl-s>div{grid-template-columns:120px 1fr}
.lic{display:grid;grid-template-columns:1.3fr 1fr;gap:24px}
.lic-box{border:1px solid var(--line);padding:32px}
.lic-box h3{font-size:18px;border-left:5px solid var(--or);padding-left:12px}
.lic-box dl div{padding:12px 0;border-bottom:1px dashed var(--line)}
.lic-box dt{font-weight:700}.lic-box dd{margin:0;color:var(--sub)}
.lic-box li{padding:12px 0 12px 22px;border-bottom:1px dashed var(--line);position:relative;font-weight:700}
.lic-box li::before{content:"";position:absolute;left:2px;top:1.35em;width:8px;height:8px;background:var(--or);transform:rotate(45deg)}
.hist{position:relative;border-left:2px solid var(--line);margin-left:8px}
.hist li{display:grid;grid-template-columns:150px 1fr;gap:20px;padding:0 0 30px 32px;position:relative}
.hist li::before{content:"";position:absolute;left:-8px;top:.55em;width:14px;height:14px;background:var(--or);transform:rotate(45deg)}
.hist-y{font-family:var(--en);font-size:22px;line-height:1.3;margin:0}
.hist-y small{display:block;font-family:var(--ja);font-size:14px;color:var(--sub)}
.hist h3{font-size:18px;margin:0 0 4px}
.hist p{margin:0;color:var(--sub);font-size:15px}
.access{display:grid;grid-template-columns:1.4fr 1fr;gap:32px;align-items:start}
.map{aspect-ratio:4/3;background:var(--gray)}.map iframe{width:100%;height:100%;border:0}

/* 地域貢献 */
.decl{display:grid;grid-template-columns:.8fr 1.2fr;gap:64px;align-items:center}
.decl-txt .sh-ja{font-size:clamp(22px,2.6vw,30px);color:var(--ink);margin:10px 0 24px}
.sdgs{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.sdgs>li{background:#fff;padding:36px 36px 30px;position:relative;display:flex;flex-direction:column}
.sdgs-n{font-family:var(--en);font-size:44px;color:var(--or);line-height:1;margin:0 0 10px}
.sdgs h3{font-size:22px}
.sdgs ul{margin:0 0 20px}
.sdgs ul li{position:relative;padding-left:20px;font-weight:700;font-size:15px;margin:4px 0}
.sdgs ul li::before{content:"";position:absolute;left:2px;top:.8em;width:7px;height:7px;background:var(--or);transform:rotate(45deg)}
.sdgs-ic{display:flex;gap:10px;margin-top:auto}.sdgs-ic img{width:76px}
.act{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.act img{width:100%;aspect-ratio:4/3;object-fit:cover}
.act p{margin:8px 0 0;font-weight:700;font-size:14px}
.act-log{margin-top:40px;max-width:520px}

/* 求人 */
.apply{margin-top:64px;padding:44px;background:var(--gray);text-align:center}
.apply h2{font-size:26px}
.apply .cta-row{justify-content:center}
.apply .cta-tel{color:var(--ink);border-color:rgba(49,48,48,.35)}

/* CTA・フッター */
.cta{background:var(--ink);color:#fff;padding:90px 0;text-align:center;position:relative;overflow:hidden}
.cta::after{content:"";position:absolute;right:-80px;top:-80px;width:260px;height:260px;background:var(--or);transform:rotate(45deg);opacity:.9}
.cta .in{position:relative;z-index:1}
.en-lbl{font-family:var(--en);font-size:clamp(40px,6vw,64px);line-height:1;margin:0 0 14px}
.cta h2{font-size:clamp(20px,2.4vw,26px)}
.cta-row{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;align-items:stretch;margin-top:30px}
.cta-tel{display:flex;flex-direction:column;justify-content:center;min-height:62px;padding:6px 30px;border:1px solid rgba(255,255,255,.45);border-radius:2px;text-decoration:none;line-height:1.3}
.cta-tel small{font-size:12px;opacity:.85}
.cta-tel b{font-family:var(--en);font-weight:400;font-size:24px;letter-spacing:.06em}
.cta .btn{min-height:62px;padding:0 30px 0 34px}
.ft{background:#fff;border-top:1px solid #eee;padding:60px 0 0}
.ft-in{display:grid;grid-template-columns:1fr 1.4fr;gap:48px}
.ft-logo{display:flex;align-items:center;gap:12px;text-decoration:none;font-weight:700;font-size:18px;letter-spacing:.1em;margin-bottom:18px}
.ft-logo img{width:56px}
.ft address{font-style:normal;font-size:14px;line-height:2}
.ft address a{text-decoration:none}
.ft-nav ul{display:grid;grid-template-columns:repeat(3,1fr);gap:4px 20px}
.ft-nav a{display:block;padding:6px 0;font-size:14px;text-decoration:none}.ft-nav a:hover{color:var(--or-d)}
.ft-copy{margin:48px 0 0;padding:18px;text-align:center;font-size:12px;color:#fff;background:var(--ink);letter-spacing:.1em}

/* フォーム */
.ct{display:grid;grid-template-columns:.8fr 1.2fr;gap:56px;align-items:start}
.ct-side .cta-tel{color:var(--ink);margin-top:24px;border-color:rgba(49,48,48,.35);display:inline-flex}
.ct-fax{margin-top:10px;color:var(--sub);font-size:14px}
.ct-card{background:var(--gray);padding:40px}
.cform .f{margin-bottom:22px}
.cform label{display:block;font-weight:700;margin-bottom:6px}
.cform em{font-style:normal;font-size:11px;background:var(--or);color:#fff;padding:2px 8px;margin-left:6px;vertical-align:2px}
.cform input:not([type=checkbox]),.cform select,.cform textarea{width:100%;font:inherit;padding:14px;border:1px solid #cfcfcf;background:#fff;border-radius:0}
.cform [aria-invalid=true]{border-color:#c0392b;background:#fff7f6}
.f-agree label{font-weight:500}.f-agree input{width:18px;height:18px;vertical-align:-3px;margin-right:6px}
.err{color:#c0392b;font-size:13px;margin:6px 0 0}
.hp{position:absolute;left:-9999px}
.send{width:100%;font:inherit;font-weight:700;cursor:pointer}
.st{margin-top:12px;font-weight:700;color:#c0392b}
.done{text-align:center;padding:40px 0}
.art h2{font-size:20px;margin-top:2em;border-left:5px solid var(--or);padding-left:12px}
.nf{text-align:center}.nf .btns{justify-content:center}

/* 表示アニメ */
.rv{opacity:0;transform:translate3d(0,28px,0);transition:opacity .9s var(--ease),transform 1s var(--ease);transition-delay:var(--d,0s)}
.rv.on{opacity:1;transform:none}
.sh.rv .sh-en::after,.sh.rv h2.sh-en::after{transform:scaleX(0);transform-origin:left;transition:transform 1s .35s var(--ease)}
.sh.rv.on .sh-en::after{transform:none}
.rvi img{clip-path:inset(0 100% 0 0);transform:scale(1.12);transition:clip-path 1.2s var(--ease),transform 1.8s var(--ease)}
.rvi.on img{clip-path:inset(0);transform:none}
/* 下層ページ冒頭 */
.ph-en,.ph h1{animation:up .9s var(--ease) both}.ph h1{animation-delay:.15s}
.ph-bg img{animation:phz 2.6s var(--ease) both}
@keyframes phz{from{transform:scale(1.1)}to{transform:none}}
.wd-head h1,.wd-cat{animation:fade .8s var(--ease) both}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.rv{opacity:1;transform:none}.rvi img{clip-path:none;transform:none}}

/* レスポンシブ */
@media (max-width:1180px){
 .hd-nav,.hd-cta{display:none}.hd-btn{display:block}.hd{height:72px}
 html{scroll-padding-top:80px}
}
@media (max-width:900px){
 .sec{padding:80px 0}
 .intro-in,.duo,.feat,.bz-in,.greet,.decl,.access,.ct,.lic,.ft-in{grid-template-columns:1fr;gap:36px}
 .duo-rev .duo-img,.feat-rev .feat-img,.bz-rev .bz-img{order:0}
 .bz-img img{position:static}
 .biz-i a{grid-template-columns:1fr}.biz-body{border-left:0;border-top:5px solid var(--or);padding:26px}
 .wlist{grid-template-columns:repeat(2,1fr)}
 .wd-gal,.act{grid-template-columns:repeat(2,1fr)}
 .sdgs{grid-template-columns:1fr}
 .greet-img img{aspect-ratio:4/3}
 .works-top{padding:24px 16px}
 .wt-hex{position:relative;left:auto;top:auto;transform:none;margin:-60px auto 0;width:100%;max-width:420px;clip-path:none;aspect-ratio:auto;padding:32px 24px}
 .intro-dia{width:34%;right:-2%}
 .hero{grid-template-columns:1fr;grid-template-rows:auto auto;min-height:0;max-height:none}
 .hero-vis{grid-row:1;grid-column:1;height:clamp(340px,108vw,620px)}
 .hero-slides{clip-path:polygon(0 0,100% 0,100% 86%,0 100%);animation:none}
 .hero-txt{grid-row:2;padding:40px 24px 64px}
    .hero-ctl{bottom:16%;right:auto;left:20px}
 .hs figcaption{top:18px;right:18px}
 .hero-v,.hero-scroll{display:none}
 .hero-grid{-webkit-mask-image:none;mask-image:none;top:auto;height:60%}
 .hero-70{bottom:auto;top:40%;font-size:58vw}
}
@media (max-width:600px){
 body{font-size:15px}
 .in{padding:0 16px}
 .hd{padding-left:16px}.hd-logo span{font-size:14px}
 .sec{padding:64px 0}
   .wlist{grid-template-columns:1fr 1fr;gap:20px 12px}.wcard b{font-size:14px}
 .tbl>div,.tbl-s>div{grid-template-columns:1fr}.tbl dt{padding:12px 16px 4px;background:none}.tbl dd{padding:0 16px 14px}
 .hist li{grid-template-columns:1fr;gap:4px;padding-left:24px}
 .btn{width:100%;min-height:50px}
 .btns{flex-direction:column}
 .hero-btns{grid-template-columns:1fr;max-width:none}
 .cta-row{flex-direction:column}.cta-tel{align-items:center;text-align:center}
 .news-list a{flex-direction:column;gap:2px}
 .ft-nav ul{grid-template-columns:1fr 1fr}
 .ct-card,.apply,.band-box{padding:28px 20px}
 .sdgs>li{padding:28px 22px}
 .crumb{padding:12px 16px}
}

/* ---- スマホ強化（v14） ---- */
.cta h2 .nb,.tag-h .nb{white-space:nowrap}
.cta-tel b{white-space:nowrap}
.hd.sc{box-shadow:0 4px 18px rgba(0,0,0,.06)}
.btn:active{transform:translateY(1px)}
@media (max-width:900px){
       .wd-pn a{padding:12px 0}
}
@media (max-width:600px){
 .sh{margin-bottom:32px}
 .sh-en{font-size:clamp(30px,9.6vw,44px)}
 .ph-en{font-size:clamp(36px,11vw,56px)}
 .tag-h span{font-size:min(5vw,24px);padding:6px 12px}
 .biz-body b{font-size:min(5.4vw,22px)}
 .biz-body{padding:22px 20px}
 .cta{padding:72px 0 64px}
 .cta::after{width:150px;height:150px;right:-75px;top:-75px}
 .cta h2{font-size:18px}
 .cta-tel b{font-size:clamp(21px,6.2vw,24px)}
 .bz-tabs{grid-template-columns:1fr 1fr;gap:8px;margin-top:28px}
 .bz-tabs a{min-height:52px;font-size:14px}
 .bz-tabs a:last-child:nth-child(odd){grid-column:1/-1}
 .cform input:not([type=checkbox]),.cform select,.cform textarea{font-size:16px}
 .ft-nav a{padding:10px 0}
 .ft address a{display:inline-block;padding:4px 0}
 .lead{font-size:15px;margin-bottom:36px}
 .feat-num{font-size:64px}
 .bz-n{font-size:56px}
 .hist-y{font-size:19px}
 .apply h2{font-size:22px}
 .wd-gal{gap:8px}
 .act{gap:10px}
 .news-list a{padding:18px 6px}
 .intro{padding:72px 0}
 .band{padding:90px 0}
 .duo{gap:28px}
}

@media (max-width:1599px){.hero-scroll{display:none}}

/* ---- オープニング（ロゴアニメーション・初回のみ） ---- */
.op{display:none}
html.op-run{overflow:hidden}
html.op-run .op,html.op-leaving .op{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fff;cursor:pointer}
.op-lg{width:min(168px,36vw)}
.op .lg-v{clip-path:inset(100% 0 0 0);animation:opv 1s cubic-bezier(.7,0,.2,1) .25s forwards}
.op .lg-o{transform-origin:50% 18%;opacity:0;animation:opo .9s cubic-bezier(.25,1.35,.45,1) 1.05s forwards}
.op-name{margin:30px 0 0;font-size:clamp(17px,2vw,21px);font-weight:900;letter-spacing:.28em;display:flex}
.op-name span{opacity:0;transform:translateY(10px);animation:opt .6s var(--ease) forwards;animation-delay:calc(1.55s + var(--i) * .05s)}
.op-en{display:flex;align-items:center;gap:12px;margin:10px 0 0;font-family:var(--en);font-size:11px;letter-spacing:.3em;color:var(--sub);opacity:0;animation:opt .8s var(--ease) 2s forwards}
.op-en i{width:22px;height:1px;background:var(--or)}
.op-bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:transparent}
.op-bar i{display:block;height:100%;background:var(--or);transform:scaleX(0);transform-origin:left;animation:opb 2.6s cubic-bezier(.4,0,.2,1) forwards}
.op.out{animation:opx .9s cubic-bezier(.7,0,.2,1) forwards}
.op.out>*{transition:opacity .3s;opacity:0}
@keyframes opv{to{clip-path:inset(0)}}
@keyframes opo{0%{opacity:0;transform:translateY(-60%) rotate(-135deg)}35%{opacity:1}100%{opacity:1;transform:none}}
@keyframes opt{to{opacity:1;transform:none}}
@keyframes opb{to{transform:scaleX(1)}}
@keyframes opx{to{clip-path:inset(0 0 100% 0)}}
/* オープニング中はヒーローの入場アニメを止めておく */
html.op-run .hero *,html.op-run .hero{animation-play-state:paused!important}

/* フッター: 施工実績の全件リンク（クロール導線・2026-10-17） */
.ft-works { margin-top: 28px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.14); }
.ft-works .ft-h { margin: 0 0 10px; font-size: 12px; letter-spacing: .14em; opacity: .75; }
.ft-works ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 18px; }
.ft-works li a { font-size: 12.5px; opacity: .85; text-decoration: none; }
.ft-works li a:hover { opacity: 1; text-decoration: underline; }
@media (max-width: 760px) { .ft-works ul { gap: 8px 14px; } .ft-works li a { font-size: 12px; } }
