/* Nexus Signal roles from docs/visual-first/art-bible.md and the existing
   Student Signal theme. These are shared Entry work surfaces, not a new palette. */
@font-face { font-family: "Space Grotesk"; src: url("/assets/fonts/SpaceGrotesk-Variable.woff2") format("woff2"); font-weight: 300 700; font-style: normal; font-display: swap; }
@font-face { font-family: Inter; src: url("/assets/fonts/InterVariable.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("/assets/fonts/IBMPlexMono-Regular.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
html { min-height: 100%; background: #080b12; }
body { margin: 0; }
.nexus-entry {
    color-scheme: dark;
    --surface-canvas: #080b12;
    --surface-workspace: #0e1521;
    --surface-raised: #151f2f;
    --text-primary: #f2f6fc;
    --text-secondary: color-mix(in srgb, var(--text-primary) 75%, var(--surface-workspace));
    --signal-interaction: #53e0d1;
    --signal-teacher: #ffbe5c;
    --signal-live: #9b87f5;
    --signal-attention: #ff7c86;
    --signal-success: #56d9a0;
    --line: color-mix(in srgb, var(--text-primary) 40%, var(--surface-workspace));
    box-sizing: border-box;
    min-height: 100dvh;
    margin: 0;
    background: var(--surface-canvas);
    color: var(--text-primary);
    font: 400 1rem/1.6 Inter, system-ui, sans-serif;
    overflow-wrap: anywhere;
}
.nexus-entry *, .nexus-entry *::before, .nexus-entry *::after { box-sizing: inherit; }
.nexus-entry [hidden] { display: none !important; }
.entry-session-status { max-width: 48rem; margin: 1.5rem; }
.nexus-entry h1, .nexus-entry h2, .nexus-entry h3 { font-family: "Space Grotesk", Inter, sans-serif; line-height: 1.2; font-weight: 600; }
.nexus-entry h1 { font-size: clamp(1.75rem, 3vw, 2.5rem); margin: 0 0 1rem; }
.nexus-entry h2 { font-size: 1.375rem; margin: 0 0 .75rem; }
.nexus-entry h3 { font-size: 1.125rem; }
.nexus-entry p { margin: .5rem 0 1rem; }
.nexus-entry a { color: var(--signal-interaction); text-underline-offset: .2em; }
.nexus-entry :focus-visible { outline: 2px solid var(--signal-interaction); outline-offset: 4px; }
.nexus-entry [tabindex="-1"]:focus { outline: 2px solid var(--signal-interaction); outline-offset: 4px; }
.entry-skip { position: absolute; left: 1rem; top: -8rem; z-index: 10; padding: .75rem 1rem; background: var(--surface-raised); }
.entry-skip:focus { top: 1rem; }
.entry-frame { display: grid; grid-template-columns: 16rem minmax(0, 1fr); min-height: 100dvh; }
.entry-rail { border-right: 2px solid var(--line); padding: 2rem 1rem; background: var(--surface-workspace); }
.entry-brand { font-family: "Space Grotesk", Inter, sans-serif; font-size: 1.5rem; font-weight: 600; letter-spacing: .025em; margin-bottom: .5rem; }
.entry-eyebrow { color: var(--text-secondary); font-size: .875rem; margin: 0 0 1.5rem; }
.entry-nav { display: grid; gap: .5rem; }
.entry-nav a { display: flex; align-items: center; gap: .75rem; min-height: 44px; padding: .75rem; border: 2px solid transparent; border-radius: 8px; text-decoration: none; color: var(--text-primary); }
.entry-nav a[aria-current="page"] { border-color: var(--signal-interaction); background: var(--surface-raised); }
.entry-nav a:hover { text-decoration: underline; }
.entry-nav-unavailable { padding: .75rem; color: var(--text-secondary); font-size: .875rem; }
.entry-icon { flex: 0 0 24px; width: 24px; height: 24px; }
.entry-workspace { min-width: 0; padding: 2rem; }
.entry-topbar { display: flex; justify-content: space-between; align-items: flex-start; gap: 1.5rem; flex-wrap: wrap; margin-bottom: 2rem; }
.entry-context { max-width: 36rem; color: var(--text-secondary); font-size: .875rem; }
.entry-account { display: flex; gap: 1rem; flex-wrap: wrap; align-items: center; }
.entry-account > a { min-height: 44px; display: inline-flex; align-items: center; }
.entry-main { max-width: 78rem; }
.entry-breadcrumbs { color: var(--text-secondary); font-size: .875rem; margin-bottom: 1rem; }
.entry-breadcrumbs ol { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; padding: 0; margin: 0; }
.entry-breadcrumbs li + li::before { content: "/"; margin-right: .5rem; }
.entry-mobile-nav { display: none; }
.entry-card, .entry-status, .entry-error-summary { padding: 1.5rem; background: var(--surface-workspace); border: 2px solid var(--line); border-radius: 12px; margin: 0 0 1.5rem; }
.entry-status[data-state="restricted"], .entry-status[data-state="conflict"], .entry-status[data-state="failed"], .entry-error-summary { border-color: var(--signal-attention); }
.entry-status[data-state="received"] { border-color: var(--signal-success); }
.entry-card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); gap: 1rem; }
.entry-card-grid > .entry-card { min-width: 0; height: 100%; margin-bottom: 0; }
.entry-policy-text { white-space: pre-wrap; overflow-wrap: anywhere; }
.entry-policy-version { font-family: "IBM Plex Mono", ui-monospace, monospace; overflow-wrap: anywhere; }
.entry-learner-switcher { max-width: 52rem; margin: 0 auto; padding: 2rem 2rem 0; }
.entry-learner-switcher .entry-nav { grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr)); list-style: none; margin: 0; padding: 0; }
.entry-form, .entry-questionnaire { width: 100%; max-width: 48rem; min-width: 0; }
.entry-auth { max-width: 36rem; margin: 0 auto; padding: 3rem 1.5rem; }
.nexus-entry[data-entry-family-identity="true"] .entry-auth { width: min(100%, 42rem); }
.nexus-entry[data-entry-family-identity="true"] .entry-masthead { margin-bottom: 1.5rem; }
.nexus-entry[data-entry-family-identity="true"] form { display: grid; grid-template-columns: minmax(0, 1fr); gap: .5rem; }
.nexus-entry[data-entry-family-identity="true"] form label { display: block; margin-top: .75rem; font-weight: 600; }
.nexus-entry[data-entry-family-identity="true"] form input:not([type="hidden"]) { box-sizing: border-box; width: 100%; min-width: 0; min-height: 44px; padding: .75rem; border: 2px solid var(--line); border-radius: 8px; background: var(--surface-canvas); color: var(--text-primary); font: inherit; }
.nexus-entry[data-entry-family-identity="true"] form button { justify-self: start; margin-top: .75rem; }
.nexus-entry[data-entry-family-identity="true"] .entry-primary-action { display: inline-flex; align-items: center; justify-content: center; max-width: 100%; margin-top: .5rem; text-align: center; overflow-wrap: anywhere; }
.entry-wizard-page { max-width: 52rem; margin: 0 auto; padding: 2rem; }
.entry-field { margin-bottom: 1.5rem; min-width: 0; }
.entry-field > label, .entry-field > legend { font-weight: 600; display: block; margin-bottom: .5rem; }
.entry-hint { color: var(--text-secondary); font-size: .875rem; }
.entry-field-error { color: var(--signal-attention); font-weight: 500; }
.entry-field input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), .entry-field textarea, .entry-field select { font: inherit; color: inherit; background: var(--surface-canvas); border: 2px solid var(--line); border-radius: 8px; min-height: 44px; width: 100%; max-width: 100%; padding: .75rem; }
.entry-field textarea { min-height: 10rem; resize: vertical; }
.entry-field input[aria-invalid="true"], .entry-field textarea[aria-invalid="true"] { border-color: var(--signal-attention); }
.entry-field fieldset, fieldset.entry-field { margin: 0 0 1.5rem; padding: 1rem; border: 2px solid var(--line); border-radius: 8px; min-width: 0; }
.entry-choice { display: flex; gap: .75rem; align-items: flex-start; min-height: 44px; padding: .5rem 0; cursor: pointer; }
.entry-choice input { width: 1.25rem; height: 1.25rem; flex: 0 0 1.25rem; margin: .2rem 0 0; accent-color: var(--signal-interaction); }
.entry-actions { display: flex; align-items: center; flex-wrap: wrap; gap: .75rem; margin-top: 1.5rem; }
.entry-wizard-page a { display: inline-flex; align-items: center; min-height: 44px; max-width: 100%; }
.nexus-entry summary { display: flex; align-items: center; min-height: 44px; cursor: pointer; }
.nexus-entry button, .entry-button { font: inherit; font-weight: 600; min-height: 44px; padding: .625rem 1rem; border: 2px solid var(--signal-interaction); border-radius: 8px; background: var(--surface-canvas); color: var(--text-primary); cursor: pointer; text-decoration: none; }
.nexus-entry button[data-primary="true"], .entry-button-primary { background: var(--signal-interaction); color: var(--surface-canvas); }
.nexus-entry a.entry-button-primary { color: var(--surface-canvas); }
.nexus-entry button:disabled { cursor: default; border-style: dashed; color: var(--text-secondary); background: var(--surface-workspace); }
.entry-save-status { font-size: .875rem; margin-top: 1rem; }
.entry-progress { color: var(--text-secondary); font-weight: 600; margin: .5rem 0 1rem; }
.entry-progress ol { list-style: none; margin: 0; padding: 0; }
.entry-receipt, .entry-timestamp { font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: .875rem; }
.entry-step-list { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; padding-left: 1.5rem; margin-bottom: 1.5rem; }
.entry-step-list [aria-current="step"] { font-weight: 600; text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: .25em; }
.entry-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: 1rem; }
.entry-summary > article { padding: 1.5rem; background: var(--surface-workspace); border: 2px solid var(--line); border-radius: 12px; }
.entry-summary dl { margin: 0; }
.entry-summary dt { color: var(--text-secondary); }
.entry-summary dd { margin: 0 0 .75rem; }
.entry-notice { white-space: pre-wrap; }
.entry-table-region { max-width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; }
.entry-table-region table { width: 100%; min-width: 46rem; border-collapse: collapse; }
.entry-table-region caption { padding: 0 0 .75rem; font-weight: 600; text-align: left; }
.entry-table-region th, .entry-table-region td { padding: .75rem; border-block-end: 1px solid var(--line); text-align: left; vertical-align: top; }
@media (max-width: 64rem) { .entry-workspace { padding: 1.5rem; } .entry-frame { grid-template-columns: 14rem minmax(0, 1fr); } }
@media (max-width: 48rem) {
    .entry-frame { display: block; }
    .entry-rail { display: none; }
    .entry-mobile-nav { display: block; border-bottom: 2px solid var(--line); background: var(--surface-workspace); padding: 1rem; }
    .entry-mobile-nav summary { min-height: 44px; padding: .5rem 0; cursor: pointer; font-weight: 600; }
    .entry-mobile-nav .entry-nav { margin-top: .75rem; }
    .entry-workspace, .entry-auth, .entry-wizard-page { padding: 1rem; }
    .entry-learner-switcher { padding: 1rem 1rem 0; }
    .entry-card, .entry-status, .entry-error-summary { padding: 1rem; }
    .entry-actions > * { flex: 1 1 12rem; text-align: center; }
    .entry-topbar { margin-bottom: 1.5rem; }
}
@media (prefers-reduced-motion: reduce) { .nexus-entry *, .nexus-entry *::before, .nexus-entry *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; } }
@media (forced-colors: active) {
    .nexus-entry { background: Canvas; color: CanvasText; }
    .nexus-entry a { color: LinkText; }
    .nexus-entry button, .entry-button, .entry-field input, .entry-field textarea, .entry-field select { forced-color-adjust: auto; color: ButtonText; background: ButtonFace; border-color: ButtonText; }
    .entry-card, .entry-status, .entry-error-summary, .entry-nav a[aria-current="page"], fieldset.entry-field { border-color: CanvasText; }
    .entry-nav a[aria-current="page"] { border-style: double; }
    .nexus-entry :focus-visible { outline: 2px solid Highlight; }
    .entry-hint, .entry-context, .entry-eyebrow, .entry-field-error { color: CanvasText; }
}
