*{
    margin:0;
    padding:0;
    box-sizing:border-box;
}

body{

    margin:0;

    font-family:
        "Yu Gothic",
        "Hiragino Sans",
        "Yu Gothic UI",
        "Meiryo",
        sans-serif;

    background:#eef6fb;

    color:#23313f;

    line-height:1.7;

    -webkit-font-smoothing:antialiased;
    text-rendering:optimizeLegibility;
}

/***************************
Header
****************************/


/***************************
navigation
****************************/

/***************************
section
****************************/

section{

    max-width:1200px;

    margin:40px auto;

    padding:0 20px;

}

.card{
    background:#fff;
    border-radius:22px;
    padding:32px;
    margin-bottom:32px;
    box-shadow:0 8px 28px rgba(15,23,42,.08);
}

.card h2{
    color:#1678B8;
    margin-bottom:20px;
    font-size:34px;
    line-height:1.25;
}

.card h3{

    margin-top:20px;

    color:#1678B8;

}

/***************************
schedule
****************************/

.schedule{

    display:grid;

    grid-template-columns:repeat(4,1fr);

    gap:14px;

    margin-top:18px;

}

.day{

    padding:14px;

    border-radius:14px;

}

.day h3{

    font-size:18px;

    margin-bottom:8px;

}

.day p{

    font-size:14px;

    line-height:1.45;

    margin:4px 0;

}

/***************************
table
****************************/

table{

    width:100%;

    border-collapse:collapse;

    margin-top:20px;

}

th{

    background:#3B82F6;

    color:white;

    padding:15px;

    font-size:20px;

}

td{

    border-bottom:1px solid #ddd;

    padding:14px;

    font-size:20px;

}

/***************************
footer
****************************/


/***************************
スマホ
****************************/

@media(max-width:768px){

header h1{

font-size:34px;

}

header h2{

font-size:20px;

}

nav a{

font-size:16px;

}

.card h2{

font-size:28px;

}

td{

font-size:18px;

}

}

.date{
    font-size:20px;
    color:#666;
    margin-bottom:25px;
}

.mission{
    background:#E8F6FD;
    border-left:8px solid #3B82F6;
    border-radius:16px;
    padding:20px 24px;
    margin-bottom:35px;
}

.mission strong{
    display:block;
    font-size:22px;
    color:#1678B8;
    margin-bottom:8px;
}

.mission p{
font-size:18px;
line-height:1.8;
}

.timeline-wrapper{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:25px;
    margin-bottom:35px;
}

.family{
    background:#F8FCFF;
    border-radius:18px;
    padding:25px;
}

.family h3{
    margin-bottom:20px;
    color:#1678B8;
}

.timeline{
    border-left:4px solid #A8D8F5;
    padding-left:25px;
}

.item{
    position:relative;
    display:grid;
    grid-template-columns:88px 1fr;
    gap:18px;
    margin-bottom:22px;
    align-items:flex-start;
}

.item::before{
    content:"";
    position:absolute;
    width:14px;
    height:14px;
    border-radius:50%;
    background:#0EA5E9;
    left:-33px;
    top:8px;
}

.time{
    font-size:18px;
    font-weight:700;
    color:#1678B8;
    white-space:nowrap;
}

.text{
    font-size:18px;
    line-height:1.6;
}

.info-area{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(280px,1fr));
    gap:20px;
    width:100%;
    align-items:start;
}

.info-box{
    background:#F6FBFE;
    border-radius:18px;
    padding:22px;
    height:100%;
    box-shadow:0 2px 10px rgba(0,0,0,.05);
min-width:0;
overflow-wrap:anywhere;
box-sizing:border-box;
width:100%;
}

.info-box h3{
    color:#1678B8;
    margin-bottom:15px;
}

.info-box ul{
    padding-left:20px;
}

.info-box li{
    margin-bottom:10px;
    font-size:17px;
}

.info-box table{
    margin-top:8px;
}

.info-box td{
    font-size:18px;
    border:none;
    padding:8px 0;
}

.info-box td:last-child{
    text-align:right;
    font-weight:bold;
    color:#0EA5E9;
}

/* スマホ */

@media(max-width:900px){

.timeline-wrapper{
    grid-template-columns:1fr;
}

.info-area{
    grid-template-columns:1fr;
}

}

.trip-status{
    margin-top:-35px;
    position:relative;
    z-index:10;
}

.status-card{

    max-width:1100px;

    margin:auto;

    background:white;

    border-radius:20px;

    display:grid;

    grid-template-columns:repeat(4,1fr);

    gap:20px;

    padding:25px;

    box-shadow:0 12px 30px rgba(0,0,0,.12);

}

.status-card div{

    text-align:center;

}

.label{

    display:block;

    color:#666;

    font-size:16px;

    margin-bottom:8px;

}

.status-card p{

    font-size:24px;

    color:#1678B8;

    font-weight:bold;

}

.highlight{
    background:#EAF7FF;
    border-radius:18px;
    padding:18px 22px;
    margin-bottom:28px;
}

.highlight h3{
    color:#1678B8;
    margin-bottom:15px;
    text-align:center;
    font-size:20px;
}

.highlight-grid{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:20px;
    align-items:start;
}

.highlight-grid div{
    background:white;
    border-radius:14px;
    padding:16px;
    text-align:center;
    font-size:18px;
    line-height:1.4;
    box-shadow:0 3px 10px rgba(0,0,0,.08);
    display:flex;
flex-direction:column;
justify-content:flex-start;
}

.timeline-single{
    border-left:4px solid #A8D8F5;
    padding-left:25px;
    margin-bottom:28px;
}

@media(max-width:900px){

.highlight-grid{

    display:grid;

    grid-template-columns:2fr 2fr 1fr;

    gap:20px;

    align-items:start;

}

}

header.hero{
    margin:0;
    padding:0;
}

footer{
    margin-top:60px;
}

.hero{

    background:
        linear-gradient(rgba(0,0,0,.35),rgba(0,0,0,.35)),
        url("./assets/images/hero.jpg");

    background-size:cover;
    background-position:center;
    background-repeat:no-repeat;

    min-height:70vh;

    display:flex;
    align-items:center;
    justify-content:center;

    text-align:center;
    color:#fff;

    padding:60px 20px;
}

.hero-overlay{

    width:100%;
    max-width:1000px;

    margin:0 auto;

    padding:0 16px;

}

.hero-subtitle{

    letter-spacing:4px;

    text-transform:uppercase;

    font-size:18px;

    opacity:.9;

    margin-bottom:20px;

}

.hero h1{

    font-size:clamp(2.3rem,5vw,3.8rem);

    line-height:1.15;

    margin-bottom:18px;

}

.hero h2{

    font-size:34px;

    font-weight:300;

    margin-bottom:20px;

}

.hero-date{

    font-size:1.2rem;

    margin-bottom:32px;

}

.hero-info{

    display:grid;

    grid-template-columns:repeat(4,minmax(120px,1fr));

    gap:18px;

}

.hero-info div{
    background:rgba(255,255,255,.18);
    backdrop-filter:blur(12px);
    border:1px solid rgba(255,255,255,.18);
    border-radius:18px;
    padding:25px;
    transition:transform .2s ease, box-shadow .2s ease;
}

.hero-info span{

    font-size:34px;

    display:block;

    margin-bottom:12px;

}

.hero-info div:hover{
    transform:translateY(-3px);
    box-shadow:0 10px 25px rgba(0,0,0,.18);
}
.hero-info strong{

    display:block;

    font-size:24px;

}

.hero-info small{

    font-size:14px;

    opacity:.85;

}

}

@media(max-width:900px){

.hero h1{

font-size:38px;

}

.hero h2{

font-size:24px;

}

.hero-info{

grid-template-columns:repeat(2,1fr);

}

}

.main-nav{

    position:sticky;
    top:0;
    z-index:100;

    display:flex;
    flex-wrap:nowrap;
    overflow-x:auto;
    overflow-y:hidden;
    white-space:nowrap;
    align-items:center;

    gap:6px;
    padding:8px 10px;

    background:#fff;

    box-shadow:0 2px 8px rgba(0,0,0,.08);

    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;

}

.main-nav::-webkit-scrollbar{
    display:none;
}

.main-nav a{

    flex:0 0 auto;

    display:flex;
    align-items:center;
    justify-content:center;

    min-height:40px;

    padding:8px 14px;

    font-size:14px;
    font-weight:600;

    border-radius:20px;

    transition:
        background-color .2s ease,
        color .2s ease,
        transform .2s ease;

}
.main-nav a:hover{

    background:#1678B8;

    color:#fff;

    transform:translateY(-1px);

}

@media(max-width:900px){

.main-nav{

gap:8px;

padding:12px;

}

.main-nav a{

font-size:14px;

padding:8px 14px;

}

}
html{
    scroll-behavior:smooth;
    scroll-padding-top:90px;
    scroll-padding-inline:16px;
}

#day2 .timeline-single{

    margin-top:30px;

}

#day2 .mission{

    margin-bottom:30px;

}

#day2 .item{

    border-bottom:1px solid #E8EEF5;

    padding-bottom:18px;

}

#day2 .item:last-child{

    border-bottom:none;

}

#day2 .time{

    color:#E67E22;

    font-size:20px;

}

#day2 strong{

    color:#1678B8;

}

#day1 .info-box h3{

    text-align:left;

}
.memo-box{
    margin-top:10px;
}

.memo-line{
    border-bottom:1px dashed #C7D2DA;
    height:26px;
}
.sub-text{
    color:#666;
    font-size:16px;
}

.note{
    color:#777;
    font-size:15px;
    margin-top:8px;
}
.day-number{
    display:block;
    font-size:34px;
    font-weight:bold;
    color:#1678B8;
    margin-bottom:8px;
}

.day-title{
    display:block;
    font-size:26px;
    font-weight:600;
    color:#333;
}
.day-header{
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:20px;
    flex-wrap:wrap;
    margin-bottom:18px;
}

.day-header h2{
    margin:0;
}

.day-header .date{
    color:#1678B8;
    font-weight:600;
    white-space:nowrap;
    margin-left:auto;
}
.group-title{
    color:#1678B8;
    font-size:20px;
    font-weight:700;
    margin:32px 0 14px;
    margin-left:12px;
    padding-left:10px;
    border-left:5px solid #0EA5E9;
    letter-spacing:.5px;
}
.payment-divider{
    border:none;
    border-top:1px solid #d9e5ef;
    margin:14px 0;
}
.note a{
    color:#1678B8;
    text-decoration:none;
    font-weight:600;
}

.note a:hover{
    text-decoration:underline;
}
.info-area.two-column{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:20px;
    align-items:start;
}
.hero-version{
    margin-top:12px;
    font-size:16px;
    letter-spacing:2px;
    opacity:.8;
}
footer{

    margin-top:80px;

    padding:50px 20px;

    text-align:center;

    color:#6B7280;

    font-size:20px;

}

footer small{

    display:block;

    margin-top:10px;

    font-size:14px;

    color:#9CA3AF;

}
.hero-message{

    margin-top:8px;

    font-size:18px;

    font-style:italic;

    opacity:.9;

}

/* タイムライン最後の余白を詰める */
.timeline-single .item:last-child{
    margin-bottom:0;
}

@media (max-width:768px){

    html{
        font-size:90%;
    }

    body{
        line-height:1.45;
    }

    .card{
        padding:28px 24px;
        margin-bottom:16px;
        border-radius:16px;
    }

    .day-header{
        margin-bottom:12px;
    }

    h2{
        font-size:24px;
    }

    .date{
        font-size:15px;
    }

    .mission{
        padding:12px 14px;
        margin-bottom:16px;
    }

    .mission p{
        font-size:15px;
        line-height:1.5;
    }

    .group-title{
        font-size:17px;
        margin:14px 0 8px;
    }

    .item{
        padding:10px 0;
    }

    .time{
        width:58px;
        min-width:58px;
        font-size:16px;
    }

    .text{
        font-size:16px;
        line-height:1.45;
    }

    .info-area{
        gap:14px;
    }

    .info-box{
        padding:15px;
    }

    .info-box h3{
        font-size:18px;
        margin-bottom:10px;
    }

    .info-box p,
    .info-box li{
        font-size:15px;
        line-height:1.5;
    }

    .memo-box{
        min-height:120px;
    }

.info-area,
.highlight-grid,
.info-area.two-column{
    display:grid;
    grid-template-columns:1fr;
    gap:14px;
}
.info-box{
    width:100%;
    min-width:0;
}

}

@media print{

    @page{
        size:A4 portrait;
        margin:7mm;
    }

    body{
        font-size:90%;
        background:#fff;
    }

   .card{
    box-shadow:none;
    margin-bottom:6mm;
}

/* DAY6だけ印刷を少し縮小 */
#day6{
    zoom:0.92;
}


section{
    break-before:auto;
    page-break-before:auto;
}

.timeline-single{
    page-break-inside:auto;
    break-inside:auto;
}

.info-area{
    page-break-inside:auto;
    break-inside:auto;
}

    .info-box{
        page-break-inside:avoid;
    }

    .main-nav{
        display:none;
    }

    .hero{
        page-break-after:always;
    }

    .info-area{
    display:block;
}

    .info-box{
    margin-bottom:8mm;
}

.info-area{
    display:block;
}

.info-area.two-column{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:20px;
    align-items:start;
    width:100%;
}

.page-break{
    page-break-before:always;
    break-before:page;
}

/* 全体スケジュールだけ印刷時は4列表示 */

.schedule{
    display:grid !important;
    grid-template-columns:repeat(4,1fr);
    gap:20px;
}

.day{
    padding:12px;
    min-height:auto;
}

.day h3{
    font-size:18px;
    margin-bottom:6px;
}

.day p{
    font-size:14px;
    line-height:1.45;
    margin:2px 0;
}

#day7 .info-box{

    break-inside:avoid;
    page-break-inside:avoid;

}

#day7 .memo-box{

    min-height:90px;

}

#day7 .memo-line{

    margin:10px 0;

}

/* ===== 印刷時：DAY6・DAY7・入国審査を1ページに収める ===== */

#day6,
#day7,
#immigration{
    page-break-inside: avoid;
    break-inside: avoid;
}

#day6 .card,
#day7 .card,
#immigration .card{
    page-break-inside: avoid;
    break-inside: avoid;

    padding:18px !important;
}

#day6 .info-box,
#day7 .info-box,
#immigration .info-box{
    padding:14px !important;
    margin-bottom:12px !important;
}

#day6 .mission,
#day7 .mission,
#immigration .mission{
    margin-bottom:12px !important;
}

#day6 .item,
#day7 .item,
#immigration li{
    margin-bottom:4px !important;
}

#day6 .memo-box,
#day7 .memo-box{
    min-height:80px !important;
}

#day6 .memo-line,
#day7 .memo-line{
    margin:8px 0 !important;
}

#day0,
#day1,
#day2,
#day3,
#day4,
#day5,
#day6,
#day7,
#meeting,
#immigration,
#hotel,
#flight,
#dodgers,
#packing,
#maps,
#money,
#emergency{
    page-break-before:always;
    break-before:page;
}

}

.map-link{
    display:inline-flex;
    align-items:center;
    justify-content:center;

    margin-top:14px;
    padding:10px 18px;

    background:#1678B8;

    color:#fff !important;

    text-decoration:none;

    border-radius:999px;

    font-weight:600;

    font-size:15px;

    transition:.2s ease;
}

.map-link:hover{
    background:#0E5F92;
    color:#fff;
}

html{
    overflow-x:hidden;
}

img{
    max-width:100%;
    height:auto;
}

iframe{
    max-width:100%;
}

section:last-of-type{
    margin-bottom:80px;
}
*{
    box-sizing:border-box;
}

img{
    max-width:100%;
}

.info-area,
.highlight-grid,
.info-area.two-column{
    width:100%;
}

.info-box{
    min-width:0;
}
#money .card>.highlight-grid{

    display:grid;

    grid-template-columns:

    2fr 2fr 1fr 1fr;

    gap:20px;

}

#money .highlight-grid div{

    min-height:220px;

}

#day5 .memo-box{

    min-height:220px;

}

#packing .card>.info-area{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:20px;
}

#packing .highlight-grid .info-box{

    height:100%;

}
#dodgers .card>.info-area{

    display:grid;

    grid-template-columns:1fr 1fr;

    gap:20px;

}
/* Dodgers Guideだけ左揃え */

#dodgers .info-box{
    text-align:left;
}

#dodgers .info-box h3{
    text-align:left;
}

#dodgers .info-box p,
#dodgers .info-box ul,
#dodgers .info-box li{
    text-align:left;
}

#dodgers .info-box ul{
    padding-left:22px;
}
/* ===== Packingだけ左揃え ===== */

#packing .info-box{
    text-align:left;
}

#packing .info-box h3{
    text-align:left;
    margin-bottom:14px;
}

#packing .info-box ul{
    padding-left:22px;
    margin:0;
}

#packing .info-box li{
    text-align:left;
    line-height:1.8;
    margin-bottom:8px;
}

#packing .info-box p{
    text-align:left;
}

#packing .info-box{
    display:flex;
    flex-direction:column;
    justify-content:flex-start;
}
#packing .highlight-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:20px;
}

#packing .info-box{
    text-align:left;
}

#packing .info-box h3{
    text-align:left;
}

#packing .info-box ul{
    padding-left:22px;
    margin:0;
}

#packing .info-box li{
    line-height:1.8;
}
/* ===== Money Guide ===== */

#money .highlight-grid{
    display:grid;
    grid-template-columns:repeat(2,minmax(320px,1fr));
    gap:20px;
    align-items:start;
}   

#money .info-box{
    text-align:left;
}

#money .info-box h3{
    text-align:left;
}

#money .info-box ul{
    padding-left:22px;
    margin:0;
}

#money .info-box li{
    line-height:1.8;
}
/* Moneyだけ2列固定 */
#money .highlight-grid{
    display:grid !important;
    grid-template-columns:1fr 1fr !important;
    gap:20px;
}

#immigration .info-box{

    padding:18px;

}

#immigration .info-box li{

    margin-bottom:6px;

}

#immigration .mission{

    margin-bottom:18px;

}
#immigration{

    page-break-inside:avoid;

}   