/* The learner page's own stylesheet.

   The ported panel (app/ui.js) keeps its inline styles and its DSH variable
   vocabulary: every colour is a `--dsw-alias-*` token, the same names the DSH
   sidebar uses (see the C map in ~/V/lib/dsh/plugins/dsh-chinese-learner/
   client.js). This file maps those tokens to a clean light/dark palette and adds
   the page reset plus the few classes the standalone shell needs. The panel's
   own px/radius/typography values live inline, so the look is unchanged.

   CSS here is hand-written, 4-space-indented and NOT prettier-formatted. */

:root {
    color-scheme: light dark;

    /* The DSH alias tokens the panel reads, light palette: warm paper, ink text,
       one blue accent. */
    --dsw-alias-bg-base: #ffffff;
    --dsw-alias-bg-layer-1: #f7f7f4;
    --dsw-alias-label-primary: #1d1d1b;
    --dsw-alias-label-secondary: #56564e;
    --dsw-alias-label-tertiary: #8a8a80;
    --dsw-alias-border-l1: #e5e5df;
    --dsw-alias-border-l3: #c6c6bd;
    --dsw-alias-brand-primary: #2563eb;
    --dsw-alias-state-error-primary: #b42318;
    --dsw-alias-state-warn-primary: #8a5a00;
    --dsw-alias-state-warn-tertiary: #fdf4e0;
}

@media (prefers-color-scheme: dark) {
    :root {
        /* The same tokens on ink: near-black panels, off-white text, a lighter
           blue so the accent still reads as text. */
        --dsw-alias-bg-base: #151517;
        --dsw-alias-bg-layer-1: #1e1e21;
        --dsw-alias-label-primary: #f1f1f3;
        --dsw-alias-label-secondary: #b4b4bc;
        --dsw-alias-label-tertiary: #87878f;
        --dsw-alias-border-l1: #2c2c31;
        --dsw-alias-border-l3: #4a4a52;
        --dsw-alias-brand-primary: #7aa7ff;
        --dsw-alias-state-error-primary: #ff8a85;
        --dsw-alias-state-warn-primary: #e8c46a;
        --dsw-alias-state-warn-tertiary: #352a14;
    }
}

* {
    box-sizing: border-box;
}

html,
body {
    height: 100%;
}

/* The panel is an app: it owns the viewport and scrolls its own body. */
body {
    margin: 0;
    overflow: hidden;
    background: var(--dsw-alias-bg-base);
    color: var(--dsw-alias-label-primary);
    font-family: ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
    -webkit-text-size-adjust: 100%;
}

#root {
    height: 100%;
}

@supports (height: 100dvh) {
    html,
    body,
    #root {
        height: 100dvh;
    }
}

::selection {
    background: var(--dsw-alias-brand-primary);
    color: var(--dsw-alias-bg-base);
}

button:focus-visible,
input:focus-visible,
[tabindex]:focus-visible {
    outline: 2px solid var(--dsw-alias-brand-primary);
    outline-offset: 2px;
}

/* ---------- the header wraps on a phone ---------- */
.bh-header {
    flex-wrap: wrap;
}

/* ---------- the unlock bar (a locked page asks for its code here) ---------- */
.bh-unlock {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border-bottom: 1px solid var(--dsw-alias-border-l1);
    background: var(--dsw-alias-state-warn-tertiary);
    color: var(--dsw-alias-state-warn-primary);
    font-size: 12px;
    line-height: 1.5;
}

.bh-unlock input {
    flex: 1;
    min-width: 140px;
    appearance: none;
    border: 1px solid var(--dsw-alias-border-l3);
    border-radius: 7px;
    background: var(--dsw-alias-bg-base);
    color: var(--dsw-alias-label-primary);
    padding: 6px 10px;
    font: inherit;
    outline: none;
}

/* ---------- the transcript ---------- */
.bh-part {
    margin-top: 18px;
    padding-top: 12px;
    border-top: 1px solid var(--dsw-alias-border-l1);
}

.bh-part:first-child {
    margin-top: 0;
    padding-top: 0;
    border-top: 0;
}

.bh-part-label {
    margin-bottom: 6px;
    font: 11px/1.4 ui-monospace, SFMono-Regular, Menlo, monospace;
    color: var(--dsw-alias-label-tertiary);
    overflow-wrap: anywhere;
}

/* ---------- history ---------- */
.bh-tools {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
}

.bh-history-row {
    display: flex;
    align-items: stretch;
    gap: 8px;
    margin-bottom: 8px;
}

.bh-history-open {
    flex: 1;
    min-width: 0;
    appearance: none;
    text-align: left;
    border: 1px solid var(--dsw-alias-border-l1);
    border-radius: 9px;
    background: var(--dsw-alias-bg-layer-1);
    color: var(--dsw-alias-label-primary);
    padding: 9px 12px;
    cursor: pointer;
    font: 13px/1.5 ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
}

.bh-history-open:hover {
    border-color: var(--dsw-alias-border-l3);
}

.bh-history-delete {
    flex: none;
    width: 40px;
    appearance: none;
    border: 1px solid var(--dsw-alias-border-l1);
    border-radius: 9px;
    background: transparent;
    color: var(--dsw-alias-label-secondary);
    cursor: pointer;
    font: 15px/1.2 ui-sans-serif, system-ui, -apple-system, 'Segoe UI', sans-serif;
}

.bh-history-delete:hover {
    border-color: var(--dsw-alias-state-error-primary);
    color: var(--dsw-alias-state-error-primary);
}

@media (max-width: 560px) {
    .bh-history-delete {
        width: 34px;
    }
}
