:root {
    --webcore-primary: #2457d6;
    --webcore-secondary: #17213a;
    --webcore-accent: #c25a2d;
    --webcore-action: #2457d6;
    --webcore-bg: #f5f7fb;
    --webcore-surface: #ffffff;
    --webcore-surface-soft: #f9fafc;
    --webcore-text: #1b2430;
    --webcore-muted: #647184;
    --webcore-border: #dfe4eb;
    --webcore-danger: #b42318;
    --webcore-success: #067647;

    --webcore-font-body: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --webcore-font-heading: var(--webcore-font-body);
    --webcore-font-accent: var(--webcore-font-body);

    --webcore-radius-sm: 8px;
    --webcore-radius: 14px;
    --webcore-radius-lg: 22px;
    --webcore-shadow-sm: 0 8px 28px rgba(20, 32, 55, 0.035);
    --webcore-shadow: 0 18px 45px rgba(20, 32, 55, 0.08);
    --webcore-shadow-lg: 0 26px 70px rgba(20, 32, 55, 0.12);

    --webcore-container: 1160px;
    --webcore-container-wide: 1320px;
    --webcore-container-narrow: 900px;
    --webcore-prose-width: 760px;

    --webcore-space-section: 64px;
    --webcore-space-section-large: 92px;
    --webcore-space-card: 28px;
    --webcore-space-inline: 24px;

    --webcore-motion-fast: 150ms;
    --webcore-motion-standard: 240ms;
    --webcore-motion-slow: 420ms;

    font-family: var(--webcore-font-body);
    color: var(--webcore-text);
    background: var(--webcore-bg);
    line-height: 1.65;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; min-height: 100vh; background: var(--webcore-bg); color: var(--webcore-text); }
a { color: var(--webcore-primary); text-underline-offset: 0.18em; }
button, input, textarea, select { font: inherit; }
img { max-width: 100%; height: auto; }


/* Package E: controlled visual-language foundation */
body { font-family: var(--webcore-font-body); }
h1, h2, h3, h4, h5, h6 { font-family: var(--webcore-font-heading); }

.theme-typography-editorial {
    --webcore-font-heading: Georgia, "Times New Roman", serif;
}
.theme-typography-technical {
    --webcore-font-heading: ui-monospace, "SFMono-Regular", Consolas, "Liberation Mono", monospace;
}
.theme-typography-modern {
    --webcore-font-heading: "Segoe UI", ui-sans-serif, system-ui, sans-serif;
}

.theme-density-compact {
    --webcore-space-section: 46px;
    --webcore-space-section-large: 68px;
    --webcore-space-card: 22px;
    --webcore-space-inline: 20px;
}
.theme-density-spacious {
    --webcore-space-section: 82px;
    --webcore-space-section-large: 118px;
    --webcore-space-card: 34px;
    --webcore-space-inline: 30px;
}

.theme-shape-square {
    --webcore-radius-sm: 2px;
    --webcore-radius: 4px;
    --webcore-radius-lg: 6px;
}
.theme-shape-rounded {
    --webcore-radius-sm: 12px;
    --webcore-radius: 20px;
    --webcore-radius-lg: 32px;
}

.theme-personality-modern {
    --webcore-bg: #f7f8fb;
    --webcore-surface-soft: #f2f4f8;
    --webcore-shadow: 0 20px 55px rgba(20, 32, 55, 0.10);
}
.theme-personality-institutional {
    --webcore-bg: #f6f7f8;
    --webcore-surface-soft: #eef1f4;
    --webcore-shadow: 0 12px 30px rgba(20, 32, 55, 0.06);
}
.theme-personality-editorial {
    --webcore-bg: #faf9f6;
    --webcore-surface-soft: #f5f2ec;
    --webcore-border: #ded8ce;
    --webcore-shadow: 0 14px 34px rgba(47, 38, 29, 0.06);
}
.theme-personality-minimal {
    --webcore-bg: #ffffff;
    --webcore-surface-soft: #fafafa;
    --webcore-shadow-sm: none;
    --webcore-shadow: none;
    --webcore-shadow-lg: none;
}

.webcore-container-wide { width: min(var(--webcore-container-wide), calc(100% - 48px)); margin-inline: auto; }
.webcore-container-standard { width: min(var(--webcore-container), calc(100% - 48px)); margin-inline: auto; }
.webcore-container-narrow { width: min(var(--webcore-container-narrow), calc(100% - 48px)); margin-inline: auto; }
.webcore-prose-width { width: min(var(--webcore-prose-width), 100%); }

.webcore-section { padding-block: var(--webcore-space-section); }
.webcore-section-compact { padding-block: calc(var(--webcore-space-section) * 0.65); }
.webcore-section-generous { padding-block: var(--webcore-space-section-large); }
.webcore-section-surface { background: var(--webcore-surface); }
.webcore-section-soft { background: var(--webcore-surface-soft); }
.webcore-section-primary { background: var(--webcore-primary); color: #fff; }
.webcore-section-secondary { background: var(--webcore-secondary); color: #fff; }

.webcore-grid { display: grid; gap: clamp(18px, 3vw, 30px); }
.webcore-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.webcore-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.webcore-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.webcore-surface {
    padding: var(--webcore-space-card);
    background: var(--webcore-surface);
    border: 1px solid var(--webcore-border);
    border-radius: var(--webcore-radius);
    box-shadow: var(--webcore-shadow-sm);
}

.theme-sections-card-based .webcore-section > .site-container,
.theme-sections-card-based .webcore-section > .webcore-container-standard,
.theme-sections-card-based .webcore-section > .webcore-container-wide {
    padding: var(--webcore-space-card);
    background: var(--webcore-surface);
    border: 1px solid var(--webcore-border);
    border-radius: var(--webcore-radius-lg);
    box-shadow: var(--webcore-shadow-sm);
}
.theme-sections-alternating .webcore-section:nth-of-type(even) { background: var(--webcore-surface-soft); }
.theme-sections-bold .webcore-section-primary,
.theme-sections-bold .webcore-section-secondary { padding-block: var(--webcore-space-section-large); }

.header-static .site-header { position: relative; top: auto; }
.header-style-compact .site-header-inner { min-height: 64px; }
.header-style-compact .site-brand-logo { max-height: 32px; }
.header-style-brand-heavy .site-header-inner { min-height: 96px; }
.header-style-brand-heavy .site-brand-copy strong { font-size: 1.22rem; }
.header-style-navigation-heavy .site-navigation a { font-weight: 750; }
.header-logo-right .site-brand { order: 3; }
.header-logo-right .site-navigation { order: 1; }
.header-logo-right .site-nav-toggle { order: 2; }

.site-container { width: min(var(--webcore-container), calc(100% - 48px)); margin: 0 auto; }
.site-skip-link { position: fixed; top: 12px; left: 12px; z-index: 1000; padding: 10px 14px; background: var(--webcore-secondary); color: #fff; border-radius: var(--webcore-radius-sm); transform: translateY(-180%); }
.site-skip-link:focus { transform: translateY(0); }

.site-header { position: sticky; top: 0; z-index: 50; background: rgba(255,255,255,0.96); border-bottom: 1px solid var(--webcore-border); backdrop-filter: blur(8px); }
.site-header-inner { display: flex; align-items: center; justify-content: space-between; gap: 32px; min-height: 82px; }
.site-brand { display: inline-flex; align-items: center; gap: 12px; color: var(--webcore-secondary); text-decoration: none; }
.site-brand-mark { width: 11px; height: 38px; border-radius: 999px; background: var(--webcore-primary); }
.site-brand-copy { display: grid; line-height: 1.15; }
.site-brand-copy strong { font-size: 1.08rem; }
.site-brand-copy small { margin-top: 5px; color: var(--webcore-muted); font-size: 0.75rem; font-weight: 600; }

.site-navigation-list { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
.site-navigation a { display: block; padding: 9px 12px; border-radius: var(--webcore-radius-sm); color: var(--webcore-secondary); text-decoration: none; font-weight: 650; }
.site-navigation a:hover, .site-navigation a:focus-visible, .site-navigation a[aria-current="page"] { background: color-mix(in srgb, var(--webcore-primary) 9%, white); color: var(--webcore-primary); }
.site-nav-toggle { display: none; align-items: center; gap: 9px; padding: 9px 11px; border: 1px solid var(--webcore-border); border-radius: var(--webcore-radius-sm); background: var(--webcore-surface); color: var(--webcore-secondary); font-weight: 700; cursor: pointer; }
.site-nav-toggle-icon, .site-nav-toggle-icon::before, .site-nav-toggle-icon::after { display: block; width: 18px; height: 2px; background: currentColor; content: ""; }
.site-nav-toggle-icon { position: relative; }
.site-nav-toggle-icon::before { position: absolute; top: -6px; }
.site-nav-toggle-icon::after { position: absolute; top: 6px; }

.site-main { min-height: calc(100vh - 190px); padding: 68px 0 88px; }
.public-hero { position: relative; max-width: 880px; padding: 54px 0 66px; }
.public-home-hero::after { display: block; width: 84px; height: 5px; margin-top: 34px; border-radius: 999px; background: var(--webcore-accent); content: ""; }
.public-hero h1, .public-content h1 { margin: 0 0 20px; max-width: 980px; color: var(--webcore-secondary); font-size: clamp(2.35rem, 6vw, 4.8rem); line-height: 1.02; letter-spacing: -0.045em; }
.public-eyebrow { margin: 0 0 12px; color: var(--webcore-primary); font-size: 0.76rem; font-weight: 800; letter-spacing: 0.15em; text-transform: uppercase; }
.public-lead { max-width: 780px; margin: 0; color: var(--webcore-muted); font-size: clamp(1.08rem, 2vw, 1.3rem); line-height: 1.65; }
.public-section { margin-top: var(--webcore-space-section); }
.public-section-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; margin-bottom: 24px; }
.public-section-heading h2 { margin: 0; color: var(--webcore-secondary); font-size: clamp(1.65rem, 3vw, 2.15rem); line-height: 1.15; letter-spacing: -0.02em; }
.public-card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 22px; }
.public-card { display: flex; min-height: 230px; flex-direction: column; padding: var(--webcore-space-card); background: var(--webcore-surface); border: 1px solid var(--webcore-border); border-radius: var(--webcore-radius); box-shadow: var(--webcore-shadow-sm); }
.public-card h3 { margin: 0 0 12px; color: var(--webcore-secondary); font-size: 1.25rem; line-height: 1.3; }
.public-card h3 a { color: inherit; text-decoration: none; }
.public-card h3 a:hover, .public-card h3 a:focus-visible { color: var(--webcore-primary); }
.public-card p { color: var(--webcore-muted); }
.public-card .public-text-link { margin-top: auto; padding-top: 16px; font-weight: 750; text-decoration: none; }
.public-meta { margin: 0 0 10px; color: var(--webcore-muted); font-size: 0.88rem; font-weight: 650; }
.public-empty-state { padding: 42px; background: var(--webcore-surface); border: 1px dashed var(--webcore-border); border-radius: var(--webcore-radius); text-align: center; }
.public-empty-state h2 { margin-top: 0; color: var(--webcore-secondary); }

.public-content { max-width: 860px; margin: 0 auto; }
.public-content-header { margin-bottom: 42px; padding-bottom: 34px; border-bottom: 1px solid var(--webcore-border); }
.public-content-header h1 { font-size: clamp(2.3rem, 5vw, 4.15rem); }
.public-body { overflow-wrap: anywhere; color: #293444; font-size: 1.08rem; }
.public-prose { line-height: 1.85; }

.public-page-components { margin-top: 4rem; }
.public-component { margin: 2rem 0; }
.public-component h2 { margin: 0 0 14px; color: var(--webcore-secondary); font-size: clamp(1.5rem, 3vw, 2.15rem); line-height: 1.2; letter-spacing: -0.02em; }
.public-component-body { color: #384558; line-height: 1.8; }
.public-component-surface, .public-component-feature { padding: clamp(28px, 5vw, 48px); border: 1px solid var(--webcore-border); border-radius: var(--webcore-radius-lg); }
.public-component-surface { background: var(--webcore-surface); }
.public-component-feature { background: linear-gradient(135deg, color-mix(in srgb, var(--webcore-primary) 8%, white), var(--webcore-surface)); }
.public-component-eyebrow { margin-bottom: 10px; color: var(--webcore-accent); font-size: 0.78rem; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
.public-component-actions { margin-top: 24px; }
.public-button { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 11px 19px; border: 1px solid transparent; border-radius: var(--webcore-radius-sm); text-decoration: none; font-weight: 750; cursor: pointer; }
.public-button-primary { background: var(--webcore-action); color: #fff; }
.public-button-primary:hover, .public-button-primary:focus-visible { filter: brightness(0.92); }
.public-align-left { text-align: left; }
.public-align-center { text-align: center; }
.public-align-right { text-align: right; }

.webcore-form-page { max-width: 780px; margin: 0 auto; }
.webcore-form-card { padding: clamp(26px, 5vw, 46px); background: var(--webcore-surface); border: 1px solid var(--webcore-border); border-radius: var(--webcore-radius-lg); box-shadow: var(--webcore-shadow); }
.webcore-form-header { margin-bottom: 32px; }
.webcore-form-header h1 { margin: 0 0 12px; color: var(--webcore-secondary); font-size: clamp(2rem, 4vw, 3rem); line-height: 1.08; letter-spacing: -0.035em; }
.webcore-form-header p { margin: 0; color: var(--webcore-muted); }
.webcore-form { display: grid; gap: 23px; }
.webcore-form-field { display: grid; gap: 8px; }
.webcore-form-field > label, .webcore-form-check { color: var(--webcore-secondary); font-weight: 700; }
.webcore-required-mark { color: var(--webcore-danger); }
.webcore-form-field input[type="text"], .webcore-form-field input[type="email"], .webcore-form-field input[type="tel"], .webcore-form-field input[type="number"], .webcore-form-field input[type="date"], .webcore-form-field textarea, .webcore-form-field select { width: 100%; padding: 12px 13px; border: 1px solid #cbd3de; border-radius: 9px; background: #fff; color: var(--webcore-text); }
.webcore-form-field textarea { resize: vertical; }
.webcore-form-field input:focus, .webcore-form-field textarea:focus, .webcore-form-field select:focus { outline: 3px solid color-mix(in srgb, var(--webcore-primary) 22%, transparent); border-color: var(--webcore-primary); }
.webcore-form-field small { color: var(--webcore-muted); }
.webcore-form-check { display: flex; align-items: flex-start; gap: 10px; }
.webcore-form-check input { margin-top: 6px; }
.webcore-form-field-error { color: var(--webcore-danger); font-size: 0.9rem; font-weight: 650; }
.webcore-form-errors, .webcore-form-success { margin-bottom: 26px; padding: 15px 17px; border-radius: 10px; }
.webcore-form-errors { background: #fef3f2; border: 1px solid #fecdca; color: var(--webcore-danger); }
.webcore-form-errors p { margin: 0; }
.webcore-form-success { background: #ecfdf3; border: 1px solid #abefc6; color: var(--webcore-success); }
.webcore-form-actions { margin-top: 5px; }
.webcore-form-actions button { min-height: 46px; padding: 11px 20px; border: 0; border-radius: var(--webcore-radius-sm); background: var(--webcore-action); color: #fff; font-weight: 750; cursor: pointer; }
.webcore-form-actions button:hover, .webcore-form-actions button:focus-visible { filter: brightness(0.92); }

.site-footer { padding: 34px 0; background: var(--webcore-secondary); color: rgba(255,255,255,0.78); }
.site-footer-inner { display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.site-footer p { margin: 0; }
.site-footer-brand { color: #fff; font-weight: 800; }
.site-footer-copy { margin-top: 4px !important; font-size: 0.9rem; }
.site-footer-contact { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 12px 20px; font-size: 0.9rem; }
.site-footer a { color: #fff; }

.webcore-error-page { display: grid; min-height: 100vh; place-items: center; padding: 24px; background: radial-gradient(circle at top, color-mix(in srgb, var(--webcore-primary) 10%, white), var(--webcore-bg) 46%); }
.error-shell { width: min(680px, 100%); }
.error-card { padding: clamp(34px, 7vw, 64px); background: var(--webcore-surface); border: 1px solid var(--webcore-border); border-radius: var(--webcore-radius-lg); box-shadow: var(--webcore-shadow); text-align: center; }
.error-code { margin: 0 0 12px; color: var(--webcore-primary); font-size: 0.82rem; font-weight: 850; letter-spacing: 0.16em; }
.error-card h1 { margin: 0 0 16px; color: var(--webcore-secondary); font-size: clamp(2rem, 6vw, 3.5rem); line-height: 1.05; }
.error-card > p:not(.error-code) { max-width: 520px; margin: 0 auto 28px; color: var(--webcore-muted); }

:focus-visible { outline: 3px solid color-mix(in srgb, var(--webcore-primary) 45%, transparent); outline-offset: 3px; }

@media (max-width: 760px) {
    .webcore-container-wide, .webcore-container-standard, .webcore-container-narrow { width: min(100% - 30px, var(--webcore-container-wide)); }
    .webcore-grid-2, .webcore-grid-3, .webcore-grid-4 { grid-template-columns: 1fr; }
    .header-logo-right .site-brand, .header-logo-right .site-navigation, .header-logo-right .site-nav-toggle { order: initial; }
    .site-container { width: min(100% - 30px, var(--webcore-container)); }
    .site-header-inner { min-height: 72px; }
    .site-brand-copy small { display: none; }
    .site-nav-toggle { display: inline-flex; }
    .site-navigation { display: none; position: absolute; top: 100%; left: 0; width: 100%; padding: 10px 15px 18px; background: var(--webcore-surface); border-bottom: 1px solid var(--webcore-border); box-shadow: 0 16px 30px rgba(20,32,55,0.08); }
    .site-nav-open .site-navigation { display: block; }
    .site-navigation-list { display: grid; gap: 4px; }
    .site-navigation a { padding: 12px; }
    .site-main { padding: 42px 0 64px; }
    .public-hero { padding: 24px 0 46px; }
    .public-section { margin-top: 48px; }
    .public-card { min-height: auto; padding: 24px; }
    .site-footer-inner { align-items: flex-start; flex-direction: column; }
    .site-footer-contact { justify-content: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; }
}

/* Package D: governed identity and hierarchical navigation */
.site-brand-logo {
    display: block;
    width: auto;
    max-width: 160px;
    max-height: 40px;
    object-fit: contain;
}

.site-navigation-item {
    position: relative;
    list-style: none;
}

.site-navigation-link-row {
    display: flex;
    align-items: center;
}

.site-navigation-link-row > a {
    flex: 1 1 auto;
}

.site-submenu-toggle {
    display: inline-flex;
    width: 30px;
    height: 30px;
    margin-left: -7px;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: var(--webcore-secondary);
    cursor: pointer;
}

.site-submenu-toggle:hover,
.site-submenu-toggle:focus-visible {
    background: color-mix(in srgb, var(--webcore-primary) 9%, white);
    color: var(--webcore-primary);
    outline: none;
}

.site-submenu-chevron {
    width: 8px;
    height: 8px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: translateY(-2px) rotate(45deg);
    transition: transform 0.16s ease;
}

.site-submenu-toggle[aria-expanded="true"] .site-submenu-chevron {
    transform: translateY(2px) rotate(225deg);
}

.site-navigation-submenu {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 60;
    display: none;
    min-width: 210px;
    margin: 0;
    padding: 7px;
    list-style: none;
    background: var(--webcore-surface);
    border: 1px solid var(--webcore-border);
    border-radius: var(--webcore-radius-sm);
    box-shadow: var(--webcore-shadow);
}

.site-navigation-submenu .site-navigation-submenu {
    top: 0;
    left: calc(100% + 4px);
}

.site-navigation-item.is-submenu-open > .site-navigation-submenu {
    display: block;
}

@media (hover: hover) and (min-width: 761px) {
    .site-navigation-item.has-children:hover > .site-navigation-submenu,
    .site-navigation-item.has-children:focus-within > .site-navigation-submenu {
        display: block;
    }
}

.site-navigation-submenu a {
    padding: 8px 10px;
    white-space: nowrap;
    font-size: 0.94rem;
    font-weight: 600;
}

.public-smart-form-block.is-card {
    padding: clamp(22px, 4vw, 38px);
    background: var(--webcore-surface);
    border: 1px solid var(--webcore-border);
    border-radius: var(--webcore-radius-lg);
    box-shadow: var(--webcore-shadow);
}

.public-smart-form-block.is-plain {
    padding-block: 12px;
}

.public-smart-form-block .public-component-heading {
    margin-bottom: 24px;
}

.public-smart-form-block .public-component-heading h2 {
    margin: 0 0 8px;
}

.public-smart-form-block .public-component-heading p {
    margin: 0;
    color: var(--webcore-muted);
}

@media (max-width: 760px) {
    .site-brand-logo {
        max-width: 130px;
        max-height: 34px;
    }

    .site-navigation-list {
        gap: 2px;
    }

    .site-navigation-link-row {
        width: 100%;
    }

    .site-navigation-link-row > a {
        padding: 8px 10px;
        font-size: 0.96rem;
    }

    .site-submenu-toggle {
        width: 34px;
        height: 34px;
        margin-left: 0;
    }

    .site-navigation-submenu,
    .site-navigation-submenu .site-navigation-submenu {
        position: static;
        display: none;
        min-width: 0;
        margin: 1px 0 4px 12px;
        padding: 1px 0 1px 10px;
        border: 0;
        border-left: 2px solid var(--webcore-border);
        border-radius: 0;
        box-shadow: none;
    }

    .site-navigation-item.is-submenu-open > .site-navigation-submenu {
        display: block;
    }

    .site-navigation-submenu a {
        padding: 7px 9px;
        white-space: normal;
        font-size: 0.91rem;
        font-weight: 600;
    }
}


/* Package E Stage 2B: administrator-authored rich content */
.public-prose > :first-child { margin-top: 0; }
.public-prose > :last-child { margin-bottom: 0; }
.public-prose h2, .public-prose h3, .public-prose h4, .public-prose h5, .public-prose h6 { margin: 1.65em 0 0.65em; color: var(--webcore-secondary); line-height: 1.2; }
.public-prose h2 { font-size: clamp(1.65rem, 3vw, 2.25rem); }
.public-prose h3 { font-size: clamp(1.35rem, 2.5vw, 1.75rem); }
.public-prose p, .public-prose ul, .public-prose ol, .public-prose blockquote, .public-prose table, .public-prose pre { margin: 0 0 1.25em; }
.public-prose img, .public-prose video, .public-prose iframe, .public-prose object, .public-prose embed { max-width: 100%; }
.public-prose img { height: auto; border-radius: var(--webcore-radius-sm); }
.public-prose iframe, .public-prose video { width: 100%; }
.public-prose blockquote { padding: 0.35rem 0 0.35rem 1.2rem; border-left: 4px solid var(--webcore-primary); color: var(--webcore-muted); }
.public-prose table { display: block; width: 100%; max-width: 100%; overflow-x: auto; border-collapse: collapse; }
.public-prose th, .public-prose td { padding: 0.7rem 0.85rem; border: 1px solid var(--webcore-border); text-align: left; }
.public-prose th { background: color-mix(in srgb, var(--webcore-primary) 7%, white); color: var(--webcore-secondary); }
.public-prose pre { max-width: 100%; overflow-x: auto; padding: 1rem 1.15rem; border-radius: var(--webcore-radius-sm); background: #111827; color: #f9fafb; }
.public-prose hr { margin: 2rem 0; border: 0; border-top: 1px solid var(--webcore-border); }

/* Package E Stage 2C: registry-driven Component Studio section architecture */
.public-page-components {
    display: grid;
    gap: 0;
    margin-top: var(--webcore-space-section);
}

.webcore-component-section {
    position: relative;
    width: 100%;
    scroll-margin-top: 100px;
}

.webcore-component-section-inner {
    position: relative;
    margin-inline: auto;
}

.webcore-component-width-narrow .webcore-component-section-inner {
    width: min(var(--webcore-container-narrow), calc(100vw - 48px));
}

.webcore-component-width-standard .webcore-component-section-inner {
    width: min(var(--webcore-container), calc(100vw - 48px));
}

.webcore-component-width-wide .webcore-component-section-inner {
    width: min(var(--webcore-container-wide), calc(100vw - 48px));
}

.webcore-component-width-full {
    width: 100vw;
    margin-left: calc(50% - 50vw);
}

.webcore-component-width-full .webcore-component-section-inner {
    width: 100%;
}

.webcore-component-width-wide,
.webcore-component-width-standard,
.webcore-component-width-narrow {
    width: 100vw;
    margin-left: calc(50% - 50vw);
}

.webcore-component-spacing-compact { padding-block: calc(var(--webcore-space-section) * 0.5); }
.webcore-component-spacing-standard { padding-block: var(--webcore-space-section); }
.webcore-component-spacing-generous { padding-block: var(--webcore-space-section-large); }

.webcore-component-bg-default { background: transparent; }
.webcore-component-bg-surface { background: var(--webcore-surface); }
.webcore-component-bg-neutral { background: var(--webcore-surface-soft); }
.webcore-component-bg-primary { background: var(--webcore-primary); color: #fff; }
.webcore-component-bg-secondary { background: var(--webcore-secondary); color: #fff; }
.webcore-component-bg-dark { background: #111827; color: #fff; }

.webcore-component-bg-primary .public-component h2,
.webcore-component-bg-secondary .public-component h2,
.webcore-component-bg-dark .public-component h2,
.webcore-component-bg-primary .public-component-body,
.webcore-component-bg-secondary .public-component-body,
.webcore-component-bg-dark .public-component-body,
.webcore-component-bg-primary .public-component-heading p,
.webcore-component-bg-secondary .public-component-heading p,
.webcore-component-bg-dark .public-component-heading p {
    color: inherit;
}

.webcore-component-frame-card .webcore-component-section-inner,
.webcore-component-frame-bordered .webcore-component-section-inner {
    padding: clamp(22px, 4vw, var(--webcore-space-card));
    border-radius: var(--webcore-radius-lg);
}

.webcore-component-frame-card .webcore-component-section-inner {
    background: var(--webcore-surface);
    color: var(--webcore-text);
    border: 1px solid var(--webcore-border);
    box-shadow: var(--webcore-shadow-sm);
}

.webcore-component-frame-bordered .webcore-component-section-inner {
    border: 1px solid currentColor;
}

.webcore-component-frame-card .public-component h2,
.webcore-component-frame-card .public-component-body,
.webcore-component-frame-card .public-component-heading p {
    color: inherit;
}

.webcore-component-section .public-component {
    margin: 0;
}

@media (max-width: 760px) {
    .webcore-component-width-narrow .webcore-component-section-inner,
    .webcore-component-width-standard .webcore-component-section-inner,
    .webcore-component-width-wide .webcore-component-section-inner {
        width: min(100% - 30px, var(--webcore-container-wide));
    }

    .webcore-component-spacing-compact { padding-block: 28px; }
    .webcore-component-spacing-standard { padding-block: 44px; }
    .webcore-component-spacing-generous { padding-block: 62px; }
}

/* Package E Stage 2D: professional core component library */
.public-component-heading {
    max-width: 760px;
    margin-bottom: clamp(24px, 4vw, 40px);
}

.public-component-heading h2 { margin: 0 0 10px; }
.public-component-heading p { margin: 0; color: var(--webcore-muted); }

.public-component-eyebrow,
.public-card-kicker {
    margin-bottom: 8px;
    color: var(--webcore-primary);
    font-size: 0.76rem;
    font-weight: 800;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.webcore-component-bg-primary .public-component-eyebrow,
.webcore-component-bg-secondary .public-component-eyebrow,
.webcore-component-bg-dark .public-component-eyebrow,
.webcore-component-bg-primary .public-card-kicker,
.webcore-component-bg-secondary .public-card-kicker,
.webcore-component-bg-dark .public-card-kicker {
    color: inherit;
    opacity: 0.78;
}

.public-card-grid,
.public-stat-grid {
    display: grid;
    gap: clamp(16px, 2.3vw, 26px);
}

.public-grid-columns-1 { grid-template-columns: minmax(0, 1fr); }
.public-grid-columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.public-grid-columns-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.public-grid-columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.public-feature-card,
.public-testimonial-card,
.public-stat-item {
    min-width: 0;
    margin: 0;
    padding: clamp(20px, 3vw, 30px);
    border: 1px solid var(--webcore-border);
    border-radius: var(--webcore-radius-lg);
    background: var(--webcore-surface);
    color: var(--webcore-text);
    box-shadow: var(--webcore-shadow-sm);
}

.public-feature-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.public-feature-card h3 { margin: 0 0 10px; color: var(--webcore-secondary); font-size: clamp(1.15rem, 2vw, 1.4rem); }
.public-feature-card p { margin: 0 0 18px; color: var(--webcore-muted); }
.public-card-link { margin-top: auto; color: var(--webcore-primary); font-weight: 750; text-decoration: none; }
.public-card-link:hover { text-decoration: underline; }

.public-stat-item { text-align: center; }
.public-stat-value { max-width: 100%; color: var(--webcore-primary); font-size: clamp(2rem, 4vw, 3.6rem); font-weight: 850; letter-spacing: -0.04em; line-height: 1; overflow-wrap: anywhere; text-wrap: balance; }
.public-stat-value-long { font-size: clamp(1.45rem, 3vw, 2.7rem); line-height: 1.08; letter-spacing: -0.025em; }
.public-stat-value-extra-long { font-size: clamp(1.2rem, 2.4vw, 2.05rem); line-height: 1.12; letter-spacing: -0.015em; }
.public-stat-label { margin-top: 10px; color: var(--webcore-secondary); font-weight: 750; }
.public-stat-note { margin-top: 6px; color: var(--webcore-muted); font-size: 0.9rem; }

.public-split {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: clamp(28px, 5vw, 72px);
    align-items: center;
}

.public-split-image-right .public-split-media { order: 2; }
.public-split-image-right .public-split-copy { order: 1; }
.public-split-media img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--webcore-radius-lg); box-shadow: var(--webcore-shadow-sm); }
.public-split-copy h2 { margin: 0 0 14px; }
.public-split-copy .public-component-body { color: var(--webcore-muted); }

.public-testimonial-card blockquote { margin: 0; color: var(--webcore-secondary); font-size: 1.05rem; line-height: 1.7; }
.public-testimonial-card figcaption { display: grid; gap: 2px; margin-top: 20px; }
.public-testimonial-card figcaption strong { color: var(--webcore-secondary); }
.public-testimonial-card figcaption span { color: var(--webcore-muted); font-size: 0.9rem; }

.public-logo-strip {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 16px;
    align-items: stretch;
}

.public-logo-item {
    min-height: 100px;
    display: grid;
    place-items: center;
    padding: 18px;
    border: 1px solid var(--webcore-border);
    border-radius: var(--webcore-radius-md);
    background: var(--webcore-surface);
}

.public-logo-item img { display: block; max-width: 100%; width: auto; max-height: 64px; object-fit: contain; }

.public-quote-highlight { margin: 0; padding-inline: clamp(0px, 3vw, 40px); }
.public-quote-highlight blockquote { margin: 0; color: inherit; font-weight: 650; letter-spacing: -0.02em; line-height: 1.35; }
.public-quote-standard blockquote { font-size: clamp(1.45rem, 2.8vw, 2.15rem); }
.public-quote-large blockquote { font-size: clamp(1.8rem, 3.8vw, 3rem); }
.public-quote-display blockquote { font-size: clamp(2.2rem, 5vw, 4.2rem); line-height: 1.12; }
.public-quote-align-center { max-width: 960px; margin-inline: auto; text-align: center; }
.public-quote-highlight figcaption { display: grid; gap: 2px; margin-top: 22px; color: var(--webcore-muted); }
.webcore-component-bg-primary .public-quote-highlight figcaption,
.webcore-component-bg-secondary .public-quote-highlight figcaption,
.webcore-component-bg-dark .public-quote-highlight figcaption { color: inherit; opacity: 0.78; }

.public-component-hero {
    display: grid;
    gap: clamp(28px, 5vw, 72px);
    align-items: center;
}

.public-component-hero-media_right,
.public-component-hero-media_left { grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr); }
.public-component-hero-media_left .public-hero-media { order: 1; }
.public-component-hero-media_left .public-hero-copy { order: 2; }
.public-component-hero-centered { max-width: 900px; margin-inline: auto; text-align: center; }
.public-component-hero-centered .public-component-actions,
.public-component-hero-centered_media .public-component-actions { justify-content: center; }
.public-component-hero-centered_media { max-width: 1000px; margin-inline: auto; text-align: center; grid-template-columns: minmax(0, 1fr); }
.public-component-hero-centered_media .public-component-body { margin-inline: auto; }
.public-component-hero-centered_media .public-hero-media { width: min(100%, 820px); margin-inline: auto; }
.public-component-hero h2 { margin: 0 0 16px; font-size: clamp(2.2rem, 5vw, 4.75rem); line-height: 1.03; letter-spacing: -0.045em; }
.public-component-hero .public-component-body { max-width: 760px; font-size: clamp(1.05rem, 1.7vw, 1.3rem); line-height: 1.65; }
.public-hero-media img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: var(--webcore-radius-lg); box-shadow: var(--webcore-shadow); }
.public-responsive-video { position: relative; overflow: hidden; width: 100%; aspect-ratio: 16 / 9; border-radius: var(--webcore-radius-lg); background: #000; box-shadow: var(--webcore-shadow); }
.public-responsive-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

.webcore-component-bg-primary .public-feature-card,
.webcore-component-bg-secondary .public-feature-card,
.webcore-component-bg-dark .public-feature-card,
.webcore-component-bg-primary .public-testimonial-card,
.webcore-component-bg-secondary .public-testimonial-card,
.webcore-component-bg-dark .public-testimonial-card,
.webcore-component-bg-primary .public-stat-item,
.webcore-component-bg-secondary .public-stat-item,
.webcore-component-bg-dark .public-stat-item {
    border-color: rgba(255,255,255,0.18);
    background: rgba(255,255,255,0.09);
    color: #fff;
}

.webcore-component-bg-primary .public-feature-card h3,
.webcore-component-bg-secondary .public-feature-card h3,
.webcore-component-bg-dark .public-feature-card h3,
.webcore-component-bg-primary .public-feature-card p,
.webcore-component-bg-secondary .public-feature-card p,
.webcore-component-bg-dark .public-feature-card p,
.webcore-component-bg-primary .public-testimonial-card blockquote,
.webcore-component-bg-secondary .public-testimonial-card blockquote,
.webcore-component-bg-dark .public-testimonial-card blockquote,
.webcore-component-bg-primary .public-testimonial-card figcaption strong,
.webcore-component-bg-secondary .public-testimonial-card figcaption strong,
.webcore-component-bg-dark .public-testimonial-card figcaption strong,
.webcore-component-bg-primary .public-testimonial-card figcaption span,
.webcore-component-bg-secondary .public-testimonial-card figcaption span,
.webcore-component-bg-dark .public-testimonial-card figcaption span,
.webcore-component-bg-primary .public-stat-value,
.webcore-component-bg-secondary .public-stat-value,
.webcore-component-bg-dark .public-stat-value,
.webcore-component-bg-primary .public-stat-label,
.webcore-component-bg-secondary .public-stat-label,
.webcore-component-bg-dark .public-stat-label,
.webcore-component-bg-primary .public-stat-note,
.webcore-component-bg-secondary .public-stat-note,
.webcore-component-bg-dark .public-stat-note {
    color: inherit;
}

@media (max-width: 920px) {
    .public-grid-columns-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .public-grid-columns-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .public-component-hero-media_right,
    .public-component-hero-media_left,
    .public-split { grid-template-columns: 1fr; }
    .public-component-hero-media_left .public-hero-media,
    .public-component-hero-media_left .public-hero-copy,
    .public-split-image-right .public-split-media,
    .public-split-image-right .public-split-copy { order: initial; }
}

@media (max-width: 620px) {
    .public-grid-columns-2,
    .public-grid-columns-3,
    .public-grid-columns-4 { grid-template-columns: 1fr; }
    .public-component-hero h2 { font-size: clamp(2rem, 12vw, 3.2rem); }
    .public-logo-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}


/* Package E Stage 2E: robust contrast, governed imagery and icon treatments */
.webcore-component-bg-primary,
.webcore-component-bg-secondary,
.webcore-component-bg-dark { --webcore-section-fg: #fff; --webcore-section-muted: rgba(255,255,255,.82); }
.webcore-component-bg-primary .public-component,
.webcore-component-bg-secondary .public-component,
.webcore-component-bg-dark .public-component { color: var(--webcore-section-fg); }
.webcore-component-bg-primary .public-component-heading h2,
.webcore-component-bg-secondary .public-component-heading h2,
.webcore-component-bg-dark .public-component-heading h2,
.webcore-component-bg-primary .public-component-heading p,
.webcore-component-bg-secondary .public-component-heading p,
.webcore-component-bg-dark .public-component-heading p { color: var(--webcore-section-fg) !important; }
.webcore-component-bg-primary.webcore-component-frame-card .public-component,
.webcore-component-bg-secondary.webcore-component-frame-card .public-component,
.webcore-component-bg-dark.webcore-component-frame-card .public-component { color: var(--webcore-text); }
.webcore-component-bg-primary.webcore-component-frame-card .public-component-heading h2,
.webcore-component-bg-secondary.webcore-component-frame-card .public-component-heading h2,
.webcore-component-bg-dark.webcore-component-frame-card .public-component-heading h2 { color: var(--webcore-secondary) !important; }
.webcore-component-bg-primary.webcore-component-frame-card .public-component-heading p,
.webcore-component-bg-secondary.webcore-component-frame-card .public-component-heading p,
.webcore-component-bg-dark.webcore-component-frame-card .public-component-heading p { color: var(--webcore-muted) !important; }

.public-component-icon { display:inline-grid; place-items:center; width:2.75rem; height:2.75rem; margin-bottom:14px; border-radius:var(--webcore-radius-md); background:color-mix(in srgb, var(--webcore-primary) 12%, transparent); color:var(--webcore-primary); font-size:1.45rem; }
.webcore-component-bg-primary .public-component-icon,
.webcore-component-bg-secondary .public-component-icon,
.webcore-component-bg-dark .public-component-icon { background:rgba(255,255,255,.14); color:#fff; }
.public-card-image { width:calc(100% + 44px); max-width:none; height:190px; margin:-22px -22px 20px; object-fit:cover; border-radius:var(--webcore-radius-md) var(--webcore-radius-md) 0 0; }
.public-feature-visual-background { min-height:320px; background-size:cover; background-position:center; color:#fff; display:flex; align-items:flex-end; }
.public-feature-visual-background h3,
.public-feature-visual-background p,
.public-feature-visual-background .public-card-kicker,
.public-feature-visual-background .public-card-link { color:#fff !important; }
.public-feature-visual-background .public-card-content { position:relative; z-index:1; }
.public-stat-icon { margin-inline:auto; }
.public-testimonial-portrait { width:72px; height:72px; border-radius:50%; object-fit:cover; margin-bottom:16px; border:3px solid var(--webcore-surface); box-shadow:var(--webcore-shadow-sm); }
.public-quote-has-background,
.public-cta-has-background { background-size:cover; background-position:center; color:#fff; border-radius:var(--webcore-radius-lg); padding:clamp(28px,5vw,64px); }
.public-quote-has-background blockquote,
.public-quote-has-background figcaption,
.public-cta-has-background h2,
.public-cta-has-background p { color:#fff !important; }

/* Package E Stage 2E correction: image fit, framed contrast and quote punctuation */
.public-card-image {
    width: 100%;
    max-width: 100%;
    height: 190px;
    margin: 0 0 20px;
    object-fit: contain;
    object-position: center;
    background: var(--webcore-surface-soft, #f5f7fa);
    border-radius: var(--webcore-radius-md);
}

.public-split-media,
.public-hero-media {
    min-width: 0;
}

.public-split-media img,
.public-hero-media img {
    width: 100%;
    height: auto;
    max-height: 620px;
    aspect-ratio: auto;
    object-fit: contain;
    object-position: center;
    background: var(--webcore-surface-soft, #f5f7fa);
}

.public-testimonial-portrait {
    width: 84px;
    height: 84px;
    object-fit: contain;
    object-position: center;
    background: var(--webcore-surface);
}

.webcore-component-bg-primary.webcore-component-frame-card .public-feature-card,
.webcore-component-bg-secondary.webcore-component-frame-card .public-feature-card,
.webcore-component-bg-dark.webcore-component-frame-card .public-feature-card,
.webcore-component-bg-primary.webcore-component-frame-card .public-testimonial-card,
.webcore-component-bg-secondary.webcore-component-frame-card .public-testimonial-card,
.webcore-component-bg-dark.webcore-component-frame-card .public-testimonial-card,
.webcore-component-bg-primary.webcore-component-frame-card .public-stat-item,
.webcore-component-bg-secondary.webcore-component-frame-card .public-stat-item,
.webcore-component-bg-dark.webcore-component-frame-card .public-stat-item {
    background: var(--webcore-surface) !important;
    border-color: var(--webcore-border) !important;
    color: var(--webcore-text) !important;
}

.webcore-component-bg-primary.webcore-component-frame-card .public-feature-card h3,
.webcore-component-bg-secondary.webcore-component-frame-card .public-feature-card h3,
.webcore-component-bg-dark.webcore-component-frame-card .public-feature-card h3,
.webcore-component-bg-primary.webcore-component-frame-card .public-feature-card p,
.webcore-component-bg-secondary.webcore-component-frame-card .public-feature-card p,
.webcore-component-bg-dark.webcore-component-frame-card .public-feature-card p,
.webcore-component-bg-primary.webcore-component-frame-card .public-testimonial-card blockquote,
.webcore-component-bg-secondary.webcore-component-frame-card .public-testimonial-card blockquote,
.webcore-component-bg-dark.webcore-component-frame-card .public-testimonial-card blockquote,
.webcore-component-bg-primary.webcore-component-frame-card .public-testimonial-card figcaption strong,
.webcore-component-bg-secondary.webcore-component-frame-card .public-testimonial-card figcaption strong,
.webcore-component-bg-dark.webcore-component-frame-card .public-testimonial-card figcaption strong,
.webcore-component-bg-primary.webcore-component-frame-card .public-testimonial-card figcaption span,
.webcore-component-bg-secondary.webcore-component-frame-card .public-testimonial-card figcaption span,
.webcore-component-bg-dark.webcore-component-frame-card .public-testimonial-card figcaption span,
.webcore-component-bg-primary.webcore-component-frame-card .public-stat-value,
.webcore-component-bg-secondary.webcore-component-frame-card .public-stat-value,
.webcore-component-bg-dark.webcore-component-frame-card .public-stat-value,
.webcore-component-bg-primary.webcore-component-frame-card .public-stat-label,
.webcore-component-bg-secondary.webcore-component-frame-card .public-stat-label,
.webcore-component-bg-dark.webcore-component-frame-card .public-stat-label,
.webcore-component-bg-primary.webcore-component-frame-card .public-stat-note,
.webcore-component-bg-secondary.webcore-component-frame-card .public-stat-note,
.webcore-component-bg-dark.webcore-component-frame-card .public-stat-note {
    color: var(--webcore-text) !important;
}

.public-quote-highlight blockquote::before {
    content: "“";
    display: inline;
    margin-right: .08em;
    color: currentColor;
    opacity: .45;
}

.public-quote-highlight blockquote::after {
    content: "”";
    display: inline;
    margin-left: .08em;
    color: currentColor;
    opacity: .45;
}


/* Package E Stage 2G: controlled header/footer composition */
.site-header-actions { display:flex; align-items:center; gap:14px; flex:0 0 auto; }
.site-social-links { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.site-social-links a { display:inline-flex; width:36px; height:36px; align-items:center; justify-content:center; border-radius:var(--webcore-radius-sm); text-decoration:none; }
.site-social-links-header a { color:var(--webcore-secondary); background:color-mix(in srgb, var(--webcore-secondary) 5%, white); }
.site-social-links-header a:hover,.site-social-links-header a:focus-visible { color:var(--webcore-primary); background:color-mix(in srgb, var(--webcore-primary) 10%, white); }
.site-header-cta { min-height:40px; padding:8px 15px; white-space:nowrap; }
.header-logo-right .site-header-actions { order:2; }
.header-logo-right .site-nav-toggle { order:4; }

.site-footer { padding:clamp(42px,6vw,72px) 0; }
.site-footer-grid { display:grid; grid-template-columns:minmax(220px,1.35fr) repeat(3,minmax(150px,1fr)); gap:clamp(28px,5vw,64px); align-items:start; }
.site-footer-brand-block { max-width:390px; }
.site-footer-logo { display:block; max-width:190px; max-height:64px; width:auto; height:auto; object-fit:contain; margin-bottom:18px; }
.site-footer-brand { font-size:1.08rem; }
.site-footer-copy { margin-top:10px !important; line-height:1.65; }
.site-footer-menu h2,.site-footer-contact-block h2 { margin:0 0 14px; color:#fff; font-size:.82rem; letter-spacing:.09em; text-transform:uppercase; }
.site-footer-menu ul { margin:0; padding:0; list-style:none; display:grid; gap:9px; }
.site-footer-menu a,.site-footer-contact-block a { color:rgba(255,255,255,.86); text-decoration:none; }
.site-footer-menu a:hover,.site-footer-menu a:focus-visible,.site-footer-contact-block a:hover,.site-footer-contact-block a:focus-visible { color:#fff; text-decoration:underline; text-underline-offset:3px; }
.site-footer-contact-block { display:grid; gap:9px; font-size:.92rem; line-height:1.55; }
.site-social-links-footer { margin-top:18px; }
.site-social-links-footer a { color:#fff; border:1px solid rgba(255,255,255,.2); }
.site-social-links-footer a:hover,.site-social-links-footer a:focus-visible { background:rgba(255,255,255,.12); }
.site-footer-simple .site-footer-grid { grid-template-columns:1fr auto; align-items:center; }
.site-footer-simple .site-footer-menu,.site-footer-simple .site-footer-contact-block { display:none; }
.site-footer-brand-heavy .site-footer-brand { font-size:1.35rem; }
.site-footer-brand-heavy .site-footer-brand-block { max-width:520px; }

@media (max-width:1100px) {
    .site-header-inner { gap:18px; }
    .site-header-actions { gap:9px; }
    .site-social-links-header { display:none; }
    .site-footer-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:760px) {
    .header-logo-right .site-brand,.header-logo-right .site-navigation,.header-logo-right .site-nav-toggle,.header-logo-right .site-header-actions { order:initial; }
    .site-header-actions { margin-left:auto; }
    .site-header-cta { display:none; }
    .site-footer-grid,.site-footer-simple .site-footer-grid { grid-template-columns:1fr; }
    .site-footer-simple .site-footer-menu,.site-footer-simple .site-footer-contact-block { display:none; }
}

/* Package E Stage 5D - multilingual public experience */
.site-language-switcher {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
}

.site-language-switcher-compact {
    flex-wrap: wrap;
}

.site-language-switcher a,
.site-language-switcher select {
    font: inherit;
}

.site-language-switcher a {
    text-decoration: none;
    font-weight: 700;
    font-size: 0.78rem;
    letter-spacing: 0.04em;
}

.site-language-switcher a[aria-current="true"] {
    text-decoration: underline;
    text-underline-offset: 0.2em;
}

.site-language-switcher-select {
    min-height: 2.25rem;
    border: 1px solid rgba(0, 0, 0, 0.18);
    border-radius: var(--webcore-radius-control, 0.45rem);
    background: #fff;
    padding: 0.35rem 2rem 0.35rem 0.65rem;
}

.public-translation-notice {
    margin: 0 0 1.5rem;
    padding: 0.9rem 1rem;
    border: 1px solid rgba(0, 0, 0, 0.14);
    border-left: 0.25rem solid var(--webcore-primary);
    border-radius: var(--webcore-radius-card, 0.5rem);
    background: rgba(0, 0, 0, 0.035);
}

.public-translation-notice p {
    margin: 0;
}

@media (max-width: 900px) {
    .site-language-switcher {
        width: 100%;
        justify-content: flex-start;
    }
}

.site-language-switcher-dropdown {
    position: relative;
}

.site-language-switcher-dropdown summary {
    cursor: pointer;
    font-weight: 700;
    list-style: none;
}

.site-language-switcher-dropdown summary::-webkit-details-marker {
    display: none;
}

.site-language-switcher-menu {
    position: absolute;
    z-index: 30;
    right: 0;
    top: calc(100% + 0.5rem);
    min-width: 10rem;
    padding: 0.45rem;
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.12);
    border-radius: var(--webcore-radius-card, 0.5rem);
    box-shadow: 0 0.75rem 2rem rgba(0, 0, 0, 0.12);
}

.site-language-switcher-menu a {
    display: block;
    padding: 0.45rem 0.55rem;
}

/* Package F Stage 2: controlled public motion foundation */
.webcore-motion-observed:not(.is-webcore-motion-revealed):not(.webcore-motion-none) {
    opacity: 0;
}

.webcore-motion-observed:not(.is-webcore-motion-revealed).webcore-motion-slide_up {
    transform: translate3d(0, 22px, 0);
}

.webcore-motion-observed:not(.is-webcore-motion-revealed).webcore-motion-slide_left {
    transform: translate3d(-26px, 0, 0);
}

.webcore-motion-observed:not(.is-webcore-motion-revealed).webcore-motion-slide_right {
    transform: translate3d(26px, 0, 0);
}

.webcore-motion-observed:not(.is-webcore-motion-revealed).webcore-motion-scale_in {
    transform: scale(0.975);
}

.webcore-motion-observed:not(.webcore-motion-none) {
    transition-property: opacity, transform;
    transition-duration: 520ms;
    transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
    will-change: opacity, transform;
}

.webcore-motion-speed-subtle.webcore-motion-observed:not(.webcore-motion-none) {
    transition-duration: 360ms;
}

.webcore-motion-speed-slow.webcore-motion-observed:not(.webcore-motion-none) {
    transition-duration: 760ms;
}

.webcore-motion-observed.is-webcore-motion-revealed:not(.webcore-motion-none) {
    opacity: 1;
    transform: none;
    will-change: auto;
}

.webcore-motion-stagger-on.webcore-motion-observed .webcore-motion-stagger-item {
    transition-property: opacity, transform;
    transition-duration: 420ms;
    transition-delay: calc(var(--webcore-motion-order, 0) * 70ms);
    transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}

.webcore-motion-stagger-on.webcore-motion-observed:not(.is-webcore-motion-revealed) .webcore-motion-stagger-item {
    opacity: 0;
    transform: translate3d(0, 12px, 0);
}

.webcore-motion-stagger-on.webcore-motion-observed.is-webcore-motion-revealed .webcore-motion-stagger-item {
    opacity: 1;
    transform: none;
}

@media (prefers-reduced-motion: reduce) {
    .webcore-motion-observed,
    .webcore-motion-observed:not(.is-webcore-motion-revealed),
    .webcore-motion-stagger-on.webcore-motion-observed .webcore-motion-stagger-item,
    .webcore-motion-stagger-on.webcore-motion-observed:not(.is-webcore-motion-revealed) .webcore-motion-stagger-item {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
        animation: none !important;
        will-change: auto !important;
    }
}

/* Package F Stage 3: galleries, carousels and lightbox */
.public-gallery { display: grid; gap: 18px; }
.public-gallery-grid.public-gallery-columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.public-gallery-grid.public-gallery-columns-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.public-gallery-grid.public-gallery-columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.public-gallery-grid.public-gallery-columns-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.public-gallery-masonry { display: block; column-gap: 18px; }
.public-gallery-masonry.public-gallery-columns-2 { column-count: 2; }
.public-gallery-masonry.public-gallery-columns-3 { column-count: 3; }
.public-gallery-masonry.public-gallery-columns-4 { column-count: 4; }
.public-gallery-masonry.public-gallery-columns-5 { column-count: 5; }
.public-gallery-masonry .public-gallery-item { break-inside: avoid; margin: 0 0 18px; }
.public-gallery-item { margin: 0; overflow: hidden; border-radius: var(--webcore-radius, 14px); background: var(--webcore-surface); }
.public-gallery-item a { display: block; color: inherit; }
.public-gallery-item img { display: block; width: 100%; height: auto; }
.public-gallery-ratio-square img { aspect-ratio: 1 / 1; object-fit: cover; }
.public-gallery-ratio-landscape img { aspect-ratio: 4 / 3; object-fit: cover; }
.public-gallery-ratio-portrait img { aspect-ratio: 3 / 4; object-fit: cover; }
.public-gallery-item figcaption { padding: 10px 12px; color: var(--webcore-muted); font-size: .92rem; }

.public-gallery-carousel { width: 100%; margin-inline: auto; }
.public-gallery-carousel-size-compact { max-width: 560px; }
.public-gallery-carousel-size-standard { max-width: 760px; }
.public-gallery-carousel-size-large { max-width: 980px; }
.public-gallery-carousel-size-full { max-width: none; }
.webcore-carousel { position: relative; }
.webcore-carousel-viewport { width: 100%; }
.webcore-carousel-track { display: grid; gap: 14px; }
.webcore-carousel-slide { min-width: 0; }
.webcore-carousel.is-carousel-ready .webcore-carousel-viewport { overflow: hidden; }
.webcore-carousel.is-carousel-ready .webcore-carousel-track { display: flex; gap: 0; }
.webcore-carousel.is-carousel-ready .webcore-carousel-track { transition: transform .45s ease; will-change: transform; }
.webcore-carousel.is-carousel-ready .webcore-carousel-slide { flex: 0 0 calc(100% / var(--webcore-carousel-per-view, 1)); padding-right: 14px; box-sizing: border-box; }
.webcore-carousel-controls { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 16px; }
.webcore-carousel-button { width: 42px; height: 42px; border-radius: 50%; border: 1px solid currentColor; background: transparent; color: inherit; font: inherit; font-size: 1.5rem; line-height: 1; cursor: pointer; }
.webcore-carousel-button:disabled { opacity: .35; cursor: default; }
.webcore-carousel-status { min-width: 80px; text-align: center; color: var(--webcore-muted); font-size: .9rem; }
.public-logo-slide { display: flex; align-items: stretch; }
.public-logo-slide .public-logo-item { width: 100%; }

.webcore-lightbox[hidden] { display: none; }
.webcore-lightbox { position: fixed; inset: 0; z-index: 10000; display: grid; place-items: center; padding: 24px; background: rgba(0,0,0,.88); }
.webcore-lightbox-dialog { position: relative; max-width: min(1100px, 96vw); max-height: 92vh; display: grid; gap: 10px; justify-items: center; }
.webcore-lightbox-image { display: block; max-width: 100%; max-height: 80vh; object-fit: contain; }
.webcore-lightbox-caption { margin: 0; color: #fff; text-align: center; max-width: 70ch; }
.webcore-lightbox-close { position: absolute; top: -18px; right: -18px; width: 44px; height: 44px; border: 0; border-radius: 50%; background: #fff; color: #111; font-size: 1.7rem; cursor: pointer; }
.webcore-lightbox-open { overflow: hidden; }

@media (max-width: 900px) {
    .public-gallery-grid.public-gallery-columns-4,
    .public-gallery-grid.public-gallery-columns-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .public-gallery-masonry.public-gallery-columns-4,
    .public-gallery-masonry.public-gallery-columns-5 { column-count: 2; }
}
@media (max-width: 640px) {
    .public-gallery-grid.public-gallery-columns-2,
    .public-gallery-grid.public-gallery-columns-3,
    .public-gallery-grid.public-gallery-columns-4,
    .public-gallery-grid.public-gallery-columns-5 { grid-template-columns: 1fr; }
    .public-gallery-masonry.public-gallery-columns-2,
    .public-gallery-masonry.public-gallery-columns-3,
    .public-gallery-masonry.public-gallery-columns-4,
    .public-gallery-masonry.public-gallery-columns-5 { column-count: 1; }
    .webcore-lightbox { padding: 14px; }
    .webcore-lightbox-close { top: 4px; right: 4px; }
}
@media (prefers-reduced-motion: reduce) {
    .webcore-carousel.is-carousel-ready .webcore-carousel-track { transition: none !important; }
}


/* Package F Stage 4: restrained counters and rotating hero phrases */
.public-hero-rotating-phrase {
    display: grid;
    margin-top: 0.8rem;
    min-height: 1.5em;
    font-size: clamp(1rem, 1.5vw, 1.18rem);
    font-weight: 700;
    color: var(--webcore-primary);
}

.public-hero-rotating-phrase-item {
    grid-area: 1 / 1;
    display: block;
    width: 100%;
}

.public-hero-rotating-phrase-item[hidden] {
    display: none !important;
}

.public-hero-rotating-phrase.is-rotation-ready .public-hero-rotating-phrase-item {
    transition: opacity 420ms ease, transform 420ms ease;
}

.public-hero-rotating-phrase.is-rotation-ready .public-hero-rotating-phrase-item.is-phrase-leaving {
    opacity: 0;
    transform: translateY(-4px);
}

.public-hero-rotating-phrase.is-rotation-ready .public-hero-rotating-phrase-item.is-phrase-entering {
    opacity: 0;
    transform: translateY(4px);
}

@media (prefers-reduced-motion: reduce) {
    .public-hero-rotating-phrase-item {
        transition: none !important;
        transform: none !important;
    }
}

/* Package G Stage 3: migration-critical components and VET course bridge */
.public-tone-primary { --webcore-component-tone: var(--webcore-primary); }
.public-tone-secondary { --webcore-component-tone: var(--webcore-secondary); }
.public-tone-accent { --webcore-component-tone: var(--webcore-accent); }
.public-tone-action { --webcore-component-tone: var(--webcore-action); }

.public-progress-list { display:grid; gap:18px; }
.public-progress-item { display:grid; gap:9px; }
.public-progress-main { display:flex; justify-content:space-between; gap:16px; align-items:baseline; }
.public-progress-track { height:12px; overflow:hidden; border-radius:999px; background:rgba(15,23,42,.1); }
.public-progress-fill { display:block; width:var(--webcore-progress); height:100%; border-radius:inherit; background:var(--webcore-component-tone); }
.public-progress-circle .public-progress-list { grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); }
.public-progress-circle .public-progress-item { justify-items:center; text-align:center; }
.public-progress-circle { width:112px; aspect-ratio:1; border-radius:50%; display:grid; place-items:center; background:conic-gradient(var(--webcore-component-tone) var(--webcore-progress-deg),rgba(15,23,42,.1) 0); }
.public-progress-circle::before { content:""; grid-area:1/1; width:84px; aspect-ratio:1; border-radius:50%; background:var(--webcore-surface); }
.public-progress-circle span { grid-area:1/1; position:relative; font-weight:800; }

.public-pricing-grid,.public-people-grid { display:grid; gap:20px; }
.public-pricing-card,.public-person-card { background:var(--webcore-surface); border:1px solid rgba(15,23,42,.12); border-radius:var(--webcore-radius,14px); overflow:hidden; box-shadow:0 8px 24px rgba(15,23,42,.06); }
.public-pricing-card { padding:26px; display:flex; flex-direction:column; gap:14px; }
.public-pricing-card.is-highlighted { border:2px solid var(--webcore-component-tone); transform:translateY(-4px); }
.public-pricing-price-row { display:flex; align-items:baseline; flex-wrap:wrap; gap:10px; }
.public-pricing-price { color:var(--webcore-component-tone); font-size:clamp(1.7rem,4vw,2.5rem); }
.public-pricing-card ul { margin:0; padding-left:1.2rem; display:grid; gap:8px; }
.public-pricing-button { margin-top:auto; align-self:flex-start; background:var(--webcore-component-tone); color:#fff; }
.public-pricing-button:hover,.public-pricing-button:focus-visible { filter:brightness(.92); }

.public-person-card img { width:100%; height:280px; object-fit:contain; object-position:center; display:block; background:var(--webcore-surface); padding:10px; }
.public-person-card-body { padding:22px; }
.public-person-card h3 { margin-top:0; }
.public-person-role { color:var(--webcore-component-tone); font-weight:700; margin-bottom:10px; }
.public-tag-list { display:flex; flex-wrap:wrap; gap:7px; margin:14px 0; }
.public-tag-list span { border:1px solid color-mix(in srgb,var(--webcore-component-tone) 34%,transparent); background:color-mix(in srgb,var(--webcore-component-tone) 8%,transparent); border-radius:999px; padding:5px 9px; font-size:.82rem; }

.public-location-block { display:grid; grid-template-columns:minmax(0,.8fr) minmax(320px,1.2fr); gap:28px; align-items:stretch; }
.public-location-copy address { font-style:normal; line-height:1.7; margin:18px 0; }
.public-location-map iframe { width:100%; height:100%; min-height:360px; border:0; border-radius:var(--webcore-radius,14px); }
.public-location-fallback { display:grid; place-items:center; min-height:160px; padding:24px; text-align:center; border:1px solid rgba(15,23,42,.12); border-radius:var(--webcore-radius,14px); background:var(--webcore-surface); }
.public-location-fallback p { margin:7px 0 14px; color:var(--webcore-muted); }

.public-controlled-video { position:relative; width:100%; overflow:hidden; border-radius:var(--webcore-radius,14px); background:#000; }
.public-controlled-video.public-video-ratio-16_9 { aspect-ratio:16/9; }
.public-controlled-video.public-video-ratio-4_3 { aspect-ratio:4/3; }
.public-controlled-video.public-video-ratio-1_1 { aspect-ratio:1/1; }
.public-controlled-video iframe { position:absolute; inset:0; width:100%; height:100%; border:0; }
.public-component-notice { padding:14px 16px; border:1px solid rgba(15,23,42,.15); border-radius:10px; background:var(--webcore-surface); }

.public-course-facts { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:14px; margin-bottom:24px; }
.public-course-fact { display:flex; gap:12px; align-items:flex-start; padding:16px; border:1px solid rgba(15,23,42,.1); border-radius:12px; background:var(--webcore-surface); }
.public-course-fact i { color:var(--webcore-component-tone); font-size:1.25rem; }
.public-course-fact span,.public-course-fact strong { display:block; }
.public-course-fact span { color:var(--webcore-muted); font-size:.84rem; margin-bottom:3px; }
.public-course-accordion { display:grid; gap:10px; }
.public-course-section { border:1px solid rgba(15,23,42,.12); border-radius:12px; background:var(--webcore-surface); overflow:hidden; }
.public-course-section summary { cursor:pointer; list-style:none; padding:17px 20px; font-weight:750; position:relative; padding-right:48px; }
.public-course-section summary::-webkit-details-marker { display:none; }
.public-course-section summary::after { content:"+"; position:absolute; right:20px; top:50%; transform:translateY(-50%); color:var(--webcore-component-tone); font-size:1.4rem; }
.public-course-section[open] summary::after { content:"−"; }
.public-course-section-body { padding:0 20px 20px; line-height:1.7; }
.public-course-section[open] { border-color:color-mix(in srgb,var(--webcore-component-tone) 45%,transparent); }

@media (max-width:900px) {
    .public-location-block { grid-template-columns:1fr; }
    .public-pricing-grid.public-grid-columns-4,.public-people-grid.public-grid-columns-4 { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:640px) {
    .public-pricing-grid,.public-people-grid { grid-template-columns:1fr !important; }
    .public-pricing-card.is-highlighted { transform:none; }
}

/* Package G Stage 3 map visual fallback refinement */
.public-location-visual {
    position:relative;
    min-height:360px;
    overflow:hidden;
    border:1px solid color-mix(in srgb,var(--webcore-primary) 18%,transparent);
    border-radius:var(--webcore-radius,14px);
    background:color-mix(in srgb,var(--webcore-surface) 88%,var(--webcore-primary));
    display:grid;
    grid-template-rows:minmax(210px,1fr) auto;
}
.public-location-visual-grid {
    position:relative;
    min-height:230px;
    background:
        linear-gradient(90deg,color-mix(in srgb,var(--webcore-primary) 7%,transparent) 1px,transparent 1px) 0 0/34px 34px,
        linear-gradient(color-mix(in srgb,var(--webcore-primary) 7%,transparent) 1px,transparent 1px) 0 0/34px 34px,
        color-mix(in srgb,var(--webcore-surface) 94%,var(--webcore-primary));
}
.public-location-road {
    position:absolute;
    display:block;
    height:14px;
    border-radius:999px;
    background:color-mix(in srgb,var(--webcore-secondary) 22%,var(--webcore-surface));
    box-shadow:0 0 0 3px color-mix(in srgb,var(--webcore-surface) 88%,transparent);
}
.public-location-road-one { width:78%; left:-8%; top:32%; transform:rotate(11deg); }
.public-location-road-two { width:72%; right:-9%; top:57%; transform:rotate(-16deg); }
.public-location-road-three { width:54%; left:27%; top:18%; transform:rotate(72deg); }
.public-location-pin {
    position:absolute;
    left:50%;
    top:48%;
    transform:translate(-50%,-50%);
    display:grid;
    place-items:center;
    width:66px;
    height:66px;
    border-radius:50%;
    background:var(--webcore-action);
    color:#fff;
    font-size:2rem;
    box-shadow:0 10px 28px rgba(15,23,42,.2),0 0 0 10px color-mix(in srgb,var(--webcore-action) 15%,transparent);
}
.public-location-visual-content {
    position:relative;
    z-index:2;
    padding:20px 22px 22px;
    background:var(--webcore-surface);
    border-top:1px solid color-mix(in srgb,var(--webcore-primary) 12%,transparent);
}
.public-location-visual-label {
    display:block;
    margin-bottom:5px;
    color:var(--webcore-muted);
    font-size:.82rem;
    font-weight:700;
    letter-spacing:.07em;
    text-transform:uppercase;
}
.public-location-visual-content strong { display:block; line-height:1.45; }
.public-location-visual-link {
    display:inline-flex;
    align-items:center;
    gap:8px;
    margin-top:14px;
    font-weight:750;
    color:var(--webcore-action);
    text-decoration:none;
}
.public-location-visual-link:hover,.public-location-visual-link:focus-visible { text-decoration:underline; }
.public-location-directions-button { display:inline-flex; align-items:center; gap:8px; margin-top:8px; }

/* Package G Stage 4: safe RSS / Atom feed display */
.public-rss-feed > h2 { margin-bottom:10px; }
.public-rss-items { margin-top:24px; }
.public-rss-items-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:18px; }
.public-rss-items-list { display:grid; gap:0; border-top:1px solid rgba(15,23,42,.12); }
.public-rss-item { min-width:0; }
.public-rss-items-cards .public-rss-item { padding:22px; border:1px solid rgba(15,23,42,.1); border-radius:var(--webcore-radius,14px); background:var(--webcore-surface); box-shadow:0 8px 24px rgba(15,23,42,.05); }
.public-rss-items-list .public-rss-item { padding:20px 0; border-bottom:1px solid rgba(15,23,42,.12); }
.public-rss-meta { display:flex; flex-wrap:wrap; gap:8px 14px; margin-bottom:9px; color:var(--webcore-muted); font-size:.82rem; font-weight:700; }
.public-rss-meta span:first-child { color:var(--webcore-accent); }
.public-rss-item h3 { margin:0; font-size:clamp(1.05rem,2vw,1.28rem); line-height:1.35; }
.public-rss-item h3 a { color:var(--webcore-text); text-decoration:none; }
.public-rss-item h3 a:hover,.public-rss-item h3 a:focus-visible { color:var(--webcore-primary); text-decoration:underline; text-underline-offset:3px; }
.public-rss-item p { margin:11px 0 0; color:var(--webcore-muted); line-height:1.65; }
.public-rss-unavailable { margin-top:20px; }
