:root{
    --brand:#ff1493;
    --brand-light:#ff69b4;
    --brand-2:#00d4ff;
    --ink:#1a1a2e;
    --ink-light:#2d3561;
    --muted:#6c7a89;
    --bg-dark:#0f0f1e;
    --bg-accent:#f8f9ff;
}
*{margin:0;padding:0;box-sizing:border-box}
body{
    font-family:'Noto Sans JP',system-ui,-apple-system,sans-serif;
    color:var(--ink);
    line-height:1.75;
    overflow-x:hidden;
}

/* ナビゲーション */
.navbar{
    backdrop-filter:blur(12px);
    background:rgba(255,255,255,0.92)!important;
    border:none;
    box-shadow:0 2px 24px rgba(0,0,0,0.06);
    transition:all 0.3s ease;
}
.navbar-brand{
    font-size:1.5rem;
    font-weight:900;
    background:linear-gradient(135deg,var(--brand),var(--brand-2));
    -webkit-background-clip:text;
    background-clip:text;
    color:transparent;
}
.nav-link{
    font-weight:500;
    color:var(--ink-light)!important;
    transition:color 0.3s;
    position:relative;
}
.nav-link:hover{color:var(--brand)!important}
.nav-link::after{
    content:'';
    position:absolute;
    bottom:-4px;
    left:50%;
    width:0;
    height:2px;
    background:var(--brand);
    transition:all 0.3s;
    transform:translateX(-50%);
}
.nav-link:hover::after{width:100%}
.btn-cta{
    background:linear-gradient(135deg,var(--brand),var(--brand-2));
    color:#fff!important;
    border:none;
    padding:0.6rem 1.8rem;
    border-radius:50px;
    font-weight:700;
    transition:all 0.3s;
    box-shadow:0 4px 15px rgba(255,20,147,0.3);
}
.btn-cta:hover{
    transform:translateY(-2px);
    box-shadow:0 6px 25px rgba(255,20,147,0.4);
}

/* ヒーローセクション */
.hero-section{
    min-height:90vh;
    display:flex;
    align-items:center;
    position:relative;
    background:linear-gradient(135deg,#f8f9ff 0%,#fff0f8 100%);
    overflow:hidden;
    padding-top: 2rem; /* Add safe top space so badges/pills don't clip */
}
.hero-section::before{
    content:'';
    position:absolute;
    width:600px;
    height:600px;
    background:radial-gradient(circle,rgba(255,20,147,0.15),transparent 70%);
    border-radius:50%;
    top:-200px;
    right:-200px;
    animation:float 20s infinite ease-in-out;
}
.hero-section::after{
    content:'';
    position:absolute;
    width:500px;
    height:500px;
    background:radial-gradient(circle,rgba(0,212,255,0.12),transparent 70%);
    border-radius:50%;
    bottom:-150px;
    left:-150px;
    animation:float 15s infinite ease-in-out reverse;
}
@keyframes float{
    0%,100%{transform:translate(0,0) rotate(0deg)}
    50%{transform:translate(30px,-30px) rotate(5deg)}
}
.hero-content{
    position:relative;
    z-index:2;
}
.hero-title{
    font-size:clamp(2rem,5vw,3.5rem);
    font-weight:900;
    line-height:1.2;
    margin-bottom:1.5rem;
}
.gradient-text{
    background:linear-gradient(135deg,var(--brand) 0%,var(--brand-2) 100%);
    -webkit-background-clip:text;
    background-clip:text;
    color:transparent;
}
.hero-subtitle{
    font-size:1.25rem;
    color:var(--muted);
    margin-bottom:2rem;
    font-weight:500;
}
.price-badge{
    display:inline-flex;
    align-items:center;
    gap:0.5rem;
    background:#fff;
    padding:1rem 2rem;
    border-radius:50px;
    box-shadow:0 8px 30px rgba(0,0,0,0.08);
    margin-bottom:2rem;
    font-weight:700;
}
.price-highlight{
    font-size:2rem;
    color:var(--brand);
}
.feature-pills{
    display:flex;
    gap:0.75rem;
    flex-wrap:wrap;
    margin-bottom:2.5rem;
}
.pill{
    background:#fff;
    padding:0.5rem 1.25rem;
    border-radius:50px;
    font-size:0.9rem;
    font-weight:600;
    box-shadow:0 4px 15px rgba(0,0,0,0.06);
    display:flex;
    align-items:center;
    gap:0.5rem;
}
.pill i{color:var(--brand)}

/* セクション共通 */
.section{
    padding:clamp(60px,10vw,120px) 0;
}
.section-title{
    font-size:clamp(2rem,4vw,2.75rem);
    font-weight:900;
    text-align:center;
    margin-bottom:1rem;
}
.section-subtitle{
    text-align:center;
    color:var(--muted);
    font-size:1.1rem;
    margin-bottom:4rem;
    max-width:700px;
    margin-left:auto;
    margin-right:auto;
}

/* 特徴カード */
.feature-card{
    background:#fff;
    padding:2.5rem;
    border-radius:20px;
    box-shadow:0 10px 40px rgba(0,0,0,0.08);
    transition:all 0.4s;
    height:100%;
    position:relative;
    overflow:hidden;
}
.feature-card::before{
    content:'';
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:4px;
    background:linear-gradient(90deg,var(--brand),var(--brand-2));
    transform:scaleX(0);
    transition:transform 0.4s;
}
.feature-card:hover::before{transform:scaleX(1)}
.feature-card:hover{
    transform:translateY(-10px);
    box-shadow:0 20px 60px rgba(0,0,0,0.12);
}
.feature-icon{
    width:70px;
    height:70px;
    background:linear-gradient(135deg,var(--brand),var(--brand-2));
    border-radius:18px;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:2rem;
    color:#fff;
    margin-bottom:1.5rem;
    box-shadow:0 8px 25px rgba(255,20,147,0.3);
}
.feature-title{
    font-size:1.4rem;
    font-weight:700;
    margin-bottom:1rem;
}
.feature-text{
    color:var(--muted);
    line-height:1.8;
}

/* プランカード */
.plan-card{
    background:#fff;
    border-radius:24px;
    padding:2.5rem;
    box-shadow:0 10px 50px rgba(0,0,0,0.08);
    transition:all 0.4s;
    height:100%;
    position:relative;
    overflow:hidden;
}
.plan-card::before{
    content:'';
    position:absolute;
    top:-50%;
    left:-50%;
    width:200%;
    height:200%;
    background:linear-gradient(135deg,transparent,rgba(255,20,147,0.05),transparent);
    transform:rotate(45deg);
    transition:all 0.6s;
}
.plan-card:hover::before{left:100%}
.plan-card:hover{
    transform:translateY(-15px);
    box-shadow:0 20px 70px rgba(0,0,0,0.15);
}
.plan-popular{
    background:linear-gradient(135deg,var(--brand),var(--brand-2));
    color:#fff;
}
.plan-popular .plan-price,.plan-popular .plan-title{color:#fff}
.plan-badge{
    display:inline-block;
    background:rgba(255,255,255,0.2);
    padding:0.3rem 1rem;
    border-radius:50px;
    font-size:0.85rem;
    font-weight:700;
    margin-bottom:1rem;
}
.plan-title{
    font-size:1.5rem;
    font-weight:700;
    margin-bottom:1rem;
}
.plan-price{
    font-size:3rem;
    font-weight:900;
    color:var(--brand);
    margin-bottom:1rem;
}
.plan-price small{
    font-size:1rem;
    font-weight:500;
}
.plan-desc{
    color:var(--muted);
    margin-bottom:2rem;
    line-height:1.8;
}
.plan-popular .plan-desc{color:rgba(255,255,255,0.9)}
.plan-features{
    list-style:none;
    padding:0;
    margin-bottom:2rem;
}
.plan-features li{
    padding:0.75rem 0;
    display:flex;
    align-items:center;
    gap:0.75rem;
    border-bottom:1px solid #f0f0f0;
}
.plan-popular .plan-features li{border-color:rgba(255,255,255,0.2)}
.plan-features i{
    color:var(--brand);
    font-size:1.2rem;
}
.plan-popular .plan-features i{color:#fff}
.btn-plan{
    width:100%;
    padding:1rem;
    border-radius:50px;
    font-weight:700;
    border:2px solid var(--brand);
    background:#fff;
    color:var(--brand);
    transition:all 0.3s;
}
.btn-plan:hover{
    background:var(--brand);
    color:#fff;
}
.plan-popular .btn-plan{
    background:#fff;
    border-color:#fff;
    color:var(--brand);
}
.plan-popular .btn-plan:hover{
    background:transparent;
    color:#fff;
}

/* プロセス */
.process-step{
    position:relative;
    padding:2rem;
    background:#fff;
    border-radius:16px;
    box-shadow:0 8px 30px rgba(0,0,0,0.06);
    transition:all 0.3s;
}
.process-step:hover{
    transform:translateY(-5px);
    box-shadow:0 12px 40px rgba(0,0,0,0.1);
}
.process-number{
    width:50px;
    height:50px;
    background:linear-gradient(135deg,var(--brand),var(--brand-2));
    border-radius:50%;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:1.5rem;
    font-weight:900;
    color:#fff;
    margin-bottom:1rem;
}
.process-title{
    font-size:1.2rem;
    font-weight:700;
    margin-bottom:0.5rem;
}
.process-desc{
    color:var(--muted);
    font-size:0.95rem;
}

/* FAQ */
.faq-item{
    background:#fff;
    border-radius:16px;
    margin-bottom:1rem;
    box-shadow:0 4px 20px rgba(0,0,0,0.05);
    overflow:hidden;
}
.faq-question{
    width:100%;
    padding:1.5rem 2rem;
    background:transparent;
    border:none;
    text-align:left;
    font-size:1.1rem;
    font-weight:700;
    color:var(--ink);
    cursor:pointer;
    display:flex;
    justify-content:space-between;
    align-items:center;
    transition:all 0.3s;
}
.faq-question:hover{color:var(--brand)}
.faq-question i{
    transition:transform 0.3s;
    color:var(--brand);
}
.faq-question.active i{transform:rotate(180deg)}
.faq-answer{
    max-height:0;
    overflow:hidden;
    transition:max-height 0.4s ease;
    padding:0 2rem;
}
.faq-answer.show{
    max-height:1000px;
    padding:0 2rem 1.5rem 2rem;
}
.faq-answer p{
    color:var(--muted);
    line-height:1.8;
    margin-bottom:0;
}

/* コンタクトフォーム */
.contact-form{
    background:#fff;
    padding:3rem;
    border-radius:24px;
    box-shadow:0 15px 60px rgba(0,0,0,0.1);
}
.form-label{
    font-weight:600;
    color:var(--ink);
    margin-bottom:0.5rem;
}
.form-control{
    border:2px solid #e9ecef;
    border-radius:12px;
    padding:0.875rem 1rem;
    transition:all 0.3s;
}
.form-control:focus{
    border-color:var(--brand);
    box-shadow:0 0 0 3px rgba(255,20,147,0.1);
}
textarea.form-control{resize:vertical}

/* お問い合わせタイプ選択 */
.inquiry-type-option{
    flex:1;
    min-width:200px;
    cursor:pointer;
    display:block;
}
.inquiry-type-option .option-content{
    display:flex;
    align-items:center;
    gap:1rem;
    padding:1.25rem 1.5rem;
    background:#f8f9ff;
    border:2px solid #e9ecef;
    border-radius:16px;
    transition:all 0.3s;
}
.inquiry-type-option .option-content i{
    font-size:2rem;
    color:var(--muted);
    transition:all 0.3s;
}
.inquiry-type-option .option-title{
    font-weight:700;
    font-size:1rem;
    color:var(--ink);
    margin-bottom:0.25rem;
}
.inquiry-type-option .option-desc{
    font-size:0.85rem;
    color:var(--muted);
}
.inquiry-type-option:hover .option-content{
    border-color:var(--brand-light);
    background:#fff;
    transform:translateY(-2px);
    box-shadow:0 4px 15px rgba(255,20,147,0.15);
}
.inquiry-type-option.active .option-content{
    border-color:var(--brand);
    background:linear-gradient(135deg,rgba(255,20,147,0.05),rgba(0,212,255,0.05));
    box-shadow:0 4px 20px rgba(255,20,147,0.2);
}
.inquiry-type-option.active .option-content i{
    color:var(--brand);
}

/* 知識レベル選択 */
.knowledge-option{
    flex:1;
    min-width:180px;
    cursor:pointer;
    display:block;
}
.knowledge-option .option-content-small{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:0.5rem;
    padding:1rem 1.25rem;
    background:#f8f9ff;
    border:2px solid #e9ecef;
    border-radius:12px;
    transition:all 0.3s;
    font-weight:600;
    color:var(--ink);
}
.knowledge-option .option-content-small i{
    font-size:1.25rem;
    color:var(--muted);
    transition:all 0.3s;
}
.knowledge-option:hover .option-content-small{
    border-color:var(--brand-light);
    background:#fff;
    transform:translateY(-2px);
    box-shadow:0 4px 15px rgba(255,20,147,0.15);
}
.knowledge-option.active .option-content-small{
    border-color:var(--brand);
    background:linear-gradient(135deg,rgba(255,20,147,0.05),rgba(0,212,255,0.05));
    box-shadow:0 4px 15px rgba(255,20,147,0.2);
}
.knowledge-option.active .option-content-small i{
    color:var(--brand);
}

/* Input Group スタイル調整 */
.input-group-text{
    background:#f8f9ff;
    border:2px solid #e9ecef;
    border-left:none;
    color:var(--muted);
    font-weight:600;
    border-radius:0 12px 12px 0;
    padding:0.875rem 1rem;
}
.input-group .form-control{
    border-right:none;
    border-radius:12px 0 0 12px;
}
.input-group .form-control:focus + .input-group-text{
    border-color:var(--brand);
}

/* フッター */
.footer{
    background:var(--bg-dark);
    color:rgba(255,255,255,0.7);
    padding:3rem 0 1.5rem;
}
.footer-brand{
    font-size:1.5rem;
    font-weight:900;
    color:#fff;
    margin-bottom:1rem;
}
.footer-links{
    list-style:none;
    padding:0;
}
.footer-links li{margin-bottom:0.5rem}
.footer-links a{
    color:rgba(255,255,255,0.7);
    text-decoration:none;
    transition:color 0.3s;
}
.footer-links a:hover{color:#fff}
.footer-bottom{
    border-top:1px solid rgba(255,255,255,0.1);
    padding-top:1.5rem;
    margin-top:2rem;
    text-align:center;
}

/* ダークセクション */
.dark-section{
    background:var(--bg-dark);
    color:#fff;
}
.dark-section .section-subtitle{color:rgba(255,255,255,0.7)}

/* レスポンシブ */
@media(max-width:768px){
    .hero-section{min-height:auto;padding:4rem 0}
    .price-badge{flex-direction:column;text-align:center}
    .contact-form{padding:2rem 1.5rem}
    .inquiry-type-option{min-width:100%;flex:none}
    .knowledge-option{min-width:100%;flex:none}
    .inquiry-type-option .option-content{padding:1rem 1.25rem}
    .knowledge-option .option-content-small{padding:0.875rem 1rem}
}
@media (max-width: 576px){
  .row{
    --bs-gutter-x: 1rem;   /* g-5(3rem)を小さく */
    margin-left: 0;
    margin-right: 0;       /* 負マージン打ち消し */
  }
}


/* ========== Policy Article Readability Enhancements ========== */
.policy-article{
    max-width: 760px;
    margin-left: auto;
    margin-right: auto;
    font-size: 1.06rem;
    line-height: 2.0;
}
.policy-article p{
    margin: 0 0 1rem 0;
    color: var(--ink);
}
.policy-article h2{
    font-size: clamp(1.4rem, 2.6vw, 1.8rem);
    font-weight: 800;
    margin-top: 2.25rem;
    margin-bottom: 0.9rem;
    padding-bottom: 0.4rem;
    border-bottom: 2px solid rgba(0,0,0,0.06);
}
.policy-article h3{
    font-size: clamp(1.2rem, 2.2vw, 1.4rem);
    font-weight: 700;
    margin-top: 1.75rem;
    margin-bottom: 0.6rem;
}
.policy-article ul,
.policy-article ol{
    padding-left: 1.4rem;
    margin: 0 0 1rem 0;
}
.policy-article li + li{ margin-top: 0.35rem; }
.policy-article hr{
    border: 0;
    height: 1px;
    margin: 2rem 0;
    background: linear-gradient(90deg, rgba(0,0,0,0.12) 0%, rgba(0,0,0,0.04) 60%, rgba(0,0,0,0) 100%);
}
.policy-article a{
    color: var(--brand);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.policy-article strong{ font-weight: 800; }
.policy-article table{
    width: 100%;
    border-collapse: collapse;
    margin: 1rem 0 1.5rem;
}
.policy-article th,
.policy-article td{
    padding: 0.6rem 0.5rem;
    border-bottom: 1px solid rgba(0,0,0,0.06);
}
.policy-article small,
.policy-article .text-muted{ color: var(--muted); }

/* Mobile tweaks */
@media (max-width: 576px){
    .policy-article{
        padding: 1.25rem !important;
        font-size: 1rem;
        line-height: 1.95;
    }
    .policy-article h2{ margin-top: 1.75rem; }
}


/* ========== Blog UI ========== */
.accent-bar{width:6px;height:24px;background:var(--brand);border-radius:3px}
.blog-card{overflow:hidden;border-radius:12px}
.blog-card-thumb{height:180px;object-fit:cover}
.blog-badge{background:rgba(0,212,255,0.12);color:#0a5460;border:1px solid rgba(0,212,255,0.25);font-weight:700}
.blog-card-title{color:var(--ink)}
.blog-card-summary{font-size:0.95rem}

.blog-post-title{color:var(--ink)}
.blog-content{font-size:1.06rem;line-height:1.95}
.blog-content p{margin:0 0 1rem 0}
.blog-content h2{font-size:clamp(1.4rem,2.6vw,1.8rem);font-weight:800;margin-top:2.25rem;margin-bottom:0.9rem;padding-bottom:0.4rem;border-bottom:2px solid rgba(0,0,0,0.06)}
.blog-content h3{font-size:clamp(1.2rem,2.2vw,1.4rem);font-weight:700;margin-top:1.75rem;margin-bottom:0.6rem}
.blog-content ul,.blog-content ol{padding-left:1.3rem;margin:0 0 1rem 0}
.blog-content li+li{margin-top:0.35rem}
.blog-content a{color:var(--brand);text-decoration:underline;text-underline-offset:2px}
.blog-content blockquote{border-left:4px solid var(--brand);padding:0.75rem 1rem;background:linear-gradient(90deg, rgba(255,20,147,0.06), transparent);margin:1rem 0;border-radius:8px}
.blog-content code{background:#f6f7fb;border:1px solid #eceef6;border-radius:6px;padding:0.1rem 0.35rem;font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;font-size:0.95em}
.blog-content pre{background:#0b1020;color:#e6e8ef;padding:1rem;border-radius:10px;overflow:auto}
.blog-content pre code{background:transparent;border:none;padding:0;color:inherit}
.blog-content img{max-width:100%;height:auto;border-radius:12px;box-shadow:0 6px 24px rgba(0,0,0,0.08);margin:1rem 0}
/* Blog tables: improved aesthetics + responsive usability */
.blog-content table{
  width:100%;
  border-collapse:separate; /* keep radii */
  border-spacing:0;
  margin:1rem 0 1.5rem;
  background:#fff;
  border:1px solid rgba(0,0,0,0.08);
  border-radius:10px;
  overflow:hidden; /* clip zebra & header bg to radius */
}
.blog-content thead th{
  background:#f7f9fc;
  color:var(--ink);
  font-weight:800;
  border-bottom:1px solid rgba(0,0,0,0.08);
}
.blog-content th,
.blog-content td{
  padding:0.75rem 0.9rem;
  border-bottom:1px solid rgba(0,0,0,0.06);
  vertical-align:top;
}
.blog-content tbody tr:nth-child(even) td{ background:rgba(0,0,0,0.015); }
.blog-content tbody tr:hover td{ background:rgba(255,20,147,0.03); transition:background 0.2s ease; }
.blog-content caption{
  caption-side:bottom;
  text-align:left;
  color:var(--muted);
  font-size:0.95rem;
  padding-top:0.5rem;
}
/* Respect inline text-align from generator; do not set here */
.blog-content hr{border:0;height:1px;margin:2rem 0;background:linear-gradient(90deg, rgba(0,0,0,0.12) 0%, rgba(0,0,0,0.04) 60%, rgba(0,0,0,0) 100%)}

/* Small screens: allow horizontal scroll without breaking layout */
@media (max-width: 768px){
  .blog-content table{display:block; overflow-x:auto; -webkit-overflow-scrolling:touch; white-space:nowrap}
  .blog-content thead, .blog-content tbody, .blog-content tr{ width:auto; }
}

@media(max-width:768px){
  .blog-content{font-size:1rem;line-height:1.9}
}
