/* =========================================================
   STEP 15: MAINTENANCE NOTES
   - Keep the current rule order: later declarations are intentional.
   - Do not merge or remove repeated selectors without page testing.
   - The .site-logo a and .data-benefits rules are position-sensitive.
   ========================================================= */

@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600&display=swap');

/* ==================================================
   BASE / TOP PAGE
================================================== */

body {

    margin: 0;

    padding: 0;

    background: #ffffff;

    color: #2F2E2E;

    font-family: serif;

    text-align: center;

}

h1 {

    font-size: 80px;

    margin-top: 100px;

    margin-bottom: 20px;

    letter-spacing: 8px;

}

p {

    font-size: 18px;

}
/* ---------- Hero ---------- */

.hero {

    position: relative;

    width: 100%;

    margin: 30px auto 0;

}

.hero img {

    width: 100%;

    height: 550px;

    object-fit: cover;

    opacity: 0.65;

    display: block;

}

.hero-text {

    position: absolute;

    top: 75%;

    left: 50%;

    transform: translate(-50%, -50%);

    color: white;

    text-align: center;

    width: 100%;

}

.hero-text h1 {

    margin: 0;

    font-size: 54px;

    letter-spacing: 6px;

}

.hero-text p {

    font-size: 13px;

    margin-bottom: 15px;

}

/* ---------- Top menu section ---------- */

.menu-section {

    background: white;

    text-align: center;

    padding: 100px 20px;

}

.menu-section h2 {

    font-size: 36px;

    margin-bottom: 10px;

}

.menu-sub {

    font-size: 15px;

    margin-bottom: 40px;

}

.menu-button {

    display: inline-block;

    width: 130px;

    height: 42px;

    line-height: 42px;

    background: black;

    color: white;

    text-decoration: none;

    font-size: 14px;

    letter-spacing: 2px;

}
/* ==================================================
   PAGE HEADER / PLAN
================================================== */

.page-header {

    padding: 30px 40px;

    text-align: left;

}

.site-logo {

    font-size: 40px;

    color: #2F2E2E;

    text-decoration: none;

    font-family: "Cormorant Garamond", serif;

}

.page-header p {

    margin: -8px 0 0 5px;

    font-size: 25px;

    color: #2F2E2E;

}

/* ---------- Plan page base ---------- */

.plan-page {

    max-width: 800px;

    margin: 0 auto;

    padding: 60px 20px;

    text-align: left;

    font-family: serif;

    color: #2F2E2E;

}

.plan-main-title{

    font-family: serif;

    font-size:34px;

    font-weight:400;

    color:#2f2e2e;

    text-align:center;

    letter-spacing:.05em;

    margin-bottom:20px;

}

.plan-intro {

    font-size: 13px;

    line-height: 2;

    text-align: center;

    margin: 40px 0;

}

/* ---------- Plan cards: early rules ---------- */

.plan-card {

    background: #ffffff;

    border: 1px solid #e8e8e8;

    border-radius: 10px;

    padding: 40px;

    margin-bottom: 60px;

    box-shadow: 0 3px 10px rgba(0,0,0,0.05);

}

.plan-card h3 {

    font-size: 23px;

    margin-bottom: 20px;
    border-bottom: 1px solid #e8e8e8;

padding-bottom: 15px;

}

.plan-card p {

    font-size: 16px;

    line-height: 2;

}
/* ---------- Plan price elements ---------- */

.price-box {

    margin-top: 25px;

}

.sale-price {

    font-size: 28px;

    font-weight: 600;

    color: #177E58;

    font-family: "Cormorant Garamond", serif;

}

.regular-price {

    font-size: 16px;

    color: #888;

    margin-top: 8px;

}
.price-row {

    display: flex;

    align-items: baseline;

    gap: 12px;

}
.badge {

    font-size: 12px;

    background: #177E58;

    color: white;

    padding: 4px 8px;

    border-radius: 20px;

    vertical-align: middle;

    margin-left: 8px;

}
.plan-card.featured {

    border: 2px solid #177E58;

}
/* ==================================================
   POSE PAGE
================================================== */

.pose-page {

    max-width: 1000px;

    margin: 0 auto;

    padding: 50px 20px;

}
/* ---------- Pose sections and images ---------- */

.pose-section {

    margin: 70px 0;

}

.pose-item {

    margin-bottom: 50px;

    text-align: center;

}

.pose-item h3 {

    font-size: 15px;

    font-weight: 400;

    color: #2b2b2b;

    margin: 0 0 10px;

}

.pose-images {

    display: grid;

    grid-template-columns: repeat(3, 1fr);

    gap: 20px;

    max-width: 700px;

    margin: 0 auto;

    justify-items: center;

}

.pose-images img {

    width: 100%;

    height: auto;

    display: block;

}
.pose-note {

    font-size: 10px;

    line-height: 1.6;

    margin-top: 2px;

    margin-bottom: 8px;

    color: #666;

}

.other-notes {

    font-size: 13px;

    line-height: 2;

}
.other-notes {

    font-size: 11px !important;

    line-height: 1.9;

    color: #666;

}

.other-notes p {

    font-size: 11px !important;

    line-height: 1.9;

    margin-bottom: 12px;

}
/* ---------- Pose navigation ---------- */

.pose-nav{

    display:grid;

    grid-template-columns:repeat(2,minmax(0,1fr));

    max-width:620px;

    width:100%;

    margin:40px auto 55px;

    gap:10px;

}

.pose-nav a{

    display:flex;

    align-items:center;

    justify-content:center;

    height:40px;

    background:#faf9f7;

    border:1px solid #ece7df;

    color:#444;

    text-decoration:none;

    font-size:12px;

    letter-spacing:.04em;

    transition:.25s ease;

}

.pose-nav a:hover{

    background:#f5f2ed;

    border-color:#d8d0c5;

    color:#222;

}
.pose-title{

    max-width:760px;

    margin:70px auto 40px;

    padding:14px 0;

    border-top:1px solid #ebe7df;

    border-bottom:1px solid #ebe7df;

    font-size:22px;

    font-weight:400;

    letter-spacing:.05em;

    color:#2b2b2b;

}

@media (max-width:768px){

    .pose-images{

        grid-template-columns:1fr;

        max-width:350px;

    }

    .pose-nav{

        margin:25px auto 35px;

    }

    .pose-nav a{

        height:26px;

        font-size:8px;

        letter-spacing:.02em;

    }

    /* Others（スマホのみ） */

    .other-notes{

        max-width:330px;

        margin:0 auto;

        padding:0 10px;

        color:#777;

        text-align:center;

    }

    .other-notes p{

        max-width:310px;

        margin:0 auto 16px;

        font-size:8.5px !important;

        font-weight:300;

        line-height:2.1;

        letter-spacing:.02em;

        color:#777;

        text-align:center;

    }

    /* 他フォトグラファー様〜 と 撮影方法の違い〜 */

    .other-notes p:nth-child(3){

        margin-bottom:6px;

    }

    /* 掲載していないもの〜 と 最後の案内 */

    .other-notes p:nth-last-child(2){

        margin-bottom:6px;

    }

    .other-notes p:last-child{

        margin-bottom:0;

    }

}

html {

    scroll-behavior: smooth;

}
/* ---------- Pose guide ---------- */

.pose-guide {

    max-width: 900px;

    margin: 0 auto 60px;

    padding: 20px;

    background: #f8f8f8;

    border-radius: 10px;

    font-size: 13px;

    line-height: 1.8;

    text-align: left;

}
/* ---------- Shared site header: early rules ---------- */

.site-header {

    padding: 8px 30px;

    display: flex;

    justify-content: space-between;

    align-items: center;

    position: sticky;

    top: 0;

    z-index: 1000;

    background: #ffffff;

}

.site-logo {

    margin: 0;

    line-height: 1;

}

/* IMPORTANT:
   Repeated .site-logo a rules are intentionally preserved.
   Removing or consolidating them changed the PC logo size during testing.
*/

.site-logo a {

    font-size: 26px;

    font-family: "Cormorant Garamond", serif;

    color: #2F2E2E;

    text-decoration: none;

}

.site-sub {

    display: none;

}

.footer-links a:hover {

    opacity: 0.7;

}
/* ==================================================
   FAQ - EARLY RULES
================================================== */

faq-page {

    max-width: 900px;

    margin: 0 auto;

    padding: 60px 20px;

}

.faq-list {

    margin-top: 60px;

}

.faq-item {

    border-bottom: 1px solid #e5e5e5;

    padding: 30px 0;

}

.faq-item h2 {

    font-size: 14px;

    color: #177E58;

    margin-bottom: 15px;

}

.faq-item p {

    font-size: 15px;

    line-height: 2;

    color: #2F2E2E;

}
.faq-answer {

    display: none;

    margin-top: 15px;

}


.faq-question {

    cursor: pointer;

}

.faq-answer {

    display: none;

    width: 100%;

    padding: 30px 40px;

    border-top: 1px solid #e5e5e5;

}

.faq-item {

    display: flex;

    flex-wrap: wrap;

    align-items: stretch;

    border: 1px solid #555;

    margin-bottom: 35px;

    padding: 0;

}

.faq-number {

    width: 70px;

    min-width: 70px;

    background: #9CC9B8;

    color: #ffffff;

    font-size: 18px;

    font-family: serif;

    display: flex;

    align-items: center;

    justify-content: center;

    box-sizing: border-box;

}

.faq-question {

    flex: 1;

    display: flex;

    align-items: center;

    justify-content: space-between;

    padding: 20px;

    font-size: 18px;

    min-height: 120px;

    cursor: pointer;

}

.faq-answer {

    display: none;

    padding: 0 40px 35px;

}

.faq-answer p {

    font-size: 12px;

    line-height: 2;

    text-align: left;

    margin: 0;

}

.faq-icon {

    font-size: 18px;

}

.faq-list {

    max-width: 900px;

    margin: 60px auto 0;

}

.faq-item {

    display: flex;

    flex-wrap: wrap;

    align-items: stretch;

}

.faq-number {

    width: 55px;

    min-width: 55px;

    background: #9CC9B8;

    color: #fff;

    display: flex;

    align-items: center;

    justify-content: center;

    font-size: 16px;

    font-family: serif;

}

.faq-question {

    flex: 1;

    display: flex;

    align-items: center;

    justify-content: space-between;

    padding: 14px 24px;

    font-size: 15px;

    min-height: 0;

    cursor: pointer;

}

.faq-answer {

    display: none;

    width: 100%;

    padding: 20px 25px 25px;

    border-top: 1px solid #e5e5e5;

}

.faq-answer p {

    font-size: 13px;

    line-height: 2;

    text-align: left;

    margin: 0;

}

.faq-icon {

    font-size: 14px;

}

@media screen and (max-width: 768px) {

    .hero img {

        height: 420px;

    }

    .hero-text h1 {

        font-size: 48px;

        letter-spacing: 4px;

    }

}
/* ---------- Top page navigation ---------- */

.top-nav {

    position: absolute;

    top: 40px;

    right: 40px;

    z-index: 10;

    display: flex;

    gap: 25px;

}

.top-nav a {

    text-decoration: none;

    color: #2F2E2E;

    font-size: 13px;

    letter-spacing: 2px;

}
@media screen and (max-width: 768px) {

    }
    .site-header {

        padding: 14px 20px;

        flex-direction: row;

    }

    .site-logo a {

        font-size: 30px;

    }

@media screen and (max-width: 768px) {

    .page-header {

    padding: 8px 16px 0;

}

.page-header p {

    display: none;

}

.pose-page {

    padding-top: 50px !important;

}

.plan-main-title{

    margin-top:0;

    font-size:24px;

    margin-bottom:16px;

}
    .plan-page,

    .pose-page,

    .faq-page {

        padding: 35px 16px;

    }

    .plan-intro{

    max-width:330px;

    margin:25px auto 35px;

    font-size:9px;

    font-weight:300;

    line-height:2.1;

    letter-spacing:.015em;

    color:#666;

    text-align:center;

    line-break:strict;

    word-break:normal;

    overflow-wrap:normal;

    hanging-punctuation:allow-end;

}

    .plan-card {

        padding: 24px 18px;

        margin-bottom: 35px;

    }

    .plan-card h3 {

        font-size: 19px;

    }

    .plan-card p {

        font-size: 13px;

        line-height: 1.9;

    }

    .pose-images{

    max-width:70%;

    gap:12px;

    margin:0 auto;

}

    .pose-item {

        margin-bottom: 28px;

    }

    .pose-item h3{

    margin:0 0 10px;

    font-size:13px;

    font-weight:400;

    line-height:1.5;

    letter-spacing:.02em;

    color:#2b2b2b;

}

    .pose-title{

    width:100%;

    box-sizing:border-box;

    margin-top:52px;

    margin-bottom:20px;

    padding:10px 0;

    border-top:1px solid #ebe7df;

    border-bottom:1px solid #ebe7df;

    font-family:serif;

    font-size:18px;

    font-weight:500;

    letter-spacing:.04em;

    color:#2b2b2b;

    text-align:center;

}

   .faq-list {

    width: 100%;

    max-width: 100%;

    margin: 50px auto 0;

}

.faq-number {

    width: 55px;

    min-width: 55px;

    font-size: 14px;

    padding: 0;

}

.faq-number {

    font-size: 13px;

    padding: 6px 14px;

    line-height: 1;

}

.faq-question {

    font-size: 12px;

    padding: 8px 12px;

    min-height: 30px;

    display: flex;

    align-items: center;

}

.faq-question .faq-icon {

    margin-left: auto;

    font-size: 13px;

}

.faq-answer {

    padding: 0 14px 16px;

}

.faq-answer p {

    font-size: 11px;

    line-height: 1.9;

}
@media screen and (max-width: 768px) {

   .faq-question {

    font-size: 13px !important;

    font-weight: 500;

    padding: 12px 16px !important;

    min-height: 0 !important;

    line-height: 1.4;

}

.faq-number {

    font-size: 13px !important;

    padding: 0 !important;

    line-height: 1;

}
    

    .faq-icon {

        font-size: 11px !important;

    }

}
/* ==================================================
   POLICY - EARLY RULES
================================================== */

.policy-content {

    max-width: 760px;

    margin: 40px auto 80px;

    padding: 0 28px;

    text-align: left;

}

.policy-content h2 {

    font-size: 18px;

    color: #177E58;

    text-align: center;

    margin: 30px 0 12px;

    letter-spacing: 1px;

    border-bottom: 1px solid #d8d8d8;
    
    padding-bottom: 10px;

}

.policy-content p {

    font-size: 13px;

    line-height: 2;

    color: #2F2E2E;

    text-align: left;

    margin: 0 0 14px;

}

}
@media screen and (max-width: 768px) {

    .policy-content {

        max-width: 100%;

        margin: 35px auto 60px;

        padding: 0 22px;

    }

    .policy-content h2 {

        font-size: 14px;

        margin: 35px 0 14px;

        white-space: nowrap;

    }

    .policy-content p {

        font-size: 11px;

        line-height: 1.9;

        text-align: left;

    }

}

@media screen and (max-width: 768px) {

    .menu-toggle {

        display: block;

        background: none;

        border: none;

        font-size: 28px;

        color: #2F2E2E;

        cursor: pointer;

    }

    

}
    .menu-toggle {

        display: block;

        background: none;

        border: none;

        font-size: 28px;

        color: #2F2E2E;

        cursor: pointer;

        z-index: 10001;

    }

    

/* ==================================================
   SHARED HEADER MENU - FINAL RULES
================================================== */

/* ===== Header menu ===== */

.site-header {

    padding: 24px 50px;

    display: flex;

    justify-content: space-between;

    align-items: center;

    background: #ffffff;

}

.menu-toggle {

    display: none;

}

.site-links {

    display: flex;

    justify-content: flex-end;

    align-items: center;

    gap: 22px;

}

.site-links a {

    text-decoration: none;

    color: #2F2E2E;

    font-size: 12px;

    letter-spacing: 1.5px;

}

/* スマホだけハンバーガー */

@media screen and (max-width: 768px) {

    .site-header {

        padding: 14px 20px;

    }

    .site-logo a {

        font-size: 30px;

    }

    .menu-toggle {

        display: block;

        background: none;

        border: none;

        font-size: 28px;

        color: #2F2E2E;

        cursor: pointer;

        z-index: 10001;

    }

    .site-links {

        display: none;

        position: absolute;

        top: 70px;

        right: 20px;

        background: #ffffff;

        padding: 15px;

        box-shadow: 0 5px 20px rgba(0,0,0,0.1);

        flex-direction: column;

        gap: 12px;

        border-radius: 10px;

        z-index: 9999;

    }

    .site-links.active {

        display: flex;

    }

}
/* ==================================================
   POLICY PAGE - DESKTOP
================================================== */

/* policy page pc */

.policy-page {

    max-width: 900px;

    margin: 0 auto;

    padding: 60px 20px;

}

.policy-page .policy-content {

    max-width: 760px;

    margin: 55px auto 90px;

    padding: 0 30px;

    text-align: left;

}

.policy-page .policy-content h2 {

    font-size: 18px;

    color: #177E58;

    text-align: center;

    margin: 45px 0 18px;

}

.policy-page .policy-content p {

    font-size: 13px;

    line-height: 2;

    color: #2F2E2E;

    text-align: left;

    margin: 0 0 24px;

}
/* ===== Terms & Policy page adjust ===== */

.policy-page .policy-content {

    max-width: 820px !important;

    margin: 45px auto 90px !important;

    padding: 0 36px !important;

}

.policy-page .policy-content h2 {

    font-size: 18px !important;

    color: #177E58 !important;

    text-align: center !important;

    margin: 38px 0 18px !important;

    padding-bottom: 12px !important;

    border-bottom: 1px solid #d8d8d8 !important;

    letter-spacing: 1px !important;

}

.policy-page .policy-content p {

    font-size: 13px !important;

    line-height: 2 !important;

    text-align: left !important;

    margin: 0 0 22px !important;

}
.policy-page .pose-title {

    margin-bottom: 50px;

}

/* ---------- FAQ tabs: early rules ---------- */

.faq-tabs {

    display: flex;

    justify-content: flex-start;

    gap: 60px;

    margin: 40px auto 50px;

    max-width: 880px;

}

.faq-tabs a {

    text-decoration: none;

    color: #2F2E2E;

    font-size: 18px;

    padding-bottom: 12px;

}

.faq-tabs a:hover {

    color: #177E58;

}
.faq-tabs a.active {

    border-bottom: 2px solid #177E58;

    color: #177E58;

}

@media screen and (max-width: 768px) {

    .faq-tabs {

        gap: 20px;

        margin: 28px auto 32px;

        max-width: 100%;

    }

   .faq-tabs a {

    font-size: 12px !important;

    padding-bottom: 6px;

}

    .faq-number {

        width: 45px !important;

        min-width: 45px !important;

        font-size: 12px !important;

    }

    .faq-question {

        font-size: 11px !important;

        padding: 10px 12px !important;

        min-height: 0 !important;

    }

    .faq-icon {

        font-size: 10px !important;

    }

}

/* ==================================================
   GALLERY
================================================== */

.gallery-grid {

    display: grid;

    grid-template-columns: repeat(5, 1fr);

    gap: 16px;

    max-width: 1100px;

    margin: 0 auto;

    padding: 40px 24px;

}

.gallery-grid img {

    width: 100%;

    aspect-ratio: 1 / 1;

    object-fit: cover;

    display: block;

}

@media screen and (max-width: 768px) {

    .gallery-grid {

        display: block;

        column-count: 2;

        column-gap: 10px;

    }

    .gallery-grid img {

        width: 100%;

        height: auto;

        aspect-ratio: auto;

        object-fit: contain;

        margin-bottom: 10px;

        break-inside: avoid;

    }

}
/* ---------- Gallery grids and lightbox ---------- */

#heroGrid {

    display: grid;

    grid-template-columns: repeat(2, 1fr);

    gap: 10px;

}

#galleryGrid {

    column-count: 2;

    column-gap: 10px;

}

#galleryGrid img {

    width: 100%;

    height: auto;

    margin-bottom: 10px;

    break-inside: avoid;

}
.lightbox {

    display: none;

    position: fixed;

    z-index: 9999;

    inset: 0;

    background: rgba(0, 0, 0, 0.85);

    align-items: center;

    justify-content: center;

}

.lightbox img {

    max-width: 90%;

    max-height: 85%;

}

.lightbox-close,

.lightbox-prev,

.lightbox-next {

    position: absolute;

    background: none;

    border: none;

    color: #fff;

    cursor: pointer;

}

.lightbox-close {

    top: 24px;

    right: 28px;

    font-size: 36px;

}

.lightbox-prev,

.lightbox-next {

    top: 50%;

    transform: translateY(-50%);

    font-size: 60px;

}

.lightbox-prev {

    left: 28px;

}

.lightbox-next {

    right: 28px;

}

/* ---------- Gallery call to action ---------- */

.gallery-cta {

    text-align: center;

    margin: 80px 0;

}

.cta-button {

    display: inline-block;

    background: #000;

    color: #fff;

    text-decoration: none;

    padding: 16px 42px;

    font-size: 15px;

    letter-spacing: 0.08em;
}
/* ==================================================
   TOP PAGE - FEATURE SECTIONS
================================================== */

/* ---------- TOP MENU ---------- */

.feature-section{

    max-width:1200px;

    margin:100px auto;

    padding:0 60px;

}

.feature-card{

    display:grid;

    grid-template-columns:60% 40%;

    gap:80px;

    align-items:center;

    text-decoration:none;

    color:inherit;

}

.feature-section.reverse .feature-card{

    grid-template-columns:40% 60%;

}

.feature-image img{

    width:100%;

    height:520px;

    object-fit:cover;

    display:block;

}

.feature-content{

    text-align:center;

}

.feature-content h2{

    font-size:34px;

    font-weight:300;

    letter-spacing:.18em;

    margin-bottom:24px;

}

.feature-arrow{

    font-size:13px;

    letter-spacing:.2em;

}

.feature-card:hover img{

    opacity:.92;

    transition:.3s;

}

.top-final-cta{

    text-align:center;

    margin:150px auto 120px;

}

.cta-label{

    color:#9d958c;

    font-size:10px;

    letter-spacing:.35em;

    text-transform:uppercase;

}

.top-final-cta h2{

    font-size:18px;

    font-weight:300;

    letter-spacing:.15em;

    margin-bottom:36px;

}

.top-line-button{

    display:inline-block;

    text-decoration:none;

    color:#222;

    font-size:13px;

    letter-spacing:.22em;

    position:relative;

    padding-bottom:8px;

    transition:.3s;

}
.top-line-button::after{

    content:"";

    position:absolute;

    left:15%;

    bottom:0;

    width:70%;

    height:1px;

    background:#222;

    transform:scaleX(.3);

    transform-origin:center;

    transition:.35s ease;

}

.top-line-button:hover::after{

    transform:scaleX(1);

}

.top-line-button:hover{

    letter-spacing:.26em;

}

/* ---------- MOBILE ---------- */

@media (max-width:768px){

    .feature-section{

        margin:50px auto;

        padding:0 24px;

    }

    .feature-card,

    .feature-section.reverse .feature-card{

        display:flex;

        flex-direction:column;

        gap:30px;

    }

    .feature-image{

        order:1;

    }

    .feature-content{

        order:2;

        text-align:center;

    }

   .feature-content h2{

    font-size:14px;

    letter-spacing:.22em;

    margin-bottom:6px;

}

.feature-arrow{

    font-size:9px;

    letter-spacing:.28em;

}

.feature-image img{

    width:74%;

    height:auto;

    margin:0 auto 22px;

    display:block;

}

.top-final-cta{

    margin:25px auto 40px;

}

.cta-label{

    font-size:7px;

    letter-spacing:.4em;

    margin-bottom:10px;

}

.top-final-cta h2{

    font-size:12px;

    letter-spacing:.08em;

    margin-bottom:18px;

    font-weight:400;

}

.top-line-button{

    font-size:9px;

    letter-spacing:.18em;

    padding-bottom:4px;

}

}
/* ==================================================
   FOOTER
================================================== */

/* ---------- BUTTERBUR FOOTER ---------- */

.butterbur-footer{

    text-align:center;

    margin:45px auto 50px;

}

.footer-brand{

    font-size:22px;

    letter-spacing:.12em;

    font-weight:300;

    margin-bottom:28px;

}

.footer-links{

    display:flex;

    justify-content:center;

    gap:44px;

}

.footer-links a{

    text-decoration:none;

    color:#222;

    font-size:11px;

    letter-spacing:.22em;

    transition:.3s ease;

}

.footer-links a:hover{

    opacity:.45;

}

@media(max-width:768px){

    .butterbur-footer{

        margin:55px auto 65px;

    }

    .footer-brand{

        font-size:20px;

        margin-bottom:22px;

    }

    .footer-links{

        gap:34px;

    }

    .footer-links a{

        font-size:10px;

    }

}
.feature-image{

    overflow:hidden;

}

.feature-image img{

    transition:transform .5s ease;

}

.feature-image:hover img{

    transform:scale(1.03);

}
/* ---------- GALLERY TITLE ---------- */

/* ==================================================
   SHARED PAGE TITLE
================================================== */

.page-title{

    text-align:center;

    margin:70px 0 40px;

}

.page-title h1{

    font-size:42px !important;

    letter-spacing:.28em;

    font-weight:400;

    margin:0 0 18px;

}

.page-title p{

    font-size:10px;

    color:#999;

    letter-spacing:.28em;

    margin:0;

}

@media(max-width:768px){

    .page-title{

        margin:65px 0 35px;

    }

    .page-title h1{

        font-size:28px !important;

        letter-spacing:.22em;

    }

    .page-title p{

        font-size:8px;

    }

}
/* ==================================================
   PLAN - NOTICE / INFORMATION
================================================== */

/* ---------- PLAN NOTICE ---------- */

.plan-notice{

    max-width:620px;

    margin:45px auto 65px;

    text-align:center;

}

.plan-notice p{

    font-size:12px;

    line-height:2;

    margin-bottom:20px;

}

.plan-notice-link{

    display:inline-block;

    text-decoration:none;

    color:#2F2E2E;

    font-size:10px;

    letter-spacing:.24em;

    padding-bottom:5px;

    position:relative;

    transition:.3s;

}

.plan-notice-link::after{

    content:"";

    position:absolute;

    left:20%;

    bottom:0;

    width:60%;

    height:1px;

    background:#2F2E2E;

    transform:scaleX(.35);

    transition:.35s ease;

}

.plan-notice-link:hover::after{

    transform:scaleX(1);

}

.plan-notice-link:hover{

    letter-spacing:.28em;

}

@media(max-width:768px){

    .plan-notice{

        max-width:88%;

        margin:35px auto 50px;

    }

    .plan-notice p{

        font-size:11px;

        line-height:1.9;

        margin-bottom:18px;

    }

    .plan-notice-link{

        font-size:9px;

    }

}
/* ---------- INFORMATION ---------- */

/* ---------- Information page layout ---------- */

.information-page{

    max-width:820px;

    margin:0 auto;

    padding:0 30px 100px;

}

.info-section{

    display:grid;

    grid-template-columns:repeat(3,1fr);

    gap:40px;

    margin:60px 0 90px;

}

.info-block{

    text-align:center;

    border-top:1px solid #ddd7d0;

    padding-top:18px;

}

.info-label{

    display:block;

    font-size:9px;

    letter-spacing:.28em;

    color:#9b938b;

    margin-bottom:18px;

}

.info-block p{

    font-size:12px;

    line-height:2;

    margin:0;

}

.time-section{

    max-width:620px;

    margin:0 auto;

}

.time-section h2{

    text-align:center;

    font-size:13px;

    letter-spacing:.28em;

    font-weight:400;

    margin-bottom:35px;

}

.time-table{

    width:100%;

    border-collapse:collapse;

}

.time-table td{

    padding:16px 0;

    border-bottom:1px solid #ece8e3;

    font-size:12px;

}

.time-table td:last-child{

    text-align:right;

    color:#666;

}

.time-note{

    text-align:center;

    font-size:11px;

    line-height:2;

    color:#777;

    margin-top:35px;

}

.info-back{

    text-align:center;

    margin-top:80px;

}

.info-back a{

    text-decoration:none;

    color:#222;

    font-size:11px;

    letter-spacing:.22em;

}

/* ---------- MOBILE ---------- */

@media(max-width:768px){

    .information-page{

        padding:0 24px 70px;

    }

    .info-section{

        grid-template-columns:1fr;

        gap:26px;

        margin:40px 0 60px;

    }

    .info-block p{

        font-size:11px;

    }

    .time-table td{

        font-size:10px;

        padding:14px 0;

    }

    .time-note{

        font-size:9px;

    }

}
/* ---------- INFORMATION FIX ---------- */

/* ---------- Information adjustments ---------- */

.discount-text .small{

    margin-top:10px;

    font-size:0.78rem;

    line-height:1.8;

    color:#666;

}

/* Timeの左右ズレ修正 */

.time-section{

    max-width:620px;

    margin:0 auto;

    text-align:center;

}

.time-table{

    width:100%;

    table-layout:fixed;

    border-collapse:collapse;

}

.time-table td{

    width:50%;

    text-align:center !important;

    padding:16px 0;

    border-bottom:1px solid #ece8e3;

}

.time-table td:last-child{

    text-align:center !important;

}

@media(max-width:768px){

    .discount-text .small{

        font-size:0.72rem;

        line-height:1.8;

    }

    .time-section{

        max-width:88%;

    }

    .time-table td{

        font-size:10px;

        padding:14px 0;

        text-align:center !important;

    }

}
.info-block p{

    font-size:12px;

    line-height:2;

}

@media(max-width:768px){

    .info-block p{

        font-size:10px;

        line-height:1.9;

    }

}
/* ---------- PAGE TITLE UNIFY ---------- */

.information-page .page-title h1{
    font-size:42px !important;
    letter-spacing:.28em !important;
}

.information-page .page-title p{
    font-size:10px !important;
    letter-spacing:.28em !important;
}

@media(max-width:768px){

    .information-page .page-title h1{
        font-size:28px !important;
        letter-spacing:.22em !important;
    }

    .information-page .page-title p{
        font-size:8px !important;
    }

}
/* ---------- INFORMATION FINAL ADJUST ---------- */

@media(min-width:769px){

    .information-page .page-title{

        margin-top:60px;

    }

}

.info-block p{

    min-height:72px;

}

.time-note{

    opacity:.7;

    font-size:12px;

    line-height:2;

}

@media(max-width:768px){

    .info-block p{

        min-height:auto;

    }

    .time-note{

        font-size:9px;

        line-height:2;

    }

}
/* ==================================================
   PLAN - FINAL CARD DESIGN
================================================== */

/* ---------- PLAN CARD DESIGN ---------- */

.plan-card{

    background:#fff;

    border:1px solid #e8e4df;

    border-radius:0;

    box-shadow:none;

    padding:48px;

    margin:0 auto 60px;

}

.plan-card-header{

    text-align:center;

    padding-bottom:30px;

    border-bottom:1px solid #ece8e3;

}

.plan-card-header h3{

    border:0;

    padding:0;

    margin:0 0 16px;

    font-size:25px;

    font-weight:400;

    letter-spacing:.08em;

}

.plan-description{

    margin:0;

    font-size:12px !important;

    line-height:2;

    color:#666;

}

/* SHOOTING・DATA */

.plan-details{

    display:grid;

    grid-template-columns:repeat(2,1fr);

    gap:45px;

    padding:38px 0;

}

.plan-detail{

    text-align:center;

}

.plan-detail h4{

    margin:0 0 16px;

    font-size:9px;

    font-weight:400;

    letter-spacing:.28em;

    color:#999;

}

.plan-detail p{

    margin:0;

    font-size:13px;

    line-height:2;

}

.plan-detail p span{

    font-size:11px;

    color:#777;

}

/* Leafのリクエスト説明 */

.request-note{

    display:block;

    margin-top:8px;

    font-size:11px;

    color:#777;

    letter-spacing:.03em;

    line-height:1.8;

}

/* INCLUDED・REQUEST */

.plan-extra-grid{

    display:grid;

    grid-template-columns:repeat(2,1fr);

    gap:40px;

    padding:36px 0;

    border-top:1px solid #ece8e3;

}

.plan-rule-grid{

    margin-top:0;

}

.plan-extra-block{

    text-align:center;

}

.plan-extra-block h4{

    margin:0 0 18px;

    font-size:9px;

    font-weight:400;

    letter-spacing:.28em;

    color:#999;

}

.plan-extra-block p{

    margin:0 0 14px;

    font-size:11px;

    line-height:1.9;

    color:#444;

}

.plan-extra-block p span{

    font-size:10px;

    color:#666;

}

/* リクエスト対象外ポーズ */

.request-exclusion-title{

    margin:10px 0 6px !important;

    font-size:9px !important;

    line-height:1.7 !important;

    letter-spacing:.05em;

    color:#777 !important;

    text-align:center;

}

.request-list{

    list-style:none;

    padding:0;

    margin:0;

    text-align:center;

}

.request-list li{

    margin:2px 0;

    font-size:10px;

    line-height:1.55;

    color:#555;

}

/* OPTION */

.plan-option-single{

    padding:36px 0;

    border-top:1px solid #ece8e3;

    text-align:center;

}

.plan-option-single h4{

    margin:0 0 24px;

    font-size:9px;

    font-weight:400;

    letter-spacing:.28em;

    color:#999;

}

.option-columns{

    display:grid;

    grid-template-columns:repeat(2,1fr);

    gap:40px;

}

.plan-option-single p{

    margin:0;

    font-size:10px;

    line-height:2;

    color:#666;

}

.plan-option-single .option-name{

    margin-bottom:8px;

    font-size:11px;

    color:#444;

}

.option-bottom{

    margin-top:24px !important;

}

/* PRICE */

.plan-price{

    text-align:center;

    padding-top:34px;

    border-top:1px solid #ece8e3;

}

.plan-price .price-label{

    display:block;

    margin-bottom:10px;

    font-size:10px;

    letter-spacing:.18em;

    color:#777;

}

.plan-price p{

    margin:0;

}

.plan-card .sale-price{

    color:#2F2E2E;

    font-weight:400;

}

.price-yen{

    margin-left:5px;

    font-size:11px;

}

.regular-price{

    margin-top:8px !important;

    font-size:12px !important;

    color:#888;

}

/* NEWBORN PLAN TITLE */

.plan-sub-title{

    color:#2F2E2E;

    text-align:left;

    font-size:22px;

    font-weight:400;

    letter-spacing:.03em;

    margin:45px 0 28px;

}

/* ---------- MOBILE ---------- */

@media(max-width:768px){

    .plan-card{

        padding:34px 18px;

        margin-bottom:42px;

    }

    .plan-card-header{

        padding-bottom:24px;

    }

    .plan-card-header h3{

        font-size:20px;

    }

    .plan-description{

        font-size:10px !important;

    }

    .plan-details{

        gap:12px;

        padding:28px 0;

    }

    .plan-detail h4{

        font-size:8px;

        margin-bottom:12px;

    }

    .plan-detail p{

        font-size:10px;

        line-height:1.9;

    }

    .plan-detail p span{

        font-size:9px;

    }

    .request-note{

        margin-top:6px;

        font-size:8px;

        line-height:1.7;

    }

    /* INCLUDEDとREQUESTはスマホも横並び */

    .plan-extra-grid{

        grid-template-columns:repeat(2,1fr);

        gap:12px;

        padding:28px 0;

    }

    .plan-extra-block h4{

        font-size:7px;

        margin-bottom:12px;

    }

    .plan-extra-block p{

        font-size:8px;

        line-height:1.8;

        margin-bottom:10px;

    }

    .plan-extra-block p span{

        font-size:7px;

    }

    .request-exclusion-title{

    margin:8px 0 6px !important;

}

.request-list li{

    line-height:1.6;

}

    /* OPTIONも横2列 */

    .plan-option-single{

        padding:28px 0;

    }

    .plan-option-single h4{

        font-size:8px;

        margin-bottom:18px;

    }

    .option-columns{

        grid-template-columns:repeat(2,1fr);

        gap:10px;

    }

    .plan-option-single p{

        font-size:8px;

        line-height:1.8;

    }

    .plan-option-single .option-name{

        font-size:8px;

    }

    .option-bottom{

    margin-top:16px !important;

}

    .plan-price{

        padding-top:28px;

    }

    .plan-sub-title{

        font-size:15px;

        margin:28px 0 20px;

        letter-spacing:.05em;

    }

}
.included-block p{

    line-height:1.65;

}

.included-block p span{

    margin-bottom:2px;

}
/* INCLUDEDだけ詰める */

.included-block p{

    line-height:1.55;

    margin:0;

}

.included-block p span{

    display:inline;

}
.included-or{

    display:inline-block;

    margin:4px 0;

    font-size:0.9em;

    color:#888;

}
/* ---------- FOREST PLAN ---------- */

.forest-note{

    margin:0 !important;

}

.forest-note span{

    font-size:9px;

    color:#777;

}

.forest-plan .badge{

    display:inline-block;

    margin-left:8px;

    padding:2px 8px;

    border-radius:999px;

    background:#2F2E2E;

color:#fff;

    font-size:9px;

    font-weight:500;

    letter-spacing:.08em;

    vertical-align:middle;

}

@media(max-width:768px){

    .forest-note span{

        font-size:7px;

    }

    .forest-plan .badge{

        margin-left:5px;

        padding:2px 6px;

        font-size:7px;

    }

}
/* ---------- BUTTERBUR+ PLAN ---------- */

.limited-badge{

    display:inline-block;

    margin-left:8px;

    padding:3px 8px;

    border:1px solid #777;

    border-radius:20px;

    color:#555;

    font-size:9px;

    font-weight:400;

    vertical-align:middle;

}

.option-columns-single{

    grid-template-columns:1fr;

    max-width:360px;

    margin:0 auto;

}

@media(max-width:768px){

    .limited-badge{

        margin-left:5px;

        padding:2px 6px;

        font-size:7px;

    }

    .option-columns-single{

        grid-template-columns:1fr;

        max-width:100%;

    }

}
.shooting-extra{

    margin-top: 12px;

}

.special-title{

    margin-top: 18px;

    margin-bottom: 6px;

    font-size: 0.72rem;

    letter-spacing: .18em;

    text-transform: uppercase;

    color: #9b938b;

}
/* ---------- BUTTERBUR+ DATA BENEFITS ---------- */

/* IMPORTANT:
   Repeated .data-benefits rules are intentionally preserved.
   Removing one of them broke both PC and mobile layouts during testing.
*/

.data-benefits{

    margin-top:14px;

}

.data-benefits p{

    margin:0;

}

.data-benefits .benefit-title{

    margin:12px 0 4px;

    font-size:9px;

    letter-spacing:.18em;

    color:#999;

}

.data-benefits .advance{

    margin-top:12px;

}

@media(max-width:768px){

    .data-benefits{

        margin-top:10px;

    }

    .data-benefits .benefit-title{

        margin:9px 0 3px;

        font-size:7px;

        letter-spacing:.14em;

    }

}
.shooting-extra{

    margin-top:12px !important;

}

.data-benefits{

    margin-top:14px;

}

.data-benefits p{

    margin:0;

}

.data-benefits .benefit-title{

    margin:12px 0 4px;

    font-size:9px;

    letter-spacing:.18em;

    color:#999;

}

@media(max-width:768px){

    .shooting-extra{

        margin-top:8px !important;

    }

    .data-benefits{

        margin-top:10px;

    }

    .data-benefits .benefit-title{

        margin:9px 0 3px;

        font-size:7px;

        letter-spacing:.14em;

    }

}
/* ------------------------------

   PLAN CONTACT

------------------------------ */

/* ---------- Plan contact button ---------- */

.plan-contact{

    padding:56px 20px 76px;

    text-align:center;

}

.plan-contact-link{

    display:inline-flex;

    align-items:center;

    justify-content:center;

    gap:18px;

    min-width:180px;

    padding:15px 28px;

    border:1px solid #d8d3cc;

    background:#fff;

    color:#222;

    font-family:inherit;

    font-size:13px;

    letter-spacing:.16em;

    text-decoration:none;

    transition:

        background-color .3s ease,

        color .3s ease,

        border-color .3s ease;

}

.plan-contact-link span{

    font-size:14px;

    transition:transform .3s ease;

}

.plan-contact-link:hover{

    background:#222;

    border-color:#222;

    color:#fff;

}

.plan-contact-link:hover span{

    transform:translateX(4px);

}

@media(max-width:768px){

    .plan-contact{

        padding:52px 20px 64px;

    }

    .plan-contact-link{

        min-width:150px;

        padding:13px 24px;

        font-size:11px;

        letter-spacing:.14em;

    }

}
/* ---------- PLAN HEADER IMAGE ---------- */

/* ---------- Plan card header image ---------- */

.plan-card-header-visual{

    display:grid;

    grid-template-columns:300px 1fr;

    align-items:center;

    gap:42px;

    max-width:650px;

    margin:0 auto;

    padding-bottom:34px;

}

.plan-card-header-visual .plan-image{

    width:100%;

    margin:0;

}

.plan-card-header-visual .plan-image img{

    display:block;

    width:100%;

    aspect-ratio:4 / 3;

    object-fit:cover;

    opacity:.68;

    filter:saturate(.82) brightness(1.05) contrast(.96);

    transition:

        opacity .4s ease,

        filter .4s ease;

}

.plan-card-header-visual .plan-image:hover img{

    opacity:.82;

    filter:saturate(.9) brightness(1.02) contrast(.98);

}

.plan-header-text{

    text-align:left;

}

.plan-header-text h3{

    margin:0 0 20px;

}

.plan-header-text .plan-description{

    margin:0;

    line-height:2;

}

/* ---------- MOBILE ---------- */

@media(max-width:768px){

    .plan-card-header-visual{

        display:grid;

        grid-template-columns:118px minmax(0, 1fr);

        align-items:center;

        gap:16px;

        width:100%;

        max-width:100%;

        padding:8px 4px 26px;

    }

    .plan-card-header-visual .plan-image{

        width:118px;

        max-width:118px;

        margin:0;

    }

    .plan-card-header-visual .plan-image img{

        display:block;

        width:100%;

        aspect-ratio:4 / 3;

        object-fit:cover;

        opacity:.72;

        filter:saturate(.82) brightness(1.08) contrast(.95);

    }

    .plan-header-text{

        min-width:0;

        padding-right:4px;

        text-align:left;

    }

    .plan-header-text h3{

        margin:0 0 11px;

        font-size:18px;

        line-height:1.25;

        letter-spacing:.03em;

        white-space:nowrap;

    }

    .plan-header-text .plan-description{

        margin:0;

        padding:0;

        font-size:8px;

        line-height:1.85;

        letter-spacing:0;

        white-space:normal;

        word-break:normal;

    }

    .forest-plan .badge{

        margin-left:5px;

        padding:2px 6px;

        background:#2f2e2e;

        color:#fff;

        font-size:7px;

        letter-spacing:.04em;

    }

}
@media(max-width:768px){

    .butterbur-plus-plan .plan-header-text h3{

        font-size:15px;

        letter-spacing:0;

        white-space:nowrap;

    }

    .butterbur-plus-plan .limited-badge{

        margin-left:4px;

        padding:2px 5px;

        font-size:6px;

    }

}
/* PCではスマホ文章を非表示 */

/* ---------- Pose Others: desktop/mobile text ---------- */

.others-sp{

    display:none;

}

@media (max-width:768px){

    /* PC文章を隠してスマホ文章を表示 */

    .others-pc{

        display:none;

    }

    .others-sp{

        display:block;

        max-width:320px;

        margin:0 auto;

        padding:0 8px;

        color:#777;

        text-align:center;

    }

    .others-sp p{

        margin:0 auto 17px;

        font-size:9.5px !important;

        font-weight:300;

        line-height:2;

        letter-spacing:.02em;

        color:#777;

        text-align:center;

    }

    /* 関連する2つの説明を一つのまとまりに */

    .others-related{

        margin:0 auto 18px;

    }

    .others-related p{

        margin-bottom:7px;

    }

    .others-related p:last-child{

        margin-bottom:0;

    }

    /* 最後の案内 */

    .others-contact{

        margin-top:22px !important;

        margin-bottom:0 !important;

        color:#666 !important;

    }

}
/* ==================================================
   FAQ - FINAL RULES
================================================== */

/* =========================

   FAQ FINAL

========================= */

.faq-page{

    max-width:900px;

    margin:0 auto;

    padding:60px 24px 100px;

}

.faq-page > .plan-intro{

    max-width:620px;

    margin:0 auto 36px;

    font-size:12px;

    line-height:2;

    color:#666;

    text-align:center;

}

.faq-tabs{

    display:flex;

    justify-content:flex-start;

    gap:42px;

    max-width:760px;

    margin:0 auto 42px;

}

.faq-tabs a{

    padding-bottom:7px;

    color:#444;

    font-size:14px;

    letter-spacing:.04em;

    text-decoration:none;

}

.faq-tabs a.active{

    color:#2f2e2e;

    border-bottom:1px solid #9aafa6;

}

.faq-list{

    max-width:760px;

    margin:0 auto;

}

.faq-item{

    display:flex;

    flex-wrap:wrap;

    align-items:stretch;

    margin:0 0 20px;

    padding:0;

    border:1px solid #ddd8d1;

    background:#fff;

}

.faq-number{

    width:54px;

    min-width:54px;

    display:flex;

    align-items:center;

    justify-content:center;

    background:#c8d9d1;

    color:#fff;

    font-family:serif;

    font-size:14px;

    font-weight:400;

}

.faq-question{

    flex:1;

    display:flex;

    align-items:center;

    justify-content:space-between;

    min-height:62px;

    margin:0;

    padding:0 20px;

    color:#333;

    font-size:13px;

    font-weight:400;

    line-height:1.6;

    letter-spacing:.02em;

    cursor:pointer;

}

.faq-icon{

    margin-left:18px;

    color:#888;

    font-size:11px;

    transition:transform .25s ease;

}

.faq-question.open .faq-icon{

    transform:rotate(180deg);

}

.faq-answer{

    display:none;

    width:100%;

    padding:22px 28px 26px;

    border-top:1px solid #ece8e3;

    background:#fff;

}

.faq-answer.active{

    display:block;

}

.faq-answer p{

    margin:0;

    color:#666;

    font-size:11px;

    font-weight:300;

    line-height:2;

    letter-spacing:.015em;

    text-align:left;

}

/* =========================

   FAQ MOBILE

========================= */

@media(max-width:768px){

    .faq-page{

        padding:35px 16px 70px;

    }

    .faq-page > .plan-intro{

        max-width:300px;

        margin:0 auto 30px;

        font-size:8.5px;

        line-height:2;

        letter-spacing:.02em;

    }

    .faq-tabs{

        gap:24px;

        margin:0 auto 34px;

    }

    .faq-tabs a{

        font-size:10px;

        padding-bottom:5px;

    }

    .faq-list{

        width:100%;

        max-width:100%;

    }

    .faq-item{

        margin-bottom:15px;

    }

    .faq-number{

        width:46px;

        min-width:46px;

        font-size:11px;

    }

    .faq-question{

        min-height:58px;

        padding:0 13px;

        font-size:10px;

        font-weight:400;

        line-height:1.55;

        letter-spacing:.01em;

    }

    .faq-icon{

        margin-left:10px;

        font-size:9px;

    }

    .faq-answer{

        padding:18px 16px 22px;

    }

    .faq-answer p{

        font-size:9px;

        line-height:2;

        letter-spacing:.015em;

    }

}
/* FAQ・GUIDE タイトルをPLANと統一 */

.faq-page > .pose-title{

    max-width:760px;

    margin:55px auto 36px;

    padding:14px 0;

    border-top:1px solid #ebe7df;

    border-bottom:1px solid #ebe7df;

    font-family:serif;

    font-size:28px;

    font-weight:400;

    letter-spacing:.12em;

    color:#2b2b2b;

    text-align:center;

}
@media(max-width:768px){

    .faq-page > .pose-title{

        width:100%;

        margin:52px auto 20px;

        padding:10px 0;

        font-size:18px;

        font-weight:500;

        letter-spacing:.08em;

        color:#2b2b2b;

    }

}