/* Private member workspace. Keep every rule scoped: trainer and public views
   share index.html and must not inherit the member dashboard's dimensions. */
:root[data-auth-state="user"][data-theme] {
  --portal-scale:1;
  --portal-bg:#09131e;
  --portal-surface:#111f2c;
  --portal-soft:#182b3a;
  --portal-border:#304454;
  --portal-success:#65dfa0;
  --portal-success-bg:#112e26;
  --portal-shadow:0 8px 26px #0002;
  --ink:#edf4fa;
  --muted:#b1c1ce;
  --panel:var(--portal-surface);
  --control:var(--portal-soft);
  --line:var(--portal-border);
  --lime:var(--portal-success);
  --red:#db123e;
  --accent:#ff6382;
  --blue:#75c9fb;
  --reservation:#218554;
}
:root[data-auth-state="user"][data-theme][data-text-size="medium"] { --portal-scale:1.08; }
:root[data-auth-state="user"][data-theme][data-text-size="large"] { --portal-scale:1.22; }
:root[data-auth-state="user"][data-theme][data-theme="light"] {
  --portal-bg:#f3f6fa;
  --portal-surface:#fff;
  --portal-soft:#f0f4f8;
  --portal-border:#cbd6e0;
  --portal-success:#17683d;
  --portal-success-bg:#e8f5ed;
  --portal-shadow:0 8px 26px #18334b07;
  --ink:#172a3b;
  --muted:#526677;
  --red:#c5133e;
  --accent:#b51238;
  --blue:#216b9e;
  --reservation:#1b7549;
}
:root[data-auth-state="user"][data-theme] .public-stats-modal,
:root[data-auth-state="user"][data-theme] .public-stats-panel { background:var(--portal-bg); color:var(--ink); }
:root[data-auth-state="user"][data-theme] .public-stats-head { min-height:76px; padding:12px clamp(16px,3vw,44px); background:var(--panel); border-bottom:1px solid var(--line); }
:root[data-auth-state="user"][data-theme] .public-stats-head h2 { font-size:20px; letter-spacing:-.025em; }
:root[data-auth-state="user"][data-theme] .public-stats-head .eyebrow { color:var(--muted); font-size:10px; letter-spacing:.1em; }
:root[data-auth-state="user"][data-theme] .public-stats-head > .avatar { width:44px; height:44px; flex-basis:44px; }
:root[data-auth-state="user"][data-theme] .public-stats-close { height:44px; background:var(--control); color:var(--ink); border-color:var(--line); }
:root[data-auth-state="user"][data-theme] .public-stats-body { padding:28px clamp(16px,3vw,44px) 40px; scroll-behavior:smooth; }
:root[data-auth-state="user"][data-theme] .portal-shell { max-width:1480px; margin:auto; grid-template-columns:224px minmax(0,1fr); gap:28px; }
:root[data-auth-state="user"][data-theme] .portal-sidebar { gap:22px; padding:20px 14px; border-radius:24px; background:var(--panel); box-shadow:var(--portal-shadow); }
:root[data-auth-state="user"][data-theme] .portal-user-mini { gap:12px; padding:4px 6px 20px; border-bottom:1px solid var(--line); }
:root[data-auth-state="user"][data-theme] .portal-user-mini .portal-avatar { width:48px; height:48px; border-radius:16px; }
:root[data-auth-state="user"][data-theme] .portal-user-mini strong { font-size:calc(14px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-user-mini span { font-size:12px; margin-top:5px; }
:root[data-auth-state="user"][data-theme] .portal-nav { gap:8px; }
:root[data-auth-state="user"][data-theme] .portal-nav-button { grid-template-columns:28px minmax(0,1fr); gap:12px; padding:12px; min-height:52px; border-radius:14px; color:var(--muted); font-size:calc(13px * var(--portal-scale)); line-height:1.35; }
:root[data-auth-state="user"][data-theme] .portal-nav-icon { width:28px; height:28px; background:transparent; color:inherit; border:0; border-radius:0; box-shadow:none; }
:root[data-auth-state="user"][data-theme] .portal-nav-button.active { background:var(--red); border-color:var(--red); color:white; box-shadow:0 5px 14px #f2184626; }
:root[data-auth-state="user"][data-theme] .portal-nav-button.active .portal-nav-icon { background:transparent; border:0; color:white; }
:root[data-auth-state="user"][data-theme] .portal-sidebar-note { padding:14px; border:0; border-radius:16px; color:var(--muted); background:var(--control); font-size:calc(12px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-ui-icon { width:22px; height:22px; display:block; flex:0 0 auto; }
:root[data-auth-state="user"][data-theme] .portal-main { min-width:0; font-size:calc(15px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme][data-text-size] .portal-main p { font-size:calc(14px * var(--portal-scale)); line-height:1.6; }
:root[data-auth-state="user"][data-theme][data-text-size] .portal-main h2 { font-size:calc(clamp(26px,2.7vw,36px) * var(--portal-scale)); line-height:1.18; letter-spacing:-.045em; }
:root[data-auth-state="user"][data-theme][data-text-size] .portal-main h3 { font-size:calc(21px * var(--portal-scale)); line-height:1.3; letter-spacing:-.025em; }
:root[data-auth-state="user"][data-theme] .portal-main .eyebrow { font-size:11px; font-weight:850; letter-spacing:.1em; color:var(--accent); line-height:1.4; }
:root[data-auth-state="user"][data-theme] .portal-page-head { margin:0 0 24px; gap:20px; align-items:center; }
:root[data-auth-state="user"][data-theme] .portal-page-head h2 { margin:7px 0; }
:root[data-auth-state="user"][data-theme] .portal-page-head p { max-width:620px; }
:root[data-auth-state="user"][data-theme] .portal-home-head { display:grid; grid-template-columns:minmax(0,1fr) minmax(220px,.75fr) auto; gap:22px; padding:28px; border:1px solid var(--line); border-radius:26px; background:linear-gradient(125deg,color-mix(in srgb,var(--red) 10%,var(--panel)),var(--panel) 58%,color-mix(in srgb,var(--blue) 8%,var(--panel))); }
:root[data-auth-state="user"][data-theme] .portal-home-head > div:first-child { align-self:center; }
:root[data-auth-state="user"][data-theme] .portal-membership-header { width:100%; min-width:0; margin:0; padding:20px; box-shadow:none; background:var(--panel); border-color:var(--line); }
:root[data-auth-state="user"][data-theme] .portal-membership-value strong { font-size:calc(22px * var(--portal-scale)); line-height:1.25; }
:root[data-auth-state="user"][data-theme] .portal-home-actions { align-self:start; gap:8px; }
:root[data-auth-state="user"][data-theme] .portal-icon-action { width:44px; height:44px; border-radius:14px; color:var(--ink); background:var(--panel); }
:root[data-auth-state="user"][data-theme] .portal-notification-count { top:-5px; right:-5px; background:var(--red); color:white; }
:root[data-auth-state="user"][data-theme][data-text-size] .portal-main :is(button,input,select,textarea) { font-size:calc(14px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-main :is(button,a,input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),select,summary) { min-height:44px; }
:root[data-auth-state="user"][data-theme] :is(.portal-shell,.portal-mobile-nav,.portal-reservation-dialog,.portal-notification-center) :is(button,a,input,select,textarea,summary):focus-visible { outline:3px solid var(--blue); outline-offset:3px; }
:root[data-auth-state="user"][data-theme] .portal-main :is(button,a) { touch-action:manipulation; }
:root[data-auth-state="user"][data-theme] .portal-page-action { padding:12px 18px; border-radius:13px; white-space:normal; line-height:1.35; background:var(--control); color:var(--ink); }
:root[data-auth-state="user"][data-theme] .portal-overview-grid { grid-template-columns:repeat(5,minmax(0,1fr)); gap:12px; margin-bottom:22px; }
:root[data-auth-state="user"][data-theme] .portal-kpi { padding:18px; border-radius:20px; background:var(--panel); box-shadow:var(--portal-shadow); }
:root[data-auth-state="user"][data-theme] .portal-kpi-icon { display:grid; place-items:center; width:38px; height:38px; margin-bottom:14px; border-radius:12px; color:var(--blue); background:color-mix(in srgb,var(--blue) 12%,var(--panel)); }
:root[data-auth-state="user"][data-theme] .portal-kpi:nth-child(2n) .portal-kpi-icon { color:var(--accent); background:color-mix(in srgb,var(--red) 10%,var(--panel)); }
:root[data-auth-state="user"][data-theme][data-text-size] .portal-kpi > span { font-size:calc(12px * var(--portal-scale)); text-transform:none; line-height:1.4; }
:root[data-auth-state="user"][data-theme] .portal-kpi strong { margin-top:6px; font-size:calc(clamp(23px,2.2vw,31px) * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-kpi strong small { font-size:.55em; color:var(--muted); }
:root[data-auth-state="user"][data-theme] :is(.portal-card,.portal-profile-section,.portal-workout-session) { padding:24px; border-radius:22px; background:var(--panel); border-color:var(--line); box-shadow:var(--portal-shadow); }
:root[data-auth-state="user"][data-theme] :is(.portal-progress-card,.portal-feedback-card,.portal-upcoming-card) { margin-bottom:22px; }
:root[data-auth-state="user"][data-theme] .portal-home-grid { gap:22px; grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
:root[data-auth-state="user"][data-theme] .portal-latest-session { margin-top:0; }
:root[data-auth-state="user"][data-theme] .portal-quick-actions { display:grid; gap:10px; margin-top:16px; }
:root[data-auth-state="user"][data-theme] .portal-quick-actions button { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:13px 16px; border:1px solid var(--line); border-radius:13px; color:var(--ink); background:var(--control); text-align:left; }
:root[data-auth-state="user"][data-theme] .portal-quick-actions button::after { content:"→"; color:var(--accent); }
:root[data-auth-state="user"][data-theme] .portal-upcoming-row { width:100%; grid-template-columns:52px minmax(0,1fr) 26px; padding:16px; gap:14px; border:1px solid color-mix(in srgb,var(--portal-success) 38%,var(--line)); border-radius:16px; color:var(--ink); background:var(--portal-success-bg); text-align:left; cursor:pointer; }
:root[data-auth-state="user"][data-theme] .portal-upcoming-date { width:52px; height:52px; border-radius:13px; color:var(--portal-success); background:color-mix(in srgb,var(--portal-success) 12%,var(--panel)); }
:root[data-auth-state="user"][data-theme] .portal-upcoming-date strong { font-size:22px; }
:root[data-auth-state="user"][data-theme] .portal-upcoming-date span { font-size:10px; }
:root[data-auth-state="user"][data-theme] .portal-upcoming-detail strong { font-size:calc(16px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-upcoming-detail span { margin-top:6px; color:var(--muted); font-size:calc(13px * var(--portal-scale)); line-height:1.4; }
:root[data-auth-state="user"][data-theme] .portal-upcoming-confirmed { color:var(--portal-success); font-size:22px; }
:root[data-auth-state="user"][data-theme] .portal-training-mode { width:min(480px,100%); padding:5px; margin-bottom:18px; border-radius:16px; background:var(--control); }
:root[data-auth-state="user"][data-theme] .portal-training-mode button { min-height:46px; border-radius:12px; }
:root[data-auth-state="user"][data-theme] .portal-training-mode button.active { background:var(--red); color:white; box-shadow:none; }
:root[data-auth-state="user"][data-theme] .portal-training-tools { padding:18px; border-radius:18px; background:var(--panel); }
:root[data-auth-state="user"][data-theme] .portal-training-week-select span { position:static; display:block; margin:0 0 6px; font-size:10px; letter-spacing:.05em; }
:root[data-auth-state="user"][data-theme] .portal-training-week-select select { height:auto; min-height:48px; padding:12px; line-height:1.4; text-align:left; }
:root[data-auth-state="user"][data-theme] .portal-training-week-arrow { align-self:end; height:48px; }
:root[data-auth-state="user"][data-theme] .portal-training-summary { font-size:calc(13px * var(--portal-scale)); padding:12px; }
:root[data-auth-state="user"][data-theme] .portal-workout-session { padding:0; }
:root[data-auth-state="user"][data-theme] .portal-workout-head { padding:20px; background:var(--control); }
:root[data-auth-state="user"][data-theme] .portal-workout-head span { font-size:calc(13px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-workout-row { grid-template-columns:minmax(160px,1.5fr) repeat(3,minmax(70px,.7fr)); padding:20px; gap:16px; }
:root[data-auth-state="user"][data-theme] .portal-workout-row strong { font-size:calc(15px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] :is(.portal-workout-name span,.portal-workout-note,.portal-workout-cell small,.portal-workout-trend) { font-size:calc(12px * var(--portal-scale)); line-height:1.5; }
:root[data-auth-state="user"][data-theme] .portal-workout-trend.progress { color:var(--portal-success); }
:root[data-auth-state="user"][data-theme] .portal-workout-trend.stable { color:var(--muted); }
:root[data-auth-state="user"][data-theme] :is(.portal-chart-caption,.portal-chart-legend,.portal-chart-summary,.portal-chart-summary span,.portal-chart-summary strong) { font-size:calc(13px * var(--portal-scale)); line-height:1.5; }
:root[data-auth-state="user"][data-theme] .portal-chart-scroll { margin-top:16px; }
:root[data-auth-state="user"][data-theme] .portal-chart-stats { gap:12px; margin-top:16px; }
:root[data-auth-state="user"][data-theme] .portal-chart-stats div { padding:14px; border-radius:13px; }
:root[data-auth-state="user"][data-theme] .portal-chart-stats span { font-size:calc(11px * var(--portal-scale)); text-transform:none; }
:root[data-auth-state="user"][data-theme] .portal-chart-stats strong { font-size:calc(16px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-chart-trend { font-size:calc(12px * var(--portal-scale)); color:var(--portal-success); background:var(--portal-success-bg); }
:root[data-auth-state="user"][data-theme] .portal-week-picker { padding:16px; border-radius:20px; background:var(--control); }
:root[data-auth-state="user"][data-theme] .portal-week-head { grid-template-columns:44px minmax(0,1fr) 44px; }
:root[data-auth-state="user"][data-theme] .portal-week-arrow { width:44px; height:44px; }
:root[data-auth-state="user"][data-theme] .portal-week-title { display:flex; flex-wrap:wrap; justify-content:center; gap:0 5px; font-size:calc(15px * var(--portal-scale)); color:var(--ink); line-height:1.5; }
:root[data-auth-state="user"][data-theme] .portal-week-title span { white-space:nowrap; }
:root[data-auth-state="user"][data-theme] .portal-reservation-days { grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; overflow:visible; }
:root[data-auth-state="user"][data-theme] .portal-day-button { min-height:94px; border-radius:15px; padding:12px 4px; color:var(--ink); background:var(--panel); }
:root[data-auth-state="user"][data-theme] .portal-day-button.selected { background:var(--red); color:white; box-shadow:none; }
:root[data-auth-state="user"][data-theme] .portal-day-button.selected :is(.portal-day-weekday,.portal-day-month) { color:white; }
:root[data-auth-state="user"][data-theme] :is(.portal-day-weekday,.portal-day-month) { font-size:calc(11px * var(--portal-scale)); color:var(--muted); }
:root[data-auth-state="user"][data-theme] .portal-day-number { font-size:calc(26px * var(--portal-scale)); margin:5px 0; }
:root[data-auth-state="user"][data-theme] .portal-day-today { font-size:9px; background:var(--panel); color:var(--accent); }
:root[data-auth-state="user"][data-theme] .portal-day-reservation-dot { background:var(--portal-success); width:6px; height:6px; }
:root[data-auth-state="user"][data-theme] .portal-day-button.selected .portal-day-reservation-dot { background:white; }
:root[data-auth-state="user"][data-theme] .portal-reservation-status { padding:14px 16px; border-radius:13px; color:var(--ink); background:color-mix(in srgb,var(--blue) 8%,var(--panel)); font-size:calc(14px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-slot-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
:root[data-auth-state="user"][data-theme] .portal-slot-card { display:flex; flex-direction:column; align-items:stretch; gap:14px; padding:20px; border-radius:20px; background:var(--panel); border-color:var(--line); }
:root[data-auth-state="user"][data-theme] .portal-slot-top { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:12px; }
:root[data-auth-state="user"][data-theme] .portal-slot-avatar { width:36px; height:36px; flex:0 0 36px; font-size:12px; }
:root[data-auth-state="user"][data-theme] .portal-slot-participant-names { flex:1; }
:root[data-auth-state="user"][data-theme] .portal-slot-participant-names span { white-space:normal; overflow-wrap:anywhere; }
:root[data-auth-state="user"][data-theme] .portal-slot-card.reserved { background:var(--portal-success-bg); border-color:var(--portal-success); box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--portal-success) 35%,transparent); }
:root[data-auth-state="user"][data-theme][data-text-size] .portal-slot-time { font-size:calc(19px * var(--portal-scale)); color:var(--ink); white-space:normal; line-height:1.3; }
:root[data-auth-state="user"][data-theme][data-text-size] :is(.portal-slot-places,.portal-slot-participant-names) { font-size:calc(13px * var(--portal-scale)); color:var(--muted); line-height:1.5; }
:root[data-auth-state="user"][data-theme] .portal-slot-participants { padding:10px 0; min-height:48px; }
:root[data-auth-state="user"][data-theme] .portal-slot-participant-names strong { font-size:calc(14px * var(--portal-scale)); color:var(--ink); }
:root[data-auth-state="user"][data-theme] .portal-slot-held-seat { display:flex; align-items:center; gap:12px; padding:12px 14px; border:1px solid var(--blue); border-radius:14px; background:color-mix(in srgb,var(--blue) 10%,var(--panel)); }
:root[data-auth-state="user"][data-theme] .portal-slot-held-seat strong { color:var(--ink); font-size:calc(14px * var(--portal-scale)); line-height:1.4; }
:root[data-auth-state="user"][data-theme] .portal-slot-held-seat small { display:block; margin-top:3px; color:var(--muted); font-size:calc(12px * var(--portal-scale)); line-height:1.4; }
:root[data-auth-state="user"][data-theme] .portal-slot-held-icon { display:grid; place-items:center; flex:0 0 36px; height:36px; border-radius:11px; background:var(--control); color:var(--blue); }
:root[data-auth-state="user"][data-theme] .portal-slot-card button { width:100%; min-height:48px; padding:12px; border-radius:13px; line-height:1.35; }
:root[data-auth-state="user"][data-theme] .portal-slot-card button.book { background:var(--red); color:white; border-color:var(--red); }
:root[data-auth-state="user"][data-theme] .portal-slot-card.reserved button.cancel { background:var(--reservation); border-color:var(--reservation); color:white; }
:root[data-auth-state="user"][data-theme] .portal-commerce-balance-card { padding:24px; margin-bottom:22px; border-radius:22px; background:linear-gradient(120deg,color-mix(in srgb,var(--blue) 12%,var(--panel)),var(--panel)); border-color:var(--line); }
:root[data-auth-state="user"][data-theme] .portal-commerce-balance-card > strong { font-size:calc(26px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-commerce-balance-card > small { font-size:calc(14px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-commerce-balance-action { margin-top:12px; color:var(--blue); font-size:calc(13px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] :is(.portal-commerce-tabs,.portal-plan-tabs) { margin-bottom:20px; }
:root[data-auth-state="user"][data-theme] .portal-plan-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
:root[data-auth-state="user"][data-theme] .portal-plan-card { gap:14px; padding:24px; border-radius:20px; background:var(--panel); box-shadow:var(--portal-shadow); }
:root[data-auth-state="user"][data-theme] .portal-plan-card strong { font-size:calc(20px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-plan-card small { font-size:calc(11px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-plan-price { font-size:calc(28px * var(--portal-scale)); color:var(--accent); }
:root[data-auth-state="user"][data-theme] :is(.portal-plan-price span,.portal-plan-benefit,.portal-plan-discount) { font-size:calc(13px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-plan-card.selected { border-color:var(--red); background:color-mix(in srgb,var(--red) 6%,var(--panel)); }
:root[data-auth-state="user"][data-theme] .portal-checkout { padding:24px; border-radius:22px; border-color:var(--line); }
:root[data-auth-state="user"][data-theme] :is(.portal-checkout-summary,.portal-commerce-consents,.portal-purchase-fiscal-fields) { padding:20px; border-radius:16px; background:var(--control); }
:root[data-auth-state="user"][data-theme] :is(.portal-consent-point,.portal-commerce-consent small,.portal-consent-legal,.portal-commerce-acting small) { font-size:calc(13px * var(--portal-scale)); line-height:1.5; }
:root[data-auth-state="user"][data-theme] .portal-commerce-consent strong { font-size:calc(15px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-checkout-actions { flex-wrap:wrap; gap:12px; }
:root[data-auth-state="user"][data-theme] .portal-checkout-actions button { padding:13px 20px; min-height:48px; }
:root[data-auth-state="user"][data-theme] .portal-profile-intro { gap:22px; margin-bottom:22px; }
:root[data-auth-state="user"][data-theme] .portal-profile-identity { padding:26px; gap:20px; background:linear-gradient(125deg,color-mix(in srgb,var(--red) 8%,var(--panel)),var(--panel)); }
:root[data-auth-state="user"][data-theme] .portal-profile-tag { padding:7px 10px; font-size:calc(11px * var(--portal-scale)); border-radius:999px; color:var(--muted); background:var(--control); }
:root[data-auth-state="user"][data-theme] .portal-profile-tag.active { color:var(--portal-success); background:var(--portal-success-bg); }
:root[data-auth-state="user"][data-theme] .portal-profile-layout { grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:22px; }
:root[data-auth-state="user"][data-theme] :is(.portal-profile-settings,.portal-profile-bottom-grid) { gap:22px; }
:root[data-auth-state="user"][data-theme] .portal-profile-bottom-grid { margin-top:22px; }
:root[data-auth-state="user"][data-theme] .portal-section-heading { gap:16px; margin-bottom:20px; }
:root[data-auth-state="user"][data-theme] .portal-profile-plan-grid { grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr)); gap:14px; }
:root[data-auth-state="user"][data-theme] .portal-profile-plan-card { padding:20px; border-radius:18px; background:var(--control); }
:root[data-auth-state="user"][data-theme] .portal-profile-plan-card h4 { font-size:calc(18px * var(--portal-scale)); line-height:1.3; }
:root[data-auth-state="user"][data-theme] .portal-plan-kind { font-size:calc(11px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-plan-percent { font-size:calc(26px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-plan-meter { height:10px; margin:18px 0 14px; }
:root[data-auth-state="user"][data-theme] .portal-profile-plan-balance strong { font-size:calc(14px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] :is(.portal-profile-plan-balance span,.portal-profile-plan-dates dt,.portal-profile-plan-dates dd) { font-size:calc(12px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-profile-editor-section .profile-card { gap:18px; }
:root[data-auth-state="user"][data-theme] .portal-main :is(.profile-field label,.profile-field label > small,.profile-photo-copy p,.profile-edit-toolbar span,.profile-photo-input span,.profile-billing label) { font-size:calc(13px * var(--portal-scale)); text-transform:none; letter-spacing:0; line-height:1.5; }
:root[data-auth-state="user"][data-theme] .profile-field :is(input,select),
:root[data-auth-state="user"][data-theme] .portal-password-form input { width:100%; min-width:0; height:auto; min-height:50px; padding:13px 14px; border:1px solid var(--line); border-radius:12px; background:var(--panel); color:var(--ink); line-height:1.4; }
:root[data-auth-state="user"][data-theme] .profile-field :is(input,select):disabled { background:var(--control); color:var(--muted); opacity:1; -webkit-text-fill-color:var(--muted); }
:root[data-auth-state="user"][data-theme] .profile-edit-toolbar { flex-wrap:wrap; padding:16px; }
:root[data-auth-state="user"][data-theme] .profile-edit-toolbar strong { font-size:calc(14px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-preference-group { border-radius:16px; background:var(--control); margin-top:12px; }
:root[data-auth-state="user"][data-theme] .portal-preference-group > summary { padding:16px; min-height:72px; }
:root[data-auth-state="user"][data-theme] .portal-preference-group > summary::after { color:var(--accent); }
:root[data-auth-state="user"][data-theme] .portal-preference-group > summary strong { font-size:calc(15px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-preference-group > summary small { font-size:calc(12px * var(--portal-scale)); line-height:1.5; }
:root[data-auth-state="user"][data-theme] .portal-preference-content { padding:0 16px 14px; }
:root[data-auth-state="user"][data-theme] .portal-settings-row { padding:16px 0; gap:14px; }
:root[data-auth-state="user"][data-theme] .portal-settings-row > div:first-child { min-width:0; flex:1; }
:root[data-auth-state="user"][data-theme] .portal-settings-row strong { font-size:calc(14px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-settings-row span { font-size:calc(12px * var(--portal-scale)); line-height:1.5; }
:root[data-auth-state="user"][data-theme] .portal-settings-row select { height:auto; min-height:46px; width:auto; max-width:100%; padding:10px; flex:0 1 150px; }
:root[data-auth-state="user"][data-theme] .portal-settings-row .switch { flex:0 0 52px; min-height:44px; display:flex; align-items:center; }
:root[data-auth-state="user"][data-theme] .portal-text-size-options { width:100%; display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; }
:root[data-auth-state="user"][data-theme] .portal-text-size-option { padding:10px 4px; border-radius:11px; }
:root[data-auth-state="user"][data-theme] .portal-text-size-option.active { background:var(--red); border-color:var(--red); color:white; }
:root[data-auth-state="user"][data-theme] .portal-password-form { gap:12px; }
:root[data-auth-state="user"][data-theme] .portal-password-form > label { display:grid; gap:8px; color:var(--muted); font-size:calc(13px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-password-form button[type="submit"] { background:var(--red); color:white; border:0; border-radius:12px; padding:14px; }
:root[data-auth-state="user"][data-theme] .portal-profile-link { min-height:48px; padding:14px; font-size:calc(14px * var(--portal-scale)); color:var(--ink); }
:root[data-auth-state="user"][data-theme] .portal-invoice { padding:16px; border-radius:14px; background:var(--control); gap:10px; }
:root[data-auth-state="user"][data-theme] .portal-invoice :is(strong,span,a,b) { font-size:calc(13px * var(--portal-scale)); line-height:1.5; }
:root[data-auth-state="user"][data-theme] .portal-invoice a { padding:12px; border-radius:12px; color:var(--blue); }
:root[data-auth-state="user"][data-theme] :is(.portal-email-verification,.portal-delegated-management) { padding:22px; border-radius:20px; background:var(--panel); }
:root[data-auth-state="user"][data-theme] .portal-delegated-management :is(h4,strong) { font-size:calc(15px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-delegated-management :is(small,label,.portal-delegated-permission span,.portal-delegated-list p) { font-size:calc(13px * var(--portal-scale)); line-height:1.5; }
:root[data-auth-state="user"][data-theme] .portal-delegated-form-grid { gap:16px; }
:root[data-auth-state="user"][data-theme] .portal-delegated-field :is(input,textarea) { padding:13px; background:var(--control); color:var(--ink); }
:root[data-auth-state="user"][data-theme] .portal-delegated-compact-switcher { min-width:0; flex:0 1 260px; }
:root[data-auth-state="user"][data-theme] .portal-delegated-compact-switcher select { min-height:48px; font-size:calc(14px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-feedback-question { grid-template-columns:minmax(0,1fr) auto; padding:16px; border-radius:16px; }
:root[data-auth-state="user"][data-theme] .portal-feedback-question strong { font-size:calc(15px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-feedback-question small { font-size:calc(13px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-feedback-scale span { width:44px; height:44px; font-size:calc(14px * var(--portal-scale)); border-radius:12px; }
:root[data-auth-state="user"][data-theme] .portal-feedback-question:focus-within { outline:2px solid var(--blue); outline-offset:2px; }
:root[data-auth-state="user"][data-theme] .portal-feedback-comment { font-size:calc(13px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-notification-item { display:grid; grid-template-columns:9px minmax(0,1fr) auto; align-items:start; padding:16px; border-radius:16px; background:var(--control); }
:root[data-auth-state="user"][data-theme] .portal-notification-item strong { font-size:calc(15px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-notification-item small { font-size:calc(12px * var(--portal-scale)); color:var(--muted); }
:root[data-auth-state="user"][data-theme] .portal-notification-card:has(.empty-history) { display:flex; align-items:center; flex-wrap:wrap; gap:12px; padding:16px 22px; }
:root[data-auth-state="user"][data-theme] .portal-notification-card:has(.empty-history) .empty-history { padding:0; text-align:left; }
:root[data-auth-state="user"][data-theme] .portal-notification-delete { position:static; width:44px; height:44px; flex:0 0 44px; }
:root[data-auth-state="user"][data-theme] .portal-badges-card .badge-card { min-height:140px; padding:20px; }
:root[data-auth-state="user"][data-theme] .portal-badges-card .badge-card :is(p,span) { font-size:calc(13px * var(--portal-scale)); line-height:1.5; }
:root[data-auth-state="user"][data-theme] .empty-history { padding:24px 16px; font-size:calc(14px * var(--portal-scale)); line-height:1.6; border-radius:16px; color:var(--muted); }
:root[data-auth-state="user"][data-theme] .portal-reservation-dialog { border-radius:24px; font-size:calc(15px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .photo-moderation-close { width:44px; height:44px; min-width:44px; min-height:44px; touch-action:manipulation; }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-impact { padding:20px; border-radius:18px; color:var(--ink); background:var(--control); }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-impact.refundable { border-color:var(--portal-success); background:var(--portal-success-bg); }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-impact.late { border-color:var(--accent); background:color-mix(in srgb,var(--red) 10%,var(--panel)); }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-heading { display:flex; align-items:center; gap:14px; }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-heading strong { color:var(--ink); font-size:1.3em; line-height:1.3; overflow-wrap:anywhere; }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-impact .portal-reservation-warning-icon { flex:0 0 44px; width:44px; height:44px; background:var(--accent); color:var(--portal-bg); }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-impact.refundable .portal-reservation-warning-icon { background:var(--portal-success); color:var(--portal-bg); }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-impact p { color:var(--ink); line-height:1.55; }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-timing { margin:16px 0 8px; font-weight:800; }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-countdown { display:inline-block; margin:0 0 8px; padding:8px 11px; border:1px solid var(--line); border-radius:10px; background:var(--panel); font-size:.9em; }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-submit { width:100%; margin-top:12px; min-height:48px; }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-impact.refundable + .portal-reservation-cancellation-submit { background:var(--reservation); border-color:var(--reservation); color:white; }
:root[data-auth-state="user"][data-theme] .portal-reservation-cancellation-impact.late + .portal-reservation-cancellation-submit { background:var(--red); border-color:var(--red); color:white; }
:root[data-auth-state="user"][data-theme] .portal-notification-preview-head { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; }
:root[data-auth-state="user"][data-theme] .portal-notification-preview-head h3 { margin:0; }
:root[data-auth-state="user"][data-theme] .portal-notification-preview-head button { padding:10px 14px; border:1px solid var(--line); border-radius:12px; color:var(--blue); background:var(--control); }
:root[data-auth-state="user"][data-theme] .portal-notification-preview-note { color:var(--muted); }
:root[data-auth-state="user"][data-theme] .portal-notification-center { box-sizing:border-box; width:min(740px,calc(100% - 28px)); max-height:calc(100dvh - 28px); margin:auto; padding:0; border:1px solid var(--line); border-radius:24px; color:var(--ink); background:var(--panel); box-shadow:0 22px 70px #0005; overflow:auto; font-size:calc(15px * var(--portal-scale)); }
:root[data-auth-state="user"][data-theme] .portal-notification-center::backdrop { background:#04090dc7; backdrop-filter:blur(4px); }
:root[data-auth-state="user"][data-theme] .portal-notification-center * { box-sizing:border-box; min-width:0; }
:root[data-auth-state="user"][data-theme] .portal-notification-center-head { position:sticky; top:0; z-index:2; display:flex; align-items:center; gap:16px; padding:22px; border-bottom:1px solid var(--line); background:var(--panel); }
:root[data-auth-state="user"][data-theme] .portal-notification-center-head h2 { margin:0; color:var(--ink); font-size:1.6em; line-height:1.25; }
:root[data-auth-state="user"][data-theme] .portal-notification-center-head p { margin:8px 0 0; color:var(--muted); line-height:1.5; }
:root[data-auth-state="user"][data-theme] .portal-notification-center :is(button,a) { min-height:44px; touch-action:manipulation; }
:root[data-auth-state="user"][data-theme] .portal-notification-center button { padding:10px 14px; border:1px solid var(--line); border-radius:12px; color:var(--ink); background:var(--control); font:inherit; font-weight:800; line-height:1.4; white-space:normal; overflow-wrap:anywhere; cursor:pointer; }
:root[data-auth-state="user"][data-theme] .portal-notification-center .portal-notification-center-close { flex:0 0 44px; width:44px; padding:0; font-size:24px; }
:root[data-auth-state="user"][data-theme] .portal-notification-center .portal-notification-delete { width:44px; height:44px; padding:0; }
:root[data-auth-state="user"][data-theme] .portal-notification-center-body { padding:22px; }
:root[data-auth-state="user"][data-theme] .portal-notification-center-list { display:grid; gap:12px; }
:root[data-auth-state="user"][data-theme] .portal-notification-center .portal-notification-item { margin:0; }
:root[data-auth-state="user"][data-theme] .portal-notification-center .portal-notification-item :is(strong,p,small) { overflow-wrap:anywhere; }
:root[data-auth-state="user"][data-theme] .portal-notification-center .portal-notification-item p { margin:6px 0 10px; color:var(--ink); font-size:.95em; line-height:1.55; }
:root[data-auth-state="user"][data-theme] .portal-notification-center-status { color:var(--muted); line-height:1.5; }
:root[data-auth-state="user"][data-theme] .portal-notification-center-status[role="alert"] { color:var(--accent); }
:root[data-auth-state="user"][data-theme] .portal-notification-center-footer { display:grid; gap:12px; padding:0 22px 22px; }
:root[data-auth-state="user"][data-theme] .portal-notification-center-footer .portal-notification-actions { display:flex; flex-wrap:wrap; gap:10px; margin:0; }
:root[data-auth-state="user"][data-theme] .portal-notification-center-footer .portal-notification-actions button { flex:1 1 180px; }
:root[data-auth-state="user"][data-theme] .portal-notification-center button:disabled { opacity:.6; cursor:default; }
:root[data-auth-state="user"][data-theme] .portal-notification-center [hidden] { display:none !important; }
:root[data-auth-state="user"][data-theme] .portal-mobile-nav { display:none; }
@media (max-width:1190px) {
  :root[data-auth-state="user"][data-theme] .portal-shell { grid-template-columns:190px minmax(0,1fr); gap:20px; }
  :root[data-auth-state="user"][data-theme] .portal-home-head { grid-template-columns:minmax(0,1fr) auto; padding:24px; }
  :root[data-auth-state="user"][data-theme] .portal-home-head .portal-membership-header { grid-column:1/-1; grid-row:2; }
  :root[data-auth-state="user"][data-theme] .portal-overview-grid { grid-template-columns:repeat(6,minmax(0,1fr)); }
  :root[data-auth-state="user"][data-theme] .portal-overview-grid .portal-kpi { grid-column:span 2; }
  :root[data-auth-state="user"][data-theme] .portal-overview-grid .portal-kpi:nth-last-child(-n+2) { grid-column:span 3; }
  :root[data-auth-state="user"][data-theme] :is(.portal-profile-layout,.portal-profile-bottom-grid) { grid-template-columns:1fr; }
  :root[data-auth-state="user"][data-theme] .portal-feedback-question { grid-template-columns:1fr; }
  :root[data-auth-state="user"][data-theme] .portal-slot-grid { grid-template-columns:1fr; }
}
@media (max-width:900px) {
  :root[data-auth-state="user"][data-theme] .public-stats-body { padding:24px 20px calc(112px + env(safe-area-inset-bottom)); }
  :root[data-auth-state="user"][data-theme] .portal-shell { display:block; }
  :root[data-auth-state="user"][data-theme] .portal-sidebar { display:none; }
  :root[data-auth-state="user"][data-theme] .portal-mobile-nav { position:fixed; inset:auto 16px calc(12px + env(safe-area-inset-bottom)); z-index:145; display:grid; grid-template-columns:none; grid-auto-flow:column; grid-auto-columns:minmax(0,1fr); gap:3px; max-width:620px; margin:auto; padding:7px; border:1px solid var(--line); border-radius:24px; background:var(--panel); box-shadow:0 10px 32px #0003; }
  :root[data-auth-state="user"][data-theme] .portal-mobile-nav .portal-nav-button { display:flex; flex-direction:column; gap:5px; min-height:60px; min-width:0; padding:7px 2px; border-radius:17px; color:var(--muted); text-align:center; font-size:12px; line-height:1.2; }
  :root[data-auth-state="user"][data-theme] .portal-mobile-nav .portal-nav-button > span:last-child { white-space:nowrap; font-size:clamp(9px,2.7vw,12px); }
  :root[data-auth-state="user"][data-theme] .portal-mobile-nav .portal-nav-button.active { background:color-mix(in srgb,var(--red) 12%,var(--panel)); color:var(--accent); border-color:transparent; box-shadow:none; }
  :root[data-auth-state="user"][data-theme] .portal-mobile-nav .portal-nav-button.active .portal-nav-icon { color:var(--accent); }
  :root[data-auth-state="user"][data-theme] .portal-mobile-nav .portal-nav-icon { width:24px; height:24px; }
  :root[data-auth-state="user"][data-theme] .portal-mobile-nav .portal-ui-icon { width:24px; height:24px; }
}
@media (max-width:600px) {
  :root[data-auth-state="user"][data-theme] .public-stats-head { min-height:68px; gap:10px; padding:10px 16px; }
  :root[data-auth-state="user"][data-theme] .public-stats-head h2 { font-size:17px; }
  :root[data-auth-state="user"][data-theme] .public-stats-head .eyebrow { font-size:9px; }
  :root[data-auth-state="user"][data-theme] .public-stats-close { min-width:52px; padding:0 10px; }
  :root[data-auth-state="user"][data-theme] .public-stats-body { padding:18px 14px calc(108px + env(safe-area-inset-bottom)); }
  :root[data-auth-state="user"][data-theme] .portal-page-head { flex-wrap:wrap; gap:12px; margin-bottom:20px; }
  :root[data-auth-state="user"][data-theme] .portal-home-head { padding:20px; gap:16px; border-radius:22px; }
  :root[data-auth-state="user"][data-theme] .portal-home-actions { flex-direction:column; }
  :root[data-auth-state="user"][data-theme] :is(.portal-card,.portal-profile-section) { padding:18px; }
  :root[data-auth-state="user"][data-theme] .portal-home-grid { grid-template-columns:1fr; gap:18px; }
  :root[data-auth-state="user"][data-theme] .portal-overview-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  :root[data-auth-state="user"][data-theme] .portal-overview-grid .portal-kpi { grid-column:auto; padding:16px; }
  :root[data-auth-state="user"][data-theme] .portal-overview-grid .portal-kpi:nth-last-child(-n+2) { grid-column:auto; }
  :root[data-auth-state="user"][data-theme] .portal-overview-grid .portal-kpi:last-child { grid-column:1/-1; }
  :root[data-auth-state="user"][data-theme] .portal-kpi strong { font-size:calc(24px * var(--portal-scale)); }
  :root[data-auth-state="user"][data-theme] .portal-upcoming-head { flex-wrap:wrap; }
  :root[data-auth-state="user"][data-theme] .portal-upcoming-row { grid-template-columns:44px minmax(0,1fr) 18px; padding:12px; gap:10px; }
  :root[data-auth-state="user"][data-theme] .portal-upcoming-date { width:44px; height:48px; }
  :root[data-auth-state="user"][data-theme] .portal-training-tools { grid-template-columns:1fr; padding:14px; }
  :root[data-auth-state="user"][data-theme] .portal-chart-stats { grid-template-columns:1fr; }
  :root[data-auth-state="user"][data-theme] .portal-workout-head { flex-wrap:wrap; padding:16px; }
  :root[data-auth-state="user"][data-theme] .portal-workout-row { grid-template-columns:repeat(3,minmax(0,1fr)); padding:16px; gap:14px; }
  :root[data-auth-state="user"][data-theme] .portal-workout-name { grid-column:1/-1; }
  :root[data-auth-state="user"][data-theme] .portal-week-picker { padding:10px; gap:12px; }
  :root[data-auth-state="user"][data-theme] .portal-week-head { grid-template-columns:44px minmax(0,1fr) 44px; }
  :root[data-auth-state="user"][data-theme] .portal-week-arrow { width:44px; height:44px; }
  :root[data-auth-state="user"][data-theme] .portal-reservation-days { gap:5px; }
  :root[data-auth-state="user"][data-theme] .portal-day-button { min-height:88px; padding:10px 2px; border-radius:12px; }
  :root[data-auth-state="user"][data-theme] .portal-day-number { font-size:calc(23px * var(--portal-scale)); }
  :root[data-auth-state="user"][data-theme] .portal-slot-card { padding:16px; }
  :root[data-auth-state="user"][data-theme] .portal-slot-top { align-items:start; flex-wrap:wrap; gap:7px; }
  :root[data-auth-state="user"][data-theme] .portal-plan-grid { grid-template-columns:1fr; }
  :root[data-auth-state="user"][data-theme] .portal-plan-card { padding:20px; }
  :root[data-auth-state="user"][data-theme] .portal-checkout { padding:16px; }
  :root[data-auth-state="user"][data-theme] :is(.portal-consent-points,.portal-purchase-fiscal-fields) { grid-template-columns:1fr; }
  :root[data-auth-state="user"][data-theme] .portal-checkout-actions { display:grid; grid-template-columns:1fr; }
  :root[data-auth-state="user"][data-theme] .portal-profile-identity { grid-template-columns:60px minmax(0,1fr); padding:20px; gap:14px; }
  :root[data-auth-state="user"][data-theme] .portal-profile-identity-avatar { width:60px; height:60px; }
  :root[data-auth-state="user"][data-theme] .portal-profile-identity-mark { display:none; }
  :root[data-auth-state="user"][data-theme] .portal-profile-editor-section .profile-card { grid-template-columns:1fr; }
  :root[data-auth-state="user"][data-theme] .portal-profile-editor-section .profile-photo { flex-wrap:wrap; padding:14px; }
  :root[data-auth-state="user"][data-theme] .portal-settings-row:has(select),
  :root[data-auth-state="user"][data-theme] .portal-text-size-row { flex-wrap:wrap; }
  :root[data-auth-state="user"][data-theme] .portal-settings-row select { width:100%; flex-basis:100%; }
  :root[data-auth-state="user"][data-theme] .portal-feedback-scale { justify-content:space-between; gap:5px; }
  :root[data-auth-state="user"][data-theme] .portal-badges-card .badges-grid { grid-template-columns:1fr; }
  :root[data-auth-state="user"][data-theme] .portal-notification-item { grid-template-columns:8px minmax(0,1fr) auto; padding:12px; }
  :root[data-auth-state="user"][data-theme] .portal-delegated-form-grid { grid-template-columns:1fr; }
  :root[data-auth-state="user"][data-theme] .portal-section-heading:has(.portal-delegated-compact-switcher) { flex-wrap:wrap; }
  :root[data-auth-state="user"][data-theme] .portal-delegated-compact-switcher { flex-basis:100%; }
}
@media (prefers-reduced-motion:reduce) {
  :root[data-auth-state="user"][data-theme] .public-stats-body { scroll-behavior:auto; }
  :root[data-auth-state="user"][data-theme] .portal-shell * { transition:none; }
}
@media (max-width:360px) {
  /* Leave room for classic desktop scrollbars when a browser emulates a
     narrow phone: the five day buttons must still be at least 44 px wide. */
  :root[data-auth-state="user"][data-theme] .public-stats-body { padding-inline:10px; }
  :root[data-auth-state="user"][data-theme] .portal-card { padding:14px; }
  :root[data-auth-state="user"][data-theme] .portal-week-picker { padding:6px; }
  :root[data-auth-state="user"][data-theme] .portal-reservation-days { gap:4px; }
}
