/* ============================================================
   公開サイト スタイル
   アクセントカラーは index.php 側で --accent を上書きします
   ============================================================ */
:root{
  --accent:#4f46e5;
  --ink:#1a1a1a;
  --ink-soft:#5b5b66;
  --line:#e7e7ec;
  --bg:#ffffff;
  --bg-soft:#f7f7fa;
  --bg-dark:#15151c;
  --radius:16px;
  --maxw:1120px;
  --shadow:0 1px 2px rgba(20,20,40,.04),0 8px 24px -12px rgba(20,20,40,.12);
  --shadow-lg:0 1px 2px rgba(20,20,40,.04),0 18px 40px -16px rgba(20,20,40,.18);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:80px}
body{
  font-family:"Noto Sans JP","Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:var(--ink);background:var(--bg);line-height:1.75;
  -webkit-font-smoothing:antialiased;letter-spacing:.01em;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
.container{max-width:var(--maxw);margin:0 auto;padding:0 24px}

/* --- ボタン --- */
.btn{
  position:relative;overflow:hidden;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:14px 28px;border-radius:999px;font-weight:700;font-size:.95rem;
  transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease;cursor:pointer;border:none;
}
.btn-primary{background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 62%,#000));
  color:#fff;box-shadow:0 10px 24px -10px var(--accent)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 16px 32px -10px var(--accent)}
.btn-primary::after{content:"";position:absolute;top:0;left:-120%;width:55%;height:100%;
  background:linear-gradient(120deg,transparent,rgba(255,255,255,.4),transparent);transform:skewX(-20deg);
  transition:left .6s ease}
.btn-primary:hover::after{left:140%}
.btn-ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line)}
.btn-ghost:hover{background:var(--bg-soft);transform:translateY(-2px)}
.btn-light{background:#fff;color:var(--ink)}
.btn-light:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}

/* --- ヘッダー --- */
.site-header{
  position:sticky;top:0;z-index:50;background:rgba(255,255,255,.72);
  backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);
  border-bottom:1px solid transparent;transition:background .3s,border-color .3s,box-shadow .3s;
}
.site-header.scrolled{background:rgba(255,255,255,.9);border-bottom-color:var(--line);
  box-shadow:0 6px 24px -16px rgba(20,20,40,.4)}
.header-inner{display:flex;align-items:center;justify-content:space-between;height:74px;transition:height .3s}
.site-header.scrolled .header-inner{height:62px}
.brand{font-weight:700;font-size:1.2rem;letter-spacing:-.02em}
.site-nav{display:flex;gap:30px}
.site-nav a{position:relative;font-size:.92rem;font-weight:500;color:var(--ink-soft);transition:color .2s;padding:4px 0}
.site-nav a::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;border-radius:2px;
  background:var(--accent);transition:width .25s ease}
.site-nav a:hover{color:var(--accent)}
.site-nav a:hover::after{width:100%}
.nav-toggle{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:8px}
.nav-toggle span{width:22px;height:2px;background:var(--ink);border-radius:2px;transition:.25s}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.mobile-nav{display:none;flex-direction:column;border-bottom:1px solid var(--line);background:#fff}
.mobile-nav.open{display:flex}
.mobile-nav a{padding:16px 24px;border-top:1px solid var(--line);font-weight:500;color:var(--ink-soft)}

/* --- セクション共通 --- */
.section{padding:104px 0}
.section-head{max-width:680px;margin:0 auto 56px;text-align:center}
.section-title{font-size:clamp(1.6rem,3.6vw,2.3rem);font-weight:700;letter-spacing:-.02em;line-height:1.35}
.section-subtitle{margin-top:14px;color:var(--ink-soft);font-size:1.02rem}

/* --- ヒーロー --- */
.hero{
  position:relative;padding:120px 0 110px;text-align:center;overflow:hidden;
  background:
    radial-gradient(60% 70% at 50% -10%, color-mix(in srgb, var(--accent) 14%, transparent), transparent 70%),
    linear-gradient(180deg,var(--bg-soft),var(--bg));
}
.hero-inner{display:flex;flex-direction:column;align-items:center;position:relative;z-index:1}
/* 背景画像なしのヒーローに、ゆっくり動く色のにじみを追加 */
.hero:not(.has-bg)::before,.hero:not(.has-bg)::after{content:"";position:absolute;border-radius:50%;
  filter:blur(70px);opacity:.55;z-index:0;pointer-events:none}
.hero:not(.has-bg)::before{width:400px;height:400px;top:-130px;left:-90px;
  background:color-mix(in srgb,var(--accent) 42%,transparent);animation:floatA 16s ease-in-out infinite}
.hero:not(.has-bg)::after{width:340px;height:340px;bottom:-140px;right:-70px;
  background:color-mix(in srgb,var(--accent) 24%,#22d3ee);animation:floatB 20s ease-in-out infinite}
@keyframes floatA{0%,100%{transform:translate(0,0)}50%{transform:translate(46px,34px)}}
@keyframes floatB{0%,100%{transform:translate(0,0)}50%{transform:translate(-34px,-26px)}}
@media (prefers-reduced-motion:reduce){.hero::before,.hero::after{animation:none}}
.hero-badge{
  display:inline-flex;align-items:center;gap:8px;padding:7px 16px;border-radius:999px;
  background:#fff;box-shadow:inset 0 0 0 1px var(--line);font-size:.82rem;font-weight:700;
  color:var(--accent);letter-spacing:.04em;margin-bottom:28px;
}
.hero-badge::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent)}
.hero-title{font-size:clamp(2rem,5.6vw,3.4rem);font-weight:700;line-height:1.28;letter-spacing:-.03em;max-width:18em}
.hero-subtitle{margin-top:24px;max-width:34em;color:var(--ink-soft);font-size:1.08rem}
.hero-actions{margin-top:40px;display:flex;gap:14px;flex-wrap:wrap;justify-content:center}

/* --- 特徴 --- */
.features{background:var(--bg)}
.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.feature-item{
  background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);
  padding:36px 30px;text-align:center;transition:transform .25s,box-shadow .25s,border-color .25s;
}
.feature-item:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:color-mix(in srgb,var(--accent) 35%,transparent)}
.feature-icon{
  width:54px;height:54px;margin:0 auto 20px;display:flex;align-items:center;justify-content:center;
  border-radius:16px;font-size:1.5rem;color:var(--accent);
  background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 22%,#fff),color-mix(in srgb,var(--accent) 7%,#fff));
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 14%,transparent);transition:transform .25s;
}
.feature-item:hover .feature-icon{transform:scale(1.08) rotate(-3deg)}
.feature-item h3{font-size:1.12rem;margin-bottom:10px}
.feature-item p{color:var(--ink-soft);font-size:.96rem}

/* --- サービス --- */
.services{background:var(--bg-soft)}
.service-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.service-card{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:30px 26px;
  transition:transform .25s,box-shadow .25s;display:flex;flex-direction:column;
}
.service-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:color-mix(in srgb,var(--accent) 35%,transparent)}
.service-icon{
  width:46px;height:46px;display:flex;align-items:center;justify-content:center;border-radius:13px;
  font-size:1.3rem;color:var(--accent);margin-bottom:18px;transition:transform .25s;
  background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 22%,#fff),color-mix(in srgb,var(--accent) 7%,#fff));
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 14%,transparent);
}
.service-card:hover .service-icon{transform:scale(1.08) rotate(-3deg)}
.service-card h3{font-size:1.08rem;margin-bottom:8px}
.service-card>p{color:var(--ink-soft);font-size:.92rem;margin-bottom:14px}
.service-points{list-style:none;margin-top:auto;display:flex;flex-direction:column;gap:8px}
.service-points li{position:relative;padding-left:20px;font-size:.86rem;color:var(--ink-soft)}
.service-points li::before{content:"";position:absolute;left:2px;top:.62em;width:7px;height:7px;border-radius:50%;background:var(--accent);opacity:.5}

/* --- ステップ --- */
.steps{background:var(--bg)}
.step-list{list-style:none;max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:8px;counter-reset:s}
.step-item{display:flex;gap:22px;align-items:flex-start;padding:24px;border-radius:var(--radius);transition:background .2s}
.step-item:hover{background:var(--bg-soft)}
.step-num{
  flex:none;width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-weight:700;color:#fff;background:var(--accent);font-size:1rem;
}
.step-body h3{font-size:1.08rem;margin-bottom:4px}
.step-body p{color:var(--ink-soft);font-size:.96rem}

/* --- 自己紹介 --- */
.about{background:var(--bg-soft)}
.about-inner{display:grid;grid-template-columns:1fr 1.4fr;gap:48px;align-items:center;max-width:920px;margin:0 auto}
.about-inner:has(.about-media) .about-text{grid-column:auto}
.about:not(:has(.about-media)) .about-inner{grid-template-columns:1fr;max-width:680px;text-align:center}
.about-media img{border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;object-fit:cover}
.about-text .section-title{margin-bottom:18px}
.about-text p{color:var(--ink-soft);margin-bottom:14px}

/* --- CTA --- */
.cta{background:var(--bg-dark);color:#fff}
.cta-inner{text-align:center;max-width:640px;margin:0 auto}
.cta-inner h2{font-size:clamp(1.5rem,3.4vw,2.1rem);font-weight:700;letter-spacing:-.02em;margin-bottom:16px}
.cta-inner p{color:rgba(255,255,255,.72);margin-bottom:32px}

/* --- お問い合わせ --- */
.contact{background:var(--bg)}
.contact-inner{text-align:center;max-width:560px;margin:0 auto}
.contact-inner .section-subtitle{margin-bottom:32px}

/* --- 自由テキスト --- */
.richtext-inner{max-width:720px;margin:0 auto}
.richtext-inner .section-title{margin-bottom:18px}
.richtext-inner p{color:var(--ink-soft);margin-bottom:14px}

/* --- ロゴ画像 --- */
.brand-logo{height:34px;width:auto;display:block}

/* --- 背景画像・スライドショー --- */
.has-bg{position:relative;background:transparent!important;overflow:hidden}
.section.has-bg,.hero.has-bg{background:transparent!important}
.bg-slides,.bg-overlay{position:absolute;inset:0;z-index:0}
.bg-slide{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity 1.1s ease}
.bg-slide.is-active{opacity:1}
.bg-overlay{z-index:1}
.has-bg>.container,.has-bg>.hero-inner{position:relative;z-index:2}
/* 暗い背景の上：明るい文字 */
.text-light .section-title,.text-light .hero-title,.text-light .cta-inner h2,
.text-light .about-text .section-title,.text-light .step-body h3,
.text-light .richtext-inner p,.text-light .about-text p,
.text-light .contactform-inner .section-title{color:#fff}
.text-light .section-subtitle,.text-light .hero-subtitle,.text-light .step-body p{color:rgba(255,255,255,.88)}
.text-light .hero-badge{background:rgba(255,255,255,.16);color:#fff;box-shadow:none}
.text-light .step-item:hover{background:rgba(255,255,255,.08)}

/* --- 実績 --- */
.works{background:var(--bg-soft)}
.works-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.work-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  transition:transform .25s,box-shadow .25s;display:flex;flex-direction:column;color:inherit}
.work-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
.work-thumb{aspect-ratio:16/10;background-size:cover;background-position:center;background-color:var(--bg-soft)}
.work-thumb-empty{background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 18%,#fff),var(--bg-soft))}
.work-body{padding:20px 22px}
.work-body h3{font-size:1.05rem;margin-bottom:6px}
.work-body p{color:var(--ink-soft);font-size:.9rem}

/* --- お問い合わせフォーム --- */
.contactform{background:var(--bg)}
.contactform-inner{max-width:640px;margin:0 auto;text-align:center}
.contactform-inner .section-subtitle{margin-bottom:32px}
.contact-form{text-align:left;display:flex;flex-direction:column;gap:18px;background:#fff;
  border:1px solid var(--line);border-radius:var(--radius);padding:28px;box-shadow:var(--shadow)}
.contact-form .form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.contact-form label{display:flex;flex-direction:column;gap:7px;font-size:.86rem;font-weight:700;color:var(--ink)}
.contact-form input,.contact-form textarea{padding:12px 14px;border:1.5px solid var(--line);border-radius:10px;
  font-family:inherit;font-size:.95rem;color:var(--ink);transition:border-color .15s,box-shadow .15s;width:100%}
.contact-form input:focus,.contact-form textarea:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)}
.contact-form textarea{resize:vertical;line-height:1.6}
.contact-form .req{font-size:.7rem;color:var(--accent);font-weight:700;margin-left:6px}
.contact-form .form-foot{text-align:center;margin-top:4px}
.contact-form .hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.contact-form .form-status{text-align:center;font-size:.9rem;font-weight:700;min-height:1.2em;margin:0}
.contact-form .form-status.ok{color:#16a34a}
.contact-form .form-status.err{color:#dc2626}
.contact-form.sent>label,.contact-form.sent .form-row,.contact-form.sent .form-foot{display:none}

/* --- フッター --- */
.site-footer{padding:40px 0;border-top:1px solid var(--line);text-align:center}
.site-footer p{color:var(--ink-soft);font-size:.86rem}

/* --- スクロールで出現するアニメーション --- */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}

/* セクション内の要素を少しずつ出す（段階表示） */
.section .section-head,
.section .feature-item,.section .service-card,.section .work-card,.section .step-item,
.section .about-media,.section .about-text,
.section .cta-inner,.section .contact-inner,.section .contactform-inner,.section .richtext-inner{
  opacity:0;transform:translateY(26px);
  transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1);
}
.section.in .section-head,
.section.in .feature-item,.section.in .service-card,.section.in .work-card,.section.in .step-item,
.section.in .about-media,.section.in .about-text,
.section.in .cta-inner,.section.in .contact-inner,.section.in .contactform-inner,.section.in .richtext-inner{
  opacity:1;transform:none;
}
/* グリッド/リストの2番目以降を少し遅らせる */
.section.in .feature-item:nth-child(2),.section.in .service-card:nth-child(2),
.section.in .work-card:nth-child(2),.section.in .step-item:nth-child(2){transition-delay:.08s}
.section.in .feature-item:nth-child(3),.section.in .service-card:nth-child(3),
.section.in .work-card:nth-child(3),.section.in .step-item:nth-child(3){transition-delay:.16s}
.section.in .service-card:nth-child(4),.section.in .step-item:nth-child(4){transition-delay:.24s}
.section.in .step-item:nth-child(5){transition-delay:.32s}
.section.in .about-text{transition-delay:.12s}

@media (prefers-reduced-motion:reduce){
  .reveal,.section [class]{opacity:1!important;transform:none!important;transition:none!important}
}

/* --- スクロール進捗バー --- */
.scroll-progress{position:fixed;top:0;left:0;height:3px;width:0;z-index:60;
  background:linear-gradient(90deg,var(--accent),color-mix(in srgb,var(--accent) 45%,#fff));
  box-shadow:0 0 10px color-mix(in srgb,var(--accent) 50%,transparent);transition:width .1s linear}

/* --- レスポンシブ --- */
@media (max-width:900px){
  .service-grid{grid-template-columns:repeat(2,1fr)}
  .works-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:768px){
  .section{padding:72px 0}
  .site-nav{display:none}
  .nav-toggle{display:flex}
  .feature-grid{grid-template-columns:1fr}
  .about-inner{grid-template-columns:1fr!important;text-align:center}
  .about-media{max-width:320px;margin:0 auto}
  .contact-form .form-row{grid-template-columns:1fr}
}
@media (max-width:520px){
  .service-grid{grid-template-columns:1fr}
  .works-grid{grid-template-columns:1fr}
  .hero-actions{flex-direction:column;width:100%}
  .hero-actions .btn{width:100%}
}
