/* Readable system fonts work immediately without an external font download. */
:root {
    --serif: 'Segoe UI', Arial, sans-serif;
    --text: #40586f;
    --line: #d9e5ef;
}
html {
    font-size: 16px;
}
body {
    font-family: 'Segoe UI', Arial, sans-serif;
    font-size: 17px;
    line-height: 1.75;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}
h1,
h2,
h3,
h4 {
    font-family: 'Segoe UI', Arial, sans-serif;
    font-weight: 650;
    letter-spacing: -0.025em;
    line-height: 1.25;
}
h2 {
    font-size: 42px;
}
h2 em {
    font-weight: 600;
}
p {
    color: #40586f;
}
input,
select,
textarea,
button {
    font-family: inherit;
}
input,
select,
textarea {
    font-size: 16px;
}
.container {
    width: min(1240px, calc(100% - 80px));
}
.topbar {
    font-size: 13px;
    letter-spacing: 0;
}
.topbar .container {
    padding-top: 11px;
    padding-bottom: 11px;
}
.language-switch a {
    padding: 3px 9px;
}
.nav {
    height: 102px;
    gap: 22px;
}
.nav nav {
    gap: 22px;
    font-size: 15px;
    font-weight: 600;
}
.brand img {
    width: 172px;
    height: 80px;
}
.button,
.nav-cta {
    font-size: 15px;
    font-weight: 650;
    padding: 15px 24px;
    min-height: 48px;
    box-shadow: 0 4px 12px #1675ba15;
    border-radius: 8px;
}
.nav-cta {
    padding: 13px 20px;
}
.hero {
    height: 640px;
}
.hero-content {
    padding-top: 75px;
}
.hero h1 {
    font-size: 70px;
    line-height: 1.12;
    letter-spacing: -2px;
    font-weight: 650;
}
.hero h1 em {
    font-weight: 600;
}
.hero-kicker {
    font-size: 13px;
    letter-spacing: 1.6px;
    margin-bottom: 22px;
}
.hero p {
    font-size: 18px;
    line-height: 1.85;
    margin: 25px 0 30px;
}
.hero .button {
    font-size: 16px;
}
.hero-secondary {
    font-size: 15px;
}
.hero-foot {
    font-size: 14px;
    margin-top: 38px;
    max-width: 700px;
}
.hero-place {
    font-size: 12px;
    letter-spacing: 1px;
}
.hero-place small {
    font-size: 14px;
}
.hero-controls button {
    height: 34px;
    width: 34px;
    font-size: 17px;
}
.search-bar {
    padding: 27px;
    gap: 24px;
}
.search-bar label span {
    font-size: 12px;
    letter-spacing: 1px;
    margin-bottom: 10px;
}
.search-bar input,
.search-bar select {
    font-size: 15px;
    padding: 3px 0;
}
.search-bar .button {
    font-size: 15px;
    padding: 18px 24px;
}
.intro-strip strong {
    font-size: 16px;
    font-weight: 650;
}
.intro-strip small {
    font-size: 14px;
    margin-top: 5px;
}
.intro-strip > div {
    gap: 15px;
}
.eyebrow {
    font-size: 12px;
    letter-spacing: 1.4px;
    font-weight: 700;
}
.section-heading h2,
.destination-section h2 {
    font-size: 42px;
    line-height: 1.3;
}
.section-heading p {
    font-size: 16px;
    line-height: 1.8;
}
.text-link {
    font-size: 15px;
    font-weight: 650;
}
.chips a {
    font-size: 14px;
    padding: 10px 20px;
}
.card-body h3 {
    font-family: inherit;
    font-size: 23px;
    line-height: 1.45;
    font-weight: 650;
    min-height: 68px;
}
.card-body .eyebrow {
    font-size: 12px;
    letter-spacing: 0.7px;
}
.card-body p {
    font-size: 16px;
    line-height: 1.8;
}
.card-bottom {
    font-size: 14px;
    gap: 12px;
    flex-wrap: wrap;
}
.tag {
    font-size: 13px;
    font-weight: 600;
    padding: 7px 13px;
}
.destination small {
    font-size: 14px;
    line-height: 1.5;
}
.destination h3 {
    font-family: inherit;
    font-size: 29px;
    font-weight: 650;
}
.story h2 {
    font-size: 41px;
    line-height: 1.35;
}
.story p {
    font-size: 17px;
    line-height: 1.85;
}
.story-image > span {
    font-family: inherit;
    font-size: 24px;
    font-weight: 600;
}
.benefits {
    font-size: 15px;
    gap: 16px;
    grid-template-columns: 1fr;
}
.cta h2 {
    font-size: 39px;
    line-height: 1.35;
}
.cta p {
    font-size: 16px;
}
.newsletter h3 {
    font-family: inherit;
    font-size: 26px;
    font-weight: 650;
}
.newsletter p {
    font-size: 15px;
    margin-top: 8px;
}
.newsletter form {
    width: 390px;
}
.newsletter input {
    font-size: 16px;
    padding: 16px 18px;
}
.newsletter button {
    width: 58px;
}
footer {
    font-size: 15px;
}
.footer-grid p {
    font-size: 15px;
    line-height: 1.9;
}
.footer-grid h4 {
    font-size: 16px;
    font-weight: 650;
}
.footer-grid > div > a:not(.footer-brand) {
    font-size: 14px;
    margin: 12px 0;
    overflow-wrap: anywhere;
}
.footer-bottom {
    font-size: 13px;
    gap: 25px;
    line-height: 1.8;
}
.page-hero h1 {
    font-size: 48px;
    font-weight: 650;
}
.page-hero p {
    font-size: 18px;
}
.prose,
.prose p {
    font-size: 17px;
    line-height: 1.95;
}
.filter-bar input,
.filter-bar select {
    font-size: 16px;
}
.muted {
    font-size: 15px;
}
.tour-hero h1 {
    font-size: 46px;
    line-height: 1.3;
    font-weight: 650;
}
.tour-hero p {
    font-size: 17px;
}
.tour-hero a {
    font-size: 15px;
}
.tabs {
    font-size: 15px;
    gap: 24px;
    flex-wrap: wrap;
}
.detail-grid h2 {
    font-size: 32px;
}
.day {
    font-size: 17px;
    line-height: 1.9;
}
.booking-panel h3 {
    font-family: inherit;
    font-size: 27px;
    font-weight: 650;
    line-height: 1.4;
}
.booking-panel > p {
    font-size: 16px;
    line-height: 1.8;
}
.form-grid label {
    font-size: 15px;
    font-weight: 600;
}
.form-grid input,
.form-grid textarea {
    font-size: 16px;
    padding: 13px 14px;
    line-height: 1.6;
}
.form-grid textarea {
    min-height: 120px;
}
.consent {
    font-size: 14px;
    line-height: 1.8;
    gap: 10px;
}
.consent input {
    width: 17px;
    height: 17px;
    flex-shrink: 0;
}
.booking-panel > small {
    font-size: 14px;
}
.info-box p {
    font-size: 16px;
    line-height: 1.85;
}
.info-box strong {
    font-size: 17px;
}
.contact-details h2 {
    font-size: 39px;
}
.contact-details > p {
    font-size: 17px;
}
.contact-item strong {
    font-size: 16px;
}
.contact-item p {
    font-size: 16px;
}
.article-layout aside h3 {
    font-family: inherit;
    font-size: 26px;
}
.gallery-photo span {
    font-size: 15px;
}
.notice {
    font-size: 16px;
}
.empty p {
    font-size: 17px;
}
.tour-card {
    box-shadow: 0 5px 20px #123a5707;
}
.tour-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 26px #1675ba12;
}
/* Japanese typography uses readable Gothic faces rather than thin Mincho. */
.japanese,
.japanese h1,
.japanese h2,
.japanese h3,
.japanese h4 {
    font-family: 'Yu Gothic', 'Meiryo', 'Segoe UI', sans-serif;
}
.japanese {
    font-size: 17px;
    line-height: 1.95;
}
.japanese h1,
.japanese h2,
.japanese h3 {
    font-weight: 700;
    letter-spacing: 0;
    line-height: 1.55;
}
.japanese .hero {
    height: 700px;
}
.japanese .hero h1 {
    font-size: 57px;
    line-height: 1.5;
}
.japanese .hero-kicker {
    font-size: 14px;
    letter-spacing: 1.2px;
}
.japanese .hero p {
    font-size: 18px;
    max-width: 650px;
    line-height: 2;
}
.japanese .hero-secondary {
    font-size: 15px;
}
.jp-trust span {
    font-size: 14px;
    padding: 6px 13px;
}
.japanese .section-heading h2 {
    font-size: 36px;
    line-height: 1.6;
}
.japanese .section-heading p {
    font-size: 16px;
    line-height: 2;
}
.japanese .card-body h3 {
    font-size: 22px;
    line-height: 1.65;
    font-weight: 700;
    min-height: 74px;
}
.japanese .card-body p {
    font-size: 16px;
}
.japanese .benefits {
    font-size: 15px;
}
.japanese .form-grid label {
    font-size: 15px;
}
.japanese .form-grid select {
    font-size: 16px;
    min-width: 0;
}
.japanese .form-grid label {
    min-width: 0;
}
.japanese .consent {
    font-size: 14px;
}
.japanese .booking-panel h3 {
    font-size: 25px;
}
.japanese .tour-hero h1 {
    font-size: 39px;
}
.jp-faq summary {
    font-size: 17px;
    line-height: 1.8;
}
.jp-faq details p {
    font-size: 16px;
    line-height: 2;
}
.jp-service h3 {
    font-size: 21px;
}
.jp-service p {
    font-size: 16px;
    line-height: 1.95;
}
.jp-country {
    font-size: 13px;
    letter-spacing: 0.7px;
}
.jp-route {
    font-size: 17px;
}
.jp-highlights {
    font-size: 17px;
    line-height: 2.2;
}
/* The same readable scale carries through to admin controls and tables. */
.admin-body {
    font-size: 16px;
}
.admin-header h1 {
    font-size: 34px;
    font-weight: 650;
}
.admin-header > a {
    font-size: 15px;
}
.admin-tabs {
    gap: 25px;
}
.admin-tabs a {
    font-size: 15px;
}
.admin-table {
    font-size: 15px;
}
.admin-table th {
    font-size: 14px;
    font-weight: 700;
}
.admin-table td,
.admin-table th {
    padding: 17px;
}
.admin-table select,
.admin-table button {
    font-size: 14px;
    min-height: 38px;
}
.admin-table small {
    font-size: 13px;
}
.admin-stats {
    font-size: 16px;
}
.admin-stats strong {
    font-family: inherit;
    font-size: 33px;
    font-weight: 700;
}
.editor-heading h2 {
    font-size: 34px;
}
.editor-heading p {
    font-size: 16px;
    line-height: 1.8;
}
.editor-section-title h3 {
    font-size: 22px;
}
.editor-section-title p {
    font-size: 15px;
    line-height: 1.8;
}
.editor-number,
.language-badge {
    font-size: 14px;
}
.itinerary-toolbar input {
    font-size: 16px;
}
.itinerary-table th {
    font-size: 13px;
    letter-spacing: 0.5px;
}
.itinerary-name strong {
    font-size: 16px;
    line-height: 1.6;
}
.itinerary-name small {
    font-size: 14px;
    line-height: 1.7;
}
.itinerary-name img {
    width: 85px;
    height: 75px;
}
.status-pill {
    font-size: 13px;
    padding: 6px 12px;
}
.row-actions {
    font-size: 15px;
    gap: 18px;
}
.itinerary-editor .form-grid label {
    font-size: 15px;
}
.itinerary-editor .form-grid input,
.itinerary-editor .form-grid select,
.itinerary-editor .form-grid textarea {
    font-size: 16px;
    line-height: 1.7;
}
.itinerary-editor .form-grid small {
    font-size: 13px;
    line-height: 1.8;
}
.publish-switch {
    font-size: 15px;
    line-height: 1.8;
}
.editor-help {
    font-size: 14px;
    line-height: 1.8;
}
.editor-savebar {
    font-size: 15px;
}
.delete-panel h3 {
    font-size: 21px;
}
.delete-panel p {
    font-size: 17px;
    line-height: 1.85;
}
.admin-login h1 {
    font-size: 34px;
}
.admin-login p {
    font-size: 16px;
}
@media (max-width: 1100px) {
    .container {
        width: calc(100% - 56px);
    }
    .topbar .container > span {
        display: none;
    }
    .topbar .container {
        justify-content: flex-end;
    }
    .hero h1 {
        font-size: 62px;
    }
    .section-heading h2 {
        font-size: 37px;
    }
    .search-bar {
        gap: 17px;
    }
    .search-bar .button {
        padding: 16px 18px;
    }
    .intro-strip strong {
        font-size: 15px;
    }
    .intro-strip small {
        font-size: 13px;
    }
    .japanese .hero h1 {
        font-size: 50px;
    }
    .card-body {
        padding: 22px;
    }
    .footer-grid {
        gap: 25px;
    }
}
@media (max-width: 1050px) {
    .nav {
        height: 90px;
        position: relative;
    }
    .menu-toggle {
        display: block;
        margin-left: auto;
        font-size: 28px;
        padding: 9px;
    }
    .nav nav {
        display: none;
        position: absolute;
        top: 90px;
        left: -28px;
        right: -28px;
        padding: 22px 28px;
        background: white;
        z-index: 20;
        border-top: 1px solid var(--line);
        box-shadow: 0 12px 22px #15365312;
    }
    .nav nav.open {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        gap: 10px;
    }
    .nav nav a {
        font-size: 17px;
        padding: 10px 0;
    }
    .nav .brand img {
        height: 75px;
    }
    .nav-cta {
        font-size: 15px;
    }
}
@media (max-width: 800px) {
    .hero {
        height: 640px;
    }
    .hero h1 {
        font-size: 58px;
    }
    .hero-content {
        padding-top: 62px;
    }
    .hero p {
        font-size: 17px;
    }
    .search-bar {
        grid-template-columns: 1fr 1fr;
    }
    .intro-strip {
        gap: 16px;
    }
    .intro-strip > div {
        gap: 11px;
    }
    .stat-icon {
        flex-shrink: 0;
    }
    .intro-strip strong {
        font-size: 14px;
    }
    .intro-strip small {
        font-size: 13px;
    }
    .section {
        padding: 60px 0;
    }
    .section-heading h2,
    h2,
    .story h2 {
        font-size: 35px;
    }
    .section-heading p {
        font-size: 16px;
    }
    .cta h2 {
        font-size: 32px;
    }
    .japanese .hero {
        height: 700px;
    }
    .japanese .hero h1 {
        font-size: 44px;
    }
    .japanese .hero p {
        font-size: 17px;
        max-width: 540px;
    }
    .japanese .section-heading h2 {
        font-size: 32px;
    }
    .japanese .tour-hero h1 {
        font-size: 33px;
    }
    .jp-service-grid {
        grid-template-columns: 1fr 1fr;
    }
    .newsletter form {
        width: 100%;
    }
    .page-hero h1 {
        font-size: 40px;
    }
    .contact-grid {
        gap: 35px;
    }
    .editor-languages {
        grid-template-columns: 1fr;
    }
    .itinerary-toolbar {
        flex-wrap: wrap;
    }
    .admin-header {
        flex-wrap: wrap;
    }
    .form-grid {
        gap: 18px;
    }
    .editor-savebar {
        gap: 15px;
    }
}
@media (max-width: 500px) {
    body {
        font-size: 17px;
    }
    .container {
        width: calc(100% - 36px);
    }
    .topbar {
        font-size: 12px;
    }
    .topbar .container {
        justify-content: center;
        padding: 9px 0;
    }
    .topbar .language-switch {
        font-size: 12px;
    }
    .nav {
        height: 82px;
        gap: 9px;
    }
    .nav nav {
        top: 82px;
        left: -18px;
        right: -18px;
        padding: 20px;
    }
    .nav .brand img {
        width: 127px;
        height: 67px;
    }
    .nav-cta {
        font-size: 13px;
        padding: 11px 13px;
        min-height: 44px;
    }
    .menu-toggle {
        font-size: 26px;
        padding: 5px;
    }
    .hero {
        height: auto;
        min-height: 620px;
    }
    .hero-content {
        padding-top: 49px;
        padding-bottom: 90px;
    }
    .hero h1 {
        font-size: 46px;
        line-height: 1.17;
        letter-spacing: -1.4px;
    }
    .hero-kicker {
        font-size: 12px;
        letter-spacing: 1px;
    }
    .hero p {
        font-size: 17px;
        max-width: 320px;
        margin: 23px 0 27px;
        line-height: 1.8;
    }
    .hero .button {
        font-size: 15px;
        padding: 16px 20px;
    }
    .hero-secondary {
        font-size: 15px;
        white-space: normal;
        line-height: 1.8;
    }
    .hero-foot {
        font-size: 13px;
        margin-top: 27px;
    }
    .search-bar {
        grid-template-columns: 1fr;
        padding: 23px 20px;
        gap: 20px;
    }
    .search-bar label span {
        font-size: 13px;
    }
    .search-bar input,
    .search-bar select {
        font-size: 16px;
        line-height: 1.6;
    }
    .search-bar .button {
        font-size: 16px;
    }
    .intro-strip {
        grid-template-columns: 1fr;
        padding-top: 30px;
        padding-bottom: 30px;
        gap: 23px;
    }
    .intro-strip strong {
        font-size: 17px;
    }
    .intro-strip small {
        font-size: 15px;
    }
    .stat-icon {
        width: 45px;
    }
    .section {
        padding: 50px 0;
    }
    .section-heading h2,
    h2,
    .story h2 {
        font-size: 31px;
        line-height: 1.4;
    }
    .section-heading p {
        font-size: 16px;
    }
    .eyebrow {
        font-size: 12px;
        line-height: 1.8;
    }
    .chips a {
        font-size: 14px;
        padding: 9px 15px;
    }
    .card-body h3 {
        font-size: 22px;
        min-height: 0;
    }
    .card-bottom {
        font-size: 14px;
    }
    .destination-grid {
        grid-template-columns: 1fr;
    }
    .destination {
        height: 290px;
    }
    .destination small {
        font-size: 15px;
    }
    .destination h3 {
        font-size: 30px;
    }
    .destination-section h2 {
        font-size: 31px;
    }
    .benefits {
        font-size: 15px;
    }
    .story p {
        font-size: 17px;
    }
    .cta h2 {
        font-size: 30px;
    }
    .cta p {
        font-size: 16px;
    }
    .newsletter h3 {
        font-size: 24px;
    }
    .newsletter p {
        font-size: 15px;
    }
    .footer-grid {
        grid-template-columns: 1fr;
        gap: 30px;
    }
    .footer-grid > div:last-child {
        grid-column: auto;
    }
    .footer-grid h4 {
        font-size: 17px;
        margin-bottom: 15px;
    }
    .footer-grid p {
        font-size: 16px;
    }
    .footer-grid > div > a:not(.footer-brand) {
        font-size: 15px;
    }
    .footer-bottom {
        font-size: 13px;
    }
    .page-hero h1 {
        font-size: 35px;
    }
    .page-hero p {
        font-size: 17px;
    }
    .tour-hero h1 {
        font-size: 31px;
    }
    .tour-hero p {
        font-size: 16px;
    }
    .tour-hero .container {
        padding-top: 35px;
        padding-bottom: 35px;
    }
    .tabs {
        font-size: 14px;
        gap: 16px;
    }
    .detail-grid h2 {
        font-size: 28px;
    }
    .booking-panel {
        padding: 24px;
    }
    .booking-panel h3 {
        font-size: 25px;
    }
    .form-grid {
        grid-template-columns: 1fr;
    }
    .consent {
        font-size: 14px;
    }
    .contact-details h2 {
        font-size: 31px;
    }
    .gallery-photo img {
        height: 190px;
    }
    .japanese .hero {
        height: auto;
        min-height: 660px;
    }
    .japanese .hero h1 {
        font-size: 36px;
        line-height: 1.6;
    }
    .japanese .hero-kicker {
        font-size: 12px;
        letter-spacing: 0.5px;
    }
    .japanese .hero p {
        font-size: 17px;
        line-height: 2;
        max-width: 100%;
        margin: 23px 0 27px;
    }
    .japanese .hero-secondary {
        font-size: 14px;
        white-space: normal;
    }
    .jp-trust span {
        font-size: 12px;
        padding: 6px 10px;
    }
    .japanese .section-heading h2 {
        font-size: 29px;
        line-height: 1.6;
    }
    .japanese .section-heading p {
        font-size: 16px;
    }
    .japanese .chips a {
        font-size: 14px;
    }
    .japanese .card-body h3 {
        font-size: 21px;
        min-height: 0;
    }
    .japanese .tour-hero h1 {
        font-size: 27px;
        line-height: 1.7;
    }
    .japanese .booking-panel h3 {
        font-size: 24px;
    }
    .japanese .cta h2 {
        font-size: 27px;
    }
    .japanese .contact-details h2 {
        font-size: 29px;
    }
    .japanese .footer-grid {
        grid-template-columns: 1fr;
    }
    .jp-service-grid {
        grid-template-columns: 1fr;
    }
    .jp-faq summary {
        font-size: 16px;
    }
    .admin-header h1 {
        font-size: 28px;
    }
    .admin-tabs a {
        font-size: 15px;
    }
    .editor-heading h2 {
        font-size: 29px;
    }
    .editor-section {
        padding: 22px;
    }
    .editor-section-title h3 {
        font-size: 20px;
    }
    .editor-section-title p {
        font-size: 14px;
    }
    .editor-savebar {
        font-size: 14px;
    }
    .publish-switch {
        font-size: 14px;
    }
    .itinerary-toolbar input {
        flex-basis: 100%;
    }
    .row-actions {
        gap: 16px;
    }
    .admin-table td,
    .admin-table th {
        padding: 15px;
    }
    .delete-panel h2 {
        font-size: 29px;
    }
}

/* Prominent Japanese website link in desktop and mobile navigation. */
.nav nav .header-language {
    color: #126ca7;
    background: #e8f5ff;
    border: 1px solid #bcdcf3;
    border-radius: 7px;
    padding: 8px 13px;
    font-weight: 700;
    white-space: nowrap;
}
.nav nav .header-language:hover {
    background: #d5ecff;
    border-color: #1675ba;
}
@media (min-width: 1051px) and (max-width: 1200px) {
    .nav nav {
        gap: 15px;
    }
    .nav .brand img {
        width: 155px;
    }
    .nav-cta {
        padding: 13px 16px;
    }
}
