/* Rupoze final visual polish — 2026-09-29
   This file intentionally contains only final overrides so the existing design remains stable. */

:root {
    --content-max: 1120px;
    --reading-max: 760px;
    --section-gap-desktop: 88px;
    --section-gap-mobile: 56px;
}

/* ===== Global rhythm / readability ===== */
html { font-size: 16px !important; }
body {
    font-size: 16px !important;
    line-height: 1.85;
    color: var(--color-text-main);
}
.container { max-width: var(--content-max); }

main p,
main li,
main td,
main th,
main dt,
main dd,
main label,
main figcaption,
.nav-link,
.dropdown-link,
.footer-nav a,
.footer-address,
.footer-tagline,
.btn,
.sticky-btn,
.breadcrumb-nav,
.page-breadcrumb,
.card-meta,
.news-date,
.news-category,
.column-date,
.voice-date,
.price-label,
.price-unit,
.price-row small,
.contact-note {
    font-size: 16px !important;
}

main p,
main li,
main td,
main th,
main dd,
main .section-intro,
main .menu-desc,
main .card-excerpt,
main .column-card-excerpt,
main .voice-text,
main .faq-answer p,
main .legal-block p,
main .legal-block li {
    line-height: 1.9 !important;
    word-break: normal !important;
    overflow-wrap: break-word !important;
    line-break: strict;
}

/* Let prose wrap naturally; contextual JS is now limited to headings/short labels. */
main p:not(.menu-card-tags):not(.menu-concern-tags),
main li,
main td,
main th,
main dd {
    text-wrap: pretty;
}

h1,h2,h3,h4,h5,h6 { font-weight: 600; }
.section-subtitle,
.archive-subtitle,
.cta-subtitle,
.concept-sub,
.contact-method-en,
.menu-category {
    font-size: 16px !important;
    font-weight: 600 !important;
    line-height: 1.5;
}
.section-header {
    width: 100%;
    max-width: 860px;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 46px !important;
}
.section-intro {
    max-width: var(--reading-max);
    margin-left: auto;
    margin-right: auto;
}

/* ===== Headings ===== */
.section-title,
.page-title,
.archive-title {
    text-wrap: balance;
    line-height: 1.4 !important;
}
.section-title { font-size: clamp(1.9rem, 3.1vw, 2.35rem); }
.page-title,
.archive-title { font-size: clamp(2rem, 3.4vw, 2.65rem); }

/* ===== Buttons / accessibility ===== */
.btn,
.section-more-btn,
.category-btn,
.column-filter-btn {
    min-height: 48px;
}
.btn,
.section-more-btn {
    font-weight: 600 !important;
}
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
    outline: 3px solid rgba(74,96,84,.35);
    outline-offset: 3px;
}

/* ===== Cards: preserve separation without looking overly boxed ===== */
.menu-card,
.facility-card,
.voice-card,
.news-archive-card,
.column-card,
.system-card {
    box-shadow: 0 8px 24px rgba(44,58,51,.055) !important;
    border-color: rgba(74,96,84,.09) !important;
}
.menu-card:hover,
.facility-card:hover,
.voice-card:hover,
.news-archive-card:hover,
.column-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 12px 28px rgba(44,58,51,.075) !important;
}

/* ===== Menu typography consistency ===== */
.menu-detail-section,
.treatment-movie-section,
.category-shortcut-section {
    font-weight: 400 !important;
}
.menu-detail-section :is(.section-title,.menu-detail-header h3,.removal-heading,.removal-sub-block h4,.single-menu-table-box h4,.custom-concept-card h3,.custom-step-item h4),
.treatment-movie-section :is(h2,h3) {
    font-weight: 600 !important;
}
.menu-detail-section :is(.menu-detail-body p,.section-intro,.removal-desc,.concept-body,.message-sub-box p,.custom-step-item p,.menu-system-note p,.menu-price-table td),
.treatment-movie-section p {
    font-weight: 400 !important;
}
.menu-detail-section :is(.price-name,.price-amount,.menu-price-table th,.menu-price-table td:last-child,.menu-price-table strong,.badge-inline,.menu-detail-badge,.badge-gold),
.category-shortcut-section .category-btn {
    font-weight: 600 !important;
}
.menu-detail-section strong { font-weight: 600 !important; }
.menu-concern-tags,
.menu-card-tags {
    line-height: 1.8 !important;
}

/* ===== Archives / text lists ===== */
.news-list-row,
.news-archive-card,
.column-card-content {
    line-height: 1.8;
}
.news-list-title,
.column-card-title,
.card-title {
    line-height: 1.55 !important;
    text-wrap: balance;
}

/* ===== Contact / legal ===== */
.contact-method { border: 0 !important; }
.contact-help-box { border: 0 !important; }
.contact-method p { max-width: 30em; margin-left: auto; margin-right: auto; }
.legal-container { max-width: 900px; }
.legal-block { padding-block: 28px; }

/* ===== Profile ===== */
.representative-section .qualifications-grid li {
    font-size: 16px !important;
    line-height: 1.7 !important;
}
.representative-section .qualifications-title {
    font-size: 1.12rem !important;
    font-weight: 600 !important;
}

/* ===== Fixed CTAs ===== */
.subpage-floating-buttons .btn,
.pc-floating-sticky .btn {
    min-height: 50px;
    font-size: 16px !important;
}
.mobile-sticky-bar .sticky-btn {
    min-height: 50px;
    font-weight: 600;
}

/* ===== Mobile ===== */
@media (max-width: 768px) {
    html, body { font-size: 16px !important; }
    .container { padding-left: 18px !important; padding-right: 18px !important; }
    .section-header { margin-bottom: 32px !important; }
    .section-title { font-size: clamp(1.55rem, 6.6vw, 1.9rem) !important; }
    .page-title,
    .archive-title { font-size: clamp(1.7rem, 7vw, 2.05rem) !important; }
    .section-subtitle,
    .archive-subtitle,
    .cta-subtitle,
    .concept-sub,
    .menu-category { font-size: 16px !important; }

    main p,
    main li,
    main td,
    main th,
    main dd,
    main .section-intro,
    main .menu-desc,
    main .voice-text,
    main .faq-answer p,
    main .column-card-excerpt,
    main .card-excerpt {
        font-size: 16px !important;
        line-height: 1.9 !important;
    }
    .btn,
    .section-more-btn,
    .category-btn,
    .column-filter-btn,
    .nav-link,
    .dropdown-link,
    .footer-nav a {
        font-size: 16px !important;
    }

    /* Prevent cramped Japanese at 375–414px while keeping natural wrapping. */
    main :is(p,li,td,th,dd) {
        word-break: normal !important;
        overflow-wrap: break-word !important;
        line-break: strict !important;
    }
    .menu-detail-header h3,
    .menu-card h3,
    .facility-info h4,
    .card-title,
    .column-card-title,
    .voice-title {
        text-wrap: balance;
    }

    .menu-card,
    .facility-card,
    .voice-card,
    .news-archive-card,
    .column-card {
        box-shadow: 0 5px 18px rgba(44,58,51,.05) !important;
    }

    .representative-section .qualifications-grid {
        max-width: 360px !important;
    }
    .representative-section .qualifications-grid li,
    .representative-section .qualifications-grid li:last-child {
        font-size: 16px !important;
        white-space: normal !important;
        word-break: normal !important;
        overflow-wrap: break-word !important;
    }

    .contact-methods-grid { gap: 28px !important; }
    .contact-method { padding: 18px 6px !important; }
}

@media (min-width: 375px) and (max-width: 414px) {
    .container { padding-left: 16px !important; padding-right: 16px !important; }
    .section-title { letter-spacing: .02em; }
    main :is(p,li,td,th,dd) { letter-spacing: .005em; }
}


/* ===== Online store member-only notice ===== */
.online-store-member-note {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid rgba(74,96,84,.12);
}
.online-store-member-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 32px;
    padding: 6px 12px;
    margin-bottom: 8px;
    border-radius: 999px;
    background: rgba(197,155,108,.14);
    color: #9b7042;
    font-size: 14px;
    font-weight: 600;
    letter-spacing: .04em;
}
.online-store-member-note p {
    margin: 0 !important;
    font-size: 14px !important;
    line-height: 1.8 !important;
    color: var(--color-text-sub);
}
@media (max-width:768px) {
    .online-store-member-note { margin-top: 14px; padding-top: 12px; }
    .online-store-member-note p { font-size: 13px !important; line-height: 1.75 !important; }
}

/* ===== Online store member notice spacing refinement ===== */
.online-store-member-note {
    margin-bottom: 14px !important;
}
#online-store .online-store-action {
    margin-top: 8px !important;
}
@media (max-width: 768px) {
    .online-store-member-note {
        margin-top: 16px !important;
        padding-top: 14px !important;
        margin-bottom: 18px !important;
    }
    #online-store .online-store-action {
        margin-top: 0 !important;
    }
}
