@font-face{font-family:Fraunces;src:url(/fonts/Fraunces-VariableFont_SOFT_WONK_opsz_wght.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Fraunces;src:url(/fonts/Fraunces-Italic-VariableFont_SOFT_WONK_opsz_wght.woff2) format("woff2");font-weight:100 900;font-style:italic;font-display:swap}@font-face{font-family:Archivo;src:url(/fonts/Archivo-VariableFont_wdth_wght.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Archivo;src:url(/fonts/Archivo-Italic-VariableFont_wdth_wght.woff2) format("woff2");font-weight:100 900;font-style:italic;font-display:swap}:root{--color-moss-light: #2B4F3A;--color-moss-dark: #29352E;--color-gold-antique:#AA8F57;--color-sand-warm: #EDEBE4;--color-oxblood: #6B2D2D;--color-moss-dark-90: rgba(41, 53, 46, .9);--color-moss-dark-60: rgba(41, 53, 46, .6);--color-moss-dark-40: rgba(41, 53, 46, .4);--color-gold-wash: rgba(170, 143, 87, .18);--color-sand-shadow: #DDD9CC;--color-ink: #1B231D;--bg: var(--color-sand-warm);--bg-dark: var(--color-moss-dark);--bg-primary: var(--color-moss-light);--surface: #FFFFFF;--surface-sand: var(--color-sand-warm);--surface-dark: var(--color-moss-dark);--fg: var(--color-ink);--fg-2: #4A5249;--fg-muted: #7A7E73;--fg-on-dark: var(--color-sand-warm);--fg-on-dark-2: #C9C7BD;--fg-on-dark-muted: #8E8C82;--accent: var(--color-gold-antique);--accent-on-dark: var(--accent);--rule: var(--accent);--rule-soft: var(--color-sand-shadow);--rule-on-dark: rgba(170, 143, 87, .55);--danger: var(--color-oxblood);--focus: 0 0 0 2px var(--color-gold-antique), 0 0 0 4px rgba(41, 53, 46, .35);--font-display: "Fraunces", "Cormorant Garamond", "Times New Roman", Georgia, serif;--font-body: "Archivo", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--text-xs: 11px;--text-sm: 13px;--text-base: 15px;--text-md: 17px;--text-lg: 20px;--text-xl: 24px;--text-2xl: 32px;--text-3xl: 42px;--text-4xl: 56px;--text-5xl: 72px;--text-hero: 104px;--lh-tight: 1.05;--lh-snug: 1.18;--lh-normal: 1.45;--lh-loose: 1.6;--track-display: -.01em;--track-uppercase: .02em;--track-eyebrow: .18em;--track-body: 0;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 16px;--space-4: 24px;--space-5: 32px;--space-6: 48px;--space-7: 64px;--space-8: 96px;--space-9: 128px;--radius-0: 0;--radius-1: 2px;--radius-2: 4px;--radius-3: 8px;--radius-4: 12px;--radius-5: 16px;--radius-pill: 999px;--hairline: 1px solid var(--rule-soft);--hairline-dark: 1px solid var(--rule-on-dark);--hairline-gold: 1px solid var(--rule);--shadow-1: 0 1px 2px rgba(27, 35, 29, .06);--shadow-2: 0 2px 6px rgba(27, 35, 29, .08), 0 1px 2px rgba(27, 35, 29, .04);--shadow-3: 0 8px 20px rgba(27, 35, 29, .1), 0 2px 4px rgba(27, 35, 29, .05);--shadow-4: 0 18px 40px rgba(27, 35, 29, .16), 0 4px 8px rgba(27, 35, 29, .06);--shadow-inset-paper: inset 0 0 0 1px var(--color-sand-shadow);--ease: cubic-bezier(.2, .6, .2, 1);--dur-1: .12s;--dur-2: .18s;--dur-3: .32s;--color-gold-soft: #C9B58A;--color-gold-deep: #8E763F;--surface-0: #F6F4EE;--surface-1: #FFFFFF;--surface-2: var(--color-sand-warm);--surface-3: #E2DED4;--surface-4: #D6D1C4;--divider: rgba(41, 53, 46, .1);--divider-strong: rgba(41, 53, 46, .18);--overlay-scrim: rgba(41, 53, 46, .55);--selection-bg: rgba(184, 154, 90, .22);--focus-ring: rgba(184, 154, 90, .55);--row-rest: #FFFFFF;--row-hover: #F6F4EE;--row-press: #EDEBE4;--row-sel: rgba(170, 143, 87, .1);--row-sel-hover: rgba(170, 143, 87, .16);--danger-bg: rgba(107, 45, 45, .08);--danger-border: rgba(107, 45, 45, .25);--success: #3F6B4A;--success-bg: rgba(63, 107, 74, .08);--success-border: rgba(63, 107, 74, .25);--warning: #9C6B1F;--warning-bg: rgba(156, 107, 31, .08);--warning-border: rgba(156, 107, 31, .25);--info: #3E5C7A;--info-bg: rgba(62, 92, 122, .08);--info-border: rgba(62, 92, 122, .25);--link: var(--info);--link-hover: #2C455F;--link-on-dark: #8FB2CC;--chart-1: var(--color-gold-antique);--chart-2: var(--color-moss-light);--chart-3: var(--color-oxblood);--chart-4: var(--info);--chart-5: var(--warning);--chart-6: #8E7A5C;--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-emphasized: cubic-bezier(.2, 0, 0, 1.2);--dur-fast: var(--dur-1);--dur-base: .2s;--dur-slow: var(--dur-3);--ag-ink: var(--color-ink);--ag-paper: var(--color-sand-warm);--ag-surface: var(--surface);--ag-muted: var(--fg-2);--ag-gold: var(--accent);--ag-moss: var(--color-moss-light);--ag-moss-dark: var(--color-moss-dark);--ag-line: var(--rule-soft);--ag-danger: var(--color-oxblood);--ag-radius: var(--radius-2);--ag-radius-pill: var(--radius-pill);--ag-radius-input: var(--radius-1);--ag-max: 760px;--ag-display: var(--font-display);--ag-font: var(--font-body);--canvas: #F6F4EE;--sand: var(--color-sand-warm);--sunk: #EFECE4;--moss: var(--color-moss-light);--moss-ink: #1F3A2B;--moss-bg: rgba(43, 79, 58, .08);--gold: var(--color-gold-antique);--ink: var(--color-ink);--fg2: var(--fg-2);--muted: var(--fg-muted);--line: rgba(41, 53, 46, .1);--line-strong: rgba(41, 53, 46, .18);--r-sm: 6px;--r: 10px;--r-lg: 14px;--pill: 999px;--sh-1: 0 1px 2px rgba(27, 35, 29, .05);--sh-2: 0 1px 2px rgba(27, 35, 29, .04), 0 6px 18px rgba(27, 35, 29, .06);--sh-3: 0 12px 40px rgba(27, 35, 29, .18);--display: var(--font-display);--body: var(--font-body)}*{box-sizing:border-box}::selection{background:var(--selection-bg)}html{font-family:var(--font-body);font-size:var(--text-base);color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{margin:0;min-height:100vh;line-height:var(--lh-normal);font-weight:400;text-wrap:pretty;background:radial-gradient(900px 600px at 85% -10%,rgba(170,143,87,.06),transparent 60%),radial-gradient(800px 600px at -5% 50%,rgba(43,79,58,.05),transparent 60%),var(--color-sand-warm)}body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.035;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.6 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");mix-blend-mode:multiply}body>*{position:relative;z-index:1}body.shell-app,body.shell-focus{background:var(--canvas)}body.shell-app:before,body.shell-focus:before{display:none}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:var(--font-display);font-weight:300;letter-spacing:-.015em;line-height:1.02;margin:0 0 var(--space-4);color:var(--fg);text-transform:none}h1,.h1{font-size:clamp(40px,5.2vw,64px);line-height:1;letter-spacing:-.02em}h2,.h2{font-size:clamp(26px,3vw,40px);letter-spacing:-.015em}h3,.h3{font-size:clamp(20px,2vw,26px);letter-spacing:-.01em}h4,.h4{font-size:clamp(17px,1.6vw,20px)}h5,.h5,h6,.h6{font-size:16px}h1 em,h2 em,h3 em,.h1 em,.h2 em,.h3 em{font-style:italic;font-weight:300;letter-spacing:0}.eyebrow{font-family:var(--font-body);font-size:var(--text-xs);font-weight:600;letter-spacing:var(--track-eyebrow);text-transform:uppercase;color:var(--color-moss-light);display:inline-block}p{margin:0 0 var(--space-3)}a{color:var(--color-moss-light);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;text-decoration-color:var(--accent);transition:color var(--dur-1) var(--ease)}a:hover{color:var(--color-moss-dark)}a:focus-visible{outline:none;box-shadow:var(--focus);border-radius:var(--radius-1)}.gold-rule{border:0;height:1px;background:var(--accent);margin:var(--space-4) 0}:root{--page-max: 1320px;--col-gutter: clamp(20px, 4vw, 64px)}.wrap{max-width:var(--page-max);margin:0 auto;padding-block:2rem;padding-inline:var(--col-gutter)}.brand{display:inline-flex;align-items:center;gap:.6rem;text-decoration:none}.nav-signout{background:none;border:0;cursor:pointer;font:inherit;font-weight:600;font-size:13px;color:var(--fg-2);padding:8px 4px;transition:color var(--dur-1) var(--ease)}.nav-signout:hover{color:var(--color-moss-light)}.site-footer{border-top:1px solid rgba(170,143,87,.22);color:var(--fg-2);font-size:var(--text-sm)}.footer-mission{margin:0 0 12px}.footer-links{display:flex;flex-wrap:wrap;gap:8px 20px;font-size:var(--text-xs);letter-spacing:.02em}.footer-links a{color:var(--fg-muted);text-decoration-color:var(--rule-soft)}.footer-links a:hover{color:var(--color-moss-light);text-decoration-color:var(--accent)}.site-logo{height:30px;width:auto;display:block}.btn{font-family:var(--font-body);font-weight:600;font-size:13.5px;letter-spacing:0;text-transform:none;line-height:1;border-radius:var(--pill);display:inline-flex;align-items:center;justify-content:center;gap:8px;height:38px;padding:0 16px;cursor:pointer;text-decoration:none;user-select:none;white-space:nowrap;background:var(--moss);color:var(--sand);border:1px solid var(--moss);box-shadow:none;transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),color var(--dur-1) var(--ease),transform var(--dur-1) var(--ease)}.btn:hover{color:var(--sand);background:var(--moss-ink);border-color:var(--moss-ink);transform:none;box-shadow:none}.btn:active{transform:translateY(1px);background:var(--moss-ink);border-color:var(--moss-ink)}.btn:focus-visible{outline:none;box-shadow:0 0 0 2px var(--canvas),0 0 0 4px var(--moss)}.btn:disabled,.btn[aria-disabled=true]{pointer-events:none;opacity:.45;cursor:not-allowed}.btn svg{width:16px;height:16px;flex:none}.btn--lg{height:44px;padding:0 20px;font-size:14.5px}.btn--sm{height:32px;padding:0 12px;font-size:12.5px}.btn--ghost{background:var(--surface);color:var(--ink);border-color:var(--line-strong)}.btn--ghost:hover{color:var(--ink);background:var(--canvas);border-color:var(--line-strong)}.btn--ghost:active{background:var(--sunk);border-color:var(--line-strong)}.btn--quiet{background:transparent;color:var(--fg-2);border-color:transparent}.btn--quiet:hover{color:var(--ink);background:#29352e0f;border-color:transparent}.btn--quiet:active{background:#29352e1a;border-color:transparent}.btn--danger{background:var(--danger);color:#fff;border-color:var(--danger)}.btn--danger:hover,.btn--danger:active{background:#542323;border-color:#542323;color:#fff}.btn--danger-ghost{background:transparent;color:var(--danger);border-color:#6b2d2d4d}.btn--danger-ghost:hover,.btn--danger-ghost:active{background:var(--danger-bg);color:var(--danger);border-color:#6b2d2d73}@media(max-width:860px){.btn{min-height:40px}.btn--sm{min-height:36px}}input[type=email],input[type=text],input[type=search],textarea,select,.field{width:100%;font-family:var(--font-body);font-size:16px;line-height:1.4;color:var(--color-ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-sm);padding:9px 12px;margin-bottom:.85rem;outline:none;transition:border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}input[type=email],input[type=text],input[type=search],select,input.field,select.field{min-height:40px}textarea.field{min-height:96px;resize:vertical}select,select.field{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%237A7E73' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:34px}input[type=email]::placeholder,input[type=text]::placeholder,input[type=search]::placeholder,textarea::placeholder,.field::placeholder{color:var(--fg-muted)}input[type=email]:focus,input[type=text]:focus,input[type=search]:focus,textarea:focus,select:focus,.field:focus{border-color:var(--moss);box-shadow:0 0 0 3px #2b4f3a24}.field--flush{margin-bottom:0}.lbl{display:block;font-size:12.5px;font-weight:600;margin:0 0 6px;color:var(--fg-2)}.notice{padding:14px 16px;border:1px solid var(--divider-strong);border-radius:var(--radius-2);background:var(--surface);color:var(--fg-2);font-size:var(--text-sm);line-height:1.5}.notice--err{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}.card-list{list-style:none;padding:0;margin:0;display:grid;gap:.75rem;max-width:880px}.card-list li{position:relative;border:1px solid var(--rule-soft);border-radius:var(--radius-2);padding:1rem 1.15rem;background:var(--surface);overflow:hidden;transition:border-color var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease)}.card-list li:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-2) var(--ease)}.card-list li:hover{border-color:#aa8f5766;box-shadow:var(--shadow-2)}.card-list li:hover:before{transform:scaleX(1)}.lesson-body{font-size:var(--text-md);line-height:var(--lh-loose);color:var(--fg)}.lesson-body h2{margin-top:2rem}.lesson-body h3{margin-top:1.5rem}.lesson-body blockquote,.rich blockquote{margin:1.25rem 0;padding:.25rem 0 .25rem 1.25rem;border-left:2px solid var(--accent);font-family:var(--font-display);font-weight:300;font-style:italic;font-size:var(--text-xl);line-height:1.3;color:var(--color-moss-dark)}.lesson-body blockquote footer,.rich blockquote footer{font-family:var(--font-body);font-style:normal;font-size:var(--text-sm);letter-spacing:.04em;color:var(--fg-2);margin-top:.5rem}.rich{font-size:var(--text-md);line-height:var(--lh-loose);color:var(--fg)}.rich p{margin:0 0 var(--space-3)}.rich h2{margin:1.75rem 0 .5rem}.rich h3{margin:1.5rem 0 .5rem}.rich ul,.rich ol{margin:0 0 var(--space-3);padding-left:1.4rem}.rich li{margin:.3rem 0}.rich strong{font-weight:600}.rich a{color:var(--color-moss-light)}.rich hr{border:0;border-top:1px solid var(--rule-soft);margin:2rem 0}@media(max-width:600px){.wrap{padding:1.5rem 1.1rem}}.course-grid{list-style:none;padding:0;margin:1.25rem 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px;max-width:1100px}.course-grid>li{display:flex}.course-card{display:flex;flex-direction:column;width:100%;text-decoration:none;overflow:hidden;border:1px solid var(--rule-soft);border-radius:var(--radius-4);background:var(--surface);transition:box-shadow var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease)}.course-card:hover{box-shadow:var(--shadow-3);border-color:#aa8f5773}.course-card .cover{display:block;width:100%;aspect-ratio:16 / 9;object-fit:cover;flex:0 0 auto;border-bottom:1px solid var(--rule-soft)}.course-card .cover.default{display:flex;align-items:center;justify-content:center;text-align:center;background:radial-gradient(140% 120% at 80% -10%,rgba(170,143,87,.1),transparent 55%),linear-gradient(150deg,#2F4A39,var(--color-moss-dark))}.course-card .cover.default span{font-family:var(--font-display);font-weight:300;font-size:clamp(20px,2.4vw,30px);letter-spacing:-.01em;color:var(--color-sand-warm);padding:0 24px}.course-card .card-body{display:flex;flex-direction:column;flex:1 1 auto;padding:18px 22px 22px}.course-card .card-body .eb{font-size:13px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-muted)}.course-card .card-body .desc{color:var(--fg-2);font-size:16px;line-height:1.5;margin:.5rem 0 0}.course-card .card-body .course-card__meta{margin-top:auto;padding-top:14px}.class-hero-img{display:block;width:100%;max-width:1100px;height:auto;border-radius:var(--radius-5);box-shadow:var(--shadow-3);margin:.5rem 0 1.5rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-1)}.card--pad{padding:20px}.badge{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 9px;border:0;border-radius:var(--pill);font-family:var(--font-body);font-size:11.5px;font-weight:600;letter-spacing:0;text-transform:none;line-height:1;white-space:nowrap;background:var(--sunk);color:var(--fg-2)}.badge svg{width:12px;height:12px}.badge .dot{width:6px;height:6px;border-radius:var(--pill);background:currentColor;display:inline-block}.badge--internal{background:var(--moss-bg);color:var(--moss)}.badge--client{background:var(--info-bg);color:var(--info)}.badge--candidate{background:#aa8f5724;color:var(--moss)}.badge--candidate .dot{background:var(--gold)}.badge--ok{background:#3f6b4a17;color:var(--success)}.badge--warn{background:#9c6b1f1a;color:var(--warning)}.badge--bad{background:var(--danger-bg);color:var(--danger)}.badge--outline{background:transparent;box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--fg-2)}.badge--active{background:#3f6b4a17;color:var(--success)}.badge--pending{background:#9c6b1f1a;color:var(--warning)}.badge--denied{background:var(--danger-bg);color:var(--danger)}.badge--canonical{background:transparent;box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--moss)}.bar{height:6px;border-radius:var(--pill);background:var(--sunk);overflow:hidden}.bar>i{display:block;height:100%;background:var(--moss);border-radius:inherit}.bar--done>i{background:var(--success)}.prog{display:flex;flex-direction:column;gap:5px}.prog .lab,.prog__lab{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted)}.prog .lab b,.prog__lab b{color:var(--ink);font-weight:600}.meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:12.5px}.meta>span{display:inline-flex;align-items:center;gap:5px}.meta svg{width:14px;height:14px;color:var(--gold);flex:none}.meta>svg{margin-right:-9px}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 13px;border:1px solid var(--line-strong);border-radius:var(--pill);background:var(--surface);color:var(--fg-2);font:inherit;font-size:13px;line-height:1;text-decoration:none;cursor:pointer}.chip:hover{background:var(--canvas);color:var(--ink)}.chip.is-on,.chip[aria-pressed=true]{background:var(--color-moss-dark);border-color:var(--color-moss-dark);color:var(--sand)}.chip .n{font-size:11.5px;opacity:.7}.chip:focus-visible{outline:none;box-shadow:0 0 0 2px var(--canvas),0 0 0 4px var(--moss)}.seg{display:inline-flex;gap:2px;padding:3px;border-radius:var(--pill);background:var(--sunk)}.seg>button,.seg>a{border:0;background:transparent;color:var(--fg-2);padding:6px 14px;border-radius:var(--pill);font:inherit;font-size:13px;line-height:1.2;white-space:nowrap;text-decoration:none;cursor:pointer}.seg>button:hover,.seg>a:hover{color:var(--ink)}.seg>.is-on,.seg>[aria-pressed=true],.seg>[aria-current]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:var(--sh-1)}.seg>:focus-visible{outline:none;box-shadow:0 0 0 2px var(--moss)}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs>button,.tabs>a{display:flex;align-items:center;gap:6px;border:0;background:transparent;padding:10px 12px;margin-bottom:-1px;border-bottom:2px solid transparent;color:var(--muted);font:inherit;font-weight:500;white-space:nowrap;text-decoration:none;cursor:pointer}.tabs>button:hover,.tabs>a:hover{color:var(--ink)}.tabs>.is-on,.tabs>[aria-selected=true],.tabs>[aria-current]{color:var(--ink);border-bottom-color:var(--gold)}.tabs .n{font-size:11.5px;background:var(--sunk);border-radius:var(--pill);padding:0 7px;color:var(--fg-2)}.tabs>.is-on .n,.tabs>[aria-selected=true] .n,.tabs>[aria-current] .n{background:var(--moss);color:#fff}.tabs>:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--moss);border-radius:4px}.tblwrap{overflow:auto}.table{width:100%;border-collapse:collapse}.table th{text-align:left;white-space:nowrap;padding:10px 14px;background:var(--canvas);border-bottom:1px solid var(--line);font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.table td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr:hover td{background:var(--canvas)}@media(max-width:860px){.table th,.table td{padding:10px}}.switch{position:relative;flex:none;width:38px;height:22px;padding:0;border:0;border-radius:var(--pill);background:var(--line-strong);cursor:pointer;transition:background var(--dur-2) var(--ease)}.switch:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:var(--sh-1);transition:transform var(--dur-2) var(--ease)}.switch.is-on,.switch[aria-checked=true]{background:var(--moss)}.switch.is-on:after,.switch[aria-checked=true]:after{transform:translate(16px)}.switch:focus-visible{outline:none;box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--moss)}.switch:disabled{opacity:.45;cursor:not-allowed}.state{display:grid;place-items:center;flex:none;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--line-strong);background:var(--surface)}.state--doing{border:2px solid var(--gold);background:radial-gradient(circle,var(--gold) 0 3px,transparent 3.5px)}.state--done{background:var(--moss);border-color:var(--moss);color:#fff}.state--done svg{width:13px;height:13px}.state--sm{width:18px;height:18px}.state--sm.state--done svg{width:11px;height:11px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}.page-head h1{font-family:var(--display);font-weight:300;font-size:32px;line-height:1.1;letter-spacing:-.015em;margin:0}.page-head p{margin:6px 0 0;color:var(--fg-2)}.page-head>div{min-width:0}.crumbs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:14px;color:var(--muted);font-size:13px}.crumbs a{color:inherit;text-decoration:none}.crumbs a:hover{color:var(--ink)}.crumbs svg{width:14px;height:14px}.empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:40px 24px;text-align:center;border:1px dashed var(--line-strong);border-radius:var(--r-lg);color:var(--muted)}.empty h2,.empty h3,.empty b{margin:0;font-family:var(--display);font-weight:300;font-size:20px;color:var(--ink)}.empty p{margin:0;max-width:44ch}.empty .btn{margin-top:10px}.state-dot{position:relative;display:inline-block;width:20px;height:20px;flex:0 0 auto;border-radius:var(--radius-pill);border:1.5px solid var(--divider-strong);background:var(--surface);vertical-align:middle}.state-dot.is-doing{border-color:var(--accent)}.state-dot.is-doing:after{content:"";position:absolute;inset:4px;border-radius:var(--radius-pill);background:var(--accent)}.state-dot.is-done{background:var(--color-moss-light);border-color:var(--color-moss-light)}.state-dot.is-done:after{content:"";position:absolute;left:6px;top:3px;width:5px;height:9px;border:solid var(--color-sand-warm);border-width:0 2px 2px 0;transform:rotate(42deg)}.progress{height:6px;border-radius:var(--radius-pill);background:var(--surface-3);overflow:hidden}.progress>span{display:block;height:100%;width:0;border-radius:var(--radius-pill);background:var(--accent);transition:width var(--dur-3) var(--ease),background var(--dur-2) var(--ease)}.progress.is-complete>span{background:var(--success)}.ring{--p: 0;position:relative;width:46px;height:46px;flex:0 0 auto;border-radius:var(--radius-pill);display:grid;place-items:center;background:conic-gradient(var(--accent) calc(var(--p) * 1%),var(--surface-3) 0)}.ring.is-complete{background:conic-gradient(var(--success) 100%,var(--success) 0)}.ring:before{content:"";position:absolute;inset:5px;border-radius:var(--radius-pill);background:var(--surface)}.ring>.ring-label{position:relative;font-family:var(--font-body);font-size:12px;font-weight:700;color:var(--fg);letter-spacing:-.01em}.meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:16px;font-family:var(--font-body);font-size:13px;color:var(--fg-2)}.level{display:inline-flex;align-items:center;gap:4px}.level i{width:6px;height:6px;border-radius:var(--radius-pill);background:var(--divider-strong)}.level[data-level="1"] i:nth-child(-n+1),.level[data-level="2"] i:nth-child(-n+2),.level[data-level="3"] i:nth-child(-n+3){background:var(--color-moss-light)}.callout{margin:24px 0;padding:14px 16px;background:var(--surface);border:1px solid var(--divider);border-left:3px solid var(--rule-soft);border-radius:var(--radius-2)}.callout__label{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-family:var(--font-body);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-2)}.callout__label svg{width:14px;height:14px}.callout>:last-child{margin-bottom:0}.callout--note{border-left-color:var(--info)}.callout--note .callout__label{color:var(--info)}.callout--reflect{border-left-color:var(--accent)}.callout--reflect .callout__label{color:var(--color-moss-light)}.callout--key{border-left-color:var(--color-moss-light)}.callout--key .callout__label{color:var(--color-moss-light)}.callout--caution{border-left-color:var(--warning);background:var(--warning-bg)}.callout--caution .callout__label{color:var(--warning)}.callout--evidence{border-left-color:var(--color-gold-deep)}.callout--evidence .callout__label{color:var(--color-moss-light)}.cert-seal{display:block;width:96px;height:96px;flex:0 0 auto}.cert-seal--sm{width:56px;height:56px}.cert-seal--lg{width:140px;height:140px}.credential{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--divider);border-radius:var(--radius-4);background:var(--surface)}.credential .meta-serial{font-family:var(--font-body);font-size:12px;letter-spacing:.08em;color:var(--fg-muted)}.lock{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--fg-muted)}.lock svg{width:14px;height:14px}.btn .state-dot{width:16px;height:16px;border-width:1.5px}.btn--done{background:transparent;color:var(--color-moss-light);border-color:#2b4f3a59;box-shadow:none}.btn--done:hover{color:var(--color-moss-dark);background:#2b4f3a0f;border-color:var(--color-moss-light);transform:none;box-shadow:none}.lesson-row{display:flex;align-items:center;gap:12px}.lesson-row .lesson-row__text{min-width:0}.lesson-row .lesson-row__title{font-weight:600;color:var(--fg)}.lesson-row .lesson-row__sub{margin:2px 0 0;font-size:14px;color:var(--fg-2)}@media(prefers-reduced-motion:reduce){.progress>span,.state-dot,.btn,.badge{transition:none!important}}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip{position:absolute;left:12px;top:-48px;z-index:100;padding:8px 14px;border-radius:var(--pill);background:var(--moss);color:#fff;font-weight:600;text-decoration:none}.skip:focus{top:12px}html:has(body.shell-app){scroll-padding-top:76px}.app{display:grid;grid-template-columns:244px minmax(0,1fr);min-height:100vh}.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;min-height:0;background:var(--sand);border-right:1px solid var(--line)}.side-logo{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:18px 20px 12px;text-decoration:none}.side-logo img{height:28px;width:auto;max-width:100%}.side-logo span{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.side-nav{flex:1;overflow:auto;padding:6px 10px}.side-nav .grp{padding:16px 10px 6px;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.side-nav a{position:relative;display:flex;align-items:center;gap:10px;margin:1px 0;padding:8px 10px;border-radius:8px;color:var(--fg-2);font-weight:500;text-decoration:none}.side-nav a svg{width:18px;height:18px;flex:none;color:var(--muted)}.side-nav a:hover{background:#29352e0d;color:var(--ink)}.side-nav a:focus-visible{outline:none;box-shadow:0 0 0 2px var(--moss)}.side-nav a[aria-current=page]{background:var(--surface);color:var(--ink);box-shadow:var(--sh-1)}.side-nav a[aria-current=page]:before{content:"";position:absolute;left:-10px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--gold)}.side-nav a[aria-current=page] svg{color:var(--moss)}.side-nav .count{margin-left:auto;padding:1px 7px;border-radius:var(--pill);background:var(--moss);color:#fff;font-size:11.5px;font-weight:600;line-height:1.5}.side-me{padding:10px;border-top:1px solid var(--line)}.userbtn{display:flex;align-items:center;gap:10px;width:100%;padding:8px;border:0;border-radius:8px;background:transparent;text-align:left;cursor:pointer}.userbtn:hover{background:#29352e0d}.userbtn:focus-visible{outline:none;box-shadow:0 0 0 2px var(--moss)}.av{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:50%;background:var(--moss);color:var(--sand);font-size:12px;font-weight:600}.userbtn .who{min-width:0;line-height:1.25}.userbtn .who b{display:block;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.userbtn .who small{display:block;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-main{display:flex;flex-direction:column;min-width:0;min-height:100vh}.top{position:sticky;top:0;z-index:20;flex:none;display:flex;align-items:center;gap:12px;height:60px;padding:0 28px;border-bottom:1px solid var(--line);background:#f6f4eed9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.top .mlogo{display:none}.searchbtn{display:flex;align-items:center;gap:10px;width:min(420px,100%);height:38px;padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--pill);background:var(--surface);color:var(--muted);font:inherit;font-size:14px;text-align:left;cursor:pointer}.searchbtn:hover{border-color:#29352e4d}.searchbtn:focus-visible{outline:none;box-shadow:0 0 0 3px #2b4f3a2e;border-color:var(--moss)}.searchbtn svg{width:16px;height:16px;flex:none}.searchbtn kbd{margin-left:auto;padding:1px 6px;border:1px solid var(--line-strong);border-radius:5px;font:500 11.5px var(--body);color:var(--muted)}.app-main>.wrap{flex:1;width:100%;max-width:1120px;margin:0 auto;padding:32px 28px 64px}.app-main :where(h1),.pub-main :where(h1){font-size:32px;line-height:1.1;letter-spacing:-.015em}.app-foot{padding:0 28px 24px;color:var(--muted);font-size:12px}.app-foot a{color:inherit;text-decoration-color:var(--rule-soft)}.app-foot a:hover{color:var(--moss)}.tabbar{display:none}.menu{position:fixed;margin:0;width:264px;max-width:calc(100vw - 20px);padding:6px;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);color:var(--ink);box-shadow:var(--sh-3);inset:auto auto 68px 10px;z-index:60;overflow:visible}.menu .mh{margin-bottom:4px;padding:10px;border-bottom:1px solid var(--line)}.menu .mh b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis}.menu .mh .em{color:var(--muted);font-size:12.5px;overflow:hidden;text-overflow:ellipsis}.menu .mh .badges{display:flex;gap:6px;margin-top:8px}.menu .mi{display:flex;align-items:center;gap:10px;width:100%;margin:0;padding:8px 10px;border:0;border-radius:7px;background:transparent;color:var(--ink);font:inherit;font-size:13.5px;text-align:left;text-decoration:none;cursor:pointer}.menu .mi:hover{background:var(--canvas);color:var(--ink)}.menu .mi:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--moss)}.menu .mi>svg{width:16px;height:16px;flex:none;color:var(--muted)}.menu form{margin:0}.menu .mi-switch{cursor:default}.menu .mi-switch:hover{background:transparent}.menu .mi-switch .switch{margin-left:auto}.menu .mi-note{padding:0 10px 6px 36px;color:var(--muted);font-size:12px;min-height:0}.menu .mi-note:empty{display:none}body:has(dialog.palette[open]){overflow:hidden}dialog.palette{position:fixed;inset:0;z-index:70;margin:10vh auto auto;padding:0;width:min(600px,calc(100% - 24px));max-height:80vh;border:0;border-radius:var(--r-lg);background:var(--surface);color:var(--ink);box-shadow:var(--sh-3);overflow:hidden}dialog.palette[open]{display:flex;flex-direction:column;animation:lms-pop .16s var(--ease)}dialog.palette::backdrop{background:#1b231d52}@keyframes lms-pop{0%{opacity:0;transform:translateY(6px)}}.palette .pin{display:flex;align-items:center;gap:10px;padding:0 16px;border-bottom:1px solid var(--line)}.palette .pin>svg{width:18px;height:18px;flex:none;color:var(--muted)}.palette .pin input{flex:1;min-width:0;height:54px;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;font-size:16px;outline:none}.palette .pin input:focus{border:0;box-shadow:none}.palette .res{flex:1;min-height:0;max-height:380px;overflow:auto;padding:6px}.palette .g{padding:10px 10px 4px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.palette .it{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:8px;color:var(--ink);text-decoration:none}.palette .it>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette .it.on,.palette .it:hover{background:var(--canvas);color:var(--ink)}.palette .it>svg{width:16px;height:16px;flex:none;color:var(--muted)}.palette .it small{margin-left:auto;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px}.palette .msg{padding:14px 10px;color:var(--muted);font-size:13.5px}.palette .msg.err{color:var(--danger)}.palette .ft{display:flex;flex-wrap:wrap;gap:6px 14px;padding:9px 14px;border-top:1px solid var(--line);background:var(--canvas);color:var(--muted);font-size:11.5px}.palette kbd{padding:0 5px;border:1px solid var(--line-strong);border-radius:4px;background:var(--surface);font:500 11px var(--body)}.pubbar{display:flex;align-items:center;justify-content:space-between;gap:12px;height:64px;padding:0 28px;border-bottom:1px solid var(--line);background:var(--canvas)}.pubbar .actions{display:flex;align-items:center;gap:8px}.pubbar .actions form{margin:0}.pubbar .logo,.bare-head .logo{display:inline-flex;align-items:center;text-decoration:none}.pubbar .logo img,.bare-head .logo img{height:28px;width:auto}.pub-main{max-width:1120px;margin:0 auto;padding:32px 28px 48px}.bare-head{display:flex;align-items:center;height:64px;padding:0 28px}.bare-main{padding:8px 24px 48px}.bare-foot{padding:0 24px 32px;text-align:center;color:var(--muted);font-size:12px}.bare-foot a{color:inherit;text-decoration-color:var(--rule-soft)}.auth{display:grid;place-items:center;min-height:calc(100vh - 220px)}.authcard{width:min(420px,100%);padding:32px}.authcard h1{margin:0 0 6px;font-family:var(--display);font-weight:300;font-size:30px;line-height:1.15;letter-spacing:-.01em}.authcard .sub{margin:0 0 22px;color:var(--fg-2)}.authcard form{margin:0}.authcard .btn{width:100%;margin-top:14px}.authcard .alert{margin:0 0 16px;padding:12px 14px;border-radius:var(--r);background:var(--danger-bg);color:var(--danger);font-size:13.5px}.authcard .hint{display:flex;gap:10px;margin-top:16px;padding:12px 14px;border-radius:var(--r);background:var(--moss-bg);color:var(--moss);font-size:13px}.authcard .hint svg{width:16px;height:16px;flex:none;margin-top:2px}.authcard .sent{display:grid;place-items:center;width:52px;height:52px;margin-bottom:16px;border-radius:50%;background:var(--moss-bg);color:var(--moss)}.authcard .sent svg{width:24px;height:24px}.authcard .small{font-size:12.5px}.authcard .actions{display:flex;gap:10px;margin-top:22px}.authcard .actions form{flex:1}.authcard .actions .btn{margin-top:0}@media(max-width:1080px){.top{padding:0 24px}.app-main>.wrap{padding-inline:24px}.app-foot{padding-inline:24px}}@media(max-width:860px){html:has(body.shell-app){scroll-padding-top:72px}.app{grid-template-columns:minmax(0,1fr)}.side{display:none}.top{height:56px;padding:0 16px}.top .mlogo{display:inline-flex;align-items:center}.top .mlogo img{height:24px;width:auto}.searchbtn{width:40px;height:40px;padding:0;margin-left:auto;flex:none;justify-content:center;border-radius:50%}.searchbtn .t,.searchbtn kbd{display:none}.app-main{padding-bottom:calc(64px + env(safe-area-inset-bottom))}.app-main>.wrap{padding:22px 16px 32px}.app-main :where(h1),.pub-main :where(h1){font-size:27px}.page-head h1{font-size:27px}.app-foot{padding:0 16px 20px}.tabbar{display:flex;justify-content:space-around;position:fixed;left:0;right:0;bottom:0;z-index:45;height:calc(64px + env(safe-area-inset-bottom));padding-bottom:calc(6px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#f6f4eef5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.tabbar a,.tabbar button{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;padding:0;border:0;background:transparent;color:var(--muted);font:inherit;font-size:11px;text-decoration:none;cursor:pointer}.tabbar svg{width:21px;height:21px}.tabbar a[aria-current=page]{color:var(--moss);font-weight:600}.tabbar a[aria-current=page]:before{content:"";position:absolute;top:0;width:28px;height:2px;border-radius:2px;background:var(--gold)}.tabbar :focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--moss);border-radius:8px}.tabbar .count{position:absolute;top:6px;left:calc(50% + 6px);min-width:16px;padding:0 4px;border-radius:var(--pill);background:var(--moss);color:#fff;font-size:10.5px;font-weight:600;line-height:16px;text-align:center}.menu{bottom:calc(72px + env(safe-area-inset-bottom));left:auto;right:10px}.pubbar,.bare-head{padding:0 16px}.pub-main{padding:22px 16px 40px}.bare-main{padding:8px 16px 40px}.authcard{padding:24px}dialog.palette{margin-top:8vh}}@media(prefers-reduced-motion:reduce){dialog.palette[open]{animation:none}}
