/* Shared account controls; the supplied Hamburg banners anchor the dashboard. */
[hidden] { display: none !important; }
.portal-header-tools { display:flex; align-items:center; gap:12px; min-width:0; }
.portal-authenticated .topnav { min-width:0; overflow:visible; }
.portal-header-search { position:relative; display:flex; align-items:center; gap:10px; width:clamp(220px,24vw,340px); padding:0 14px; min-height:44px; border:0; border-radius:14px; background:var(--surface); }
.portal-header-tools svg { width:22px; height:22px; flex:none; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.portal-header-search input { width:100%; min-width:0; border:0; padding:0; background:transparent; color:var(--ink); box-shadow:none; font-size:.8rem; }
.portal-header-icon,.portal-header-tools #darkModeToggle { position:relative; display:grid; place-items:center; width:44px; height:44px; min-width:44px; border:1px solid var(--line); border-radius:14px; background:var(--surface); color:var(--ink); cursor:pointer; }
.portal-header-tools #darkModeToggle .theme-toggle-track { display:none; }
.portal-header-tools #darkModeToggle .theme-icon { position:static; }
.portal-header-tools #darkModeToggle .theme-icon-sun { display:block; }
.portal-header-tools #darkModeToggle .theme-icon-moon { display:none; }
html[data-theme="dark"] .portal-header-tools #darkModeToggle .theme-icon-sun { display:none; }
html[data-theme="dark"] .portal-header-tools #darkModeToggle .theme-icon-moon { display:block; }
.portal-header-dropdown { position:relative; }
.portal-header-badge { position:absolute; top:-4px; right:-4px; min-width:19px; height:19px; padding:0 4px; display:grid; place-items:center; border-radius:20px; background:#df3947; color:#fff; font-size:11px; font-weight:800; }
.portal-header-account { display:flex; align-items:stretch; flex:none; min-width:0; border:1px solid var(--line); border-radius:15px; background:var(--surface); }
.portal-header-account > .portal-header-dropdown { display:flex; min-width:0; }
.portal-header-profile { display:flex; align-items:center; gap:10px; min-height:44px; border:0; border-radius:14px; background:transparent; color:var(--ink); padding:2px 8px; text-align:left; cursor:pointer; }
.portal-header-account:has(.portal-header-points:not([hidden])) .portal-header-profile { border-radius:14px 0 0 14px; }
.portal-header-profile:is(:hover,:focus-visible) { background:var(--primary-soft); }
.portal-header-profile > span:nth-child(2) { min-width:0; }
.portal-header-profile strong,.portal-header-profile small { display:block; }
.portal-header-profile strong { max-width:130px; overflow:hidden; font-size:.8rem; text-overflow:ellipsis; white-space:nowrap; }.portal-header-profile small { font-size:.72rem; color:var(--muted); }
.portal-header-points { position:relative; display:flex; flex:none; align-items:center; justify-content:center; gap:6px; min-width:68px; min-height:44px; padding:2px 10px; border:0; border-radius:0 14px 14px 0; background:transparent; color:var(--ink); cursor:pointer; font:inherit; font-variant-numeric:tabular-nums; line-height:1; white-space:nowrap; }
.portal-header-points::before { content:""; position:absolute; top:10px; bottom:10px; left:0; width:1px; background:var(--line); pointer-events:none; }
.portal-header-points strong { max-width:100%; overflow:hidden; font-size:.82rem; font-weight:800; letter-spacing:-.02em; text-overflow:ellipsis; white-space:nowrap; }
.portal-header-points span { color:var(--primary); font-size:.78rem; font-weight:800; }
.portal-header-points:is(:hover,:focus-visible) { background:var(--primary-soft); }
.portal-header-avatar { display:grid; place-items:center; width:40px; height:40px; flex:none; overflow:hidden; border:1px solid var(--line); border-radius:50%; background:var(--primary); color:#fff; font-weight:800; }
.portal-header-avatar img { width:100%; height:100%; object-fit:cover; }
.portal-header-panel { position:absolute; top:calc(100% + 12px); right:0; width:min(360px,calc(100vw - 32px)); padding:16px; border:1px solid var(--line); border-radius:18px; background:var(--surface); color:var(--ink); box-shadow:0 18px 50px #0005; max-height:min(70dvh,520px); overflow:auto; }
.portal-header-panel h3 { margin:0 0 12px; font-size:1rem; }
.portal-header-panel h4 { margin:12px 0 5px; font-size:.76rem; color:var(--muted); }
.portal-header-preview-row,.portal-header-more,.portal-profile-menu button { display:block; width:100%; padding:11px 10px; border:0; border-radius:10px; background:transparent; color:var(--ink); text-align:left; font:inherit; cursor:pointer; }
.portal-header-preview-row strong,.portal-header-preview-row small { display:block; }
.portal-header-preview-row strong { font-size:.82rem; }.portal-header-preview-row small { color:var(--muted); font-size:.75rem; margin-top:3px; }
.portal-header-panel button:hover { background:var(--primary-soft); }.portal-header-more { margin-top:10px; color:var(--primary); border-top:1px solid var(--line); text-align:center; font-weight:800; }
.portal-profile-menu { width:220px; }.portal-profile-menu .portal-header-logout { color:var(--danger,#ce3c4e); }
.portal-header-tools button:focus-visible { outline:2px solid var(--primary); outline-offset:3px; }
.portal-header-account button:focus-visible { outline-offset:-3px; }
/* No nested focus rings. The icon/surface provide a keyboard focus cue. */
#portalHeaderSearch:focus-within, #portalHeaderSearch input:is(:focus,:focus-visible) { outline:none; box-shadow:none; border:0; }
#portalHeaderSearch:focus-within { background:color-mix(in srgb,var(--primary) 8%,var(--surface)); }
#portalHeaderSearch:focus-within > svg { color:var(--primary); }
.portal-search-results { position:absolute; top:calc(100% + 10px); left:0; width:max(100%,300px); max-width:calc(100vw - 32px); max-height:min(65dvh,480px); overflow:auto; padding:8px; border:1px solid var(--line); border-radius:14px; background:var(--surface); color:var(--ink); box-shadow:0 16px 40px #0002; }
.portal-search-heading { padding:9px 10px 4px; color:var(--muted); font-size:.72rem; font-weight:700; }
.portal-search-result { padding:9px 10px; border-radius:8px; cursor:pointer; }
.portal-search-result strong,.portal-search-result small { display:block; overflow-wrap:anywhere; }
.portal-search-result strong { font-size:.85rem; }.portal-search-result small { margin-top:2px; font-size:.74rem; color:var(--muted); }
.portal-search-result:hover,.portal-search-result[aria-selected="true"] { background:color-mix(in srgb,var(--primary) 12%,var(--surface)); }
.portal-search-empty { padding:12px 10px; font-size:.8rem; color:var(--muted); }
.portal-authenticated .topnav > #portalHeaderTools { display:flex; }
.portal-authenticated .topnav > #userLogout,.portal-authenticated .topnav > #openUserSettings { display:none; }
.portal-notifications-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }.portal-notifications-grid > section { min-width:0; }
body.portal-authenticated #athleteDashboardHero { min-height:210px; padding-top:42px; border-radius:0; box-shadow:none; background-image:url("pictures/dashboard-banner-dark.png?v=20261016-1"); background-position:center top; }
body.portal-authenticated #athleteDashboardHero::before { background:linear-gradient(90deg,#0714265c,transparent 75%); }
body.portal-authenticated #athleteDashboardHero::after { content:""; position:absolute; z-index:-1; inset:auto 0 0; height:75px; pointer-events:none; background:linear-gradient(transparent,var(--athlete-navy,var(--bg))); }
html[data-theme="light"] body.portal-authenticated #athleteDashboardHero { background-image:url("pictures/dashboard-banner-light.png?v=20261016-1"); }
html[data-theme="light"] body.portal-authenticated #athleteDashboardHero::before { background:linear-gradient(90deg,#ffffffdb,#ffffff90 42%,transparent 75%); }
html[data-theme="light"] #athleteDashboardHero #roleStartTitle { color:#10253d; }
html[data-theme="light"] #athleteDashboardHero .athlete-dashboard-greeting,html[data-theme="light"] #athleteDashboardHero .athlete-dashboard-intro { color:#284967; }
/* The athlete layout originally hard-coded navy surfaces independently of theme. */
html[data-theme="light"] body[data-portal-role="sportler"] { --athlete-navy:#f5f7fb; --athlete-panel:#fff; --athlete-panel-raised:#edf4fc; --athlete-line:#cfdeec; --athlete-blue:#1478ff; --athlete-muted:#526b83; }
html[data-theme="light"] body[data-portal-role="sportler"] #role-start { --surface:#fff; --surface-soft:#edf4fc; --ink:#132238; --muted:#526b83; background:var(--athlete-navy); }
html[data-theme="light"] body[data-portal-role="sportler"] #role-start :is(.athlete-dashboard-card,.athlete-dashboard-panel,#dashboardChallenge,.athlete-quick-action-list > button) { background:var(--surface); color:var(--ink); box-shadow:0 6px 18px #17395d08; }
html[data-theme="light"] body[data-portal-role="sportler"] #role-start :is(.athlete-dashboard-card h3,#athletePointsDashboard h3,.athlete-panel-heading h3,.athlete-activity-copy strong,.athlete-open-action strong,.athlete-card-empty strong,.athlete-points-ring strong,.athlete-upcoming-date strong,.athlete-upcoming-copy strong,.dashboard-nearby-title strong,.clubs-dashboard-card h4) { color:var(--ink); }
html[data-theme="light"] body[data-portal-role="sportler"] #role-start :is(.athlete-open-action,.clubs-dashboard-card,.athlete-community-row,.athlete-community-find) { background:var(--surface-soft); color:var(--ink); border-color:var(--line); }
html[data-theme="light"] body[data-portal-role="sportler"] #role-start :is(.athlete-activity-copy span,.athlete-text-link,.athlete-nearby-navigation button,.athlete-community-find > span,.athlete-community-row b) { color:#0965c9; }
html[data-theme="light"] body[data-portal-role="sportler"] #role-start .athlete-upcoming-date small { color:var(--muted); }
html[data-theme="light"] body[data-portal-role="sportler"] #role-start .athlete-points-ring { background:conic-gradient(var(--athlete-blue) var(--athlete-points-progress),#dce8f6 0); box-shadow:none; }
html[data-theme="light"] body[data-portal-role="sportler"] #role-start .athlete-points-ring::before { background:var(--surface); }
html[data-theme="light"] body[data-portal-role="sportler"] #role-start .athlete-points-month strong { color:#087d50; }
html[data-theme="light"] body[data-portal-role="sportler"] #role-start .athlete-quick-action-list > button:first-child { background:#e8f2ff; }
html[data-theme="light"] body[data-portal-role="sportler"] #role-start .athlete-quick-action-list > button:is(:hover,:focus-visible) { background:#dcecff; }
@media (max-width:1180px) {
  html[data-theme="light"] body[data-portal-role="sportler"] #role-start .athlete-quick-actions > summary { background:#e8f2ff; color:var(--ink); }
  html[data-theme="light"] body[data-portal-role="sportler"] #role-start .athlete-quick-actions > summary:is(:hover,:focus-visible) { background:#dcecff; }
}
html[data-theme="light"] body.portal-authenticated .user-side-nav { background:#fff; color:var(--ink); border-color:var(--line); box-shadow:8px 0 28px #17395d08; }
html[data-theme="light"] body.portal-authenticated .user-side-nav > a,
html[data-theme="light"] body.portal-authenticated .user-side-nav details a { color:#24425f; }
html[data-theme="light"] body.portal-authenticated .user-side-nav :is(.user-sidebar-brand small,.user-sidebar-more summary,.user-sidebar-footer) { color:#526b83; }
html[data-theme="light"] body.portal-authenticated .user-side-nav > a:not(.user-sidebar-brand):is(:hover,:focus-visible),
html[data-theme="light"] body.portal-authenticated .user-side-nav details a:is(:hover,:focus-visible) { background:#e8f2ff; color:#0965c9; }
html[data-theme="light"] body.portal-authenticated .user-side-nav > a.active:not(.user-sidebar-brand) { background:#e1efff; color:#0965c9; border-color:#a1c8f6; box-shadow:none; }
html[data-theme="light"] body.portal-authenticated .user-side-nav a.active .nav-icon { color:#0965c9; }
@media(min-width:981px) { body.portal-authenticated:has(#role-start.portal-view-active) .topbar { margin-bottom:-70px; background:transparent; border-bottom:0; backdrop-filter:none; } body.portal-authenticated #role-start.portal-view-active #athleteDashboardHero { padding-top:90px; min-height:255px; } }
@media(max-width:700px) { .portal-authenticated .topbar { padding:10px 16px; }.portal-authenticated .topnav { width:100%; }.portal-header-tools { width:100%; max-width:100%; gap:8px; flex-wrap:wrap; justify-content:flex-end; }.portal-header-search { width:100%; min-width:0; order:4; }.portal-header-profile > span:nth-child(2) { display:none; }.portal-header-profile { gap:4px; }.portal-header-points strong { font-size:.73rem; }.portal-notifications-grid { grid-template-columns:1fr; }.portal-header-dropdown:has(#portalNotificationPreview) { position:static; }#portalNotificationPreview { top:calc(100% + 4px); right:16px; }body.portal-authenticated #athleteDashboardHero { background-position:65% center; } }
@media(max-width:700px) {
  .portal-header-account .portal-header-profile { min-height:44px; padding:2px 7px; }
  .portal-header-account .portal-header-points { min-width:54px; min-height:44px; padding:2px 8px; }
}
