/* ===== tokens ===== */
:root {
    --bs-primary: #1872af;
    --bs-accent-color: #f7b022;
    --bs-accent-active: #e8940a;
    --bs-page-bg: #0e1e3f;
    --bs-panel-bg: #16294d;
    --bs-gradient-start: #ffffff;
    --bs-gradient-to: #07cdff;
    --bs-ink: #ffffff;
    --bs-ink-soft: #bdbdbd;
    --bs-warning-bg: #dc2626;
    --bs-color-line: rgba(255, 255, 255, 0.10);

    --bs-font-heading: "Oswald", "Arial Narrow", sans-serif;
    --bs-font-base: "Inter", system-ui, -apple-system, Segoe UI, Roboto, sans-serif;

    --bs-size-h1: 80px;
    --bs-text-h2: 48px;
    --bs-fs-h3: 30px;
    --bs-type-h4: 22px;
    --bs-size-h5: 16px;
    --bs-text-h6: 13px;
    --bs-type-body: 15px;
    --bs-fs-small: 13px;
    --bs-text-xs: 11px;

    --bs-line-tight: 0.95;
    --bs-line-normal: 1.45;
    --bs-line-loose: 1.65;
    --bs-letter-tight: -0.04em;
    --bs-ls-normal: 0;
    --bs-letter-wide: 0.08em;
    --bs-weight-regular: 400;
    --bs-weight-medium: 500;
    --bs-weight-bold: 700;

    --bs-space-2xs: 2px;
    --bs-spacing-xs: 6px;
    --bs-gutter-sm: 10px;
    --bs-spacing-md: 14px;
    --bs-spacing-lg: 20px;
    --bs-gutter-xl: 28px;
    --bs-gutter-2xl: 48px;
    --bs-space-3xl: 72px;
    --bs-sec-y: var(--bs-gutter-2xl);

    --bs-container: 1400px;
    --bs-readable-width: 720px;
    --bs-edge-desktop: 32px;
    --bs-edge-mobile: 16px;

    --bs-corner-xs: 4px;
    --bs-radius-sm: 10px;
    --bs-corner: 16px;
    --bs-corner-lg: 28px;
    --bs-pill: 9999px;
    --bs-circle: 50%;
    --bs-depth-sm: 0 4px 10px rgba(0, 0, 0, 0.18);
    --bs-shade-md: 0 10px 28px rgba(0, 0, 0, 0.24);
    --bs-shade-lg: 0 20px 48px rgba(0, 0, 0, 0.32);

    --bs-transition-fast: 150ms;
    --bs-transition-base: 200ms;
    --bs-transition-slow: 300ms;
    --bs-easing: cubic-bezier(0.22, 0.61, 0.36, 1.0);

    --bs-nav-h-desktop: 120px;
    --bs-header-h-mobile: 80px;
}

/* ===== structural helpers ===== */
.page { display: block; }
.o44-nav { display: block; }
.o44-nav-item { display: inline-flex; }
.e30-lead { display: block; }
.f49-text { display: block; }
.z69-body { display: block; }

/* ===== reset / base ===== */
*, *::before, *::after { box-sizing: border-box; }
html, body { overflow-x: clip; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    background: var(--bs-page-bg);
    color: var(--bs-ink);
    font-family: var(--bs-font-base);
    font-size: var(--bs-type-body);
    line-height: var(--bs-line-normal);
    padding-top: var(--bs-nav-h-desktop);
    -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: var(--bs-accent-color); text-decoration: none; }
a:hover { color: var(--bs-accent-active); }
h1, h2, h3, h4, h5, h6 { margin: 0; }
ul, ol { margin: 0; }

.skip-link {
    position: absolute;
    left: var(--bs-spacing-md);
    background: var(--bs-accent-color);
    color: var(--bs-page-bg);
    padding: var(--bs-spacing-xs) var(--bs-spacing-md);
    border-radius: var(--bs-radius-sm);
    z-index: 200;
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
}
.skip-link:not(:focus) { top: -200px !important; }
.skip-link:focus { top: var(--bs-gutter-sm); }

.sr-only {
    position: absolute; width: 1px; height: 1px;
    padding: 0; margin: -1px; overflow: hidden;
    clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

@media (prefers-reduced-motion: reduce) {
    * { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; scroll-behavior: auto !important; }
}

/* ===== shared inner (single section width — canonical) ===== */
.v37-inner, .o44-inner, .e30-inner, .g78-inner, .z27-inner, .x30-inner,
.f49-inner, .z79-inner, .m70-inner, .n95-inner, .q16-inner, .z69-inner,
.e74-inner, .a02-inner, .t34-inner, .ctx-inner {
    width: 100%;
    max-width: calc(var(--bs-container) + 2 * var(--bs-edge-desktop));
    margin-inline: auto;
    padding-inline: var(--bs-edge-desktop);
}

/* ===== header (HEAD-10 Tall Editorial + STICKY-04) ===== */
.v37 {
    position: fixed;
    top: 0; left: 0; right: 0;
    z-index: 100;
    background: var(--bs-page-bg);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    height: var(--bs-nav-h-desktop);
    transition: transform var(--bs-transition-base) var(--bs-easing);
}
.v37.is-hidden { transform: translateY(-100%); }
.v37-inner { position: relative; height: 100%; display: flex; flex-direction: column; }
.v37-row { display: flex; align-items: center; }
.v37-row-top { height: 72px; justify-content: space-between; }
.v37-row-bottom { flex: 1; gap: var(--bs-spacing-lg); border-top: 1px solid rgba(255, 255, 255, 0.05); }
.v37-logo { flex-shrink: 0; display: inline-flex; align-items: center; }
.v37-logo-img { height: 88px; width: auto; flex-shrink: 0; }
.v37-toggle {
    display: none;
    margin-left: auto !important;
    background: transparent;
    border: 0;
    flex-direction: column;
    gap: 5px;
    cursor: pointer;
    padding: var(--bs-spacing-xs);
}
.v37-toggle-bar { width: 28px; height: 3px; background: var(--bs-ink); border-radius: 2px; }
.v37-nav { flex: 1; }
.v37-nav-list { display: flex; flex-wrap: nowrap; gap: var(--bs-spacing-lg); list-style: none; padding: 0; margin: 0; }
.v37-nav-item { display: inline-flex; }
.v37-link {
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-medium);
    font-size: var(--bs-text-h6);
    color: var(--bs-ink);
    white-space: nowrap;
    padding-block: var(--bs-space-2xs);
    transition: color var(--bs-transition-fast) var(--bs-easing);
}
.v37-link:hover { color: var(--bs-accent-color); }
.v37-link--active { color: var(--bs-accent-color); }
.v37-actions { display: flex; align-items: center; gap: var(--bs-gutter-sm); margin-left: auto; }
.v37-auth {
    display: inline-flex;
    align-items: center;
    background: var(--bs-page-bg);
    border: 1px solid var(--bs-ink);
    color: var(--bs-ink);
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    font-size: var(--bs-fs-small);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-wide);
    white-space: nowrap;
    flex-shrink: 0;
    padding: 9px var(--bs-spacing-lg);
    border-radius: var(--bs-corner);
    transition: background var(--bs-transition-base) var(--bs-easing), color var(--bs-transition-base) var(--bs-easing);
}
.v37-auth:hover { background: var(--bs-ink); color: var(--bs-page-bg); }

/* drawer (mobile) — inside header, hidden by default */
.v37-drawer {
    display: none;
    position: fixed;
    top: var(--bs-header-h-mobile);
    left: 0; right: 0;
    background: var(--bs-page-bg);
    border-bottom: 1px solid var(--bs-color-line);
    z-index: 110;
    box-shadow: var(--bs-shade-md);
}
.v37-drawer.is-open { display: block; }
.v37-drawer-list { list-style: none; margin: 0; padding: var(--bs-gutter-sm) var(--bs-edge-mobile); }
.v37-drawer-item { display: block; border-bottom: 1px solid rgba(255, 255, 255, 0.06); }
.v37-drawer-link {
    display: block;
    padding: var(--bs-spacing-md) 0;
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-medium);
    font-size: var(--bs-size-h5);
    color: var(--bs-ink);
}
.v37-drawer-link:hover, .v37-drawer-link--active { color: var(--bs-accent-color); }
.v37-drawer-cta {
    display: block;
    margin-top: var(--bs-gutter-sm);
    text-align: center;
    background: var(--bs-accent-color);
    color: var(--bs-page-bg);
    padding: var(--bs-spacing-md);
    border-radius: var(--bs-corner);
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-wide);
}
.v37-drawer-cta:hover { background: var(--bs-accent-active); color: var(--bs-page-bg); }

/* ===== hero (HERO-07) ===== */
.a05 { padding-bottom: var(--bs-sec-y); }
.a05-figure { margin: 0; width: 100%; }
.a05-img { width: 100%; height: 400px; object-fit: cover; }
.a05-content {
    max-width: var(--bs-readable-width);
    margin-inline: auto;
    padding-inline: var(--bs-edge-desktop);
    padding-top: var(--bs-sec-y);
    text-align: left;
}
.a05-eyebrow {
    font-family: var(--bs-font-base);
    font-size: var(--bs-fs-small);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-wide);
    color: var(--bs-accent-color);
    margin: 0 0 var(--bs-gutter-sm);
}
.a05-title {
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    font-size: var(--bs-size-h1);
    line-height: var(--bs-line-tight);
    letter-spacing: var(--bs-letter-tight);
    text-transform: uppercase;
    margin: 0 0 var(--bs-spacing-md);
}
.a05-subtitle {
    font-size: var(--bs-size-h5);
    color: var(--bs-ink-soft);
    line-height: var(--bs-line-normal);
    margin: 0 0 var(--bs-spacing-lg);
    max-width: 640px;
}
.a05-cta {
    display: inline-flex;
    align-items: center;
    height: 56px;
    padding-inline: var(--bs-gutter-2xl);
    background: var(--bs-accent-color);
    color: var(--bs-page-bg);
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-wide);
    border-radius: var(--bs-corner);
    transition: background var(--bs-transition-base) var(--bs-easing), transform var(--bs-transition-base) var(--bs-easing);
}
.a05-cta:hover { background: var(--bs-accent-active); color: var(--bs-page-bg); transform: translateY(-1px); }

/* ===== page-header (PHEAD-04) ===== */
.e30 { padding-block: var(--bs-sec-y); }
.e30-grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: var(--bs-gutter-2xl); align-items: end; }
.e30-eyebrow {
    font-family: var(--bs-font-base);
    font-size: var(--bs-fs-small);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-wide);
    color: var(--bs-accent-color);
    margin: 0 0 var(--bs-gutter-sm);
}
.e30-title {
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    font-size: var(--bs-size-h1);
    line-height: var(--bs-line-tight);
    letter-spacing: var(--bs-letter-tight);
    text-transform: uppercase;
    margin: 0;
}
.e30-desc { color: var(--bs-ink-soft); font-size: var(--bs-size-h5); line-height: var(--bs-line-normal); margin: 0; }

/* ===== inline-cta (INLINE-CTA-01) ===== */
.t34 { display: block; background: var(--bs-accent-color); }
.t34-inner { display: flex; align-items: center; justify-content: space-between; gap: var(--bs-spacing-md); padding-block: var(--bs-spacing-md); }
.t34-text { font-size: var(--bs-size-h5); font-weight: var(--bs-weight-bold); color: var(--bs-page-bg); margin: 0; font-family: var(--bs-font-heading); }
.t34-btn {
    flex-shrink: 0;
    background: var(--bs-page-bg);
    color: var(--bs-accent-color);
    padding: var(--bs-gutter-sm) var(--bs-spacing-lg);
    border-radius: var(--bs-corner);
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-wide);
    transition: background var(--bs-transition-base) var(--bs-easing), color var(--bs-transition-base) var(--bs-easing);
}
.t34-btn:hover { background: var(--bs-page-bg); color: var(--bs-accent-active); }

/* ===== page image (context) ===== */
.ctx { margin: 0; padding-block: var(--bs-spacing-lg); }
.ctx-img { width: 100%; max-height: 520px; object-fit: cover; border-radius: var(--bs-corner-lg); box-shadow: var(--bs-shade-md); }

/* ===== prose (PROSE-07 numbered) ===== */
.z79 { padding-block: var(--bs-sec-y); counter-reset: section; }
.z79-readable { max-width: var(--bs-readable-width); }
.z79 h2 {
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    font-size: var(--bs-text-h2);
    line-height: var(--bs-line-tight);
    letter-spacing: var(--bs-letter-tight);
    margin: var(--bs-gutter-2xl) 0 var(--bs-spacing-md);
}
.z79 h2:first-child { margin-top: 0; }
.z79 h2::before {
    counter-increment: section;
    content: counter(section, decimal-leading-zero) ". ";
    color: var(--bs-accent-color);
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    margin-right: var(--bs-gutter-sm);
}
.z79 p { color: var(--bs-ink-soft); margin: 0 0 var(--bs-spacing-md); line-height: var(--bs-line-loose); }
.z79 strong { color: var(--bs-ink); font-weight: var(--bs-weight-bold); }
.z79 em { color: var(--bs-ink); font-style: italic; }
.z79-link { color: var(--bs-accent-color); text-decoration: underline; text-underline-offset: 3px; }
.z79-link:hover { color: var(--bs-accent-active); }
.z79-list, .z79-olist { margin: 0 0 var(--bs-spacing-md); padding-left: var(--bs-spacing-lg); color: var(--bs-ink-soft); }
.z79-list li, .z79-olist li { margin-bottom: var(--bs-spacing-xs); line-height: var(--bs-line-normal); }
.z79-list { list-style: none; padding-left: 0; }
.z79-list li { position: relative; padding-left: var(--bs-spacing-lg); }
.z79-list li::before { content: "▸"; color: var(--bs-accent-color); position: absolute; left: 0; }

/* ===== items-grid (GRID-01) ===== */
.g78 { padding-block: var(--bs-sec-y); }
.g78-heading {
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    font-size: var(--bs-text-h2);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-tight);
    margin: 0 0 var(--bs-gutter-xl);
}
.g78-list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--bs-spacing-lg); }
.g78-item {
    padding: var(--bs-spacing-lg);
    background: var(--bs-panel-bg);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: var(--bs-corner);
    transition: border-color var(--bs-transition-base) var(--bs-easing);
}
.g78-item:hover { border-color: var(--bs-accent-color); }
.g78-item-title {
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    font-size: var(--bs-type-h4);
    line-height: var(--bs-line-tight);
    color: var(--bs-ink);
    margin: 0 0 var(--bs-gutter-sm);
}
.g78-item-text { color: var(--bs-ink-soft); font-size: var(--bs-type-body); line-height: var(--bs-line-normal); margin: 0; }

/* ===== data-table (TABLE-02 borderless) ===== */
.m70 { padding-block: var(--bs-sec-y); }
.m70-scroll { overflow-x: auto; }
.m70-table { width: 100%; border-collapse: collapse; }
.m70-table th, .m70-table td { text-align: left; padding: var(--bs-spacing-md); }
.m70-table thead th {
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    font-size: var(--bs-fs-small);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-wide);
    color: var(--bs-ink);
    border-bottom: 2px solid var(--bs-accent-color);
}
.m70-table tbody td { font-size: var(--bs-type-body); color: var(--bs-ink-soft); border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.m70-table tbody th { font-size: var(--bs-type-body); color: var(--bs-ink); font-weight: var(--bs-weight-medium); border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.m70-table tbody tr:last-child th, .m70-table tbody tr:last-child td { border-bottom: none; }

/* ===== reviews (REV-08 avatar-initials) ===== */
.x30 { padding-block: var(--bs-sec-y); }
.x30-heading {
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    font-size: var(--bs-text-h2);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-tight);
    margin: 0 0 var(--bs-gutter-xl);
}
.x30-list { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--bs-spacing-lg); }
.x30-item {
    padding: var(--bs-spacing-lg);
    background: var(--bs-panel-bg);
    border: 1px solid rgba(255, 255, 255, 0.10);
    border-radius: var(--bs-corner-lg);
    box-shadow: var(--bs-depth-sm);
}
.x30-head { display: flex; align-items: center; gap: var(--bs-gutter-sm); margin-bottom: var(--bs-gutter-sm); }
.x30-avatar {
    width: 48px; height: 48px; flex-shrink: 0;
    border-radius: var(--bs-circle);
    background: var(--bs-accent-color);
    color: var(--bs-page-bg);
    display: inline-flex; align-items: center; justify-content: center;
    font-family: var(--bs-font-heading); font-weight: var(--bs-weight-bold); font-size: var(--bs-size-h5);
}
.x30-meta { display: flex; flex-direction: column; gap: 2px; }
.x30-author { font-family: var(--bs-font-heading); font-weight: var(--bs-weight-medium); color: var(--bs-ink); font-size: var(--bs-type-body); }
.x30-rating { color: var(--bs-accent-color); font-size: var(--bs-fs-small); letter-spacing: 1px; }
.x30-star { color: #8a97ad; }
.x30-star--on, .x30-star--half { color: var(--bs-accent-color); }
.x30-text { color: var(--bs-ink-soft); font-size: var(--bs-type-body); line-height: var(--bs-line-normal); margin: 0; }

/* ===== faq (FAQ-07 compact) ===== */
.z27 { padding-block: var(--bs-sec-y); }
.z27-heading {
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    font-size: var(--bs-text-h2);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-tight);
    margin: 0 0 var(--bs-spacing-lg);
}
.z27-list { max-width: var(--bs-readable-width); }
.z27-item { border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
.z27-question {
    display: flex; align-items: center; justify-content: space-between;
    gap: var(--bs-gutter-sm);
    cursor: pointer;
    list-style: none;
    padding-block: var(--bs-gutter-sm);
    font-family: var(--bs-font-base);
    font-size: var(--bs-size-h5);
    font-weight: var(--bs-weight-medium);
    color: var(--bs-ink);
}
.z27-question::-webkit-details-marker { display: none; }
.z27-icon { width: 12px; height: 12px; flex-shrink: 0; position: relative; }
.z27-icon::before, .z27-icon::after { content: ""; position: absolute; background: var(--bs-accent-color); transition: transform var(--bs-transition-base) var(--bs-easing); }
.z27-icon::before { top: 5px; left: 0; width: 12px; height: 2px; }
.z27-icon::after { top: 0; left: 5px; width: 2px; height: 12px; }
.z27-item[open] .z27-icon::after { transform: scaleY(0); }
.z27-answer { color: var(--bs-ink-soft); font-size: var(--bs-type-body); line-height: var(--bs-line-loose); padding-block: 0 var(--bs-gutter-sm); }

/* ===== cta-block (CTA-01 full-width strip) ===== */
.f49 { background: var(--bs-accent-color); padding-block: var(--bs-sec-y); }
.f49-inner { display: flex; align-items: center; justify-content: space-between; gap: var(--bs-gutter-xl); }
.f49-title {
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    font-size: var(--bs-text-h2);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-tight);
    line-height: var(--bs-line-tight);
    color: var(--bs-page-bg);
    max-width: 720px;
    margin: 0;
}
.f49-description { color: var(--bs-page-bg); font-size: var(--bs-type-body); line-height: var(--bs-line-normal); max-width: 580px; margin: var(--bs-gutter-sm) 0 0; }
.f49-button {
    flex-shrink: 0;
    min-width: 220px;
    height: 56px;
    padding-inline: var(--bs-gutter-2xl);
    display: inline-flex; align-items: center; justify-content: center;
    background: var(--bs-page-bg);
    color: var(--bs-accent-color);
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-wide);
    border-radius: var(--bs-corner);
    transition: transform var(--bs-transition-base) var(--bs-easing), color var(--bs-transition-base) var(--bs-easing);
}
.f49-button:hover { background: var(--bs-page-bg); color: var(--bs-accent-active); transform: scale(1.03); }

/* ===== author-card (AUTH-06) ===== */
.z69 { padding-block: var(--bs-sec-y); }
.z69-inner { background: linear-gradient(135deg, var(--bs-primary), var(--bs-page-bg)); border-radius: var(--bs-corner-lg); padding-block: var(--bs-gutter-2xl); }
.z69-grid { display: grid; grid-template-columns: 280px 1fr; gap: var(--bs-gutter-2xl); align-items: center; }
.z69-portrait { width: 280px; height: 350px; object-fit: cover; border-radius: var(--bs-corner-lg); box-shadow: var(--bs-shade-lg); }
.z69-eyebrow { font-family: var(--bs-font-base); font-size: var(--bs-fs-small); text-transform: uppercase; letter-spacing: var(--bs-letter-wide); color: var(--bs-accent-color); margin: 0 0 var(--bs-gutter-sm); }
.z69-name { font-family: var(--bs-font-heading); font-weight: var(--bs-weight-bold); font-size: clamp(40px, 6vw, 64px); line-height: var(--bs-line-tight); text-transform: uppercase; margin: 0 0 var(--bs-spacing-md); }
.z69-bio { font-size: var(--bs-size-h5); color: var(--bs-ink); line-height: var(--bs-line-normal); max-width: 540px; margin: 0 0 var(--bs-spacing-lg); }
.z69-expertise { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: var(--bs-gutter-sm); }
.z69-expertise-item {
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid var(--bs-color-line);
    color: var(--bs-ink);
    font-size: var(--bs-fs-small);
    padding: var(--bs-spacing-xs) var(--bs-spacing-md);
    border-radius: var(--bs-pill);
}

/* ===== author-byline (BYLINE-06) ===== */
.e74 { padding-block: var(--bs-spacing-md); }
.e74-inner { display: flex; align-items: center; gap: var(--bs-spacing-md); border-top: 1px solid var(--bs-color-line); padding-top: var(--bs-spacing-md); }
.e74-hold { max-width: var(--bs-readable-width); }
.e74-text { flex: 1; font-size: var(--bs-fs-small); font-style: italic; color: var(--bs-ink-soft); margin: 0; }
.e74-name { color: var(--bs-accent-color); text-decoration: underline; text-underline-offset: 3px; font-style: normal; }
.e74-name:hover { color: var(--bs-accent-active); text-decoration-thickness: 2px; }
.e74-divider { margin-inline: var(--bs-space-2xs); }
.e74-role { color: var(--bs-ink-soft); }
.e74-portrait { width: 40px; height: 40px; flex-shrink: 0; border-radius: var(--bs-circle); object-fit: cover; }

/* ===== legal-section (LEGAL-05 definition list) ===== */
.n95 { padding-block: var(--bs-sec-y); }
.n95-readable { max-width: var(--bs-readable-width); }
.n95-intro { font-size: var(--bs-size-h5); color: var(--bs-ink); line-height: var(--bs-line-normal); margin: 0 0 var(--bs-gutter-xl); }
.n95-list { margin: 0; }
.n95-term { font-family: var(--bs-font-heading); font-weight: var(--bs-weight-bold); font-size: var(--bs-type-h4); color: var(--bs-ink); margin-block-start: var(--bs-spacing-lg); margin-block-end: var(--bs-spacing-xs); position: relative; padding-top: var(--bs-gutter-sm); }
.n95-term::before { content: ""; position: absolute; top: 0; left: 0; width: 30px; height: 2px; background: var(--bs-accent-color); }
.n95-definition { margin-inline-start: 0; font-size: var(--bs-type-body); color: var(--bs-ink-soft); line-height: var(--bs-line-loose); margin-block-end: var(--bs-spacing-md); }
.n95-support-heading { font-family: var(--bs-font-heading); font-weight: var(--bs-weight-bold); font-size: var(--bs-type-h4); color: var(--bs-ink); margin: var(--bs-gutter-xl) 0 var(--bs-gutter-sm); }
.n95-support { padding-left: var(--bs-spacing-lg); color: var(--bs-ink-soft); font-size: var(--bs-type-body); }
.n95-support-item { margin-bottom: var(--bs-spacing-xs); line-height: var(--bs-line-normal); }
.n95-disclaimer { font-size: var(--bs-fs-small); color: var(--bs-ink-soft); font-style: italic; margin: var(--bs-spacing-lg) 0 0; line-height: var(--bs-line-normal); }

/* ===== contact-form (FORM-05 bordered editorial) ===== */
.q16 { padding-block: var(--bs-sec-y); }
.q16-readable { max-width: var(--bs-readable-width); }
.q16-intro { font-size: var(--bs-size-h5); color: var(--bs-ink-soft); line-height: var(--bs-line-normal); margin: 0 0 var(--bs-spacing-lg); }
.q16-form { border: 2px solid var(--bs-accent-color); border-radius: var(--bs-corner); padding: var(--bs-gutter-xl); }
.q16-field { margin-bottom: var(--bs-spacing-lg); }
.q16-label { display: block; font-size: var(--bs-fs-small); text-transform: uppercase; letter-spacing: var(--bs-letter-wide); color: var(--bs-ink-soft); margin-bottom: var(--bs-spacing-xs); }
.q16-input, .q16-textarea {
    width: 100%;
    background: transparent;
    border: 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.18);
    color: var(--bs-ink);
    font-family: var(--bs-font-base);
    font-size: var(--bs-size-h5);
    padding: var(--bs-spacing-xs) 0;
}
.q16-input:focus, .q16-textarea:focus { outline: none; border-bottom-color: var(--bs-accent-color); }
.q16-textarea { resize: vertical; }
.q16-submit {
    background: var(--bs-accent-color);
    color: var(--bs-page-bg);
    border: 0;
    height: 52px;
    padding-inline: var(--bs-gutter-xl);
    font-family: var(--bs-font-heading);
    font-weight: var(--bs-weight-bold);
    text-transform: uppercase;
    letter-spacing: var(--bs-letter-wide);
    border-radius: var(--bs-corner);
    cursor: pointer;
    transition: background var(--bs-transition-base) var(--bs-easing);
}
.q16-submit:hover { background: var(--bs-accent-active); color: var(--bs-page-bg); }
.q16-success { margin-top: var(--bs-spacing-lg); color: var(--bs-ink); background: rgba(24, 114, 175, 0.25); border: 1px solid var(--bs-primary); padding: var(--bs-spacing-md); border-radius: var(--bs-corner); }

/* ===== error-block (ERR-01) ===== */
.u03 { padding-block: var(--bs-space-3xl); text-align: center; min-height: calc(100vh - var(--bs-nav-h-desktop) - 260px); }
.u03-hold { max-width: 640px; margin-inline: auto; padding-inline: var(--bs-edge-desktop); display: flex; flex-direction: column; align-items: center; gap: var(--bs-spacing-lg); }
.u03-number { font-family: var(--bs-font-heading); font-weight: var(--bs-weight-bold); font-size: clamp(80px, 18vw, 200px); line-height: var(--bs-line-tight); color: var(--bs-accent-color); margin: 0; }
.u03-title { font-family: var(--bs-font-heading); font-weight: var(--bs-weight-bold); font-size: var(--bs-text-h2); text-transform: uppercase; margin: 0; }
.u03-text { font-size: var(--bs-size-h5); color: var(--bs-ink-soft); margin: 0; }
.u03-button {
    height: 52px; padding-inline: var(--bs-gutter-xl);
    display: inline-flex; align-items: center;
    background: var(--bs-accent-color); color: var(--bs-page-bg);
    font-family: var(--bs-font-heading); font-weight: var(--bs-weight-bold);
    text-transform: uppercase; letter-spacing: var(--bs-letter-wide);
    border-radius: var(--bs-corner);
    transition: background var(--bs-transition-base) var(--bs-easing);
}
.u03-button:hover { background: var(--bs-accent-active); color: var(--bs-page-bg); }

/* ===== footer (FOOT-03 massive centered) ===== */
.o44 { background: var(--bs-page-bg); border-top: 1px solid var(--bs-color-line); padding-block: var(--bs-space-3xl); }
.o44-inner { display: flex; flex-direction: column; align-items: center; gap: var(--bs-spacing-lg); text-align: center; }
.o44-logo { display: inline-flex; }
.o44-logo-img { height: 88px; width: auto; }
.o44-nav-list { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: var(--bs-spacing-lg); }
.o44-nav-link { font-family: var(--bs-font-heading); font-weight: var(--bs-weight-medium); font-size: var(--bs-type-body); color: var(--bs-ink); }
.o44-nav-link:hover { color: var(--bs-accent-color); }
.o44-tagline { font-size: var(--bs-fs-small); color: var(--bs-ink-soft); max-width: 560px; line-height: var(--bs-line-loose); margin: 0; }
.o44-legal-row { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: var(--bs-gutter-sm); }
.o44-legal-link { font-size: var(--bs-text-xs); letter-spacing: var(--bs-letter-wide); text-transform: uppercase; color: var(--bs-ink-soft); }
.o44-legal-link:hover { color: var(--bs-accent-color); }
.o44-legal-sep { color: var(--bs-ink-soft); }
.o44-age { font-size: var(--bs-text-xs); letter-spacing: var(--bs-letter-wide); color: var(--bs-accent-color); font-weight: var(--bs-weight-bold); }
.o44-copyright { font-size: var(--bs-text-xs); color: var(--bs-ink-soft); }

/* ===== cookie-banner (COOK-02 full-width bottom strip) ===== */
.a02 { position: fixed; bottom: 0; left: 0; right: 0; z-index: 90; background: var(--bs-primary); border-top: 1px solid rgba(255, 255, 255, 0.10); }
.a02-inner { display: flex; align-items: center; justify-content: space-between; gap: var(--bs-spacing-md); padding-block: var(--bs-spacing-md); }
.a02-message { flex: 1; font-size: var(--bs-fs-small); color: var(--bs-ink); margin: 0; line-height: var(--bs-line-normal); }
.a02-actions { display: flex; flex-shrink: 0; gap: var(--bs-gutter-sm); }
.a02-btn { font-family: var(--bs-font-heading); font-weight: var(--bs-weight-bold); font-size: var(--bs-fs-small); text-transform: uppercase; letter-spacing: var(--bs-letter-wide); border-radius: var(--bs-corner); padding: var(--bs-gutter-sm) var(--bs-spacing-lg); cursor: pointer; border: 1px solid transparent; transition: background var(--bs-transition-base) var(--bs-easing), color var(--bs-transition-base) var(--bs-easing); }
.a02-btn-accept { background: var(--bs-accent-color); color: var(--bs-page-bg); border-color: var(--bs-accent-color); }
.a02-btn-accept:hover { background: var(--bs-accent-active); color: var(--bs-page-bg); }
.a02-btn-decline { background: var(--bs-primary); color: var(--bs-ink); border-color: var(--bs-ink); }
.a02-btn-decline:hover { background: var(--bs-ink); color: var(--bs-primary); }

/* ===== responsive (desktop-first) ===== */
@media (max-width: 1160px) {
    .v37 { height: var(--bs-header-h-mobile); }
    .v37-inner { flex-direction: row; align-items: center; justify-content: space-between; }
    .v37-row-top { height: 100%; flex: 1; }
    .v37-row-bottom { display: none; }
    .v37-toggle { display: flex; }
    .v37-logo-img { height: 60px; }
    body { padding-top: var(--bs-header-h-mobile); }
    .g78-list, .x30-list { grid-template-columns: repeat(2, 1fr); }
    .e30-grid { grid-template-columns: 1fr; gap: var(--bs-spacing-lg); }
    .f49-inner { flex-direction: column; align-items: flex-start; }
    .f49-button { width: 100%; }
    .z69-grid { grid-template-columns: 220px 1fr; gap: var(--bs-gutter-xl); }
    .z69-portrait { width: 220px; height: 280px; }
}

@media (max-width: 860px) {
    :root {
        --bs-size-h1: 44px; --bs-text-h2: 32px; --bs-fs-h3: 24px; --bs-type-h4: 18px;
        --bs-size-h5: 14px; --bs-text-h6: 12px; --bs-type-body: 14px; --bs-fs-small: 12px; --bs-text-xs: 10px;
        --bs-edge-desktop: 16px;
    }
    .a05-img { height: 220px; }
    .g78-list, .x30-list { grid-template-columns: 1fr; }
    .z69-grid { grid-template-columns: 1fr; gap: var(--bs-spacing-lg); }
    .z69-portrait { width: 100%; max-width: 280px; height: 320px; }
    .z69-inner { padding-inline: var(--bs-spacing-lg); }
    .f49-button { width: 100%; }
    .a05-title { letter-spacing: var(--bs-letter-tight); }
}

@media (max-width: 720px) {
    .a02, .a02-inner { padding: 12px 14px !important; gap: 8px !important; }
    .a02-inner { flex-direction: column; align-items: stretch; }
    .a02-message { font-size: 13px !important; line-height: 1.35 !important; }
    .a02-actions { justify-content: flex-end; }
    .a02-btn { padding: 8px 14px !important; font-size: 12px !important; min-height: 36px !important; }
}
