@a-company/paradigm 3.19.2 → 3.19.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- :root{--parchment: #F5F1E8;--parchment-dark: #E8E0D0;--cream: #FDF8F0;--cream-hover: #FAF3E6;--ink: #2C1810;--ink-light: #4A3728;--ink-muted: #8B7355;--ink-faint: #B8A88A;--burgundy: #6B1C23;--burgundy-light: #8B2E38;--burgundy-dark: #4A1118;--burgundy-bg: #6B1C2310;--gold: #C5A572;--gold-light: #D4BA8E;--gold-dark: #A68B5B;--gold-bg: #C5A57215;--success: #4A7C59;--success-bg: #4A7C5915;--error: #9B2C2C;--error-bg: #9B2C2C15;--warning: #B8860B;--warning-bg: #B8860B15;--sym-component: #6B1C23;--sym-flow: #2D5F8A;--sym-gate: #7B5EA7;--sym-signal: #B8860B;--sym-aspect: #4A7C59;--font-serif: "Crimson Pro", Georgia, "Times New Roman", serif;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-sm: 0 1px 3px rgba(44, 24, 16, .08);--shadow-md: 0 4px 12px rgba(44, 24, 16, .1);--shadow-lg: 0 8px 24px rgba(44, 24, 16, .12);--header-height: 64px;--sidebar-width: 280px;--max-content: 900px}[data-theme=dark]{--parchment: #1a1a2e;--parchment-dark: #2a2a40;--cream: #16162a;--cream-hover: #1e1e35;--ink: #e8e0d0;--ink-light: #c8bfad;--ink-muted: #8b8578;--ink-faint: #5a5548;--burgundy: #d4616b;--burgundy-light: #e07880;--burgundy-dark: #a84850;--burgundy-bg: #d4616b18;--gold: #d4b896;--gold-light: #e0c9a8;--gold-dark: #c5a572;--gold-bg: #d4b89618;--success: #6dbf7b;--success-bg: #6dbf7b18;--error: #e06060;--error-bg: #e0606018;--warning: #d4a840;--warning-bg: #d4a84018;--sym-component: #d4616b;--sym-flow: #5aa0d4;--sym-gate: #a988d0;--sym-signal: #d4a840;--sym-aspect: #6dbf7b;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5)}[data-theme=dark] body:before{display:none}[data-theme=dark] .theme-toggle{border-color:var(--ink-muted);color:var(--gold)}[data-theme=dark] .btn-primary{color:#fff}[data-theme=dark] .btn-gold{color:#1a1a2e}[data-theme=dark] .lesson-nav-item.active{background:var(--gold-dark);color:#1a1a2e;font-weight:600}[data-theme=dark] .lesson-nav-item:hover{background:var(--parchment-dark);color:var(--ink)}[data-theme=dark] .choice-btn{color:var(--ink)}[data-theme=dark] .choice-letter{color:var(--burgundy)}[data-theme=dark] code{background:#d4b89625;border-color:#d4b89640}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);background:var(--parchment);color:var(--ink);line-height:1.6;min-height:100vh}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:url("data:image/svg+xml,%3Csvg width='100' height='100' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E");pointer-events:none;z-index:-1}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif);color:var(--ink);line-height:1.3;font-weight:600}h1{font-size:2.5rem;letter-spacing:-.02em}h2{font-size:1.875rem;letter-spacing:-.01em}h3{font-size:1.5rem}h4{font-size:1.25rem}p{margin-bottom:var(--space-md)}a{color:var(--burgundy);text-decoration:none;transition:color .2s}a:hover{color:var(--burgundy-light);text-decoration:underline}code{font-family:var(--font-mono);font-size:.875em;background:#c5a57230;color:var(--burgundy);padding:.15em .4em;border-radius:var(--radius-sm);border:1px solid #C5A57240}pre{background:var(--ink);color:var(--parchment);padding:var(--space-lg);border-radius:var(--radius-md);overflow-x:auto;margin:var(--space-lg) 0;font-size:.875rem;line-height:1.4}pre code{background:none;color:inherit;padding:0}.app{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1;padding-top:var(--header-height)}.header{position:fixed;top:0;left:0;right:0;height:var(--header-height);background:var(--cream);border-bottom:2px solid var(--gold);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-xl);z-index:100;box-shadow:var(--shadow-sm)}.header-left{display:flex;align-items:center;gap:var(--space-lg);flex:1}.header-brand{display:flex;align-items:center;gap:var(--space-sm);text-decoration:none;color:var(--ink)}.header-brand:hover{text-decoration:none;color:var(--ink)}.header-brand h1{font-size:1.25rem;font-weight:700;letter-spacing:.02em}.header-brand .subtitle{font-family:var(--font-serif);font-style:italic;font-size:.75rem;color:var(--ink-muted);margin-left:var(--space-xs)}.header-nav{display:flex;gap:var(--space-xs)}.header-nav a{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:.875rem;font-weight:500;color:var(--ink-light);transition:all .2s}.header-nav a:hover{background:var(--burgundy-bg);color:var(--burgundy);text-decoration:none}.header-nav a.active{background:var(--burgundy);color:var(--cream)}.header-right{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-md);flex:1}.version-badge{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-muted);background:var(--parchment);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm)}.theme-toggle{background:var(--parchment);border:1px solid var(--parchment-dark);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-sm);cursor:pointer;font-size:1rem;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}.theme-toggle:hover{border-color:var(--gold);background:var(--gold-bg)}.gold-divider{height:2px;background:linear-gradient(90deg,transparent,var(--gold),transparent);margin:var(--space-xl) 0}.home{max-width:1100px;margin:0 auto;padding:var(--space-2xl) var(--space-xl)}.home-hero{text-align:center;margin-bottom:var(--space-3xl)}.home-hero h1{font-size:3rem;margin-bottom:var(--space-sm)}.home-hero .motto{font-family:var(--font-serif);font-style:italic;font-size:1.125rem;color:var(--gold-dark);margin-bottom:var(--space-lg)}.home-hero .description{font-size:1.125rem;color:var(--ink-light);max-width:600px;margin:0 auto}.course-catalog{display:flex;flex-direction:column;gap:var(--space-lg);margin-bottom:var(--space-3xl)}.course-catalog h2{margin-bottom:var(--space-sm)}.course-card{background:var(--cream);border:1px solid var(--parchment-dark);border-radius:var(--radius-lg);padding:var(--space-xl);transition:all .2s;text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:var(--space-md)}.course-card:hover{box-shadow:var(--shadow-md);border-color:var(--gold);text-decoration:none;color:inherit}.course-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-md)}.course-card-title{display:flex;flex-direction:column;gap:var(--space-xs)}.course-card .course-number{font-family:var(--font-serif);font-size:.875rem;font-weight:600;color:var(--burgundy);text-transform:uppercase;letter-spacing:.05em}.course-card h3{font-size:1.25rem;margin:0}.course-card .course-description{font-size:.9375rem;color:var(--ink-light);line-height:1.6}.course-topics{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.course-topic-tag{font-size:.75rem;color:var(--ink-muted);background:var(--parchment);padding:2px var(--space-sm);border-radius:var(--radius-sm);border:1px solid var(--parchment-dark)}.course-card .course-meta{display:flex;justify-content:space-between;align-items:center;font-size:.8125rem;color:var(--ink-muted);padding-top:var(--space-sm);border-top:1px solid var(--parchment-dark)}.course-meta-cta{color:var(--burgundy);font-weight:500}.progress-ring{position:relative;width:48px;height:48px}.progress-ring svg{transform:rotate(-90deg)}.progress-ring .ring-bg{stroke:var(--parchment-dark)}.progress-ring .ring-fill{stroke:var(--success);transition:stroke-dashoffset .6s ease}.progress-ring .ring-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.6875rem;font-weight:600;color:var(--ink-light)}.quick-links{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-md)}.quick-link{background:var(--cream);border:1px solid var(--parchment-dark);border-radius:var(--radius-md);padding:var(--space-lg);text-align:center;text-decoration:none;color:var(--ink);transition:all .2s;font-weight:500}.quick-link:hover{border-color:var(--burgundy);color:var(--burgundy);text-decoration:none;box-shadow:var(--shadow-sm)}.course-layout{display:flex;min-height:calc(100vh - var(--header-height))}.course-sidebar{width:var(--sidebar-width);background:var(--cream);border-right:1px solid var(--parchment-dark);padding:var(--space-lg);position:sticky;top:var(--header-height);height:calc(100vh - var(--header-height));overflow-y:auto}.course-sidebar h2{font-size:1rem;margin-bottom:var(--space-lg);color:var(--burgundy)}.lesson-nav{list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.lesson-nav-item{display:block;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:.875rem;color:var(--ink-light);cursor:pointer;transition:all .2s;border:none;background:none;text-align:left;width:100%}.lesson-nav-item:hover{background:var(--burgundy-bg);color:var(--burgundy)}.lesson-nav-item.active{background:var(--burgundy);color:var(--cream);font-weight:500}.lesson-nav-item.completed{color:var(--success)}.lesson-nav-item.completed:before{content:"✓"}.course-content{flex:1;max-width:var(--max-content);padding:var(--space-2xl) var(--space-2xl) var(--space-3xl)}.lesson-content h2{margin-top:var(--space-2xl);margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--gold)}.lesson-content h3{margin-top:var(--space-xl);margin-bottom:var(--space-sm)}.lesson-content ul,.lesson-content ol{margin:var(--space-md) 0;padding-left:var(--space-xl)}.lesson-content li{margin-bottom:var(--space-sm)}.lesson-content blockquote{border-left:3px solid var(--gold);padding:var(--space-md) var(--space-lg);background:var(--gold-bg);border-radius:0 var(--radius-md) var(--radius-md) 0;margin:var(--space-lg) 0;font-style:italic}.lesson-content table{width:100%;border-collapse:collapse;margin:var(--space-lg) 0}.lesson-content th,.lesson-content td{padding:var(--space-sm) var(--space-md);border:1px solid var(--parchment-dark);text-align:left}.lesson-content th{background:var(--cream);font-weight:600}.key-concepts{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin:var(--space-lg) 0}.concept-tag{font-family:var(--font-mono);font-size:.8125rem;background:var(--burgundy-bg);color:var(--burgundy);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);border:1px solid var(--burgundy)20}.lesson-actions{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-2xl);padding-top:var(--space-lg);border-top:1px solid var(--parchment-dark)}.quiz-container{max-width:var(--max-content);margin:0 auto;padding:var(--space-2xl)}.quiz-header{text-align:center;margin-bottom:var(--space-2xl)}.quiz-header h1{font-size:1.75rem;margin-bottom:var(--space-sm)}.quiz-progress{font-size:.875rem;color:var(--ink-muted)}.question-card{background:var(--cream);border:1px solid var(--parchment-dark);border-radius:var(--radius-lg);padding:var(--space-xl);margin-bottom:var(--space-lg)}.question-card .question-number{font-family:var(--font-serif);font-size:.875rem;color:var(--gold-dark);font-weight:600;margin-bottom:var(--space-sm)}.question-card .question-text{font-size:1.0625rem;font-weight:500;margin-bottom:var(--space-lg);line-height:1.5}.question-card .scenario{background:var(--gold-bg);border-left:3px solid var(--gold);padding:var(--space-md) var(--space-lg);border-radius:0 var(--radius-md) var(--radius-md) 0;margin-bottom:var(--space-lg);font-size:.9375rem;color:var(--ink-light)}.choices{display:flex;flex-direction:column;gap:var(--space-sm)}.choice-btn{display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-md) var(--space-lg);border:2px solid var(--parchment-dark);border-radius:var(--radius-md);background:var(--cream);cursor:pointer;transition:all .2s;text-align:left;font-size:.9375rem;width:100%;overflow:hidden}.choice-btn pre{overflow-x:auto;max-width:100%}.choice-btn:hover:not(:disabled){border-color:var(--burgundy);background:var(--burgundy-bg)}.choice-btn.selected{border-color:var(--burgundy);background:var(--burgundy-bg)}.choice-btn.correct{border-color:var(--success);background:var(--success-bg)}.choice-btn.incorrect{border-color:var(--error);background:var(--error-bg)}.choice-letter{font-family:var(--font-serif);font-weight:700;font-size:1rem;color:var(--burgundy);min-width:1.5rem}.explanation{margin-top:var(--space-lg);padding:var(--space-lg);background:var(--success-bg);border:1px solid var(--success);border-radius:var(--radius-md);font-size:.9375rem;line-height:1.6}.explanation.wrong{background:var(--error-bg);border-color:var(--error)}.question-split-layout{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;min-height:0}.question-split-layout .question-content,.question-split-layout .answer-choices{overflow-y:auto;max-height:60vh;padding-right:.5rem}.question-split-layout .question-content{border-right:1px solid var(--parchment-dark);padding-right:1.5rem}@media (max-width: 768px){.question-split-layout{grid-template-columns:1fr}.question-split-layout .question-content{border-right:none;padding-right:0;border-bottom:1px solid var(--parchment-dark);padding-bottom:1rem;max-height:none}.question-split-layout .answer-choices{max-height:none}}.passage-block{background:var(--cream);border:2px solid var(--gold);border-radius:var(--radius-lg);padding:var(--space-xl);margin-bottom:var(--space-lg);position:relative}.passage-block:before{content:"READ THE FOLLOWING PASSAGE";display:block;font-family:var(--font-serif);font-size:.75rem;font-weight:700;letter-spacing:.1em;color:var(--gold-dark);margin-bottom:var(--space-md);text-transform:uppercase}.passage-block .passage-content{font-size:.9375rem;line-height:1.7;color:var(--ink-light)}.passage-block .passage-content pre{background:var(--ink);color:var(--parchment);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);overflow-x:auto;font-size:.8125rem;line-height:1.5;margin:var(--space-md) 0}.passage-block .passage-content code{font-family:var(--font-mono);font-size:.8125em}.passage-block .passage-content pre code{background:none;color:inherit;padding:0}.passage-indicator{display:inline-block;font-family:var(--font-serif);font-size:.75rem;font-weight:600;color:var(--gold-dark);background:var(--gold-bg);border:1px solid var(--gold);border-radius:var(--radius-sm);padding:2px 8px;margin-bottom:var(--space-sm)}.plsat-container{max-width:var(--max-content);margin:0 auto;padding:var(--space-2xl)}.plsat-container:has(.question-split-layout){max-width:1200px}.plsat-intro{text-align:center;margin-bottom:var(--space-2xl)}.plsat-intro h1{font-size:2.25rem;margin-bottom:var(--space-sm)}.plsat-intro .plsat-subtitle{font-family:var(--font-serif);font-style:italic;color:var(--gold-dark);font-size:1.125rem;margin-bottom:var(--space-lg)}.plsat-rules{background:var(--cream);border:1px solid var(--gold);border-radius:var(--radius-lg);padding:var(--space-xl);max-width:600px;margin:0 auto var(--space-xl);text-align:left}.plsat-rules li{margin-bottom:var(--space-sm)}.plsat-timer{position:sticky;top:var(--header-height);background:var(--cream);border-bottom:2px solid var(--gold);padding:var(--space-md) var(--space-xl);display:flex;justify-content:space-between;align-items:center;z-index:50}.timer-display{font-family:var(--font-mono);font-size:1.5rem;font-weight:600;color:var(--ink)}.timer-display.warning{color:var(--warning)}.timer-display.critical{color:var(--error);animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.plsat-progress-text{font-size:.875rem;color:var(--ink-muted)}.plsat-results{text-align:center;padding:var(--space-3xl) var(--space-xl)}.plsat-results .score-display{font-family:var(--font-serif);font-size:4rem;font-weight:700;margin-bottom:var(--space-md)}.plsat-results .score-display.passed{color:var(--success)}.plsat-results .score-display.failed{color:var(--error)}.plsat-results .verdict{font-family:var(--font-serif);font-size:1.5rem;margin-bottom:var(--space-lg)}.reference-container{max-width:1100px;margin:0 auto;padding:var(--space-2xl)}.reference-section{margin-bottom:var(--space-2xl)}.reference-section h2{margin-bottom:var(--space-lg);padding-bottom:var(--space-sm);border-bottom:2px solid var(--gold)}.reference-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-md)}.ref-card{background:var(--cream);border:1px solid var(--parchment-dark);border-radius:var(--radius-md);padding:var(--space-lg)}.ref-card .ref-symbol{font-family:var(--font-mono);font-size:1.25rem;font-weight:700;color:var(--burgundy);margin-bottom:var(--space-xs)}.ref-card h4{margin-bottom:var(--space-sm)}.ref-card p{font-size:.875rem;color:var(--ink-light);margin-bottom:var(--space-sm)}.ref-card .ref-examples{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.ref-card .ref-example{font-family:var(--font-mono);font-size:.75rem;background:var(--gold-bg);padding:2px 6px;border-radius:var(--radius-sm)}.certificate-container{max-width:800px;margin:0 auto;padding:var(--space-2xl)}.certificate{background:var(--cream);border:3px solid var(--gold);border-radius:var(--radius-xl);padding:var(--space-3xl);text-align:center;position:relative;overflow:hidden;box-shadow:var(--shadow-lg)}.certificate:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1px solid var(--gold-light);border-radius:var(--radius-lg);pointer-events:none}.certificate .cert-seal{margin:0 auto var(--space-lg);opacity:.15}.certificate h1{font-size:1.5rem;color:var(--burgundy);letter-spacing:.1em;text-transform:uppercase;margin-bottom:var(--space-xs)}.certificate .cert-title{font-family:var(--font-serif);font-size:1.125rem;color:var(--gold-dark);font-style:italic;margin-bottom:var(--space-xl)}.certificate .cert-name{font-family:var(--font-serif);font-size:2.5rem;font-weight:700;color:var(--ink);margin-bottom:var(--space-md);border-bottom:2px solid var(--gold);display:inline-block;padding:0 var(--space-xl) var(--space-sm)}.certificate .cert-body{font-size:1rem;color:var(--ink-light);line-height:1.8;margin-bottom:var(--space-xl)}.certificate .cert-score{font-family:var(--font-mono);font-size:1.25rem;color:var(--burgundy);font-weight:600}.certificate .cert-meta{display:flex;justify-content:center;gap:var(--space-2xl);margin-top:var(--space-xl);font-size:.875rem;color:var(--ink-muted)}.certificate .cert-meta dt{font-weight:600;color:var(--ink-light)}@media print{.header,.main-content>*:not(.certificate-container){display:none!important}.certificate-container{padding:0;max-width:none}.certificate{box-shadow:none;border-width:2px}.no-print{display:none!important}}.btn{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s;border:2px solid transparent;text-decoration:none}.btn:hover{text-decoration:none}.btn-primary{background:var(--burgundy);color:var(--cream);border-color:var(--burgundy)}.btn-primary:hover{background:var(--burgundy-light);border-color:var(--burgundy-light);color:var(--cream)}.btn-secondary{background:transparent;color:var(--burgundy);border-color:var(--burgundy)}.btn-secondary:hover{background:var(--burgundy-bg)}.btn-gold{background:var(--gold);color:var(--ink);border-color:var(--gold)}.btn-gold:hover{background:var(--gold-light);border-color:var(--gold-light)}.btn-lg{padding:var(--space-md) var(--space-xl);font-size:1rem}.text-center{text-align:center}.text-muted{color:var(--ink-muted)}.mt-sm{margin-top:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.mt-xl{margin-top:var(--space-xl)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.loading{display:flex;align-items:center;justify-content:center;min-height:400px;font-family:var(--font-serif);font-style:italic;color:var(--ink-muted);font-size:1.125rem}.empty-state{text-align:center;padding:var(--space-3xl);color:var(--ink-muted)}.empty-state h3{margin-bottom:var(--space-md);color:var(--ink-light)}.name-input{font-family:var(--font-serif);font-size:1.25rem;padding:var(--space-sm) var(--space-md);border:2px solid var(--parchment-dark);border-radius:var(--radius-md);background:var(--cream);color:var(--ink);text-align:center;width:100%;max-width:400px;transition:border-color .2s}.name-input:focus{outline:none;border-color:var(--gold)}.name-input::placeholder{color:var(--ink-faint);font-style:italic}@media (max-width: 768px){.course-layout{flex-direction:column}.course-sidebar{width:100%;position:static;height:auto;border-right:none;border-bottom:1px solid var(--parchment-dark)}.course-content{padding:var(--space-lg)}.home-hero h1{font-size:2rem}.reference-grid{grid-template-columns:1fr}.header{padding:0 var(--space-md)}.header-nav a{padding:var(--space-sm);font-size:.8125rem}}
1
+ :root{--parchment: #F5F1E8;--parchment-dark: #E8E0D0;--cream: #FDF8F0;--cream-hover: #FAF3E6;--ink: #2C1810;--ink-light: #4A3728;--ink-muted: #8B7355;--ink-faint: #B8A88A;--burgundy: #6B1C23;--burgundy-light: #8B2E38;--burgundy-dark: #4A1118;--burgundy-bg: #6B1C2310;--gold: #C5A572;--gold-light: #D4BA8E;--gold-dark: #A68B5B;--gold-bg: #C5A57215;--success: #4A7C59;--success-bg: #4A7C5915;--error: #9B2C2C;--error-bg: #9B2C2C15;--warning: #B8860B;--warning-bg: #B8860B15;--sym-component: #6B1C23;--sym-flow: #2D5F8A;--sym-gate: #7B5EA7;--sym-signal: #B8860B;--sym-aspect: #4A7C59;--font-serif: "Crimson Pro", Georgia, "Times New Roman", serif;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Fira Code", monospace;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-sm: 0 1px 3px rgba(44, 24, 16, .08);--shadow-md: 0 4px 12px rgba(44, 24, 16, .1);--shadow-lg: 0 8px 24px rgba(44, 24, 16, .12);--header-height: 64px;--sidebar-width: 280px;--max-content: 900px}[data-theme=dark]{--parchment: #1a1a2e;--parchment-dark: #2a2a40;--cream: #16162a;--cream-hover: #1e1e35;--ink: #e8e0d0;--ink-light: #c8bfad;--ink-muted: #8b8578;--ink-faint: #5a5548;--burgundy: #d4616b;--burgundy-light: #e07880;--burgundy-dark: #a84850;--burgundy-bg: #d4616b18;--gold: #d4b896;--gold-light: #e0c9a8;--gold-dark: #c5a572;--gold-bg: #d4b89618;--success: #6dbf7b;--success-bg: #6dbf7b18;--error: #e06060;--error-bg: #e0606018;--warning: #d4a840;--warning-bg: #d4a84018;--sym-component: #d4616b;--sym-flow: #5aa0d4;--sym-gate: #a988d0;--sym-signal: #d4a840;--sym-aspect: #6dbf7b;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5)}[data-theme=dark] body:before{display:none}[data-theme=dark] .theme-toggle{border-color:var(--ink-muted);color:var(--gold)}[data-theme=dark] .btn-primary{color:#fff}[data-theme=dark] .btn-gold{color:#1a1a2e}[data-theme=dark] .lesson-nav-item.active{background:var(--gold-dark);color:#1a1a2e;font-weight:600}[data-theme=dark] .lesson-nav-item:hover{background:var(--parchment-dark);color:var(--ink)}[data-theme=dark] .choice-btn{color:var(--ink)}[data-theme=dark] .choice-letter{color:var(--burgundy)}[data-theme=dark] code{background:#d4b89625;border-color:#d4b89640}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);background:var(--parchment);color:var(--ink);line-height:1.6;min-height:100vh}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:url("data:image/svg+xml,%3Csvg width='100' height='100' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E");pointer-events:none;z-index:-1}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif);color:var(--ink);line-height:1.3;font-weight:600}h1{font-size:2.5rem;letter-spacing:-.02em}h2{font-size:1.875rem;letter-spacing:-.01em}h3{font-size:1.5rem}h4{font-size:1.25rem}p{margin-bottom:var(--space-md)}a{color:var(--burgundy);text-decoration:none;transition:color .2s}a:hover{color:var(--burgundy-light);text-decoration:underline}code{font-family:var(--font-mono);font-size:.875em;background:#c5a57230;color:var(--burgundy);padding:.15em .4em;border-radius:var(--radius-sm);border:1px solid #C5A57240}pre{background:var(--ink);color:var(--parchment);padding:var(--space-lg);border-radius:var(--radius-md);overflow-x:auto;margin:var(--space-lg) 0;font-size:.875rem;line-height:1.4}pre code{background:none;color:inherit;padding:0}.app{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1;padding-top:var(--header-height)}.header{position:fixed;top:0;left:0;right:0;height:var(--header-height);background:var(--cream);border-bottom:2px solid var(--gold);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-xl);z-index:100;box-shadow:var(--shadow-sm)}.header-left{display:flex;align-items:center;gap:var(--space-lg);flex:1}.header-brand{display:flex;align-items:center;gap:var(--space-sm);text-decoration:none;color:var(--ink)}.header-brand:hover{text-decoration:none;color:var(--ink)}.header-brand h1{font-size:1.25rem;font-weight:700;letter-spacing:.02em}.header-brand .subtitle{font-family:var(--font-serif);font-style:italic;font-size:.75rem;color:var(--ink-muted);margin-left:var(--space-xs)}.header-nav{display:flex;gap:var(--space-xs)}.header-nav a{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:.875rem;font-weight:500;color:var(--ink-light);transition:all .2s}.header-nav a:hover{background:var(--burgundy-bg);color:var(--burgundy);text-decoration:none}.header-nav a.active{background:var(--burgundy);color:var(--cream)}.header-right{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-md);flex:1}.version-badge{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-muted);background:var(--parchment);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm)}.theme-toggle{background:var(--parchment);border:1px solid var(--parchment-dark);border-radius:var(--radius-sm);padding:var(--space-xs) var(--space-sm);cursor:pointer;font-size:1rem;line-height:1;transition:all .2s;display:flex;align-items:center;justify-content:center}.theme-toggle:hover{border-color:var(--gold);background:var(--gold-bg)}.gold-divider{height:2px;background:linear-gradient(90deg,transparent,var(--gold),transparent);margin:var(--space-xl) 0}.home{max-width:1100px;margin:0 auto;padding:var(--space-2xl) var(--space-xl)}.home-hero{text-align:center;margin-bottom:var(--space-3xl)}.home-hero h1{font-size:3rem;margin-bottom:var(--space-sm)}.home-hero .motto{font-family:var(--font-serif);font-style:italic;font-size:1.125rem;color:var(--gold-dark);margin-bottom:var(--space-lg)}.home-hero .description{font-size:1.125rem;color:var(--ink-light);max-width:600px;margin:0 auto}.course-catalog{display:flex;flex-direction:column;gap:var(--space-lg);margin-bottom:var(--space-3xl)}.course-catalog h2{margin-bottom:var(--space-sm)}.course-card{background:var(--cream);border:1px solid var(--parchment-dark);border-radius:var(--radius-lg);padding:var(--space-xl);transition:all .2s;text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:var(--space-md)}.course-card:hover{box-shadow:var(--shadow-md);border-color:var(--gold);text-decoration:none;color:inherit}.course-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-md)}.course-card-title{display:flex;flex-direction:column;gap:var(--space-xs)}.course-card .course-number{font-family:var(--font-serif);font-size:.875rem;font-weight:600;color:var(--burgundy);text-transform:uppercase;letter-spacing:.05em}.course-card h3{font-size:1.25rem;margin:0}.course-card .course-description{font-size:.9375rem;color:var(--ink-light);line-height:1.6}.course-topics{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.course-topic-tag{font-size:.75rem;color:var(--ink-muted);background:var(--parchment);padding:2px var(--space-sm);border-radius:var(--radius-sm);border:1px solid var(--parchment-dark)}.course-card .course-meta{display:flex;justify-content:space-between;align-items:center;font-size:.8125rem;color:var(--ink-muted);padding-top:var(--space-sm);border-top:1px solid var(--parchment-dark)}.course-meta-cta{color:var(--burgundy);font-weight:500}.progress-ring{position:relative;width:48px;height:48px}.progress-ring svg{transform:rotate(-90deg)}.progress-ring .ring-bg{stroke:var(--parchment-dark)}.progress-ring .ring-fill{stroke:var(--success);transition:stroke-dashoffset .6s ease}.progress-ring .ring-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.6875rem;font-weight:600;color:var(--ink-light)}.quick-links{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-md)}.quick-link{background:var(--cream);border:1px solid var(--parchment-dark);border-radius:var(--radius-md);padding:var(--space-lg);text-align:center;text-decoration:none;color:var(--ink);transition:all .2s;font-weight:500}.quick-link:hover{border-color:var(--burgundy);color:var(--burgundy);text-decoration:none;box-shadow:var(--shadow-sm)}.course-layout{display:flex;min-height:calc(100vh - var(--header-height))}.course-sidebar{width:var(--sidebar-width);background:var(--cream);border-right:1px solid var(--parchment-dark);padding:var(--space-lg);position:sticky;top:var(--header-height);height:calc(100vh - var(--header-height));overflow-y:auto}.course-sidebar h2{font-size:1rem;margin-bottom:var(--space-lg);color:var(--burgundy)}.lesson-nav{list-style:none;display:flex;flex-direction:column;gap:var(--space-xs)}.lesson-nav-item{display:block;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:.875rem;color:var(--ink-light);cursor:pointer;transition:all .2s;border:none;background:none;text-align:left;width:100%}.lesson-nav-item:hover{background:var(--burgundy-bg);color:var(--burgundy)}.lesson-nav-item.active{background:var(--burgundy);color:var(--cream);font-weight:500}.lesson-nav-item.completed{color:var(--success)}.lesson-nav-item.completed:before{content:"✓"}.course-content{flex:1;max-width:var(--max-content);padding:var(--space-2xl) var(--space-2xl) var(--space-3xl)}.lesson-content h2{margin-top:var(--space-2xl);margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--gold)}.lesson-content h3{margin-top:var(--space-xl);margin-bottom:var(--space-sm)}.lesson-content ul,.lesson-content ol{margin:var(--space-md) 0;padding-left:var(--space-xl)}.lesson-content li{margin-bottom:var(--space-sm)}.lesson-content blockquote{border-left:3px solid var(--gold);padding:var(--space-md) var(--space-lg);background:var(--gold-bg);border-radius:0 var(--radius-md) var(--radius-md) 0;margin:var(--space-lg) 0;font-style:italic}.lesson-content table{width:100%;border-collapse:collapse;margin:var(--space-lg) 0}.lesson-content th,.lesson-content td{padding:var(--space-sm) var(--space-md);border:1px solid var(--parchment-dark);text-align:left}.lesson-content th{background:var(--cream);font-weight:600}.key-concepts{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin:var(--space-lg) 0}.concept-tag{font-family:var(--font-mono);font-size:.8125rem;background:var(--burgundy-bg);color:var(--burgundy);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);border:1px solid var(--burgundy)20}.lesson-actions{display:flex;justify-content:space-between;align-items:center;margin-top:var(--space-2xl);padding-top:var(--space-lg);border-top:1px solid var(--parchment-dark)}.quiz-container{max-width:var(--max-content);margin:0 auto;padding:var(--space-2xl)}.quiz-header{text-align:center;margin-bottom:var(--space-2xl)}.quiz-header h1{font-size:1.75rem;margin-bottom:var(--space-sm)}.quiz-progress{font-size:.875rem;color:var(--ink-muted)}.question-card{background:var(--cream);border:1px solid var(--parchment-dark);border-radius:var(--radius-lg);padding:var(--space-xl);margin-bottom:var(--space-lg)}.question-card .question-number{font-family:var(--font-serif);font-size:.875rem;color:var(--gold-dark);font-weight:600;margin-bottom:var(--space-sm)}.question-card .question-text{font-size:1.0625rem;font-weight:500;margin-bottom:var(--space-lg);line-height:1.5}.question-card .scenario{background:var(--gold-bg);border-left:3px solid var(--gold);padding:var(--space-md) var(--space-lg);border-radius:0 var(--radius-md) var(--radius-md) 0;margin-bottom:var(--space-lg);font-size:.9375rem;color:var(--ink-light)}.choices{display:flex;flex-direction:column;gap:var(--space-sm)}.choice-btn{display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-md) var(--space-lg);border:2px solid var(--parchment-dark);border-radius:var(--radius-md);background:var(--cream);cursor:pointer;transition:all .2s;text-align:left;font-size:.9375rem;width:100%}.choice-btn pre{overflow-x:auto}.choice-btn:hover:not(:disabled){border-color:var(--burgundy);background:var(--burgundy-bg)}.choice-btn.selected{border-color:var(--burgundy);background:var(--burgundy-bg)}.choice-btn.correct{border-color:var(--success);background:var(--success-bg)}.choice-btn.incorrect{border-color:var(--error);background:var(--error-bg)}.choice-letter{font-family:var(--font-serif);font-weight:700;font-size:1rem;color:var(--burgundy);min-width:1.5rem}.explanation{margin-top:var(--space-lg);padding:var(--space-lg);background:var(--success-bg);border:1px solid var(--success);border-radius:var(--radius-md);font-size:.9375rem;line-height:1.6}.explanation.wrong{background:var(--error-bg);border-color:var(--error)}.question-split-layout{display:grid;grid-template-columns:1fr 1.5fr;gap:1.5rem}.question-split-layout .question-content,.question-split-layout .answer-choices{min-width:0}.question-split-layout .question-content{border-right:1px solid var(--parchment-dark);padding-right:1.5rem}@media (max-width: 768px){.question-split-layout{grid-template-columns:1fr}.question-split-layout .question-content{border-right:none;padding-right:0;border-bottom:1px solid var(--parchment-dark);padding-bottom:1rem}}.passage-block{background:var(--cream);border:2px solid var(--gold);border-radius:var(--radius-lg);padding:var(--space-xl);margin-bottom:var(--space-lg);position:relative}.passage-block:before{content:"READ THE FOLLOWING PASSAGE";display:block;font-family:var(--font-serif);font-size:.75rem;font-weight:700;letter-spacing:.1em;color:var(--gold-dark);margin-bottom:var(--space-md);text-transform:uppercase}.passage-block .passage-content{font-size:.9375rem;line-height:1.7;color:var(--ink-light)}.passage-block .passage-content pre{background:var(--ink);color:var(--parchment);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);overflow-x:auto;font-size:.8125rem;line-height:1.5;margin:var(--space-md) 0}.passage-block .passage-content code{font-family:var(--font-mono);font-size:.8125em}.passage-block .passage-content pre code{background:none;color:inherit;padding:0}.passage-indicator{display:inline-block;font-family:var(--font-serif);font-size:.75rem;font-weight:600;color:var(--gold-dark);background:var(--gold-bg);border:1px solid var(--gold);border-radius:var(--radius-sm);padding:2px 8px;margin-bottom:var(--space-sm)}.plsat-container{max-width:1400px;margin:0 auto;padding:var(--space-2xl) var(--space-xl)}.plsat-intro{text-align:center;margin-bottom:var(--space-2xl)}.plsat-intro h1{font-size:2.25rem;margin-bottom:var(--space-sm)}.plsat-intro .plsat-subtitle{font-family:var(--font-serif);font-style:italic;color:var(--gold-dark);font-size:1.125rem;margin-bottom:var(--space-lg)}.plsat-rules{background:var(--cream);border:1px solid var(--gold);border-radius:var(--radius-lg);padding:var(--space-xl);max-width:600px;margin:0 auto var(--space-xl);text-align:left}.plsat-rules li{margin-bottom:var(--space-sm)}.plsat-timer{position:sticky;top:var(--header-height);background:var(--cream);border-bottom:2px solid var(--gold);padding:var(--space-md) var(--space-xl);display:flex;justify-content:space-between;align-items:center;z-index:50}.timer-display{font-family:var(--font-mono);font-size:1.5rem;font-weight:600;color:var(--ink)}.timer-display.warning{color:var(--warning)}.timer-display.critical{color:var(--error);animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.plsat-progress-text{font-size:.875rem;color:var(--ink-muted)}.plsat-results{text-align:center;padding:var(--space-3xl) var(--space-xl)}.plsat-results .score-display{font-family:var(--font-serif);font-size:4rem;font-weight:700;margin-bottom:var(--space-md)}.plsat-results .score-display.passed{color:var(--success)}.plsat-results .score-display.failed{color:var(--error)}.plsat-results .verdict{font-family:var(--font-serif);font-size:1.5rem;margin-bottom:var(--space-lg)}.reference-container{max-width:1100px;margin:0 auto;padding:var(--space-2xl)}.reference-section{margin-bottom:var(--space-2xl)}.reference-section h2{margin-bottom:var(--space-lg);padding-bottom:var(--space-sm);border-bottom:2px solid var(--gold)}.reference-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-md)}.ref-card{background:var(--cream);border:1px solid var(--parchment-dark);border-radius:var(--radius-md);padding:var(--space-lg)}.ref-card .ref-symbol{font-family:var(--font-mono);font-size:1.25rem;font-weight:700;color:var(--burgundy);margin-bottom:var(--space-xs)}.ref-card h4{margin-bottom:var(--space-sm)}.ref-card p{font-size:.875rem;color:var(--ink-light);margin-bottom:var(--space-sm)}.ref-card .ref-examples{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.ref-card .ref-example{font-family:var(--font-mono);font-size:.75rem;background:var(--gold-bg);padding:2px 6px;border-radius:var(--radius-sm)}.certificate-container{max-width:800px;margin:0 auto;padding:var(--space-2xl)}.certificate{background:var(--cream);border:3px solid var(--gold);border-radius:var(--radius-xl);padding:var(--space-3xl);text-align:center;position:relative;overflow:hidden;box-shadow:var(--shadow-lg)}.certificate:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1px solid var(--gold-light);border-radius:var(--radius-lg);pointer-events:none}.certificate .cert-seal{margin:0 auto var(--space-lg);opacity:.15}.certificate h1{font-size:1.5rem;color:var(--burgundy);letter-spacing:.1em;text-transform:uppercase;margin-bottom:var(--space-xs)}.certificate .cert-title{font-family:var(--font-serif);font-size:1.125rem;color:var(--gold-dark);font-style:italic;margin-bottom:var(--space-xl)}.certificate .cert-name{font-family:var(--font-serif);font-size:2.5rem;font-weight:700;color:var(--ink);margin-bottom:var(--space-md);border-bottom:2px solid var(--gold);display:inline-block;padding:0 var(--space-xl) var(--space-sm)}.certificate .cert-body{font-size:1rem;color:var(--ink-light);line-height:1.8;margin-bottom:var(--space-xl)}.certificate .cert-score{font-family:var(--font-mono);font-size:1.25rem;color:var(--burgundy);font-weight:600}.certificate .cert-meta{display:flex;justify-content:center;gap:var(--space-2xl);margin-top:var(--space-xl);font-size:.875rem;color:var(--ink-muted)}.certificate .cert-meta dt{font-weight:600;color:var(--ink-light)}@media print{.header,.main-content>*:not(.certificate-container){display:none!important}.certificate-container{padding:0;max-width:none}.certificate{box-shadow:none;border-width:2px}.no-print{display:none!important}}.btn{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s;border:2px solid transparent;text-decoration:none}.btn:hover{text-decoration:none}.btn-primary{background:var(--burgundy);color:var(--cream);border-color:var(--burgundy)}.btn-primary:hover{background:var(--burgundy-light);border-color:var(--burgundy-light);color:var(--cream)}.btn-secondary{background:transparent;color:var(--burgundy);border-color:var(--burgundy)}.btn-secondary:hover{background:var(--burgundy-bg)}.btn-gold{background:var(--gold);color:var(--ink);border-color:var(--gold)}.btn-gold:hover{background:var(--gold-light);border-color:var(--gold-light)}.btn-lg{padding:var(--space-md) var(--space-xl);font-size:1rem}.text-center{text-align:center}.text-muted{color:var(--ink-muted)}.mt-sm{margin-top:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.mt-xl{margin-top:var(--space-xl)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.loading{display:flex;align-items:center;justify-content:center;min-height:400px;font-family:var(--font-serif);font-style:italic;color:var(--ink-muted);font-size:1.125rem}.empty-state{text-align:center;padding:var(--space-3xl);color:var(--ink-muted)}.empty-state h3{margin-bottom:var(--space-md);color:var(--ink-light)}.name-input{font-family:var(--font-serif);font-size:1.25rem;padding:var(--space-sm) var(--space-md);border:2px solid var(--parchment-dark);border-radius:var(--radius-md);background:var(--cream);color:var(--ink);text-align:center;width:100%;max-width:400px;transition:border-color .2s}.name-input:focus{outline:none;border-color:var(--gold)}.name-input::placeholder{color:var(--ink-faint);font-style:italic}@media (max-width: 768px){.course-layout{flex-direction:column}.course-sidebar{width:100%;position:static;height:auto;border-right:none;border-bottom:1px solid var(--parchment-dark)}.course-content{padding:var(--space-lg)}.home-hero h1{font-size:2rem}.reference-grid{grid-template-columns:1fr}.header{padding:0 var(--space-md)}.header-nav a{padding:var(--space-sm);font-size:.8125rem}}
@@ -83,5 +83,5 @@ Error generating stack: `+i.message+`
83
83
  */var Il=S,fm=cm;function dm(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var pm=typeof Object.is=="function"?Object.is:dm,hm=fm.useSyncExternalStore,mm=Il.useRef,vm=Il.useEffect,gm=Il.useMemo,ym=Il.useDebugValue;hf.useSyncExternalStoreWithSelector=function(e,t,n,r,l){var i=mm(null);if(i.current===null){var o={hasValue:!1,value:null};i.current=o}else o=i.current;i=gm(function(){function u(x){if(!c){if(c=!0,h=x,x=r(x),l!==void 0&&o.hasValue){var y=o.value;if(l(y,x))return m=y}return m=x}if(y=m,pm(h,x))return y;var w=r(x);return l!==void 0&&l(y,w)?(h=x,y):(h=x,m=w)}var c=!1,h,m,v=n===void 0?null:n;return[function(){return u(t())},v===null?void 0:function(){return u(v())}]},[t,n,r,l]);var s=hm(e,i[0],i[1]);return vm(function(){o.hasValue=!0,o.value=s},[s]),ym(s),s};pf.exports=hf;var xm=pf.exports;const wm=Uu(xm),gf={},{useDebugValue:Sm}=vo,{useSyncExternalStoreWithSelector:km}=wm;let Iu=!1;const Cm=e=>e;function Em(e,t=Cm,n){(gf?"production":void 0)!=="production"&&n&&!Iu&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),Iu=!0);const r=km(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return Sm(r),r}const Ou=e=>{(gf?"production":void 0)!=="production"&&typeof e!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const t=typeof e=="function"?em(e):e,n=(r,l)=>Em(t,r,l);return Object.assign(n,t),n},cs=e=>e?Ou(e):Ou,Ol=cs((e,t)=>({courses:[],courseCache:{},isLoading:!1,error:null,loadCourses:async()=>{e({isLoading:!0,error:null});try{const n=await fetch("/api/courses");if(!n.ok)throw new Error("Failed to load courses");const r=await n.json();e({courses:r.courses,isLoading:!1})}catch(n){e({error:n.message,isLoading:!1})}},loadCourse:async n=>{const r=t().courseCache[n];if(r)return r;try{const l=await fetch(`/api/courses/${n}`);if(!l.ok)return null;const i=await l.json();return e(o=>({courseCache:{...o.courseCache,[n]:i}})),i}catch{return null}}})),yf="paradigm-university-progress";function jm(){try{const e=localStorage.getItem(yf);return e?JSON.parse(e):{}}catch{return{}}}function pi(e){try{localStorage.setItem(yf,JSON.stringify(e))}catch{}}const Ml=cs((e,t)=>({progress:jm(),completeLesson:(n,r)=>{e(l=>{const i=l.progress[n]||{courseId:n,completedLessons:[],quizResults:{}};if(i.completedLessons.includes(r))return l;const o={...l.progress,[n]:{...i,completedLessons:[...i.completedLessons,r]}};return pi(o),{progress:o}})},recordQuiz:n=>{e(r=>{const l=r.progress[n.courseId]||{courseId:n.courseId,completedLessons:[],quizResults:{}},i={...r.progress,[n.courseId]:{...l,quizResults:{...l.quizResults,[n.lessonId]:n}}};return pi(i),{progress:i}})},getCourseProgress:n=>t().progress[n]||{courseId:n,completedLessons:[],quizResults:{}},isLessonCompleted:(n,r)=>{const l=t().progress[n];return l?l.completedLessons.includes(r):!1},getCoursePercentage:(n,r)=>{if(r===0)return 0;const l=t().progress[n];return l?Math.round(l.completedLessons.length/r*100):0},resetProgress:()=>{pi({}),e({progress:{}})}})),xf="paradigm-university-plsat";function Nm(){try{const e=localStorage.getItem(xf);return e?JSON.parse(e):{certificates:[],studentName:""}}catch{return{certificates:[],studentName:""}}}function Mu(e){try{localStorage.setItem(xf,JSON.stringify(e))}catch{}}const fs=cs((e,t)=>{const n=Nm();return{certificates:n.certificates,studentName:n.studentName,setStudentName:r=>{e({studentName:r});const l=t();Mu({certificates:l.certificates,studentName:r})},addCertificate:r=>{e(l=>{const i=[...l.certificates,r];return Mu({certificates:i,studentName:l.studentName}),{certificates:i}})},getLatestCertificate:()=>{const r=t().certificates;return r.length===0?null:r.reduce((l,i)=>new Date(i.date)>new Date(l.date)?i:l)},getCertificateForVersion:r=>t().certificates.find(l=>l.plsatVersion===r&&l.passed)||null,hasPassed:()=>t().certificates.some(r=>r.passed)}});function wf({percentage:e,size:t=48,strokeWidth:n=4}){const r=(t-n)/2,l=2*Math.PI*r,i=l-e/100*l;return a.jsxs("div",{className:"progress-ring",style:{width:t,height:t},children:[a.jsxs("svg",{width:t,height:t,children:[a.jsx("circle",{className:"ring-bg",cx:t/2,cy:t/2,r,fill:"none",strokeWidth:n}),a.jsx("circle",{className:"ring-fill",cx:t/2,cy:t/2,r,fill:"none",strokeWidth:n,strokeLinecap:"round",strokeDasharray:l,strokeDashoffset:i})]}),a.jsxs("span",{className:"ring-label",children:[e,"%"]})]})}function Pm(){const{courses:e,isLoading:t,loadCourses:n}=Ol(),r=Ml(i=>i.getCoursePercentage),l=fs(i=>i.hasPassed);return S.useEffect(()=>{n()},[n]),t?a.jsx("div",{className:"loading",children:"Opening the campus gates..."}):a.jsxs("div",{className:"home",children:[a.jsxs("div",{className:"home-hero",children:[a.jsx(pn,{size:140}),a.jsx("h1",{children:"Paradigm University"}),a.jsx("p",{className:"motto",children:"Universitas Paradigmatica — Lux in Codice"}),a.jsx("p",{className:"description",children:"Master the Paradigm framework through structured courses, hands-on quizzes, and the legendary PLSAT certification exam."})]}),a.jsx("div",{className:"gold-divider"}),a.jsxs("section",{className:"course-catalog",children:[a.jsx("h2",{children:"Course Catalog"}),e.map(i=>{const o=r(i.id,i.lessonCount);return a.jsxs(q,{to:`/course/${i.id}`,className:"course-card",children:[a.jsxs("div",{className:"course-card-header",children:[a.jsxs("div",{className:"course-card-title",children:[a.jsx("span",{className:"course-number",children:i.id.replace("para-","PARA ")}),a.jsx("h3",{children:i.title.replace(/^PARA \d+: /,"")})]}),a.jsx(wf,{percentage:o})]}),a.jsx("p",{className:"course-description",children:i.description}),a.jsx("div",{className:"course-topics",children:i.lessons.map(s=>a.jsx("span",{className:"course-topic-tag",children:s.title},s.id))}),a.jsxs("div",{className:"course-meta",children:[a.jsxs("span",{children:[i.lessonCount," lessons"]}),a.jsx("span",{className:"course-meta-cta",children:"Start course →"})]})]},i.id)})]}),a.jsx("div",{className:"gold-divider"}),a.jsxs("section",{children:[a.jsx("h2",{className:"mb-lg",children:"Quick Links"}),a.jsxs("div",{className:"quick-links",children:[a.jsx(q,{to:"/plsat",className:"quick-link",children:l()?"Retake the PLSAT":"Take the PLSAT"}),a.jsx(q,{to:"/reference",className:"quick-link",children:"Reference Library"}),a.jsx(q,{to:"/certificate",className:"quick-link",children:"View Certificates"}),a.jsx(q,{to:"/course/para-101",className:"quick-link",children:"Start Learning"})]})]})]})}function _m(){const{courses:e,isLoading:t,loadCourses:n}=Ol(),r=Ml(l=>l.getCoursePercentage);return S.useEffect(()=>{n()},[n]),t?a.jsx("div",{className:"loading",children:"Loading courses..."}):a.jsx("div",{className:"home",children:a.jsxs("section",{className:"course-catalog",children:[a.jsx("h2",{children:"Course Catalog"}),e.map(l=>{const i=r(l.id,l.lessonCount);return a.jsxs(q,{to:`/course/${l.id}`,className:"course-card",children:[a.jsx("span",{className:"course-number",children:l.id.replace("para-","PARA ")}),a.jsx("h3",{children:l.title.replace(/^PARA \d+: /,"")}),a.jsx("p",{className:"course-description",children:l.description}),a.jsxs("div",{className:"course-meta",children:[a.jsxs("span",{children:[l.lessonCount," lessons"]}),a.jsx(wf,{percentage:i})]})]},l.id)})]})})}function Du(e){return e.replace(/`([^`]+)`/g,"<code>$1</code>").replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>").replace(/\*([^*]+)\*/g,"<em>$1</em>")}function Lm(e){const t=e.trim().split(`
84
84
  `);if(t.length<2)return e;const n=o=>o.split("|").map(s=>s.trim()).filter(s=>s.length>0),r=n(t[0]),l=t.slice(2).map(n);let i="<table><thead><tr>";for(const o of r)i+=`<th>${Du(o)}</th>`;i+="</tr></thead><tbody>";for(const o of l){i+="<tr>";for(const s of o)i+=`<td>${Du(s)}</td>`;i+="</tr>"}return i+="</tbody></table>",i}function Ut(e){const t=[];let n=e.replace(/```(\w*)\n([\s\S]*?)```/g,(r,l,i)=>{const o=t.length;return t.push(`<pre><code>${i}</code></pre>`),`\0BLOCK${o}\0`});return n=n.replace(/((?:^\|.+\|\n?)+)/gm,r=>{const l=r.trim().split(`
85
85
  `);if(l.length>=3&&/^[\s-:|]+$/.test(l[1])){const i=t.length;return t.push(Lm(r)),`\0BLOCK${i}\0`}return r}),n=n.replace(/`([^`]+)`/g,"<code>$1</code>").replace(/^#### (.+)$/gm,"<h4>$1</h4>").replace(/^### (.+)$/gm,"<h3>$1</h3>").replace(/^## (.+)$/gm,"<h2>$1</h2>").replace(/\*\*([^*]+)\*\*/g,"<strong>$1</strong>").replace(/\*([^*]+)\*/g,"<em>$1</em>").replace(/^> (.+)$/gm,"<blockquote>$1</blockquote>").replace(/^\d+\.\s+(.+)$/gm,"<oli>$1</oli>").replace(/((?:<oli>.*<\/oli>\n?)+)/g,r=>"<ol>"+r.replace(/<\/?oli>/g,l=>l.replace("oli","li"))+"</ol>").replace(/^- (.+)$/gm,"<li>$1</li>").replace(/((?:<li>.*<\/li>\n?)+)/g,"<ul>$1</ul>").replace(/^(?!<(?:h[1-6]|ul|ol|li|p|blockquote|pre|table|thead|tbody|tr|td|th|\x00)).+$/gm,"<p>$&</p>").replace(/\n{2,}/g,`
86
- `),n=n.replace(/\x00BLOCK(\d+)\x00/g,(r,l)=>t[Number(l)]),n}function Au(){const{courseId:e,lessonId:t}=uf(),n=sf(),r=Ol(d=>d.loadCourse),[l,i]=S.useState(null),[o,s]=S.useState(null),[u,c]=S.useState(!0),{isLessonCompleted:h,completeLesson:m}=Ml();if(S.useEffect(()=>{e&&(c(!0),r(e).then(d=>{if(i(d),d&&d.lessons.length>0){const f=t?d.lessons.find(p=>p.id===t):null;f?s(f):(s(d.lessons[0]),n(`/course/${e}/${d.lessons[0].id}`,{replace:!0}))}c(!1)}))},[e,t,r,n]),u)return a.jsx("div",{className:"loading",children:"Opening the textbook..."});if(!l)return a.jsxs("div",{className:"empty-state",children:[a.jsx("h3",{children:"Course not found"}),a.jsx("p",{children:"The requested course does not exist."}),a.jsx(q,{to:"/",className:"btn btn-primary mt-lg",children:"Return to Campus"})]});const v=o?l.lessons.findIndex(d=>d.id===o.id):0,x=()=>{o&&e&&m(e,o.id)},y=(d,f=!1)=>{s(d),n(`/course/${e}/${d.id}`),f&&window.scrollTo(0,0)},w=()=>{v<l.lessons.length-1&&y(l.lessons[v+1],!0)},N=()=>{v>0&&y(l.lessons[v-1],!0)};return a.jsxs("div",{className:"course-layout",children:[a.jsxs("aside",{className:"course-sidebar",children:[a.jsx("h2",{children:l.title}),a.jsx("nav",{className:"lesson-nav",children:l.lessons.map(d=>{const f=e?h(e,d.id):!1,p=(o==null?void 0:o.id)===d.id;let g="lesson-nav-item";return p&&(g+=" active"),f&&!p&&(g+=" completed"),a.jsx("button",{className:g,onClick:()=>y(d),children:d.title},d.id)})})]}),a.jsx("div",{className:"course-content",children:o&&a.jsxs(a.Fragment,{children:[a.jsx("h1",{children:o.title}),o.keyConcepts.length>0&&a.jsx("div",{className:"key-concepts",children:o.keyConcepts.map(d=>a.jsx("span",{className:"concept-tag",children:d},d))}),a.jsx("div",{className:"lesson-content",dangerouslySetInnerHTML:{__html:Ut(o.content)}}),a.jsxs("div",{className:"lesson-actions",children:[a.jsx("div",{children:v>0&&a.jsx("button",{className:"btn btn-secondary",onClick:N,children:"Previous"})}),a.jsxs("div",{style:{display:"flex",gap:"0.5rem"},children:[e&&!h(e,o.id)&&a.jsx("button",{className:"btn btn-secondary",onClick:x,children:"Mark Complete"}),o.quiz.length>0&&e&&a.jsx(q,{to:`/course/${e}/quiz/${o.id}`,className:"btn btn-gold",children:"Take Quiz"}),v<l.lessons.length-1&&a.jsx("button",{className:"btn btn-primary",onClick:w,children:"Next Lesson"})]})]})]})})]})}function co({number:e,question:t,scenario:n,choices:r,correct:l,explanation:i,selectedAnswer:o,onSelect:s,showResult:u,onAnswered:c,splitLayout:h}){const[m,v]=S.useState(null),[x,y]=S.useState(!1),w=s!==void 0,N=w?o||null:m,d=w?u:x,f=j=>{d&&!w||(w?s==null||s(j):(v(j),y(!0),c==null||c(j)))},p=N===l,g=Object.keys(r).sort(),E=a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"question-number",children:["Question ",e]}),n&&a.jsx("div",{className:"scenario",dangerouslySetInnerHTML:{__html:Ut(n)}}),a.jsx("div",{className:"question-text",dangerouslySetInnerHTML:{__html:Ut(t)}})]}),k=a.jsx("div",{className:"choices",children:g.map(j=>{let P="choice-btn";return N===j&&(P+=" selected"),d&&j===l&&(P+=" correct"),d&&N===j&&j!==l&&(P+=" incorrect"),a.jsxs("button",{className:P,onClick:()=>f(j),disabled:d&&!w,children:[a.jsxs("span",{className:"choice-letter",children:[j,"."]}),a.jsx("span",{dangerouslySetInnerHTML:{__html:Ut(r[j])}})]},j)})});return h?a.jsxs("div",{className:"question-card",children:[a.jsxs("div",{className:"question-split-layout",children:[a.jsx("div",{className:"question-content",children:E}),a.jsx("div",{className:"answer-choices",children:k})]}),d&&a.jsxs("div",{className:`explanation ${p?"":"wrong"}`,children:[a.jsx("strong",{children:p?"Correct!":`Incorrect. The answer is ${l}.`}),a.jsx("br",{}),a.jsx("span",{dangerouslySetInnerHTML:{__html:Ut(i)}})]})]}):a.jsxs("div",{className:"question-card",children:[E,k,d&&a.jsxs("div",{className:`explanation ${p?"":"wrong"}`,children:[a.jsx("strong",{children:p?"Correct!":`Incorrect. The answer is ${l}.`}),a.jsx("br",{}),a.jsx("span",{dangerouslySetInnerHTML:{__html:Ut(i)}})]})]})}function Tm(){const{courseId:e,lessonId:t}=uf(),n=Ol(g=>g.loadCourse),{recordQuiz:r,completeLesson:l,getCourseProgress:i}=Ml(),[o,s]=S.useState(null),[u,c]=S.useState(null),[h,m]=S.useState(!0),[v,x]=S.useState(!1),[y,w]=S.useState(0),N=e&&t?i(e).quizResults[t]:void 0;S.useEffect(()=>{e&&(m(!0),n(e).then(g=>{if(g&&t){const E=g.lessons.findIndex(k=>k.id===t);s(E>=0?g.lessons[E]:null),E>=0&&E<g.lessons.length-1&&c(g.lessons[E+1].id)}m(!1)}))},[e,t,n]);const[d,f]=S.useState({}),p=(g,E)=>{if(f(k=>({...k,[g]:E})),o){const k={...d,[g]:E};if(Object.keys(k).length===o.quiz.length){const j=o.quiz.filter(P=>k[P.id]===P.correct).length;if(w(j),x(!0),e&&t){const P={courseId:e,lessonId:t,score:j,total:o.quiz.length,answers:k,date:new Date().toISOString()};r(P),l(e,t)}}}};return h?a.jsx("div",{className:"loading",children:"Preparing your examination..."}):!o||o.quiz.length===0?a.jsxs("div",{className:"empty-state",children:[a.jsx("h3",{children:"No quiz available"}),a.jsx("p",{children:"This lesson does not have a quiz."}),a.jsx(q,{to:`/course/${e}`,className:"btn btn-primary mt-lg",children:"Back to Course"})]}):a.jsxs("div",{className:"quiz-container",children:[a.jsxs("div",{className:"quiz-header",children:[a.jsxs("h1",{children:[o.title," — Quiz"]}),a.jsx("p",{className:"quiz-progress",children:v?`Score: ${y}/${o.quiz.length} (${Math.round(y/o.quiz.length*100)}%)`:`${Object.keys(d).length}/${o.quiz.length} answered`}),N&&!v&&a.jsxs("p",{className:"text-muted mt-sm",children:["Previous best: ",N.score,"/",N.total]})]}),o.quiz.map((g,E)=>a.jsx(co,{number:E+1,question:g.question,choices:g.choices,correct:g.correct,explanation:g.explanation,onAnswered:k=>p(g.id,k)},g.id)),v&&a.jsxs("div",{className:"text-center mt-xl",children:[a.jsx("p",{className:"mb-lg",style:{fontSize:"1.25rem",fontFamily:"var(--font-serif)"},children:y===o.quiz.length?"Perfect score! Exemplary scholarship.":y>=o.quiz.length*.8?"Well done, scholar. You have demonstrated understanding.":"Review the material and try again. Persistence is the path to mastery."}),u?a.jsx(q,{to:`/course/${e}/${u}`,className:"btn btn-primary",children:"Next Lesson"}):a.jsx(q,{to:`/course/${e}`,className:"btn btn-primary",children:"Return to Course"})]})]})}function zm({totalSeconds:e,onTimeUp:t,running:n}){const[r,l]=S.useState(e),i=S.useCallback(()=>{t()},[t]);S.useEffect(()=>{if(!n)return;const h=setInterval(()=>{l(m=>m<=1?(clearInterval(h),i(),0):m-1)},1e3);return()=>clearInterval(h)},[n,i]);const o=Math.floor(r/60),s=r%60,u=r/e*100;let c="timer-display";return u<20?c+=" critical":u<40&&(c+=" warning"),a.jsxs("span",{className:c,children:[String(o).padStart(2,"0"),":",String(s).padStart(2,"0")]})}function Fu({text:e}){const t=e.split(/(```[\s\S]*?```)/g);return a.jsx("div",{className:"passage-block",children:a.jsx("div",{className:"passage-content",children:t.map((n,r)=>{if(n.startsWith("```")){const l=n.match(/^```(\w*)\n?([\s\S]*?)```$/),i=l?l[2]:n.slice(3,-3);return a.jsx("pre",{children:a.jsx("code",{children:i})},r)}return n.split(/\n\n+/).map((l,i)=>a.jsx("p",{children:l},`${r}-${i}`))})})})}function $u(e,t,n){if(!t)return null;const r=e[n];return r.passageId?t[r.passageId]??null:null}function Rm(){const[e,t]=S.useState(null),[n,r]=S.useState("intro"),[l,i]=S.useState({}),[o,s]=S.useState(0),[u,c]=S.useState(!0),[h,m]=S.useState(null),{studentName:v,setStudentName:x,addCertificate:y}=fs(),[w,N]=S.useState(v);S.useEffect(()=>{fetch("/api/plsat/3.0").then(k=>k.json()).then(k=>{t(k),c(!1)}).catch(()=>c(!1))},[]);const d=S.useCallback(()=>{if(!e)return;const k=e.questions.filter(de=>l[de.id]===de.correct).length,j=e.questions.length,P=Math.round(k/j*100),M=P>=e.passThreshold*100,z={name:w||"Anonymous Scholar",score:k,total:j,percentage:P,passed:M,plsatVersion:e.version,frameworkVersion:e.frameworkVersion,date:new Date().toISOString()};m(z),y(z),w&&x(w),r("results")},[e,l,w,y,x]),f=S.useCallback(()=>{d()},[d]),p=()=>{d()},g=()=>{i({}),s(0),r("exam")},E=S.useMemo(()=>!e||n!=="exam"?null:$u(e.questions,e.passages,o),[e,n,o]);if(u)return a.jsx("div",{className:"loading",children:"The examination board is convening..."});if(!e)return a.jsxs("div",{className:"empty-state",children:[a.jsx("h3",{children:"PLSAT Unavailable"}),a.jsx("p",{children:"Could not load the examination. Please try again."})]});if(n==="intro")return a.jsxs("div",{className:"plsat-container",children:[a.jsxs("div",{className:"plsat-intro",children:[a.jsx(pn,{size:100}),a.jsx("h1",{children:"The PLSAT"}),a.jsx("p",{className:"plsat-subtitle",children:"Paradigm Licensure Standardized Assessment Test"}),a.jsxs("p",{className:"text-muted",children:["Version ",e.version]})]}),a.jsxs("div",{className:"plsat-rules",children:[a.jsx("h3",{children:"Examination Rules"}),a.jsxs("ul",{children:[a.jsxs("li",{children:[a.jsxs("strong",{children:[e.questions.length," questions"]})," covering all aspects of the Paradigm framework"]}),a.jsxs("li",{children:[a.jsxs("strong",{children:[Math.floor(e.timeLimit/60)," minutes"]})," to complete the examination"]}),a.jsxs("li",{children:[a.jsxs("strong",{children:[e.passThreshold*100,"%"]})," required to pass and receive certification"]}),a.jsx("li",{children:"All questions are multiple choice (A through E)"}),a.jsx("li",{children:"Some questions reference a shared passage — read it carefully"}),a.jsx("li",{children:"You may navigate between questions freely"}),a.jsx("li",{children:"There is no penalty for guessing — answer every question"}),a.jsx("li",{children:"Your certificate will display the PLSAT version for posterity"})]})]}),a.jsxs("div",{className:"text-center",children:[a.jsx("div",{className:"mb-lg",children:a.jsx("input",{type:"text",className:"name-input",placeholder:"Enter your name, scholar",value:w,onChange:k=>N(k.target.value)})}),a.jsx("button",{className:"btn btn-primary btn-lg",onClick:g,children:"Begin Examination"})]})]});if(n==="exam"){const k=e.questions[o],j=Object.keys(l).length;return a.jsxs("div",{className:"plsat-container",children:[a.jsxs("div",{className:"plsat-timer",children:[a.jsx(zm,{totalSeconds:e.timeLimit,onTimeUp:f,running:!0}),a.jsxs("span",{className:"plsat-progress-text",children:["Question ",o+1," of ",e.questions.length," | ",j," answered"]})]}),a.jsxs("div",{style:{marginTop:"var(--space-lg)"},children:[E&&a.jsx(Fu,{text:E}),a.jsx(co,{number:o+1,question:k.question,scenario:k.scenario,choices:k.choices,correct:k.correct,explanation:k.explanation,selectedAnswer:l[k.id],onSelect:P=>i(M=>({...M,[k.id]:P})),showResult:!1,splitLayout:!0})]}),a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",marginTop:"var(--space-lg)"},children:[a.jsx("button",{className:"btn btn-secondary",disabled:o===0,onClick:()=>s(P=>P-1),children:"Previous"}),a.jsxs("div",{style:{display:"flex",gap:"0.5rem"},children:[j===e.questions.length&&a.jsx("button",{className:"btn btn-gold",onClick:p,children:"Submit Examination"}),a.jsx("button",{className:"btn btn-primary",disabled:o===e.questions.length-1,onClick:()=>s(P=>P+1),children:"Next"})]})]}),a.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px",marginTop:"var(--space-xl)",justifyContent:"center"},children:e.questions.map((P,M)=>a.jsx("button",{onClick:()=>s(M),style:{width:28,height:28,borderRadius:"50%",border:M===o?"2px solid var(--burgundy)":"1px solid var(--parchment-dark)",background:l[P.id]?"var(--gold-bg)":"var(--cream)",color:"var(--ink)",fontSize:"0.6875rem",cursor:"pointer",fontWeight:M===o?600:400},children:M+1},P.id))})]})}return n==="results"&&h?a.jsx("div",{className:"plsat-container",children:a.jsxs("div",{className:"plsat-results",children:[a.jsx(pn,{size:80}),a.jsxs("div",{className:`score-display ${h.passed?"passed":"failed"}`,children:[h.percentage,"%"]}),a.jsx("p",{className:"verdict",children:h.passed?"Congratulations! You have passed the PLSAT.":"The examination board regrets to inform you that you did not pass."}),a.jsxs("p",{className:"text-muted mb-lg",children:["Score: ",h.score,"/",h.total," | PLSAT v",h.plsatVersion," | ",new Date(h.date).toLocaleDateString()]}),a.jsxs("div",{style:{display:"flex",gap:"1rem",justifyContent:"center"},children:[h.passed&&a.jsx(q,{to:"/certificate",className:"btn btn-gold btn-lg",children:"View Certificate"}),a.jsx("button",{className:"btn btn-secondary",onClick:()=>r("review"),children:"Review Answers"}),a.jsx("button",{className:"btn btn-primary",onClick:()=>r("intro"),children:h.passed?"Retake":"Try Again"})]})]})}):n==="review"?a.jsxs("div",{className:"plsat-container",children:[a.jsxs("div",{className:"quiz-header",children:[a.jsx("h1",{children:"PLSAT Review"}),a.jsx("p",{className:"quiz-progress",children:h?`Score: ${h.score}/${h.total} (${h.percentage}%)`:""})]}),e.questions.map((k,j)=>{const P=$u(e.questions,e.passages,j);return a.jsxs("div",{children:[P&&a.jsx(Fu,{text:P}),a.jsx(co,{number:j+1,question:k.question,scenario:k.scenario,choices:k.choices,correct:k.correct,explanation:k.explanation,selectedAnswer:l[k.id],onSelect:()=>{},showResult:!0,splitLayout:!0})]},k.id)}),a.jsx("div",{className:"text-center mt-xl",children:a.jsx("button",{className:"btn btn-primary",onClick:()=>r("results"),children:"Back to Results"})})]}):null}function Im(){const[e,t]=S.useState(null),[n,r]=S.useState(!0);return S.useEffect(()=>{fetch("/api/reference").then(l=>l.json()).then(l=>{t(l),r(!1)}).catch(()=>r(!1))},[]),n?a.jsx("div",{className:"loading",children:"Opening the reference library..."}):e?a.jsxs("div",{className:"reference-container",children:[a.jsx("h1",{className:"mb-lg",children:"Reference Library"}),e.sections.map(l=>a.jsxs("section",{className:"reference-section",children:[a.jsx("h2",{children:l.title}),a.jsx("div",{className:"reference-grid",children:l.cards.map(i=>a.jsxs("div",{className:"ref-card",children:[i.symbol&&a.jsx("div",{className:"ref-symbol",children:i.symbol}),a.jsx("h4",{children:i.name}),a.jsx("p",{children:i.description}),i.examples&&i.examples.length>0&&a.jsx("div",{className:"ref-examples",children:i.examples.map(o=>a.jsx("span",{className:"ref-example",children:o},o))}),i.logger&&a.jsx("p",{style:{marginTop:"0.5rem"},children:a.jsx("code",{children:i.logger})}),i.when&&a.jsx("p",{className:"text-muted",style:{fontSize:"0.8125rem",marginTop:"0.25rem"},children:a.jsx("em",{children:i.when})}),i.command&&a.jsx("p",{style:{marginTop:"0.5rem"},children:a.jsx("code",{children:i.command})}),i.steps&&i.steps.length>0&&a.jsx("ol",{style:{fontSize:"0.875rem",paddingLeft:"1.25rem",marginTop:"0.5rem"},children:i.steps.map((o,s)=>a.jsx("li",{style:{marginBottom:"0.25rem"},children:o},s))})]},i.id))})]},l.id))]}):a.jsxs("div",{className:"empty-state",children:[a.jsx("h3",{children:"Reference library unavailable"}),a.jsx("p",{children:"Could not load reference data."})]})}function Om(){const{certificates:e}=fs(),t=e.filter(r=>r.passed),n=t.length>0?t.reduce((r,l)=>new Date(l.date)>new Date(r.date)?l:r):null;return n?a.jsxs("div",{className:"certificate-container",children:[a.jsx("div",{className:"no-print text-center mb-lg",children:a.jsx("button",{className:"btn btn-gold",onClick:()=>window.print(),children:"Print Certificate"})}),a.jsxs("div",{className:"certificate",children:[a.jsx(pn,{size:100,className:"cert-seal"}),a.jsx("h1",{children:"Paradigm University"}),a.jsx("p",{className:"cert-title",children:"Universitas Paradigmatica — Lux in Codice"}),a.jsx("div",{className:"gold-divider"}),a.jsx("p",{style:{fontSize:"0.875rem",color:"var(--ink-muted)",marginTop:"var(--space-lg)"},children:"This is to certify that"}),a.jsx("div",{className:"cert-name",children:n.name}),a.jsxs("p",{className:"cert-body",children:["has successfully completed the",a.jsx("br",{}),a.jsx("strong",{children:"Paradigm Licensure Standardized Assessment Test"}),a.jsx("br",{}),"and is hereby recognized as a certified Paradigm practitioner."]}),a.jsxs("p",{className:"cert-score",children:["Score: ",n.score,"/",n.total," (",n.percentage,"%)"]}),a.jsx("div",{className:"gold-divider"}),a.jsxs("dl",{className:"cert-meta",children:[a.jsxs("div",{children:[a.jsx("dt",{children:"PLSAT Version"}),a.jsxs("dd",{children:["v",n.plsatVersion]})]}),a.jsxs("div",{children:[a.jsx("dt",{children:"Framework Version"}),a.jsxs("dd",{children:["v",n.frameworkVersion]})]}),a.jsxs("div",{children:[a.jsx("dt",{children:"Date Issued"}),a.jsx("dd",{children:new Date(n.date).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})})]})]})]}),e.length>1&&a.jsxs("div",{className:"no-print mt-xl",children:[a.jsx("h3",{className:"mb-md",children:"All Attempts"}),[...e].reverse().map((r,l)=>a.jsx("div",{className:"ref-card",style:{marginBottom:"0.5rem"},children:a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsxs("span",{children:["PLSAT v",r.plsatVersion," — ",r.score,"/",r.total," (",r.percentage,"%)",r.passed?" ✓":""]}),a.jsx("span",{className:"text-muted",children:new Date(r.date).toLocaleDateString()})]})},l))]})]}):a.jsxs("div",{className:"certificate-container",children:[a.jsxs("div",{className:"empty-state",children:[a.jsx(pn,{size:80}),a.jsx("h3",{className:"mt-lg",children:"No Certificates Yet"}),a.jsx("p",{children:"Pass the PLSAT examination to earn your Paradigm certification."}),a.jsx(q,{to:"/plsat",className:"btn btn-primary mt-lg",children:"Take the PLSAT"})]}),e.length>0&&a.jsxs("div",{className:"mt-xl",children:[a.jsx("h3",{className:"mb-md",children:"Previous Attempts"}),e.map((r,l)=>a.jsx("div",{className:"ref-card",style:{marginBottom:"0.5rem"},children:a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsxs("span",{children:["PLSAT v",r.plsatVersion," — ",r.score,"/",r.total," (",r.percentage,"%)"]}),a.jsx("span",{className:"text-muted",children:new Date(r.date).toLocaleDateString()})]})},l))]})]})}function Mm(){return a.jsxs("div",{className:"app",children:[a.jsx(Zh,{version:"3.10.1"}),a.jsx("main",{className:"main-content",children:a.jsxs(Bh,{children:[a.jsx(We,{path:"/",element:a.jsx(Pm,{})}),a.jsx(We,{path:"/courses",element:a.jsx(_m,{})}),a.jsx(We,{path:"/course/:courseId",element:a.jsx(Au,{})}),a.jsx(We,{path:"/course/:courseId/:lessonId",element:a.jsx(Au,{})}),a.jsx(We,{path:"/course/:courseId/quiz/:lessonId",element:a.jsx(Tm,{})}),a.jsx(We,{path:"/plsat",element:a.jsx(Rm,{})}),a.jsx(We,{path:"/reference",element:a.jsx(Im,{})}),a.jsx(We,{path:"/certificate",element:a.jsx(Om,{})})]})})]})}hi.createRoot(document.getElementById("root")).render(a.jsx(vo.StrictMode,{children:a.jsx(Gh,{children:a.jsx(Mm,{})})}));
87
- //# sourceMappingURL=index-5HR3aNEv.js.map
86
+ `),n=n.replace(/\x00BLOCK(\d+)\x00/g,(r,l)=>t[Number(l)]),n}function Au(){const{courseId:e,lessonId:t}=uf(),n=sf(),r=Ol(d=>d.loadCourse),[l,i]=S.useState(null),[o,s]=S.useState(null),[u,c]=S.useState(!0),{isLessonCompleted:h,completeLesson:m}=Ml();if(S.useEffect(()=>{e&&(c(!0),r(e).then(d=>{if(i(d),d&&d.lessons.length>0){const f=t?d.lessons.find(p=>p.id===t):null;f?s(f):(s(d.lessons[0]),n(`/course/${e}/${d.lessons[0].id}`,{replace:!0}))}c(!1)}))},[e,t,r,n]),u)return a.jsx("div",{className:"loading",children:"Opening the textbook..."});if(!l)return a.jsxs("div",{className:"empty-state",children:[a.jsx("h3",{children:"Course not found"}),a.jsx("p",{children:"The requested course does not exist."}),a.jsx(q,{to:"/",className:"btn btn-primary mt-lg",children:"Return to Campus"})]});const v=o?l.lessons.findIndex(d=>d.id===o.id):0,x=()=>{o&&e&&m(e,o.id)},y=(d,f=!1)=>{s(d),n(`/course/${e}/${d.id}`),f&&window.scrollTo(0,0)},w=()=>{v<l.lessons.length-1&&y(l.lessons[v+1],!0)},N=()=>{v>0&&y(l.lessons[v-1],!0)};return a.jsxs("div",{className:"course-layout",children:[a.jsxs("aside",{className:"course-sidebar",children:[a.jsx("h2",{children:l.title}),a.jsx("nav",{className:"lesson-nav",children:l.lessons.map(d=>{const f=e?h(e,d.id):!1,p=(o==null?void 0:o.id)===d.id;let g="lesson-nav-item";return p&&(g+=" active"),f&&!p&&(g+=" completed"),a.jsx("button",{className:g,onClick:()=>y(d),children:d.title},d.id)})})]}),a.jsx("div",{className:"course-content",children:o&&a.jsxs(a.Fragment,{children:[a.jsx("h1",{children:o.title}),o.keyConcepts.length>0&&a.jsx("div",{className:"key-concepts",children:o.keyConcepts.map(d=>a.jsx("span",{className:"concept-tag",children:d},d))}),a.jsx("div",{className:"lesson-content",dangerouslySetInnerHTML:{__html:Ut(o.content)}}),a.jsxs("div",{className:"lesson-actions",children:[a.jsx("div",{children:v>0&&a.jsx("button",{className:"btn btn-secondary",onClick:N,children:"Previous"})}),a.jsxs("div",{style:{display:"flex",gap:"0.5rem"},children:[e&&!h(e,o.id)&&a.jsx("button",{className:"btn btn-secondary",onClick:x,children:"Mark Complete"}),o.quiz.length>0&&e&&a.jsx(q,{to:`/course/${e}/quiz/${o.id}`,className:"btn btn-gold",children:"Take Quiz"}),v<l.lessons.length-1&&a.jsx("button",{className:"btn btn-primary",onClick:w,children:"Next Lesson"})]})]})]})})]})}function co({number:e,question:t,scenario:n,choices:r,correct:l,explanation:i,selectedAnswer:o,onSelect:s,showResult:u,onAnswered:c,splitLayout:h}){const[m,v]=S.useState(null),[x,y]=S.useState(!1),w=s!==void 0,N=w?o||null:m,d=w?u:x,f=j=>{d&&!w||(w?s==null||s(j):(v(j),y(!0),c==null||c(j)))},p=N===l,g=Object.keys(r).sort(),E=a.jsxs(a.Fragment,{children:[a.jsxs("div",{className:"question-number",children:["Question ",e]}),n&&a.jsx("div",{className:"scenario",dangerouslySetInnerHTML:{__html:Ut(n)}}),a.jsx("div",{className:"question-text",dangerouslySetInnerHTML:{__html:Ut(t)}})]}),k=a.jsx("div",{className:"choices",children:g.map(j=>{let P="choice-btn";return N===j&&(P+=" selected"),d&&j===l&&(P+=" correct"),d&&N===j&&j!==l&&(P+=" incorrect"),a.jsxs("button",{className:P,onClick:()=>f(j),disabled:d&&!w,children:[a.jsxs("span",{className:"choice-letter",children:[j,"."]}),a.jsx("span",{dangerouslySetInnerHTML:{__html:Ut(r[j])}})]},j)})});return h?a.jsxs("div",{className:"question-card",children:[a.jsxs("div",{className:"question-split-layout",children:[a.jsx("div",{className:"question-content",children:E}),a.jsx("div",{className:"answer-choices",children:k})]}),d&&a.jsxs("div",{className:`explanation ${p?"":"wrong"}`,children:[a.jsx("strong",{children:p?"Correct!":`Incorrect. The answer is ${l}.`}),a.jsx("br",{}),a.jsx("span",{dangerouslySetInnerHTML:{__html:Ut(i)}})]})]}):a.jsxs("div",{className:"question-card",children:[E,k,d&&a.jsxs("div",{className:`explanation ${p?"":"wrong"}`,children:[a.jsx("strong",{children:p?"Correct!":`Incorrect. The answer is ${l}.`}),a.jsx("br",{}),a.jsx("span",{dangerouslySetInnerHTML:{__html:Ut(i)}})]})]})}function Tm(){const{courseId:e,lessonId:t}=uf(),n=Ol(g=>g.loadCourse),{recordQuiz:r,completeLesson:l,getCourseProgress:i}=Ml(),[o,s]=S.useState(null),[u,c]=S.useState(null),[h,m]=S.useState(!0),[v,x]=S.useState(!1),[y,w]=S.useState(0),N=e&&t?i(e).quizResults[t]:void 0;S.useEffect(()=>{e&&(m(!0),n(e).then(g=>{if(g&&t){const E=g.lessons.findIndex(k=>k.id===t);s(E>=0?g.lessons[E]:null),E>=0&&E<g.lessons.length-1&&c(g.lessons[E+1].id)}m(!1)}))},[e,t,n]);const[d,f]=S.useState({}),p=(g,E)=>{if(f(k=>({...k,[g]:E})),o){const k={...d,[g]:E};if(Object.keys(k).length===o.quiz.length){const j=o.quiz.filter(P=>k[P.id]===P.correct).length;if(w(j),x(!0),e&&t){const P={courseId:e,lessonId:t,score:j,total:o.quiz.length,answers:k,date:new Date().toISOString()};r(P),l(e,t)}}}};return h?a.jsx("div",{className:"loading",children:"Preparing your examination..."}):!o||o.quiz.length===0?a.jsxs("div",{className:"empty-state",children:[a.jsx("h3",{children:"No quiz available"}),a.jsx("p",{children:"This lesson does not have a quiz."}),a.jsx(q,{to:`/course/${e}`,className:"btn btn-primary mt-lg",children:"Back to Course"})]}):a.jsxs("div",{className:"quiz-container",children:[a.jsxs("div",{className:"quiz-header",children:[a.jsxs("h1",{children:[o.title," — Quiz"]}),a.jsx("p",{className:"quiz-progress",children:v?`Score: ${y}/${o.quiz.length} (${Math.round(y/o.quiz.length*100)}%)`:`${Object.keys(d).length}/${o.quiz.length} answered`}),N&&!v&&a.jsxs("p",{className:"text-muted mt-sm",children:["Previous best: ",N.score,"/",N.total]})]}),o.quiz.map((g,E)=>a.jsx(co,{number:E+1,question:g.question,choices:g.choices,correct:g.correct,explanation:g.explanation,onAnswered:k=>p(g.id,k)},g.id)),v&&a.jsxs("div",{className:"text-center mt-xl",children:[a.jsx("p",{className:"mb-lg",style:{fontSize:"1.25rem",fontFamily:"var(--font-serif)"},children:y===o.quiz.length?"Perfect score! Exemplary scholarship.":y>=o.quiz.length*.8?"Well done, scholar. You have demonstrated understanding.":"Review the material and try again. Persistence is the path to mastery."}),u?a.jsx(q,{to:`/course/${e}/${u}`,className:"btn btn-primary",children:"Next Lesson"}):a.jsx(q,{to:`/course/${e}`,className:"btn btn-primary",children:"Return to Course"})]})]})}function zm({totalSeconds:e,onTimeUp:t,running:n}){const[r,l]=S.useState(e),i=S.useCallback(()=>{t()},[t]);S.useEffect(()=>{if(!n)return;const h=setInterval(()=>{l(m=>m<=1?(clearInterval(h),i(),0):m-1)},1e3);return()=>clearInterval(h)},[n,i]);const o=Math.floor(r/60),s=r%60,u=r/e*100;let c="timer-display";return u<20?c+=" critical":u<40&&(c+=" warning"),a.jsxs("span",{className:c,children:[String(o).padStart(2,"0"),":",String(s).padStart(2,"0")]})}function Fu({text:e}){const t=e.split(/(```[\s\S]*?```)/g);return a.jsx("div",{className:"passage-block",children:a.jsx("div",{className:"passage-content",children:t.map((n,r)=>{if(n.startsWith("```")){const l=n.match(/^```(\w*)\n?([\s\S]*?)```$/),i=l?l[2]:n.slice(3,-3);return a.jsx("pre",{children:a.jsx("code",{children:i})},r)}return n.split(/\n\n+/).map((l,i)=>a.jsx("p",{children:l},`${r}-${i}`))})})})}function $u(e,t,n){if(!t)return null;const r=e[n];return r.passageId?t[r.passageId]??null:null}function Rm(){const[e,t]=S.useState(null),[n,r]=S.useState("intro"),[l,i]=S.useState({}),[o,s]=S.useState(0),[u,c]=S.useState(!0),[h,m]=S.useState(null),{studentName:v,setStudentName:x,addCertificate:y}=fs(),[w,N]=S.useState(v);S.useEffect(()=>{fetch("/api/plsat/3.0").then(k=>k.json()).then(k=>{t(k),c(!1)}).catch(()=>c(!1))},[]);const d=S.useCallback(()=>{if(!e)return;const k=e.questions.filter(de=>l[de.id]===de.correct).length,j=e.questions.length,P=Math.round(k/j*100),M=P>=e.passThreshold*100,z={name:w||"Anonymous Scholar",score:k,total:j,percentage:P,passed:M,plsatVersion:e.version,frameworkVersion:e.frameworkVersion,date:new Date().toISOString()};m(z),y(z),w&&x(w),r("results")},[e,l,w,y,x]),f=S.useCallback(()=>{d()},[d]),p=()=>{d()},g=()=>{i({}),s(0),r("exam")},E=S.useMemo(()=>!e||n!=="exam"?null:$u(e.questions,e.passages,o),[e,n,o]);if(u)return a.jsx("div",{className:"loading",children:"The examination board is convening..."});if(!e)return a.jsxs("div",{className:"empty-state",children:[a.jsx("h3",{children:"PLSAT Unavailable"}),a.jsx("p",{children:"Could not load the examination. Please try again."})]});if(n==="intro")return a.jsxs("div",{className:"plsat-container",children:[a.jsxs("div",{className:"plsat-intro",children:[a.jsx(pn,{size:100}),a.jsx("h1",{children:"The PLSAT"}),a.jsx("p",{className:"plsat-subtitle",children:"Paradigm Licensure Standardized Assessment Test"}),a.jsxs("p",{className:"text-muted",children:["Version ",e.version]})]}),a.jsxs("div",{className:"plsat-rules",children:[a.jsx("h3",{children:"Examination Rules"}),a.jsxs("ul",{children:[a.jsxs("li",{children:[a.jsxs("strong",{children:[e.questions.length," questions"]})," covering all aspects of the Paradigm framework"]}),a.jsxs("li",{children:[a.jsxs("strong",{children:[Math.floor(e.timeLimit/60)," minutes"]})," to complete the examination"]}),a.jsxs("li",{children:[a.jsxs("strong",{children:[e.passThreshold*100,"%"]})," required to pass and receive certification"]}),a.jsx("li",{children:"All questions are multiple choice (A through E)"}),a.jsx("li",{children:"Some questions reference a shared passage — read it carefully"}),a.jsx("li",{children:"You may navigate between questions freely"}),a.jsx("li",{children:"There is no penalty for guessing — answer every question"}),a.jsx("li",{children:"Your certificate will display the PLSAT version for posterity"})]})]}),a.jsxs("div",{className:"text-center",children:[a.jsx("div",{className:"mb-lg",children:a.jsx("input",{type:"text",className:"name-input",placeholder:"Enter your name, scholar",value:w,onChange:k=>N(k.target.value)})}),a.jsx("button",{className:"btn btn-primary btn-lg",onClick:g,children:"Begin Examination"})]})]});if(n==="exam"){const k=e.questions[o],j=Object.keys(l).length;return a.jsxs("div",{className:"plsat-container",children:[a.jsxs("div",{className:"plsat-timer",children:[a.jsx(zm,{totalSeconds:e.timeLimit,onTimeUp:f,running:!0}),a.jsxs("span",{className:"plsat-progress-text",children:["Question ",o+1," of ",e.questions.length," | ",j," answered"]})]}),a.jsxs("div",{style:{marginTop:"var(--space-lg)"},children:[E&&a.jsx(Fu,{text:E}),a.jsx(co,{number:o+1,question:k.question,scenario:k.scenario,choices:k.choices,correct:k.correct,explanation:k.explanation,selectedAnswer:l[k.id],onSelect:P=>i(M=>({...M,[k.id]:P})),showResult:!1,splitLayout:!0})]}),a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",marginTop:"var(--space-lg)"},children:[a.jsx("button",{className:"btn btn-secondary",disabled:o===0,onClick:()=>s(P=>P-1),children:"Previous"}),a.jsxs("div",{style:{display:"flex",gap:"0.5rem"},children:[j===e.questions.length&&a.jsx("button",{className:"btn btn-gold",onClick:p,children:"Submit Examination"}),a.jsx("button",{className:"btn btn-primary",disabled:o===e.questions.length-1,onClick:()=>s(P=>P+1),children:"Next"})]})]}),a.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px",marginTop:"var(--space-xl)",justifyContent:"center"},children:e.questions.map((P,M)=>a.jsx("button",{onClick:()=>s(M),style:{width:28,height:28,borderRadius:"50%",border:M===o?"2px solid var(--burgundy)":"1px solid var(--parchment-dark)",background:l[P.id]?"var(--gold-bg)":"var(--cream)",color:"var(--ink)",fontSize:"0.6875rem",cursor:"pointer",fontWeight:M===o?600:400},children:M+1},P.id))})]})}return n==="results"&&h?a.jsx("div",{className:"plsat-container",children:a.jsxs("div",{className:"plsat-results",children:[a.jsx(pn,{size:80}),a.jsxs("div",{className:`score-display ${h.passed?"passed":"failed"}`,children:[h.percentage,"%"]}),a.jsx("p",{className:"verdict",children:h.passed?"Congratulations! You have passed the PLSAT.":"The examination board regrets to inform you that you did not pass."}),a.jsxs("p",{className:"text-muted mb-lg",children:["Score: ",h.score,"/",h.total," | PLSAT v",h.plsatVersion," | ",new Date(h.date).toLocaleDateString()]}),a.jsxs("div",{style:{display:"flex",gap:"1rem",justifyContent:"center"},children:[h.passed&&a.jsx(q,{to:"/certificate",className:"btn btn-gold btn-lg",children:"View Certificate"}),a.jsx("button",{className:"btn btn-secondary",onClick:()=>r("review"),children:"Review Answers"}),a.jsx("button",{className:"btn btn-primary",onClick:()=>r("intro"),children:h.passed?"Retake":"Try Again"})]})]})}):n==="review"?a.jsxs("div",{className:"plsat-container",children:[a.jsxs("div",{className:"quiz-header",children:[a.jsx("h1",{children:"PLSAT Review"}),a.jsx("p",{className:"quiz-progress",children:h?`Score: ${h.score}/${h.total} (${h.percentage}%)`:""})]}),e.questions.map((k,j)=>{const P=$u(e.questions,e.passages,j);return a.jsxs("div",{children:[P&&a.jsx(Fu,{text:P}),a.jsx(co,{number:j+1,question:k.question,scenario:k.scenario,choices:k.choices,correct:k.correct,explanation:k.explanation,selectedAnswer:l[k.id],onSelect:()=>{},showResult:!0,splitLayout:!0})]},k.id)}),a.jsx("div",{className:"text-center mt-xl",children:a.jsx("button",{className:"btn btn-primary",onClick:()=>r("results"),children:"Back to Results"})})]}):null}function Im(){const[e,t]=S.useState(null),[n,r]=S.useState(!0);return S.useEffect(()=>{fetch("/api/reference").then(l=>l.json()).then(l=>{t(l),r(!1)}).catch(()=>r(!1))},[]),n?a.jsx("div",{className:"loading",children:"Opening the reference library..."}):e?a.jsxs("div",{className:"reference-container",children:[a.jsx("h1",{className:"mb-lg",children:"Reference Library"}),e.sections.map(l=>a.jsxs("section",{className:"reference-section",children:[a.jsx("h2",{children:l.title}),a.jsx("div",{className:"reference-grid",children:l.cards.map(i=>a.jsxs("div",{className:"ref-card",children:[i.symbol&&a.jsx("div",{className:"ref-symbol",children:i.symbol}),a.jsx("h4",{children:i.name}),a.jsx("p",{children:i.description}),i.examples&&i.examples.length>0&&a.jsx("div",{className:"ref-examples",children:i.examples.map(o=>a.jsx("span",{className:"ref-example",children:o},o))}),i.logger&&a.jsx("p",{style:{marginTop:"0.5rem"},children:a.jsx("code",{children:i.logger})}),i.when&&a.jsx("p",{className:"text-muted",style:{fontSize:"0.8125rem",marginTop:"0.25rem"},children:a.jsx("em",{children:i.when})}),i.command&&a.jsx("p",{style:{marginTop:"0.5rem"},children:a.jsx("code",{children:i.command})}),i.steps&&i.steps.length>0&&a.jsx("ol",{style:{fontSize:"0.875rem",paddingLeft:"1.25rem",marginTop:"0.5rem"},children:i.steps.map((o,s)=>a.jsx("li",{style:{marginBottom:"0.25rem"},children:o},s))})]},i.id))})]},l.id))]}):a.jsxs("div",{className:"empty-state",children:[a.jsx("h3",{children:"Reference library unavailable"}),a.jsx("p",{children:"Could not load reference data."})]})}function Om(){const{certificates:e}=fs(),t=e.filter(r=>r.passed),n=t.length>0?t.reduce((r,l)=>new Date(l.date)>new Date(r.date)?l:r):null;return n?a.jsxs("div",{className:"certificate-container",children:[a.jsx("div",{className:"no-print text-center mb-lg",children:a.jsx("button",{className:"btn btn-gold",onClick:()=>window.print(),children:"Print Certificate"})}),a.jsxs("div",{className:"certificate",children:[a.jsx(pn,{size:100,className:"cert-seal"}),a.jsx("h1",{children:"Paradigm University"}),a.jsx("p",{className:"cert-title",children:"Universitas Paradigmatica — Lux in Codice"}),a.jsx("div",{className:"gold-divider"}),a.jsx("p",{style:{fontSize:"0.875rem",color:"var(--ink-muted)",marginTop:"var(--space-lg)"},children:"This is to certify that"}),a.jsx("div",{className:"cert-name",children:n.name}),a.jsxs("p",{className:"cert-body",children:["has successfully completed the",a.jsx("br",{}),a.jsx("strong",{children:"Paradigm Licensure Standardized Assessment Test"}),a.jsx("br",{}),"and is hereby recognized as a certified Paradigm practitioner."]}),a.jsxs("p",{className:"cert-score",children:["Score: ",n.score,"/",n.total," (",n.percentage,"%)"]}),a.jsx("div",{className:"gold-divider"}),a.jsxs("dl",{className:"cert-meta",children:[a.jsxs("div",{children:[a.jsx("dt",{children:"PLSAT Version"}),a.jsxs("dd",{children:["v",n.plsatVersion]})]}),a.jsxs("div",{children:[a.jsx("dt",{children:"Framework Version"}),a.jsxs("dd",{children:["v",n.frameworkVersion]})]}),a.jsxs("div",{children:[a.jsx("dt",{children:"Date Issued"}),a.jsx("dd",{children:new Date(n.date).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})})]})]})]}),e.length>1&&a.jsxs("div",{className:"no-print mt-xl",children:[a.jsx("h3",{className:"mb-md",children:"All Attempts"}),[...e].reverse().map((r,l)=>a.jsx("div",{className:"ref-card",style:{marginBottom:"0.5rem"},children:a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsxs("span",{children:["PLSAT v",r.plsatVersion," — ",r.score,"/",r.total," (",r.percentage,"%)",r.passed?" ✓":""]}),a.jsx("span",{className:"text-muted",children:new Date(r.date).toLocaleDateString()})]})},l))]})]}):a.jsxs("div",{className:"certificate-container",children:[a.jsxs("div",{className:"empty-state",children:[a.jsx(pn,{size:80}),a.jsx("h3",{className:"mt-lg",children:"No Certificates Yet"}),a.jsx("p",{children:"Pass the PLSAT examination to earn your Paradigm certification."}),a.jsx(q,{to:"/plsat",className:"btn btn-primary mt-lg",children:"Take the PLSAT"})]}),e.length>0&&a.jsxs("div",{className:"mt-xl",children:[a.jsx("h3",{className:"mb-md",children:"Previous Attempts"}),e.map((r,l)=>a.jsx("div",{className:"ref-card",style:{marginBottom:"0.5rem"},children:a.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[a.jsxs("span",{children:["PLSAT v",r.plsatVersion," — ",r.score,"/",r.total," (",r.percentage,"%)"]}),a.jsx("span",{className:"text-muted",children:new Date(r.date).toLocaleDateString()})]})},l))]})]})}function Mm(){return a.jsxs("div",{className:"app",children:[a.jsx(Zh,{version:"3.10.3"}),a.jsx("main",{className:"main-content",children:a.jsxs(Bh,{children:[a.jsx(We,{path:"/",element:a.jsx(Pm,{})}),a.jsx(We,{path:"/courses",element:a.jsx(_m,{})}),a.jsx(We,{path:"/course/:courseId",element:a.jsx(Au,{})}),a.jsx(We,{path:"/course/:courseId/:lessonId",element:a.jsx(Au,{})}),a.jsx(We,{path:"/course/:courseId/quiz/:lessonId",element:a.jsx(Tm,{})}),a.jsx(We,{path:"/plsat",element:a.jsx(Rm,{})}),a.jsx(We,{path:"/reference",element:a.jsx(Im,{})}),a.jsx(We,{path:"/certificate",element:a.jsx(Om,{})})]})})]})}hi.createRoot(document.getElementById("root")).render(a.jsx(vo.StrictMode,{children:a.jsx(Gh,{children:a.jsx(Mm,{})})}));
87
+ //# sourceMappingURL=index-O8Gvb001.js.map