/* Light keeps the existing styles. Only this new control has shared geometry. */
.appearance-preference{border:0;padding:0;margin:0 0 16px;min-width:0}
.appearance-preference legend{padding:0;margin-bottom:10px;font-weight:700}
.appearance-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.appearance-options label{position:relative;display:flex;min-width:0;cursor:pointer}
.appearance-options input{position:absolute;opacity:0;width:1px;height:1px}
.appearance-options span{width:100%;display:flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:8px 4px;border:1px solid var(--line);border-radius:11px;color:var(--muted);font-size:.85rem}
.appearance-options svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.appearance-options input:checked+span{background:var(--blue-soft);color:var(--blue);border-color:var(--blue);font-weight:700}
.appearance-options input:focus-visible+span{outline:2px solid var(--blue);outline-offset:3px}
.appearance-options input:disabled+span{cursor:wait}

:root[data-appearance=light]{color-scheme:light}
:root[data-appearance=dark]{
  color-scheme:dark;
  --bg:#101722;--surface:#1a2535;--ink:#e7edf7;--muted:#a6b2c5;--line:#303e52;
  --blue:#91b3ff;--blue-soft:#243654;--red:#ff879b;--red-soft:#352430;
  --amber:#efc46b;--amber-soft:#3a3020;--shadow:none;
  --purple:#b7a0ff;--purple-soft:#2b2540;--track:#202b3d;
  --selected:#d7e4fc;--selected-ink:#13223a;--gap-line:#526783;
  --calendar-break:var(--blue);--chart-future-bg:#415b8b;--chart-future-line:#6f8fc5;
}
/* App chrome and neutral surfaces. Keep the navy brand header and white icons. */
[data-appearance=dark] :is(.topbar,.account-avatar,.auth-brand,.toast){background:#13223a;color:#fff}
[data-appearance=dark] :is(.tabs,.ghost,.day-button,.lesson,.empty-state,.search-wrap,.subject-card,.subject-head,.secondary,.notification-preview,.preview-type.active,.alert-card,.dialog-sheet,.account-card,.auth-sheet,.display-preference,.profile-feature,.profile-choice,.saved-profile,.new-profile-context,.meet-popover,.calendar-surface,.calendar-day,.calendar-event,.calendar-empty,.calendar-message,.planned-events,.absence-entry,.absence-modes,.absence-detail-tabs){background:var(--surface)}
[data-appearance=dark] :is(.auth-sheet input,.settings-row select,.profile-sheet input[type=text],#shareUrl,#newProfileForm input,#newProfileForm select,#importProfileForm input){background:var(--surface);border-color:var(--line);color:var(--ink)}
[data-appearance=dark] :is(.primary,.auth-submit){background:#245eea;color:#fff}
[data-appearance=dark] :is(.day-button.active,.calendar-day[aria-pressed=true]){background:var(--selected);color:var(--selected-ink)}
[data-appearance=dark] .profile-button>span{background:#fff;color:#13223a}
[data-appearance=dark] .sticky-action{background:rgba(16,23,34,.96)}
[data-appearance=dark] :is(.pill,.profile-choice:is([aria-current=true],[aria-pressed=true])){background:var(--blue-soft);border-color:#415b83;color:var(--blue)}
[data-appearance=dark] :is(.display-preference,.profile-choice,.saved-profile,.new-profile-context,.push-settings,.calendar-notice){border-color:var(--line)}
[data-appearance=dark] :is(.preference-row small,.old-value,.collapsed-label strong){color:var(--muted)}
[data-appearance=dark] :is(.preference-row input,.profile-push-row input){background:#536079}
[data-appearance=dark] :is(.preference-row input:checked,.profile-push-row input:checked){background:#2f5be9}
[data-appearance=dark] .password-rules span{background:var(--track);color:var(--muted)}
[data-appearance=dark] .password-rules .valid{background:#203b31;color:#8cdbac}
[data-appearance=dark] .auth-submit:disabled{background:#3c4b61;color:#adb9ca}

/* Brighter lesson surfaces distinguish occupied/free slots from the dark canvas. */
[data-appearance=dark] :is(.lesson,.cancel-fold,.timetable-lesson){--surface:#2b3c52;--line:#586d87;--blue-soft:#2c4361;--red-soft:#4a2e3c;--amber-soft:#4b3e28;--purple-soft:#3c3456}
/* Schedule: retain each change's semantic color and every existing dimension. */
[data-appearance=dark] .lesson.change-cancel{background:linear-gradient(90deg,var(--surface),var(--red-soft))}
[data-appearance=dark] .lesson.change-cancel h3{color:var(--muted)}
[data-appearance=dark] .lesson.change-exam{background:linear-gradient(90deg,var(--surface),var(--red-soft))}
[data-appearance=dark] .lesson.change-room{border-inline-start-color:var(--amber)}
[data-appearance=dark] :is(.lesson.change-time,.lesson.change-source,.lesson.change-added){border-inline-start-color:var(--purple)}
[data-appearance=dark] .change-time .change-tag{background:var(--purple-soft);color:var(--purple)}
[data-appearance=dark] .agenda-cell :is(.lesson.change-added,.lesson.change-source){background:var(--purple-soft)}
[data-appearance=dark] :is(.free-gap,.timetable-gap){--muted:#bcc8da;background:repeating-linear-gradient(135deg,#283a51,#283a51 10px,#354b66 10px,#354b66 20px);border-color:#7188a7;color:var(--muted)}
[data-appearance=dark] .free-gap .duration{background:var(--surface);border-color:var(--gap-line)}
[data-appearance=dark] .cancel-fold:not([open]){background:linear-gradient(90deg,var(--surface),var(--red-soft));border-color:var(--line);border-inline-start-color:var(--red);box-shadow:none}
[data-appearance=dark] .collapsed-label time{color:var(--ink)}
[data-appearance=dark] .collapsed-label small{color:var(--red)}
[data-appearance=dark] .fold-chevron{border-color:var(--muted)}
[data-appearance=dark] .overlap-group{border-color:#665335}
[data-appearance=dark] :is(.overlap-title,.connection-status,#sharedGroups small){color:var(--amber)}
[data-appearance=dark] .notice{color:var(--amber);border-color:#665335}
[data-appearance=dark] .notice button{color:var(--amber)}
[data-appearance=dark] :is(.schedule-event,.timetable-source-note){border-color:#394f72}
[data-appearance=dark] .now-line{background:var(--blue)}
[data-appearance=dark] .push-banner{border-color:#394f72}
[data-appearance=dark] .push-banner p{color:var(--muted)}
[data-appearance=dark] .push-banner button{border-color:#415b83}
[data-appearance=dark] :is(.navigation-controls .ghost,.navigation-controls .calendar-arrow){background:var(--surface)}
[data-appearance=dark] :is(.weekbar .week-jump span,.calendar-today span){background:var(--blue-soft);border-color:#394f72}
[data-appearance=dark] .schedule-modes{background:var(--track)}
[data-appearance=dark] .schedule-modes button[aria-pressed=true]{background:var(--surface)}
[data-appearance=dark] .schedule-default-options label:has(:checked){border-color:#415b83}
[data-appearance=dark] .timetable-calendar button{background:var(--surface)}
[data-appearance=dark] :is(.timetable-divider,.timetable-lane,.timetable-rule){border-color:var(--line)}
[data-appearance=dark] .timetable-lesson{background:var(--surface);border-color:var(--line)}
[data-appearance=dark] .timetable-lesson.timetable-room{background:var(--amber-soft);border-color:#665335;border-inline-start-color:var(--amber)}
[data-appearance=dark] .timetable-room .timetable-status{color:var(--amber)}
[data-appearance=dark] .timetable-lesson.timetable-teacher{background:var(--blue-soft);border-color:#394f72;border-inline-start-color:var(--blue)}
[data-appearance=dark] .timetable-lesson:is(.timetable-time,.timetable-added,.timetable-source){background:var(--purple-soft);border-inline-start-color:var(--purple)}
[data-appearance=dark] .timetable-lesson.timetable-exam{background:var(--red-soft);border-inline-start-color:var(--red)}
[data-appearance=dark] .timetable-lesson.timetable-cancel{background:transparent;border-color:#aa6976;color:var(--red)}
[data-appearance=dark] .timetable-cancel .timetable-status{color:var(--red)}
[data-appearance=dark] .timetable-selection{background:#222f42}

/* Annual calendar, notifications, and private absence controls. */
[data-appearance=dark] .calendar-day.weekend{background:#141e2c}
[data-appearance=dark] .calendar-day.weekend[aria-pressed=true]{background:var(--selected)}
[data-appearance=dark] :is(.calendar-modes,.notification-timing-choices){background:var(--track)}
[data-appearance=dark] :is(.calendar-modes button[aria-pressed=true],.notification-timing-choices input:checked+span,.calendar-search,.calendar-filters button[aria-pressed=true],.notification-center .push-settings,.notification-center .notification-option,.absence-reasons button){background:var(--surface)}
[data-appearance=dark] :is(.calendar-filters button[aria-pressed=true],.notification-center .push-settings,.absence-entry.active,.absence-reasons button[aria-pressed=true]){border-color:#415b83}
[data-appearance=dark] .calendar-event mark{background:#efc46b;color:#13223a}
[data-appearance=dark] .calendar-event-action:hover{color:var(--blue)}
[data-appearance=dark] :is(.calendar-notice-kind,.notification-center .push-enabled){color:#8cdbac}
[data-appearance=dark] .calendar-notice-kind.removed{color:var(--muted)}
[data-appearance=dark] :is(.absence-summary,.absence-delete,.saved-profile-actions .profile-delete,.absence-boundary.selected){color:var(--red)}
[data-appearance=dark] .absence-dialog-status{border-color:#68404d;color:var(--red)}
[data-appearance=dark] .absence-select-dot{border-color:var(--gap-line)}
[data-appearance=dark] .absence-reasons button[aria-pressed=true]{background:var(--blue-soft)}

/* Shared free time and charts use the same semantic families in both modes. */
[data-appearance=dark] .meet-chip{background:var(--surface)}
[data-appearance=dark] .meet-chip[aria-pressed=true]{background:var(--blue-soft);border-color:#415b83}
[data-appearance=dark] :is(.meet-dot,.meet-block,.meet-empty-columns p){background:#29364a}
[data-appearance=dark] :is(.meet-dot,.meet-block).free{background:#203b31;color:#8cdbac}
[data-appearance=dark] :is(.meet-dot,.meet-block).shared{background:#3a3420;color:#efcf77}
[data-appearance=dark] :is(.meet-dot,.meet-block).nearby{background:#20394a;color:#90d4f4}
[data-appearance=dark] .meet-unavailable{background:repeating-linear-gradient(135deg,#1a2535,#1a2535 8px,#222f42 8px,#222f42 16px)}
[data-appearance=dark] .meet-caution{background:var(--amber-soft);color:var(--amber)}
[data-appearance=dark] #statisticsView .stats-future-tag{color:var(--blue)}
[data-appearance=dark] #statisticsView .stats-future-legend .stats-future-key{background:repeating-linear-gradient(135deg,var(--chart-future-bg),var(--chart-future-bg) 4px,var(--chart-future-line) 4px,var(--chart-future-line) 5px)}
[data-appearance=dark] #usageView .usage-day-detail{color:var(--blue)}
[data-appearance=dark] #usageView .usage-pie-key button[aria-pressed=true]{background:var(--track)}

[data-appearance=dark] .time-stack .new-value{color:var(--purple)}
[data-appearance=dark] .time-stack .old-value{color:var(--muted)}
[data-appearance=dark] .notice span{color:var(--amber)}
[data-appearance=dark] .notice-icon{color:#13223a}
[data-appearance=dark] .day-button.active.notification-day:after{background:#245eea}
[data-appearance=dark] .calendar-day[aria-pressed=true] .calendar-dot{filter:none}
[data-appearance=dark] .calendar-day[aria-pressed=true] .calendar-dot.exam{background:#bf304d}
[data-appearance=dark] .calendar-day[aria-pressed=true] .calendar-dot.break{background:#245bea}
[data-appearance=dark] .calendar-notice-kind.moved{color:var(--blue)}
[data-appearance=dark] .calendar-event-link:hover .calendar-event-action{color:var(--blue)}
[data-appearance=dark] .absence-entry.active{background:var(--blue-soft)}
[data-appearance=dark] .meet-dot:is(.free,.shared,.nearby){box-shadow:inset 0 0 0 1px currentColor}
[data-appearance=dark] .push-card{background:var(--surface)}
[data-appearance=dark] .push-card p{color:var(--muted)}

[data-appearance=dark] #profileContext{background:var(--surface)}

/* Keep field hints legible and the camera frame visible before video starts. */
[data-appearance=dark] :is(input,textarea)::placeholder{color:var(--muted);opacity:1}
[data-appearance=dark] .qr-camera{background:#101722}

/* Room badges need their own visible surface, including inside changed lessons. */
[data-appearance=dark] :is(.room,.timetable-details .timetable-room){background:#3c5f88;color:#f1f6ff;box-shadow:inset 0 0 0 1px #6c8fb7}

[data-appearance=dark] .lesson.change-source,[data-appearance=dark] .agenda-cell .lesson.change-source,[data-appearance=dark] .timetable-lesson.timetable-source{background:var(--amber-soft);border-inline-start-color:var(--amber)}
[data-appearance=dark] .lesson.change-source>.change-tag,[data-appearance=dark] .timetable-source .timetable-status{color:var(--amber)}

[data-appearance=dark] .lesson.estimated-end,[data-appearance=dark] .agenda-cell .lesson.estimated-end,[data-appearance=dark] .timetable-lesson.estimated-end,[data-appearance=dark] .estimated-end-note{background:#173b38;border-inline-start-color:#62bfaf}
[data-appearance=dark] .estimated-end-label,[data-appearance=dark] .lesson .estimated-end-label,[data-appearance=dark] .estimated-end-note{color:#a2e4db}
[data-appearance=dark] .lesson.change-cancel.estimated-end,[data-appearance=dark] .timetable-cancel.estimated-end{background:var(--red-soft);border-inline-start-color:var(--red)}
