/* Shared appearance. Legacy declarations retain their exact light colour as a fallback. */
@media screen {
  :root[data-puk-theme="dark"] {
    color-scheme:dark;
    --puk-theme-page:#111715; --puk-theme-surface:#1a2420; --puk-theme-raised:#233128;
    --puk-theme-text:#e8f0eb; --puk-theme-muted:#adbbb2; --puk-theme-accent:#79e7ac;
    --puk-theme-border:#52685b; --puk-theme-control:#829b8b;
    --puk-theme-success:#8be8b4; --puk-theme-success-soft:#193a2a;
    --puk-theme-warning:#f4cd7c; --puk-theme-warning-soft:#382e1c;
    --puk-theme-error:#ffada7; --puk-theme-error-soft:#3c2424;
    --puk-theme-info:#a6d7ff; --puk-theme-info-soft:#1c3041;
    --puk-theme-purple:#d6baff; --puk-theme-purple-soft:#30253e;
    --puk-theme-action:#22c670; --puk-theme-on-action:#082719;
    --puk-theme-strong:#183c2b; --puk-theme-danger:#963434;
    --puk-theme-overlay:rgba(0,0,0,.65);
  }
  :root[data-puk-theme="dark"][data-puk-contrast="more"] {
    --puk-theme-page:#090e0b; --puk-theme-surface:#121b15; --puk-theme-raised:#16241b;
    --puk-theme-text:#fff; --puk-theme-muted:#d0e0d5; --puk-theme-accent:#a3f6c5;
    --puk-theme-border:#8aa694; --puk-theme-control:#a5c0af;
  }
  :root[data-puk-theme="light"][data-puk-contrast="more"] {
    --puk-theme-page:#fff; --puk-theme-surface:#fff; --puk-theme-raised:#f0f5f1;
    --puk-theme-text:#07160c; --puk-theme-muted:#304a38; --puk-theme-accent:#0c5730;
    --puk-theme-border:#6e8876; --puk-theme-control:#45684e;
    --puk-theme-success:#0c5730; --puk-theme-success-soft:#e7f5ed;
    --puk-theme-warning:#68400b; --puk-theme-warning-soft:#fff7e5;
    --puk-theme-error:#8e2020; --puk-theme-error-soft:#fff0ee;
    --puk-theme-info:#134e7b; --puk-theme-info-soft:#edf6ff;
    --puk-theme-purple:#573285; --puk-theme-purple-soft:#f4eaff;
    --puk-theme-action:#12683d; --puk-theme-on-action:#fff; --puk-theme-strong:#123923; --puk-theme-danger:#8e2020;
    --puk-theme-overlay:rgba(0,0,0,.5);
  }
  html[data-puk-theme] { color-scheme:light; }
  html[data-puk-theme="dark"] { color-scheme:dark; }
  html[data-puk-theme="dark"] body { color:var(--puk-theme-text); background:var(--puk-theme-page); }
  html[data-puk-theme="dark"] body.puk-has-app-shell { background:var(--puk-theme-page) !important; }
  html[data-puk-theme="dark"] :is(.puk-app-sidenav,.puk-app-drawer,.puk-app-topbar) { background:var(--puk-theme-surface) !important; }
  html[data-puk-theme="dark"] :is(.puk-app-nav__item i,.puk-app-drawer__item i) { background:transparent; color:var(--puk-theme-accent); }
  html[data-puk-theme="dark"] :is(.puk-app-nav__brand,.puk-app-drawer__brand,.puk-app-topbar__brand) { color:var(--puk-theme-text); }
  html[data-puk-theme="dark"] .puk-theme-logo { background:transparent; box-shadow:none; }
  html[data-puk-theme="dark"] .puk-theme-logo > img { visibility:hidden; }
  html[data-puk-theme="dark"] .puk-theme-logo > span { position:absolute; inset:3px; background:var(--puk-theme-accent); -webkit-mask:url('/images/mbFace-noBG.png') center/contain no-repeat; mask:url('/images/mbFace-noBG.png') center/contain no-repeat; }
  html[data-puk-theme="dark"] :is(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea,math-field) { background-color:var(--puk-theme-surface); color:var(--puk-theme-text); border-color:var(--puk-theme-control); }
  html[data-puk-theme="dark"] :is(input,textarea)::placeholder { color:var(--puk-theme-muted); opacity:1; }
  html[data-puk-theme="dark"] :is(.text-muted,.text-secondary) { color:var(--puk-theme-muted) !important; }
  html[data-puk-theme="dark"] :is(.bg-white,.bg-light,.card,.modal-content,.dropdown-menu,.list-group-item,.table) { background-color:var(--puk-theme-surface); color:var(--puk-theme-text); border-color:var(--puk-theme-border); }
  html[data-puk-theme="dark"] :is(.bg-white,.bg-light) { background-color:var(--puk-theme-surface) !important; }
  html[data-puk-theme="dark"] :is(.dropdown-item,.nav-link,.close) { color:var(--puk-theme-text); }
  html[data-puk-theme="dark"] :is(.btn-light,.btn-outline-secondary) { color:var(--puk-theme-text); background:var(--puk-theme-raised); border-color:var(--puk-theme-control); }
  html[data-puk-theme="dark"] .table td, html[data-puk-theme="dark"] .table th { border-color:var(--puk-theme-border); }
  html[data-puk-theme="dark"] .table-striped tbody tr:nth-of-type(odd) { background:var(--puk-theme-raised); }
  /* Defaults must yield to component buttons, including anchors without a class. */
  :where(html[data-puk-theme="dark"]) body a { color:var(--puk-theme-info); }
  html[data-puk-theme] :focus-visible { outline:3px solid var(--puk-theme-accent,#12683d); outline-offset:3px; }
  html[data-puk-contrast="more"] :is(input,select,textarea,button) { border-color:var(--puk-theme-control); }
}
.puk-theme-logo { display:inline-flex; position:relative; flex-shrink:0; }
.puk-theme-logo > img { width:100%; height:100%; object-fit:contain; }
.puk-appearance-open { display:flex; align-items:center; justify-content:space-between; gap:8px; min-height:40px; width:100%; border:1px solid var(--puk-theme-control,#789484); border-radius:9px; padding:8px 11px; background:var(--puk-theme-surface,#fff); color:var(--puk-theme-text,#14291e); font:600 12px/1.4 system-ui,sans-serif; cursor:pointer; margin-bottom:8px; }
.puk-appearance-open small { font-size:10px; color:var(--puk-theme-muted,#52685b); }
.puk-appearance-mobile { width:auto; margin:0 8px 0 auto; }
.puk-appearance-card { max-width:760px; margin:20px 0; padding:22px; background:var(--puk-theme-surface,#fff); color:var(--puk-theme-text,#14291e); border:1px solid var(--puk-theme-border,#d6e3da); border-radius:14px; }
.puk-appearance-card h2 { font-size:1.15rem; font-weight:700; margin:0 0 8px; }
.puk-appearance-card > p { color:var(--puk-theme-muted,#52685b); font-size:.9rem; }
.puk-appearance-dialog { box-sizing:border-box; width:min(440px,calc(100% - 32px)); max-height:calc(100dvh - 32px); overflow:auto; padding:25px; color:var(--puk-theme-text,#14291e); background:var(--puk-theme-surface,#fff); border:1px solid var(--puk-theme-control,#789484); border-radius:16px; box-shadow:0 20px 90px #0006; font:14px/1.6 system-ui,sans-serif; }
.puk-appearance-dialog::backdrop { background:#07140db3; }
.puk-appearance-heading { display:flex; align-items:center; justify-content:space-between; gap:15px; margin-bottom:22px; }
.puk-appearance-heading h2 { margin:0; font-size:1.5rem; font-weight:650; }
.puk-appearance-heading button { width:40px; height:40px; border:1px solid var(--puk-theme-control,#789484); border-radius:8px; background:transparent; color:inherit; font-size:24px; cursor:pointer; }
.puk-appearance-options { display:flex; gap:8px; }
.puk-appearance-options button { flex:1; min-height:52px; border:1px solid var(--puk-theme-control,#789484); border-radius:9px; background:var(--puk-theme-page,#f5f8f6); color:var(--puk-theme-text,#14291e); font:600 14px system-ui,sans-serif; cursor:pointer; }
.puk-appearance-options button[aria-pressed=true] { color:var(--puk-theme-accent,#12683d); background:var(--puk-theme-success-soft,#e7f5ed); border:2px solid var(--puk-theme-accent,#12683d); }
.puk-appearance-contrast { display:flex; align-items:center; justify-content:space-between; gap:15px; margin:22px 0 12px; padding:16px 0; border-top:1px solid var(--puk-theme-border,#d6e3da); border-bottom:1px solid var(--puk-theme-border,#d6e3da); }
.puk-appearance-contrast strong,.puk-appearance-contrast small { display:block; }
.puk-appearance-contrast small,.puk-appearance-help { color:var(--puk-theme-muted,#52685b); font-size:12px; }
.puk-appearance-contrast input { width:23px; height:23px; accent-color:var(--puk-theme-accent,#12683d); flex-shrink:0; }
.puk-appearance-done { width:100%; min-height:44px; margin-top:12px; border:1px solid #22c670; border-radius:9px; background:#22c670; color:#082719; font:700 14px system-ui,sans-serif; cursor:pointer; }
.puk-appearance-floating { position:fixed; bottom:16px; left:16px; z-index:790; min-height:40px; padding:8px 12px; border:1px solid var(--puk-theme-control,#789484); border-radius:9px; background:var(--puk-theme-surface,#fff); color:var(--puk-theme-text,#14291e); font:600 12px system-ui,sans-serif; cursor:pointer; }
/* Paper islands: preserve original diagram, handwriting and export colours. */
:is(.solve-diagram,.pp-stylus__paper,.puk-inline-editor__stage,.puk-wb-canvas-wrap,.wb2__surface,.puk-ink-fullscreen__page,.diagram-area,.exambot-marked-visual,.puk-theme-paper) {
  --puk-theme-page:initial; --puk-theme-surface:initial; --puk-theme-raised:initial; --puk-theme-text:initial; --puk-theme-muted:initial; --puk-theme-accent:initial;
  --puk-theme-border:initial; --puk-theme-control:initial; --puk-theme-success:initial; --puk-theme-success-soft:initial; --puk-theme-warning:initial; --puk-theme-warning-soft:initial;
  --puk-theme-error:initial; --puk-theme-error-soft:initial; --puk-theme-info:initial; --puk-theme-info-soft:initial; --puk-theme-purple:initial; --puk-theme-purple-soft:initial;
  --puk-theme-action:initial; --puk-theme-on-action:initial; --puk-theme-strong:initial; --puk-theme-danger:initial; --puk-theme-overlay:initial;
  color-scheme:light; color:#122033;
}
html[data-puk-theme] :is(.solve-diagram,.solve-diagram-dialog img,.diagram-area,.puk-theme-chart,.puk-drawing-thumb,.puk-photo-card img,.puk-photo-modal__preview canvas,.mock-diagram,.mock-saved-image,.puk-question-diagram,.pc-diagram img) { background:#fff !important; color:#20312b; }
html[data-puk-theme] .solve-diagram img { filter:none; mix-blend-mode:normal; background:#fff; }
html[data-puk-theme] .solve-diagram figcaption { color:#42534a; }
html[data-puk-theme] .puk-theme-chart { border-radius:8px; }
@media print { .puk-appearance-open,.puk-appearance-floating,.puk-appearance-dialog,.puk-appearance-card { display:none !important; } }
@media (forced-colors:active) { .puk-appearance-options button[aria-pressed=true] { border:3px solid Highlight; } .puk-theme-logo > img { visibility:visible !important; } .puk-theme-logo > span { display:none; } }
