/* Personal glass treatment built on BLUCA's existing palette and surfaces. */
:root {
    --bluca-glass-level: .55;
    --bluca-glass-button-level: .55;
    --bluca-glass-blur: 22px;
    --bluca-glass-saturation: 1.6;
    --bluca-glass-shine-level: .55;
    --bluca-glass-edge-level: .55;
    --bluca-glass-card: rgba(255,255,255,calc(1 - var(--bluca-glass-level) * .58));
    --bluca-glass-button: rgba(255,255,255,calc(1 - var(--bluca-glass-button-level) * .72));
    --bluca-glass-filter: blur(var(--bluca-glass-blur)) saturate(var(--bluca-glass-saturation));
    --bluca-glass-edge: rgba(255,255,255,calc(.3 + var(--bluca-glass-edge-level) * .65));
    --bluca-glass-shine: rgba(255,255,255,calc(var(--bluca-glass-shine-level) * .38));
    --bluca-glass-rim: rgba(255,255,255,calc(var(--bluca-glass-edge-level) * .62));
    --bluca-glass-depth: rgba(25,43,68,calc(var(--bluca-glass-level) * .12));
    --bluca-glass-canvas: #eaf0f6;
    --bluca-glass-muted: #1e293b;
    --app-text-secondary: #334155;
    --app-text-subtle: #475569;
    --bluca-glass-shadow: inset 0 1px 0 var(--bluca-glass-rim), inset 0 -1px 0 var(--bluca-glass-depth), 0 12px 32px rgba(27,39,56,.12);
}
:root[data-theme="dark"] {
    --bluca-glass-card: rgba(18,31,47,calc(1 - var(--bluca-glass-level) * .46));
    --bluca-glass-button: rgba(28,43,61,calc(1 - var(--bluca-glass-button-level) * .56));
    --bluca-glass-edge: rgba(255,255,255,calc(.06 + var(--bluca-glass-edge-level) * .3));
    --bluca-glass-shine: rgba(255,255,255,calc(var(--bluca-glass-shine-level) * .1));
    --bluca-glass-rim: rgba(255,255,255,calc(var(--bluca-glass-edge-level) * .3));
    --bluca-glass-depth: rgba(0,5,15,calc(var(--bluca-glass-level) * .28));
    --bluca-glass-canvas: #0a1727;
    --bluca-glass-muted: #dae3ee;
    --app-text-secondary: #dae3ee;
    --app-text-subtle: #cbd8e8;
    --bluca-glass-shadow: inset 0 1px 0 var(--bluca-glass-rim), inset 0 -1px 0 var(--bluca-glass-depth), 0 14px 36px rgba(0,5,15,.26);
}
/* Feed both existing component layers from the same personal appearance tokens. */
:root, :root:not([data-theme="dark"]), :root[data-theme="dark"] {
    --muted: var(--bluca-glass-muted);
    --app-text-secondary: var(--muted);
    --app-text-subtle: color-mix(in srgb,var(--muted) 90%,var(--ink));
    --app-header-bg: var(--bluca-glass-card);
    --app-nav-bg: var(--bluca-glass-card);
    --app-toolbar-bg: var(--bluca-glass-card);
    --app-panel-bg: var(--bluca-glass-card);
    --app-panel-soft: color-mix(in srgb,var(--bluca-glass-card) 96%,var(--primary));
    --app-radius-panel: 22px;
    --app-radius-hero: 24px;
    --app-radius-control: 14px;
    --app-radius-button: 999px;
    --app-shadow: var(--bluca-glass-shadow);
    --bluca-surface-header: var(--app-header-bg);
    --bluca-surface-navigation: var(--app-nav-bg);
    --bluca-surface-toolbar: var(--app-toolbar-bg);
    --bluca-surface-card: var(--app-panel-bg);
    --bluca-surface-subtle: var(--app-panel-soft);
    --bluca-surface-radius: var(--app-radius-panel);
    --bluca-surface-radius-small: var(--app-radius-control);
    --bluca-surface-shadow: var(--app-shadow);
    --bluca-surface-blur: var(--bluca-glass-filter);
}
:root[data-glass="off"] { --bluca-glass-filter:none; }
:root body :is(.home-favorite,.theme-settings,.profile-settings,.home-news-item,.home-section:not(.home-section-open),.dashboard-benefits-offer),
.appearance-preview-card,.appearance-preview-button {
    background:linear-gradient(135deg,var(--bluca-glass-shine),transparent 65%),var(--bluca-glass-card);
    border:1px solid var(--bluca-surface-border);
    border-top-color:var(--bluca-glass-edge);
    box-shadow:inset 0 1px 0 var(--bluca-glass-shine),var(--bluca-glass-shadow);
    -webkit-backdrop-filter:var(--bluca-glass-filter);
    backdrop-filter:var(--bluca-glass-filter);
}
:root .app-page-frame :is(.btn-outline-primary,.btn-outline-secondary,.btn-secondary,.btn-light,.btn-outline-light),
:root body .home-small-action,
.appearance-preview-button {
    background:linear-gradient(135deg,var(--bluca-glass-shine),transparent 65%),var(--bluca-glass-button) !important;
    border-color:var(--bluca-surface-border-strong) !important;
    color:var(--ink) !important;
    box-shadow:inset 0 1px 0 var(--bluca-glass-edge),var(--bluca-glass-shadow);
    -webkit-backdrop-filter:var(--bluca-glass-filter);
    backdrop-filter:var(--bluca-glass-filter);
}
:root .app-page-frame :is(.btn-outline-primary,.btn-outline-secondary,.btn-secondary,.btn-light,.btn-outline-light):is(:hover,:focus-visible) {
    background:color-mix(in srgb,var(--primary) 13%,var(--bluca-glass-card)) !important;
    border-color:var(--primary) !important;
}
body .mobile-tabbar { background:var(--bluca-glass-card); -webkit-backdrop-filter:var(--bluca-glass-filter); backdrop-filter:var(--bluca-glass-filter); }
.app-page-frame :is(.btn,.btn-primary),.home-small-action { border-radius:var(--app-radius-button); min-height:44px; font-weight:700; }
.app-page-frame :is(input,select,textarea,button) { font-family:inherit; }
.app-page-frame details.surface > summary { min-height:44px; padding-block:.65rem; cursor:pointer; font-weight:700; line-height:1.4; color:var(--ink); }
.app-page-frame :is(h1,h2,h3,summary,.form-label) { word-break:normal; hyphens:auto; hyphenate-limit-chars:7 3 3; }
.app-page-frame :is(a,button,input,select,textarea,summary):focus-visible { outline:2px solid var(--primary); outline-offset:3px; }
.app-page-frame [id] { scroll-margin-top:6rem; }
.app-page-frame .btn-primary { border-top-color:var(--bluca-glass-edge) !important; box-shadow:inset 0 1px 0 var(--bluca-glass-shine),0 8px 22px color-mix(in srgb,var(--primary) 18%,transparent) !important; }
/* Glass needs a backdrop: use the club's image when configured; otherwise
   give the existing club palette enough depth to show through the material. */
body:not(.has-seasonal-background) { background:radial-gradient(ellipse at 0% 15%,color-mix(in srgb,var(--primary) 35%,transparent),transparent 55%),radial-gradient(ellipse at 100% 65%,color-mix(in srgb,var(--accent) 30%,transparent),transparent 50%),var(--bluca-glass-canvas) !important; background-attachment:fixed !important; }
/* At high transparency, keep a readable backdrop even over very bright/dark images.
   Existing stronger club overlays remain in effect. */
:root[data-glass="on"] body.has-seasonal-background::before { background-image:linear-gradient(rgba(3,12,28,max(var(--seasonal-background-overlay),calc(var(--bluca-glass-level) * .42))),rgba(3,12,28,max(var(--seasonal-background-overlay),calc(var(--bluca-glass-level) * .42)))),var(--seasonal-background-image); }
:root:not([data-theme="dark"])[data-glass="on"] body.has-seasonal-background::before { background-image:linear-gradient(rgba(244,249,255,max(var(--seasonal-background-overlay),calc(var(--bluca-glass-level) * .32))),rgba(244,249,255,max(var(--seasonal-background-overlay),calc(var(--bluca-glass-level) * .32)))),var(--seasonal-background-image); }
body.dashboard-home-page main { background:transparent; }
/* Dashboard order, spacing and responsive columns remain in dashboard-home.css. */
.dashboard-home .home-greeting h1 { font-size:clamp(1.4rem,3vw,2rem); line-height:1.2; }
.dashboard-home :is(.home-greeting h1,.home-event-content strong,.dashboard-benefits-copy strong,.dashboard-benefits-title,.dashboard-benefits-description) { word-break:normal; overflow-wrap:break-word; -webkit-hyphens:auto; hyphens:auto; hyphenate-limit-chars:6 3 3; }
.dashboard-home :is(.home-section-head a,.home-response-link) { color:color-mix(in srgb,var(--primary) 30%,var(--ink)); }
.dashboard-home .dashboard-benefits-all { color:color-mix(in srgb,var(--primary) 40%,var(--ink)); text-underline-offset:.2em; }
.dashboard-home .dashboard-benefits-all:hover { color:var(--ink); }
.dashboard-home #home-news-heading > i { color:var(--primary); margin-right:6px; }
.dashboard-home :is(.home-response-button,.home-response-link) { border-radius:var(--app-radius-button); }
.dashboard-home .home-response-button:not(.active) { background:var(--bluca-glass-button); -webkit-backdrop-filter:var(--bluca-glass-filter); backdrop-filter:var(--bluca-glass-filter); }
.dashboard-home :is(.home-favorite,.home-small-action,.home-response-button,.dashboard-benefits-all):focus-visible { outline:2px solid var(--primary); outline-offset:3px; }

body[data-app-controller="SwimVideoAnalysis"] .page-head { align-items:flex-start; padding:clamp(1.1rem,3vw,1.75rem); gap:1rem; border-radius:1.5rem; }
body[data-app-controller="SwimVideoAnalysis"] .page-head h1 { font-size:clamp(1.7rem,4.5vw,2.45rem); line-height:1.12; letter-spacing:-.035em; word-break:normal; overflow-wrap:normal; hyphens:manual; }
body[data-app-controller="SwimVideoAnalysis"] .page-head .eyebrow { font-size:.7rem; letter-spacing:.12em; margin-bottom:.6rem; }
body[data-app-controller="SwimVideoAnalysis"] .page-head p.text-muted { font-size:.95rem; line-height:1.5; max-width:44rem; margin-bottom:0; }
body[data-app-controller="SwimVideoAnalysis"] .surface { border-radius:1.5rem; padding:clamp(1rem,2.5vw,1.6rem); }
body[data-app-controller="SwimVideoAnalysis"] .video-analysis > h2 { font-size:1.25rem; letter-spacing:-.02em; margin-bottom:.6rem; }
body[data-app-controller="SwimVideoAnalysis"] .video-analysis > p { font-size:.95rem; line-height:1.6; }
body[data-app-controller="SwimVideoAnalysis"] .video-analysis > .video-upload-note { display:flex; align-items:flex-start; gap:.5rem; padding:.7rem .85rem; margin:1rem 0; border-radius:.9rem; background:color-mix(in srgb,var(--primary) 6%,transparent); color:var(--muted); font-size:.8rem; line-height:1.5; }
.video-upload-note > i { color:var(--primary); flex-shrink:0; font-size:1rem; }
body[data-app-controller="SwimVideoAnalysis"] .video-steps { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.4rem; margin:1rem 0; padding:.45rem; border:1px solid var(--bluca-surface-border); border-radius:1.3rem; background:var(--bluca-glass-card); -webkit-backdrop-filter:var(--bluca-glass-filter); backdrop-filter:var(--bluca-glass-filter); }
body[data-app-controller="SwimVideoAnalysis"] .video-steps li { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.35rem; min-width:0; padding:.65rem .35rem; border:0; border-radius:.95rem; text-align:center; font-size:.8rem; line-height:1.35; color:var(--muted); }
body[data-app-controller="SwimVideoAnalysis"] .video-steps li[aria-current="step"],body[data-app-controller="SwimVideoAnalysis"] .video-steps li.is-complete { background:color-mix(in srgb,var(--primary) 10%,transparent); color:var(--ink); }
.video-step-number { display:grid; place-items:center; width:1.6rem; height:1.6rem; border-radius:50%; font-size:.8rem; font-weight:800; color:var(--primary); background:color-mix(in srgb,var(--primary) 12%,transparent); }
body[data-app-controller="SwimVideoAnalysis"] .video-form-grid { gap:1.1rem; }
body[data-app-controller="SwimVideoAnalysis"] .video-form-grid label { font-size:.9rem; margin-bottom:.4rem; }
body[data-app-controller="SwimVideoAnalysis"] .video-form-grid :is(.form-control,.form-select) { min-height:48px; border-radius:var(--app-radius-control); font-size:1rem; }
body[data-app-controller="SwimVideoAnalysis"] .video-form-grid .small { font-size:.8rem; line-height:1.5; margin-top:.5rem; }
.app-page-frame input[type="file"]::file-selector-button { padding:.65rem .8rem; margin-right:.65rem; border:0; border-radius:.7rem; font:inherit; font-weight:700; background:color-mix(in srgb,var(--primary) 10%,var(--app-field-bg)); color:var(--app-field-text); -webkit-text-fill-color:var(--app-field-text); }
body[data-app-controller="SwimVideoAnalysis"] .video-workflow-choice a { background:var(--bluca-glass-button); border-color:var(--bluca-surface-border); color:var(--ink); border-radius:1rem; font-size:.9rem; }
.appearance-settings { display:block; }
.appearance-settings > h2 { margin:0 0 1rem; }
.appearance-theme-row { display:flex; justify-content:space-between; align-items:center; gap:1rem; }
.appearance-theme-row label:not(.theme-switch),.appearance-range-heading label { font-weight:700; }
.appearance-theme-row p { font-size:.85rem; margin-top:.25rem; }
.appearance-glass-control { margin-top:1.25rem; padding-top:1.25rem; border-top:1px solid var(--line); }
.appearance-range-heading { display:flex; align-items:center; justify-content:space-between; gap:.75rem; }
.appearance-range-heading output { padding:.3rem .65rem; border-radius:999px; color:var(--primary); background:color-mix(in srgb,var(--primary) 10%,transparent); font-size:.85rem; font-weight:700; }
.appearance-glass-control > p { font-size:.85rem; line-height:1.5; margin:.6rem 0; }
.appearance-glass-control input[type="range"] { width:100%; min-height:44px; accent-color:var(--primary); cursor:pointer; }
.appearance-range-labels { display:flex; justify-content:space-between; color:var(--muted); font-size:.75rem; }
.appearance-glass-preview { display:grid; gap:.75rem; justify-items:center; margin:1rem 0; padding:1.35rem; border-radius:1.2rem; background:radial-gradient(ellipse at 15% 10%,color-mix(in srgb,var(--primary) 65%,transparent),transparent 70%),radial-gradient(ellipse at 85% 100%,color-mix(in srgb,var(--accent) 65%,transparent),transparent 70%),var(--panel); border:1px solid var(--line); }
.appearance-glass-preview > span:first-child { font-size:.75rem; color:var(--muted); }
.appearance-preview-card { display:grid; justify-items:center; gap:.7rem; padding:1.25rem; border-radius:1.15rem; width:min(100%,28rem); min-width:0; text-align:center; color:var(--ink); }
.appearance-preview-card > span:not(.appearance-preview-button) { font-size:.85rem; line-height:1.5; }
.appearance-preview-button { display:inline-flex; justify-content:center; align-items:center; gap:.7rem; min-height:48px; padding:.75rem 1rem; border-radius:999px; font-size:.9rem; font-weight:700; text-align:center; }
.appearance-presets { display:flex; flex-wrap:wrap; gap:.5rem; margin:.8rem 0; }
.appearance-presets button,.appearance-reset { min-height:44px; padding:.55rem .8rem; border:1px solid var(--line); border-radius:999px; background:var(--bluca-glass-button); color:var(--ink); font:inherit; font-size:.85rem; font-weight:700; cursor:pointer; }
.appearance-presets button[aria-pressed="true"] { border-color:var(--primary); box-shadow:inset 0 0 0 1px var(--primary); background:color-mix(in srgb,var(--primary) 13%,var(--bluca-glass-button)); }
.appearance-glass-details { margin:1rem 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.appearance-glass-details > summary { min-height:48px; padding:.8rem 0; font-weight:700; cursor:pointer; }
.appearance-detail-control { padding:.8rem 0; }
.appearance-detail-control + .appearance-detail-control { border-top:1px solid var(--line); }
.appearance-detail-control p { font-size:.85rem; color:var(--muted); line-height:1.5; margin:.45rem 0; }
.appearance-settings :is(input[type="range"],button,summary):focus-visible { outline:2px solid var(--primary); outline-offset:4px; }
.appearance-cookie-link { background:none; border:0; padding:.4rem 0; min-height:44px; color:var(--primary); font:inherit; font-size:.85rem; text-decoration:underline; cursor:pointer; }
@media(max-width:575px) { body[data-app-controller="SwimVideoAnalysis"] .page-head > .btn { align-self:stretch; width:100%; font-size:.85rem; } body[data-app-controller="SwimVideoAnalysis"] .page-head { flex-direction:column; } }
/* Blur is a refinement. Keep the same contrast when it is unavailable or disabled. */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) { :root { --bluca-glass-level:0 !important; --bluca-glass-button-level:0 !important; --bluca-glass-shine-level:0 !important; --bluca-glass-filter:none; } }
@media(prefers-reduced-transparency:reduce) { :root { --bluca-glass-level:0 !important; --bluca-glass-button-level:0 !important; --bluca-glass-shine-level:0 !important; --bluca-glass-filter:none; } }
@media(forced-colors:active) {
    :root, :root:not([data-theme="dark"]), :root[data-theme="dark"] { --bluca-glass-level:0 !important; --bluca-glass-filter:none; --bluca-glass-card:Canvas; --bluca-glass-button:Canvas; --bluca-glass-shadow:none; --bluca-glass-shine:transparent; --bluca-glass-rim:transparent; --bluca-glass-depth:transparent; --bluca-glass-edge:CanvasText; }
    body.has-seasonal-background::before { background-image:none !important; }
    .appearance-preview-button,.appearance-preview-card,.appearance-presets button,.appearance-reset { color:CanvasText !important; border-color:CanvasText !important; }
}
/* 1rem can be smaller than 16px in a club theme. Keep mobile fields readable. */
@media(max-width:767px) { :root body .app-page-frame :is(.form-control,.form-select) { font-size:max(1rem,16px); } }
