*{box-sizing:border-box}
:root{
  --bg:#07110d;
  --bg2:#0f1f18;

  --card:rgba(255,255,255,.06);
  --line:rgba(255,255,255,.14);

  --text:#eaf5f0;
  --muted:rgba(234,245,240,.72);

  --brand:#25a880;
  --brand2:#1a7a62;

  --glow:rgba(107,255,207,.18);
  --shadow:0 18px 40px rgba(0,0,0,.35);
  --shadow2:0 12px 26px rgba(0,0,0,.28);
  --radius:18px;
}

html,body{height:100%}
body{
  margin:0;
  font-family:"Segoe UI","Yu Gothic","メイリオ",sans-serif;
  color:var(--text);
  background:
    radial-gradient(1200px 800px at 15% 10%, rgba(37,168,128,.18), transparent 55%),
    radial-gradient(900px 700px at 85% 0%, rgba(107,255,207,.10), transparent 60%),
    linear-gradient(180deg,var(--bg),var(--bg2));
  line-height:1.8;
  font-size:16px;
}

.container{width:92%;max-width:1120px;margin:0 auto}

a{color:inherit}
a:hover{opacity:.95}

/* header */
.site-header{
  position:sticky; top:0; z-index:50;
  background:rgba(7,17,13,.68);
  backdrop-filter: blur(12px);
  border-bottom:1px solid var(--line);
}
.header-inner{
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 0; gap:12px; flex-wrap:wrap;
}
.brand{
  display:flex; align-items:center; gap:10px;
  text-decoration:none;
}
.brand-logo{
  width:34px;height:34px; border-radius:12px;
  box-shadow:0 0 0 4px rgba(37,168,128,.14);
}
.brand-name{
  font-weight:900;
  letter-spacing:.4px;
  font-size:1.05rem;
}

/* nav */
.site-nav{display:flex; gap:10px; flex-wrap:wrap}
.site-nav a{
  text-decoration:none;
  padding:8px 12px;
  border-radius:999px;
  border:1px solid transparent;
  color:rgba(234,245,240,.92);
  transition:.18s ease;
}
.site-nav a:hover{
  border-color:var(--line);
  background:rgba(255,255,255,.06);
}
.site-nav .nav-cta{
  border-color: rgba(107,255,207,.35);
  background: rgba(107,255,207,.10);
}

/* buttons */
.btn{
  display:inline-block;
  padding:11px 18px;
  border-radius:999px;
  font-weight:900;
  text-decoration:none;
  border:1px solid transparent;
  transition:.22s ease;
  position:relative;
  overflow:hidden;
  letter-spacing:.02em;
}
.btn-primary{
  color:#06100c;
  background:linear-gradient(135deg,#6bffcf,var(--brand));
  box-shadow:0 14px 28px rgba(37,168,128,.18);
}
.btn-ghost{
  color:var(--text);
  background:rgba(255,255,255,.06);
  border-color:var(--line);
}
.btn:hover{transform:translateY(-2px)}
.btn::after{
  content:"";
  position:absolute; top:0; left:-90px;
  width:70px; height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);
  transform:skewX(-20deg);
  transition:.45s;
}
.btn:hover::after{left:120%}

/* hero media */
.hero-media{
  position:relative;
  min-height:560px;
  display:flex;
  align-items:center;
  overflow:hidden;
  border-bottom:1px solid rgba(255,255,255,.12);
}
.hero-video{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  filter:saturate(1.05) contrast(1.05);
}
.hero-overlay{
  position:absolute;
  inset:0;
  background:
    radial-gradient(900px 500px at 20% 20%, rgba(107,255,207,.14), transparent 60%),
    linear-gradient(90deg, rgba(7,17,13,.90), rgba(7,17,13,.55) 55%, rgba(7,17,13,.25));
}
.hero-media-inner{
  position:relative;
  z-index:2;
  padding:56px 0;
}
.kicker{
  margin:0 0 10px;
  font-weight:900;
  letter-spacing:.14em;
  text-transform:uppercase;
  font-size:.78rem;
  color:rgba(107,255,207,.92);
}
.hero-media h1{
  margin:0 0 12px;
  font-size:2.35rem;
  line-height:1.22;
  text-shadow:0 18px 40px rgba(0,0,0,.55);
}
.lead{
  margin:0;
  color:rgba(234,245,240,.78);
  font-size:1.05rem;
}

/* sections */
.band{padding:26px 0}
.section-head{margin-bottom:14px}
.section-head h2{
  margin:0 0 6px;
  font-size:1.55rem;
  letter-spacing:.3px;
}
.sub{margin:0;color:var(--muted)}

/* services */
.services-modern{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:12px;
}
.svc-item{
  position:relative;
  padding:18px 16px;
  border-radius:20px;
  border:1px solid var(--line);
  background:linear-gradient(135deg, rgba(255,255,255,.07), rgba(255,255,255,.03));
  box-shadow:0 16px 32px rgba(0,0,0,.28);
  transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
  overflow:hidden;
}
.svc-item::before{
  content:"";
  position:absolute; inset:-1px;
  background: radial-gradient(520px 260px at 20% 10%, var(--glow), transparent 60%);
  opacity:.55;
  pointer-events:none;
}
.svc-item:hover{
  transform:translateY(-4px);
  border-color: rgba(107,255,207,.35);
  box-shadow:
    0 20px 44px rgba(0,0,0,.36),
    0 0 0 3px rgba(107,255,207,.10);
}
.svc-top{display:flex; align-items:center; gap:12px}
.svc-num{
  width:54px;height:54px;
  border-radius:16px;
  display:flex; align-items:center; justify-content:center;
  font-weight:900;
  color:rgba(107,255,207,.95);
  background:rgba(107,255,207,.10);
  border:1px solid rgba(107,255,207,.18);
}
.svc-title{font-weight:900; letter-spacing:.2px}
.svc-desc{margin-top:8px; color:rgba(234,245,240,.74); font-size:.95rem}

/* footer */
.site-footer{
  margin-top:26px;
  border-top:1px solid var(--line);
  background:rgba(7,17,13,.70);
}
.footer-inner{
  display:flex; justify-content:space-between; gap:14px; flex-wrap:wrap;
  padding:18px 0;
}
.foot-right{display:flex; gap:14px; flex-wrap:wrap}
.foot-right a{color:var(--muted); text-decoration:none}
.foot-right a:hover{color:var(--text)}
.foot-bottom{
  padding:10px 0 18px;
  color:rgba(234,245,240,.55);
  font-size:.86rem;
}

/* ★ 工事進捗：うっすら自動で流れる（ループ） */
.marquee{
  position:relative;
  border:1px solid var(--line);
  border-radius:24px;
  background:
    radial-gradient(900px 500px at 10% 10%, rgba(107,255,207,.10), transparent 60%),
    linear-gradient(135deg, rgba(255,255,255,.06), rgba(255,255,255,.03));
  box-shadow:var(--shadow2);
  padding:14px;
  overflow:hidden;
}

/* 左右をフェード（うっすら感） */
.marquee::before,
.marquee::after{
  content:"";
  position:absolute;
  top:0; bottom:0;
  width:80px;
  z-index:2;
  pointer-events:none;
}
.marquee::before{
  left:0;
  background:linear-gradient(90deg, rgba(7,17,13,.95), rgba(7,17,13,0));
}
.marquee::after{
  right:0;
  background:linear-gradient(270deg, rgba(7,17,13,.95), rgba(7,17,13,0));
}

.marquee-track{
  display:flex;
  gap:12px;
  width:max-content;
  animation: marquee 26s linear infinite;
  will-change: transform;
  opacity:.92; /* “うっすら” */
}

/* マウス乗せると止まる（見たい時に便利） */
.marquee:hover .marquee-track{
  animation-play-state: paused;
}

.m-card{
  margin:0;
  width:320px;
  border-radius:18px;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.04);
  box-shadow:0 16px 34px rgba(0,0,0,.28);
}
.m-card img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  aspect-ratio: 16/10;
  filter:saturate(1.02) contrast(1.02);
  transform:scale(1.02);
}

/* 流れる距離：trackの半分まで（同じ6枚を2回並べている前提） */
@keyframes marquee{
  from{ transform: translateX(0); }
  to{ transform: translateX(-50%); }
}

/* responsive */
@media(max-width:860px){
  body{font-size:17px; line-height:1.9;}
  .hero-media{min-height:520px}
  .hero-overlay{background:linear-gradient(180deg, rgba(7,17,13,.90), rgba(7,17,13,.55));}
  .hero-media h1{font-size:1.85rem}
  .services-modern{grid-template-columns:1fr}
  .brand-logo{width:30px;height:30px}
  .m-card{width:260px}
  .marquee-track{animation-duration: 30s;} /* スマホは少しゆっくり */
}
@media(max-width:520px){
  body{font-size:17.5px}
  .hero-media h1{font-size:1.65rem}
  .m-card{width:220px}
}

/* 動きが苦手な人（端末設定）には自動スクロール停止 */
@media (prefers-reduced-motion: reduce){
  .marquee-track{animation:none}
}
