
:root {
    --control-h:48px;
}

.btn {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:var(--space-xs);
    min-height:var(--control-h);
    height:var(--control-h);
    box-sizing:border-box;
    padding:0 1.5rem;
    font-family:var(--felo-283);
    font-weight:700;
    font-size:var(--text-small);
    letter-spacing:0.05em;
    text-transform:uppercase;
    text-decoration:none;
    border-radius:var(--radius-sm);
    border:1px solid transparent;
    cursor:pointer;
    white-space:nowrap;
    text-align:center;
    user-select:none;
    transition:background-color var(--duration-fast) var(--ease-out),
                            border-color var(--duration-fast) var(--ease-out),
                            color var(--duration-fast) var(--ease-out),
                            box-shadow var(--duration-fast) var(--ease-out),
                            transform var(--duration-fast) var(--ease-out);
}

@media (max-width: 480px) {
    .btn {
        padding-left:0.75rem;
        padding-right:0.75rem;
    }
    .service-item-actions {
        width:100%;
    }
    .service-item-actions .btn {
        width:100%;
        min-width:0;
    }
}

.btn-primary {
    background-color:var(--accent);
    color:var(--accent-ink);
    border-color:var(--accent);
    box-shadow:0 2px 10px rgba(53, 196, 230, 0.25);
}

.btn-primary:hover {
    background-color:#62d3ed;
    border-color:#62d3ed;
    color:var(--accent-ink);
    box-shadow:0 4px 16px rgba(53, 196, 230, 0.4);
    transform:translateY(-1px);
}

.btn-primary:active {
    background-color:#27a6c5;
    border-color:#27a6c5;
    color:var(--accent-ink);
    transform:translateY(1px);
    box-shadow:0 1px 4px rgba(53, 196, 230, 0.2);
}

.btn-primary:focus-visible {
    outline:3px solid var(--ink);
    outline-offset:3px;
}

.btn-secondary {
    background-color:var(--surface-2);
    color:var(--ink);
    border-color:var(--line);
}

.btn-secondary:hover {
    background-color:#2c3754;
    border-color:var(--ink-soft);
    color:#fff;
    transform:translateY(-1px);
}

.btn-secondary:active {
    background-color:var(--surface);
    border-color:var(--line);
    transform:translateY(1px);
}

.btn-secondary:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:3px;
}

.btn-outline {
    background-color:transparent;
    color:var(--ink);
    border-color:var(--line);
}

.btn-outline:hover {
    border-color:var(--accent);
    color:var(--accent);
    background-color:rgba(53, 196, 230, 0.05);
    transform:translateY(-1px);
}

.btn-outline:active {
    border-color:#27a6c5;
    color:#27a6c5;
    background-color:rgba(53, 196, 230, 0.1);
    transform:translateY(1px);
}

.btn-outline:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:3px;
}

.btn-sm {
    min-height:var(--control-h);
    height:var(--control-h);
    padding:0 1.25rem;
    font-size:var(--text-small);
}

.btn-block {
    display:flex;
    width:100%;
}

.site-header {
    position:absolute;
    top:0;
    left:0;
    right:0;
    z-index:var(--z-header);
    height:var(--header-height-full);
    display:flex;
    align-items:center;
    transition:height var(--duration-normal) var(--ease-out),
                            background-color var(--duration-normal) var(--ease-out),
                            border-color var(--duration-normal) var(--ease-out),
                            box-shadow var(--duration-normal) var(--ease-out);
}

/* Desktop pinned condensing state */
@media (min-width: 1024px) {
    .site-header {
        position:fixed;
        background-color:rgba(14, 20, 36, 0.7);
        border-bottom:1px solid rgba(62, 72, 97, 0.3);
        backdrop-filter:blur(12px);
        -webkit-backdrop-filter:blur(12px);
    }

    .site-header.nav-condensed-bar {
        height:var(--header-height-compact);
        background-color:rgba(14, 20, 36, 0.96);
        border-bottom:1px solid var(--line);
        box-shadow:var(--shadow-elevation);
    }

    .site-header.nav-condensed-bar .brand-logo {
        height:2.35rem;
    }
}

.header-inner {
    display:flex;
    align-items:center;
    justify-content:space-between;
    width:100%;
    gap:var(--space-md);
}

.brand {
    display:inline-flex;
    align-items:center;
    text-decoration:none;
    flex-shrink:0;
    max-width:40vw;
}

.brand-logo {
    height:2.75rem;
    width:auto;
    object-fit:contain;
    transition:height var(--duration-normal) var(--ease-out);
}

@media (min-width: 1024px) {

    .brand-logo {
        height:3.2rem;
    }
}

.brand:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:4px;
    border-radius:var(--radius-xs);
}

/* Desktop Nav List (hidden on small viewports where dock operates) */
.nav-desk {
    display:none;
    align-items:center;
    gap:var(--space-lg);
    margin:0;
    padding:0;
    list-style:none;
}

@media (min-width: 1024px) {
    .nav-desk {
        display:flex;
    }
}

.nav-desk-link {
    font-family:var(--felo-283);

    font-size:var(--text-small);
    font-weight:700;
    letter-spacing:0.04em;
    text-transform:uppercase;
    color:var(--ink-soft);
    text-decoration:none;
    padding:var(--space-2xs) var(--space-3xs);
    position:relative;
    transition:color var(--duration-fast) var(--ease-out);
}

.nav-desk-link:hover {
    color:var(--ink);
}

.nav-desk-link:active {
    color:var(--accent);
}

.nav-desk-link:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:3px;
    border-radius:var(--radius-xs);
}

.nav-desk-link[aria-current='page'] {
    color:var(--accent);
}

.nav-desk-link[aria-current='page']::after {
    content:'';
    position:absolute;
    bottom:-4px;
    left:0;
    right:0;
    height:2px;
    background-color:var(--accent);
}

.header-action {
    display:none;
}

@media (min-width: 1024px) {
    .header-action {
        display:inline-flex;
        flex-shrink:0;
    }
}

.dock-bar {
    position:fixed;
    inset:auto 0 0 0;
    z-index:var(--z-dock);
    height:var(--dock-height);
    background-color:rgba(23, 30, 50, 0.98);
    border-top:1px solid var(--line);
    box-shadow:0 -4px 16px rgba(0, 0, 0, 0.5);
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
    padding-bottom:env(safe-area-inset-bottom, 0px);
    display:flex;
    align-items:stretch;
}

@media (min-width: 1024px) {
    .dock-bar {
        display:none !important;
    }
}

.dock-list {
    display:flex;
    width:100%;
    margin:0;
    padding:0;
    list-style:none;
}

.dock-item {
    flex:1 1 0;
    display:flex;
    margin:0;
}

.dock-link,
.dock-btn {
    appearance:none;
    -webkit-appearance:none;
    background:none;
    border:0;
    font:inherit;
    width:100%;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;

    gap:3px;
    color:var(--ink-soft);
    text-decoration:none;
    padding:4px 2px;
    cursor:pointer;
    transition:color var(--duration-fast) var(--ease-out),
                            background-color var(--duration-fast) var(--ease-out);
}

.dock-link:hover,
.dock-btn:hover {
    color:var(--ink);
    background-color:rgba(35, 44, 67, 0.4);
}

.dock-link:active,
.dock-btn:active {
    color:var(--accent);
    background-color:rgba(35, 44, 67, 0.8);
}

.dock-link:focus-visible,
.dock-btn:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:-2px;
}

.dock-link[aria-current='page'] {
    color:var(--accent);
}

.dock-link[aria-current='page'] .dock-icon {
    fill:var(--accent);
}

.dock-icon {
    width:22px;
    height:22px;
    fill:currentColor;
    flex-shrink:0;
}

.dock-label {
    font-family:var(--felo-283);
    font-size:11px;
    font-weight:700;
    letter-spacing:0.03em;
    text-transform:uppercase;
    white-space:nowrap;
    line-height:1;
}

.nav-drawer {
    position:fixed;
    inset:0;
    z-index:var(--z-drawer);
    background-color:rgba(14, 20, 36, 0.85);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
    display:flex;
    flex-direction:column;
    justify-content:flex-end;
    opacity:0;
    visibility:hidden;
    transition:opacity var(--duration-normal) var(--ease-out),
                            visibility var(--duration-normal);
}

.nav-drawer.is-open {
    opacity:1;
    visibility:visible;
}

.nav-drawer-panel {
    background-color:var(--surface);
    border-top:2px solid var(--line);
    padding:var(--space-lg) var(--gutter);
    padding-bottom:calc(var(--dock-height) + env(safe-area-inset-bottom, 16px) + var(--space-md));
    max-height:85vh;
    overflow-y:auto;
    box-shadow:var(--shadow-deep);
    transform:translateY(100%);
    transition:transform var(--duration-normal) var(--ease-mechanical);
}

.nav-drawer.is-open .nav-drawer-panel {
    transform:translateY(0);
}

.nav-drawer-head {
    display:flex;
    align-items:center;
    justify-content:space-between;
    margin-bottom:var(--space-lg);
    border-bottom:1px solid var(--line);
    padding-bottom:var(--space-sm);
}

.nav-drawer-title {
    font-family:var(--felo-283);
    font-size:var(--text-h4);
    color:var(--ink);
    margin:0;
}

.nav-drawer-close {
    appearance:none;
    background:var(--surface-2);
    border:1px solid var(--line);
    color:var(--ink);
    width:44px;
    height:44px;
    border-radius:var(--radius-sm);
    display:inline-flex;
    align-items:center;
    justify-content:center;
    cursor:pointer;
    transition:background-color var(--duration-fast) var(--ease-out),
                            border-color var(--duration-fast) var(--ease-out),
                            color var(--duration-fast) var(--ease-out);
}

.nav-drawer-close:hover {
    background-color:var(--line);
    border-color:var(--ink-soft);
    color:#fff;
}

.nav-drawer-close:active {
    background-color:var(--ground);
}

.nav-drawer-close:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:2px;
}

.nav-drawer-list {
    list-style:none;
    margin:0;
    padding:0;
    display:flex;
    flex-direction:column;
    gap:var(--space-xs);
}

.nav-drawer-link {
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:var(--space-sm) var(--space-md);
    background-color:var(--surface-2);
    border:1px solid var(--line);
    border-radius:var(--radius-sm);
    font-family:var(--felo-283);
    font-size:var(--text-body);
    font-weight:700;
    color:var(--ink);
    text-decoration:none;
    transition:border-color var(--duration-fast) var(--ease-out),
                            background-color var(--duration-fast) var(--ease-out),
                            color var(--duration-fast) var(--ease-out);
}

.nav-drawer-link:hover {
    border-color:var(--accent);
    background-color:#2c3754;
    color:#fff;
}

.nav-drawer-link:active {
    border-color:#27a6c5;
    background-color:var(--ground);
}

.nav-drawer-link:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:2px;
}

.nav-drawer-link[aria-current='page'] {
    border-color:var(--accent);
    color:var(--accent);
    background-color:rgba(53, 196, 230, 0.08);
}

.nav-drawer-contact {
    margin-top:var(--space-lg);
    padding-top:var(--space-md);
    border-top:1px solid var(--line);
}

.drawn-line-journey {
    position:relative;
    padding-left:2.25rem;
}

.drawn-line-journey::before {
    content:'';
    position:absolute;
    top:0.75rem;
    bottom:0.75rem;
    left:9px;
    width:2px;
    background-color:var(--line);
}

@media (min-width: 768px) {
    .drawn-line-journey {
        padding-left:3.75rem;
    }

    .drawn-line-journey::before {
        left:15px;
        width:2px;
    }
}

.line-stage {
    position:relative;
    margin-bottom:var(--space-2xl);
    padding-bottom:var(--space-xl);
    border-bottom:1px solid rgba(62, 72, 97, 0.4);
}

.line-stage:last-child {
    margin-bottom:0;
    padding-bottom:0;
    border-bottom:none;
}

.line-stage-marker {
    position:absolute;
    top:0.35rem;
    left:-2.25rem;
    width:20px;
    height:20px;
    border-radius:var(--radius-full);
    background-color:var(--ground);
    border:3px solid var(--accent);
    box-shadow:0 0 0 4px rgba(53, 196, 230, 0.2);
    display:block;
}

@media (min-width: 768px) {
    .line-stage-marker {
        left:-3.75rem;
        width:32px;
        height:32px;
        border-width:4px;
    }
}

.line-stage-content {
    background:transparent;
    border:none;
    border-radius:0;
    padding:0;
    box-shadow:none;
}

.line-stage-meta {
    display:flex;
    flex-wrap:wrap;
    gap:var(--space-md);
    margin-bottom:var(--space-2xs);
    font-family:var(--felo-d14);
    font-size:var(--text-micro);
    color:var(--ink-soft);
    text-transform:uppercase;
    letter-spacing:0.05em;
}

.line-stage-meta span {
    display:inline-flex;
    align-items:center;
    gap:4px;
}

.annotated-plate {
    position:relative;
    background-color:var(--surface);
    border:1px solid var(--line);
    border-radius:var(--radius-sm);
    padding:var(--space-md);
    margin:var(--space-lg) 0;
    overflow:hidden;
}

.annotated-plate-header {
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    border-bottom:1px solid var(--line);
    padding-bottom:var(--space-xs);
    margin-bottom:var(--space-md);
}

.annotated-plate-title {
    font-family:var(--felo-d14);
    font-size:var(--text-small);
    color:var(--ink);
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:0.04em;
    margin:0;
}

.annotated-plate-sub {
    font-family:var(--felo-d14);
    font-size:var(--text-micro);
    color:var(--ink-soft);
}

.annotated-stage-graphic {
    position:relative;
    width:100%;
    border:1px solid var(--line);
    border-radius:var(--radius-xs);
    background-color:#070b14;
}

.annotated-svg {
    display:block;
    width:100%;
    height:auto;
}

.annotated-callouts-list {
    display:grid;
    grid-template-columns:1fr;
    gap:var(--space-sm);
    margin-top:var(--space-md);
    padding:0;
    list-style:none;
}

@media (min-width: 640px) {
    .annotated-callouts-list {
        grid-template-columns:repeat(2, 1fr);
    }
}

@media (min-width: 1024px) {
    .annotated-callouts-list {
        grid-template-columns:repeat(4, 1fr);
    }
}

.annotated-callout-item {
    background-color:var(--surface-2);
    border:1px solid var(--line);
    border-radius:var(--radius-xs);
    padding:var(--space-xs) var(--space-sm);
}

.annotated-callout-code {
    font-family:var(--felo-d14);
    font-size:var(--text-micro);
    color:var(--accent);
    font-weight:600;
    display:block;
    margin-bottom:2px;
}

.annotated-callout-text {
    font-size:var(--text-small);
    color:var(--ink);
    line-height:1.35;
    margin:0;
}

.pricing-table-wrap {
    width:100%;
    overflow-x:auto;
    border:1px solid var(--line);
    border-radius:var(--radius-sm);
    background-color:var(--surface);
    margin:var(--space-lg) 0;
}

.pricing-table {
    width:100%;
    border-collapse:collapse;
    text-align:left;
}

.pricing-table th,
.pricing-table td {
    padding:var(--space-sm) var(--space-md);
    border-bottom:1px solid var(--line);
}

.pricing-table th {
    background-color:var(--surface-2);
    font-family:var(--felo-283);
    font-size:var(--text-small);
    font-weight:700;
    color:var(--ink);
    text-transform:uppercase;
    letter-spacing:0.05em;
}

.pricing-table tbody tr:last-child td {
    border-bottom:none;
}

.pricing-table tbody tr:hover {
    background-color:rgba(35, 44, 67, 0.4);
}

.pricing-cell-service {
    font-weight:600;
    color:var(--ink);
}

.pricing-cell-rate {
    font-family:var(--felo-d14);
    font-size:var(--text-body);
    font-weight:600;
    color:var(--accent);
    white-space:nowrap;
}

.service-card {
    background-color:var(--surface);
    border:1px solid var(--line);
    border-radius:var(--radius-sm);
    padding:var(--space-lg);
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    transition:border-color var(--duration-fast) var(--ease-out),
                            box-shadow var(--duration-fast) var(--ease-out),
                            transform var(--duration-fast) var(--ease-out);
}

.service-card:hover {
    border-color:var(--accent);
    box-shadow:var(--shadow-elevation);
    transform:translateY(-2px);
}

.service-card-price {
    font-family:var(--felo-d14);
    font-size:1.5rem;
    font-weight:600;
    color:var(--accent);
    margin-top:var(--space-xs);
    margin-bottom:var(--space-sm);
    display:block;
}

.form-group {
    margin-bottom:var(--space-md);
}

.form-label {
    display:block;
    font-family:var(--felo-283);
    font-size:var(--text-small);
    font-weight:700;
    color:var(--ink);
    letter-spacing:0.02em;
    margin-bottom:var(--space-2xs);
}

.form-label-optional {
    font-family:var(--felo-d14);
    font-size:var(--text-micro);
    color:var(--ink-soft);
    text-transform:uppercase;
    font-weight:400;
    margin-left:var(--space-3xs);
}

.form-control {
    width:100%;
    min-height:48px;
    padding:0.65rem 0.95rem;
    background-color:var(--surface-2);
    border:1px solid var(--line);
    border-radius:var(--radius-sm);
    color:var(--ink);
    font-size:var(--text-body);
    transition:border-color var(--duration-fast) var(--ease-out),
                            box-shadow var(--duration-fast) var(--ease-out),
                            background-color var(--duration-fast) var(--ease-out);
}

.form-control:hover {
    border-color:var(--ink-soft);
}

.form-control:focus {
    outline:none;
    border-color:var(--accent);
    box-shadow:0 0 0 3px rgba(53, 196, 230, 0.2);
    background-color:#1a2135;
}

textarea.form-control {
    min-height:110px;
    resize:vertical;
}

.form-control.is-invalid {
    border-color:var(--state-error);
    background-color:var(--state-error-bg);
}

.form-control.is-invalid:focus {
    box-shadow:0 0 0 3px rgba(248, 113, 113, 0.25);
}

.form-error-msg {
    display:none;
    font-family:var(--felo-d14);
    font-size:var(--text-micro);
    color:var(--state-error);
    margin-top:var(--space-3xs);
}

.form-control.is-invalid + .form-error-msg {
    display:block;
}

.form-checkbox-label {
    display:flex;
    align-items:flex-start;
    gap:var(--space-xs);
    cursor:pointer;
    font-size:var(--text-small);
    color:var(--ink-soft);
}

.form-checkbox-input {
    appearance:none;
    -webkit-appearance:none;
    width:22px;
    height:22px;
    border:1px solid var(--line);
    border-radius:var(--radius-xs);
    background-color:var(--surface-2);
    cursor:pointer;
    flex-shrink:0;
    margin-top:2px;
    display:grid;
    place-content:center;
    transition:border-color var(--duration-fast) var(--ease-out),
                            background-color var(--duration-fast) var(--ease-out);
}

.form-checkbox-input:hover {
    border-color:var(--accent);
}

.form-checkbox-input:checked {
    background-color:var(--accent);
    border-color:var(--accent);
}

.form-checkbox-input:checked::before {
    content:'';
    width:10px;
    height:6px;
    border-left:2px solid var(--accent-ink);
    border-bottom:2px solid var(--accent-ink);
    transform:rotate(-45deg) translate(1px, -1px);
}

.form-checkbox-input:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:2px;
}

.form-status {
    padding:var(--space-md);
    border-radius:var(--radius-sm);
    margin-top:var(--space-md);
    font-family:var(--felo-d14);
    font-size:var(--text-small);
    display:none;
}

.form-status.is-success {
    display:block;
    background-color:var(--state-success-bg);
    border:1px solid var(--state-success);
    color:var(--state-success);
}

.form-status.is-error {
    display:block;
    background-color:var(--state-error-bg);
    border:1px solid var(--state-error);
    color:var(--state-error);
}

.chat-launcher {
    position:fixed;
    bottom:calc(var(--dock-height) + 16px);
    right:16px;
    z-index:var(--z-chat);
    width:54px;
    height:54px;
    border-radius:var(--radius-full);
    background-color:var(--surface-2);
    border:2px solid var(--line);
    color:var(--accent);
    display:inline-flex;
    align-items:center;
    justify-content:center;
    cursor:pointer;
    box-shadow:var(--shadow-elevation);
    transition:transform var(--duration-fast) var(--ease-out),
                            border-color var(--duration-fast) var(--ease-out),
                            background-color var(--duration-fast) var(--ease-out),
                            box-shadow var(--duration-fast) var(--ease-out);
}

@media (min-width: 1024px) {
    .chat-launcher {
        bottom:24px;
        right:24px;
        width:58px;
        height:58px;
    }
}

.chat-launcher:hover {
    background-color:var(--surface);
    border-color:var(--accent);
    color:#62d3ed;
    box-shadow:0 6px 20px rgba(53, 196, 230, 0.3);
    transform:translateY(-2px);
}

.chat-launcher:active {
    background-color:var(--ground);
    border-color:#27a6c5;
    transform:translateY(1px);
}

.chat-launcher:focus-visible {
    outline:3px solid var(--accent);
    outline-offset:3px;
}

.chat-launcher-badge {
    position:absolute;
    top:-2px;
    right:-2px;
    background-color:var(--accent);
    color:var(--accent-ink);
    font-family:var(--felo-d14);
    font-size:11px;
    font-weight:700;
    min-width:18px;
    height:18px;
    border-radius:var(--radius-full);
    display:flex;
    align-items:center;
    justify-content:center;
    padding:0 4px;
    box-shadow:0 0 0 2px var(--ground);
}

.chat-dialog {
    position:fixed;
    bottom:calc(var(--dock-height) + 76px);
    right:16px;
    z-index:var(--z-chat);
    width:min(380px, calc(100vw - 32px));
    height:min(520px, calc(100vh - 160px));
    background-color:var(--surface);
    border:1px solid var(--line);
    border-radius:var(--radius-md);
    box-shadow:var(--shadow-deep);
    display:flex;
    flex-direction:column;
    overflow:hidden;
    opacity:0;
    visibility:hidden;
    transform:translateY(16px) scale(0.96);
    transition:opacity var(--duration-fast) var(--ease-out),
                            visibility var(--duration-fast),
                            transform var(--duration-fast) var(--ease-out);
}

@media (min-width: 1024px) {
    .chat-dialog {
        bottom:92px;
        right:24px;
        width:390px;
        height:540px;
    }
}

.chat-dialog.is-open {
    opacity:1;
    visibility:visible;
    transform:translateY(0) scale(1);
}

.chat-header {
    background-color:var(--surface-2);
    border-bottom:1px solid var(--line);
    padding:var(--space-xs) var(--space-sm);
    display:flex;
    align-items:center;
    justify-content:space-between;
}

.chat-title {
    font-family:var(--felo-283);
    font-size:var(--text-small);
    font-weight:700;
    color:var(--ink);
    margin:0;
    display:flex;
    align-items:center;
    gap:var(--space-xs);
}

.chat-close-btn {
    appearance:none;
    background:transparent;
    border:0;
    color:var(--ink-soft);
    width:32px;
    height:32px;
    border-radius:var(--radius-xs);
    display:inline-flex;
    align-items:center;
    justify-content:center;
    cursor:pointer;
    transition:color var(--duration-fast) var(--ease-out),
                            background-color var(--duration-fast) var(--ease-out);
}

.chat-close-btn:hover {
    color:var(--ink);
    background-color:var(--line);
}

.chat-close-btn:active {
    background-color:var(--ground);
}

.chat-close-btn:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:1px;
}

.chat-body {
    flex:1 1 auto;
    padding:var(--space-sm);
    overflow-y:auto;
    display:flex;
    flex-direction:column;
    gap:var(--space-xs);
    background-color:var(--ground);
}

.chat-bubble {
    max-width:85%;
    padding:var(--space-xs) var(--space-sm);
    border-radius:var(--radius-sm);
    font-size:var(--text-small);
    line-height:1.45;
    word-break:break-word;
}

.chat-bubble--operator {
    align-self:flex-start;
    background-color:var(--surface-2);
    border:1px solid var(--line);
    color:var(--ink);
}

.chat-bubble--user {
    align-self:flex-end;
    background-color:var(--accent);
    color:var(--accent-ink);
    font-weight:600;
}

.chat-footer {
    border-top:1px solid var(--line);
    background-color:var(--surface);
    padding:var(--space-xs);
}

.chat-form {
    display:flex;
    gap:var(--space-2xs);
}

.chat-input {
    flex:1 1 auto;
    min-height:40px;
    padding:0.4rem 0.75rem;
    font-size:var(--text-small);
}

.consent-banner {
    position:fixed;
    inset:auto 0 0 0;
    z-index:var(--z-consent);
    background-color:rgba(14, 20, 36, 0.98);
    border-top:2px solid var(--line);
    box-shadow:0 -8px 24px rgba(0, 0, 0, 0.7);
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
    padding:var(--space-xs) var(--gutter);
    padding-bottom:calc(var(--dock-height) + env(safe-area-inset-bottom, 0px) + var(--space-2xs));
    transform:translateY(0);
    transition:transform var(--duration-normal) var(--ease-mechanical),
                            opacity var(--duration-normal) var(--ease-out);
}

@media (min-width: 1024px) {
    .consent-banner {
        padding-bottom:var(--space-xs);
    }
}

.consent-banner.is-dismissed {
    transform:translateY(110%);
    opacity:0;
    pointer-events:none;
}

.consent-banner-inner {
    display:flex;
    flex-direction:column;
    gap:var(--space-xs);
    max-width:var(--container-max);
    margin-left:auto;
    margin-right:auto;
    align-items:flex-start;
}

@media (min-width: 768px) {
    .consent-banner-inner {
        flex-direction:row;
        align-items:center;
        justify-content:space-between;
    }
}

.consent-banner-text {
    font-size:var(--text-small);
    color:var(--ink-soft);
    margin:0;
    line-height:1.4;
    max-width:68ch;
    padding-right:68px;
}

@media (min-width: 768px) {
    .consent-banner-text {
        padding-right:0;
    }
}

.consent-banner-text a {
    color:var(--ink);
    font-weight:600;
}

.consent-banner-actions {
    display:flex;
    align-items:center;
    gap:var(--space-xs);
    flex-shrink:0;
    width:100%;
}

@media (min-width: 768px) {
    .consent-banner-actions {
        width:auto;
    }
}

.consent-banner-actions .btn {
    flex:1 1 0;
}

@media (min-width: 768px) {
    .consent-banner-actions .btn {
        flex:0 0 auto;
    }
}

.site-footer {
    background-color:var(--surface);
    border-top:1px solid var(--line);
    padding-top:clamp(1.75rem, 1.25rem + 1.5vw, 2.75rem);
    padding-bottom:clamp(1.5rem, 1.0rem + 1.25vw, 2.25rem);
    color:var(--ink-soft);
    font-size:var(--text-small);
}

.footer-top {
    display:grid;
    grid-template-columns:1fr;
    gap:var(--space-md);
    margin-bottom:var(--space-md);
}

@media (min-width: 768px) {
    .footer-top {
        grid-template-columns:1.5fr 1fr 1fr;
    }
}

.footer-brand-wrap {
    display:flex;
    flex-direction:column;
    gap:var(--space-sm);
}

.footer-logo {
    height:3.5rem;
    width:auto;
    object-fit:contain;
}

.footer-facts {
    font-style:normal;
    line-height:1.6;
    color:var(--ink-soft);
}

.footer-facts p {
    margin-bottom:var(--space-2xs);
    color:var(--ink-soft);
    display:flex;
    flex-wrap:wrap;
    align-items:baseline;
    column-gap:8px;
    row-gap:2px;
}

.footer-facts a {
    color:var(--ink);
    text-decoration:none;
    display:inline-flex;
    align-items:center;
    min-height:28px;
    margin-left:6px;
}

.footer-facts a:hover {
    color:var(--accent);
    text-decoration:underline;
}

.footer-heading {
    font-family:var(--felo-283);
    font-size:var(--text-small);
    font-weight:700;
    color:var(--ink);
    text-transform:uppercase;
    letter-spacing:0.05em;
    margin-bottom:var(--space-sm);
}

.footer-nav-list {
    list-style:none;
    margin:0;
    padding:0;
    display:flex;
    flex-direction:column;
    gap:var(--space-2xs);
}

.footer-nav-link {
    color:var(--ink-soft);
    text-decoration:none;
    display:inline-flex;
    align-items:center;
    min-height:28px;
    transition:color var(--duration-fast) var(--ease-out);
}

@media (pointer: coarse) {
    .footer-facts a,
    .footer-nav-link,
    .footer-legal-link,
    .footer-reopen-consent {
        min-height:44px;
        display:inline-flex;
        align-items:center;
    }
}

.footer-nav-link:hover {
    color:var(--accent);
}

.footer-nav-link:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:2px;
}

.footer-legal-bar {
    border-top:1px solid var(--line);
    padding-top:var(--space-md);
    display:flex;
    flex-direction:column;
    gap:var(--space-sm);
    align-items:flex-start;
    justify-content:space-between;
}

@media (min-width: 768px) {
    .footer-legal-bar {
        flex-direction:row;
        align-items:center;
    }
}

.footer-legal-links {
    display:flex;
    flex-wrap:wrap;
    gap:var(--space-md);
    list-style:none;
    margin:0;
    padding:0;
}

.footer-legal-link {
    color:var(--ink-soft);
    font-size:var(--text-micro);
    text-decoration:underline;
    text-underline-offset:2px;
}

.footer-legal-link:hover {
    color:var(--ink);
}

.footer-reopen-consent {
    appearance:none;
    background:transparent;
    border:0;
    padding:0;
    font:inherit;
    font-size:var(--text-micro);
    color:var(--ink-soft);
    text-decoration:underline;
    cursor:pointer;
    transition:color var(--duration-fast) var(--ease-out);
}

.footer-reopen-consent:hover {
    color:var(--accent);
}

.footer-reopen-consent:focus-visible {
    outline:2px solid var(--accent);
    outline-offset:2px;
}
