/* Dark mode is opt-in through the root data-theme. System preference is resolved by the app. */
:root[data-theme="dark"]{color-scheme:dark;--bg:#151a16;--paper:#202620;--ink:#f0f1e9;--muted:#b0b8a7;--line:#3a4437;--red:#f0836d;--red-dark:#ff9b86;--red-soft:#402a24;--sage:#2d382a;--green:#b9cf9e;background:var(--bg);color:var(--ink)}
:root[data-theme="light"]{color-scheme:light}
:root[data-theme="dark"] body{background:var(--bg);color:var(--ink)}
:root[data-theme="dark"] button:focus-visible,:root[data-theme="dark"] a:focus-visible,:root[data-theme="dark"] input:focus-visible,:root[data-theme="dark"] textarea:focus-visible,:root[data-theme="dark"] select:focus-visible{outline-color:#9dc4ff}
:root[data-theme="dark"] dialog{color:var(--ink);background:var(--paper)}
:root[data-theme="dark"] input,:root[data-theme="dark"] select,:root[data-theme="dark"] textarea{color:var(--ink);background-color:var(--paper);border-color:var(--line)}
:root[data-theme="dark"] input::placeholder,:root[data-theme="dark"] textarea::placeholder{color:#939e8a;opacity:1}
:root[data-theme="dark"] input[type=checkbox],:root[data-theme="dark"] input[type=radio]{accent-color:var(--red)}

/* Existing surfaces with explicit light colours. */
:root[data-theme="dark"] .club-hero p,
:root[data-theme="dark"] .club-hero>.eyebrow,
:root[data-theme="dark"] .exercise-edit .icon,
:root[data-theme="dark"] .exercise-equipment,
:root[data-theme="dark"] .exercise-num,
:root[data-theme="dark"] .help-strip p,
:root[data-theme="dark"] .page-footer,
:root[data-theme="dark"] .quick-card .eyebrow,
:root[data-theme="dark"] .quick-card .summary-top .icon,
:root[data-theme="dark"] .save-status,
:root[data-theme="dark"] .session-name::placeholder,
:root[data-theme="dark"] .sidebar-section,
:root[data-theme="dark"] .small-note p{color:var(--muted)}
:root[data-theme="dark"] .activity-empty,
:root[data-theme="dark"] .activity-notes,
:root[data-theme="dark"] .cal-day-empty,
:root[data-theme="dark"] .cal-day:hover,
:root[data-theme="dark"] .cal-session-card.skipped,
:root[data-theme="dark"] .cal-week-overview,
:root[data-theme="dark"] .climb-board-settings,
:root[data-theme="dark"] .climb-connection-live,
:root[data-theme="dark"] .climb-detail-notes,
:root[data-theme="dark"] .climb-draft-route,
:root[data-theme="dark"] .climb-empty,
:root[data-theme="dark"] .climb-form-intro,
:root[data-theme="dark"] .climb-pyramid,
:root[data-theme="dark"] .climb-week,
:root[data-theme="dark"] .editor-art-heading,
:root[data-theme="dark"] .effort-choice:hover,
:root[data-theme="dark"] .exercise-art,
:root[data-theme="dark"] .exercise-choice .choice-visual,
:root[data-theme="dark"] .exercise-choice-main:hover,
:root[data-theme="dark"] .feeling-choice:hover,
:root[data-theme="dark"] .help-strip,
:root[data-theme="dark"] .icon-btn:hover,
:root[data-theme="dark"] .install-preview,
:root[data-theme="dark"] .mobile-nav,
:root[data-theme="dark"] .mobile-start,
:root[data-theme="dark"] .mode-control,
:root[data-theme="dark"] .nav-link:hover,
:root[data-theme="dark"] .session-options,
:root[data-theme="dark"] .shared-exercise-preview,
:root[data-theme="dark"] .stepper button:hover,
:root[data-theme="dark"] .summary-card,
:root[data-theme="dark"] .weekly-card,
:root[data-theme="dark"] .weight-presets button{background:var(--paper)}
:root[data-theme="dark"] .account-current p,
:root[data-theme="dark"] .account-identity>.icon,
:root[data-theme="dark"] .account-reset-note>.icon,
:root[data-theme="dark"] .activity-card-bottom .quiet-btn,
:root[data-theme="dark"] .activity-card-metrics strong,
:root[data-theme="dark"] .activity-card-metrics strong small,
:root[data-theme="dark"] .activity-card-metrics>span,
:root[data-theme="dark"] .activity-card-title>.icon,
:root[data-theme="dark"] .activity-card-top>span:first-child,
:root[data-theme="dark"] .activity-detail-exercise small,
:root[data-theme="dark"] .activity-detail-exercise span:not(.exercise-thumb),
:root[data-theme="dark"] .activity-detail-stats span,
:root[data-theme="dark"] .activity-detail-stats strong small,
:root[data-theme="dark"] .activity-empty p,
:root[data-theme="dark"] .activity-exercise-preview .icon,
:root[data-theme="dark"] .activity-exercise-preview small,
:root[data-theme="dark"] .activity-notes .eyebrow,
:root[data-theme="dark"] .activity-notes p,
:root[data-theme="dark"] .activity-stats article>.eyebrow,
:root[data-theme="dark"] .activity-stats article>div>span,
:root[data-theme="dark"] .activity-stats strong small,
:root[data-theme="dark"] .add-exercise,
:root[data-theme="dark"] .board-settings summary,
:root[data-theme="dark"] .builder-steps,
:root[data-theme="dark"] .builder-steps b,
:root[data-theme="dark"] .cal-day-dots b,
:root[data-theme="dark"] .cal-day-empty p,
:root[data-theme="dark"] .cal-day-empty>.icon,
:root[data-theme="dark"] .cal-day-top>small,
:root[data-theme="dark"] .cal-event-label,
:root[data-theme="dark"] .cal-event-more,
:root[data-theme="dark"] .cal-legend,
:root[data-theme="dark"] .cal-logged-time,
:root[data-theme="dark"] .cal-plan-actions .icon-btn,
:root[data-theme="dark"] .cal-plan-actions .quiet-btn,
:root[data-theme="dark"] .cal-plan-content p,
:root[data-theme="dark"] .cal-plan-content small,
:root[data-theme="dark"] .cal-plan-meta,
:root[data-theme="dark"] .cal-preview-title,
:root[data-theme="dark"] .cal-routines-empty,
:root[data-theme="dark"] .cal-routines-heading>span,
:root[data-theme="dark"] .cal-schedule-preview p strong,
:root[data-theme="dark"] .cal-schedule-preview small,
:root[data-theme="dark"] .cal-selected-heading .eyebrow,
:root[data-theme="dark"] .cal-selected-heading p,
:root[data-theme="dark"] .cal-session-exercises,
:root[data-theme="dark"] .cal-session-meta,
:root[data-theme="dark"] .cal-session-meta strong,
:root[data-theme="dark"] .cal-session-top,
:root[data-theme="dark"] .cal-skip,
:root[data-theme="dark"] .cal-storage-note,
:root[data-theme="dark"] .cal-week-column,
:root[data-theme="dark"] .cal-week-copy .eyebrow,
:root[data-theme="dark"] .cal-week-copy p,
:root[data-theme="dark"] .cal-week-copy strong,
:root[data-theme="dark"] .cal-week-minutes,
:root[data-theme="dark"] .cal-weekday-fieldset legend,
:root[data-theme="dark"] .cal-weekday-fieldset p,
:root[data-theme="dark"] .cal-weekday-labels,
:root[data-theme="dark"] .cal-weeks-field>span,
:root[data-theme="dark"] .choice-category,
:root[data-theme="dark"] .choice-check,
:root[data-theme="dark"] .climb-attempt-field label,
:root[data-theme="dark"] .climb-attempt-field small,
:root[data-theme="dark"] .climb-benchmark,
:root[data-theme="dark"] .climb-check,
:root[data-theme="dark"] .climb-connection-live p,
:root[data-theme="dark"] .climb-connection-section p,
:root[data-theme="dark"] .climb-data-tools>.icon-btn,
:root[data-theme="dark"] .climb-detail-feedback,
:root[data-theme="dark"] .climb-detail-notes .eyebrow,
:root[data-theme="dark"] .climb-detail-notes p,
:root[data-theme="dark"] .climb-detail-place span,
:root[data-theme="dark"] .climb-detail-place>.icon,
:root[data-theme="dark"] .climb-detail-route p,
:root[data-theme="dark"] .climb-detail-stats span,
:root[data-theme="dark"] .climb-draft-route-open span,
:root[data-theme="dark"] .climb-draft-route>.icon-btn,
:root[data-theme="dark"] .climb-empty p,
:root[data-theme="dark"] .climb-empty>.icon,
:root[data-theme="dark"] .climb-form-intro small,
:root[data-theme="dark"] .climb-form-intro>span:last-child,
:root[data-theme="dark"] .climb-form-section-title p,
:root[data-theme="dark"] .climb-form-section-title>span,
:root[data-theme="dark"] .climb-grade>small,
:root[data-theme="dark"] .climb-log-card-foot>span,
:root[data-theme="dark"] .climb-log-date,
:root[data-theme="dark"] .climb-log-metrics strong,
:root[data-theme="dark"] .climb-log-metrics strong small,
:root[data-theme="dark"] .climb-log-metrics>span,
:root[data-theme="dark"] .climb-log-open p,
:root[data-theme="dark"] .climb-log-open small,
:root[data-theme="dark"] .climb-more-chip,
:root[data-theme="dark"] .climb-pyramid-empty,
:root[data-theme="dark"] .climb-pyramid-group h4,
:root[data-theme="dark"] .climb-pyramid-group>p,
:root[data-theme="dark"] .climb-pyramid-intro,
:root[data-theme="dark"] .climb-pyramid-note,
:root[data-theme="dark"] .climb-pyramid-row>b,
:root[data-theme="dark"] .climb-pyramid-row>span,
:root[data-theme="dark"] .climb-reference-settings summary,
:root[data-theme="dark"] .climb-results-count,
:root[data-theme="dark"] .climb-route-chip,
:root[data-theme="dark"] .climb-route-chip b,
:root[data-theme="dark"] .climb-route-notes,
:root[data-theme="dark"] .climb-route-reference,
:root[data-theme="dark"] .climb-search-row>select,
:root[data-theme="dark"] .climb-search>.icon,
:root[data-theme="dark"] .climb-side-card h3,
:root[data-theme="dark"] .climb-side-card p,
:root[data-theme="dark"] .climb-side-symbol,
:root[data-theme="dark"] .climb-source-link,
:root[data-theme="dark"] .climb-start-card small,
:root[data-theme="dark"] .climb-start-card>.icon,
:root[data-theme="dark"] .climb-storage-note,
:root[data-theme="dark"] .climb-week-stats span,
:root[data-theme="dark"] .climb-week-title .eyebrow,
:root[data-theme="dark"] .climb-week-title>span:last-child,
:root[data-theme="dark"] .club-benefits article>.icon,
:root[data-theme="dark"] .club-community-empty>.icon,
:root[data-theme="dark"] .club-member-disciplines>span,
:root[data-theme="dark"] .club-member-place,
:root[data-theme="dark"] .club-member-seal,
:root[data-theme="dark"] .completed-exercise-name small,
:root[data-theme="dark"] .completed-exercises-heading p,
:root[data-theme="dark"] .completion .completion-log-note,
:root[data-theme="dark"] .completion .secondary-btn,
:root[data-theme="dark"] .completion p,
:root[data-theme="dark"] .completion-discard,
:root[data-theme="dark"] .completion-stats span,
:root[data-theme="dark"] .dialog-copy,
:root[data-theme="dark"] .duration-fields span,
:root[data-theme="dark"] .effort-anchors,
:root[data-theme="dark"] .effort-selection,
:root[data-theme="dark"] .effort-selection .quiet-btn,
:root[data-theme="dark"] .exercise-choice .exercise-thumb.choice-visual .icon,
:root[data-theme="dark"] .exercise-choice small,
:root[data-theme="dark"] .feedback-fieldset legend,
:root[data-theme="dark"] .feedback-fieldset legend>span,
:root[data-theme="dark"] .feeling-chip,
:root[data-theme="dark"] .feeling-chip.unrated,
:root[data-theme="dark"] .field label,
:root[data-theme="dark"] .field small,
:root[data-theme="dark"] .field-label,
:root[data-theme="dark"] .form-info,
:root[data-theme="dark"] .heading-mark .star,
:root[data-theme="dark"] .help-strip .text-button,
:root[data-theme="dark"] .help-strip-icon,
:root[data-theme="dark"] .home-art-word,
:root[data-theme="dark"] .home-empty-history>.icon,
:root[data-theme="dark"] .home-next-head,
:root[data-theme="dark"] .home-next>p,
:root[data-theme="dark"] .home-plan-date,
:root[data-theme="dark"] .home-plan-empty p,
:root[data-theme="dark"] .home-plan-empty>.icon,
:root[data-theme="dark"] .home-programs-link .text-button,
:root[data-theme="dark"] .home-programs-link>span,
:root[data-theme="dark"] .home-quick-grid>button>.icon,
:root[data-theme="dark"] .home-quick-grid>button>span,
:root[data-theme="dark"] .home-recent-effort,
:root[data-theme="dark"] .home-recent-row>.icon,
:root[data-theme="dark"] .home-recent-symbol.climbing,
:root[data-theme="dark"] .home-stat-symbol,
:root[data-theme="dark"] .install-section ol,
:root[data-theme="dark"] .legend,
:root[data-theme="dark"] .library-item>.icon,
:root[data-theme="dark"] .library-search .icon,
:root[data-theme="dark"] .live-duration span,
:root[data-theme="dark"] .log-completed-button,
:root[data-theme="dark"] .log-note h3,
:root[data-theme="dark"] .log-note-symbol,
:root[data-theme="dark"] .log-note>.log-small,
:root[data-theme="dark"] .log-note>p,
:root[data-theme="dark"] .mobile-nav button,
:root[data-theme="dark"] .mobile-start-caption,
:root[data-theme="dark"] .mode-control button,
:root[data-theme="dark"] .mode-control button.active,
:root[data-theme="dark"] .notice,
:root[data-theme="dark"] .personal-library-note,
:root[data-theme="dark"] .phase-badge,
:root[data-theme="dark"] .picker-selection-count,
:root[data-theme="dark"] .picker-tabs button,
:root[data-theme="dark"] .prepare-phase .phase-badge,
:root[data-theme="dark"] .prepare-phase .timer-context,
:root[data-theme="dark"] .prepare-phase .timer-next strong,
:root[data-theme="dark"] .prepare-phase .timer-note,
:root[data-theme="dark"] .profile-account-note>span,
:root[data-theme="dark"] .profile-community-preview>p,
:root[data-theme="dark"] .profile-preview-head,
:root[data-theme="dark"] .profile-preview-status,
:root[data-theme="dark"] .profile-publish-icon,
:root[data-theme="dark"] .profile-section-number,
:root[data-theme="dark"] .program-meta,
:root[data-theme="dark"] .quick-card .summary-caption,
:root[data-theme="dark"] .quick-card .summary-foot,
:root[data-theme="dark"] .quick-card .summary-stat span,
:root[data-theme="dark"] .quick-description-small,
:root[data-theme="dark"] .rest-phase .phase-badge,
:root[data-theme="dark"] .rest-phase .timer-context,
:root[data-theme="dark"] .rest-phase .timer-next strong,
:root[data-theme="dark"] .rest-phase .timer-note,
:root[data-theme="dark"] .save-personal-check,
:root[data-theme="dark"] .session-option-text,
:root[data-theme="dark"] .settings-nav,
:root[data-theme="dark"] .settings-row small,
:root[data-theme="dark"] .shared-exercise-preview p,
:root[data-theme="dark"] .small-note .icon,
:root[data-theme="dark"] .small-note strong,
:root[data-theme="dark"] .small-select,
:root[data-theme="dark"] .stepper button,
:root[data-theme="dark"] .summary-caption,
:root[data-theme="dark"] .summary-card .eyebrow,
:root[data-theme="dark"] .summary-card>.secondary-btn,
:root[data-theme="dark"] .summary-foot,
:root[data-theme="dark"] .summary-stat span,
:root[data-theme="dark"] .summary-top .icon,
:root[data-theme="dark"] .text-button,
:root[data-theme="dark"] .timer-context,
:root[data-theme="dark"] .timer-controls .round-button,
:root[data-theme="dark"] .timer-footer-top,
:root[data-theme="dark"] .timer-footnote,
:root[data-theme="dark"] .timer-next,
:root[data-theme="dark"] .timer-next strong,
:root[data-theme="dark"] .timer-note,
:root[data-theme="dark"] .timer-session-name,
:root[data-theme="dark"] .timer-status,
:root[data-theme="dark"] .topbar-left span,
:root[data-theme="dark"] .week-day,
:root[data-theme="dark"] .weekly-card .eyebrow,
:root[data-theme="dark"] .weekly-card>.summary-top>.icon,
:root[data-theme="dark"] .weekly-card>p,
:root[data-theme="dark"] .weight-presets span{color:#b5c6a0}
:root[data-theme="dark"] .sample-badge{color:#dcca9e;background:var(--paper)}
:root[data-theme="dark"] .activity-empty .empty-icon,
:root[data-theme="dark"] .activity-state,
:root[data-theme="dark"] .cal-plan-symbol,
:root[data-theme="dark"] .cal-schedule-preview,
:root[data-theme="dark"] .cal-status.completed,
:root[data-theme="dark"] .cal-weekday-choice span,
:root[data-theme="dark"] .climb-environment.outdoor,
:root[data-theme="dark"] .climb-outcome.sent,
:root[data-theme="dark"] .effort-choice,
:root[data-theme="dark"] .empty-state .empty-icon,
:root[data-theme="dark"] .exercise-tag,
:root[data-theme="dark"] .exercise-thumb,
:root[data-theme="dark"] .exercise-thumb.strength,
:root[data-theme="dark"] .filter,
:root[data-theme="dark"] .timer-screen.prepare-phase,
:root[data-theme="dark"] .timer-screen.rest-phase{background:var(--paper);color:#b5c6a0}
:root[data-theme="dark"] .club-hero h1 em,
:root[data-theme="dark"] .completion-discard:hover,
:root[data-theme="dark"] .danger-button,
:root[data-theme="dark"] .exercise-tag.weight,
:root[data-theme="dark"] .exercise-thumb.hangboard,
:root[data-theme="dark"] .form-error,
:root[data-theme="dark"] .home-quick-grid>button:nth-child(3)>span,
:root[data-theme="dark"] .home-recent-symbol,
:root[data-theme="dark"] .pending-symbol,
:root[data-theme="dark"] .program-card .program-symbol,
:root[data-theme="dark"] .save-status.warn,
:root[data-theme="dark"] .week-day.today,
:root[data-theme="dark"] .work-phase .phase-badge{color:#f5ae92}
:root[data-theme="dark"] .climb-connection-status.pending,
:root[data-theme="dark"] .exercise-thumb.wall{background:var(--paper);color:#dcca9e}
:root[data-theme="dark"] .cal-day.outside,
:root[data-theme="dark"] .exercise-thumb.core{background:var(--paper);color:var(--muted)}
:root[data-theme="dark"] .activity-stats article:first-child,
:root[data-theme="dark"] .add-exercise:hover,
:root[data-theme="dark"] .climb-start-card:hover{background:var(--paper);border-color:var(--line)}
:root[data-theme="dark"] .cal-day-dots i.completed,
:root[data-theme="dark"] .cal-day-dots i.skipped,
:root[data-theme="dark"] .cal-legend i.completed,
:root[data-theme="dark"] .cal-legend i.skipped,
:root[data-theme="dark"] .cal-week-track,
:root[data-theme="dark"] .cal-week-track>span.has-log,
:root[data-theme="dark"] .climb-pyramid-row i,
:root[data-theme="dark"] .climb-pyramid-row>div,
:root[data-theme="dark"] .home-day i.has-climbing,
:root[data-theme="dark"] .home-week-bottom>p i.climbing,
:root[data-theme="dark"] .legend i,
:root[data-theme="dark"] .overall-progress div,
:root[data-theme="dark"] .summary-bar .prepare,
:root[data-theme="dark"] .summary-bar .rest,
:root[data-theme="dark"] .toggle span,
:root[data-theme="dark"] .week-bar-track,
:root[data-theme="dark"] .week-bar-track>span{background:var(--sage)}
:root[data-theme="dark"] .cal-event-label.completed,
:root[data-theme="dark"] .cal-event-label.partial,
:root[data-theme="dark"] .home-plan-empty .secondary-btn,
:root[data-theme="dark"] .home-quick-grid>button:hover,
:root[data-theme="dark"] .pending-activity .secondary-btn,
:root[data-theme="dark"] .quick-card .summary-stats{border-color:var(--line)}
:root[data-theme="dark"] .club-hero-actions>.secondary-btn,
:root[data-theme="dark"] .quick-card>.secondary-btn{color:var(--muted);border-color:var(--line)}
:root[data-theme="dark"] .backup-warning,
:root[data-theme="dark"] .cal-status.partial,
:root[data-theme="dark"] .climb-outcome{background:#373327;color:#dcca9e}
:root[data-theme="dark"] .cal-day.selected,
:root[data-theme="dark"] .pending-activity{background:var(--red-soft)}
:root[data-theme="dark"] .climb-form-section-title>.icon,
:root[data-theme="dark"] .feeling-chip.drained,
:root[data-theme="dark"] .feeling-chip.tired,
:root[data-theme="dark"] .pending-activity p,
:root[data-theme="dark"] .pending-activity>.icon-btn{color:#dcca9e}
:root[data-theme="dark"] .activity-feed-heading h2 span,
:root[data-theme="dark"] .cal-status.skipped{background:#303a2c;color:#b5c6a0}
:root[data-theme="dark"] .activity-state.partial,
:root[data-theme="dark"] .cal-status{background:var(--red-soft);color:#dcca9e}
:root[data-theme="dark"] .activity-card-note,
:root[data-theme="dark"] .climb-attempt-stepper button,
:root[data-theme="dark"] .climb-environment,
:root[data-theme="dark"] .climb-routes-empty,
:root[data-theme="dark"] .climb-start-card.outdoor .climb-start-symbol,
:root[data-theme="dark"] .feeling-choice{color:#b5c6a0;background:var(--paper)}
:root[data-theme="dark"] .cal-month-grid,
:root[data-theme="dark"] .picker-tabs button span{background:#303a2c}
:root[data-theme="dark"] .cal-event-label.skipped{border-color:var(--line);color:var(--muted)}
:root[data-theme="dark"] .cal-day-dots i.partial,
:root[data-theme="dark"] .cal-legend i.partial{background:#373327}
:root[data-theme="dark"] .cal-weekday-choice input:checked+span{border-color:var(--line);background:var(--red-soft)}
:root[data-theme="dark"] .account-available,
:root[data-theme="dark"] .climb-connection-status,
:root[data-theme="dark"] .climb-start-symbol{color:#b5c6a0;background:var(--sage)}
:root[data-theme="dark"] .climb-start-card.board .climb-start-symbol{color:#f5ae92;background:var(--red-soft)}
:root[data-theme="dark"] .climb-environment.board{background:var(--red-soft);color:#f5ae92}
:root[data-theme="dark"] .climb-route-chip.sent{background:var(--paper);color:#b5c6a0;border-color:var(--line)}
:root[data-theme="dark"] .climb-grade{background:var(--sage);color:#b5c6a0}

/* Intentionally dark training surfaces and high-contrast controls. */
:root[data-theme="dark"] .primary-btn,:root[data-theme="dark"] .start-btn,:root[data-theme="dark"] .timer-controls .pause-button{background:var(--red);color:#181e17;border-color:var(--red)}
:root[data-theme="dark"] .primary-btn:hover{background:#ff9b86;color:#181e17}
:root[data-theme="dark"] .secondary-btn{background:transparent;color:var(--ink);border-color:#59644f}
:root[data-theme="dark"] .secondary-btn:hover{background:#35422f}
:root[data-theme="dark"] .text-button,:root[data-theme="dark"] .quiet-btn{color:var(--muted)}
:root[data-theme="dark"] .text-button:hover,:root[data-theme="dark"] .quiet-btn:hover{color:var(--ink)}
:root[data-theme="dark"] .nav-link.active,:root[data-theme="dark"] .mobile-nav button.active{background:var(--red-soft);color:var(--red)}
:root[data-theme="dark"] .nav-link:hover{background:#2c3529}
:root[data-theme="dark"] .mobile-nav,:root[data-theme="dark"] .mobile-start{background:#202620f2;border-color:var(--line)}
:root[data-theme="dark"] .mode-control button.active,:root[data-theme="dark"] .filter.active,:root[data-theme="dark"] .picker-tabs button.active{background:#c0cdb0;color:#1d2618}
:root[data-theme="dark"] .mode-control,:root[data-theme="dark"] .filter{background:#303b2b;color:var(--muted)}
:root[data-theme="dark"] .quick-card,:root[data-theme="dark"] .timer-screen{background:#101710;color:#f0f1e9}
:root[data-theme="dark"] .timer-screen.rest-phase{background:#24351f;color:#f0f1e9}
:root[data-theme="dark"] .timer-screen.prepare-phase{background:#373126;color:#f0f1e9}
:root[data-theme="dark"] .phase-badge{color:#cbd9b9;border-color:#657353;background:#cbd9b910}
:root[data-theme="dark"] .work-phase .phase-badge{color:#ff9e87;border-color:#b56b58;background:#b56b581a}
:root[data-theme="dark"] .rest-phase .phase-badge,:root[data-theme="dark"] .prepare-phase .phase-badge{color:#ccdeb5;border-color:#82936d;background:#82936d17}
:root[data-theme="dark"] .timer-context,:root[data-theme="dark"] .timer-note,:root[data-theme="dark"] .timer-next,:root[data-theme="dark"] .timer-footer-top,:root[data-theme="dark"] .timer-footnote{color:#b7c6a7}
:root[data-theme="dark"] .timer-next strong{color:#d8e5c9}
:root[data-theme="dark"] .timer-controls .round-button{color:#ccdbba;border-color:#6a7d59}
:root[data-theme="dark"] .quick-card .summary-time,:root[data-theme="dark"] .timer-digits,:root[data-theme="dark"] .timer-exercise{color:#f3f3ea}
:root[data-theme="dark"] .quick-card .summary-stats{border-color:#3e4b35}
:root[data-theme="dark"] .cal-day.outside{background:#191f18;color:#a5b09a}
:root[data-theme="dark"] .cal-day.selected{background:var(--red-soft)}
:root[data-theme="dark"] .cal-day.today .cal-day-top>span{background:var(--red);color:#182014}
:root[data-theme="dark"] .cal-event-label.completed{border-color:#a4bc82}
:root[data-theme="dark"] .cal-event-label.partial{border-color:#d8b676}
:root[data-theme="dark"] .cal-week-track>span.has-log,:root[data-theme="dark"] .cal-legend i.completed,:root[data-theme="dark"] .cal-day-dots i.completed{background:#a4bc82}
:root[data-theme="dark"] .cal-week-track,:root[data-theme="dark"] .week-bar-track,:root[data-theme="dark"] .climb-pyramid-row>div{background:#3b4932}
:root[data-theme="dark"] .week-bar-track>span,:root[data-theme="dark"] .climb-pyramid-row i{background:#a4bc82}
:root[data-theme="dark"] .cal-status.completed,:root[data-theme="dark"] .climb-outcome.sent,:root[data-theme="dark"] .climb-route-chip.sent{color:#c7dda9;background:#324226;border-color:#536345}
:root[data-theme="dark"] .cal-status.partial,:root[data-theme="dark"] .activity-state.partial,:root[data-theme="dark"] .climb-outcome.project{color:#ebcb94;background:#3c3323}
:root[data-theme="dark"] .cal-weekday-choice input:checked+span,:root[data-theme="dark"] .feeling-choice:has(input:checked),:root[data-theme="dark"] .effort-choice:has(input:checked){background:var(--red-soft);color:var(--red);border-color:var(--red)}
:root[data-theme="dark"] .climb-filter.active{background:#c0cdb0;color:#1d2618}
:root[data-theme="dark"] .climb-grade{background:#3c4b31;color:#e0edcf}
:root[data-theme="dark"] .climb-grade>small{color:#b7caa1}
:root[data-theme="dark"] .exercise-art,:root[data-theme="dark"] .exercise-choice .choice-visual,:root[data-theme="dark"] .editor-art-heading{background:#e9e7df}
:root[data-theme="dark"] .editor-art-heading>div{color:#252723}
:root[data-theme="dark"] .editor-art-heading p{color:#59604e}
:root[data-theme="dark"] .backup-warning{background:#403522;color:#f0d49d;border-color:#7c6133}
:root[data-theme="dark"] .form-error{background:#482a24;color:#ffc3b4}
:root[data-theme="dark"] .danger-button{color:#ffab96}
:root[data-theme="dark"] dialog::backdrop{background:#000000b0}
:root[data-theme="dark"] .toast{background:#e6ebdd;color:#1a2315}
:root[data-theme="dark"] .home-route-art{background:#2b3927}
:root[data-theme="dark"] .home-contour{stroke:#6f8060}
:root[data-theme="dark"] .home-art-word{color:#d2e0bd}
:root[data-theme="dark"] .home-next,:root[data-theme="dark"] .profile-community-preview{border-color:var(--line)}
:root[data-theme="dark"] .home-programs-link{border-color:#526144}
:root[data-theme="dark"] .home-day i.has-training{background:var(--red)}
:root[data-theme="dark"] .home-day i.has-climbing,:root[data-theme="dark"] .home-week-bottom>p i.climbing{background:#a4bc82}
:root[data-theme="dark"] .club-hero{background:#202e1d;color:#f0f1e9;border:1px solid #3d5035}
:root[data-theme="dark"] .club-hero h1 em{color:#f09a82}
:root[data-theme="dark"] .club-member-seal{color:#c6d6af;border-color:#83976b70;outline-color:#83976b38}
:root[data-theme="dark"] .club-avatar{color:#fffefa}
:root[data-theme="dark"] .profile-avatar-options>button[aria-pressed=true],:root[data-theme="dark"] .profile-discipline-options input:checked+span,:root[data-theme="dark"] .club-theme-options>button[aria-pressed=true]{color:var(--red);border-color:var(--red);background:var(--red-soft)}
:root[data-theme="dark"] .profile-colour-options>button{box-shadow:0 0 0 2px var(--paper);color:#fffefa}
:root[data-theme="dark"] .profile-publish-choice{background:var(--sage)}
:root[data-theme="dark"] .club-member-card{border-color:var(--line)}
:root[data-theme="dark"] .profile-avatar-options>button:focus-visible,:root[data-theme="dark"] .profile-discipline-options input:focus-visible+span,:root[data-theme="dark"] .cal-weekday-choice input:focus-visible+span{outline-color:#9dc4ff}
:root[data-theme="dark"] .nav-link .nav-count{background:var(--paper);color:var(--ink);border:1px solid var(--line)}
