/* v62: consistent controls, clearer light palettes, denser layouts and responsive provider lists. */
:root{--motion-fast:150ms;--motion-standard:230ms;--motion-ease:cubic-bezier(.2,.72,.25,1)}

/* Give every light palette readable text and clear boundaries without white glare. */
html[data-theme="light"]{--bg:#e8edf4;--card:#f9fbfe;--card-2:#f1f5f9;--surface:#e4eaf2;--text:#192839;--muted:#586a7e;--border:#c9d3df;--border-strong:#aebdcc;--primary:#4d5dcf;--primary-2:#3849b2;--accent:#4356c5;--accentText:#fff;--danger:#a8323e;--ok:#087348;--warn:#805600;--shadow:0 16px 38px rgba(29,47,69,.11)}
html[data-theme="pearl"]{--bg:#e9edf4;--card:#fbfcff;--card-2:#f1f3f8;--surface:#e5eaf2;--text:#20283a;--muted:#5c687e;--border:#cbd3e1;--border-strong:#aebbd0;--primary:#4c61c8;--primary-2:#354ba9;--accent:#4258b8;--accentText:#fff;--danger:#a8323e;--ok:#087348;--warn:#805600}
html[data-theme="ivory"]{--bg:#eee8dc;--card:#fffcf5;--card-2:#f6f0e4;--surface:#eae1d1;--text:#342a1d;--muted:#695b49;--border:#d8cbb6;--border-strong:#bba98c;--primary:#865728;--primary-2:#69411e;--accent:#765022;--accentText:#fff;--danger:#a8323e;--ok:#176341;--warn:#805600}
html[data-theme="sky"]{--bg:#e5edf5;--card:#f8fbff;--card-2:#edf4fa;--surface:#dce8f2;--text:#1c3247;--muted:#516b82;--border:#c3d3e0;--border-strong:#9fb6c8;--primary:#246f9f;--primary-2:#18557d;--accent:#1e648f;--accentText:#fff;--danger:#a8323e;--ok:#087348;--warn:#805600}
html[data-theme="rose"]{--bg:#f0e7eb;--card:#fffafd;--card-2:#f8f0f4;--surface:#f0e3e9;--text:#3a2732;--muted:#745768;--border:#dfc9d4;--border-strong:#c4a6b5;--primary:#a83e68;--primary-2:#852d50;--accent:#9d385f;--accentText:#fff;--danger:#a8323e;--ok:#176341;--warn:#805600}
html[data-theme="sage"]{--bg:#e7ede7;--card:#f9fcf8;--card-2:#eff5ee;--surface:#e1ebe0;--text:#20372a;--muted:#526e5b;--border:#c7d7c6;--border-strong:#a3bda5;--primary:#33734f;--primary-2:#245a3b;--accent:#2f6b49;--accentText:#fff;--danger:#a8323e;--ok:#087348;--warn:#805600}
html[data-theme="sand"]{--bg:#eee8dd;--card:#fffdf8;--card-2:#f7f0e4;--surface:#eadfce;--text:#362b1f;--muted:#6c5944;--border:#d9c9b1;--border-strong:#bca88a;--primary:#895722;--primary-2:#694119;--accent:#7d4f1e;--accentText:#fff;--danger:#a8323e;--ok:#176341;--warn:#805600}
html[data-theme="lemon"]{--bg:#efeddd;--card:#fffef7;--card-2:#f7f4e4;--surface:#ece7cf;--text:#333019;--muted:#68613a;--border:#d9d1a6;--border-strong:#b9ad70;--primary:#776600;--primary-2:#5c5000;--accent:#6f6000;--accentText:#fff;--danger:#a8323e;--ok:#176341;--warn:#805600}
html[data-theme="paper"]{--bg:#e8e8e1;--card:#fbfbf6;--card-2:#f2f2eb;--surface:#e3e4da;--text:#252a28;--muted:#59625d;--border:#cbcec4;--border-strong:#a9afa3;--primary:#3f6257;--primary-2:#2d4d42;--accent:#36594e;--accentText:#fff;--danger:#a8323e;--ok:#087348;--warn:#805600}
html[data-theme="ice"],html[data-theme="cloud"]{--bg:#e7edf3;--card:#fafcff;--card-2:#f0f5f9;--surface:#e1e9f0;--text:#1c2d3a;--muted:#566b7a;--border:#c9d5df;--border-strong:#aabac7;--primary:#376b92;--primary-2:#285472;--accent:#326385;--accentText:#fff;--danger:#a8323e;--ok:#087348;--warn:#805600}
html[data-theme="linen"]{--bg:#ebe7df;--card:#fbfaf7;--card-2:#f4f0e9;--surface:#e6dfd4;--text:#302c25;--muted:#675e50;--border:#d4cabb;--border-strong:#b4a58e;--primary:#6f5a3e;--primary-2:#57442e;--accent:#665337;--accentText:#fff;--danger:#a8323e;--ok:#176341;--warn:#805600}
html[data-theme="mintlight"]{--bg:#e5eee9;--card:#f9fcfa;--card-2:#eef6f1;--surface:#dceae1;--text:#1d3529;--muted:#526b5c;--border:#c3d7ca;--border-strong:#9ebaa8;--primary:#287455;--primary-2:#1b5a40;--accent:#24694c;--accentText:#fff;--danger:#a8323e;--ok:#087348;--warn:#805600}
html[data-theme="lavenderlight"]{--bg:#ebe8f1;--card:#fcfbff;--card-2:#f3f0f8;--surface:#e5deef;--text:#302840;--muted:#665b79;--border:#d2c8e1;--border-strong:#b4a6ca;--primary:#70529c;--primary-2:#563d7d;--accent:#65498e;--accentText:#fff;--danger:#a8323e;--ok:#176341;--warn:#805600}
html[data-theme="blossom"]{--bg:#f0e7ed;--card:#fffafd;--card-2:#f8f0f5;--surface:#eddfe8;--text:#392738;--muted:#74596f;--border:#ddc8d8;--border-strong:#c1a1bc;--primary:#a13f7f;--primary-2:#803060;--accent:#963873;--accentText:#fff;--danger:#a8323e;--ok:#176341;--warn:#805600}
html[data-theme="light"],html[data-theme="pearl"],html[data-theme="ivory"],html[data-theme="sky"],html[data-theme="rose"],html[data-theme="sage"],html[data-theme="sand"],html[data-theme="lemon"],html[data-theme="paper"],html[data-theme="ice"],html[data-theme="linen"],html[data-theme="cloud"],html[data-theme="mintlight"],html[data-theme="lavenderlight"],html[data-theme="blossom"]{color-scheme:light}

/* Quiet login recovery links stay still; both sit on the right edge of their field. */
.loginFieldAssistStart{justify-content:flex-end;margin-top:3px;margin-bottom:1px}
.loginInlineLink{transition:none!important}
.loginInlineLink:hover{color:#aeb9cc;transform:none;animation:none}

/* Consistent button weight and interaction across the app, with a restrained lift. */
.button,.monthButton,.authMethodAction,.loginAltButton,.loginMethodsDone,.customCalendarHead button,.adminSectionHeader,.iconButton,.closeMenu,.mobileMenuHead button,.navButton,.mobileNav button{transition:transform var(--motion-fast) var(--motion-ease),background var(--motion-standard) ease,border-color var(--motion-standard) ease,box-shadow var(--motion-standard) ease,color var(--motion-standard) ease}
.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:38px;padding:8px 13px;border:1px solid color-mix(in srgb,var(--border-strong) 55%,transparent);border-radius:12px;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 92%,var(--card)),var(--surface));color:var(--text);font-weight:720;letter-spacing:-.015em;box-shadow:0 2px 7px rgba(9,18,30,.08)}
.button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 18px rgba(8,16,28,.14);border-color:color-mix(in srgb,var(--primary) 36%,var(--border))}
.button:active:not(:disabled){transform:translateY(0) scale(.985)}
.button.primary{background:linear-gradient(135deg,var(--primary),var(--primary-2));border-color:color-mix(in srgb,var(--primary) 55%,var(--border));color:#fff;box-shadow:0 5px 15px color-mix(in srgb,var(--primary) 22%,transparent)}
.button.success{background:linear-gradient(135deg,color-mix(in srgb,var(--ok) 90%,white),var(--ok));border-color:color-mix(in srgb,var(--ok) 50%,var(--border));color:#fff}
.button.danger{background:linear-gradient(135deg,color-mix(in srgb,var(--danger) 88%,white),var(--danger));border-color:color-mix(in srgb,var(--danger) 50%,var(--border));color:#fff}
.button.tiny{min-height:32px;padding:6px 10px;border-radius:10px;font-size:11px}
.button.iconOnly{width:36px;min-width:36px;padding:0}
.button:disabled{transform:none;opacity:.55;cursor:not-allowed}

/* Dense, aligned schedule tiles. The signup chip itself identifies the current user. */
.serviceActions{align-items:center;margin:10px 0 7px;padding:0 0 2px;min-height:0}
.serviceActions>.button{flex:0 0 auto;min-height:34px}
.serviceLiturgyHint{margin-top:8px;padding-top:8px}
.signupList{gap:6px;margin-top:8px;min-height:0}
.signupBadge{max-width:100%;line-height:1.25}
.signupBadge.isMine{background:color-mix(in srgb,var(--ok) 16%,var(--surface));border-color:color-mix(in srgb,var(--ok) 45%,var(--border));color:var(--ok);font-weight:750;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ok) 10%,transparent)}
.serviceDateBadges{gap:4px;margin-top:3px!important}
.serviceDateBadge{min-height:19px;padding:3px 7px;font-size:9px;line-height:1.2}
.serviceDateBadge.isAbsent{background:color-mix(in srgb,var(--danger) 13%,var(--surface));border:1px solid color-mix(in srgb,var(--danger) 35%,var(--border));color:var(--danger);font-weight:800}
.calendar>.service{min-height:0}
.service .attendanceNote,.service .attendanceReportAction{margin-top:8px}
.service .attendanceReportAction{display:grid;gap:8px;padding:10px}
.service .attendanceReportButton{justify-self:start;min-height:34px}
body.rolePriest .advancedDutyOptions{display:none!important}

/* Settings: compact groups, calm contrast, animated batches of theme cards. */
.settingsCard{border-radius:20px}
.settingsCardHeader{align-items:center}
.authMethodsSettingsCard .cardHeader p{max-width:680px}
.authMethodsGrid{align-items:stretch;gap:12px}
.providerSettingsList{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.providerSettingsRow{min-width:0;padding:9px;border-radius:13px}
.providerSettingsCopy{min-width:0}
.providerSettingsCopy>b,.providerSettingsCopy>small{overflow-wrap:anywhere}
.providerSettingsStatus{color:var(--muted)}
.authMethodUnavailable{color:var(--muted)}
.loginProviderLogo.provider-amazon,.providerSettingsGlyph.provider-amazon{background:#fff;color:#111}
.loginProviderLogo.provider-notion,.providerSettingsGlyph.provider-notion{background:#fff;color:#111}
.loginProviderLogo.provider-linkedin,.providerSettingsGlyph.provider-linkedin{background:#e7f2fc}
.loginProviderLogo.provider-spotify,.providerSettingsGlyph.provider-spotify{background:#e5f7ec}
.loginProviderLogo.provider-twitch,.providerSettingsGlyph.provider-twitch{background:#f2eaff}
.loginProviderLogo.provider-dropbox,.providerSettingsGlyph.provider-dropbox{background:#e9f1ff}
.loginProviderLogo.provider-zoom,.providerSettingsGlyph.provider-zoom{background:#eaf3ff}
.themeGrid{gap:15px}
.themeCategory{padding:13px;border-radius:16px;background:color-mix(in srgb,var(--surface) 56%,transparent);border:1px solid color-mix(in srgb,var(--border) 78%,transparent)}
.themeCategoryHeader{margin-bottom:10px}
.themeCategoryGrid{gap:8px}
.themeCard{animation:themeCardEnter .36s var(--motion-ease) both;animation-delay:calc(var(--theme-order,0)*24ms);transition:transform var(--motion-standard) var(--motion-ease),border-color var(--motion-standard) ease,box-shadow var(--motion-standard) ease,background var(--motion-standard) ease}
.themeCard:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 9px 18px rgba(7,14,26,.12)}
.themePreview{transition:filter var(--motion-standard) ease,transform var(--motion-standard) var(--motion-ease)}
.themeCard:hover .themePreview{transform:scale(1.025);filter:saturate(1.12)}
.adminUserTheme{display:flex;align-items:center;gap:6px;margin-top:5px;color:var(--muted);font-size:10px}
.adminThemeDot{width:10px;height:10px;flex:0 0 10px;border-radius:50%;background:linear-gradient(135deg,#7c5cff,#24c4b8);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 18%,transparent)}
.adminThemeButton{white-space:nowrap}
.attendanceQuickEdit{display:grid;grid-template-columns:minmax(125px,1fr) auto;align-items:center;gap:6px;min-width:225px}
.attendanceQuickEdit>.select{min-width:0;min-height:34px;padding:6px 27px 6px 9px;font-size:10px}
.attendanceQuickEdit>.button{min-height:34px}
.attendanceActions{display:block;min-width:225px}
@keyframes themeCardEnter{from{opacity:0;transform:translateY(7px) scale(.99)}to{opacity:1;transform:none}}

/* Reduce the dashboard's empty gutters and avoid stretching neighboring cards. */
.dashboardContentGrid{gap:9px!important;align-items:start}
.dashboardStatsGrid{gap:9px!important;margin-bottom:9px!important}
.dashboardHero{margin-bottom:10px!important}
.dashboardCard{align-self:start;min-width:0}
.dashboardCardGrid,.dashboardContentGrid>*{min-width:0}

/* Mobile: provider methods and admin controls become single-column, with safe tap sizes. */
@media(max-width:760px){
  .providerSettingsList{grid-template-columns:1fr}
  .settingsCard{padding:14px;border-radius:17px}
  .themeCategory{padding:10px}
  .service{padding:11px;border-radius:14px}
  .serviceDate{font-size:15px}
  .serviceTop{gap:7px}
  .dashboardContentGrid{gap:8px!important}
}
@media(max-width:480px){
  .button{min-height:40px;padding:9px 12px}
  .button.tiny{min-height:36px;padding:7px 10px}
  .providerSettingsRow{grid-template-columns:35px minmax(0,1fr) auto;gap:8px}
  .providerSettingsStatus{grid-column:2;grid-row:2;text-align:left}
  .authMethodAction{grid-column:3;grid-row:1 / span 2}
  .serviceActions>.button{min-height:36px}
  .attendanceQuickEdit{min-width:205px;grid-template-columns:minmax(115px,1fr) auto}
  .serviceDateBadges{margin-top:3px!important}
  .themeCardLabel{gap:4px}
  .dashboardHero{min-height:0!important}
}
@media(prefers-reduced-motion:reduce){
  .button,.monthButton,.authMethodAction,.loginAltButton,.loginMethodsDone,.customCalendarHead button,.adminSectionHeader,.iconButton,.closeMenu,.mobileMenuHead button,.navButton,.mobileNav button,.themeCard,.themePreview,.loginInlineLink{animation:none!important;transition:none!important}
  .button:hover,.themeCard:hover,.themePreview:hover{transform:none!important}
}
