/* ======================================================
   Patient Page
====================================================== */

.pt-page{
    box-sizing:border-box;
    width:100%;
    margin:0 auto;
    padding:60px 20px 100px;
}

.pt-section{
    scroll-margin-top:160px;
    max-width: 1280px;
    margin:80px auto 0;
}
.pt-heading{
    margin-bottom:40px;
    text-align:center;
}
.pt-title{
    margin-bottom:15px;
    font-size:34px;
    font-weight:700;
    color:#222;
    line-height:1.4;
}

.pt-lead{
    max-width:760px;
    margin:0 auto;
    color:#666;
    line-height:1.9;
    font-size:16px;
}

.pt-banner{
    width:100%;
    height: auto;
    overflow:hidden;
}

.pt-banner img{
    width:100%;
    height:auto;
    object-fit:cover;
    object-position:center center;
    display:block;
}
/* ======================================================
   Grid
====================================================== */

.pt-grid{
    display:grid;
    justify-content:center;
    grid-template-columns:repeat(auto-fit, minmax(240px, 280px));
    gap:30px;
}

.pt-grid-5{
    grid-template-columns:repeat(5,1fr);
}

.pt-grid-4{
    grid-template-columns:repeat(4,1fr);
}



/* ======================================================
   Card
====================================================== */

.pt-card{
    height:100%;
    background:#fff;
    border:1px solid #e5e5e5;
    border-radius:6px;
    position:relative;
    box-shadow:0 2px 8px rgba(0,0,0,.05);
    transition:
        border-color .25s ease,
        box-shadow .25s ease;
}

.pt-card:hover{
    border-color:#00843D;
    box-shadow:0 6px 18px rgba(0,0,0,.05);
}
.pt-card:hover .pt-category{
    border-color:#00843D;
    color:#00843D;
}

.pt-card a{
    position:relative;
    display:flex;
    flex-direction:column;
    height:100%;
    color:inherit;
    text-decoration:none;
}

.pt-card-image{
    margin:30px 12px 0;
    border-radius:4px;
    aspect-ratio:16 / 9;
    overflow:hidden;
    background:#f8f8f8;
    border-bottom:1px solid #ddd;
}

.pt-card-image img{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .35s ease;
}

.pt-card:hover .pt-card-image img{
    transform:scale(1.03);
}

.pt-card-body{
    position:relative;
    padding:34px 18px;
}

.pt-card-body::after{
    content:"";
    position:absolute;
    right:18px;
    bottom:8px;
    width:18px;
    height:18px;
    background:url("/asset/img/common/icon_blank.svg") no-repeat center/contain;
    opacity:.6;
    transition:.25s;
}

.pt-card:hover .pt-card-body::after{
    opacity:1;
}
.pt-category{
    position:absolute;
    top:-15px;
    left:50%;
    transform:translateX(-50%);
    display:flex;
    justify-content:center;
    align-items:center;
    min-width:100px;
    height:30px;
    padding:0 24px;
    background:#fff;
    border:1px solid #868a91;
    border-radius:999px;
    font-size:14px;
    font-weight:700;
    color:#62666d;
    z-index:10;
}
.pt-card-title{
    margin-bottom:10px;
    font-size:18px;
    line-height:1.5;
    font-weight:700;
    color:#333;
    transition:color .25s ease;
}

.pt-card:hover .pt-card-title{
    color:#00843D;
}

.pt-card-text{
    font-size:14px;
    line-height:1.8;
    color:#666;
}


/* ======================================================
   Popup
====================================================== */

.pt-popup{
    position: relative;
    width:min(90vw,700px);
    box-sizing:border-box;
    margin:auto;
    padding:40px;
    border-radius:6px;
    background:#fff;
    text-align:center;
}

.pt-popup-image{
    margin-bottom:30px;
}

.pt-popup-image img{
    width:100%;
    border-radius:12px;
}

.pt-popup-title{
    margin-bottom:18px;
    font-size:26px;
    font-weight:700;
    color:#00843D;
}

.pt-popup-text{
    margin-bottom:30px;
    line-height:2;
    color:#666;
}


/* ======================================================
   Button
====================================================== */

.pt-btn{
    display:inline-flex;
    justify-content:center;
    align-items:center;
    min-width:240px;
    height:54px;
    padding:0 30px;
    border-radius:999px;
    background:#00843D;
    color:#fff;
    text-decoration:none;
    font-weight:700;
    transition:.25s;
}

.pt-btn:hover{
    background:#007935;
}

.pt-card-flat{
    border:none;
    box-shadow:none;
    background:transparent;
    border-radius:0;
}
.pt-card-flat a{
    text-decoration: none;
    color: inherit;
}

.pt-card-flat:hover{
    box-shadow:none;
    border:none;
    text-decoration: none;
}
.pt-card-flat-image{
    padding:16px;
    background:#fff;
    border:1px solid #e5e5e5;
    border-radius:6px;
    overflow:hidden;
    transition:border-color .25s ease;
}
.pt-card-flat-image img{
    display:block;
    width:100%;
    height:100%;
    object-fit:contain;
    transition:none;
}
.pt-card-flat:hover .pt-card-flat-image{
    border-color:#00843D;
}
.pt-card-flat:hover .pt-card-flat-image img{
    transform:none;
}
.pt-card-flat-body{
    position:relative;
    padding:20px 0 0;
}
.pt-card-flat-title{
    margin-bottom:10px;
    font-size:18px;
    line-height:1.5;
    font-weight:700;
    color:#333;
    transition:color .25s ease;
}
.pt-card-flat-title::after{
    content:"↗";
    margin-left:.3em;
    font-size:.9em;
}

.pt-card-flat:hover .pt-card-flat-title{
    color:#00843D;
}

.pt-card-flat-text{
    font-size:14px;
    line-height:1.8;
    color:#666;
}

/* ======================================================
   Responsive
====================================================== */

@media (max-width:1100px){

    .pt-grid-5{
        grid-template-columns:repeat(3,1fr);
    }

    .pt-grid-4{
        grid-template-columns:repeat(2,1fr);
    }

}

@media (max-width:767px){
    .pt-page{
        width:calc(100% - 32px);
        margin:0 auto;
        padding:0;
    }
    .pt-banner{
        margin:60px 0 40px;
    }

    .pt-banner img{
        display:block;
        width:100%;
        height:auto;
        object-position:center;
    }

    .pt-section{
        margin-top:60px;
    }

    .pt-title{
        font-size:28px;
    }

    .pt-lead{
        font-size:15px;
    }

    .pt-grid-5,
    .pt-grid-4{
        grid-template-columns:1fr;
        gap:20px;
    }
    .pt-grid{
        width:100%;
    }

    .pt-card{
        width:100%;
        max-width:none;
        margin:0;
    }

    .pt-card-title{
        font-size:20px;
    }

    .pt-card-body{
        padding:18px;
    }

    .pt-popup{
        width:calc(100% - 32px);
        max-width:none;
        padding:30px 20px;
    }

    .pt-popup-title{
        font-size:22px;
    }

    .pt-btn{
        width:100%;
        max-width:220px;
        min-width:0;
    }

    .pt-card-flat{
        width:100%;
        max-width:none;
        margin:0;
    }

    .pt-card-flat .pt-card-flat-image{
        padding:12px;
    }

    .pt-card-flat-body{
        padding:16px 0 0;
    }

    .pt-card-flat-title{
        font-size:20px;
    }

    .pt-card-flat-text{
        font-size:15px;
        line-height:1.8;
    }

}

/* =====================================
   Popup Close
===================================== */

.mfp-inline-holder .pt-popup .mfp-close{
    position:absolute;
    top:16px;
    right:16px;
    width:40px;
    height:40px;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:0;
    margin:0;
    color:#666;
    font-size:32px;
    line-height:1;
    background:none;
    border:none;
}

.mfp-inline-holder .pt-popup .mfp-close:hover{
    color:#00843D;
}


.pt-support-banner{
    max-width:1200px;
    margin:40px auto 60px;
}

.pt-support-banner img{
    display:block;
    width:100%;
    border:1px solid #ddd;
    transition:.25s;
}

.pt-support-banner img:hover{
    opacity:.9;
}

.pt-support-block{
    margin-top:80px;
}

.pt-support-title{
    margin-bottom:30px;
    font-size:28px;
    font-weight:700;
    color:#00843D;
    text-align: center;
}

.pt-support-content{
    min-height:150px;
}
.pt-popup-btns{
    display:flex;
    justify-content:center;
    align-items:center;
    gap:24px;
    margin-top:40px;
}

.pt-popup-btns .pt-btn{
    flex:1;
    max-width:280px;
}
.pt-btn-outline{
    background:#fff;
    border:3px solid #00843D;
    color:#00843D;
}

.pt-btn-outline:hover{
    background:#00843D;
    color:#fff;
}
@media (max-width:480px){

    .pt-popup-btns{
        gap:12px;
    }

    .pt-popup-btns .pt-btn{
        max-width:none;
        min-width:0;
        font-size:18px;
    }
    .mfp-inline-holder .pt-popup .mfp-close{
    top:2px;
    right:2px;
    }

}

.pt-feature-list{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
    gap:40px 32px;
}
.pt-feature-card{
    text-align:left;
    padding: 14px;
}
.pt-feature-image{
    margin-bottom:20px;
}
.pt-feature-image img{
    width:100%;
    border-radius:16px;
    display:block;
}
.pt-feature-title{
    margin-bottom:12px;
    font-size:20px;
    font-weight:700;
    color:#74b85d;
    line-height:1.5;
}
.pt-feature-text{
    font-size:15px;
    line-height:1.8;
    color:#555;
}
/*======================================
  会員・非会員比較表
======================================*/

.pt-feature-card table{
    width:100%;
    border-collapse:collapse;
    table-layout:fixed;
    font-size:16px;
    background:#fff;
}
.pt-feature-card th,
.pt-feature-card td{
    border:1px solid #d9d9d9;
    padding:12px 10px;
    text-align:center;
    vertical-align:middle;
    line-height:1.4;
}
.pt-feature-card tbody th:first-child{
    width:46%;
    background:#75bd6a;
    color:#fff;
    font-size:16px;
    font-weight:700;
    text-align:left;
}

.pt-feature-card tbody tr:first-child th{
    background:#75bd6a;
    color:#fff;
    text-align:center;
    font-size:18px;
}

.pt-feature-card td{
    font-size:24px;
    font-weight:700;
    color:#8A3F1A;
}

.pt-feature-card tbody tr:first-child th:first-child{
    background:#75bd6a;
}
@media (max-width:767px){
    .pt-feature-card table{
        font-size:14px;
    }

    .pt-feature-card th,
    .pt-feature-card td{
        padding:12px 8px;
    }

    .pt-feature-card tbody th:first-child{
        font-size:15px;
        padding-left:12px;
    }

    .pt-feature-card td{
        font-size:22px;
    }

}
.forPC { display:block; }
.forSP { display:none; }

@media only screen and (max-width : 767px){
  .forPC { display:none; }
  .forSP { display:block; }
}
.mt-180{
    margin-top: 180px;
}
.mw-1200{
    max-width: 1080px;
    margin: 180px auto 80px;
}

/* Top Banner (Ashitae) */
  .top-banner {
    display: block;
    background: linear-gradient(135deg, #fcfcea 0%, #f4fdf4 100%);
    /*border: 2px solid #fdfffe;*/
    border-radius: 8px;
    padding: 10px 10px;
    margin-bottom: 60px;
    text-align: center;
    position: relative;
    box-shadow: 0 10px 30px rgba(46,125,79,0.08);
    transition: transform 0.3s, box-shadow 0.3s;
    text-decoration: none;
    color: inherit;
  }
.top-banner:hover{
    text-decoration: none;
}
  .top-banner-content {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
  }
.phone-wrap{
    flex:1.2;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:20px;
}
.top-banner .logo-area {
    flex: 1;
    text-align: center;
    background: url("/asset/img/patient/main.png") no-repeat center;
    background-size: 100%;
    min-height: 220px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.top-banner .logo-area h2 { color: #d37d2b; font-size: 52px; font-weight: 900; letter-spacing: 2px; }
.top-banner .logo-area p{
    display:inline-block;
    padding:8px 16px;
    margin-top:12px;
    background:rgba(255,255,255,.55);
    border-radius:8px;
    color:#2e7d4f;
    font-size:13px;
    font-weight:bold;
    line-height:2;
}
.top-banner .phone-area {
    display: flex; align-items: center; justify-content: center; gap: 15px;
    background:#fff;
    padding:25px 30px;
    border-radius:8px;
}
.top-banner .phone-area .icon{
    width:80px;
    height:80px;
    background:url("/asset/img/patient/icon-contact.png") no-repeat center;
    background-size:contain;
    flex-shrink:0;
}
  .top-banner .phone-area .icon svg { display:none; }
  .top-banner .phone-area .text { text-align: left; }
  .top-banner .phone-area .label { font-size: 13px; font-weight: bold; color: #555; }
  .top-banner .phone-area .number { font-size: 32px; font-weight: bold; color: #b74f3e; line-height: 1.1; }
  .top-banner .phone-area .hours { font-size: 11px; color: #666; }
  
.top-banner .features-area{
    flex:1;
    background:url("/asset/img/patient/top-about3.png") no-repeat center center;
    background-size:100% 100%;
    padding:40px 35px;
    text-align:left;
    font-size:14px;
    font-weight:bold;
    color:#444;
}
  .top-banner .features-area ul { list-style: none; padding: 0; margin-bottom: 10px; }
  .top-banner .features-area li { position: relative; padding-left: 14px; margin-bottom: 4px; }
  .top-banner .features-area li::before { content: '・'; position: absolute; left: 0; color: #2e7d4f; }
  
.top-banner-footer{
    display:flex;
    justify-content:center;
}
.top-banner-footer .scroll-hint{
    font-size:22px;
    font-weight:700;
    color:#444;
}
.scroll-hint{
    display:inline-flex;
    align-items:center;
    gap:10px;
    padding:4px 32px;
    border:2px solid #2e7d4f;
    border-radius:999px;
    background:#fff;
    color:#2e7d4f;
    font-size:20px;
    font-weight:700;
    transition:.3s;
}
.scroll-hint::before{
    content:"▼";
    font-size:18px;
}
.top-banner:hover .scroll-hint{
    background:#2e7d4f;
    color:#fff;
}
@keyframes arrowMove{
    0%,100%{transform:translateY(0);}
    50%{transform:translateY(4px);}
}
  .top-banner-footer .url {
    font-size: 14px; color: #2e7d4f; font-weight: bold; text-decoration: underline;
  }

/* Support Program Details */
  .support-program-section {
    max-width: 1200px;
    margin:80px auto 0;
  }

  .sp-box {
    border: 1px solid #9e9e9e;
    background: linear-gradient(135deg, #fcfcea 0%, #f4fdf4 100%);
    border-radius: 8px;
    padding: 20px;
    margin-bottom: 50px;
    text-align: center;
  }
  
  .sp-box-top {
    display: flex; justify-content: center; align-items: center; gap: 40px; margin-bottom: 30px;
  }

.sp-box-top .logo-area{
    flex:1;
    min-height:220px;
    display:flex;
    flex-direction:column;
    justify-content:center;
    align-items:center;
    text-align:center;
    background:url("/asset/img/patient/main.png") no-repeat center center;
    background-size:120%;
}
.sp-box-top .logo-area h2{
    color:#d37d2b;
    font-size:52px;
    font-weight:900;
    letter-spacing:2px;
}
.sp-box-top .logo-area p{
    display:inline-block;
    padding:6px;
    margin-top:12px;
    background:rgba(255,255,255,.55);
    border-radius:8px;
    color:#2e7d4f;
    font-size:12px;
    font-weight:bold;
    line-height:2;
}
.sp-box-top .phone-area{
    flex:1.2;
    display:flex;
    align-items:center;
    gap:20px;
    background:#fff;
    padding:25px 30px;
    border-radius:8px;
}
.sp-box-top .phone-area .icon{
    width:80px;
    height:80px;
    flex-shrink:0;
    background:url("/asset/img/patient/icon-contact.png") no-repeat center/contain;
}
.sp-box-top .phone-area .icon svg{
    display:none;
}
.sp-box-top .phone-area .text{
    text-align:left;
}
.sp-box-top .features-area{
    flex:1;
    background:url("/asset/img/patient/top-about3.png") no-repeat center center;
    background-size:100% 100%;
    padding:38px 34px;
    text-align:left;
    font-size:14px;
    font-weight:bold;
    color:#444;
}
.sp-box-top .phone-area .label { font-size: 13px; font-weight: bold; color: #555; }
.sp-box-top .phone-area .number { font-size: 32px; font-weight: bold; color: #b74f3e; line-height: 1.1; }
.sp-box-top .features-area ul { list-style: none; padding: 0; }
.sp-box-top .features-area li { position: relative; padding-left: 14px; }
.sp-box-top .features-area li::before { content: '・'; position: absolute; left: 0; color: #2e7d4f; }

  .sp-lead {
    font-size: 18px; font-weight: bold; color: #b74f3e; margin-bottom: 25px;
  }
  
  .sp-actions {
    display: flex; justify-content: center; gap: 20px;
  }
  .btn-login, .btn-register {
    display: inline-flex; align-items: center; justify-content: center;
    width: 220px; padding: 14px 20px; border-radius: 30px;
    font-size: 16px; font-weight: bold; text-decoration: none;
    transition: all 0.3s;
  }
  .btn-login {
    background: #fff; border: 2px solid #2e7d4f; color: #2e7d4f;
  }
  .btn-login::after{
    content:"";
    display:inline-block;
    width:26px;
    height:26px;
    margin-left:12px;
    background:url("/asset/img/patient/icon-user1.png") no-repeat center/contain;
  }
  .btn-login:hover { background: #2e7d4f;color:#fff; }
  .btn-login:hover::after{
    background-image:url("/asset/img/patient/icon-user2.png");
  }
  .btn-register {
    background: #e38d33; border: 2px solid #e38d33; color: #fff;
  }
  .btn-register::after{
    content:"";
    display:inline-block;
    width:26px;
    height:26px;
    margin-left:12px;
    background:url("/asset/img/patient/icon-entry2.png") no-repeat center/contain;
  }
.btn-register:hover{
    background:#fff;
    color:#e38d33;
}

.btn-register:hover::after{
    background-image:url("/asset/img/patient/icon-entry1.png");
}


  /* Features Layouts */
  .features-title {
    color: #e38d33; font-size: 20px; font-weight: bold;
    text-align: center; margin-bottom: 30px;
  }
  .features-title::before, .features-title::after {
    content: "〰〰"; color: #8fc247; margin: 0 15px; font-size: 16px; vertical-align: middle;
  }

  .unregistered-layout {
    display: flex; gap: 40px; margin-bottom: 60px;
  }
  .unreg-features {
    flex: 1.5; display: flex; gap: 30px;
  }
  .feature-item { text-align: center; flex: 1; }
  /* 未登録のサムネイル（丸枠設定） */
  .feature-item .img-wrap {
    width: 100%; aspect-ratio: 1; border-radius: 50%; overflow: hidden;
    margin-bottom: 15px; background: #fff; border: 4px solid #fff; box-shadow: 0 4px 10px rgba(0,0,0,0.05);
  }
  .feature-item .img-wrap img { width: 100%; height: 100%; object-fit: contain; }
  .feature-item h4 { font-size: 16px; font-weight: bold; color: #4ba65e; margin-bottom: 10px; line-height: 1.4; }
  .feature-item p { font-size: 14px; color: #666; text-align: left; }

  .unreg-side {
    flex: 1;
  }
  .side-banner {
    background: #11823b; color: #fff; text-align: center; padding: 12px;
    border-radius: 4px; font-weight: bold; font-size: 15px; margin-bottom: 15px;
    display: flex; align-items: center; justify-content: center;
  }
  .side-banner::after { content: "▶"; margin-left: 10px; font-size: 12px; }
  .side-contact {
    background: #fdfaf4; border-radius: 8px; padding: 20px; text-align: center; margin-bottom: 20px;
  }
  .side-contact p { font-size: 12px; font-weight: bold; color: #555; margin-bottom: 10px; }
  .side-contact .phone {
    display: flex; align-items: center; justify-content: center; gap: 10px; color: #b74f3e; font-size: 24px; font-weight: bold;
  }
  .side-contact .phone svg { width: 20px; height: 20px; fill: #555; }
  .side-contact .hours { font-size: 11px; color: #666; margin-top: 5px; }

  .comparison-table {
    width: 100%; border-collapse: collapse; font-size: 13px; text-align: center;
  }
  .comparison-table th, .comparison-table td {
    border: 1px solid #e0e0e0; padding: 12px 8px;
  }
  .comparison-table th { background: #7ab78a; color: #fff; font-weight: bold; }
  .comparison-table .row-header { background: #96c9a3; color: #fff; text-align: left; padding-left: 15px; font-weight: bold; }
  .comparison-table td { background: #fff; color: #555; font-size: 16px; }
  .comparison-table td.cross { color: #aaa; }


  .registered-layout {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; margin-bottom: 60px;
  }
  
  /* ===== 登録後のサムネイル（白枠・背景なし設定） ===== */
  .registered-layout .feature-item .img-wrap { 
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
    aspect-ratio: auto;
    overflow: visible;
    margin-bottom: 15px;
  }
  .registered-layout .feature-item .img-wrap img { 
    width: 100%; height: auto; object-fit: contain; 
  }
  .registered-layout .feature-item h4 { color: #4ba65e; }
  .registered-layout .feature-item .new-badge { color: #d32f2f; font-weight: bold; margin-right: 5px; }

  /* 2行目を中央寄せにするため */
  .registered-layout .feature-item:nth-child(4) { grid-column: 1 / span 1; }
  
  @media(max-width: 900px) {
    .page-container { padding: 0 20px 60px; }
    .top-banner-content { flex-direction: column; text-align: center; }
    .top-banner .logo-area, .top-banner .phone-area, .top-banner .features-area { text-align: center; }
    .top-banner .features-area ul { display: inline-block; text-align: left; }
    .info-cards { grid-template-columns: 1fr; }
    .links-grid { grid-template-columns: repeat(2, 1fr); }
    .unregistered-layout { flex-direction: column; }
    .registered-layout { grid-template-columns: repeat(2, 1fr); }
    .sp-box-top { flex-direction: column; gap: 20px; }
    .sp-actions { flex-direction: column; align-items: center; }
    .btn-login, .btn-register { width: 100%; max-width: 300px; }
  }
  @media(max-width: 600px) {
    .links-grid { grid-template-columns: 1fr; }
    .registered-layout { grid-template-columns: 1fr; }
    .unreg-features { flex-direction: column; }
  }