@layer theme,base,components,utilities;:root{--color-cream-50: #fdfbf7;--color-cream-100: #f7f3ec;--color-white: #ffffff;--color-white-warm: #fffefa;--color-brown-900: #2c2220;--color-brown-700: #4a3b38;--color-brown-500: #7a6b66;--color-brown-400: #9a8a86;--color-brown-rgb: 44, 34, 32;--color-gold-500: #fec107;--color-gold-600: #e5ac00;--color-gold-650: #f5a623;--color-gold-rgb: 254, 193, 7;--color-info-500: #2563eb;--color-info-rgb: 37, 99, 235;--color-success-500: #10b981;--color-error-500: #ef4444;--color-warning-500: #f59e0b;--surface-canvas: var(--color-cream-50);--surface-subtle: var(--color-cream-100);--surface-card: var(--color-white-warm);--surface-paper: var(--color-white);--surface-inverse: var(--color-brown-900);--text-primary: var(--color-brown-900);--text-secondary: var(--color-brown-700);--text-tertiary: var(--color-brown-500);--text-muted: var(--color-brown-400);--text-on-inverse: var(--color-cream-50);--text-on-inverse-muted: rgba(253, 251, 247, .65);--border-default: rgba(var(--color-brown-rgb), .1);--border-muted: rgba(var(--color-brown-rgb), .14);--border-width: 1px;--border-width-accent: 3px;--ambient-network-rgb: 154, 138, 134;--action-primary-bg: var(--color-gold-500);--action-primary-bg-hover: var(--color-gold-600);--action-primary-rgb: 254, 193, 7;--action-primary-gradient-from: var(--color-gold-500);--action-primary-gradient-to: var(--color-gold-650);--action-primary-surface: #fef3cd;--action-primary-border: rgba(var(--color-gold-rgb), .38);--action-primary-text: var(--color-brown-900);--status-info: var(--color-info-500);--status-info-rgb: 37, 99, 235;--status-info-surface: rgba(var(--color-info-rgb), .08);--status-info-border: rgba(var(--color-info-rgb), .22);--status-info-text: #1e3a8a;--status-success: var(--color-success-500);--status-success-surface: #ecfdf5;--status-success-border: #a7f3d0;--status-success-text: #064e3b;--status-error: var(--color-error-500);--status-error-surface: #fef2f2;--status-error-border: #fecaca;--status-error-text: #7f1d1d;--status-warning: var(--color-warning-500);--status-warning-surface: #fffbeb;--status-warning-border: #fde68a;--status-warning-text: #78350f;--font-body: "Source Sans 3", system-ui, sans-serif;--font-display: "DM Serif Display", Georgia, serif;--type-weight-normal: 400;--type-weight-medium: 500;--type-weight-semibold: 600;--type-weight-bold: 700;--type-size-xs: .75rem;--type-size-sm: .875rem;--type-size-base: 1rem;--type-size-lg: 1.125rem;--type-size-xl: 1.25rem;--type-size-2xl: 1.5rem;--type-size-3xl: 1.875rem;--type-size-4xl: 2.25rem;--type-size-5xl: 3rem;--type-size-code: .9em;--type-line-height-tight: 1.2;--type-line-height-snug: 1.25;--type-line-height-normal: 1.5;--type-tracking-tight: -.02em;--type-tracking-wide: .06em;--font-mono: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;--space-1: .25rem;--space-code-y: .1rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-24: 6rem;--space-28: 7rem;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-card: 1.25rem;--radius-pill: 9999px;--elevation-sm: 0 1px 2px 0 rgba(var(--color-brown-rgb), .05);--elevation-md: 0 8px 24px rgba(var(--color-brown-rgb), .08), 0 2px 8px rgba(var(--color-brown-rgb), .06);--elevation-lg: 0 24px 48px rgba(var(--color-brown-rgb), .12), 0 8px 16px rgba(var(--color-brown-rgb), .08);--elevation-action: 0 6px 20px rgba(var(--action-primary-rgb), .35);--easing-out: cubic-bezier(.16, 1, .3, 1);--easing-spring: cubic-bezier(.34, 1.56, .64, 1);--easing-inout: cubic-bezier(.4, 0, .2, 1);--dur-100: .12s;--dur-200: .18s;--dur-300: .24s;--dur-reveal: .7s;--easing-reveal: ease-out;--scrollbar-size: .5rem;--scrollbar-thumb-color: rgba(var(--color-brown-rgb), .16);--scrollbar-radius: var(--radius-lg);--skeleton-surface: rgba(var(--color-brown-rgb), .06);--skeleton-shine: rgba(255, 255, 255, .55);--touch-target: 2.75rem;--control-min-height: var(--touch-target);--control-min-height-compact: 2rem;--control-padding-block: var(--space-2);--control-padding-inline: var(--space-4);--control-font-size: var(--type-size-sm);--segmented-phone-cell-width: clamp(1.125rem, 4vw, 1.75rem);--interactive-control-track-height: 4px;--interactive-control-thumb-size: 18px;--interactive-toggle-width: 48px;--interactive-toggle-height: 26px;--interactive-toggle-inset: 2px;--interactive-toggle-knob: 22px;--interactive-toggle-travel: 22px;--overlay-sheet-width-standard: 720px;--content-measure: 68ch;--content-gutter-min: var(--space-4);--content-gutter-fluid: 3vw;--content-gutter-max: var(--space-6);--content-padding-block-mobile: var(--space-4);--content-padding-block-desktop: var(--space-4);--content-figure-margin-y: var(--space-3);--document-margin: 16mm;--document-chrome-padding-block: 2mm;--document-chrome-root-size: 12pt;--z-base: 0;--z-content: 10;--z-overlay: 20;--z-chrome: 40;--z-modal: 50}@layer base{input,select,textarea,button{box-sizing:border-box}a:any-link{color:inherit;text-decoration:none}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes dialog-in{0%{opacity:0;transform:translateY(var(--space-3)) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@layer components{.action-primary{background:linear-gradient(135deg,var(--action-primary-gradient-from),var(--action-primary-gradient-to));color:var(--action-primary-text);box-shadow:var(--elevation-action)}.action-primary:hover{background:var(--action-primary-bg-hover)}.action-default{background:color-mix(in srgb,var(--surface-card) 88%,transparent);color:var(--text-primary);border:1px solid var(--border-default)}.action-default:hover{background:var(--surface-card)}a.action-primary,a.action-default,a.action-danger{display:inline-flex;align-items:center;min-height:var(--touch-target);padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-weight:var(--type-weight-bold);text-decoration:none;transition:background var(--dur-200) var(--easing-out)}.action-compact,a.action-compact{min-height:var(--control-min-height-compact);padding:var(--space-1) var(--space-3);border-radius:var(--radius-md)}.action-danger{background:color-mix(in srgb,var(--surface-card) 88%,transparent);color:var(--status-error-text);border:1px solid var(--border-default)}.action-danger:hover{background:var(--status-error-surface);border-color:var(--status-error-border)}.action-header-active{background:var(--text-primary);color:var(--surface-card);border:1px solid var(--text-primary);border-radius:var(--radius-pill)}.action-header-inactive{background:color-mix(in srgb,var(--surface-card) 70%,transparent);color:var(--text-tertiary);border:1px solid transparent;border-radius:var(--radius-pill)}.action-header-inactive:hover{background:var(--surface-card)}button{appearance:none;-webkit-appearance:none;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:var(--radius-lg);min-height:var(--touch-target);padding:var(--space-3) var(--space-4);font:inherit;font-weight:var(--type-weight-bold);cursor:pointer;transition:background var(--dur-200) var(--easing-out),filter var(--dur-200) var(--easing-out),transform var(--dur-200) var(--easing-out)}button:active:not(:disabled){transform:translateY(1px)}.icon{display:block;width:1em;height:1em;flex-shrink:0}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:var(--touch-target);height:var(--touch-target);padding:0;border:1px solid transparent;border-radius:var(--radius-lg);background:transparent;color:var(--text-tertiary);font-size:var(--type-size-lg);text-decoration:none}.icon-button:hover:not(:disabled){background:var(--surface-subtle);color:var(--text-primary)}.icon-button:disabled{opacity:.4;cursor:not-allowed}.icon-button-danger{color:var(--status-error-text)}.icon-button-danger:hover:not(:disabled){background:var(--status-error-surface);color:var(--status-error-text)}.icon-button-danger[aria-pressed=true]{background:var(--status-error);border-color:var(--status-error);color:var(--surface-card)}.icon-button-primary{color:var(--action-primary-text);background:var(--action-primary-surface);border-color:var(--action-primary-border)}.icon-button-primary:hover:not(:disabled){background:var(--action-primary-bg);color:var(--action-primary-text)}}@layer components{.card,.empty-panel,.data-table{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--elevation-sm)}.card{padding:var(--space-4)}.empty-panel{padding:var(--space-6)}.chip-row{display:flex;flex-wrap:wrap;gap:var(--space-1)}.chip-row:empty{display:none}.chip{display:inline-flex;align-items:center;border:1px solid var(--border-default);border-radius:var(--radius-sm);padding:.125rem .5rem;background:var(--surface-subtle);color:var(--text-primary);font-size:var(--type-size-sm);font-weight:var(--type-weight-semibold);line-height:1.5}.callout{display:grid;gap:var(--space-1);padding-left:var(--space-3);border-left:var(--border-width-accent) solid var(--border-default)}.callout-label{font-size:var(--type-size-sm);font-weight:var(--type-weight-semibold)}.callout p{margin:0}.callout-success{border-color:var(--status-success)}.callout-success .callout-label{color:var(--status-success-text)}.callout-warning{border-color:var(--status-warning)}.callout-warning .callout-label{color:var(--status-warning-text)}.code{margin:0;padding:var(--space-2) var(--space-3);background:var(--surface-subtle);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--type-size-code);color:var(--text-secondary);white-space:pre-wrap;overflow-wrap:anywhere}}@layer components{.data-table{width:100%;border-collapse:separate;border-spacing:0;overflow:hidden;font-size:var(--type-size-sm)}.data-table th,.data-table td{padding:var(--space-2) var(--space-3);text-align:left;vertical-align:middle}.data-table thead th{background:var(--surface-subtle);color:var(--text-tertiary);font-size:var(--type-size-xs);font-weight:var(--type-weight-bold);text-transform:uppercase;letter-spacing:var(--type-tracking-wide);white-space:nowrap;border-bottom:1px solid var(--border-default)}.data-table tbody tr+tr td{border-top:1px solid var(--border-default)}.data-table tbody tr:hover{background:var(--surface-subtle)}.data-table th a{color:inherit;text-decoration:none;white-space:nowrap}.data-table th a:hover,.data-table th[aria-sort] a{color:var(--text-primary)}.data-table th a:after{content:"";display:inline-block;width:.9em;margin-left:var(--space-1);text-align:left;opacity:0;transition:opacity var(--dur-200) var(--easing-out)}.data-table th a:hover:after{content:"↕";opacity:.5}.data-table th[aria-sort=ascending] a:after{content:"↑";opacity:1}.data-table th[aria-sort=descending] a:after{content:"↓";opacity:1}.data-table td a{color:var(--text-primary);text-decoration:none}.data-table td a:hover{text-decoration:underline}.data-table .cell-num{text-align:right;font-variant-numeric:tabular-nums}.data-table .row-muted td{color:var(--text-tertiary)}}@layer components{input[type=search],input[type=password],input[type=text],input[type=number],input[type=date],.select{box-sizing:border-box;min-height:var(--control-min-height);padding-block:var(--control-padding-block);padding-inline:var(--control-padding-inline);font-family:inherit;font-size:var(--control-font-size);line-height:var(--type-line-height-snug);border:1px solid var(--border-default);color:var(--text-primary);transition:box-shadow var(--dur-200) var(--easing-out),border-color var(--dur-200) var(--easing-out)}input[type=search]{border-radius:var(--radius-pill);background:var(--surface-card);box-shadow:var(--elevation-sm)}input[type=password],input[type=text],input[type=number],input[type=date],.select{width:100%;border-radius:var(--radius-lg);background:var(--surface-paper)}.field-label{font-weight:var(--type-weight-semibold)}.field{display:grid;gap:var(--space-2)}fieldset.field{border:0;margin:0;min-inline-size:0}.field>legend.field-label{padding:0}.select{display:flex;align-items:center}.select>select{flex:1 1 auto;min-width:0;margin:0;padding:0;border:0;background:transparent;font:inherit;color:inherit;cursor:pointer}.toggle{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--border-default);border-radius:var(--radius-pill);background:var(--surface-card);color:var(--text-tertiary);font-size:var(--type-size-sm);font-weight:var(--type-weight-semibold);cursor:pointer;user-select:none}.toggle input{position:absolute;opacity:0;pointer-events:none}.toggle:before{content:"";width:.5rem;height:.5rem;border-radius:var(--radius-pill);background:currentColor;opacity:.4}.toggle:has(input:checked){background:var(--action-primary-surface);border-color:var(--action-primary-border);color:var(--action-primary-text)}.toggle:has(input:checked):before{opacity:1}.toggle-group{display:flex;flex-wrap:wrap;gap:var(--space-2)}}@layer components{.error-banner{padding:var(--space-3) var(--space-4);background:var(--status-error-surface);border:1px solid var(--status-error-border);border-radius:var(--radius-lg);color:var(--status-error-text);font-weight:var(--type-weight-semibold)}input[type=search]:focus-visible,input[type=password]:focus-visible,input[type=text]:focus-visible,input[type=number]:focus-visible,select:focus-visible{outline:none;border-color:transparent;box-shadow:0 0 0 2px var(--action-primary-bg),var(--elevation-sm)}.focus-ring:focus-visible,button:focus-visible,.icon-button:focus-visible,.segmented-option:focus-visible,.tab-nav-item:focus-visible,a.action-primary:focus-visible,a.action-default:focus-visible,a.action-danger:focus-visible,.toggle:has(input:focus-visible){outline:2px solid rgba(var(--action-primary-rgb),.35);outline-offset:2px}}@layer components{.segmented{display:inline-flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.segmented-option{display:inline-flex;align-items:center;min-height:var(--touch-target);padding:var(--space-2) var(--space-4);border-radius:var(--radius-pill);border:1px solid transparent;font-weight:var(--type-weight-bold);text-decoration:none;cursor:pointer;transition:background var(--dur-200) var(--easing-out),color var(--dur-200) var(--easing-out)}.segmented-option-active{background:var(--text-primary);color:var(--surface-card);border-color:var(--text-primary)}.segmented-option-inactive{background:color-mix(in srgb,var(--surface-card) 70%,transparent);color:var(--text-tertiary)}.segmented-option-inactive:hover{background:var(--surface-card);color:var(--text-primary)}span.segmented-option{cursor:default}span.segmented-option-inactive:hover{background:color-mix(in srgb,var(--surface-card) 70%,transparent);color:var(--text-tertiary)}}@layer components{.tab-nav{display:flex;align-items:center;gap:var(--space-6)}.tab-nav-item{display:inline-flex;align-items:center;min-height:var(--touch-target);font-weight:var(--type-weight-bold);text-decoration:none;color:var(--text-tertiary);border-bottom:var(--border-width-accent) solid transparent;transition:color var(--dur-200) var(--easing-out),border-color var(--dur-200) var(--easing-out)}.tab-nav-item:hover{color:var(--text-primary)}.tab-nav-item-active{color:var(--text-primary);border-bottom-color:var(--action-primary-bg)}}@layer components{.modal{width:min(var(--overlay-sheet-width-standard),calc(100vw - (2 * var(--space-4))));padding:var(--space-8);border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--surface-card);color:var(--text-primary);box-shadow:var(--elevation-lg)}.modal[open]{animation:dialog-in var(--dur-200) var(--easing-out)}.modal::backdrop{background:rgba(var(--color-brown-rgb),.4)}.modal h2{margin:0}.modal-actions{display:flex;justify-content:flex-end;gap:var(--space-2)}}:root{font-family:var(--font-body);line-height:var(--type-line-height-normal);font-weight:var(--type-weight-normal)}*::-webkit-scrollbar{width:var(--scrollbar-size);height:var(--scrollbar-size)}*::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-color);border-radius:var(--scrollbar-radius)}*::-webkit-scrollbar-track{background:transparent}.hide-scrollbar{scrollbar-width:none}.hide-scrollbar::-webkit-scrollbar{display:none}.skeleton{background:linear-gradient(90deg,var(--skeleton-surface) 0%,var(--skeleton-shine) 50%,var(--skeleton-surface) 100%);background-size:200% 100%;border-radius:var(--radius-lg);animation:shimmer 1.5s infinite}@layer utilities{.fade-mask-bottom{-webkit-mask-image:linear-gradient(to bottom,black 0%,black var(--fade-mask-solid-stop, 78%),transparent var(--fade-mask-clear-stop, 100%));mask-image:linear-gradient(to bottom,black 0%,black var(--fade-mask-solid-stop, 78%),transparent var(--fade-mask-clear-stop, 100%))}}@layer components{.lesson-doc{--content-gutter: clamp( var(--content-gutter-min), var(--content-gutter-fluid), var(--content-gutter-max) );--content-width: min( var(--content-measure), max(0px, calc(100% - (2 * var(--content-gutter)))) );display:grid;grid-template-columns:[full-start] minmax(0,1fr) [content-start] var(--content-width) [content-end] minmax(0,1fr) [full-end];padding-block:var(--content-padding-block-mobile)}@media(min-width:768px){.lesson-doc{padding-block:var(--content-padding-block-desktop)}}.lesson-doc>*{grid-column:content-start / content-end}.lesson-doc>.lesson-figure--full{grid-column:full-start / full-end;margin-block:var(--content-figure-margin-y)}.lesson-doc>.lesson-figure--full>.lesson-figure__image,.lesson-doc>.lesson-figure--full>.lesson-figure__interactive{display:block;width:100%;height:auto}.lesson-doc>.lesson-figure--full>.lesson-figure__interactive{border:none}.lesson-doc>.lesson-figure--full>.lesson-figure__caption{padding:var(--space-2) var(--content-gutter) 0;font-size:var(--type-size-xs);color:var(--text-tertiary);text-align:left;font-weight:var(--type-weight-normal);line-height:var(--type-line-height-normal)}}body{margin:0;background:var(--surface-canvas);color:var(--text-primary);font-family:var(--font-body)}.hero-fold{position:relative;width:100dvw;height:100dvh;overflow:hidden}[data-animate]{opacity:0}[data-reveal-child]{opacity:0;transform:translateY(24px);transition:opacity var(--dur-reveal) var(--easing-reveal),transform var(--dur-reveal) var(--easing-reveal)}[data-reveal-child=scale]{transform:scale(.96)}[data-reveal-child=slide-left]{transform:translate(-20px)}[data-reveal-child].revealed{opacity:1;transform:translateY(0) scale(1) translate(0)}
