@import url("../tokens/tokens.css");

@font-face {
    font-family: "Exo 2";
    src: url("../brand/fonts/Exo_2/Exo2-VariableFont_wght.ttf") format("truetype");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Inter";
    src: url("../brand/fonts/Inter/Inter-VariableFont_opsz-wght.ttf") format("truetype");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "JetBrains Mono";
    src: url("../brand/fonts/JetBrains_Mono/JetBrainsMono-VariableFont_wght.ttf") format("truetype");
    font-weight: 100 800;
    font-style: normal;
    font-display: swap;
}

:root {
    color-scheme: light;
    --kvt-sidebar-width: 278px;
    --kvt-radius: 8px;
    --kvt-shadow: 0 18px 44px rgba(16, 35, 49, .12);
    --kvt-grid-line: rgba(40, 75, 99, .1);
    --kvt-orange-soft: rgba(217, 106, 29, .18);
    --kvt-info-soft: rgba(127, 231, 242, .12);
    --kvt-ui-accent: var(--kvt-deep-cenote);
    --kvt-ui-accent-soft: rgba(40, 75, 99, .1);
    --kvt-ui-accent-border: rgba(40, 75, 99, .38);
    --kvt-success-soft: rgba(95, 167, 119, .14);
    --kvt-warning-soft: rgba(244, 185, 66, .16);
    --kvt-danger-soft: rgba(217, 83, 79, .16);
    --kvt-focus-ring: var(--kvt-deep-cenote);
    --kvt-sidebar-bg: linear-gradient(180deg, #ffffff, var(--kvt-wet-limestone));
    --kvt-top-row-bg: rgba(247, 250, 251, .94);
    --kvt-panel-bg: rgba(255, 255, 255, .94);
    --kvt-metric-bg: linear-gradient(180deg, #ffffff, rgba(221, 231, 236, .88));
    --kvt-tool-result-bg: linear-gradient(180deg, rgba(127, 231, 242, .12), rgba(221, 231, 236, .62)), #ffffff;
    --kvt-grid-bg: #ffffff;
    --kvt-grid-hover-bg: rgba(221, 231, 236, .68);
    --kvt-input-bg: #ffffff;
    --kvt-outline-button-text: var(--kvt-deep-cenote);
    --kvt-nav-active-bg: var(--kvt-deep-cenote);
    --kvt-nav-active-text: var(--kvt-cave-white);
    --kvt-pill-text: var(--kvt-abyss-outline);
    --kvt-checkbox-check-color: var(--kvt-cave-white);
}

html[data-theme="dark"] {
    color-scheme: dark;
    --kvt-shadow: 0 20px 60px rgba(0, 0, 0, .28);
    --kvt-grid-line: rgba(127, 231, 242, .08);
    --kvt-ui-accent: var(--kvt-info);
    --kvt-ui-accent-soft: rgba(127, 231, 242, .1);
    --kvt-ui-accent-border: var(--kvt-cenote-surface);
    --kvt-focus-ring: var(--kvt-info);
    --kvt-sidebar-bg: linear-gradient(180deg, rgba(18, 50, 70, .76), rgba(7, 20, 28, .98)), var(--kvt-midnight-cave);
    --kvt-top-row-bg: rgba(11, 29, 41, .92);
    --kvt-panel-bg: rgba(11, 29, 41, .94);
    --kvt-metric-bg: linear-gradient(180deg, rgba(18, 50, 70, .82), var(--kvt-surface));
    --kvt-tool-result-bg: linear-gradient(180deg, rgba(127, 231, 242, .06), rgba(18, 50, 70, .24)), var(--kvt-midnight-cave);
    --kvt-grid-bg: var(--kvt-midnight-cave);
    --kvt-grid-hover-bg: rgba(18, 50, 70, .72);
    --kvt-input-bg: var(--kvt-midnight-cave);
    --kvt-outline-button-text: var(--kvt-wet-limestone);
    --kvt-nav-active-bg: var(--kvt-cenote-surface);
    --kvt-nav-active-text: var(--kvt-text);
    --kvt-pill-text: var(--kvt-wet-limestone);
    --kvt-checkbox-check-color: var(--kvt-abyss-outline);
}

html,
body {
    min-height: 100%;
    margin: 0;
    font-family: "Inter", "Segoe UI", Arial, sans-serif;
    background:
        linear-gradient(90deg, var(--kvt-grid-line) 1px, transparent 1px),
        linear-gradient(180deg, var(--kvt-grid-line) 1px, transparent 1px),
        var(--kvt-bg);
    background-size: 42px 42px;
    color: var(--kvt-text);
}

body {
    font-size: 16px;
}

a {
    color: var(--kvt-ui-accent);
}

h1,
h2,
h3 {
    font-family: "Exo 2", "Inter", sans-serif;
    letter-spacing: 0;
    color: var(--kvt-text);
}

h1:focus {
    outline: none;
}

.page {
    min-height: 100vh;
    display: grid;
    grid-template-columns: var(--kvt-sidebar-width) minmax(0, 1fr);
}

.sidebar {
    position: relative;
    background: var(--kvt-sidebar-bg);
    color: var(--kvt-text);
    border-right: 1px solid var(--kvt-cenote-surface);
}

.sidebar::after {
    content: "";
    position: absolute;
    inset: 84px 18px auto auto;
    width: 92px;
    height: 210px;
    pointer-events: none;
    opacity: .18;
    background:
        linear-gradient(90deg, transparent 46%, var(--kvt-ui-accent) 47%, var(--kvt-ui-accent) 53%, transparent 54%),
        linear-gradient(135deg, transparent 44%, var(--kvt-safety-orange) 45%, var(--kvt-safety-orange) 55%, transparent 56%);
}

.main-shell {
    min-width: 0;
}

.top-row {
    position: relative;
    z-index: 12000;
    min-height: 64px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 0 26px;
    background: var(--kvt-top-row-bg);
    border-bottom: 1px solid var(--kvt-border);
    backdrop-filter: blur(14px);
}

.top-row.user-menu-active {
    z-index: 12040;
}

.top-context {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.mobile-nav-backdrop,
.mobile-menu-toggle,
.mobile-nav-close {
    display: none;
}

.mobile-menu-toggle,
.mobile-nav-close {
    align-items: center;
    justify-content: center;
    width: 40px;
    min-width: 40px;
    height: 40px;
    min-height: 40px;
    border: 1px solid var(--kvt-border);
    border-radius: 999px;
    background: var(--kvt-surface);
    color: var(--kvt-text);
    cursor: pointer;
}

.mobile-menu-toggle:hover,
.mobile-menu-toggle:focus-visible,
.mobile-nav-close:hover,
.mobile-nav-close:focus-visible {
    border-color: var(--kvt-focus-ring);
    color: var(--kvt-ui-accent);
    outline: none;
}

.mobile-menu-toggle-glyph {
    position: relative;
    width: 18px;
    height: 2px;
    border-radius: 999px;
    background: currentColor;
}

.mobile-menu-toggle-glyph::before,
.mobile-menu-toggle-glyph::after {
    content: "";
    position: absolute;
    left: 0;
    width: 18px;
    height: 2px;
    border-radius: 999px;
    background: currentColor;
}

.mobile-menu-toggle-glyph::before {
    top: -6px;
}

.mobile-menu-toggle-glyph::after {
    top: 6px;
}

body.cave-proposal-shell-open {
    overflow: hidden;
}

body.cave-proposal-shell-open .sidebar,
body.cave-proposal-shell-open .top-row,
body:has(.cave-proposal-dialog.e-dialog) .sidebar,
body:has(.cave-proposal-dialog.e-dialog) .top-row {
    display: none !important;
}

body.cave-proposal-shell-open .page,
body:has(.cave-proposal-dialog.e-dialog) .page {
    grid-template-columns: minmax(0, 1fr);
}

body.cave-proposal-shell-open .main-shell {
    min-height: 100dvh;
}

body.cave-proposal-shell-open .content,
body:has(.cave-proposal-dialog.e-dialog) .content {
    min-height: 100dvh;
    padding: 0 !important;
}

.geozone-picker {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    margin: 0;
    color: var(--kvt-text-muted);
    font-size: .78rem;
    font-weight: 800;
    text-transform: uppercase;
}

.geozone-picker .e-ddl.e-input-group,
.geozone-picker .e-ddl.e-control-wrapper {
    width: clamp(190px, 24vw, 320px);
    min-height: 36px;
    border-color: var(--kvt-border);
    border-radius: 999px !important;
    background: var(--kvt-surface) !important;
    color: var(--kvt-text);
    overflow: hidden;
}

.geozone-picker .e-input,
.geozone-picker .e-input-group-icon {
    background: transparent !important;
    color: var(--kvt-text);
}

.geozone-picker .e-ddl.e-input-focus,
.geozone-picker .e-ddl.e-valid-input,
.geozone-picker .e-ddl.e-control-wrapper.e-input-focus,
.geozone-picker .e-ddl.e-control-wrapper.e-valid-input {
    border-radius: 999px !important;
    box-shadow: none;
}

.geozone-picker .e-ddl .e-input,
.geozone-picker .e-ddl .e-input-group-icon {
    border-radius: inherit;
}

.top-lockup {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
    font-family: "Exo 2", "Inter", sans-serif;
    font-weight: 700;
    color: var(--kvt-text);
}

.top-lockup-separator {
    width: 1px;
    height: 22px;
    background: var(--kvt-cenote-surface);
}

.top-lockup-module {
    color: var(--kvt-text-muted);
    font-family: "Inter", sans-serif;
    font-size: .86rem;
    font-weight: 500;
}

.top-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
}

.theme-toggle,
.language-combo {
    min-height: 34px;
    border: 1px solid var(--kvt-border);
    border-radius: 999px;
    background: var(--kvt-surface);
    color: var(--kvt-text);
    font: 600 .84rem "Inter", sans-serif;
}

.theme-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 0 12px;
    cursor: pointer;
}

.theme-toggle:hover,
.language-combo:hover,
.theme-toggle:focus-visible,
.language-combo:focus-visible {
    border-color: var(--kvt-focus-ring);
    outline: none;
}

.theme-toggle-indicator {
    position: relative;
    width: 16px;
    height: 16px;
    border-radius: 999px;
    background: var(--kvt-safety-orange);
    box-shadow: inset -5px 0 0 rgba(7, 20, 28, .34);
}

html[data-theme="light"] .theme-toggle-indicator {
    background: var(--kvt-warning);
    box-shadow: 0 0 0 3px rgba(244, 185, 66, .18);
}

.language-picker {
    margin: 0;
}

.language-combo {
    max-width: 156px;
    padding: 0 34px 0 12px;
}

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

.content {
    padding: 26px;
}

.page-footnote {
    max-width: 980px;
    margin: 16px 0 0;
    color: var(--kvt-text-muted);
    font-size: .76rem;
    font-style: italic;
    line-height: 1.45;
}

.page-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 20px;
}

.page-title > div {
    min-width: 0;
}

.page-title-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    flex-wrap: wrap;
}

.page-title h1 {
    margin: 0;
    font-size: 32px;
    font-weight: 700;
    line-height: 1.1;
}

.page-title h2 {
    margin: 0;
    font-size: 24px;
    font-weight: 600;
}

.page-title p {
    max-width: 860px;
    margin: 6px 0 0;
    color: var(--kvt-text-muted);
}

.toolbar-row {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 18px;
    flex-wrap: wrap;
}

.metric-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 14px;
    margin-bottom: 20px;
}

.metric {
    position: relative;
    overflow: hidden;
    background: var(--kvt-metric-bg);
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    padding: 16px;
    box-shadow: var(--kvt-shadow);
}

.metric::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 3px;
    background: var(--kvt-safety-orange);
}

.metric-label {
    color: var(--kvt-text-muted);
    font-size: 13px;
    font-weight: 500;
}

.metric-value {
    margin-top: 8px;
    font-family: "JetBrains Mono", monospace;
    font-size: 1.42rem;
    font-weight: 700;
    color: var(--kvt-ui-accent);
    overflow-wrap: anywhere;
}

.metric-value-duration {
    font-size: clamp(1rem, 1.2vw, 1.26rem);
    line-height: 1.3;
}

.dashboard-chart-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-top: 4px;
}

.dashboard-chart-card {
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    background: var(--kvt-panel-bg);
    box-shadow: var(--kvt-shadow);
}

.dashboard-chart-card-wide {
    grid-column: 1 / -1;
}

.dashboard-chart-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 14px;
}

.dashboard-chart-header h2,
.dashboard-split-chart h3 {
    margin: 0;
    color: var(--kvt-text);
    line-height: 1.2;
}

.dashboard-chart-header h2 {
    font-size: 20px;
    font-weight: 700;
}

.dashboard-chart-header p {
    margin: 5px 0 0;
    color: var(--kvt-text-muted);
    font-size: 14px;
    line-height: 1.45;
}

.dashboard-split-charts {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}

.dashboard-split-chart {
    min-width: 0;
}

.dashboard-split-chart h3 {
    margin-bottom: 8px;
    font-size: 15px;
    font-weight: 700;
}

.dashboard-syncfusion-chart {
    min-width: 0;
    font-family: "Inter", "Segoe UI", Arial, sans-serif;
    color: var(--kvt-text-muted);
}

.dashboard-syncfusion-chart svg {
    background: transparent !important;
}

.dashboard-syncfusion-chart svg text,
.dashboard-syncfusion-chart svg tspan,
.dashboard-syncfusion-chart .e-tooltip-wrap,
.dashboard-syncfusion-chart .e-tooltip-wrap *,
.dashboard-syncfusion-chart .e-chart-tooltip,
.dashboard-syncfusion-chart .e-chart-tooltip * {
    font-family: "Inter", "Segoe UI", Arial, sans-serif !important;
    letter-spacing: 0;
}

.dashboard-syncfusion-chart .e-tooltip-wrap,
.dashboard-syncfusion-chart .e-chart-tooltip {
    border-color: var(--kvt-border) !important;
    background: var(--kvt-panel-bg) !important;
    color: var(--kvt-text) !important;
    box-shadow: var(--kvt-shadow);
}

.dashboard-syncfusion-chart .e-tooltip-wrap *,
.dashboard-syncfusion-chart .e-chart-tooltip * {
    color: var(--kvt-text) !important;
}

.dashboard-chart-empty {
    display: grid;
    min-height: 280px;
    place-items: center;
    padding: 20px;
    border: 1px dashed var(--kvt-border);
    border-radius: var(--kvt-radius);
    background: color-mix(in srgb, var(--kvt-panel-bg) 80%, var(--kvt-surface));
    color: var(--kvt-text-muted);
    text-align: center;
}

.dashboard-map-layout {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(220px, 1fr);
    gap: 18px;
    align-items: stretch;
}

.dashboard-google-map {
    display: block;
    width: 100%;
    min-height: 360px;
    overflow: hidden;
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    background: color-mix(in srgb, var(--kvt-panel-bg) 84%, var(--kvt-info-soft));
}

.dashboard-google-map-placeholder {
    display: grid;
    place-items: center;
    padding: 24px;
    color: var(--kvt-text-muted);
    text-align: center;
}

.dashboard-google-map-info {
    display: grid;
    gap: 4px;
    color: #102433;
    font-family: "Inter", system-ui, sans-serif;
    line-height: 1.35;
}

.dashboard-google-map-info strong {
    font-size: 13px;
}

.dashboard-google-map-info span {
    color: #587285;
    font-size: 12px;
}

.dashboard-google-map-marker {
    position: relative;
    width: 30px;
    height: 47px;
    filter: drop-shadow(0 8px 12px rgba(7, 20, 28, .34));
}

.dashboard-google-map-marker img {
    display: block;
    width: 100%;
    height: 100%;
    transform: rotate(180deg);
    transform-origin: center;
}

.google-map-preview-marker-clickable {
    cursor: pointer;
}

.dashboard-google-map-marker-count {
    position: absolute;
    left: 50%;
    top: 15px;
    display: grid;
    min-width: 18px;
    height: 18px;
    place-items: center;
    padding: 0 5px;
    border: 1px solid rgba(255, 255, 255, .72);
    border-radius: 999px;
    background: var(--kvt-safety-orange);
    color: var(--kvt-cave-white);
    font-family: "Inter", "Segoe UI", Arial, sans-serif;
    font-size: 11px;
    font-weight: 800;
    line-height: 1;
    transform: translateX(-50%);
}

.dashboard-map-list {
    display: grid;
    align-content: start;
    gap: 10px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.dashboard-map-list li {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 4px 10px;
    padding: 10px 0;
    border-bottom: 1px solid var(--kvt-border);
}

.dashboard-map-list span {
    min-width: 0;
    color: var(--kvt-text);
    font-weight: 700;
    overflow-wrap: anywhere;
}

.dashboard-map-list strong {
    color: var(--kvt-ui-accent);
    font-family: "JetBrains Mono", monospace;
    font-size: 13px;
    font-weight: 700;
    white-space: nowrap;
}

.dashboard-map-list small {
    grid-column: 1 / -1;
    color: var(--kvt-text-muted);
    font-size: 12px;
}

.panel {
    background: var(--kvt-panel-bg);
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    padding: 18px;
    box-shadow: var(--kvt-shadow);
}

.panel + .panel,
.panel + .notice-panel,
.notice-panel + .panel,
.metric-grid + .notice-panel {
    margin-top: 18px;
}

.notice-panel {
    margin-bottom: 20px;
    padding: 15px 16px;
    border: 1px solid rgba(244, 185, 66, .42);
    border-left: 4px solid var(--kvt-warning);
    border-radius: var(--kvt-radius);
    background: var(--kvt-warning-soft);
    color: var(--kvt-text);
}

.notice-panel-loading .kavetek-loading-state {
    min-height: 78px;
    padding: 0;
}

.notice-panel strong {
    color: var(--kvt-warning);
}

.caves-difficulty-notice {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.caves-notice-cookie {
    width: 20px;
    height: 20px;
    flex: 0 0 20px;
    object-fit: contain;
}

.cave-search-panel .form-actions {
    margin-top: 14px;
}

.cave-search-panel .compact-title {
    align-items: flex-start;
    margin-bottom: 0;
}

.cave-filter-form {
    margin-top: 14px;
    grid-template-columns: repeat(4, minmax(170px, 1fr));
}

.cave-arrow-rating-option {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    width: 100%;
    color: var(--kvt-text);
    font-size: .82rem;
    font-weight: 800;
}

.cave-arrow-rating-option-value {
    max-width: 100%;
}

.cave-arrow-rating-filter-icons {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    flex: 0 0 auto;
}

.cave-arrow-rating-filter-icons img {
    width: 14px;
    height: 22px;
    object-fit: contain;
}

.cave-arrow-rating-filter-icons img.is-muted {
    opacity: .22;
    filter: grayscale(1);
}

.cave-arrow-rating-filter-icons img.is-active {
    opacity: 1;
    filter: none;
}

.cave-filter-toggle.e-btn {
    flex: 0 0 auto;
    white-space: nowrap;
}

.cave-type-options,
.cave-type-tags {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px 22px;
}

.cave-type-options {
    min-height: 38px;
}

.cave-type-option {
    display: inline-grid;
    grid-template-columns: 22px max-content;
    align-items: center;
    column-gap: 5px;
    min-height: 32px;
    padding: 2px 0;
    border: 0;
    background: transparent;
    margin: 0;
    color: var(--kvt-text);
    font-size: .82rem;
    font-weight: 700;
    white-space: nowrap;
    cursor: pointer;
    transition: border-color .16s ease, background .16s ease, box-shadow .16s ease, color .16s ease;
}

.cave-type-option:hover {
    color: var(--kvt-ui-accent);
}

.cave-type-option:has(.e-frame.e-check) {
    color: var(--kvt-ui-accent);
}

.cave-type-tags span {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 3px 8px;
    border: 1px solid var(--kvt-border);
    border-radius: 999px;
    background: var(--kvt-surface);
    color: var(--kvt-text);
    font-size: .76rem;
    font-weight: 800;
}

.cave-type-tags .cave-type-empty {
    border-color: transparent;
    background: transparent;
    color: var(--kvt-text-muted);
    padding: 0;
}

.cave-proposal-dialog.e-dialog {
    position: fixed !important;
    inset: 0 !important;
    z-index: 13000 !important;
    width: 100vw !important;
    width: 100dvw !important;
    height: 100vh !important;
    height: 100dvh !important;
    max-width: 100vw !important;
    max-width: 100dvw !important;
    max-height: 100vh !important;
    max-height: 100dvh !important;
    margin: 0 !important;
    background: var(--kvt-panel-bg);
    border: 1px solid var(--kvt-border);
    border-radius: 0;
    color: var(--kvt-text);
}

body.cave-proposal-shell-open .e-dlg-container:has(.cave-proposal-dialog),
body.cave-proposal-shell-open .e-dlg-container.cave-proposal-dialog {
    position: fixed !important;
    inset: 0 !important;
    z-index: 13000 !important;
    width: 100dvw !important;
    height: 100dvh !important;
}

.cave-route-dialog.e-dialog {
    max-width: min(960px, calc(100vw - 28px)) !important;
    max-height: min(860px, calc(100vh - 28px)) !important;
    background: var(--kvt-panel-bg);
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    color: var(--kvt-text);
}

.cave-quick-dialog.e-dialog {
    max-width: min(820px, calc(100vw - 28px)) !important;
}

.cave-proposal-dialog .e-dlg-header-content,
.cave-proposal-dialog .e-footer-content,
.cave-route-dialog .e-dlg-header-content,
.cave-route-dialog .e-footer-content {
    background: var(--kvt-panel-bg);
    border-color: var(--kvt-border);
    color: var(--kvt-text);
}

.cave-proposal-dialog .e-dlg-header,
.cave-route-dialog .e-dlg-header {
    color: var(--kvt-text);
    font-weight: 800;
}

.cave-proposal-dialog .e-btn.e-dlg-closeicon-btn,
.cave-proposal-dialog .e-btn.e-dlg-closeicon-btn:hover,
.cave-proposal-dialog .e-btn.e-dlg-closeicon-btn:focus,
.cave-route-dialog .e-btn.e-dlg-closeicon-btn,
.cave-route-dialog .e-btn.e-dlg-closeicon-btn:hover,
.cave-route-dialog .e-btn.e-dlg-closeicon-btn:focus {
    background: transparent;
    box-shadow: none;
}

.cave-proposal-dialog .e-btn.e-dlg-closeicon-btn .e-icons,
.cave-route-dialog .e-btn.e-dlg-closeicon-btn .e-icons {
    color: var(--kvt-text-muted);
}

.cave-proposal-dialog .e-dlg-content,
.cave-route-dialog .e-dlg-content {
    box-sizing: border-box;
    display: grid;
    gap: 14px;
    grid-template-columns: minmax(0, 1fr);
    grid-template-rows: auto minmax(0, 1fr) auto;
    height: 100%;
    min-height: 0;
    max-height: none;
    overflow: hidden;
    background: var(--kvt-panel-bg);
    color: var(--kvt-text);
}

.cave-proposal-dialog .e-dlg-content {
    height: calc(100dvh - 54px) !important;
    padding-bottom: max(38px, calc(env(safe-area-inset-bottom) + 24px));
}

.cave-proposal-dialog .e-dlg-content > .form-actions {
    margin-top: 0;
    min-height: 46px;
    padding-top: 10px;
    border-top: 1px solid var(--kvt-border);
    background: var(--kvt-panel-bg);
}

.cave-route-dialog .e-dlg-content {
    display: block;
}

.cave-quick-dialog .e-dlg-content {
    display: grid;
    gap: 14px;
    grid-template-columns: minmax(0, 1fr);
    max-height: min(760px, calc(100vh - 88px));
    overflow: auto;
}

.cave-route-editor-dialog .e-dlg-content {
    display: grid;
    grid-template-rows: minmax(0, 1fr) auto;
    gap: 14px;
    min-height: 0;
    overflow: hidden;
    padding-bottom: max(14px, env(safe-area-inset-bottom));
}

.cave-route-dialog-body {
    display: grid;
    gap: 14px;
    min-height: 0;
    overflow: auto;
    padding-right: 4px;
}

.cave-route-editor-dialog .e-dlg-content > .form-actions {
    margin-top: 0;
    padding-top: 8px;
    border-top: 1px solid var(--kvt-border);
    background: var(--kvt-panel-bg);
}

.moderation-cave-review-dialog .e-dlg-content {
    display: grid;
    grid-template-rows: minmax(0, 1fr) auto;
    gap: 14px;
    min-height: 0;
    overflow: hidden;
    padding-bottom: max(14px, env(safe-area-inset-bottom));
}

.moderation-cave-review-dialog .e-dlg-content > .form-actions {
    margin-top: 0;
    padding-top: 8px;
    border-top: 1px solid var(--kvt-border);
    background: var(--kvt-panel-bg);
}

.moderation-review-shell {
    display: grid;
    gap: 14px;
    min-height: 0;
    overflow: auto;
    padding-right: 4px;
}

.moderation-review-summary {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 12px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: var(--kvt-surface);
    color: var(--kvt-text-muted);
    font-size: .82rem;
    font-weight: 800;
}

.moderation-review-summary strong {
    color: var(--kvt-text);
    font-size: .95rem;
}

.moderation-review-section-title {
    margin: 4px 0 -4px;
    color: var(--kvt-text);
    font-size: .9rem;
    font-weight: 900;
}

.admin-form.cave-proposal-form.moderation-review-form {
    padding: 0;
}

.moderation-grid-actions {
    align-items: center;
    gap: 8px;
    flex-wrap: nowrap;
}

.moderation-provider-cell {
    display: grid;
    grid-template-columns: 42px minmax(0, 1fr);
    align-items: center;
    gap: 10px;
    min-height: 46px;
    font-weight: 800;
}

.moderation-provider-cell img {
    width: 42px;
    height: 42px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: var(--kvt-surface);
    object-fit: contain;
    padding: 4px;
}

.moderation-provider-logo-placeholder {
    width: 42px;
    height: 42px;
    border: 1px dashed var(--kvt-border);
    border-radius: 8px;
    background: var(--kvt-surface);
}

.moderation-provider-name {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.moderation-provider-status-cell {
    min-width: 180px;
}

.moderation-icon-action.e-btn,
.moderation-icon-action.e-css.e-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    min-width: 36px;
    height: 36px;
    min-height: 36px;
    padding: 0;
    border: 1px solid color-mix(in srgb, var(--kvt-ui-accent) 42%, var(--kvt-border));
    border-radius: 999px;
    background: color-mix(in srgb, var(--kvt-ui-accent) 12%, var(--kvt-panel-bg));
    color: var(--kvt-ui-accent);
}

.moderation-icon-action.e-btn .e-btn-icon,
.moderation-icon-action.e-css.e-btn .e-btn-icon {
    margin: 0;
    font-size: 1rem;
}

.moderation-icon-action.e-btn:hover,
.moderation-icon-action.e-btn:focus,
.moderation-icon-action.e-css.e-btn:hover,
.moderation-icon-action.e-css.e-btn:focus {
    border-color: var(--kvt-ui-accent);
    background: color-mix(in srgb, var(--kvt-ui-accent) 20%, var(--kvt-panel-bg));
    color: var(--kvt-text);
}

.moderation-icon-action-approve.e-btn,
.moderation-icon-action-approve.e-css.e-btn {
    border-color: color-mix(in srgb, #23a36f 48%, var(--kvt-border));
    color: #23a36f;
    background: color-mix(in srgb, #23a36f 12%, var(--kvt-panel-bg));
}

.moderation-icon-action-reject.e-btn,
.moderation-icon-action-reject.e-css.e-btn {
    border-color: color-mix(in srgb, #d05b68 48%, var(--kvt-border));
    color: #d05b68;
    background: color-mix(in srgb, #d05b68 12%, var(--kvt-panel-bg));
}

.moderation-icon-action-disabled.e-btn,
.moderation-icon-action-disabled.e-css.e-btn {
    opacity: .45;
}

.moderation-rejected-screen {
    display: grid;
    gap: 18px;
}

.moderation-rejected-section {
    display: grid;
    gap: 10px;
}

.moderation-rejected-section h2 {
    margin: 0;
    color: var(--kvt-text);
    font-size: 1rem;
    font-weight: 900;
}

.moderation-reject-form textarea.e-input {
    min-height: 118px;
}

.cave-form-note {
    margin: 0;
    color: var(--kvt-text);
}

.cave-quick-wizard {
    display: grid;
    gap: 12px;
}

.cave-quick-steps {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
}

.cave-quick-step {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 8px;
    min-height: 50px;
    padding: 10px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: var(--kvt-surface);
    color: var(--kvt-text-muted);
    font: inherit;
    font-size: .82rem;
    font-weight: 800;
    text-align: left;
    cursor: pointer;
}

.cave-quick-step span {
    display: grid;
    place-items: center;
    width: 26px;
    height: 26px;
    border: 1px solid var(--kvt-ui-accent-border);
    border-radius: 50%;
    color: var(--kvt-ui-accent);
}

.cave-quick-step strong {
    min-width: 0;
    overflow-wrap: anywhere;
}

.cave-quick-step:hover,
.cave-quick-step:focus {
    border-color: var(--kvt-ui-accent-border);
    outline: none;
}

.cave-quick-step.active {
    border-color: var(--kvt-ui-accent);
    color: var(--kvt-text);
}

.cave-quick-step.active span,
.cave-quick-step.complete span {
    background: var(--kvt-ui-accent);
    color: var(--kvt-nav-active-text);
}

.cave-quick-progress {
    color: var(--kvt-text-muted);
    font-size: .8rem;
    font-weight: 800;
}

.cave-quick-body {
    height: clamp(390px, 54vh, 430px);
    min-height: 0;
    overflow: auto;
}

.cave-quick-map-field .cave-location-map-canvas,
.cave-quick-map-field .cave-location-map-placeholder {
    height: 180px;
    min-height: 180px;
    max-height: 180px;
}

.admin-form.cave-proposal-form.cave-quick-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-content: start;
    min-height: 100%;
    padding: 2px 4px 8px;
}

.admin-form.cave-proposal-form.cave-quick-form .wide-field {
    grid-column: 1 / -1;
}

.cave-quick-actions {
    margin-top: 0;
    padding-top: 10px;
    border-top: 1px solid var(--kvt-border);
}

.cave-media-form label,
.cave-media-form .admin-field {
    min-width: 0;
}

.cave-media-form .e-input-group,
.cave-media-form .e-control-wrapper {
    width: 100% !important;
    max-width: none;
}

.cave-media-form textarea.e-input {
    width: 100% !important;
    min-height: 92px;
    resize: vertical;
}

.cave-media-upload {
    display: grid;
    gap: 6px;
}

.cave-media-upload input[type="file"] {
    box-sizing: border-box;
    width: 100%;
    min-height: 36px;
    padding: 7px 8px;
    border: 1px solid var(--kvt-border);
    border-radius: 5px;
    background: var(--kvt-input-bg);
    color: var(--kvt-text);
    font-size: .82rem;
}

.cave-media-status {
    color: var(--kvt-ui-accent);
    font-size: .78rem;
    font-weight: 800;
    overflow-wrap: anywhere;
}

.cave-media-error {
    color: var(--kvt-danger);
    font-size: .78rem;
    font-weight: 800;
    overflow-wrap: anywhere;
}

.cave-proposal-tabs .e-content {
    width: 100% !important;
    flex: 1 1 auto;
    height: 100% !important;
    max-width: 100%;
    padding-top: 14px;
    min-height: 0;
    max-height: none;
    overflow: auto;
}

.cave-proposal-tabs,
.cave-proposal-tabs .e-tab-header,
.cave-proposal-tabs .e-toolbar,
.cave-proposal-tabs .e-toolbar-items,
.cave-proposal-tabs .e-content .e-item {
    width: 100% !important;
    min-height: 0;
    min-width: 0;
    max-width: 100%;
}

.cave-proposal-tabs {
    display: flex !important;
    flex-direction: column;
    overflow: hidden;
}

.cave-proposal-tabs .e-content .e-item.e-active {
    display: flex !important;
    flex-direction: column;
    height: 100%;
    min-height: 100%;
}

.cave-proposal-tabs .e-content .e-item.e-active > .cave-location-form {
    flex: 1 1 auto;
}

.cave-proposal-tabs .e-tab-header {
    border-bottom: 1px solid var(--kvt-border);
}

.cave-proposal-tabs .e-tab-header .e-toolbar-item .e-tab-text {
    color: var(--kvt-text-muted);
    font-weight: 800;
}

.cave-proposal-tabs .e-tab-header .e-toolbar-item.e-active .e-tab-text {
    color: var(--kvt-ui-accent);
}

.cave-description-form {
    margin-top: 0;
}

.grid-action-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 30px;
    color: var(--kvt-ui-accent);
    font-size: .8rem;
    font-weight: 800;
    text-decoration: none;
    white-space: nowrap;
}

.cave-grid-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: nowrap;
}

.cave-grid-icon-action {
    justify-content: center;
    width: 36px;
    min-width: 36px;
    height: 36px;
    min-height: 36px;
    padding: 0;
    border: 1px solid color-mix(in srgb, var(--kvt-ui-accent) 42%, var(--kvt-border));
    border-radius: 999px;
    background: color-mix(in srgb, var(--kvt-ui-accent) 12%, var(--kvt-panel-bg));
    color: var(--kvt-ui-accent);
}

.cave-grid-icon-action .e-icons,
.cave-grid-icon-action .ti,
.cave-condition-action-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    font-size: .98rem;
    line-height: 1;
}

.cave-condition-action-icon {
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: 0;
}

.cave-grid-icon-action:hover,
.cave-grid-icon-action:focus-visible {
    border-color: var(--kvt-ui-accent);
    background: color-mix(in srgb, var(--kvt-ui-accent) 20%, var(--kvt-panel-bg));
    color: var(--kvt-text);
}

.grid-action-button {
    border: 0;
    background: transparent;
    cursor: pointer;
    font: inherit;
    padding: 0;
}

.grid-action-button.cave-grid-icon-action {
    border: 1px solid color-mix(in srgb, var(--kvt-ui-accent) 42%, var(--kvt-border));
    background: color-mix(in srgb, var(--kvt-ui-accent) 12%, var(--kvt-panel-bg));
    padding: 0;
}

.grid-action-button.cave-grid-icon-action:hover,
.grid-action-button.cave-grid-icon-action:focus-visible {
    border-color: var(--kvt-ui-accent);
    background: color-mix(in srgb, var(--kvt-ui-accent) 20%, var(--kvt-panel-bg));
}

.grid-action-button:disabled {
    cursor: default;
    opacity: .55;
}

.grid-action-link:hover {
    color: var(--kvt-text);
}

.cave-route-builder {
    display: grid;
    grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
    gap: 16px;
    align-items: start;
    min-height: 560px;
}

.cave-route-list-panel,
.cave-route-editor-panel,
.cave-media-section {
    min-width: 0;
}

.cave-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 12px;
}

.cave-section-header strong {
    color: var(--kvt-text);
    font-size: .92rem;
}

.cave-section-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-end;
}

.cave-small-button.e-btn {
    min-height: 32px;
}

.cave-route-list {
    display: grid;
    gap: 8px;
    max-height: 508px;
    overflow: auto;
    padding-right: 4px;
}

.cave-route-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 36px;
    gap: 6px;
    align-items: center;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--kvt-panel-bg) 88%, transparent);
}

.cave-route-card.active {
    border-color: var(--kvt-ui-accent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--kvt-ui-accent) 25%, transparent);
}

.cave-route-select {
    display: grid;
    gap: 3px;
    min-width: 0;
    padding: 10px 8px 10px 10px;
    border: 0;
    background: transparent;
    color: var(--kvt-text);
    text-align: left;
    cursor: pointer;
}

.cave-route-select span,
.cave-route-select small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cave-route-select span {
    font-weight: 800;
}

.cave-route-select small {
    color: var(--kvt-text-muted);
    font-weight: 700;
}

.cave-remove-button.e-btn {
    color: var(--kvt-danger);
}

.cave-media-section {
    margin-top: 18px;
}

.cave-media-tab {
    min-height: 560px;
}

.cave-media-list {
    display: grid;
    gap: 12px;
}

.cave-safety-section,
.cave-inline-editor-list {
    display: grid;
    gap: 14px;
}

.cave-safety-section .cave-section-header {
    margin-top: 8px;
}

.cave-inline-editor-item {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: start;
    padding: 12px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--kvt-panel-bg) 90%, transparent);
}

.cave-inline-remove.e-btn {
    align-self: start;
}

.cave-media-item {
    display: grid;
    gap: 10px;
    padding: 12px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--kvt-panel-bg) 90%, transparent);
}

.cave-media-preview-item {
    grid-template-columns: minmax(180px, 240px) minmax(0, 1fr) auto;
    align-items: start;
    gap: 14px;
}

.cave-media-preview-panel {
    display: grid;
    gap: 10px;
    min-width: 0;
}

.cave-media-thumbnail {
    display: grid;
    place-items: center;
    width: 100%;
    aspect-ratio: 4 / 3;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    overflow: hidden;
    background: color-mix(in srgb, var(--kvt-input-bg) 82%, var(--kvt-ui-accent) 18%);
    color: var(--kvt-text-muted);
}

.cave-media-thumbnail img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.cave-media-thumbnail .e-icons,
.cave-media-thumbnail .ti {
    color: var(--kvt-text-muted);
    font-size: 2rem;
}

.cave-media-preview-meta {
    display: grid;
    gap: 6px;
    min-width: 0;
}

.cave-media-preview-meta strong,
.cave-media-preview-meta small,
.cave-media-preview-meta a {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cave-media-preview-meta strong {
    color: var(--kvt-text);
    font-size: .9rem;
}

.cave-media-preview-meta small {
    color: var(--kvt-text-muted);
    font-size: .76rem;
    font-weight: 700;
}

.cave-media-preview-meta a {
    color: var(--kvt-ui-accent);
    font-size: .78rem;
    font-weight: 900;
    text-decoration: none;
}

.cave-media-preview-meta a:hover {
    color: var(--kvt-text);
    text-decoration: underline;
}

.cave-media-preview-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.cave-media-preview-tags span {
    max-width: 100%;
    padding: 4px 7px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--kvt-ui-accent) 14%, transparent);
    color: var(--kvt-text);
    font-size: .7rem;
    font-weight: 900;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cave-media-form {
    grid-template-columns: repeat(3, minmax(180px, 1fr));
}

.cave-media-editor-form {
    grid-template-columns: repeat(2, minmax(180px, 1fr));
}

.cave-media-remove {
    justify-self: end;
}

.cave-empty-state {
    margin: 0;
    padding: 14px;
    border: 1px dashed var(--kvt-border);
    border-radius: 8px;
    color: var(--kvt-text-muted);
    font-weight: 700;
}

.cave-route-grid-panel {
    display: grid;
    gap: 12px;
    min-height: 560px;
}

.cave-poi-grid-panel {
    display: grid;
    gap: 12px;
    min-height: 560px;
}

.cave-condition-grid-panel {
    display: grid;
    gap: 12px;
    min-height: 560px;
}

.cave-routes-grid {
    min-height: 420px;
}

.cave-pois-grid {
    min-height: 420px;
}

.cave-condition-reports-grid {
    min-height: 420px;
}

.cave-route-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
}

.cave-route-difficulty-display {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.cave-route-difficulty-display .difficulty-cookies {
    width: auto;
    flex: 0 0 auto;
}

.cave-detail-screen {
    display: grid;
    gap: 14px;
    width: min(100%, 1180px);
    margin: 0 auto;
    padding-bottom: 24px;
}

.cave-detail-screen.is-fullscreen,
.cave-detail-screen:fullscreen {
    box-sizing: border-box;
    width: 100vw;
    max-width: none;
    height: 100vh;
    margin: 0;
    padding: 18px;
    overflow: auto;
    background: var(--kvt-surface);
}

body.cave-detail-fullscreen-open {
    overflow: hidden;
}

.cave-detail-state {
    display: grid;
    place-items: center;
    gap: 12px;
    min-height: 420px;
    color: var(--kvt-text);
    font-weight: 800;
}

.cave-detail-state h1 {
    margin: 0;
    font-size: 1.4rem;
}

.cave-detail-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-width: 0;
}

.cave-detail-toolbar-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
}

.cave-detail-icon-button.e-btn {
    width: 38px;
    min-width: 38px;
    height: 38px;
    padding: 0;
}

.cave-detail-icon-button.e-btn .e-btn-icon {
    margin: 0;
}

.cave-arrow-button-icon {
    display: inline-block;
    width: 18px;
    height: 18px;
}

.cave-arrow-button-icon::before {
    display: block;
    width: 100%;
    height: 100%;
    background: url("../img/Arrow.svg") center / contain no-repeat;
    content: "";
}

html[data-theme="dark"] .cave-arrow-button-icon::before {
    background-image: url("../img/Arrow_dark.svg");
}

.cave-technical-sheet {
    display: grid;
    gap: 18px;
    min-width: 0;
}

.cave-detail-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(420px, 520px);
    gap: 18px;
    align-items: stretch;
    padding: 22px;
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--kvt-ui-accent) 10%, transparent), transparent 42%),
        var(--kvt-panel-bg);
}

.cave-detail-hero-copy {
    display: grid;
    align-content: start;
    gap: 12px;
    min-width: 0;
}

.cave-detail-back {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    justify-self: start;
    color: var(--kvt-ui-accent);
    font-size: .78rem;
    font-weight: 800;
    text-decoration: none;
}

.cave-detail-kicker {
    color: var(--kvt-ui-accent);
    font-size: .76rem;
    font-weight: 900;
    text-transform: uppercase;
}

.cave-detail-hero h1 {
    margin: 0;
    color: var(--kvt-text);
    font-size: clamp(1.8rem, 3vw, 2.8rem);
    font-weight: 900;
    line-height: 1;
    overflow-wrap: anywhere;
}

.cave-detail-description {
    grid-column: 1 / -1;
    width: 100%;
    max-width: none;
    margin: 0;
    color: var(--kvt-text-muted);
    font-size: 1rem;
    line-height: 1.55;
    text-align: justify;
    text-justify: inter-word;
    hyphens: auto;
}

.cave-detail-tags {
    grid-column: 1 / -1;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.cave-detail-tags span {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: 4px 9px;
    border: 1px solid var(--kvt-border);
    border-radius: 999px;
    background: color-mix(in srgb, var(--kvt-panel-bg) 72%, var(--kvt-ui-accent));
    color: var(--kvt-text);
    font-size: .75rem;
    font-weight: 800;
}

.cave-detail-metrics {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    align-self: end;
}

.cave-detail-metric-card {
    display: grid;
    gap: 4px;
    align-content: center;
    min-width: 0;
    min-height: 76px;
    padding: 12px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--kvt-panel-bg) 88%, transparent);
}

.cave-detail-metric-label,
.cave-detail-definition-grid dt,
.cave-detail-route-stats dt {
    color: var(--kvt-text-muted);
    font-size: .74rem;
    font-weight: 800;
    text-transform: uppercase;
}

.cave-detail-metric-label {
    display: inline-flex;
    align-items: center;
    min-width: 0;
    line-height: 1;
}

.cave-detail-metrics strong {
    color: var(--kvt-text);
    font-size: 1.15rem;
    line-height: 1.1;
    overflow-wrap: anywhere;
}

.cave-detail-layout {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}

.cave-social-section .admin-form.cave-form-three-columns {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.cave-social-section .cave-small-button.e-btn {
    justify-self: stretch;
    max-width: 100%;
}

.cave-social-title-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    flex-wrap: wrap;
}

.cave-social-layout {
    grid-template-columns: minmax(220px, .56fr) minmax(320px, 1.44fr);
    align-items: start;
}

.cave-favorite-compact {
    align-content: start;
    gap: 10px;
    padding: 14px;
}

.cave-favorite-summary {
    display: grid;
    gap: 4px;
}

.cave-favorite-summary strong {
    color: var(--kvt-text);
    font-size: 2rem;
    font-weight: 900;
    line-height: 1;
}

.cave-detail-dashboard {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(156px, 1fr));
    gap: 12px;
}

.cave-dashboard-card {
    display: grid;
    align-content: start;
    gap: 8px;
    min-width: 0;
    min-height: 118px;
    padding: 14px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: var(--kvt-panel-bg);
}

.cave-dashboard-card span,
.cave-dashboard-card small {
    color: var(--kvt-text-muted);
    font-size: .72rem;
    font-weight: 800;
    text-transform: uppercase;
}

.cave-dashboard-card strong {
    color: var(--kvt-text);
    font-size: 1.05rem;
    font-weight: 900;
    overflow-wrap: anywhere;
}

.cave-dashboard-card > strong:first-of-type {
    font-size: 1.35rem;
}

.cave-dashboard-card.visual-card {
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--kvt-ui-accent) 8%, transparent), transparent 58%),
        var(--kvt-panel-bg);
}

.cave-dashboard-icons {
    display: flex;
    align-items: center;
    gap: 4px;
    min-height: 30px;
}

.cave-dashboard-icons img {
    width: 22px;
    height: 22px;
    object-fit: contain;
}

.cave-arrow-readonly img.is-muted {
    opacity: .22;
    filter: grayscale(1);
}

.cave-arrow-readonly img.is-active {
    opacity: 1;
    filter: none;
}

.cave-arrow-readonly img {
    width: 16px;
    height: 24px;
}

.cave-content-report-dialog.e-dialog,
.cave-social-rating-dialog.e-dialog {
    max-width: min(560px, calc(100vw - 28px)) !important;
}

.cave-content-report-dialog .e-dlg-content,
.cave-social-rating-dialog .e-dlg-content {
    height: auto;
    overflow: visible;
}

.admin-form.single-column.cave-content-report-form,
.admin-form.single-column.cave-rating-form {
    grid-template-columns: minmax(0, 1fr);
}

.cave-content-report-form label,
.cave-rating-form label {
    min-width: 0;
}

.cave-content-report-form .admin-native-input {
    width: 100%;
}

.cave-content-report-form .admin-native-textarea {
    min-height: 132px;
}

.cave-rating-dialog-body {
    display: grid;
    gap: 14px;
}

.cave-rating-selector-field > span {
    color: var(--kvt-text-muted);
    font-size: .74rem;
    font-weight: 800;
    text-transform: uppercase;
}

.cave-rating-selector-field {
    display: grid;
    gap: 6px;
}

.cave-arrow-selector {
    display: flex;
    align-items: center;
    gap: 5px;
}

.cave-arrow-rating-button {
    display: grid;
    place-items: center;
    width: 32px;
    min-width: 32px;
    height: 36px;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--kvt-text);
    cursor: pointer;
    transition: opacity .16s ease, transform .16s ease;
}

.cave-arrow-rating-button:hover,
.cave-arrow-rating-button:focus-visible {
    box-shadow: none;
    outline: none;
}

.cave-arrow-rating-button:focus-visible img {
    filter: drop-shadow(0 0 4px color-mix(in srgb, var(--kvt-ui-accent) 72%, transparent));
}

.cave-arrow-rating-button:active {
    transform: translateY(1px);
}

.cave-arrow-rating-button img {
    width: 20px;
    height: 32px;
    object-fit: contain;
    opacity: .28;
    filter: grayscale(1);
}

.cave-arrow-rating-button.is-active {
    background: transparent;
}

.cave-arrow-rating-button.is-active img {
    opacity: 1;
    filter: none;
}

.cave-arrow-rating-button:disabled {
    cursor: not-allowed;
    opacity: .62;
}

.cave-rating-form textarea.e-input {
    min-height: 92px;
}

.cave-rating-dialog-actions {
    margin-top: 2px;
}

.cave-detail-section {
    display: grid;
    gap: 14px;
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    background: var(--kvt-panel-bg);
}

.cave-detail-section-title {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.cave-detail-section-title h2 {
    margin: 0;
    color: var(--kvt-text);
    font-size: 1.05rem;
    font-weight: 900;
}

.cave-detail-section-title > span,
.cave-detail-section-title > div span {
    color: var(--kvt-text-muted);
    font-weight: 900;
}

.cave-detail-section-title > div {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.cave-detail-title-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    flex-wrap: wrap;
}

.cave-detail-title-actions > span {
    color: var(--kvt-text-muted);
    font-weight: 900;
}

.cave-detail-definition-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin: 0;
}

.cave-detail-definition-grid div,
.cave-detail-route-stats div {
    min-width: 0;
}

.cave-detail-definition-grid dt,
.cave-detail-route-stats dt {
    margin-bottom: 4px;
}

.cave-detail-definition-grid dd,
.cave-detail-route-stats dd {
    margin: 0;
    color: var(--kvt-text);
    font-weight: 800;
    overflow-wrap: anywhere;
}

.cave-detail-external-link {
    color: var(--kvt-ui-accent);
    font-weight: 900;
    text-decoration: none;
    overflow-wrap: anywhere;
}

.cave-detail-external-link:hover {
    color: var(--kvt-text);
    text-decoration: underline;
}

.cave-detail-map-box {
    position: relative;
    width: 100%;
    height: 172px;
    margin-top: 14px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    overflow: hidden;
    background: var(--kvt-input-bg);
}

.cave-detail-map-frame {
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
    pointer-events: none;
}

.google-map-preview-canvas,
.google-map-preview-placeholder {
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
}

.google-map-preview-placeholder {
    display: grid;
    place-items: center;
    padding: 16px;
    background: var(--kvt-input-bg);
    color: var(--kvt-text-muted);
    font-weight: 800;
    text-align: center;
}

.cave-detail-map-open-button {
    position: absolute;
    top: 10px;
    right: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--kvt-panel-bg) 90%, white);
    color: var(--kvt-ui-accent);
    text-decoration: none;
    box-shadow: 0 8px 20px color-mix(in srgb, black 18%, transparent);
}

.cave-detail-map-open-button:hover {
    color: var(--kvt-text);
}

.cave-detail-map-open-icon {
    font-size: 1.08rem;
    line-height: 1;
}

.cave-detail-note-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 10px;
}

.cave-condition-report-list {
    display: grid;
    gap: 12px;
}

.cave-condition-report-card {
    display: grid;
    gap: 12px;
    min-width: 0;
    padding: 14px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--kvt-panel-bg) 92%, var(--kvt-ui-accent) 8%);
}

.cave-condition-report-card p {
    margin: 0;
    color: var(--kvt-text-muted);
    font-weight: 700;
    overflow-wrap: anywhere;
}

.cave-detail-note-card {
    display: grid;
    align-content: start;
    gap: 6px;
    min-width: 0;
    min-height: 108px;
    padding: 12px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--kvt-panel-bg) 86%, var(--kvt-surface));
}

.cave-detail-note-card.wide-note {
    grid-column: 1 / -1;
}

.cave-detail-note-card span {
    color: var(--kvt-text-muted);
    font-size: .72rem;
    font-weight: 900;
    text-transform: uppercase;
}

.cave-detail-note-card p,
.cave-detail-note-text {
    margin: 0;
    color: var(--kvt-text-muted);
    line-height: 1.5;
    overflow-wrap: anywhere;
}

.cave-detail-route-grid,
.cave-detail-poi-grid,
.cave-detail-media-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 12px;
}

.cave-detail-route-card,
.cave-detail-poi-card,
.cave-detail-media-card {
    display: grid;
    gap: 12px;
    min-width: 0;
    padding: 14px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--kvt-panel-bg) 88%, var(--kvt-surface));
}

.cave-detail-survey-card {
    grid-column: span 2;
}

.cave-detail-survey-card-actions {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-end;
}

.cave-detail-route-card-header {
    display: flex;
    align-items: start;
    justify-content: space-between;
    gap: 12px;
    min-width: 0;
}

.cave-detail-route-card-header > div {
    min-width: 0;
}

.cave-detail-route-card h3,
.cave-detail-media-card h3,
.cave-condition-report-card h3 {
    margin: 0;
    color: var(--kvt-text);
    font-size: 1rem;
    font-weight: 900;
    overflow-wrap: anywhere;
}

.cave-detail-route-card-header span {
    color: var(--kvt-text-muted);
    font-size: .78rem;
    font-weight: 800;
}

.cave-detail-poi-status {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    border: 1px solid var(--kvt-border);
    border-radius: 999px;
    padding: 3px 8px;
    background: var(--kvt-ui-accent-soft);
    color: var(--kvt-text) !important;
    font-size: .72rem !important;
    font-weight: 900 !important;
    white-space: nowrap;
}

.cave-detail-route-stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin: 0;
}

.cave-detail-route-card p,
.cave-detail-poi-card p,
.cave-detail-media-card p {
    margin: 0;
    color: var(--kvt-text-muted);
    line-height: 1.45;
}

.cave-detail-survey-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.cave-detail-survey-graph {
    display: grid;
    gap: 8px;
    min-width: 0;
    padding: 10px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--kvt-surface) 84%, var(--kvt-panel-bg));
}

.cave-detail-survey-graph h4 {
    margin: 0;
    color: var(--kvt-text);
    font-size: .9rem;
    font-weight: 900;
}

.cave-detail-survey-graph-viewport {
    width: min(100%, 340px);
    aspect-ratio: 1;
    overflow: hidden;
}

.cave-detail-survey-graph-svg {
    display: block;
    width: 100%;
    height: 100%;
}

.cave-detail-survey-graph-leg {
    stroke: var(--kvt-ui-accent);
    stroke-linecap: round;
    stroke-width: 3;
    vector-effect: non-scaling-stroke;
}

.cave-detail-survey-graph-station {
    fill: var(--kvt-panel-bg);
    stroke: var(--kvt-ui-accent);
    stroke-width: 2;
    vector-effect: non-scaling-stroke;
}

.cave-detail-survey-graph-label {
    fill: var(--kvt-text);
    font-size: 9px;
    font-weight: 900;
    paint-order: stroke;
    stroke: var(--kvt-panel-bg);
    stroke-width: 3px;
    stroke-linejoin: round;
}

.cave-detail-survey-list {
    display: grid;
    gap: 7px;
    min-width: 0;
}

.cave-detail-survey-list h4 {
    margin: 0;
    color: var(--kvt-text);
    font-size: .9rem;
    font-weight: 900;
}

.cave-detail-survey-list > small {
    color: var(--kvt-text-muted);
}

.cave-detail-survey-list-item {
    display: grid;
    gap: 2px;
    min-width: 0;
    padding: 7px 9px;
    border: 1px solid var(--kvt-border);
    border-radius: 6px;
    background: color-mix(in srgb, var(--kvt-surface) 82%, var(--kvt-panel-bg));
}

.cave-detail-survey-list-item strong,
.cave-detail-survey-list-item small {
    overflow-wrap: anywhere;
}

.cave-detail-survey-list-item small {
    color: var(--kvt-text-muted);
}

.cave-survey-editor-dialog.e-dialog {
    max-width: min(1080px, calc(100vw - 28px)) !important;
}

.cave-survey-editor-dialog .e-dlg-content {
    max-height: min(820px, calc(100vh - 92px));
    overflow: auto;
}

.cave-survey-editor-dialog form {
    display: grid;
    gap: 16px;
}

.cave-survey-editor-dialog .validation-summary-errors {
    margin: 0;
    border: 1px solid rgba(217, 83, 79, .36);
    border-radius: var(--kvt-radius);
    padding: 10px 12px;
    background: var(--kvt-danger-soft);
    color: var(--kvt-danger);
    font-size: .88rem;
    font-weight: 700;
}

.cave-survey-editor-form {
    padding-bottom: 12px !important;
    border-bottom: 1px solid var(--kvt-border);
}

.cave-survey-import-panel {
    display: grid;
    gap: 10px;
    min-width: 0;
    border-bottom: 1px solid var(--kvt-border);
    padding-bottom: 14px;
}

.cave-survey-import-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    min-width: 0;
}

.cave-survey-import-grid label {
    display: grid;
    gap: 6px;
    min-width: 0;
    color: var(--kvt-text-muted);
    font-size: .78rem;
    font-weight: 800;
    text-transform: uppercase;
}

.cave-survey-import-grid textarea.e-input {
    min-height: 104px;
    resize: vertical;
}

.cave-survey-import-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-end;
}

.cave-survey-editor-panels {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    align-items: start;
}

.cave-survey-editor-panel {
    display: grid;
    gap: 10px;
    min-width: 0;
}

.cave-survey-editor-list {
    display: grid;
    gap: 10px;
    min-width: 0;
}

.cave-survey-editor-item {
    display: grid;
    gap: 10px;
    min-width: 0;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    padding: 12px;
    background: color-mix(in srgb, var(--kvt-surface) 84%, var(--kvt-panel-bg));
}

.cave-survey-editor-item-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-width: 0;
}

.cave-survey-editor-item-header strong {
    min-width: 0;
    color: var(--kvt-text);
    font-size: .9rem;
    font-weight: 900;
    overflow-wrap: anywhere;
}

.admin-form.cave-survey-editor-row-form {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    padding: 0;
}

.admin-form.cave-survey-editor-row-form .wide-field {
    grid-column: 1 / -1;
}

.cave-detail-media-strip {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.cave-detail-media-strip-item {
    display: inline-flex;
    min-width: 0;
    align-items: center;
    gap: 6px;
}

.cave-detail-media-strip a,
.cave-detail-media-card a {
    color: var(--kvt-ui-accent);
    font-size: .82rem;
    font-weight: 800;
    text-decoration: none;
}

.cave-detail-media-visual {
    position: relative;
    min-width: 0;
}

.cave-detail-media-card img,
.cave-detail-media-placeholder {
    width: 100%;
    aspect-ratio: 16 / 9;
    border-radius: 6px;
    border: 1px solid var(--kvt-border);
    object-fit: cover;
    background: var(--kvt-surface);
}

.cave-detail-media-placeholder {
    display: grid;
    place-items: center;
    color: var(--kvt-text-muted);
    font-weight: 900;
}

.cave-detail-media-print-button.e-btn,
.cave-detail-media-report-button.e-btn,
.cave-detail-media-strip-print.e-btn,
.cave-detail-media-strip-report.e-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}

.cave-detail-media-print-button.e-btn {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 36px;
    min-width: 36px;
    height: 36px;
    border-color: var(--kvt-border);
    background: color-mix(in srgb, var(--kvt-panel-bg) 92%, white);
    box-shadow: 0 8px 20px color-mix(in srgb, black 18%, transparent);
}

.cave-detail-media-report-button.e-btn {
    position: absolute;
    top: 10px;
    left: 10px;
    width: 36px;
    min-width: 36px;
    height: 36px;
    border-color: var(--kvt-border);
    background: color-mix(in srgb, var(--kvt-panel-bg) 92%, white);
    box-shadow: 0 8px 20px color-mix(in srgb, black 18%, transparent);
}

.cave-detail-media-strip-print.e-btn,
.cave-detail-media-strip-report.e-btn {
    width: 28px;
    min-width: 28px;
    height: 28px;
}

.cave-detail-media-print-button.e-btn .e-btn-icon,
.cave-detail-media-report-button.e-btn .e-btn-icon,
.cave-detail-media-strip-print.e-btn .e-btn-icon,
.cave-detail-media-strip-report.e-btn .e-btn-icon {
    margin: 0;
}

.moderation-tabs .e-content {
    padding-top: 14px;
}

@media (max-width: 960px) {
    .cave-detail-hero,
    .cave-detail-layout {
        grid-template-columns: 1fr;
    }

    .cave-detail-dashboard {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .cave-social-layout {
        grid-template-columns: 1fr;
    }

    .cave-social-title-actions {
        justify-content: flex-start;
    }

    .cave-detail-metrics,
    .cave-detail-definition-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .cave-survey-import-grid,
    .cave-survey-editor-panels {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 640px) {
    .cave-detail-screen {
        gap: 12px;
    }

    .cave-detail-toolbar {
        align-items: flex-start;
        flex-direction: column;
    }

    .cave-detail-hero,
    .cave-detail-section {
        padding: 14px;
    }

    .cave-detail-metrics,
    .cave-detail-definition-grid,
    .cave-detail-dashboard,
    .cave-detail-route-stats {
        grid-template-columns: 1fr;
    }

    .cave-detail-survey-card {
        grid-column: span 1;
    }

    .cave-detail-survey-grid {
        grid-template-columns: 1fr;
    }

    .cave-detail-section-title {
        align-items: flex-start;
        flex-direction: column;
    }

    .cave-arrow-selector {
        gap: 4px;
    }

    .cave-arrow-rating-button {
        width: 30px;
        min-width: 30px;
        height: 34px;
    }

    .cave-arrow-rating-button img {
        width: 18px;
        height: 28px;
    }

    .admin-form.cave-survey-editor-row-form {
        grid-template-columns: 1fr;
    }

    .cave-survey-import-actions {
        justify-content: stretch;
    }

    .cave-survey-import-actions .e-btn {
        width: 100%;
    }
}

.tool-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(280px, .8fr);
    gap: 18px;
}

.tool-inputs h2 {
    margin-top: 0;
}

.form-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(150px, 1fr));
    gap: 14px;
    margin: 16px 0;
}

.tool-result {
    border: 1px solid var(--kvt-cenote-surface);
    border-radius: var(--kvt-radius);
    padding: 16px;
    background: var(--kvt-tool-result-bg);
}

.result-stack {
    display: grid;
    gap: 12px;
}

.result-value {
    margin-top: 4px;
    font-family: "JetBrains Mono", monospace;
    font-size: 1.45rem;
    font-weight: 700;
    color: var(--kvt-ui-accent);
}

.stage-calc-tool {
    --stage-frame: var(--kvt-deep-cenote);
    --stage-grid: color-mix(in srgb, var(--kvt-deep-cenote) 52%, var(--kvt-wet-limestone));
    --stage-header-bg: var(--kvt-info);
    --stage-header-text: var(--kvt-abyss-outline);
    --stage-title-bg: var(--kvt-deep-cenote);
    --stage-input-bg: color-mix(in srgb, var(--kvt-success) 38%, var(--kvt-cave-white));
    --stage-cell-bg: color-mix(in srgb, var(--kvt-info) 9%, var(--kvt-cave-white));
    --stage-panel-bg: color-mix(in srgb, var(--kvt-cave-white) 88%, var(--kvt-info-soft));
    display: grid;
    gap: 12px;
    color: var(--kvt-text);
}

html[data-theme="dark"] .stage-calc-tool {
    --stage-grid: var(--kvt-cenote-surface);
    --stage-header-bg: var(--kvt-cenote-surface);
    --stage-header-text: var(--kvt-text);
    --stage-title-bg: var(--kvt-deep-cenote);
    --stage-input-bg: color-mix(in srgb, var(--kvt-success) 30%, var(--kvt-midnight-cave));
    --stage-cell-bg: var(--kvt-midnight-cave);
    --stage-panel-bg: color-mix(in srgb, var(--kvt-midnight-cave) 88%, var(--kvt-cenote-surface));
}

.stage-sheet-title {
    border: 2px solid var(--kvt-info);
    background: var(--stage-title-bg);
    color: var(--kvt-cave-white);
    font-family: "Exo 2", "Inter", sans-serif;
    font-size: clamp(1.2rem, 2.2vw, 1.75rem);
    font-weight: 800;
    line-height: 1.1;
    padding: 7px 12px;
    text-align: center;
}

.stage-rule-strip {
    border-left: 4px solid var(--kvt-orange);
    background: color-mix(in srgb, var(--stage-panel-bg) 88%, var(--kvt-info));
    color: var(--kvt-text);
    font-weight: 800;
    padding: 8px 12px;
}

.stage-calc-grid {
    display: grid;
    grid-template-columns: minmax(430px, .9fr) minmax(560px, 1.45fr);
    gap: 14px;
    align-items: start;
}

.stage-sheet-panel {
    overflow: hidden;
    border: 1px solid var(--stage-grid);
    border-radius: 4px;
    background: var(--stage-panel-bg);
}

.stage-sheet-panel h2,
.stage-sheet-panel h3 {
    margin: 0;
    border-bottom: 1px solid var(--stage-grid);
    background: var(--stage-header-bg);
    color: var(--stage-header-text);
    font-family: "Exo 2", "Inter", sans-serif;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.15;
    padding: 7px 10px;
}

.stage-entry-list {
    display: grid;
}

.stage-entry-row {
    display: grid;
    grid-template-columns: minmax(230px, 1fr) minmax(128px, 168px) 54px;
    gap: 8px;
    align-items: center;
    min-height: 40px;
    margin: 0;
    border-bottom: 1px solid color-mix(in srgb, var(--stage-grid) 62%, transparent);
    padding: 4px 8px;
    font-weight: 700;
}

.stage-mode-row {
    grid-template-columns: minmax(230px, 1fr) minmax(128px, 168px) 54px;
}

.stage-mode-row > span:last-child {
    display: none;
}

.stage-entry-row:last-child {
    border-bottom: 0;
}

.stage-entry-row > span:last-child {
    color: var(--kvt-text-muted);
    font-size: .88rem;
    font-weight: 700;
}

.stage-number-input,
.stage-select {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    height: 30px;
    border: 1px solid var(--stage-grid);
    border-radius: 2px;
    background: var(--kvt-input-bg);
    color: var(--kvt-text);
    font: 800 .95rem "JetBrains Mono", monospace;
    padding: 3px 7px;
    text-align: right;
}

.stage-select {
    font-family: "Inter", sans-serif;
    text-align: left;
}

.stage-input-highlight {
    background: var(--stage-input-bg);
    color: var(--kvt-text);
}

.stage-calc-button {
    margin: 12px 8px 10px;
}

.stage-top-results {
    display: grid;
    grid-column: span 2;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    border-left: 4px solid var(--kvt-orange);
    background: var(--stage-panel-bg);
    padding: 10px;
}

.stage-top-results div {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 7px;
    min-height: 36px;
    border: 1px solid var(--stage-grid);
    background: var(--stage-cell-bg);
    padding: 6px 8px;
}

.stage-top-results span {
    font-weight: 800;
}

.stage-top-results strong,
.stage-sheet-table td {
    font-family: "JetBrains Mono", monospace;
    font-weight: 800;
}

.stage-sheet-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    background: var(--stage-cell-bg);
}

.stage-sheet-table th,
.stage-sheet-table td {
    border: 1px solid var(--stage-grid);
    padding: 6px 8px;
    vertical-align: middle;
}

.stage-sheet-table th {
    color: var(--kvt-text);
    font-weight: 800;
    text-align: left;
}

.stage-sheet-table td {
    text-align: right;
}

.stage-sheet-table thead th {
    background: color-mix(in srgb, var(--stage-header-bg) 56%, var(--stage-cell-bg));
    color: var(--stage-header-text);
    text-align: center;
}

.stage-input-cell {
    display: grid;
    grid-template-columns: minmax(70px, 1fr) 30px;
    gap: 6px;
    align-items: center;
}

.stage-input-cell span {
    color: var(--kvt-text-muted);
    font-family: "Inter", sans-serif;
    font-size: .82rem;
    font-weight: 800;
}

.stage-note-cell {
    color: var(--kvt-text-muted);
    font-family: "Inter", sans-serif !important;
    font-size: .8rem;
    font-weight: 700 !important;
    line-height: 1.25;
    text-align: left !important;
}

.stage-result-cell {
    background: var(--stage-input-bg);
}

.stage-backgas-panel {
    grid-column: 1 / -1;
    order: 2;
}

.stage-recalc-panel {
    grid-column: 1 / -1;
    order: 3;
}

.stage-result-cards {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    align-self: start;
    border-left: 4px solid var(--kvt-orange);
}

.stage-result-cards h3 {
    grid-column: 1 / -1;
    margin: 0;
    color: var(--kvt-text);
    font-family: "Exo 2", "Inter", sans-serif;
    font-size: 1.08rem;
    font-weight: 800;
}

.stage-result-cards > div {
    border: 1px solid var(--stage-grid);
    background: var(--stage-cell-bg);
    padding: 8px 10px;
}

.stage-result-cards p {
    grid-column: 1 / -1;
    margin: 0;
}

.stage-summary-panel {
    max-width: none;
    order: 1;
}

.stage-assumption {
    margin: 4px 0 0;
    color: var(--kvt-text);
    font-weight: 800;
    text-align: center;
}

.al11-tool {
    --al11-frame: var(--kvt-deep-cenote);
    --al11-grid: color-mix(in srgb, var(--kvt-deep-cenote) 58%, var(--kvt-wet-limestone));
    --al11-header-bg: var(--kvt-deep-cenote);
    --al11-header-text: var(--kvt-cave-white);
    --al11-axis-bg: var(--kvt-cenote-surface);
    --al11-cell-bg: color-mix(in srgb, var(--kvt-info) 10%, var(--kvt-cave-white));
    --al11-cell-alt-bg: color-mix(in srgb, var(--kvt-info) 16%, var(--kvt-cave-white));
    --al11-depth-bg: var(--kvt-info);
    --al11-index-bg: var(--kvt-cave-white);
    --al11-input-bg: color-mix(in srgb, var(--kvt-info) 14%, var(--kvt-cave-white));
    --al11-input-text: var(--kvt-abyss-outline);
    --al11-data-text: var(--kvt-graphite);
    display: grid;
    gap: 14px;
}

html[data-theme="dark"] .al11-tool {
    --al11-frame: var(--kvt-cenote-surface);
    --al11-grid: color-mix(in srgb, var(--kvt-info) 22%, var(--kvt-cenote-surface));
    --al11-header-bg: var(--kvt-cenote-surface);
    --al11-header-text: var(--kvt-wet-limestone);
    --al11-axis-bg: var(--kvt-deep-cenote);
    --al11-cell-bg: color-mix(in srgb, var(--kvt-info) 8%, var(--kvt-midnight-cave));
    --al11-cell-alt-bg: color-mix(in srgb, var(--kvt-info) 14%, var(--kvt-midnight-cave));
    --al11-depth-bg: var(--kvt-info);
    --al11-index-bg: var(--kvt-midnight-cave);
    --al11-input-bg: color-mix(in srgb, var(--kvt-info) 12%, var(--kvt-cenote-surface));
    --al11-input-text: var(--kvt-wet-limestone);
    --al11-data-text: var(--kvt-wet-limestone);
}

.al11-toolbar {
    display: grid;
    grid-template-columns: minmax(260px, .72fr) minmax(280px, 1fr) auto;
    align-items: center;
    gap: 18px;
}

.al11-toolbar h2 {
    margin: 0;
    text-align: center;
}

.al11-print-button {
    justify-self: end;
    white-space: nowrap;
}

.al11-sac-control {
    display: grid;
    grid-template-columns: auto minmax(92px, 116px) minmax(0, auto);
    align-items: center;
    justify-content: start;
    gap: 8px;
    font-size: .95rem;
    font-weight: 700;
}

.al11-sac-control label {
    font-family: "Exo 2", "Inter", sans-serif;
    font-weight: 700;
    color: var(--kvt-text);
}

.al11-sac-control span {
    font-family: "Inter", "Segoe UI", Arial, sans-serif;
    font-weight: 600;
    color: var(--kvt-text);
}

.al11-sac-input {
    width: 100%;
    min-height: 42px;
    padding: 0 10px;
    border: 2px solid var(--al11-frame);
    border-left-color: var(--kvt-safety-orange);
    border-radius: 0;
    background: var(--al11-input-bg);
    font-family: "JetBrains Mono", monospace;
    font-size: 1.05rem;
    font-weight: 700;
    text-align: right;
    color: var(--al11-input-text);
}

.al11-sac-input:focus-visible {
    outline: 3px solid var(--kvt-focus-ring);
    outline-offset: 2px;
}

.al11-table-wrap {
    overflow-x: auto;
    border: 2px solid var(--al11-frame);
    border-left: 4px solid var(--kvt-safety-orange);
    background: var(--al11-index-bg);
}

.al11-table {
    width: 100%;
    min-width: 880px;
    border-collapse: collapse;
    table-layout: fixed;
    font-family: "Inter", "Segoe UI", Arial, sans-serif;
    color: var(--al11-data-text);
}

.al11-table th,
.al11-table td {
    height: 32px;
    padding: 4px 6px;
    border: 1px solid var(--al11-grid);
    text-align: right;
    vertical-align: middle;
    white-space: nowrap;
}

.al11-table thead th {
    height: 64px;
    background: var(--al11-header-bg);
    color: var(--al11-header-text);
    font-family: "Exo 2", "Inter", sans-serif;
    font-size: 1rem;
    font-weight: 800;
    text-align: center;
}

.al11-atm-heading {
    width: 54px;
    background: var(--al11-index-bg) !important;
    color: var(--al11-data-text) !important;
}

.al11-axis-heading {
    position: relative;
    width: 68px;
    overflow: hidden;
    background:
        linear-gradient(to top right, var(--kvt-info) 0 48%, var(--kvt-safety-orange) 48.5% 51.5%, var(--al11-axis-bg) 52% 100%) !important;
    color: var(--al11-header-text);
}

.axis-time,
.axis-depth {
    position: absolute;
    z-index: 1;
    font-weight: 800;
}

.axis-time {
    top: 8px;
    right: 12px;
}

.axis-depth {
    bottom: 12px;
    left: 16px;
    color: var(--kvt-abyss-outline);
}

.al11-time-heading {
    width: 60px;
}

.al11-table tbody th,
.al11-table tbody td {
    background: var(--al11-cell-bg);
    font-family: "JetBrains Mono", monospace;
    font-size: .95rem;
    font-weight: 500;
    color: var(--al11-data-text);
}

.al11-table tbody tr:nth-child(even) th,
.al11-table tbody tr:nth-child(even) td {
    background: var(--al11-cell-alt-bg);
}

.al11-table .al11-ata-cell {
    background: var(--al11-index-bg) !important;
    font-weight: 700;
}

.al11-depth-cell {
    background: var(--al11-depth-bg) !important;
    color: var(--kvt-abyss-outline) !important;
    font-weight: 700 !important;
    text-align: center !important;
}

.al11-legend {
    justify-self: start;
    display: grid;
    margin: 16px 0 0 142px;
    border: 1px solid var(--al11-grid);
    border-left: 3px solid var(--kvt-safety-orange);
    background: var(--kvt-panel-bg);
}

.al11-legend div {
    display: grid;
    grid-template-columns: 38px minmax(190px, auto);
    align-items: center;
}

.al11-legend div + div {
    border-top: 1px solid var(--al11-grid);
}

.al11-legend strong,
.al11-legend span {
    padding: 4px 7px;
    color: var(--kvt-text);
}

.al11-legend strong {
    border-right: 1px solid var(--al11-grid);
    font-family: "Exo 2", "Inter", sans-serif;
    text-align: center;
}

.muted {
    color: var(--kvt-text-muted);
}

.deco-tool {
    --deco-frame: var(--kvt-graphite);
    --deco-grid: var(--kvt-graphite);
    --deco-header-bg: color-mix(in srgb, var(--kvt-info) 42%, var(--kvt-cave-white));
    --deco-header-text: var(--kvt-abyss-outline);
    --deco-ndl-bg: color-mix(in srgb, var(--kvt-success) 24%, var(--kvt-cave-white));
    --deco-cell-bg: #ffffff;
    --deco-cell-text: var(--kvt-graphite);
    --deco-control-bg: color-mix(in srgb, var(--kvt-deep-cenote) 8%, var(--kvt-cave-white));
    display: grid;
    gap: 14px;
}

html[data-theme="dark"] .deco-tool {
    --deco-frame: var(--kvt-wet-limestone);
    --deco-grid: var(--kvt-cenote-surface);
    --deco-header-bg: var(--kvt-cenote-surface);
    --deco-header-text: var(--kvt-wet-limestone);
    --deco-ndl-bg: color-mix(in srgb, var(--kvt-success) 20%, var(--kvt-midnight-cave));
    --deco-cell-bg: var(--kvt-midnight-cave);
    --deco-cell-text: var(--kvt-wet-limestone);
    --deco-control-bg: color-mix(in srgb, var(--kvt-info) 7%, var(--kvt-midnight-cave));
}

.deco-control-bar {
    display: grid;
    grid-template-columns: minmax(170px, 1.1fr) repeat(2, minmax(110px, .7fr)) minmax(150px, .9fr) auto;
    gap: 10px;
    align-items: end;
    padding: 12px;
    border: 1px solid var(--kvt-border);
    border-left: 4px solid var(--kvt-safety-orange);
    background: var(--deco-control-bg);
}

.deco-control {
    display: grid;
    gap: 5px;
    margin: 0;
}

.deco-control span {
    color: var(--kvt-text-muted);
    font-size: 13px;
    font-weight: 700;
}

.deco-select,
.deco-number {
    width: 100%;
    box-sizing: border-box;
    height: 42px;
    min-height: 42px;
    border: 1px solid var(--kvt-ui-accent-border);
    border-radius: 4px;
    background: var(--kvt-input-bg);
    color: var(--kvt-text);
    font: 700 .92rem "Inter", sans-serif;
}

.deco-select {
    padding: 0 10px;
}

.deco-number {
    padding: 0 8px;
    font-family: "JetBrains Mono", monospace;
    text-align: right;
}

.deco-select:focus-visible,
.deco-number:focus-visible {
    outline: 3px solid var(--kvt-focus-ring);
    outline-offset: 2px;
}

.deco-print-button {
    align-self: end;
    height: 42px;
    min-height: 42px;
    white-space: nowrap;
}

.deco-title {
    margin: 0;
    text-align: center;
}

.deco-table-wrap {
    overflow-x: auto;
    border: 3px solid var(--deco-frame);
    border-left: 4px solid var(--kvt-safety-orange);
    background: var(--deco-cell-bg);
}

.deco-table {
    width: 100%;
    min-width: 884px;
    border-collapse: collapse;
    table-layout: fixed;
    color: var(--deco-cell-text);
}

.deco-table th,
.deco-table td {
    border: 2px solid var(--deco-grid);
    vertical-align: middle;
}

.deco-table thead th {
    height: 60px;
    background: var(--deco-header-bg);
    color: var(--deco-header-text);
    font-family: "Exo 2", "Inter", sans-serif;
    font-size: 1.08rem;
    font-weight: 800;
    text-align: center;
}

.deco-depth-heading,
.deco-depth-cell {
    width: 128px;
}

.deco-ndl-heading,
.deco-ndl-cell {
    width: 126px;
}

.deco-depth-cell,
.deco-ndl-cell {
    height: 70px;
    font-family: "JetBrains Mono", monospace;
    font-size: 1.12rem;
    font-weight: 800;
    text-align: center;
}

.deco-depth-cell {
    background: var(--deco-header-bg);
    color: var(--deco-header-text);
}

.deco-ndl-cell {
    background: var(--deco-ndl-bg);
    color: var(--deco-cell-text);
}

.deco-split-cell {
    position: relative;
    height: 70px;
    padding: 0;
    background:
        linear-gradient(to bottom right, transparent 49.2%, var(--deco-grid) 49.6% 50.4%, transparent 50.8%),
        var(--deco-cell-bg);
    color: var(--deco-cell-text);
    font-family: "JetBrains Mono", monospace;
    font-size: 1.05rem;
    font-weight: 800;
}

.deco-bg-minute,
.deco-o2-minute {
    position: absolute;
    min-width: 2ch;
    line-height: 1;
}

.deco-bg-minute {
    top: 11px;
    left: 18px;
}

.deco-o2-minute {
    right: 18px;
    bottom: 11px;
}

.deco-meta {
    display: grid;
    grid-template-columns: minmax(520px, 1fr) minmax(220px, 280px);
    gap: 24px;
    align-items: start;
    margin: 0 0 0 6px;
}

.deco-meta-left {
    display: flex;
    align-items: flex-start;
    gap: clamp(34px, 8vw, 156px);
    min-width: 0;
}

.deco-gas-summary {
    display: grid;
    grid-template-columns: 190px 86px;
    column-gap: 18px;
    align-items: center;
}

.deco-o2-label {
    grid-column: 2;
    margin-bottom: 8px;
    font: 800 1.16rem "Inter", sans-serif;
    text-align: center;
    color: var(--kvt-text);
}

.deco-gas-summary dl {
    display: grid;
    grid-column: 1 / -1;
    gap: 6px;
    margin: 0;
}

.deco-gas-summary dl div {
    display: grid;
    grid-template-columns: 190px 86px;
    column-gap: 18px;
    align-items: center;
}

.deco-gas-summary dt,
.deco-gas-summary dd {
    margin: 0;
    color: var(--kvt-text);
    font-weight: 700;
}

.deco-gas-summary dd {
    font-family: "JetBrains Mono", monospace;
    text-align: center;
}

.deco-legend {
    position: relative;
    flex: 0 0 auto;
    width: 104px;
    height: 70px;
    border: 3px solid var(--deco-frame);
    background:
        linear-gradient(to bottom right, transparent 48.8%, var(--deco-frame) 49.4% 50.6%, transparent 51.2%),
        var(--deco-cell-bg);
    color: var(--deco-cell-text);
    font-weight: 800;
}

.deco-legend span {
    position: absolute;
}

.deco-legend-bg {
    top: 10px;
    left: 12px;
}

.deco-legend-o2 {
    right: 10px;
    bottom: 10px;
}

.deco-approx {
    justify-self: end;
    width: min(100%, 300px);
    color: var(--deco-cell-text);
}

.deco-approx-title {
    margin-bottom: 2px;
    font-weight: 800;
}

.deco-approx-note {
    margin-bottom: 6px;
    color: var(--kvt-text-muted);
    font-size: .78rem;
    font-weight: 700;
}

.deco-approx-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    background: var(--deco-cell-bg);
    color: var(--deco-cell-text);
    font-family: "JetBrains Mono", monospace;
    font-size: .92rem;
    font-weight: 800;
}

.deco-approx-table + .deco-approx-table {
    margin-top: 10px;
}

.deco-approx-table th,
.deco-approx-table td {
    border: 2px solid var(--deco-grid);
    padding: 3px 8px;
}

.deco-approx-label-col {
    width: calc(100% - 68px);
}

.deco-approx-value-col {
    width: 68px;
}

.deco-approx-table th {
    text-align: left;
}

.deco-approx-table td {
    text-align: right;
}

.deco-approx-highlight {
    background: var(--deco-ndl-bg);
}

.nav-header {
    position: relative;
}

.kv-brand {
    display: flex;
    align-items: flex-start;
    justify-content: center;
    min-height: 94px;
    padding: 12px 10px 8px;
    color: var(--kvt-text);
    text-decoration: none;
}

.kv-brand-logo {
    display: block;
    width: 256px;
    max-width: calc(100% - 14px);
    height: auto;
}

.kv-brand-compact {
    display: none;
    width: 42px;
    height: 42px;
}

html[data-theme="dark"] .kv-brand-logo-light,
html[data-theme="light"] .kv-brand-logo-dark {
    display: none;
}

.nav-scrollable {
    position: relative;
    padding: 10px;
}

.nav-link {
    --kvt-nav-icon-slot: 1.5rem;
    --kvt-nav-icon-size: 1.25rem;
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 42px;
    padding: 0 12px;
    border-radius: var(--kvt-radius);
    color: var(--kvt-text-muted);
    text-decoration: none;
    font-weight: 500;
    transition: background .16s ease, color .16s ease, border-color .16s ease;
}

.nav-link:hover,
.nav-link.active {
    color: var(--kvt-nav-active-text);
    background: var(--kvt-nav-active-bg);
}

.nav-link.active {
    box-shadow: inset 3px 0 0 var(--kvt-safety-orange);
}

.nav-link .e-icons,
.nav-link .ti,
.kv-nav-icon {
    flex: 0 0 var(--kvt-nav-icon-slot);
    width: var(--kvt-nav-icon-slot);
    height: var(--kvt-nav-icon-slot);
    color: var(--kvt-ui-accent);
    line-height: 1;
}

.nav-link .e-icons,
.nav-link .ti {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: var(--kvt-nav-icon-size);
}

.kv-nav-json-icon {
    flex: 0 0 var(--kvt-nav-icon-slot);
    width: var(--kvt-nav-icon-slot);
    height: var(--kvt-nav-icon-slot);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--kvt-ui-accent);
    font: 800 .9rem "JetBrains Mono", monospace;
    line-height: 1;
    white-space: nowrap;
}

.kv-nav-icon {
    display: inline-block;
    background: currentColor;
    mask-position: center;
    mask-repeat: no-repeat;
    mask-size: var(--kvt-nav-icon-size) var(--kvt-nav-icon-size);
    -webkit-mask-position: center;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-size: var(--kvt-nav-icon-size) var(--kvt-nav-icon-size);
}

.kv-nav-icon-caves {
    --kvt-nav-icon-size: 1.08rem;
    mask-image: url("../brand/icons/kavetek-menu-caves.svg");
    -webkit-mask-image: url("../brand/icons/kavetek-menu-caves.svg");
}

.kv-nav-icon-dive-plans {
    mask-image: url("../brand/icons/kavetek-menu-dive-plans.svg");
    -webkit-mask-image: url("../brand/icons/kavetek-menu-dive-plans.svg");
}

html[data-theme="light"] .nav-link:hover .e-icons,
html[data-theme="light"] .nav-link.active .e-icons,
html[data-theme="light"] .nav-link:hover .ti,
html[data-theme="light"] .nav-link.active .ti,
html[data-theme="light"] .nav-link:hover .kv-nav-icon,
html[data-theme="light"] .nav-link.active .kv-nav-icon,
html[data-theme="light"] .nav-link:hover .kv-nav-json-icon,
html[data-theme="light"] .nav-link.active .kv-nav-json-icon {
    color: var(--kvt-info);
}

.nav-section {
    margin: 18px 12px 8px;
    color: var(--kvt-neutral);
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
}

.nav-catalog-group {
    display: grid;
    gap: 4px;
}

.nav-tree-toggle,
.nav-schema-toggle {
    width: 100%;
    border: 0;
    background: transparent;
    cursor: pointer;
    font: inherit;
    text-align: left;
}

.nav-tree-toggle {
    justify-content: flex-start;
}

.nav-tree-label {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nav-tree-caret-icon {
    margin-left: auto;
    color: var(--kvt-neutral);
    font-size: .72rem;
    transition: transform .16s ease;
}

.nav-tree-caret-collapsed {
    transform: rotate(-90deg);
}

.nav-submenu {
    display: grid;
    gap: 4px;
    margin: 0 0 8px 34px;
    padding-left: 10px;
    border-left: 1px solid var(--kvt-border);
}

.nav-schema-group {
    display: grid;
    gap: 2px;
    min-width: 0;
}

.nav-schema-toggle {
    --kvt-nav-icon-slot: .85rem;
    --kvt-nav-icon-size: .75rem;
    min-height: 34px;
    padding: 0 8px;
    border-radius: 4px;
    color: var(--kvt-text-muted);
    font-size: .78rem;
    font-weight: 700;
}

.nav-schema-toggle:hover {
    color: var(--kvt-nav-active-text);
    background: var(--kvt-nav-active-bg);
}

.nav-schema-icon {
    flex: 0 0 .65rem;
    width: .65rem;
    height: .65rem;
    border-radius: 2px;
    border: 1px solid var(--kvt-ui-accent);
    background: color-mix(in srgb, var(--kvt-ui-accent) 18%, transparent);
}

.nav-table-list {
    display: grid;
    gap: 2px;
    padding: 0 0 2px 10px;
}

.nav-table-link,
.nav-table-placeholder {
    min-height: 30px;
    display: flex;
    align-items: center;
    border-radius: 4px;
    padding: 0 8px;
    color: var(--kvt-text-muted);
    font-size: .78rem;
    font-weight: 600;
    text-decoration: none;
}

.kavetek-loading-state.nav-catalog-loading {
    --kvt-spinner-shadow: none;
    min-height: 30px;
    padding: 0 8px;
    align-content: center;
    justify-items: start;
}

.kavetek-loading-state.nav-catalog-loading .kavetek-spinner {
    --kvt-spinner-size: 24px;
    --kvt-spinner-arrow-height: 7px;
}

.nav-table-link:hover,
.nav-table-link.active {
    color: var(--kvt-nav-active-text);
    background: var(--kvt-nav-active-bg);
}

.nav-table-link span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.offline-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border-radius: 999px;
    padding: 6px 10px;
    border: 1px solid rgba(95, 167, 119, .38);
    background: var(--kvt-success-soft);
    color: var(--kvt-pill-text);
    font-size: .8rem;
    font-weight: 600;
    white-space: nowrap;
}

.offline-pill::before {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 999px;
    background: var(--kvt-success);
}

.difficulty {
    font-weight: 700;
    color: var(--kvt-ui-accent);
}

.difficulty-cookies {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: 3px;
    width: 100%;
    min-width: 0;
    line-height: 1;
    vertical-align: middle;
}

.difficulty-cookie-icon {
    display: block;
    width: 18px;
    height: 18px;
    flex: 0 0 18px;
    object-fit: contain;
}

.route-token {
    display: inline-flex;
    gap: 6px;
    margin: 0 6px 6px 0;
    padding: 6px 9px;
    border: 1px solid var(--kvt-ui-accent-border);
    border-radius: 6px;
    background: var(--kvt-ui-accent-soft);
    color: var(--kvt-text);
}

.route-token-warning {
    border-color: rgba(244, 185, 66, .46);
    background: var(--kvt-warning-soft);
    color: var(--kvt-warning);
}

.text-muted {
    color: var(--kvt-text-muted) !important;
}

.e-btn.e-primary,
.e-css.e-btn.e-primary {
    background: var(--kvt-deep-cenote);
    border-color: var(--kvt-deep-cenote);
    color: var(--kvt-cave-white);
}

.e-btn.e-primary:hover,
.e-css.e-btn.e-primary:hover,
.e-btn.e-primary:focus,
.e-css.e-btn.e-primary:focus {
    background: var(--kvt-cenote-surface);
    border-color: var(--kvt-focus-ring);
    color: var(--kvt-cave-white);
}

.e-btn.e-outline,
.e-css.e-btn.e-outline {
    background: transparent;
    border-color: var(--kvt-deep-cenote);
    color: var(--kvt-outline-button-text);
}

.e-btn.e-outline:hover,
.e-css.e-btn.e-outline:hover {
    background: var(--kvt-cenote-surface);
    border-color: var(--kvt-ui-accent);
    color: var(--kvt-text);
}

html[data-theme="light"] .e-btn.e-outline:hover,
html[data-theme="light"] .e-css.e-btn.e-outline:hover {
    color: var(--kvt-cave-white);
}

html[data-theme="dark"] .e-btn.e-primary,
html[data-theme="dark"] .e-css.e-btn.e-primary {
    background: var(--kvt-cenote-surface);
    border-color: var(--kvt-ui-accent);
    color: var(--kvt-text);
}

html[data-theme="dark"] .e-btn.e-primary:hover,
html[data-theme="dark"] .e-css.e-btn.e-primary:hover,
html[data-theme="dark"] .e-btn.e-primary:focus,
html[data-theme="dark"] .e-css.e-btn.e-primary:focus {
    background: var(--kvt-ui-accent-soft);
    border-color: var(--kvt-ui-accent);
    color: var(--kvt-cave-white);
}

html[data-theme="dark"] .e-btn.e-outline:hover,
html[data-theme="dark"] .e-css.e-btn.e-outline:hover,
html[data-theme="dark"] .e-btn.e-outline:focus,
html[data-theme="dark"] .e-css.e-btn.e-outline:focus {
    background: var(--kvt-ui-accent-soft);
    border-color: var(--kvt-ui-accent);
    color: var(--kvt-text);
}

.e-grid,
.e-grid .e-gridheader,
.e-grid .e-content,
.e-grid .e-table,
.e-grid .e-headercontent,
.e-grid .e-toolbar,
.e-grid .e-toolbar-items,
.e-grid .e-gridpager,
.e-pager {
    background: var(--kvt-grid-bg);
    color: var(--kvt-text);
    border-color: var(--kvt-border);
}

.e-grid .e-headercell,
.e-grid .e-rowcell {
    background: var(--kvt-grid-bg);
    color: var(--kvt-text);
    border-color: var(--kvt-cenote-surface);
}

.e-grid .e-headercelldiv {
    color: var(--kvt-text-muted);
    font-weight: 700;
}

.e-grid .e-altrow .e-rowcell,
.e-grid .e-row:hover .e-rowcell {
    background: var(--kvt-grid-hover-bg);
}

body .e-toast-container.e-toast-top-center {
    position: fixed !important;
    top: 0 !important;
    right: 0 !important;
    left: 0 !important;
    width: 100% !important;
    z-index: 2147483000 !important;
    pointer-events: none;
}

body .e-toast-container.e-toast-top-center .e-toast {
    margin: 0 auto 10px !important;
    pointer-events: auto;
}

html[data-theme="light"] .e-grid,
html[data-theme="light"] .e-grid .e-gridheader,
html[data-theme="light"] .e-grid .e-content,
html[data-theme="light"] .e-grid .e-table,
html[data-theme="light"] .e-grid .e-headercontent,
html[data-theme="light"] .e-grid .e-toolbar,
html[data-theme="light"] .e-grid .e-toolbar-items,
html[data-theme="light"] .e-grid .e-toolbar .e-toolbar-item,
html[data-theme="light"] .e-grid .e-toolbar .e-tbar-btn,
html[data-theme="light"] .e-grid .e-toolbar .e-tbar-btn .e-icons,
html[data-theme="light"] .e-grid .e-toolbar .e-tbar-btn-text,
html[data-theme="light"] .e-grid .e-search,
html[data-theme="light"] .e-grid .e-gridpager,
html[data-theme="light"] .e-pager {
    background: var(--kvt-grid-bg) !important;
    color: var(--kvt-text) !important;
    border-color: var(--kvt-border) !important;
}

html[data-theme="light"] .e-grid .e-headercell,
html[data-theme="light"] .e-grid .e-rowcell {
    background: var(--kvt-grid-bg) !important;
    color: var(--kvt-text) !important;
    border-color: var(--kvt-border) !important;
}

html[data-theme="light"] .e-grid .e-headercelldiv,
html[data-theme="light"] .e-grid .e-rowcell *,
html[data-theme="light"] .e-pager,
html[data-theme="light"] .e-pager * {
    color: var(--kvt-text) !important;
}

html[data-theme="light"] .e-grid .e-altrow .e-rowcell,
html[data-theme="light"] .e-grid .e-row:hover .e-rowcell {
    background: var(--kvt-grid-hover-bg) !important;
}

html[data-theme="light"] .e-grid .e-toolbar .e-tbar-btn:hover,
html[data-theme="light"] .e-grid .e-toolbar .e-tbar-btn:focus {
    background: var(--kvt-wet-limestone) !important;
    color: var(--kvt-abyss-outline) !important;
}

.e-tab,
.e-tab .e-content,
.e-tab .e-tab-header,
.e-tab .e-tab-header .e-toolbar-item .e-tab-wrap {
    background: transparent;
    color: var(--kvt-text);
}

.e-tab .e-tab-header .e-toolbar-item.e-active .e-tab-wrap {
    color: var(--kvt-ui-accent);
}

.e-tab .e-tab-header .e-toolbar-item .e-tab-text {
    text-transform: none !important;
}

.e-tab .e-tab-header .e-indicator {
    background: var(--kvt-safety-orange);
}

html[data-theme="light"] .e-tab,
html[data-theme="light"] .e-tab .e-content,
html[data-theme="light"] .e-tab .e-content .e-item,
html[data-theme="light"] .e-tab .e-tab-header,
html[data-theme="light"] .e-tab .e-toolbar-items,
html[data-theme="light"] .e-tab .e-tab-header .e-toolbar-item,
html[data-theme="light"] .e-tab .e-tab-header .e-toolbar-item .e-tab-wrap {
    background: transparent !important;
    color: var(--kvt-text) !important;
}

html[data-theme="light"] .e-tab .e-tab-header .e-toolbar-item .e-tab-text,
html[data-theme="light"] .e-tab .e-tab-header .e-toolbar-item .e-icons {
    color: var(--kvt-text) !important;
}

html[data-theme="light"] .e-tab .e-tab-header .e-toolbar-item.e-active .e-tab-text,
html[data-theme="light"] .e-tab .e-tab-header .e-toolbar-item.e-active .e-icons {
    color: var(--kvt-deep-cenote) !important;
}

.e-input-group,
.e-control-wrapper.e-input-group {
    background: var(--kvt-input-bg);
    border-color: var(--kvt-cenote-surface);
    color: var(--kvt-text);
}

.e-input-group input,
.e-control-wrapper.e-input-group input {
    color: var(--kvt-text);
}

html[data-theme="light"] .e-input-group,
html[data-theme="light"] .e-control-wrapper,
html[data-theme="light"] .e-control-wrapper.e-input-group,
html[data-theme="light"] .e-float-input,
html[data-theme="light"] .e-float-input.e-control-wrapper,
html[data-theme="light"] .e-numeric.e-control-wrapper,
html[data-theme="light"] .e-numerictextbox,
html[data-theme="light"] .e-dropdownbase,
html[data-theme="light"] .e-dropdown-popup,
html[data-theme="light"] .e-popup,
html[data-theme="light"] .e-ddl.e-popup {
    background: #ffffff !important;
    color: var(--kvt-text) !important;
    border-color: var(--kvt-border) !important;
}

html[data-theme="light"] .e-input,
html[data-theme="light"] .e-input-group input,
html[data-theme="light"] .e-control-wrapper.e-input-group input,
html[data-theme="light"] .e-float-input input,
html[data-theme="light"] .e-numerictextbox input,
html[data-theme="light"] .e-dropdownbase .e-list-item,
html[data-theme="light"] .e-dropdown-popup .e-list-item,
html[data-theme="light"] .language-combo,
html[data-theme="light"] .language-combo option {
    background: #ffffff !important;
    color: var(--kvt-text) !important;
}

html[data-theme="light"] .e-float-text,
html[data-theme="light"] .e-float-input .e-float-text,
html[data-theme="light"] .e-control-wrapper .e-float-text,
html[data-theme="light"] .e-input-group-icon,
html[data-theme="light"] .e-spin-up,
html[data-theme="light"] .e-spin-down {
    color: var(--kvt-deep-cenote) !important;
}

html[data-theme="light"] .muted,
html[data-theme="light"] .tool-result p,
html[data-theme="light"] .tool-result .metric-label {
    color: var(--kvt-deep-cenote) !important;
}

html[data-theme="light"] .al11-sac-input,
html[data-theme="dark"] .al11-sac-input {
    background: var(--al11-input-bg) !important;
    border-color: var(--al11-frame) !important;
    border-left-color: var(--kvt-safety-orange) !important;
    color: var(--al11-input-text) !important;
}

html[data-theme="light"] .e-pager .e-pagercontainer,
html[data-theme="light"] .e-pager .e-numericcontainer,
html[data-theme="light"] .e-pager .e-parentmsgbar,
html[data-theme="light"] .e-pager .e-pagesizes,
html[data-theme="light"] .e-pager .e-currentitem,
html[data-theme="light"] .e-pager .e-numericitem,
html[data-theme="light"] .e-pager .e-link,
html[data-theme="light"] .e-pager .e-icons,
html[data-theme="light"] .e-pager .e-first,
html[data-theme="light"] .e-pager .e-prev,
html[data-theme="light"] .e-pager .e-next,
html[data-theme="light"] .e-pager .e-last,
html[data-theme="light"] .e-pager .e-firstpage,
html[data-theme="light"] .e-pager .e-prevpage,
html[data-theme="light"] .e-pager .e-nextpage,
html[data-theme="light"] .e-pager .e-lastpage,
html[data-theme="light"] .e-pager .e-firstpagedisabled,
html[data-theme="light"] .e-pager .e-prevpagedisabled,
html[data-theme="light"] .e-pager .e-nextpagedisabled,
html[data-theme="light"] .e-pager .e-lastpagedisabled,
html[data-theme="light"] .e-pager .e-pagercontainer > *,
html[data-theme="light"] .e-pager .e-numericcontainer > * {
    background: #ffffff !important;
    border-color: var(--kvt-border) !important;
    color: var(--kvt-text) !important;
    box-shadow: none !important;
}

html[data-theme="light"] .e-pager .e-currentitem,
html[data-theme="light"] .e-pager .e-currentitem:hover {
    background: var(--kvt-wet-limestone) !important;
    border-color: var(--kvt-deep-cenote) !important;
    color: var(--kvt-abyss-outline) !important;
}

#blazor-error-ui {
    color-scheme: dark;
    background: var(--kvt-warning);
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, .28);
    box-sizing: border-box;
    color: var(--kvt-abyss-black);
    display: none;
    left: 0;
    padding: .7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

#blazor-error-ui .dismiss {
    cursor: pointer;
    position: absolute;
    right: .75rem;
    top: .5rem;
}

.kavetek-loading-overlay {
    --kvt-spinner-overlay-bg: rgba(247, 250, 251, .42);
    --kvt-spinner-circle-border: var(--kvt-safety-orange);
    --kvt-spinner-shadow: 0 18px 42px rgba(16, 35, 49, .18);
    position: fixed;
    inset: 0;
    z-index: 13000;
    display: grid;
    place-items: center;
    background: var(--kvt-spinner-overlay-bg);
    backdrop-filter: blur(2px);
}

.kavetek-page-loading-overlay {
    z-index: 2147483000;
}

html[data-theme="dark"] .kavetek-loading-overlay {
    --kvt-spinner-overlay-bg: rgba(7, 20, 28, .48);
    --kvt-spinner-circle-border: var(--kvt-safety-orange);
    --kvt-spinner-shadow: 0 18px 46px rgba(0, 0, 0, .34);
}

.kavetek-loading-state {
    --kvt-spinner-circle-border: var(--kvt-safety-orange);
    --kvt-spinner-shadow: 0 14px 34px rgba(16, 35, 49, .16);
    display: grid;
    align-content: center;
    justify-items: center;
    gap: 12px;
    min-height: 96px;
    padding: 18px;
    color: var(--kvt-text-muted);
}

html[data-theme="dark"] .kavetek-loading-state {
    --kvt-spinner-shadow: 0 16px 38px rgba(0, 0, 0, .28);
}

.kavetek-loading-state .kavetek-spinner {
    --kvt-spinner-size: clamp(76px, 12vw, 96px);
    --kvt-spinner-arrow-height: clamp(17px, 2.8vw, 23px);
}

.kavetek-loading-message {
    margin: 0;
    color: var(--kvt-text-muted);
    font-size: .95rem;
    font-weight: 700;
    text-align: center;
}

.kavetek-loading-state.cave-detail-state {
    min-height: 420px;
}

.kavetek-spinner {
    --kvt-spinner-size: clamp(112px, 16vw, 132px);
    --kvt-spinner-arrow-height: clamp(24px, 3.6vw, 32px);
    position: relative;
    display: grid;
    place-items: center;
    width: var(--kvt-spinner-size);
    aspect-ratio: 1;
    border-radius: 50%;
    background: transparent;
    box-shadow: var(--kvt-spinner-shadow);
}

.kavetek-spinner-ring {
    position: absolute;
    inset: 0;
    z-index: 0;
    display: block;
    width: 100%;
    height: 100%;
    overflow: visible;
    pointer-events: none;
}

.kavetek-spinner-ring-outline {
    fill: none;
    stroke: var(--kvt-spinner-circle-border);
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width: 1.6;
}

.kavetek-spinner-orbit {
    position: absolute;
    inset: 0;
    z-index: 2;
    border-radius: inherit;
    transform-origin: 50% 50%;
    animation: kavetek-spinner-arrow-orbit 1.35s linear infinite;
}

.kavetek-spinner-arrow {
    position: absolute;
    top: calc((var(--kvt-spinner-arrow-height) / -2) + 2.5px);
    left: 50%;
    display: block;
    width: auto;
    height: var(--kvt-spinner-arrow-height);
    object-fit: contain;
    transform: translateX(-50%) rotate(90deg);
    transform-origin: 50% 50%;
}

html[data-theme="dark"] .kavetek-spinner-arrow-light-mode,
html[data-theme="light"] .kavetek-spinner-arrow-dark-mode {
    display: none;
}

@keyframes kavetek-spinner-arrow-orbit {
    to {
        transform: rotate(360deg);
    }
}

@media (prefers-reduced-motion: reduce) {
    .kavetek-spinner-orbit {
        animation-duration: 2.4s;
    }
}

.auth-link {
    text-decoration: none;
}

.user-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    max-width: 220px;
    overflow: hidden;
    border: 1px solid var(--kvt-border);
    border-radius: 999px;
    padding: 7px 12px;
    background: var(--kvt-surface);
    color: var(--kvt-text);
    appearance: none;
    -webkit-appearance: none;
    cursor: pointer;
    font-size: .84rem;
    font-weight: 700;
    font-family: inherit;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.user-menu {
    position: relative;
    z-index: 12010;
}

.user-menu.is-open {
    z-index: 12050;
}

.user-menu-panel {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    z-index: 12051;
    display: grid;
    gap: 6px;
    width: min(280px, calc(100vw - 32px));
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    padding: 10px;
    background: var(--kvt-surface);
    background-clip: padding-box;
    box-shadow: var(--kvt-shadow);
    opacity: 1;
}

html[data-theme="light"] .user-menu-panel {
    background: #ffffff;
}

html[data-theme="dark"] .user-menu-panel {
    background: var(--kvt-midnight-cave);
}

.user-menu-item,
.user-menu-field {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    min-height: 38px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--kvt-text);
    font: 700 .9rem "Inter", sans-serif;
    text-align: left;
    text-decoration: none;
}

.user-menu-item {
    padding: 0 10px;
    cursor: pointer;
}

.user-menu-item:hover,
.user-menu-item:focus-visible {
    background: var(--kvt-ui-accent-soft);
    outline: none;
}

.user-menu-item.danger {
    color: var(--kvt-danger);
}

.user-menu-field {
    justify-content: space-between;
    padding: 0 4px 0 10px;
}

.user-menu-field .language-combo {
    max-width: 150px;
}

.user-menu-separator {
    height: 1px;
    margin: 4px 0;
    background: var(--kvt-border);
}

.auth-panel {
    max-width: 480px;
}

.preference-panel {
    max-width: 920px;
}

.preference-form-grid {
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}

.preference-field {
    display: grid;
    gap: 6px;
    color: var(--kvt-text-muted);
    font-size: .82rem;
    font-weight: 700;
}

.preference-avatar-panel {
    display: grid;
    grid-template-columns: 112px minmax(0, 1fr);
    gap: 16px;
    align-items: center;
}

.preference-avatar-preview,
.social-profile-avatar {
    display: grid;
    place-items: center;
    overflow: hidden;
    border: 1px solid var(--kvt-border);
    border-radius: 50%;
    background: color-mix(in srgb, var(--kvt-ui-accent) 14%, var(--kvt-panel-bg));
    color: var(--kvt-ui-accent);
    font-weight: 900;
}

.preference-avatar-preview {
    width: 112px;
    height: 112px;
}

.preference-avatar-preview img,
.social-profile-avatar img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.preference-avatar-preview .e-icons,
.preference-avatar-preview .ti {
    font-size: 2.4rem;
}

.preference-avatar-controls {
    display: grid;
    gap: 8px;
    min-width: 0;
}

.preference-avatar-controls label {
    display: grid;
    gap: 6px;
    min-width: 0;
}

.preference-avatar-controls label > span {
    color: var(--kvt-text-muted);
    font-size: .78rem;
    font-weight: 800;
    text-transform: uppercase;
}

.preference-avatar-controls input[type="file"] {
    box-sizing: border-box;
    width: 100%;
    min-height: 36px;
    padding: 7px 8px;
    border: 1px solid var(--kvt-border);
    border-radius: 5px;
    background: var(--kvt-input-bg);
    color: var(--kvt-text);
    font-size: .82rem;
}

.preference-button-row {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    min-height: 38px;
}

.preference-theme-button {
    min-width: 112px;
}

.preference-actions {
    max-width: 920px;
}

.preference-loading {
    min-height: 96px;
    display: grid;
    place-items: center;
    color: var(--kvt-text-muted);
    font-weight: 700;
}

.preferences-tabs {
    max-width: 920px;
}

.preferences-tabs .e-tab-header {
    border-bottom-color: var(--kvt-border);
}

.preferences-tabs .e-tab-header .e-toolbar-item .e-tab-text {
    color: var(--kvt-text-muted);
    font-weight: 800;
}

.preferences-tabs .e-tab-header .e-toolbar-item.e-active .e-tab-text {
    color: var(--kvt-ui-accent);
}

.preferences-tabs .e-content {
    padding-top: 16px;
    background: transparent;
}

.preferences-tabs .e-content .e-item {
    background: transparent;
    color: var(--kvt-text);
}

.social-profile-title {
    align-items: center;
}

.social-profile-summary {
    display: grid !important;
    grid-template-columns: 72px minmax(0, 1fr);
    align-items: center !important;
    gap: 14px !important;
}

.social-profile-avatar {
    width: 72px;
    height: 72px;
    font-size: 1.25rem;
}

@media (max-width: 640px) {
    .preference-avatar-panel {
        grid-template-columns: 1fr;
    }

    .preference-avatar-preview {
        justify-self: start;
    }

    .social-profile-summary {
        grid-template-columns: 60px minmax(0, 1fr);
    }

    .social-profile-avatar {
        width: 60px;
        height: 60px;
    }
}

.admin-editor {
    margin-bottom: 18px;
}

.compact-title {
    margin-bottom: 14px;
}

.compact-title h2 {
    font-size: 22px;
}

.admin-form {
    display: grid;
    grid-template-columns: repeat(3, minmax(180px, 1fr));
    gap: 14px;
    align-items: end;
}

.admin-form.single-column {
    grid-template-columns: minmax(240px, 420px);
}

.admin-form label,
.admin-field,
.json-editor-label {
    display: grid;
    gap: 6px;
    margin: 0;
    color: var(--kvt-text-muted);
    font-size: .82rem;
    font-weight: 700;
}

.check-row {
    display: inline-grid !important;
    grid-template-columns: 22px minmax(0, auto);
    align-items: center;
    justify-self: start;
    column-gap: 5px;
    min-height: 38px;
    max-width: 100%;
    padding: 6px 0;
    border: 0;
    background: transparent;
    color: var(--kvt-text) !important;
    line-height: 1;
    cursor: pointer;
    transition: border-color .16s ease, background .16s ease, box-shadow .16s ease, color .16s ease;
}

.admin-form .cave-type-option {
    display: inline-grid;
    grid-template-columns: 22px max-content;
    align-items: center;
    column-gap: 5px;
    min-height: 32px;
    color: var(--kvt-text);
    line-height: 1;
}

.check-row:hover {
    color: var(--kvt-ui-accent) !important;
}

.check-row:has(.e-frame.e-check) {
    color: var(--kvt-ui-accent) !important;
}

.cave-type-option .e-checkbox-wrapper,
.check-row .e-checkbox-wrapper {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: center;
    flex: 0 0 auto;
    height: 22px;
    line-height: 22px;
    margin: 0 !important;
}

.cave-type-option .e-checkbox-wrapper .e-frame,
.check-row .e-checkbox-wrapper .e-frame {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    min-width: 22px;
    border: 1px solid var(--kvt-ui-accent-border) !important;
    border-radius: 6px;
    background: var(--kvt-input-bg) !important;
    box-shadow: none;
    transition: border-color .16s ease, background .16s ease, box-shadow .16s ease;
}

.admin-form.cave-proposal-form {
    box-sizing: border-box;
    width: 100%;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
    padding: 2px 4px 6px;
}

.admin-form.cave-proposal-form.cave-form-three-columns {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.admin-form.cave-proposal-form.cave-location-form {
    grid-template-rows: repeat(4, auto) minmax(320px, 1fr);
    row-gap: 10px;
    min-height: 100%;
}

.admin-form.cave-proposal-form .wide-field {
    grid-column: 1 / -1;
}

.admin-form.logbook-form {
    box-sizing: border-box;
    width: 100%;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: start;
    padding: 2px 4px 6px;
}

.admin-form.logbook-form .wide-field {
    grid-column: 1 / -1;
}

.admin-form.logbook-form label,
.admin-form.logbook-form .admin-field {
    min-width: 0;
}

.admin-form.logbook-form .e-input-group,
.admin-form.logbook-form .e-control-wrapper {
    width: 100% !important;
    max-width: none;
}

.admin-form.logbook-form textarea.e-input {
    width: 100% !important;
    min-height: 86px;
    resize: vertical;
}

.admin-form.dive-plan-form .dive-plan-disclaimer {
    align-self: end;
    min-height: 42px;
}

.dive-plan-editor-section {
    display: grid;
    gap: 12px;
    margin: 18px 4px 0;
}

.dive-plan-section-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.dive-plan-section-header h2 {
    margin: 0;
    color: var(--kvt-text);
    font-size: 1rem;
}

.dive-plan-repeat-list {
    display: grid;
    gap: 10px;
}

.dive-plan-repeat-row {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr)) auto;
    gap: 10px;
    align-items: end;
    padding: 12px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    background: color-mix(in srgb, var(--kvt-panel-bg) 90%, transparent);
}

.dive-plan-checklist-row {
    grid-template-columns: 110px minmax(140px, 1fr) minmax(180px, 1.3fr) minmax(120px, auto) minmax(130px, auto) auto;
}

.dive-plan-checklist-row .wide-field {
    grid-column: 1 / -2;
}

.dive-plan-repeat-row .grid-actions {
    align-self: end;
}

.dive-plan-sequence-field {
    min-width: 0;
}

.admin-form.logbook-share-form {
    box-sizing: border-box;
    width: 100%;
    grid-template-columns: minmax(0, 1fr) minmax(180px, auto);
    align-items: end;
    padding: 2px 4px 6px;
}

.admin-form.logbook-import-form {
    box-sizing: border-box;
    width: 100%;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: end;
    padding: 2px 4px 6px;
}

.admin-form.logbook-import-form .wide-field {
    display: grid;
    grid-column: 1 / -1;
    gap: 6px;
}

.admin-form.logbook-import-form .wide-field > span,
.admin-form.logbook-import-form .admin-field > span {
    color: var(--kvt-text);
    font-size: .82rem;
    font-weight: 800;
}

.admin-form.logbook-import-form .wide-field small {
    color: var(--kvt-text-muted);
    font-size: .78rem;
    line-height: 1.35;
}

.logbook-search-toolbar {
    display: grid;
    grid-template-columns: minmax(240px, 1.1fr) minmax(160px, 240px) auto;
    gap: 12px;
    align-items: end;
    margin-bottom: 14px;
    min-width: 0;
}

.logbook-search-field {
    display: grid;
    gap: 6px;
    margin: 0;
    color: var(--kvt-text-muted);
    font-size: .82rem;
    font-weight: 700;
    min-width: 0;
}

.logbook-search-actions {
    margin-top: 0;
}

.logbook-editor-dialog.e-dialog,
.logbook-import-dialog.e-dialog {
    max-height: min(900px, calc(100dvh - 28px)) !important;
}

.logbook-editor-dialog .e-dlg-content {
    height: min(calc(86dvh - 54px), calc(100dvh - 96px));
    overflow: hidden;
}

.logbook-editor-form-shell {
    display: grid;
    grid-template-rows: minmax(0, 1fr) auto;
    gap: 14px;
    height: 100%;
    min-height: 0;
}

.logbook-dialog-scroll {
    min-height: 0;
    overflow: auto;
    padding-right: 4px;
}

.logbook-editor-form-shell > .form-actions {
    margin-top: 0;
    border-top: 1px solid var(--kvt-border);
    padding-top: 10px;
    background: var(--kvt-panel-bg);
}

.logbook-import-dialog .e-dlg-content {
    max-height: min(780px, calc(100dvh - 96px));
    overflow-y: auto;
    overscroll-behavior: contain;
}

.logbook-import-file-list,
.logbook-import-preview,
.logbook-import-result {
    margin-top: 16px;
}

.logbook-import-file-list {
    display: grid;
    gap: 8px;
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    padding: 10px 12px;
    background: color-mix(in srgb, var(--kvt-panel-bg) 88%, transparent);
}

.logbook-import-file-list strong,
.logbook-import-preview h3,
.logbook-import-result h3 {
    margin: 0;
    color: var(--kvt-text);
    font-size: .95rem;
    font-weight: 850;
}

.logbook-import-file-list ul {
    display: grid;
    gap: 6px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.logbook-import-file-list li {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    min-width: 0;
    border-top: 1px solid color-mix(in srgb, var(--kvt-border) 62%, transparent);
    padding-top: 6px;
    color: var(--kvt-text);
    font-size: .84rem;
}

.logbook-import-file-list li span:first-child {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.logbook-import-file-list li span:last-child {
    flex: 0 0 auto;
    color: var(--kvt-text-muted);
    font-weight: 700;
}

.logbook-import-preview,
.logbook-import-result {
    display: grid;
    gap: 10px;
}

.logbook-import-actions {
    margin-top: 24px;
    padding-top: 8px;
}

.logbook-import-preview p,
.logbook-import-result p {
    margin: 0;
    color: var(--kvt-text-muted);
    font-size: .88rem;
    font-weight: 700;
}

.logbook-import-cave-cell {
    display: grid;
    gap: 5px;
    min-width: 0;
}

.logbook-import-cave-picker {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 32px;
    gap: 6px;
    align-items: center;
    min-width: 0;
}

.logbook-import-clear-cave.e-btn {
    width: 32px;
    min-width: 32px;
    height: 32px;
    padding: 0;
    color: var(--kvt-danger);
}

.logbook-import-clear-cave.e-btn .e-btn-icon {
    margin: 0;
}

.logbook-import-cave-cell small,
.logbook-import-muted {
    color: var(--kvt-text-muted);
    font-size: .76rem;
    font-weight: 700;
    line-height: 1.25;
}

.logbook-import-status {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    border: 1px solid var(--kvt-border);
    border-radius: 999px;
    padding: 2px 9px;
    font-size: .76rem;
    font-weight: 850;
    line-height: 1.2;
    white-space: nowrap;
}

.logbook-import-status-ready {
    border-color: color-mix(in srgb, var(--kvt-info) 44%, var(--kvt-border));
    background: var(--kvt-info-soft);
    color: var(--kvt-info);
}

.logbook-import-status-imported {
    border-color: color-mix(in srgb, #23a36f 48%, var(--kvt-border));
    background: var(--kvt-success-soft);
    color: #1f6f4e;
}

.logbook-import-status-skipped {
    border-color: color-mix(in srgb, #9c6c00 40%, var(--kvt-border));
    background: var(--kvt-warning-soft);
    color: #73520a;
}

.logbook-import-status-failed {
    border-color: color-mix(in srgb, var(--kvt-danger) 44%, var(--kvt-border));
    background: var(--kvt-danger-soft);
    color: var(--kvt-danger);
}

.logbook-share-write {
    min-height: 42px;
    align-items: center;
    padding-bottom: 4px;
}

.logbook-share-list {
    margin-top: 18px;
}

.logbook-access-pill {
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    border: 1px solid color-mix(in srgb, var(--kvt-border) 72%, transparent);
    border-radius: 999px;
    padding: 3px 10px;
    background: color-mix(in srgb, var(--kvt-info-soft) 58%, var(--kvt-panel));
    color: var(--kvt-text);
    font-size: .78rem;
    font-weight: 800;
    line-height: 1.2;
    white-space: nowrap;
}

.logbook-grid-actions {
    justify-content: center;
    gap: 6px;
    flex-wrap: nowrap;
}

.logbook-icon-action.e-btn,
.logbook-icon-action.e-css.e-btn {
    width: 32px;
    min-width: 32px;
    height: 32px;
    padding: 0;
}

.logbook-icon-action.e-btn .e-btn-icon,
.logbook-icon-action.e-css.e-btn .e-btn-icon {
    margin: 0;
    font-size: .92rem;
}

.logbook-tank-section {
    display: grid;
    gap: 10px;
    margin-top: 4px;
}

.logbook-tank-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-width: 0;
    color: var(--kvt-text);
    font-size: .9rem;
    font-weight: 850;
}

.logbook-tank-list {
    display: grid;
    gap: 10px;
    min-width: 0;
}

.logbook-tank-row {
    display: grid;
    grid-template-columns: minmax(76px, .65fr) minmax(92px, .55fr) repeat(2, minmax(136px, 1fr)) repeat(2, minmax(96px, .75fr)) auto;
    gap: 10px;
    align-items: end;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    padding: 10px;
    background: color-mix(in srgb, var(--kvt-panel-bg) 88%, transparent);
}

.logbook-tank-row .admin-field {
    min-width: 0;
}

.logbook-tank-pressure-field,
.logbook-tank-gas-field {
    min-width: 96px;
}

.logbook-cylinder-dropdown .e-input,
.logbook-cylinder-dropdown.e-input-group input.e-input,
.logbook-cylinder-dropdown .e-input-value {
    font-weight: 800;
}

.logbook-cylinder-dropdown.e-ddl.e-input-group,
.logbook-cylinder-dropdown.e-ddl.e-control-wrapper {
    align-items: center;
    min-height: 38px;
}

.logbook-cylinder-dropdown .e-input,
.logbook-cylinder-dropdown.e-input-group input.e-input {
    min-height: 38px;
    line-height: 38px;
}

.logbook-cylinder-dropdown .e-input-value {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding-top: 0;
    padding-bottom: 0;
    line-height: 1;
}

.preference-cylinder-field {
    width: 128px;
    max-width: 128px;
}

.logbook-tank-remove {
    align-self: end;
}

.logbook-grid-editor {
    width: 100%;
}

.logbook-sac-field {
    display: grid;
    min-height: 96px;
    align-self: stretch;
    align-content: center;
    justify-content: center;
    justify-items: center;
    gap: 8px;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    padding: 16px 18px;
    background: color-mix(in srgb, var(--kvt-info-soft) 52%, transparent);
    text-align: center;
}

.logbook-sac-field span {
    color: var(--kvt-muted);
    font-size: 1.08rem;
    font-weight: 850;
    letter-spacing: 0;
}

.logbook-sac-field strong {
    color: var(--kvt-text);
    font-size: 1.7rem;
    font-weight: 850;
    line-height: 1.1;
}

.logbook-report-dialog.e-dialog {
    max-width: min(620px, calc(100vw - 28px)) !important;
}

.logbook-report-dialog .e-dlg-content {
    max-height: min(640px, calc(100dvh - 96px));
    overflow-y: auto;
}

.logbook-report-form-shell {
    display: grid;
    gap: 14px;
}

.admin-form.logbook-report-form {
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
}

.logbook-report-form label {
    min-width: 0;
}

.logbook-report-form .admin-native-input {
    box-sizing: border-box;
    width: 100%;
}

.logbook-report-form .admin-native-textarea {
    min-height: 160px;
    resize: vertical;
}

.logbook-report-dialog .form-actions {
    margin-top: 0;
    border-top: 1px solid var(--kvt-border);
    padding-top: 10px;
}

.admin-user-report-dialog.e-dialog,
.social-user-report-dialog.e-dialog,
.provider-report-dialog.e-dialog,
.cave-content-report-dialog.e-dialog {
    max-width: min(620px, calc(100vw - 28px)) !important;
}

.admin-user-report-dialog .e-dlg-content,
.social-user-report-dialog .e-dlg-content,
.provider-report-dialog .e-dlg-content,
.cave-content-report-dialog .e-dlg-content {
    max-height: min(640px, calc(100dvh - 96px));
    overflow-y: auto;
}

.admin-user-report-dialog .admin-form,
.social-user-report-dialog .admin-form,
.provider-report-dialog .admin-form,
.cave-content-report-dialog .admin-form {
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
}

.admin-user-report-dialog label,
.social-user-report-dialog label,
.provider-report-dialog label,
.cave-content-report-dialog label {
    min-width: 0;
}

.admin-user-report-dialog .admin-native-input,
.social-user-report-dialog .admin-native-input,
.provider-report-dialog .admin-native-input,
.cave-content-report-dialog .admin-native-input {
    box-sizing: border-box;
    width: 100%;
}

.admin-user-report-dialog .admin-native-textarea,
.social-user-report-dialog .admin-native-textarea,
.provider-report-dialog .admin-native-textarea,
.cave-content-report-dialog .admin-native-textarea {
    min-height: 160px;
    resize: vertical;
}

.logbook-editor-dialog .validation-summary-errors {
    margin-bottom: 14px;
    border: 1px solid rgba(217, 83, 79, .36);
    border-radius: var(--kvt-radius);
    padding: 10px 12px;
    background: var(--kvt-danger-soft);
    color: var(--kvt-danger);
    font-size: .88rem;
    font-weight: 700;
}

.logbook-editor-dialog .validation-message {
    color: var(--kvt-danger);
    font-size: .78rem;
    font-weight: 700;
}

.dialog-message,
.empty-state {
    margin: 0;
    color: var(--kvt-text-muted);
    font-size: .95rem;
    font-weight: 700;
}

.empty-state {
    padding: 22px 4px;
    text-align: center;
}

.cave-location-map-field {
    display: grid;
    gap: 6px;
    min-width: 0;
}

.cave-location-map {
    position: relative;
    width: 100%;
    min-width: 0;
}

.admin-form.cave-proposal-form.cave-location-form .cave-location-map-field,
.admin-form.cave-proposal-form.cave-location-form .cave-location-map {
    align-self: stretch;
    height: 100%;
    min-height: 0;
}

.cave-location-map-canvas,
.cave-location-map-placeholder {
    box-sizing: border-box;
    width: 100%;
    height: clamp(180px, 24vh, 300px);
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    overflow: hidden;
    background: var(--kvt-input-bg);
}

.admin-form.cave-proposal-form.cave-location-form .cave-location-map-canvas,
.admin-form.cave-proposal-form.cave-location-form .cave-location-map-placeholder {
    height: 100%;
    min-height: 260px;
    max-height: none;
}

.cave-location-map-placeholder {
    display: grid;
    place-items: center;
    padding: 18px;
    color: var(--kvt-text-muted);
    font-weight: 800;
    text-align: center;
}

.cave-map-zoom-control {
    position: absolute;
    top: 50%;
    right: 10px;
    z-index: 4;
    display: grid;
    margin: 0;
    overflow: hidden;
    border: 1px solid rgba(30, 52, 68, .28);
    border-radius: 4px;
    background: #ffffff;
    box-shadow: 0 1px 4px rgba(16, 35, 49, .25);
    transform: translateY(-50%);
}

.cave-map-zoom-button {
    width: 40px;
    height: 40px;
    border: 0;
    border-bottom: 1px solid rgba(30, 52, 68, .18);
    padding: 0;
    background: #ffffff;
    color: #1f3444;
    font-size: 1.45rem;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
}

.cave-map-zoom-button:last-child {
    border-bottom: 0;
}

.cave-map-zoom-button:hover,
.cave-map-zoom-button:focus {
    background: #f4f7f8;
    outline: none;
}

.cave-two-field-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    min-width: 0;
}

.cave-three-field-row {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    min-width: 0;
}

.cave-check-row-group {
    display: grid;
    grid-column: span 2;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    align-self: end;
    min-width: 0;
}

.admin-form .check-row {
    align-self: end;
}

.admin-form.single-column.cave-description-form {
    box-sizing: border-box;
    width: 100%;
    grid-template-columns: minmax(0, 1fr);
    padding: 2px 4px 6px;
}

.admin-form.cave-proposal-form label,
.admin-form.cave-proposal-form .admin-field,
.admin-form.cave-proposal-form .cave-two-field-row,
.admin-form.cave-proposal-form .cave-three-field-row,
.admin-form.cave-proposal-form .cave-check-row-group,
.admin-form.single-column.cave-description-form label,
.admin-form.single-column.cave-description-form .admin-field {
    min-width: 0;
}

.admin-form.cave-proposal-form .e-input-group,
.admin-form.cave-proposal-form .e-control-wrapper,
.admin-form.single-column.cave-description-form .e-input-group,
.admin-form.single-column.cave-description-form .e-control-wrapper {
    width: 100% !important;
    max-width: none;
}

.admin-form.cave-proposal-form textarea.e-input,
.admin-form.single-column.cave-description-form textarea.e-input {
    width: 100% !important;
    min-height: 92px;
    resize: vertical;
}

.cave-type-option .e-checkbox-wrapper:hover .e-frame,
.check-row .e-checkbox-wrapper:hover .e-frame {
    border-color: var(--kvt-ui-accent) !important;
    box-shadow: none;
}

.cave-type-option .e-checkbox-wrapper.e-focus .e-frame,
.check-row .e-checkbox-wrapper.e-focus .e-frame {
    border-color: var(--kvt-focus-ring) !important;
    outline: 1px solid var(--kvt-focus-ring);
    outline-offset: 2px;
    box-shadow: none;
}

.cave-type-option .e-checkbox-wrapper .e-frame.e-check,
.check-row .e-checkbox-wrapper .e-frame.e-check {
    border-color: var(--kvt-ui-accent) !important;
    background: var(--kvt-ui-accent) !important;
    color: var(--kvt-checkbox-check-color) !important;
    box-shadow: none;
}

.cave-type-option .e-checkbox-wrapper .e-frame.e-check::before,
.check-row .e-checkbox-wrapper .e-frame.e-check::before {
    color: var(--kvt-checkbox-check-color) !important;
    font-size: 13px;
    line-height: 22px;
}

.cave-type-option > span:last-child,
.check-row > span:last-child {
    display: inline-flex;
    align-items: center;
    align-self: center;
    min-height: 22px;
    min-width: 0;
    overflow-wrap: anywhere;
    line-height: 22px;
    transform: translateY(-2.5px);
}

.choice-list {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 10px;
    margin-top: 16px;
}

.choice-item {
    display: flex;
    gap: 8px;
    align-items: flex-start;
    min-height: 38px;
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    padding: 8px 10px;
    background: var(--kvt-surface);
    color: var(--kvt-text);
    font-weight: 700;
}

.choice-item small {
    display: block;
    margin-top: 2px;
    color: var(--kvt-text-muted);
    font-weight: 500;
}

.permission-list {
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

.form-actions,
.grid-actions {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.form-actions {
    margin-top: 16px;
    justify-content: flex-end;
}

.state-message {
    padding: 18px;
    color: var(--kvt-text-muted);
    font-weight: 700;
}

.state-message-error {
    color: var(--kvt-danger);
}

.provider-filter-grid {
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    align-items: end;
}

.provider-filter-panel {
    display: grid;
    gap: 14px;
}

.provider-filter-panel.is-collapsed {
    gap: 0;
}

.provider-filter-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    min-width: 0;
}

.filter-panel-heading {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1 1 auto;
    flex-wrap: wrap;
    min-width: 0;
}

.filter-panel-heading h2 {
    margin: 0;
    color: var(--kvt-text);
    font-size: 1rem;
    font-weight: 900;
}

.filter-summary-chips {
    display: flex;
    align-items: center;
    gap: 6px;
    flex: 1 1 auto;
    flex-wrap: wrap;
    min-width: 0;
}

.filter-summary-chips span {
    max-width: min(240px, 100%);
    overflow: hidden;
    border: 1px solid var(--kvt-border);
    border-radius: 999px;
    padding: 3px 8px;
    background: var(--kvt-panel-muted);
    color: var(--kvt-text-muted);
    font-size: .72rem;
    font-weight: 800;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.provider-filter-toggle.e-btn {
    flex: 0 0 auto;
}

.provider-filter-actions {
    grid-column: 1 / -1;
    justify-self: end;
    margin-top: 0;
}

.provider-readonly-panel {
    color: var(--kvt-text-muted);
    font-size: .92rem;
    font-weight: 700;
}

.provider-name-button {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    min-width: 0;
    border: 0;
    padding: 0;
    background: transparent;
    color: var(--kvt-text);
    font: inherit;
    font-weight: 800;
    text-align: left;
    cursor: pointer;
}

.provider-name-button span:last-child {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.provider-grid-logo {
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    border-radius: 6px;
    box-sizing: border-box;
    object-fit: contain;
    padding: 3px;
    border: 1px solid var(--kvt-border);
    background: var(--kvt-cave-white);
}

.provider-grid-logo-empty {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    background: var(--kvt-panel-muted);
    color: var(--kvt-text-muted);
    font-size: .78rem;
    font-weight: 900;
}

.provider-editor-grid {
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

.provider-editor-dialog .e-dlg-content,
.provider-detail-dialog .e-dlg-content {
    max-height: min(78vh, 760px);
    overflow-y: auto;
    overscroll-behavior: contain;
    padding-right: 18px;
}

.provider-editor-description {
    grid-column: 1 / -1;
}

.provider-logo-editor {
    display: grid;
    gap: 8px;
}

.provider-logo-editor-body {
    display: grid;
    grid-template-columns: 104px minmax(0, 1fr);
    gap: 14px;
    align-items: center;
}

.provider-logo-preview {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 104px;
    height: 104px;
    border: 1px dashed var(--kvt-border);
    border-radius: 8px;
    overflow: hidden;
    background: var(--kvt-panel-muted);
    color: var(--kvt-text-muted);
    font-size: .82rem;
    font-weight: 800;
    text-align: center;
}

.provider-logo-preview img {
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    object-fit: contain;
    padding: 6px;
    background: var(--kvt-cave-white);
}

.provider-logo-actions {
    display: grid;
    gap: 8px;
    min-width: 0;
}

.provider-logo-actions > span {
    color: var(--kvt-text-muted);
    font-size: .82rem;
    font-weight: 800;
}

.provider-agency-section,
.provider-user-section {
    display: grid;
    gap: 14px;
    margin-top: 22px;
    border-top: 1px solid var(--kvt-border);
    padding-top: 18px;
}

.provider-agency-header,
.provider-agency-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-width: 0;
}

.provider-agency-header h2 {
    margin: 0;
    color: var(--kvt-text);
    font-size: 1rem;
    font-weight: 800;
}

.provider-agency-list {
    display: grid;
    gap: 8px;
}

.provider-agency-row {
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    padding: 10px 12px;
    background: var(--kvt-panel-muted);
}

.provider-agency-logo,
.provider-agency-pill-logo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    border: 1px solid var(--kvt-border);
    border-radius: 6px;
    background: var(--kvt-cave-white);
    color: var(--kvt-abyss-outline);
    font-weight: 900;
    overflow: hidden;
}

.provider-agency-logo {
    width: 64px;
    height: 42px;
    padding: 4px;
    font-size: .72rem;
}

.provider-agency-logo img,
.provider-agency-pill-logo img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.provider-agency-logo.agency-cmas,
.provider-agency-logo.agency-naui,
.provider-agency-logo.agency-raid,
.provider-agency-pill-logo.agency-cmas,
.provider-agency-pill-logo.agency-naui,
.provider-agency-pill-logo.agency-raid {
    background: var(--kvt-abyss-outline);
}

.provider-agency-logo.agency-nss-cds img,
.provider-agency-pill-logo.agency-nss-cds img {
    filter: contrast(1.18);
}

.provider-agency-main {
    display: grid;
    gap: 3px;
    flex: 1 1 auto;
    min-width: 0;
}

.provider-agency-main strong,
.provider-agency-main span {
    overflow-wrap: anywhere;
}

.provider-agency-main span {
    color: var(--kvt-text-muted);
    font-size: .84rem;
    font-weight: 700;
}

.admin-form.provider-agency-form,
.admin-form.provider-user-form {
    grid-template-columns: minmax(180px, 1fr) minmax(180px, 1fr) minmax(140px, auto) minmax(110px, auto);
    align-items: end;
}

.provider-agency-primary {
    min-height: 42px;
    align-items: center;
    padding-bottom: 4px;
}

.provider-grid-empty {
    color: var(--kvt-text-muted);
}

.provider-row-actions {
    gap: 6px;
    flex-wrap: nowrap;
}

.provider-row-actions .e-btn.e-small {
    width: 30px;
    height: 30px;
    min-width: 30px;
    border: 1px solid var(--kvt-border);
    background: color-mix(in srgb, var(--kvt-panel-muted) 86%, var(--kvt-ui-accent) 14%);
    color: var(--kvt-text);
    padding: 0;
}

.provider-row-actions .e-btn.e-small:hover,
.provider-row-actions .e-btn.e-small:focus {
    border-color: var(--kvt-ui-accent);
    background: color-mix(in srgb, var(--kvt-panel-muted) 74%, var(--kvt-ui-accent) 26%);
}

.provider-row-actions .e-btn.e-small .e-btn-icon {
    color: var(--kvt-text) !important;
    opacity: .95;
}

.provider-row-actions .provider-contact-action-button .e-btn-icon {
    color: #2dd4bf !important;
}

.provider-row-actions .provider-contact-action-button.e-btn:focus,
.provider-row-actions .provider-contact-action-button.e-btn.e-active {
    border-color: var(--kvt-border);
    background: color-mix(in srgb, var(--kvt-panel-muted) 86%, var(--kvt-ui-accent) 14%);
    box-shadow: none;
}

.provider-country-flag {
    display: inline-grid;
    min-width: 36px;
    height: 28px;
    place-items: center;
    border: 1px solid var(--kvt-border);
    border-radius: 6px;
    background: var(--kvt-panel-muted);
    font-size: 1.16rem;
    line-height: 1;
}

.provider-rating-option,
.provider-google-rating-cell {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-width: 0;
}

.provider-rating-option {
    justify-content: center;
    width: 100%;
    color: var(--kvt-text);
    font-size: .82rem;
    font-weight: 800;
}

.provider-rating-option-value {
    justify-content: flex-start;
    max-width: 100%;
}

.provider-rating-cookies {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    flex: 0 0 auto;
}

.provider-rating-cookie {
    position: relative;
    display: inline-block;
    width: 16px;
    height: 16px;
    flex: 0 0 16px;
    overflow: hidden;
}

.provider-rating-cookie img {
    display: block;
    width: 16px;
    height: 16px;
    object-fit: contain;
}

.provider-rating-cookie.is-muted .provider-rating-cookie-base,
.provider-rating-cookie.is-partial .provider-rating-cookie-base {
    opacity: .24;
    filter: grayscale(1);
}

.provider-rating-cookie.is-active .provider-rating-cookie-base {
    opacity: 1;
    filter: none;
}

.provider-rating-cookie-fill {
    position: absolute;
    inset: 0 auto 0 0;
    width: var(--provider-cookie-fill, 0%);
    overflow: hidden;
}

.provider-rating-cookie-fill img {
    max-width: none;
    opacity: 1;
    filter: none;
}

.provider-google-rating-cell {
    max-width: 100%;
    border: 0;
    padding: 0;
    background: transparent;
    color: var(--kvt-text);
    font: inherit;
    font-size: .82rem;
    font-weight: 900;
    cursor: pointer;
}

.provider-google-rating-cell-static {
    cursor: default;
}

.provider-rating-loading {
    color: var(--kvt-text-muted);
    font-size: .78rem;
    font-weight: 900;
}

.provider-contact-actions {
    display: grid;
    gap: 8px;
}

.provider-contact-actions {
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}

.e-dlg-container:has(.provider-contact-dialog.e-dialog),
.provider-contact-dialog.e-dialog {
    z-index: 13020 !important;
}

.provider-detail-dialog .e-btn.e-dlg-closeicon-btn,
.provider-detail-dialog .e-btn.e-dlg-closeicon-btn:hover,
.provider-detail-dialog .e-btn.e-dlg-closeicon-btn:focus {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px !important;
    height: 32px !important;
    min-width: 32px;
    min-height: 32px;
    border: 1px solid var(--kvt-border);
    border-radius: 6px;
    padding: 0 !important;
    background: var(--kvt-panel-muted);
    color: var(--kvt-text);
    line-height: 1;
    opacity: 1;
}

.provider-detail-dialog .e-btn.e-dlg-closeicon-btn .e-btn-icon.e-icon-dlg-close {
    position: static;
    margin: 0;
    color: var(--kvt-text);
    line-height: 1;
}

.provider-contact-dialog .e-dlg-content {
    max-height: min(640px, calc(100dvh - 96px));
    overflow-y: auto;
}

.provider-contact-dialog-list {
    grid-template-columns: minmax(0, 1fr);
}

.provider-contact-modal-backdrop {
    position: fixed;
    inset: 0;
    z-index: 14000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(15, 23, 42, .58);
}

.provider-contact-modal {
    position: relative;
    display: grid;
    gap: 16px;
    width: min(520px, calc(100vw - 32px));
    max-height: min(640px, calc(100dvh - 32px));
    overflow-y: auto;
    border: 1px solid var(--kvt-border);
    border-radius: 10px;
    padding: 16px 18px 20px;
    background: var(--kvt-panel-bg);
    color: var(--kvt-text);
    box-shadow: 0 24px 60px rgba(0, 0, 0, .28);
}

.provider-contact-modal-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.provider-contact-modal-title {
    min-width: 0;
    margin: 0;
    overflow: hidden;
    color: var(--kvt-text);
    font-size: 1rem;
    font-weight: 900;
    line-height: 1.25;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.provider-contact-modal-close {
    display: inline-grid;
    width: 34px;
    height: 34px;
    min-width: 34px;
    place-items: center;
    border: 0;
    border-radius: 999px;
    padding: 0;
    background: transparent;
    color: var(--kvt-text);
    cursor: pointer;
    font-size: 20px;
    line-height: 1;
}

.provider-contact-modal-close:hover,
.provider-contact-modal-close:focus {
    background: color-mix(in srgb, var(--kvt-ui-accent) 12%, transparent);
    color: var(--kvt-text);
    outline: none;
}

.provider-contact-dialog-profile {
    display: grid;
    gap: 14px;
    justify-items: center;
    padding: 8px 0 4px;
}

.provider-contact-dialog-logo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 132px;
    height: 132px;
    border: 1px solid var(--kvt-border);
    border-radius: 10px;
    overflow: hidden;
    background: var(--kvt-panel-muted);
    color: var(--kvt-text-muted);
    font-size: 2.4rem;
    font-weight: 900;
}

.provider-contact-dialog-logo img {
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    object-fit: contain;
    padding: 10px;
    background: var(--kvt-cave-white);
}

.provider-contact-icon-row {
    display: flex;
    align-items: center;
    gap: 10px;
}

.provider-contact-dialog-icons {
    flex-wrap: nowrap;
    justify-content: center;
}

.provider-detail-contact-icons {
    flex-wrap: wrap;
    justify-content: flex-end;
}

.provider-contact-icon-button {
    display: inline-grid;
    width: 38px;
    height: 38px;
    min-width: 38px;
    place-items: center;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--kvt-text);
    font-size: 22px;
    line-height: 1;
    text-decoration: none;
}

.provider-contact-icon-button:hover {
    background: color-mix(in srgb, var(--kvt-ui-accent) 12%, transparent);
    color: var(--kvt-text);
    text-decoration: none;
}

.provider-contact-icon-button:focus {
    background: transparent;
    color: var(--kvt-text);
    outline: none;
    text-decoration: none;
}

.provider-contact-icon-button.is-disabled {
    color: var(--kvt-text-muted);
    cursor: default;
    filter: grayscale(1);
    opacity: .36;
    pointer-events: none;
}

.provider-contact-icon-button.provider-contact-email {
    color: #2563eb;
}

.provider-contact-icon-button.provider-contact-phone {
    color: #0f766e;
}

.provider-contact-icon-button.provider-contact-whatsapp {
    color: #16a34a;
}

.provider-contact-icon-button.provider-contact-website {
    color: #0891b2;
}

.provider-contact-link {
    position: relative;
    display: grid;
    gap: 3px;
    min-width: 0;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    padding: 10px 12px;
    background: var(--kvt-panel-muted);
    color: var(--kvt-text);
    text-decoration: none;
}

.provider-contact-actions .provider-contact-link {
    min-height: 74px;
    padding-right: 44px;
}

.provider-contact-card-icon {
    position: absolute;
    top: 12px;
    right: 12px;
    display: inline-grid;
    width: 30px;
    height: 30px;
    place-items: center;
    border: 1px solid var(--kvt-border);
    border-radius: 999px;
    background: color-mix(in srgb, var(--kvt-ui-accent) 10%, transparent);
    font-size: 16px;
    line-height: 1;
}

.provider-contact-card-icon::before {
    line-height: 1;
}

.provider-contact-email .provider-contact-card-icon {
    color: #2563eb;
    background: rgba(37, 99, 235, .1);
}

.provider-contact-phone .provider-contact-card-icon {
    color: #0f766e;
    background: rgba(15, 118, 110, .1);
}

.provider-contact-whatsapp .provider-contact-card-icon {
    color: #16a34a;
    background: rgba(22, 163, 74, .1);
}

.provider-contact-website .provider-contact-card-icon {
    color: #7c3aed;
    background: rgba(124, 58, 237, .1);
}

.provider-contact-link:hover,
.provider-contact-link:focus {
    border-color: var(--kvt-ui-accent);
    color: var(--kvt-text);
    text-decoration: none;
}

.provider-contact-link span {
    color: var(--kvt-text-muted);
    font-size: .72rem;
    font-weight: 900;
    text-transform: uppercase;
}

.provider-contact-link .provider-contact-card-icon {
    color: var(--kvt-ui-accent);
    font-size: 16px;
    font-weight: 400;
    text-transform: none;
}

.provider-contact-link strong {
    min-width: 0;
    overflow-wrap: anywhere;
    color: var(--kvt-text);
    font-size: .88rem;
    font-weight: 800;
}

.provider-contact-actions-compact {
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}

.provider-contact-actions-compact .provider-contact-link {
    grid-template-columns: 34px minmax(0, 1fr);
    column-gap: 10px;
    row-gap: 2px;
    align-items: center;
    min-height: 0;
    padding: 8px 10px;
}

.provider-contact-actions-compact .provider-contact-card-icon {
    position: static;
    grid-row: 1 / span 2;
    width: 32px;
    height: 32px;
    border-radius: 8px;
}

.provider-contact-actions-compact .provider-contact-link > span:not(.provider-contact-card-icon),
.provider-contact-actions-compact .provider-contact-link strong {
    min-width: 0;
}

.provider-detail-layout {
    display: grid;
    gap: 20px;
}

.provider-detail-hero,
.provider-detail-header {
    display: grid;
    grid-template-columns: 112px minmax(0, 1fr);
    gap: 16px;
    align-items: center;
}

.provider-detail-hero {
    grid-template-columns: 112px minmax(0, 1fr) auto;
    align-items: start;
}

.provider-detail-side {
    display: grid;
    gap: 10px;
    justify-self: end;
    justify-items: end;
    min-width: 0;
}

.provider-detail-logo {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 112px;
    height: 112px;
    border-radius: 8px;
    border: 1px solid var(--kvt-border);
    overflow: hidden;
    background: var(--kvt-panel-muted);
    color: var(--kvt-text-muted);
    font-size: 2rem;
    font-weight: 900;
}

.provider-detail-logo img {
    width: 100%;
    height: 100%;
    box-sizing: border-box;
    object-fit: contain;
    padding: 8px;
    background: var(--kvt-cave-white);
}

.provider-detail-title {
    display: grid;
    gap: 6px;
    min-width: 0;
    justify-items: start;
}

.provider-detail-title h2 {
    margin: 0;
    color: var(--kvt-text);
    font-size: 1.28rem;
    font-weight: 900;
    overflow-wrap: anywhere;
}

.provider-detail-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.provider-detail-badges span {
    border: 1px solid var(--kvt-border);
    border-radius: 999px;
    padding: 4px 8px;
    background: var(--kvt-panel-muted);
    color: var(--kvt-text-muted);
    font-size: .78rem;
    font-weight: 800;
}

.provider-detail-google-rating {
    display: grid;
    gap: 4px;
    justify-self: end;
    align-self: start;
    justify-items: end;
    border: 1px solid var(--kvt-border);
    border-radius: 8px;
    padding: 8px 10px;
    background: var(--kvt-panel-muted);
    color: var(--kvt-text);
    white-space: nowrap;
}

.provider-detail-google-rating-summary {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-width: 0;
}

.provider-detail-google-rating .provider-rating-cookie {
    width: 18px;
    height: 18px;
    flex-basis: 18px;
}

.provider-detail-google-rating .provider-rating-cookie img {
    width: 18px;
    height: 18px;
}

.provider-detail-google-rating strong {
    font-size: .94rem;
    font-weight: 900;
}

.provider-detail-google-rating .provider-google-review-count,
.provider-detail-google-rating .provider-leave-review-link {
    color: var(--kvt-ui-accent);
    font-size: .82rem;
    font-weight: 900;
    text-decoration: none;
}

.provider-detail-google-rating a:hover,
.provider-detail-google-rating a:focus {
    text-decoration: underline;
}

.provider-detail-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px;
}

.provider-detail-grid > div {
    display: grid;
    gap: 4px;
    min-width: 0;
}

.provider-detail-grid span,
.provider-detail-section h3 {
    color: var(--kvt-text-muted);
    font-size: .78rem;
    font-weight: 800;
    text-transform: uppercase;
}

.provider-detail-grid strong,
.provider-detail-section p {
    margin: 0;
    color: var(--kvt-text);
    overflow-wrap: anywhere;
}

.provider-detail-section {
    display: grid;
    gap: 8px;
    min-width: 0;
    border-top: 1px solid var(--kvt-border);
    padding-top: 14px;
}

.provider-detail-section h3 {
    margin: 0;
}

.provider-detail-map-box {
    height: 240px;
    margin-top: 0;
}

.cave-location-map-marker {
    cursor: grab;
}

.cave-location-map-marker:active {
    cursor: grabbing;
}

.provider-detail-pill-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.provider-agency-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    max-width: 100%;
    min-height: 34px;
    border: 1px solid var(--kvt-border);
    border-radius: 999px;
    padding: 4px 10px 4px 5px;
    background: var(--kvt-panel-muted);
    color: var(--kvt-text);
    font-size: .82rem;
    font-weight: 800;
}

.provider-agency-pill > span:last-child {
    min-width: 0;
    overflow-wrap: anywhere;
}

.provider-agency-pill-logo {
    width: 42px;
    height: 26px;
    padding: 3px;
    font-size: .58rem;
}

.provider-agency-logo-strip {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    justify-content: center;
    gap: 16px 20px;
    padding: 4px 0;
}

.provider-agency-logo-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 128px;
    height: 82px;
    box-sizing: border-box;
    border: 0;
    border-radius: 8px;
    padding: 10px;
    background: var(--kvt-cave-white);
    color: var(--kvt-abyss-outline);
    font-size: .72rem;
    font-weight: 900;
    line-height: 1;
    overflow: hidden;
    text-decoration: none;
}

.provider-agency-logo-button.agency-cdaa,
.provider-agency-logo-button.agency-iantd,
.provider-agency-logo-button.agency-nss-cds,
.provider-agency-logo-button.agency-padi,
.provider-agency-logo-button.agency-psai {
    width: 86px;
}

.provider-agency-logo-button.agency-psai {
    background: #272322;
}

.provider-agency-logo-button.agency-padi,
.provider-agency-logo-button.agency-psai {
    padding: 0;
    background: transparent;
}

.provider-agency-logo-button.agency-psai {
    width: 104px;
    height: 96px;
}

.provider-agency-logo-button.agency-cmas,
.provider-agency-logo-button.agency-naui,
.provider-agency-logo-button.agency-raid {
    background: var(--kvt-abyss-outline);
}

.provider-agency-logo-button.agency-tdi,
.provider-agency-logo-button.agency-sdi {
    width: 142px;
    padding: 6px;
}

.provider-agency-logo-button.agency-gue,
.provider-agency-logo-button.agency-cmas,
.provider-agency-logo-button.agency-naui,
.provider-agency-logo-button.agency-raid {
    width: 156px;
    padding: 6px;
}

.provider-agency-logo-button.agency-cdaa,
.provider-agency-logo-button.agency-iantd,
.provider-agency-logo-button.agency-nss-cds {
    width: 90px;
    padding: 4px;
}

.provider-agency-logo-button.agency-nss-cds img {
    filter: contrast(1.18);
}

.provider-agency-logo-button img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.provider-agency-logo-button:not(.is-static):hover,
.provider-agency-logo-button:not(.is-static):focus {
    box-shadow: none;
    color: var(--kvt-abyss-outline);
    filter: drop-shadow(0 4px 10px color-mix(in srgb, var(--kvt-ui-accent) 22%, transparent));
    text-decoration: none;
    transform: translateY(-1px);
}

.provider-agency-logo-button.is-primary {
    box-shadow: none;
}

.provider-agency-logo-button.is-static {
    cursor: default;
}

@media (max-width: 640px) {
    .provider-logo-editor-body,
    .provider-detail-header,
    .provider-detail-hero {
        grid-template-columns: 1fr;
    }

    .provider-detail-side {
        justify-self: stretch;
        justify-items: end;
    }

    .provider-filter-header {
        align-items: stretch;
        flex-direction: column;
    }

    .filter-panel-heading {
        align-items: flex-start;
        flex-direction: column;
    }

    .provider-filter-toggle.e-btn {
        width: 100%;
    }
}

.catalog-selector {
    grid-template-columns: minmax(260px, 1fr) minmax(220px, 360px);
}

.catalog-workbench {
    display: grid;
    gap: 14px;
    min-width: 0;
}

.catalog-toolbar {
    display: grid;
    grid-template-columns: minmax(240px, 420px) auto;
    gap: 12px;
    align-items: end;
}

.catalog-search-field {
    display: grid;
    gap: 6px;
    margin: 0;
    color: var(--kvt-text-muted);
    font-size: .82rem;
    font-weight: 700;
    min-width: 0;
}

.catalog-toolbar-actions {
    margin-top: 0;
}

.catalog-grid-action-header,
.catalog-row-actions {
    justify-content: center;
}

.catalog-row-actions {
    gap: 4px;
    flex-wrap: nowrap;
}

.catalog-icon-button.e-btn {
    width: 30px;
    min-width: 30px;
    height: 30px;
    border: 1px solid transparent;
    padding: 0;
    border-radius: 4px;
    color: var(--kvt-ui-accent);
}

.catalog-icon-button.e-btn .e-btn-icon {
    margin: 0;
    color: currentColor;
}

.catalog-icon-button.e-btn:hover,
.catalog-icon-button.e-btn:focus {
    background: var(--kvt-ui-accent);
    color: var(--kvt-cave-white);
}

.catalog-icon-button.e-btn:hover .e-btn-icon,
.catalog-icon-button.e-btn:focus .e-btn-icon,
.catalog-icon-button.e-btn:hover .e-icons,
.catalog-icon-button.e-btn:focus .e-icons,
.catalog-icon-button.e-btn:hover .ti,
.catalog-icon-button.e-btn:focus .ti {
    color: var(--kvt-cave-white) !important;
}

.catalog-icon-button-danger.e-btn {
    color: var(--kvt-danger);
}

.catalog-icon-button-danger.e-btn:hover,
.catalog-icon-button-danger.e-btn:focus {
    background: var(--kvt-danger);
    color: var(--kvt-cave-white);
}

html[data-theme="dark"] .catalog-icon-button.e-btn:hover,
html[data-theme="dark"] .catalog-icon-button.e-btn:focus {
    background: transparent;
    border-color: var(--kvt-ui-accent);
    color: var(--kvt-cave-white);
}

html[data-theme="dark"] .catalog-icon-button-danger.e-btn:hover,
html[data-theme="dark"] .catalog-icon-button-danger.e-btn:focus {
    background: transparent;
    border-color: var(--kvt-danger);
    color: var(--kvt-cave-white);
}

.catalog-boolean-value {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    min-height: 22px;
    font-size: 1rem;
    font-weight: 900;
    line-height: 1;
}

html[data-theme="light"] .e-grid .e-rowcell .catalog-boolean-true,
html[data-theme="dark"] .e-grid .e-rowcell .catalog-boolean-true,
html[data-theme="light"] .catalog-boolean-true,
html[data-theme="dark"] .catalog-boolean-true {
    color: var(--kvt-success) !important;
}

html[data-theme="light"] .e-grid .e-rowcell .catalog-boolean-false,
html[data-theme="dark"] .e-grid .e-rowcell .catalog-boolean-false,
html[data-theme="light"] .catalog-boolean-false,
html[data-theme="dark"] .catalog-boolean-false {
    color: var(--kvt-danger) !important;
}

.catalog-editor-dialog .e-dlg-content {
    background: var(--kvt-panel-bg);
    color: var(--kvt-text);
}

.catalog-editor-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
}

.catalog-editor-check-row {
    min-height: 38px;
    align-self: end;
    justify-content: flex-start;
}

.admin-select {
    min-height: 38px;
    border: 1px solid var(--kvt-border);
    border-radius: 4px;
    background: var(--kvt-input-bg);
    color: var(--kvt-text);
    font: 600 .92rem "Inter", sans-serif;
    padding: 0 10px;
}

.admin-native-input {
    min-height: 38px;
    box-sizing: border-box;
    border: 1px solid var(--kvt-border);
    border-radius: 4px;
    background: var(--kvt-input-bg);
    color: var(--kvt-text);
    font: 600 .92rem "Inter", sans-serif;
    padding: 0 10px;
}

.admin-native-textarea {
    min-height: 108px;
    padding: 10px;
    line-height: 1.45;
    resize: vertical;
}

.admin-native-input:focus-visible,
.admin-select:focus-visible,
.json-editor:focus-visible {
    border-color: var(--kvt-focus-ring);
    outline: none;
}

.catalog-meta {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin: 14px 0;
}

.catalog-meta span {
    border: 1px solid var(--kvt-border);
    border-radius: 999px;
    padding: 5px 10px;
    background: var(--kvt-ui-accent-soft);
    color: var(--kvt-text);
    font-size: .82rem;
    font-weight: 700;
    max-width: 100%;
    overflow-wrap: anywhere;
}

.catalog-meta .catalog-write-enabled {
    background: var(--kvt-success-soft);
}

.catalog-meta .catalog-write-readonly {
    background: var(--kvt-warning-soft);
}

.catalog-readonly-note {
    margin: 0 0 14px;
    border-left: 3px solid var(--kvt-ui-accent);
    padding: 8px 10px;
    background: var(--kvt-ui-accent-soft);
    color: var(--kvt-text);
    font-size: .9rem;
    font-weight: 600;
}

.catalog-print-area {
    display: none;
}

@media print {
    @page {
        size: landscape;
        margin: 14mm 10mm 16mm;
    }

    body * {
        visibility: hidden !important;
    }

    .catalog-print-area,
    .catalog-print-area * {
        visibility: visible !important;
    }

    .catalog-print-area {
        display: block !important;
        position: absolute;
        inset: 0 auto auto 0;
        box-sizing: border-box;
        width: 100%;
        padding: 0 0 24px;
        background: #ffffff;
        color: #102331;
        font-family: "Inter", "Segoe UI", Arial, sans-serif;
    }

    .catalog-print-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 18px;
        margin-bottom: 14px;
        border-bottom: 2px solid #284b63;
        padding-bottom: 10px;
    }

    .catalog-print-logo {
        width: 178px;
        height: auto;
    }

    .catalog-print-header div {
        display: grid;
        gap: 4px;
        text-align: right;
    }

    .catalog-print-header strong {
        font-family: "Exo 2", "Inter", sans-serif;
        font-size: 18px;
        font-weight: 900;
    }

    .catalog-print-header span,
    .catalog-print-footer {
        color: #58778b;
        font-size: 10px;
        font-weight: 700;
    }

    .catalog-print-table {
        width: 100%;
        border-collapse: collapse;
        table-layout: auto;
        font-size: 9px;
    }

    .catalog-print-table th,
    .catalog-print-table td {
        border: 1px solid #d6e0e7;
        padding: 4px 5px;
        text-align: left;
        vertical-align: top;
        overflow-wrap: anywhere;
    }

    .catalog-print-table th {
        background: #eef4f7;
        color: #102331;
        font-weight: 900;
    }

    .catalog-print-table thead {
        display: table-header-group;
    }

    .catalog-print-footer {
        position: fixed;
        right: 0;
        bottom: 0;
        left: 0;
        border-top: 1px solid #d6e0e7;
        padding-top: 6px;
        text-align: right;
    }
}

.json-editor {
    width: 100%;
    min-height: 180px;
    box-sizing: border-box;
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    background: var(--kvt-input-bg);
    color: var(--kvt-text);
    font: 500 .88rem "JetBrains Mono", monospace;
    padding: 12px;
    resize: vertical;
}

.json-editor:disabled {
    color: var(--kvt-text-muted);
    cursor: not-allowed;
    opacity: .72;
}

.auth-shell {
    min-height: 100vh;
    position: relative;
    display: grid;
    place-items: center;
    padding: 36px 18px;
}

.auth-public-actions {
    position: fixed;
    top: 16px;
    right: 18px;
    z-index: 20;
    display: flex;
    gap: 10px;
    align-items: center;
    flex-wrap: wrap;
}

.login-screen {
    width: min(480px, 100%);
    display: grid;
    grid-template-columns: 1fr;
    gap: 18px;
    justify-items: stretch;
    align-items: start;
}

.login-brand {
    display: grid;
    gap: 16px;
    justify-items: center;
    text-align: center;
}

.auth-logo-stack {
    grid-column: 1 / -1;
    grid-row: 1;
}

.auth-form-stack {
    grid-column: 1 / -1;
    grid-row: 2;
}

.login-brand-logo {
    width: min(420px, 82vw);
    height: auto;
}

.login-brand-logo-dark {
    display: none;
}

html[data-theme="dark"] .login-brand-logo-light {
    display: none;
}

html[data-theme="dark"] .login-brand-logo-dark {
    display: block;
}

.login-brand h1 {
    margin: 0;
    font-size: 42px;
    line-height: 1.05;
}

.login-brand p {
    max-width: 560px;
    margin: 0;
    color: var(--kvt-text-muted);
    font-size: 1.08rem;
    line-height: 1.55;
}

.login-panel {
    width: 100%;
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    padding: 22px;
    background: var(--kvt-panel-bg);
    box-shadow: var(--kvt-shadow);
}

.login-form {
    display: grid;
    gap: 14px;
}

.login-form label {
    display: grid;
    gap: 6px;
    color: var(--kvt-text-muted);
    font-size: .84rem;
    font-weight: 700;
}

.external-login {
    display: grid;
    gap: 10px;
    margin-bottom: 14px;
}

.external-login-button {
    width: 100%;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    border: 1px solid var(--kvt-border);
    border-radius: 4px;
    background: var(--kvt-surface);
    color: var(--kvt-text);
    font-size: .95rem;
    font-weight: 800;
    line-height: 1.2;
    cursor: pointer;
    transition: border-color .16s ease, background .16s ease, transform .16s ease;
}

.external-login-button:not(:disabled):hover,
.external-login-button:not(:disabled):focus-visible {
    border-color: var(--kvt-ui-accent);
    background: var(--kvt-ui-accent-soft);
    transform: translateY(-1px);
}

.external-login-button:focus-visible {
    outline: 2px solid var(--kvt-focus-ring);
    outline-offset: 2px;
}

.external-login-button:disabled {
    cursor: not-allowed;
    opacity: .56;
    box-shadow: none;
}

.external-login-button[aria-busy="true"]:disabled {
    opacity: 1;
}

.apple-login-button {
    background: #050505;
    border-color: #050505;
    color: #fff;
}

.apple-login-button:not(:disabled):hover,
.apple-login-button:not(:disabled):focus-visible {
    background: #171717;
    border-color: #171717;
}

html[data-theme="dark"] .external-login-button {
    background: rgba(247, 250, 251, .04);
}

html[data-theme="dark"] .apple-login-button {
    background: #F7FAFB;
    border-color: #F7FAFB;
    color: #07141C;
}

html[data-theme="dark"] .apple-login-button:not(:disabled):hover,
html[data-theme="dark"] .apple-login-button:not(:disabled):focus-visible {
    background: #FFFFFF;
    border-color: #FFFFFF;
}

.google-login-button[aria-busy="true"] {
    background: #FFFFFF;
}

.apple-login-button[aria-busy="true"] {
    border-color: #050505;
    background: #050505;
    color: #FFFFFF;
}

.external-icon {
    width: 20px;
    height: 20px;
    display: inline-grid;
    place-items: center;
    flex: 0 0 20px;
}

.external-icon svg {
    width: 20px;
    height: 20px;
    display: block;
}

.external-button-spinner {
    box-sizing: border-box;
    width: 20px;
    height: 20px;
    flex: 0 0 20px;
    border: 2.5px solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    animation: external-button-spin .7s linear infinite;
}

.google-login-button .external-button-spinner {
    color: #4285F4;
}

.apple-login-button .external-button-spinner {
    color: #FFFFFF;
}

html[data-theme="dark"] .apple-login-button .external-button-spinner {
    color: #07141C;
}

@keyframes external-button-spin {
    to {
        transform: rotate(360deg);
    }
}

.external-login-status {
    min-height: 20px;
    margin: 0 0 14px;
    color: var(--kvt-text-muted);
    font-size: .84rem;
    line-height: 1.4;
    text-align: center;
}

.auth-callback-progress {
    display: grid;
    justify-items: center;
    gap: 18px;
    min-height: 0;
    padding: 16px 0 8px;
}

.auth-callback-progress .auth-callback-spinner {
    --kvt-spinner-size: clamp(96px, 24vw, 120px);
    --kvt-spinner-arrow-height: clamp(22px, 5vw, 29px);
}

.auth-callback-message {
    margin: 0;
    font-size: .95rem;
    font-weight: 800;
}

.auth-divider {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 12px 0 16px;
    color: var(--kvt-text-muted);
    font-size: .78rem;
    font-weight: 800;
    text-transform: uppercase;
}

.auth-divider::before,
.auth-divider::after {
    content: "";
    height: 1px;
    flex: 1 1 auto;
    background: var(--kvt-border);
}

.auth-submit {
    width: 100%;
    min-height: 42px;
    margin-top: 4px;
}

.login-submit-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 1px solid transparent;
    border-radius: 4px;
    background: var(--kvt-ui-accent);
    color: #fff;
    font-weight: 700;
    cursor: pointer;
}

.login-submit-button:disabled {
    cursor: not-allowed;
    opacity: .64;
}

.login-submit-button:not(:disabled):hover {
    filter: brightness(.95);
}

.login-submit-button:focus-visible {
    outline: 2px solid var(--kvt-focus-ring);
    outline-offset: 2px;
}

html[data-theme="dark"] .login-submit-button {
    border-color: var(--kvt-ui-accent);
    background: transparent;
    color: var(--kvt-text);
}

html[data-theme="dark"] .login-submit-button:not(:disabled):hover,
html[data-theme="dark"] .login-submit-button:focus-visible {
    background: var(--kvt-ui-accent-soft);
    border-color: var(--kvt-ui-accent);
    color: var(--kvt-cave-white);
    filter: none;
}

.auth-switch {
    display: flex;
    justify-content: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 16px;
    color: var(--kvt-text-muted);
    font-size: .9rem;
}

.auth-switch a {
    font-weight: 800;
    text-decoration: none;
}

.modal-backdrop {
    position: fixed;
    inset: 0;
    z-index: 100;
    display: grid;
    place-items: center;
    padding: 18px;
    background: rgba(7, 20, 28, .62);
}

.modal-panel {
    width: min(460px, 100%);
    border: 1px solid var(--kvt-border);
    border-radius: var(--kvt-radius);
    padding: 18px;
    background: var(--kvt-panel-bg);
    box-shadow: var(--kvt-shadow);
}

.about-modal {
    width: min(520px, 100%);
}

.about-modal-content {
    display: grid;
    justify-items: center;
    gap: 18px;
    padding: 18px 12px 6px;
    text-align: center;
}

.about-logo-stack {
    display: grid;
    justify-items: center;
    width: 100%;
}

.about-brand-logo {
    width: min(420px, 98vw);
    max-width: 100%;
    height: auto;
}

.about-version {
    margin: 0;
    color: var(--kvt-text-muted);
    font-weight: 700;
    letter-spacing: 0;
}

.about-partner-logo {
    display: block;
    width: min(340px, 96vw);
    max-width: 100%;
    height: auto;
}

.about-modal .form-actions {
    justify-content: center;
}

@media (max-width: 1000px) {
    body:has(.sidebar.mobile-open) {
        overflow: hidden;
    }

    .page {
        grid-template-columns: 1fr;
    }

    .mobile-nav-backdrop {
        position: fixed;
        inset: 0;
        z-index: 12070;
        display: block;
        width: 100vw;
        width: 100dvw;
        height: 100vh;
        height: 100dvh;
        border: 0;
        padding: 0;
        background: color-mix(in srgb, var(--kvt-abyss-outline) 58%, transparent);
        backdrop-filter: blur(2px);
    }

    .mobile-menu-toggle,
    .mobile-nav-close {
        display: inline-flex;
    }

    .sidebar {
        position: fixed;
        top: 0;
        bottom: 0;
        left: 0;
        z-index: 12080;
        width: min(320px, calc(100vw - 48px));
        width: min(320px, calc(100dvw - 48px));
        max-width: 88vw;
        overflow: hidden;
        transform: translateX(-102%);
        transition: transform .2s ease;
        box-shadow: var(--kvt-shadow);
    }

    .sidebar.mobile-open {
        transform: translateX(0);
    }

    .nav-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        min-height: 68px;
        padding-right: 12px;
        border-bottom: 1px solid var(--kvt-border);
    }

    .kv-brand {
        flex: 1 1 auto;
        justify-content: flex-start;
        min-height: 68px;
        padding: 8px 12px;
    }

    .kv-brand-logo {
        width: 212px;
    }

    .nav-scrollable {
        display: block;
        height: calc(100dvh - 69px);
        overflow-x: hidden;
        overflow-y: auto;
        padding: 10px;
    }

    .dashboard-chart-grid,
    .dashboard-split-charts,
    .dashboard-map-layout {
        grid-template-columns: 1fr;
    }

    .dashboard-chart-card-wide {
        grid-column: auto;
    }

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

    .tool-grid,
    .form-grid,
    .admin-form,
    .catalog-selector,
    .catalog-toolbar,
    .logbook-search-toolbar,
    .cave-route-builder,
    .cave-poi-grid-panel,
    .cave-media-form {
        grid-template-columns: 1fr;
    }

    .admin-form.cave-proposal-form,
    .admin-form.cave-proposal-form.cave-quick-form,
    .admin-form.cave-proposal-form.moderation-review-form,
    .admin-form.cave-proposal-form.cave-form-three-columns,
    .admin-form.single-column.cave-description-form,
    .admin-form.logbook-form,
    .admin-form.logbook-import-form,
    .admin-form.logbook-share-form,
    .admin-form.provider-agency-form,
    .admin-form.provider-user-form {
        grid-template-columns: 1fr;
    }

    .logbook-tank-row {
        grid-template-columns: 1fr;
    }

    .provider-agency-row {
        align-items: flex-start;
        flex-wrap: wrap;
    }

    .cave-media-preview-item {
        grid-template-columns: minmax(0, 1fr);
    }

    .cave-inline-editor-item {
        grid-template-columns: minmax(0, 1fr);
    }

    .cave-media-preview-panel {
        grid-template-columns: minmax(140px, 220px) minmax(0, 1fr);
        align-items: center;
    }

    .cave-two-field-row,
    .cave-three-field-row {
        grid-template-columns: 1fr;
    }

    .cave-check-row-group {
        grid-column: auto;
        grid-template-columns: 1fr;
    }

    .cave-location-map-canvas,
    .cave-location-map-placeholder {
        height: 240px;
        min-height: 240px;
        max-height: 240px;
    }

    .cave-route-list {
        max-height: 220px;
    }

    .stage-calc-grid {
        grid-template-columns: 1fr;
    }

    .stage-result-cards,
    .stage-recalc-panel,
    .stage-backgas-panel {
        grid-column: auto;
    }

    .al11-toolbar {
        grid-template-columns: 1fr;
    }

    .al11-toolbar h2 {
        text-align: left;
    }

    .al11-print-button {
        justify-self: start;
    }

    .al11-legend {
        margin-left: 0;
    }

    .deco-control-bar {
        grid-template-columns: repeat(2, minmax(150px, 1fr));
    }

    .deco-meta {
        align-items: flex-start;
        grid-template-columns: 1fr;
    }

    .deco-meta-left {
        gap: 40px;
    }

    .login-screen {
        grid-template-columns: 1fr;
        gap: 24px;
        padding-top: 48px;
    }

    .login-brand {
        justify-items: center;
        text-align: center;
    }
}

@media (max-width: 620px) {
    .content {
        padding: 16px;
    }

    .cave-media-preview-panel {
        grid-template-columns: minmax(0, 1fr);
    }

    .top-row {
        align-items: flex-start;
        flex-direction: column;
        min-height: auto;
        padding: 14px 16px;
    }

    .top-context,
    .geozone-picker,
    .geozone-picker .e-ddl.e-input-group,
    .geozone-picker .e-ddl.e-control-wrapper {
        width: 100%;
    }

    .top-context {
        align-items: center;
    }

    .geozone-picker {
        flex: 1 1 auto;
    }

    .geozone-picker > span {
        display: none;
    }

    .top-actions {
        justify-content: flex-start;
    }

    .auth-public-actions {
        position: static;
        justify-content: center;
        margin-bottom: 18px;
    }

    .auth-shell {
        align-content: start;
        padding: 18px;
    }

    .login-brand h1 {
        font-size: 32px;
    }

    .login-screen {
        padding-top: 0;
    }

    .login-brand-logo {
        width: min(320px, 78vw);
    }

    .login-panel {
        padding: 18px;
    }

    .page-title {
        align-items: flex-start;
        flex-direction: column;
    }

    .page-title-actions {
        justify-content: flex-start;
        width: 100%;
    }

    .page-title h1 {
        font-size: 28px;
    }

    .dashboard-chart-card {
        padding: 14px;
    }

    .dashboard-chart-header {
        flex-direction: column;
    }

    .dashboard-google-map {
        min-height: 280px;
    }

    .catalog-toolbar-actions {
        justify-content: stretch;
    }

    .catalog-toolbar-actions .e-btn {
        flex: 1 1 140px;
    }

    .cave-quick-steps {
        grid-template-columns: 1fr;
    }

    .cave-quick-dialog .e-dlg-content {
        max-height: calc(100vh - 48px);
    }

    .metric-grid {
        grid-template-columns: 1fr;
    }

    .al11-sac-control {
        grid-template-columns: auto minmax(90px, 1fr);
        max-width: 100%;
    }

    .al11-sac-control span {
        grid-column: 2;
    }

    .al11-table {
        min-width: 880px;
    }

    .deco-control-bar {
        grid-template-columns: 1fr;
    }

    .deco-table {
        min-width: 884px;
    }

    .deco-gas-summary {
        grid-template-columns: 170px 78px;
    }

    .deco-gas-summary dl div {
        grid-template-columns: 170px 78px;
    }

    .deco-meta-left {
        align-items: flex-start;
        flex-direction: column;
    }

    .deco-approx {
        justify-self: start;
    }

    .stage-result-cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .stage-entry-row,
    .stage-input-cell {
        grid-template-columns: 1fr;
    }

    .stage-entry-row > span:last-child {
        grid-column: 1;
    }

    .stage-mode-row > span:last-child {
        display: none;
    }

    .stage-recalc-panel,
    .stage-backgas-panel {
        overflow-x: auto;
    }

    .stage-recalc-table,
    .stage-backgas-panel .stage-sheet-table {
        min-width: 620px;
    }
}
