/* ===== Base ===== */
:root{
    --bg:#000;
    --ink:#fff;
    --muted:#c7d0c2;
    --line:#22272a;
    --panel:#111315;
    --panel-2:#0e1011;
    --accent:#c9ff4a;
    --accent-2:#87ffa6;
}

*{ box-sizing:border-box; }
html,body{ margin:0; }
body{
    font-family: "Helvetica Neue", Arial, system-ui, -apple-system, Segoe UI, Roboto, "Noto Sans JP", sans-serif;
    background:var(--bg); color:var(--ink); line-height:1.65;
}

/* ===== Header / Nav ===== */
header{ background:#000; border-bottom:1px solid #333; }
.nav{
    max-width:1200px; margin:0 auto;
    padding:16px clamp(16px,4vw,40px);
    display:flex; align-items:center; justify-content:space-between;
}
.logo img{ height:40px; display:block; }

/* ★ここを修正：テキストを常に中央寄せに */
.cta-button{
    background:var(--accent); color:#000;
    padding:12px 18px; border-radius:12px; font-weight:700;
    text-decoration:none;
    display:inline-flex;            /* ← 変更 */
    align-items:center;             /* ← 追加 */
    justify-content:center;         /* ← 追加 */
    text-align:center;              /* ← 追加 */
    line-height:1.2;                /* 文字の縦位置がブレないように */
    min-height:44px;                /* 視認性の良い高さを確保（任意） */
    transition:transform .12s ease, box-shadow .12s ease, background .2s;
}
.cta-button:hover{ background:#a8ff2a; box-shadow:0 8px 24px rgba(201,255,74,.15); }
.cta-button:active{ transform:translateY(1px); }

/* ===== Hero（動画） ===== */
.hero{
    display:grid; grid-template-columns:1.1fr .9fr;
    align-items:center; gap:clamp(16px,3vw,40px);
    max-width:1200px; margin:0 auto;
    padding: clamp(24px, 4vw, 56px) clamp(16px, 4vw, 40px);
}
.hero-media{
    position:relative; border-radius:16px; overflow:hidden;
    background:var(--panel-2);
    box-shadow:0 8px 24px rgba(0,0,0,.25);
}
.hero-video{ width:100%; height:100%; display:block; aspect-ratio:16/9; object-fit:cover; }

.hero-content h1{
    margin:0 0 12px; line-height:1.25; letter-spacing:.02em;
    font-size: clamp(24px, 3.6vw, 44px);
}
.hero-content p{
    color:rgba(255,255,255,.88);
    margin:0 0 20px; line-height:1.8;
    font-size: clamp(14px, 2.1vw, 18px);
}

@media (max-width:960px){
    .hero{ grid-template-columns:1fr; gap:18px; padding:20px clamp(14px,4vw,24px); }
    .hero-media{ order:1; } .hero-content{ order:2; }
    .hero-video{ aspect-ratio:16/9; }

    /* ★幅100%でも中央寄せが維持されるように */
    .cta-button{
        width:100%;
        padding:16px;
        border-radius:14px;
        display:flex;               /* 念のため上書き */
        align-items:center;
        justify-content:center;
        text-align:center;
    }
}

/* ===== Sections / Common ===== */
.section{ background:#0b0c0d; color:#e9f0e6; border-top:1px solid var(--line); }
.section .container{
    max-width:1200px; margin:0 auto;
    padding: clamp(32px, 6vw, 72px) clamp(16px, 4vw, 40px);
}
.section h2{
    font-size: clamp(22px, 4.5vw, 34px);
    margin:0 0 14px; color:var(--accent); letter-spacing:.02em;
}
.section p.lead{ color:var(--muted); margin:0 0 16px; }

/* Grids */
.grid-2, .grid-3, .grid-4{ display:grid; gap:clamp(14px,2vw,24px); }
.grid-2{ grid-template-columns:repeat(2,1fr); }
.grid-3{ grid-template-columns:repeat(3,1fr); }
.grid-4{ grid-template-columns:repeat(4,1fr); }
@media (max-width:1024px){ .grid-4{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:860px){ .grid-3{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){ .grid-2,.grid-3,.grid-4{ grid-template-columns:1fr; } }

/* Card */
.card{
    background: linear-gradient(180deg, rgba(255,255,255,.03), transparent 40%), var(--panel);
    border:1px solid var(--line); border-radius:16px; padding:16px;
    box-shadow:0 10px 26px rgba(0,0,0,.25);
}
.card h3{ margin:6px 0 8px; font-size: clamp(16px, 2.2vw, 20px); }
.card p{ margin:0; color:var(--muted); }

/* Media frame */
.media-frame{
    background:var(--panel-2); border:1px solid var(--line); border-radius:14px;
    overflow:hidden; box-shadow:0 8px 24px rgba(0,0,0,.25);
}
.media-frame img{ width:100%; height:auto; display:block; object-fit:contain; }

/* Feature grid (旧) */
.features .feature-grid{
    display:grid; grid-template-columns:repeat(auto-fit, minmax(280px,1fr));
    gap:40px;
}
.features .feature-item{ border-radius:12px; }

/* Steps */
.steps{ counter-reset:step; display:grid; gap:12px; padding-left:0; }
.steps li{
    list-style:none; counter-increment:step; position:relative;
    padding-left:44px; min-height:32px;
}
.steps li::before{
    content:counter(step);
    position:absolute; left:0; top:0; width:32px; height:32px;
    border-radius:50%; display:grid; place-items:center;
    background:var(--accent); color:#0b0c0d; font-weight:700;
}

/* ===== Services ===== */
.services{ background:#0b0c0d; color:#e9f0e6; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.services .container{ max-width:1200px; margin:0 auto; padding: clamp(40px,6vw,80px) clamp(16px,4vw,40px); }
.sec-title{
    font-size: clamp(22px,4.5vw,36px); margin:0 0 20px; color:var(--accent);
    display:inline-block; letter-spacing:.02em;
}
.sec-title::after{
    content:""; display:block; width:64px; height:2px;
    background:linear-gradient(90deg,var(--accent),transparent); margin-top:10px;
}
.services-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap: clamp(12px,2vw,20px); }
@media (max-width:1080px){ .services-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){ .services-grid{ grid-template-columns:1fr; } }

.service-card{
    background: linear-gradient(180deg, rgba(255,255,255,.02), transparent 40%) , var(--panel);
    border: 1px solid var(--line); border-radius:16px; padding:16px;
    box-shadow:0 10px 30px rgba(0,0,0,.25);
    display:flex; flex-direction:column; gap:12px;
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.service-card:hover{ transform:translateY(-2px); border-color:rgba(201,255,74,.35); box-shadow:0 16px 40px rgba(201,255,74,.08); }

.service-card picture, .service-card img{
    width:100%; display:block; aspect-ratio:16/9; object-fit:contain;
    background:#0e1011; border-radius:12px;
}
.service-title{ margin:6px 0 0; font-size: clamp(16px,2.4vw,20px); line-height:1.3; }
.service-title .sub{ display:block; color:var(--muted); font-weight:500; margin-top:2px; font-size:.92em; }
.service-points{ margin:2px 0 0 1em; padding:0; display:grid; gap:6px; color:var(--muted); }
.service-points li{ list-style:disc; }
.service-points .accent{ color:var(--accent-2); }

/* Issuance box */
.issuance{
    margin-top: clamp(18px,4vw,36px);
    border: 1px solid var(--line); border-radius:16px;
    padding: clamp(14px,2.4vw,20px);
    background: radial-gradient(120% 120% at 10% -10%, rgba(201,255,74,.08), transparent 40%), var(--panel);
}
.issuance-title{ font-size: clamp(16px,2.8vw,20px); color:var(--accent); margin:0 0 8px; }
.issuance-list{ margin:0; padding-left:1.2em; display:grid; gap:6px; color:#e9f0e6; }
.issuance-list li strong{ color:var(--accent-2); margin-left:.35em; }

/* Captions */
.caption{ color:#9db39b; font-size:.9em; margin-top:8px; }

/* ===== Footer ===== */
footer{
    text-align:center; padding:40px 20px; border-top:1px solid #333; font-size:.95em;
}
.disclaimer{ color:#888; margin-bottom:16px; }

/* Images default */
img{ max-width:100%; height:auto; image-rendering:auto; }

/* ヒーロー動画の中に重ねて表示 */
.mute-toggle{
    position:absolute; left:16px; bottom:16px;
    z-index:3; padding:10px 14px; border-radius:9999px;
    border:1px solid rgba(255,255,255,.6); background:rgba(0,0,0,.4); color:#fff;
    backdrop-filter: blur(6px); font-size:14px; cursor:pointer;
}
.mute-toggle:hover{ background:rgba(0,0,0,.55); }