/* Shared structural UI colours. Semantic results, profile artwork, Scratch
   canvases and CodeMirror syntax keep their own palettes. */
body[data-site-theme=""] {
  --site-bg:#111a1f; --site-panel:#1f292e; --site-inset:#172126;
  --site-border:#4c626c; --site-text:#eef5f3; --site-muted:#b6cbd1; --site-accent:#8ce4df;
}
body[data-site-theme] {
  color-scheme:dark;
  --site-on-accent:#152326;
  --site-success:#b0f0c6; --site-success-bg:#19392c;
  --site-danger:#ffb5bf; --site-danger-bg:#40232c;
  --site-warning:#ffe0a3; --site-warning-bg:#3b3020;
  --site-curse:#e6c4ff; --site-curse-bg:#382546;
}
body:is([data-site-theme="sakura"],[data-site-theme="latte"],[data-site-theme="light"]) {
  color-scheme:light;
  --site-on-accent:#fff;
  --site-success:#205c38; --site-success-bg:#e7f5e9;
  --site-danger:#963044; --site-danger-bg:#fff0f2;
  --site-warning:#775018; --site-warning-bg:#fff4d9;
  --site-curse:#67317f; --site-curse-bg:#f5eafa;
}
body[data-site-theme="latte"] { --site-muted:#6b5b48; --site-accent:#835718; }
body[data-site-theme="sakura"] { --site-muted:#6b4c60; }

/* Page headings and labels previously inherited hard-coded pale grey. */
body[data-site-theme] .site-main :is(h1,h2,h3,h4,label,legend) { color:var(--site-text); }
body[data-site-theme] .site-main :is(
  .problem-list-subtitle,.post-list-subtitle,.post-pagination-summary,
  .question-rooms-summary,.mypage-page-heading p,.mypage-nav-caption,
  .shop-sort-form label,.shop-load-more-status,.shop-results-summary,
  .pw-desc,.pw-done-desc,.signup-desc,.login-desc,.presence-stats .intro,
  .presence-stats .method-note p,.presence-stats .section-note,
  .presence-stats .back-link,.problem-list-sort-label,.editor-comment-status
) { color:var(--site-muted); }
body[data-site-theme] .site-main :is(.pw-kicker,.pw-title,.pw-done-title,.pw-done-kicker) { color:var(--site-text); }
body[data-site-theme] .site-main .post-date { color:var(--site-muted); opacity:1; }
body[data-site-theme] .site-main .level-scratch { color:var(--site-accent); background:var(--site-inset); }
body[data-site-theme] .site-main :is(.shop-category-tab small,.shop-load-more-wrap p) { color:var(--site-muted); }
body[data-site-theme] footer a { color:var(--site-accent); }
body[data-site-theme] .social-action--instagram { background:linear-gradient(135deg,#9f2860,#6930a5); color:#fff; }

/* Controls are explicitly paired with their foreground; pale themes need a
   different foreground on primary buttons than dark themes. */
body[data-site-theme] .user-section .btn,
body[data-site-theme] .site-main :is(
  .btn-primary,.post-search-button,.comment-submit-btn,.quiz-primary,
  .scratch-author-submit,.pw-btn-primary,.pw-done-btn-primary,
  .btn-login-modern,.btn-signup-modern,.presence-stats .filter-tools button,
  .home-notice-section .btn,.home-notice-form .btn,
  .submit-button-container .execute-btn,.submit-button-container .submit-btn,
  .teacher-chat-fab,.home-notice-edit-form button
) { background:var(--site-accent); color:var(--site-on-accent); border-color:var(--site-accent); text-shadow:none; }
body[data-site-theme] .site-main :is(
  .btn-secondary,.problem-jump-button,.problem-list-sort a,.scratch-view-toggle button,
  .post-pagination-link,.post-pagination-nav,.problem-list-sort span
) { color:var(--site-text); background:var(--site-inset); border-color:var(--site-border); }
body[data-site-theme] .site-main :is(.btn-danger,.home-delete-link,.post-action-delete,.scratch-delete-link) { color:var(--site-danger); background:var(--site-danger-bg); border-color:var(--site-danger); }
body[data-site-theme] :is(a,button,input,textarea,select,summary):focus-visible { outline:2px solid var(--site-accent); outline-offset:3px; }
body[data-site-theme] .site-main :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="button"]),select,textarea):not(.CodeMirror textarea) {
  background:var(--site-inset); color:var(--site-text); border-color:var(--site-border);
}
body[data-site-theme] .site-main :is(input,textarea)::placeholder { color:var(--site-muted); opacity:1; }

/* Home fragments, calendar and ranking states. */
body[data-site-theme] .home-shell :is(.home-card p,.home-ranking-tab-title,.home-ranking-tab-meta,.home-rank-score span) { color:var(--site-muted); }
body[data-site-theme] .home-shell .home-ranking-tab.is-active :is(.home-ranking-tab-title,.home-ranking-tab-meta) { color:var(--site-text); }
body[data-site-theme] .home-attendance-calendar :is(th,.home-attendance-calendar-day) { color:var(--site-muted); }
body[data-site-theme] .home-attendance-calendar-cell.is-today .home-attendance-calendar-day { color:var(--site-accent); }
body[data-site-theme] .home-rank-badge:is(.is-first,.is-second,.is-third) { color:#382916; text-shadow:none; }
body[data-site-theme] .home-notice-item summary { color:var(--site-accent); }
body[data-site-theme] .home-notice-item button { background:var(--site-accent); color:var(--site-on-accent); }
body[data-site-theme] .home-shell .btn { background:var(--site-accent); color:var(--site-on-accent); border-color:var(--site-accent); }
body[data-site-theme] .home-shell .btn:disabled { background:var(--site-inset); color:var(--site-muted); border-color:var(--site-border); box-shadow:none; opacity:1; cursor:not-allowed; }
body[data-site-theme] .home-shell .home-btn-attendance:disabled { background:var(--site-success-bg); color:var(--site-success); border-color:var(--site-success); }


/* Dashboard and presence statistics, including hover/detail panels. */
body[data-site-theme] .teacher-dashboard-page .teacher-homework-progress { background:var(--site-inset); color:var(--site-text); border:1px solid var(--site-border); border-radius:10px; padding:10px; }
body[data-site-theme] .teacher-dashboard-page .teacher-homework-progress :is(span,strong,small,a) { color:var(--site-text); }
body[data-site-theme] .teacher-dashboard-page .teacher-unpaid-summary h2 span,
body[data-site-theme] .teacher-dashboard-page .teacher-unpaid-count { color:var(--site-warning); background:var(--site-warning-bg); border-radius:5px; padding:2px 5px; }
body[data-site-theme] .teacher-dashboard-page .teacher-student-page-btn { color:var(--site-text); background:var(--site-inset); }
body[data-site-theme] .presence-stats :is(.card,.panel,.control-panel,.trend-detail,.calendar-day,.table-wrap,.method-note) { background:var(--site-panel); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .presence-stats :is(.calendar-count,.calendar-day-top,.calendar-day-top small,.trend-detail-counts,.calendar-heading) { color:var(--site-text); }
body[data-site-theme] .presence-stats .calendar-day.is-selected { background:var(--site-inset); border-color:var(--site-accent); }
body[data-site-theme] .presence-stats :is(.eyebrow,.filters a,.scope-nav a,.refresh-link,.method-note summary,.export-menu summary) { color:var(--site-accent); }
body[data-site-theme] .presence-stats .filter-tools button { background:var(--site-accent); color:var(--site-on-accent); }

/* Scratch authoring/play and upload labels; no rules enter the editor iframe. */
body[data-site-theme] .scratch-page :is(.scratch-author-project,.scratch-author-editor,.scratch-upload-options,.scratch-work-header,.scratch-control-header) { background:var(--site-panel); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .scratch-page :is(.scratch-author-project p,.scratch-author-step small,.scratch-author-project-heading span) { color:var(--site-muted); }
body[data-site-theme] .scratch-page .scratch-author-project-heading span { background:var(--site-inset); border-color:var(--site-border); }
body[data-site-theme] .scratch-page .scratch-author-step > span { background:var(--site-accent); color:var(--site-on-accent); }
body[data-site-theme] .scratch-page :is(.scratch-author-project-buttons button,.scratch-author-save-actions button) { background:var(--site-inset); color:var(--site-text); border-color:var(--site-border); }

/* Shared secondary screens and confirmation forms. */
body[data-site-theme] .site-main :is(.student-card,.public-student-card,.public-student-hero,.student-list-card,.report-card,.report-panel,.notification-box,.notification-item,.question-room-card,.question-rooms-empty,.scratch-review-card,.quiz-panel) { background:var(--site-panel); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .site-main :is(.report-page,.question-rooms-page,.notifications-page,.public-student-page,.student-list-page,.student-edit-page) { color:var(--site-text); }
body[data-site-theme] .site-main :is(.reward-summary-row.is-curse,.reward-summary-badge.is-curse) { background:var(--site-curse-bg); color:var(--site-curse); border-color:var(--site-curse); }
body[data-site-theme] .site-main .reward-summary-row.is-curse :is(.reward-summary-label,.reward-summary-value) { color:var(--site-curse); }

/* Long labels should wrap inside their own panel; logs keep an inner scroller. */
body[data-site-theme] .site-main { min-width:0; }
body[data-site-theme] :is(.mypage-main,.mypage-content,.mypage-card,.mypage-panel,.teacher-dashboard-page,.scratch-page,.problem-detail-refresh,.post-detail-card) { min-width:0; max-width:100%; box-sizing:border-box; }
body[data-site-theme] :is(.site-user-tools,.user-section,.user-section p) { min-width:0; }
body[data-site-theme] .site-user-name-link { overflow-wrap:anywhere; }
body[data-site-theme] :is(.mypage-server-log,.server-log-output,#server-log-output) { max-width:100%; min-width:0; overflow:auto; }
@media(max-width:600px) {
 body[data-site-theme] .user-section p { display:flex; flex-wrap:wrap; gap:8px; white-space:normal; max-width:100%; }
 body[data-site-theme] .site-header .logo a { font-size:18px; white-space:normal; line-height:1.5; }
 body[data-site-theme] .online-students-panel { left:auto; right:0; max-width:calc(100vw - 32px); }
 body[data-site-theme] :is(.scratch-author-projects,.shop-sort-form,.problem-list-sort) { max-width:100%; min-width:0; }
}
@media(prefers-reduced-motion:reduce) {
 body[data-site-theme] :is(.shop-item,.post-board-item,.home-hero-panel,.mypage-card) { animation:none; transition:none; }
}
body[data-site-theme] .site-user-tools { flex-wrap:wrap; max-width:100%; }
body[data-site-theme] .user-section { max-width:100%; }
body[data-site-theme] .user-section p { display:flex; align-items:center; flex-wrap:wrap; gap:8px; white-space:normal; max-width:100%; }
body[data-site-theme] .site-user-points { white-space:nowrap; }
body[data-site-theme] .scratch-page .scratch-author-workspace > p { color:var(--site-muted); }
body[data-site-theme] .site-main :is(.pw-panel,.pw-done-panel,.pw-field) { background:var(--site-panel); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .site-main .pw-field label { color:var(--site-text); }
body[data-site-theme] .presence-stats .filters a[aria-current="page"] { color:var(--site-on-accent); background:var(--site-accent); }
body[data-site-theme] .presence-stats .calendar-day[aria-current="date"] { background:var(--site-inset); border-color:var(--site-accent); }
body[data-site-theme] .presence-stats .calendar-day:is(.is-future,.is-unavailable) { background:var(--site-inset); opacity:1; }
body[data-site-theme] .presence-stats .calendar-day :is(.calendar-count,.calendar-day-top) { color:var(--site-text); }
body[data-site-theme] .site-main .shop-load-more-area p { color:var(--site-muted); }
body[data-site-theme] .site-main .shop-category-tab small { background:var(--site-inset); color:var(--site-text); }
body[data-site-theme] .site-main :is(.problem-jump-unit,.problem-jump-form button) { color:var(--site-text); }
body[data-site-theme] .mypage-overview-tile span { color:var(--site-muted); }
body[data-site-theme] .home-attendance-calendar-panel :is(th,.home-attendance-calendar-day,.home-attendance-calendar-year) { color:var(--site-muted); }

body[data-site-theme] .presence-stats .calendar-day { background:var(--site-inset); }
body[data-site-theme] .scratch-page .scratch-upload-options > p { color:var(--site-muted); }
body[data-site-theme] .mypage-quick-links a span { color:var(--site-muted); }

body[data-site-theme] .presence-stats a[aria-current="page"] { background:var(--site-accent); color:var(--site-on-accent); }
body[data-site-theme] .scratch-page .scratch-card > p { color:var(--site-muted); }
body[data-site-theme] .home-shell .home-ranking-tab.is-active { background:var(--site-inset); border-color:var(--site-accent); }
body[data-site-theme] .home-shell .home-rank-score span { color:var(--site-text); }
body[data-site-theme] .home-attendance-calendar-panel .home-attendance-calendar-cell:not(.is-other-month) .home-attendance-calendar-day { color:var(--site-text); }
body[data-site-theme] .home-attendance-calendar-panel :is(th,.home-attendance-calendar-year) { color:var(--site-text); }
body:is([data-site-theme=""],[data-site-theme="midnight"],[data-site-theme="forest"],[data-site-theme="halloween"]) .problem-list-page .level-links a[data-level-key="bronze"] { color:#edb47c !important; }
body:is([data-site-theme=""],[data-site-theme="midnight"],[data-site-theme="forest"],[data-site-theme="halloween"]) .problem-list-page .level-links a[data-level-key="master"] { color:#ffad8c !important; }
body[data-site-theme="forest"] .problem-list-page .level-links a[data-level-key="beginner"] { color:#81e9a8 !important; }
body[data-site-theme="forest"] .problem-list-page .level-links a[data-level-key="olympiad"] { color:#ffb680 !important; }

body[data-site-theme] #auto-save-status { color:var(--site-muted) !important; }
body[data-site-theme] .presence-stats .calendar-count { background:var(--site-panel); }

body[data-site-theme="halloween"] .problem-list-page .level-links a[data-level-key="silver"] { color:#d1c6ef !important; }
body[data-site-theme="halloween"] .problem-list-page .level-links a[data-level-key="gold"] { color:#ffda86 !important; }
body[data-site-theme] .home-attendance-calendar-panel th { color:var(--site-text) !important; }

body[data-site-theme] .scratch-page :is(.scratch-card,.scratch-delete-confirm) { background:var(--site-panel); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .scratch-page .scratch-delete-actions a { color:var(--site-accent); }

/* Teacher authoring and account forms share the same surface contract. */
body[data-site-theme] .site-main :is(.pc-panel,.pe-panel,.prc-panel,.pre-panel,.students-panel,.edit-student-panel,.shop-edit-panel) { background:var(--site-panel); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .site-main :is(.pc-page,.pe-page,.prc-page,.pre-page,.students-page,.edit-student-page-modern,.shop-edit-page) :is([class$="-field"],[class$="-section"],[class$="-case"],[class$="-card"],[class$="-tools"],[class$="-generator"]) { background:var(--site-inset); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .site-main :is(.pc-page,.pe-page,.prc-page,.pre-page,.students-page,.edit-student-page-modern,.shop-edit-page) :is(p,small,[class$="-desc"],[class$="-kicker"]) { color:var(--site-muted); }
body[data-site-theme] .site-main :is(.pc-file-btn,.pe-file-btn,.prc-add-btn,.pre-add-btn) { background:var(--site-accent); color:var(--site-on-accent); border-color:var(--site-accent); }
body[data-site-theme] .site-main :is(.quiz-footer,.quiz-actions) { background:var(--site-panel); color:var(--site-text); }
body[data-site-theme] .site-main :is(.quiz-footer,.quiz-actions) a { color:var(--site-accent); }
body[data-site-theme] .scratch-page .scratch-filter-tabs a.is-active { background:var(--site-accent); color:var(--site-on-accent); }
body[data-site-theme] .scratch-page .scratch-filter-tabs a.is-active strong { color:inherit; }
body:is([data-site-theme="sakura"],[data-site-theme="latte"],[data-site-theme="light"]) .comment-title { background:var(--site-inset); color:var(--site-accent); border-color:var(--site-border); text-shadow:none; }
body[data-site-theme] .post-boost-kicker { color:var(--site-warning); }
body[data-site-theme] .site-main :is(.comment-reply-toggle,.comment-manage-link) { background:var(--site-inset); color:var(--site-text); }
body[data-site-theme] .site-main .comment-manage-delete { background:var(--site-danger-bg); color:var(--site-danger); }

body[data-site-theme] .site-main header { background:transparent; color:var(--site-text); }
body[data-site-theme] .site-main :is(.pc-form,.pe-form,.prc-form,.pre-form,.quiz-editor form,.edit-student-form,.shop-edit-form) { background:transparent; color:var(--site-text); }
body[data-site-theme] .site-main :is(.pc-hint,.pe-hint,.prc-hint,.pre-hint) { color:var(--site-muted); }
body[data-site-theme] .site-main :is(.pc-attachments,.pe-attachments,.prc-case-item,.pre-case-item) { background:var(--site-inset); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .site-main :is(.pc-attachments,.pe-attachments) strong { color:var(--site-text); }
body[data-site-theme] .site-main .post-boost-kicker { color:var(--site-warning); }

body[data-site-theme] .site-main form { background:transparent; color:var(--site-text); }
body[data-site-theme] .site-main a { color:var(--site-accent); }
body[data-site-theme] .site-main :is(.pc-btn-subtle,.pe-btn-subtle,.prc-btn-subtle,.pre-btn-subtle,.edit-student-btn-subtle,.shop-edit-btn-subtle) { color:var(--site-text); background:var(--site-inset); border-color:var(--site-border); }
body[data-site-theme] .site-main :is(.pc-file-head,.pe-file-head) strong { color:var(--site-text); }
body[data-site-theme] .site-main :is(.students-count,.edit-student-attendance-value) { color:var(--site-text); }
body[data-site-theme] .site-main :is(.edit-student-treasure-section,.edit-student-treasure-head,.shop-edit-field,.shop-edit-preview) { background:var(--site-inset); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .site-main :is(.edit-student-treasure-head strong,.shop-edit-preview-title) { color:var(--site-text); }
body[data-site-theme] .site-main .shop-edit-help { color:var(--site-muted); }
body[data-site-theme] .site-main .turtle-review-filters a.is-active { background:var(--site-accent); color:var(--site-on-accent); }
body[data-site-theme] .site-main .turtle-review-filters a.is-active strong { color:inherit; }
body[data-site-theme] .site-main .post-boost-panel .post-boost-kicker { color:var(--site-warning); }

body[data-site-theme] .site-main :is(.pc-upload-copy,.pe-upload-copy) strong { color:var(--site-text); }
body[data-site-theme] .site-main :is(.helptext,.students-search-btn) { color:var(--site-text); }
body[data-site-theme] .site-main :is(.edit-student-section-title,.shop-edit-image-preview-wrap) { background:var(--site-inset); color:var(--site-text); }
body[data-site-theme] .site-main .edit-student-section-title strong { color:var(--site-text); }
body[data-site-theme] .site-main .edit-student-btn-danger { color:var(--site-danger); background:var(--site-danger-bg); border-color:var(--site-danger); }
body[data-site-theme] .site-main .scratch-delete-link { color:var(--site-danger) !important; }
body[data-site-theme] .site-main .post-boost-kicker { color:var(--site-warning) !important; }

body:is([data-site-theme=""],[data-site-theme="midnight"],[data-site-theme="forest"],[data-site-theme="halloween"]) .site-main .comment-title--hundred_victories { color:#ffaaa0; }

body[data-site-theme] .site-main :is(.login-panel,.signup-panel,.ce-panel) { background:var(--site-panel); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .site-main :is(.login-field,.signup-field,.ce-field) { background:var(--site-inset); color:var(--site-text); border-color:var(--site-border); }

/* Student public pages and the teacher's detailed learning history. */
body[data-site-theme] .site-main :is(.public-student-page,.solved-page) :is(span,strong,p,small,em,dt,dd,summary) { color:var(--site-text); }
body[data-site-theme] .site-main :is(.solved-hero,.solved-card,.solved-stat,.record-item,.lesson-cycle-group,.lesson-history-block,.record-code,.public-student-stat,.public-student-lesson-summary,.public-student-cycle-group) { background:var(--site-panel); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .site-main :is(.public-student-calendar-error,.public-student-calendar-error button) { background:var(--site-danger-bg); color:var(--site-danger); border-color:var(--site-danger); }
body[data-site-theme] .site-main .solved-page .status-pill:is(.status-done,.status-processed) { color:var(--site-success); background:var(--site-success-bg); }
body[data-site-theme] .site-main .solved-page .status-pill:is(.status-wrong,.status-rejected) { color:var(--site-danger); background:var(--site-danger-bg); }
body[data-site-theme] .site-main .room-student-emphasis { background:var(--site-inset); color:var(--site-accent); }

body[data-site-theme] .site-main :is(.solved-stat-card,.solved-chip,.student-info-item,.lesson-group-add,.lesson-group-create-form,.lesson-payment-details,.lesson-record-edit[open],.record-code pre,.empty-note) { background:var(--site-inset); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .site-main .public-student-page :is(.public-student-stats article,.public-student-records li,.public-student-lesson-list li,.public-student-calendar-nav,.public-student-selected-lessons,.public-student-selected-lessons li,.public-student-cycle-group,.public-student-calendar-day,.public-student-solved-count) { background:var(--site-inset); color:var(--site-text); border-color:var(--site-border); }
body[data-site-theme] .site-main .public-student-page .public-student-calendar-day.is-selected { border-color:var(--site-accent); }
body[data-site-theme] .site-main .ranking { background:var(--site-panel); color:var(--site-text); }
body.public-student-scratcher-base[data-site-theme] .site-main { background:var(--site-bg); }

/* Keep saved lateness visible beside the lesson, independently of completion. */
body[data-site-theme] .site-main .solved-page .lesson-lateness {
  display: block;
  width: fit-content;
  margin-top: 6px;
  padding: 4px 9px;
  border: 1px solid var(--site-warning);
  border-radius: 6px;
  background: var(--site-warning-bg);
  color: var(--site-warning);
  font-size: .9rem;
  font-weight: 800;
  line-height: 1.5;
}
body[data-site-theme] .site-main .solved-lateness-stat { border-color: var(--site-warning); }
