@charset "UTF-8";
/* ==========================================================================
   有限会社サトウ電設 — 共通スタイル
   トップページ(index.html)のスクロール演出用CSSは index.html 内に置く。
   このファイルは全ページ共通のトークン・部品・下層ページのレイアウト。
   ========================================================================== */

:root{
  --bg:#0a0d12;
  --bg2:#10151c;
  --panel:#141a23;
  --panel2:#1a2130;
  --ink:#f2f5f9;
  --sub:#a9b3c1;
  --mute:#78828f;
  --line:rgba(255,255,255,.12);
  --line2:rgba(255,255,255,.06);
  --amber:#ffaa2b;
  --amber-dim:rgba(255,170,43,.28);
  --sky:#5fd0ff;
  --ok:#3ddc84;
  --sans:"Inter","Helvetica Neue",Helvetica,Arial,"Hiragino Sans","Hiragino Kaku Gothic ProN","Noto Sans JP","Yu Gothic",sans-serif;
  --mono:"SF Mono",Menlo,Consolas,"Courier New",monospace;
  --maxw:1120px;
  --pad:clamp(20px,5vw,64px);
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  background:var(--bg);color:var(--ink);font-family:var(--sans);
  font-size:15px;line-height:1.85;overflow-x:hidden;
  -webkit-font-smoothing:antialiased;font-feature-settings:"palt";
}
img{max-width:100%;display:block}
a{color:inherit}
::selection{background:var(--amber-dim)}
:focus-visible{outline:2px solid var(--amber);outline-offset:3px}

/* ===== 部品: ボタン ===== */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-size:13px;font-weight:600;letter-spacing:.08em;text-decoration:none;
  padding:13px 24px;border-radius:999px;transition:.28s;cursor:pointer;
  border:1px solid transparent;font-family:inherit;white-space:nowrap;
}
.btn-primary{background:var(--amber);color:#1a1204}
.btn-primary:hover{background:#ffc266}
.btn-ghost{border-color:var(--line);color:var(--ink);background:rgba(255,255,255,.04)}
.btn-ghost:hover{border-color:var(--ink);background:rgba(255,255,255,.08)}
.btn-tel{background:var(--ink);color:#0a0d12}
.btn-tel:hover{background:#fff}
.btn-lg{padding:16px 34px;font-size:15px}
.btn-block{width:100%}

/* ===== ヘッダー(下層ページ) ===== */
.site-header{
  position:sticky;top:0;z-index:50;
  background:rgba(10,13,18,.9);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line2);
}
.site-header .bar{
  max-width:var(--maxw);margin:0 auto;padding:14px var(--pad);
  display:flex;align-items:center;justify-content:space-between;gap:20px;
}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;flex:0 0 auto}
.brand .mark{
  width:26px;height:26px;border-radius:7px;flex:0 0 auto;
  background:linear-gradient(145deg,var(--amber),#ff7a00);
  display:grid;place-items:center;color:#1a1204;font-weight:800;font-size:13px;
  box-shadow:0 0 18px rgba(255,170,43,.35);
}
.brand .name{font-weight:700;font-size:15px;letter-spacing:.06em;line-height:1.2}
.brand .name small{display:block;font-size:9px;letter-spacing:.28em;color:var(--mute);font-weight:500;margin-top:2px}
.gnav{display:flex;align-items:center;gap:22px}
.gnav a:not(.btn){font-size:13px;color:var(--sub);text-decoration:none;transition:color .25s;letter-spacing:.04em}
.gnav a:not(.btn):hover,.gnav a[aria-current="page"]{color:var(--ink)}
.gnav a[aria-current="page"]{border-bottom:1px solid var(--amber);padding-bottom:2px}
.navtoggle{display:none;background:none;border:1px solid var(--line);border-radius:9px;
  width:42px;height:38px;cursor:pointer;color:var(--ink);align-items:center;justify-content:center}
.navtoggle span{display:block;width:17px;height:9px;border-top:1.5px solid;border-bottom:1.5px solid}
@media (max-width:900px){
  .navtoggle{display:flex}
  .gnav{
    position:fixed;inset:57px 0 auto 0;flex-direction:column;align-items:stretch;gap:0;
    background:var(--bg2);border-bottom:1px solid var(--line);padding:8px var(--pad) 20px;
    max-height:calc(100svh - 57px);overflow:auto;
  }
  .gnav[hidden]{display:none}
  .gnav a:not(.btn){padding:14px 2px;border-bottom:1px solid var(--line2);font-size:15px}
  .gnav a[aria-current="page"]{border-bottom-color:var(--amber)}
  .gnav .btn{margin-top:14px}
}

/* ===== ページヘッド ===== */
.pagehead{position:relative;padding:clamp(56px,9vw,104px) var(--pad) clamp(38px,6vw,60px);
  border-bottom:1px solid var(--line2);overflow:hidden;background:var(--bg2)}
.pagehead::before{content:'';position:absolute;inset:0;z-index:0;
  background-size:cover;background-position:center;opacity:.22;filter:saturate(.8)}
.pagehead::after{content:'';position:absolute;inset:0;z-index:0;
  background:linear-gradient(to bottom,rgba(10,13,18,.55),rgba(10,13,18,.95))}
.pagehead.ph-work::before{background-image:url(../assets/still-work.jpg)}
.pagehead.ph-panel::before{background-image:url(../assets/still-panel.jpg)}
.pagehead.ph-dawn::before{background-image:url(../assets/still-dawn.jpg)}
.pagehead.ph-tower::before{background-image:url(../assets/still-tower.jpg)}
.pagehead.ph-engineer::before{background-image:url(../assets/still-engineer.jpg)}
.pagehead .inner{position:relative;z-index:1;max-width:var(--maxw);margin:0 auto}
.crumb{font-size:11px;letter-spacing:.1em;color:var(--mute);margin-bottom:18px}
.crumb a{text-decoration:none;color:var(--mute)}
.crumb a:hover{color:var(--sub)}
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.28em;color:var(--amber);
  display:flex;align-items:center;gap:12px;margin-bottom:14px}
.eyebrow::before{content:'';width:28px;height:1px;background:var(--amber);opacity:.7}
.pagehead h1{font-size:clamp(28px,4.6vw,46px);font-weight:700;letter-spacing:-.01em;line-height:1.25}
.pagehead p.lead{margin-top:16px;color:var(--sub);max-width:44em;font-size:clamp(14px,1.4vw,16px)}

/* ===== セクション ===== */
main{display:block}
.sect{padding:clamp(52px,7.5vw,92px) var(--pad)}
.sect.alt{background:var(--bg2)}
.sect > .inner{max-width:var(--maxw);margin:0 auto}
.sect h2{font-size:clamp(22px,3vw,34px);font-weight:700;letter-spacing:-.01em;line-height:1.35}
.sect h3{font-size:clamp(17px,2vw,21px);font-weight:700;line-height:1.5}
.sect p{color:var(--sub)}
.sect .sub{margin-top:14px;color:var(--sub);max-width:46em}
.hr{height:1px;background:var(--line2);border:0;margin:clamp(38px,5vw,56px) 0}

/* ===== グリッド ===== */
.grid{display:grid;gap:clamp(14px,2vw,22px);margin-top:clamp(26px,4vw,40px)}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
@media (max-width:860px){.g3,.g4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.g2,.g3,.g4{grid-template-columns:1fr}}

/* ===== カード ===== */
.card{background:var(--panel);border:1px solid var(--line2);border-radius:16px;
  padding:clamp(20px,2.6vw,28px);transition:.3s}
.card:hover{border-color:var(--line);transform:translateY(-2px)}
.card .no{font-family:var(--mono);font-size:11px;letter-spacing:.24em;color:var(--amber);display:block;margin-bottom:12px}
.card h3{margin-bottom:10px}
.card p{font-size:14px;line-height:1.85}
.card ul{list-style:none;margin-top:14px;font-size:13.5px;color:var(--sub)}
.card ul li{padding-left:18px;position:relative;line-height:1.9}
.card ul li::before{content:'';position:absolute;left:2px;top:.82em;width:6px;height:6px;
  border-radius:50%;background:var(--amber);opacity:.8}
.card.hot{border-color:var(--amber-dim);background:linear-gradient(180deg,rgba(255,170,43,.07),var(--panel))}

/* ===== 定義リスト(会社概要など) ===== */
.dl{border-top:1px solid var(--line2);margin-top:clamp(26px,4vw,36px)}
.dl > div{display:grid;grid-template-columns:190px 1fr;gap:20px;
  padding:17px 4px;border-bottom:1px solid var(--line2)}
.dl dt{font-size:13px;color:var(--mute);letter-spacing:.06em;font-weight:600}
.dl dd{font-size:14.5px;color:var(--ink)}
.dl dd small{display:block;color:var(--mute);font-size:12px;margin-top:4px}
@media (max-width:640px){.dl > div{grid-template-columns:1fr;gap:5px;padding:15px 2px}}

/* ===== 実績・工程 ===== */
.steps{counter-reset:st;display:grid;gap:14px;margin-top:clamp(26px,4vw,36px)}
.steps li{list-style:none;display:grid;grid-template-columns:52px 1fr;gap:18px;align-items:start;
  background:var(--panel);border:1px solid var(--line2);border-radius:14px;padding:18px 20px}
.steps li::before{counter-increment:st;content:counter(st,decimal-leading-zero);
  font-family:var(--mono);font-size:15px;color:var(--amber);letter-spacing:.06em;padding-top:2px}
.steps b{display:block;font-size:15.5px;margin-bottom:5px}
.steps span{font-size:13.5px;color:var(--sub);line-height:1.85}

.works{display:grid;gap:clamp(14px,2vw,20px);grid-template-columns:repeat(3,1fr);margin-top:clamp(26px,4vw,40px)}
@media (max-width:860px){.works{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.works{grid-template-columns:1fr}}
.work{background:var(--panel);border:1px solid var(--line2);border-radius:16px;overflow:hidden;transition:.3s}
.work:hover{border-color:var(--line);transform:translateY(-2px)}
.work .ph{aspect-ratio:16/10;background:#0d1118 center/cover no-repeat;position:relative}
.work .ph::after{content:'';position:absolute;inset:0;background:linear-gradient(to top,rgba(10,13,18,.65),transparent 60%)}
.work .tag{position:absolute;left:12px;top:12px;z-index:1;font-family:var(--mono);font-size:10px;
  letter-spacing:.18em;padding:5px 10px;border-radius:999px;background:rgba(10,13,18,.75);
  border:1px solid var(--line);color:var(--amber)}
.work .body{padding:18px 20px 22px}
.work h3{font-size:16px;margin-bottom:8px}
.work p{font-size:13.5px}
.work .meta{margin-top:14px;padding-top:12px;border-top:1px solid var(--line2);
  font-size:12px;color:var(--mute);display:flex;flex-wrap:wrap;gap:6px 16px}

/* ===== 数値 ===== */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,2vw,24px);margin-top:clamp(26px,4vw,40px)}
@media (max-width:700px){.stats{grid-template-columns:repeat(2,1fr)}}
.stat b{display:block;font-size:clamp(28px,4vw,42px);font-weight:700;letter-spacing:-.02em;
  line-height:1.1;font-variant-numeric:tabular-nums}
.stat b small{font-size:.42em;font-weight:600;margin-left:3px;color:var(--sub)}
.stat span{display:block;margin-top:8px;font-size:12px;letter-spacing:.08em;color:var(--mute)}

/* ===== FAQ ===== */
.faq{margin-top:clamp(26px,4vw,36px);border-top:1px solid var(--line2)}
.faq details{border-bottom:1px solid var(--line2)}
.faq summary{cursor:pointer;list-style:none;padding:18px 40px 18px 34px;position:relative;
  font-size:15px;font-weight:600;line-height:1.7}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:'Q';position:absolute;left:2px;top:18px;
  font-family:var(--mono);color:var(--amber);font-size:13px}
.faq summary::after{content:'';position:absolute;right:10px;top:26px;width:9px;height:9px;
  border-right:1.5px solid var(--sub);border-bottom:1.5px solid var(--sub);
  transform:rotate(45deg);transition:.25s}
.faq details[open] summary::after{transform:rotate(-135deg)}
.faq .a{padding:0 10px 20px 34px;font-size:14px;color:var(--sub);position:relative}
.faq .a::before{content:'A';position:absolute;left:2px;top:0;font-family:var(--mono);color:var(--sky);font-size:13px}

/* ===== フォーム ===== */
.form{margin-top:clamp(26px,4vw,36px);display:grid;gap:20px;max-width:760px}
.field label{display:block;font-size:13px;font-weight:600;letter-spacing:.04em;margin-bottom:8px}
.field label .req{color:var(--amber);font-size:11px;margin-left:8px;letter-spacing:.1em}
.field label .opt{color:var(--mute);font-size:11px;margin-left:8px;letter-spacing:.1em}
.field input,.field select,.field textarea{
  width:100%;background:var(--panel);border:1px solid var(--line);border-radius:11px;
  padding:13px 15px;color:var(--ink);font-family:inherit;font-size:15px;transition:.25s}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--amber);outline:none}
.field textarea{min-height:150px;resize:vertical;line-height:1.8}
.field .hint{font-size:12px;color:var(--mute);margin-top:7px}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media (max-width:600px){.field-row{grid-template-columns:1fr}}
.checkline{display:flex;gap:11px;align-items:flex-start;font-size:13.5px;color:var(--sub)}
.checkline input{width:auto;margin-top:5px;accent-color:var(--amber)}

/* ===== 注意書き / 補足 ===== */
.note{margin-top:22px;font-size:12px;line-height:1.9;color:var(--mute)}
.sample-note{margin-top:26px;padding:14px 18px;border:1px dashed var(--line);border-radius:12px;
  font-size:12px;line-height:1.85;color:var(--mute);background:rgba(255,255,255,.02)}
.sample-note b{color:var(--sub)}
.tagrow{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.tagrow span{font-size:12px;letter-spacing:.06em;padding:7px 14px;border-radius:999px;
  border:1px solid var(--line);color:var(--sub)}

/* ===== CTA 帯 ===== */
.ctaband{position:relative;padding:clamp(48px,7vw,80px) var(--pad);text-align:center;overflow:hidden;
  border-top:1px solid var(--line2)}
.ctaband::before{content:'';position:absolute;inset:0;background:url(../assets/still-dawn.jpg) center/cover;opacity:.3}
.ctaband::after{content:'';position:absolute;inset:0;background:linear-gradient(to bottom,rgba(10,13,18,.82),rgba(10,13,18,.94))}
.ctaband .inner{position:relative;z-index:1;max-width:760px;margin:0 auto}
.ctaband h2{font-size:clamp(22px,3.2vw,34px);font-weight:700;line-height:1.4}
.ctaband p{margin-top:14px;color:var(--sub);font-size:14.5px}
.ctaband .row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin-top:30px}
.ctaband .tel{margin-top:26px;font-size:13px;color:var(--mute);letter-spacing:.04em}
.ctaband .tel b{display:block;font-size:clamp(26px,4vw,36px);color:var(--ink);letter-spacing:.02em;
  font-variant-numeric:tabular-nums;line-height:1.3;margin-bottom:4px}
.ctaband .tel a{text-decoration:none}

/* ===== フッター ===== */
.site-footer{background:#070a0e;border-top:1px solid var(--line2);
  padding:clamp(44px,6vw,64px) var(--pad) 0;color:var(--mute);font-size:13px}
.site-footer .cols{max-width:var(--maxw);margin:0 auto;display:grid;
  grid-template-columns:1.5fr 1fr 1fr 1fr;gap:clamp(22px,3vw,40px)}
@media (max-width:860px){.site-footer .cols{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.site-footer .cols{grid-template-columns:1fr}}
.site-footer h4{color:var(--ink);font-size:12px;letter-spacing:.18em;margin-bottom:14px;font-weight:700}
.site-footer ul{list-style:none}
.site-footer li{margin-bottom:9px}
.site-footer a{text-decoration:none;color:var(--sub);transition:color .25s}
.site-footer a:hover{color:var(--ink)}
.site-footer address{font-style:normal;line-height:2;color:var(--sub);font-size:13px}
.site-footer .legal{max-width:var(--maxw);margin:clamp(34px,5vw,48px) auto 0;
  padding:20px 0 34px;border-top:1px solid var(--line2);font-size:11.5px;line-height:1.9}
.site-footer .legal a{color:var(--mute)}

/* ===== スクロールリビール(下層ページ) ===== */
.rv{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s cubic-bezier(.22,1,.36,1)}
.rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .rv{opacity:1;transform:none;transition:none}
}

/* ===== モバイル固定CTA(下層ページ) ===== */
.mcta{position:fixed;left:0;right:0;bottom:0;z-index:40;display:none;gap:10px;
  padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  background:rgba(10,13,18,.95);backdrop-filter:blur(12px);border-top:1px solid var(--line)}
.mcta .btn{flex:1 1 0;padding:13px 10px;font-size:13px}
@media (max-width:900px){
  .mcta{display:flex}
  body{padding-bottom:74px}
}
