:root{--color-brand-green: #ccff00;--color-brand-green-hover: #b3e600;--color-brand-yellow: #ccff00;--color-ink: #f5f5f5;--color-muted: #a0a4b8;--color-surface: #1f212d;--color-canvas: #171923;--color-border: #2a2d3a;--color-success: #2E7D5B;--color-success-surface: #EAF4EF;--color-warning: #B26A1E;--color-warning-surface: #FDF3DC;--color-danger: #B3261E;--color-danger-surface: #FBEBEA;--color-text-primary: var(--color-ink);--color-text-secondary: var(--color-muted);--color-text-muted: var(--color-text-secondary);--color-primary: var(--color-brand-green);--color-text-on-brand: #171923;--color-text-on-yellow: #171923;--color-bg-page: var(--color-canvas);--color-bg-surface: var(--color-surface);--color-bg-hover: #23263a;--color-bg-active: #2a2f45;--border-width: 1px;--border-style: solid;--border-color: var(--color-border);--border-radius: 6px;--focus-ring: 2px solid var(--color-brand-green);--focus-ring-offset: 2px;--shadow-sm: 0 1px 2px rgba(21, 35, 30, .06);--shadow-md: 0 4px 12px rgba(21, 35, 30, .08);--font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-size-body: 1rem;--font-size-lesson: 1.125rem;--line-height-body: 1.65;--line-height-tight: 1.4;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--space-16: 64px;--header-height: 64px;--max-read-measure: 48em;--container-width: 1100px;--nav-width: 260px}[data-theme=light]{--color-brand-green: #0B6746;--color-brand-green-hover: #095238;--color-brand-yellow: #FFD23F;--color-ink: #15231E;--color-muted: #52625B;--color-surface: #FFFFFF;--color-canvas: #F6F8F6;--color-border: #D8E0DB;--color-text-primary: #15231E;--color-text-secondary: #52625B;--color-text-on-brand: #FFFFFF;--color-text-on-yellow: #15231E;--color-bg-page: #F6F8F6;--color-bg-surface: #FFFFFF;--color-bg-hover: #EEF2F0;--color-bg-active: #E2E9E6}html,body,#root{margin:0;padding:0;width:100%;min-height:100vh;background:var(--color-bg-page);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--font-size-body);line-height:var(--line-height-body);-webkit-font-smoothing:antialiased}body{overflow-x:hidden}a{color:var(--color-brand-green);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit;color:inherit}img,svg,video,canvas,audio,iframe,embed,object{display:block;max-width:100%}*{box-sizing:border-box}:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.sr-only,.skip-link{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0;white-space:nowrap}.skip-link:focus-visible{position:static;width:auto;height:auto;margin:0;clip:auto;overflow:visible;white-space:normal;padding:var(--space-3) var(--space-4);background:var(--color-surface);color:var(--color-text-primary);border:var(--border-width) var(--border-style) var(--color-border);z-index:1000;text-decoration:none}.page{padding:var(--space-6) var(--space-4)}.container{max-width:var(--container-width);margin:0 auto}.reading-measure{max-width:var(--max-read-measure)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0;white-space:nowrap}.section{margin-bottom:var(--space-8)}.section-title{font-size:1.25rem;font-weight:600;letter-spacing:-.01em;margin:0 0 var(--space-4) 0;color:var(--color-text-primary)}.text-muted{color:var(--color-text-secondary)}.text-center{text-align:center}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:var(--space-2)}.gap-4{gap:var(--space-4)}.button{display:inline-flex;align-items:center;justify-content:center;border:var(--border-width) var(--border-style) var(--color-border);border-radius:var(--border-radius);padding:var(--space-2) var(--space-4);font-size:var(--font-size-body);font-weight:500;cursor:pointer;text-decoration:none;transition:background-color .12s ease,border-color .12s ease}.button:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.button:disabled{opacity:.6;cursor:not-allowed}.button--primary{background:var(--color-brand-green);border-color:var(--color-brand-green);color:var(--color-text-on-brand)}.button--primary:hover:not(:disabled){background:var(--color-brand-green-hover);border-color:var(--color-brand-green-hover)}.button--quiet{background:transparent;border-color:var(--color-border);color:var(--color-brand-green)}.button--quiet:hover:not(:disabled){background:var(--color-bg-hover)}.button--destructive{background:var(--color-danger);border-color:var(--color-danger);color:var(--color-text-on-brand)}.button--destructive:hover:not(:disabled){background:#9a1f18;border-color:#9a1f18}.button--small{padding:var(--space-1) var(--space-3);font-size:.875rem}.nav{display:flex;gap:var(--space-3);align-items:center}.nav-link{padding:var(--space-2) var(--space-3);border-radius:var(--border-radius);color:var(--color-text-primary)}.nav-link:hover{background:var(--color-bg-hover);text-decoration:none}.nav-link--admin{background:var(--color-bg-active);font-weight:600}.nav-link[aria-current=page]{background:var(--color-brand-green);color:var(--color-text-on-brand)}.form-field{display:flex;flex-direction:column;gap:var(--space-2)}.form-label{font-weight:600;font-size:.95rem;color:var(--color-text-primary)}.form-required{color:var(--color-danger);margin-left:var(--space-1)}.form-input{width:100%;padding:var(--space-2) var(--space-3);border:var(--border-width) var(--border-style) var(--color-border);border-radius:var(--border-radius);background:var(--color-surface)}.form-input:focus{outline:var(--focus-ring);border-color:var(--color-brand-green)}.form-input--error{border-color:var(--color-danger)}.form-error{color:var(--color-danger);font-size:.875rem}.badge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-2);border-radius:999px;font-size:.875rem;font-weight:600;border:var(--border-width) var(--border-style) transparent}.badge--default{background:var(--color-bg-hover);color:var(--color-text-secondary)}.badge--success{background:var(--color-success-surface);color:var(--color-success)}.badge--warning{background:var(--color-warning-surface);color:var(--color-warning)}.badge--danger{background:var(--color-danger-surface);color:var(--color-danger)}.badge--info{background:var(--color-bg-active);color:var(--color-brand-green)}.role-badge{margin-left:var(--space-2)}.breadcrumbs{padding:var(--space-2) 0;font-size:.875rem;color:var(--color-text-secondary)}.breadcrumbs ol{display:flex;flex-wrap:wrap;gap:var(--space-2);margin:0;padding:0;list-style:none}.breadcrumb-separator{color:var(--color-muted)}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-16) var(--space-8);color:var(--color-text-secondary)}.empty-state-title{font-size:1.25rem;color:var(--color-text-primary);margin:var(--space-2) 0 var(--space-4) 0}.empty-state-description{max-width:32em;margin:0 auto var(--space-6) auto}.empty-state-action{display:flex;gap:var(--space-3)}.loading-state{display:flex;flex-direction:column;align-items:center;padding:var(--space-12) var(--space-4);color:var(--color-text-secondary)}.loading-spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-brand-green);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:var(--space-3)}@keyframes spin{to{transform:rotate(360deg)}}.math{margin:var(--space-4) 0;overflow-x:auto}.math katex{margin:0}.page-title{font-size:1.75rem;font-weight:700;letter-spacing:-.01em;margin:0 0 var(--space-3) 0;color:var(--color-text-primary)}.page-subtitle{color:var(--color-text-secondary);margin:0 0 var(--space-6) 0}.status-badge--published{background:var(--color-success-surface);color:var(--color-success)}.status-badge--draft{background:var(--color-bg-hover);color:var(--color-text-secondary)}.status-badge--review{background:var(--color-warning-surface);color:var(--color-warning)}.status-badge--archived{background:#efedeb;color:#7a6a5e}.data-table{width:100%;border-collapse:collapse;background:var(--color-surface);border:var(--border-width) var(--border-style) var(--color-border);border-radius:var(--border-radius)}.data-table th,.data-table td{padding:var(--space-3) var(--space-4);text-align:left;border-bottom:var(--border-width) var(--border-style) #EEF2F0}.data-table th{font-weight:600;font-size:.875rem;color:var(--color-text-secondary);background:var(--color-bg-active)}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--color-bg-hover)}.text-danger{color:var(--color-danger)}.header{border-bottom:var(--border-width) var(--border-style) var(--color-border);background:var(--color-surface);position:sticky;top:0;z-index:10}.header-inner{display:flex;align-items:center;justify-content:space-between;max-width:var(--container-width);margin:0 auto;padding:0 var(--space-4);height:var(--header-height)}.brand-wrap{display:flex;flex-direction:column;justify-content:center;margin-right:var(--space-6);line-height:1.15}.brand{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:700;font-size:1.25rem;letter-spacing:-.02em;color:var(--color-text-primary)}.brand-mark{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--color-brand-green);color:var(--color-text-on-brand);font-size:.88rem;font-weight:800;letter-spacing:.02em;line-height:1;flex-shrink:0}.brand-name{padding-top:1px}.brand-credit{font-size:.62rem;font-weight:700;color:var(--color-text-muted);letter-spacing:.02em;margin-top:2px}.brand:hover{text-decoration:none}@media(max-width:700px){.page{padding:var(--space-4) var(--space-3)}.data-table{font-size:.875rem}.data-table th,.data-table td{padding:var(--space-2) var(--space-3)}}.hero{padding:var(--space-16) 0 var(--space-12);max-width:720px}.hero .page-title{font-size:2.6rem}.hero-eyebrow{font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--color-brand-green);margin:0 0 var(--space-3) 0}.hero-lede{font-size:1.08rem;color:var(--color-text-secondary);max-width:34em;margin:0 0 var(--space-6) 0}.feature-num{display:block;font-size:.78rem;font-weight:700;letter-spacing:.1em;color:var(--color-brand-green);margin-bottom:var(--space-2)}.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--space-4);margin-top:var(--space-6)}.feature-card{background:var(--color-surface);border:var(--border-width) var(--border-style) var(--color-border);border-radius:12px;padding:var(--space-6);box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.feature-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--color-brand-green);opacity:0;transition:opacity .15s ease}.feature-card:hover:before{opacity:1}.feature-card h3{margin:0 0 var(--space-2) 0;color:var(--color-text-primary);font-size:1.05rem}.feature-card p{margin:0 0 var(--space-2) 0;color:var(--color-text-secondary);font-size:.95rem}.feature-card p:last-child{margin-bottom:0}.feature-card-link{display:block;color:inherit;text-decoration:none}.feature-card-link:hover{text-decoration:none}.card{background:var(--color-surface);border:var(--border-width) var(--border-style) var(--color-border);border-radius:12px;box-shadow:var(--shadow-sm)}.btn{display:inline-flex;align-items:center;justify-content:center;border:var(--border-width) var(--border-style) var(--color-brand-green);border-radius:var(--border-radius);padding:var(--space-2) var(--space-4);font-size:var(--font-size-body);font-weight:600;cursor:pointer;background:var(--color-brand-green);color:var(--color-text-on-brand);text-decoration:none}.btn:hover:not(:disabled){background:var(--color-brand-green-hover);border-color:var(--color-brand-green-hover)}.btn:disabled{opacity:.6;cursor:not-allowed}.feature-card{transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.feature-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-brand-green)}.feature-card h3{font-size:1.05rem}.section section{background:var(--color-surface);border:var(--border-width) var(--border-style) var(--color-border);border-radius:10px;padding:var(--space-4) var(--space-5);margin-bottom:var(--space-3)}.section section section{background:transparent;border:none;border-left:3px solid var(--color-border);border-radius:0;padding:var(--space-2) 0 var(--space-2) var(--space-4);margin-bottom:var(--space-2)}.section section section section{border-left-color:var(--color-brand-green);padding-left:var(--space-3)}.section h2,.section h3,.section h4{margin:var(--space-3) 0 var(--space-2) 0;font-weight:600}.section section h2:first-child,.section section h3:first-child{margin-top:0}.section a{color:var(--color-brand-green);font-weight:500}.section section section a,.section section section section a{display:inline-block;padding:3px 8px;margin:2px 0;border-radius:6px;transition:background-color .12s ease}.section section section a:hover,.section section section section a:hover{background:var(--color-bg-active);text-decoration:none}.lesson-paragraph{font-size:var(--font-size-lesson);line-height:1.75;margin:0 0 var(--space-4) 0;color:var(--color-text-primary)}.lesson-paragraph strong{font-weight:650}.lesson-image{display:block;max-width:100%;height:auto;margin:var(--space-5) auto;padding:var(--space-3);background:#fbfcfe;border:var(--border-width) var(--border-style) var(--color-border);border-radius:10px;box-shadow:var(--shadow-sm)}.reading-measure section h2{font-size:1.35rem;font-weight:700;letter-spacing:-.01em;margin:var(--space-8) 0 var(--space-3) 0;padding-bottom:var(--space-2);border-bottom:2px solid var(--color-border)}.reading-measure section:first-of-type h2{margin-top:0}.math-row{margin:var(--space-3) 0}.header{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:color-mix(in srgb,var(--color-surface) 88%,transparent)}.button{transition:transform .1s ease,box-shadow .15s ease,background-color .12s ease,border-color .12s ease}.button--primary{box-shadow:0 2px 6px #ccff002e}.button--primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 10px #ccff0047}.button:active:not(:disabled){transform:translateY(0)}.badge{border-radius:8px;letter-spacing:.01em}.data-table{border-radius:10px;overflow:hidden}.help-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--space-4)}.help-card{background:var(--color-surface);border:var(--border-width) var(--border-style) var(--color-border);border-radius:12px;padding:var(--space-5);box-shadow:var(--shadow-sm)}.help-card-num{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--color-brand-green);color:var(--color-text-on-brand);font-weight:800;font-size:.9rem;margin-bottom:var(--space-3)}.help-card-title{font-size:1.05rem;font-weight:700;margin:0 0 var(--space-3) 0;color:var(--color-text-primary)}.help-card-list{margin:0;padding-left:18px;color:var(--color-text-secondary);font-size:.92rem;line-height:1.8}.help-card-list li{margin-bottom:4px}.help-card-list li::marker{color:var(--color-brand-green)}.page-title{position:relative;padding-bottom:var(--space-2)}.page-title:after{content:"";display:block;width:48px;height:3px;margin-top:var(--space-2);border-radius:2px;background:var(--color-brand-green)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--color-canvas)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:var(--color-muted)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.auth-page{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 64px);padding:24px 16px;background:radial-gradient(1200px 500px at 15% -10%,rgba(11,103,70,.1),transparent 60%),radial-gradient(900px 500px at 110% 110%,rgba(11,103,70,.07),transparent 55%)}.auth-scene{perspective:1400px;width:100%;max-width:420px}.auth-flip{display:grid;transform-style:preserve-3d;transition:transform .65s cubic-bezier(.4,.1,.2,1)}.auth-flip.flipped{transform:rotateY(180deg)}.auth-face{grid-area:1 / 1;width:100%;padding:28px 26px;border-radius:18px;background:var(--color-surface, #ffffff);border:1px solid var(--color-border);box-shadow:0 12px 40px #0f172a1a;backface-visibility:hidden;-webkit-backface-visibility:hidden}.auth-face .page-title{font-size:1.4rem;margin-bottom:4px}.auth-face .page-subtitle{font-size:.88rem;margin-bottom:20px}.auth-face .form-label{font-size:.85rem}.auth-face .form-input{font-size:.92rem;padding:10px 12px}.auth-face .btn{font-size:.92rem;padding:10px 16px}.auth-face--back{transform:rotateY(180deg)}.profile-card{max-width:560px;margin:0 auto;background:var(--color-surface, #ffffff);border:1px solid var(--color-border);border-radius:18px;box-shadow:0 12px 40px #0f172a14;padding:28px 26px}.profile-card .page-title{font-size:1.4rem}.profile-card .text-muted{font-size:.85rem}.link-button{background:none;border:none;padding:0;cursor:pointer;color:var(--color-brand-green);font:inherit;text-decoration:underline}.link-button:hover{color:var(--color-text-primary)}.form-success{color:var(--color-success, #2ecc71);font-size:.875rem;background:#2ecc711f;border:1px solid rgba(46,204,113,.35);border-radius:var(--border-radius);padding:var(--space-2) var(--space-3);margin-bottom:12px}.nav{position:relative}.nav-links-desktop{display:flex;gap:var(--space-3);align-items:center}.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;width:40px;height:40px;padding:8px;background:transparent;border:var(--border-width) var(--border-style) var(--color-border);border-radius:var(--border-radius);cursor:pointer}.nav-toggle span{display:block;height:2px;width:100%;background:var(--color-text-primary);border-radius:2px}.nav-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:220px;display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:var(--space-2);background:var(--color-surface);border:var(--border-width) var(--border-style) var(--color-border);border-radius:10px;box-shadow:0 10px 30px #00000040;z-index:50}.nav-menu .nav-link{width:100%}.nav-menu .button{width:100%;justify-content:flex-start}@media(max-width:768px){.header-inner{padding:0 var(--space-3)}.brand-wrap{margin-right:var(--space-3)}.brand{font-size:1.05rem}.brand-mark{width:30px;height:30px;font-size:.95rem;border-radius:8px}.nav-links-desktop{display:none}.nav-toggle{display:flex}.page{padding:var(--space-4) var(--space-3)}.page-title{font-size:1.4rem}.hero{padding:var(--space-8) 0 var(--space-6)}.hero .page-title{font-size:1.8rem}.lesson-paragraph{font-size:1.05rem}.auth-face{padding:24px 20px}.auth-face .page-title{font-size:1.25rem}.profile-card{padding:20px 16px;border-radius:14px}.profile-card .page-title{font-size:1.2rem}.auth-scene{max-width:100%}.feature-grid{grid-template-columns:1fr}.feature-card{padding:var(--space-4)}.data-table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.data-table th,.data-table td{white-space:nowrap}.section section{padding:var(--space-3) var(--space-4)}.empty-state{padding:var(--space-8) var(--space-4)}}@media(max-width:380px){.page-title{font-size:1.25rem}.brand{font-size:.95rem}.nav-toggle{width:36px;height:36px}}.install-banner{position:fixed;left:50%;bottom:16px;transform:translate(-50%);z-index:60;display:flex;align-items:center;gap:12px;width:min(480px,calc(100vw - 24px));padding:12px 14px;background:#fff;border:1px solid var(--border, #e2e5ea);border-radius:14px;box-shadow:0 8px 30px #0000002e;font-size:.85rem}.install-banner-text{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.install-banner-text span{color:#666;font-size:.78rem}.install-banner-actions{display:flex;align-items:center;gap:8px}.install-btn{border:none;background:var(--accent, #2e7d32);color:#fff;font-weight:600;font-size:.85rem;padding:8px 16px;border-radius:9px;cursor:pointer}.install-dismiss{border:none;background:transparent;color:#999;font-size:1rem;cursor:pointer;padding:6px}@media(max-width:480px){.install-banner{bottom:10px;padding:10px 12px}}.panel{background:var(--color-surface, #fff);border:1px solid var(--color-border, #e2e5ea);border-radius:14px;padding:20px}.panel h2{margin-top:0;font-size:1.1rem}.panel h3{font-size:.98rem}.certificate{max-width:860px;margin:0 auto;border:6px double var(--color-brand-green, #0b6746);border-radius:16px;padding:14px;background:linear-gradient(135deg,#fdfdf8,#f4f8f3)}.certificate-inner{border:1px solid #d8d2b8;border-radius:10px;padding:48px 40px;text-align:center}.certificate-brand{font-size:.85rem;letter-spacing:.25em;text-transform:uppercase;color:#0b6746;font-weight:700}.certificate-heading{font-size:2rem;font-family:Georgia,serif;margin:12px 0 24px;color:#1f212d}.certificate-text{font-size:.95rem;color:#444;margin:6px 0}.certificate-name{font-family:Georgia,serif;font-size:2.1rem;color:#0b6746;margin:14px 0;border-bottom:1px solid #ccc;display:inline-block;padding:0 30px 4px}.certificate-course{font-family:Georgia,serif;font-size:1.3rem;color:#1f212d;margin:14px 0}.certificate-footer{display:flex;justify-content:space-between;align-items:flex-end;margin-top:48px;padding:0 20px}.certificate-sig{text-align:center;font-family:Georgia,serif;font-size:1rem}.certificate-sig-line{width:180px;border-bottom:1px solid #333;margin-bottom:6px}.certificate-seal{width:74px;height:74px;border-radius:50%;border:3px solid #0b6746;color:#0b6746;display:flex;align-items:center;justify-content:center;font-weight:800;letter-spacing:.08em;transform:rotate(-12deg);opacity:.8}@media(max-width:600px){.certificate-inner{padding:32px 20px}.certificate-heading,.certificate-name{font-size:1.5rem}.certificate-footer{flex-direction:column;gap:20px}}@media print{.no-print,nav,header,.skip-link{display:none!important}.certificate{border:4px double #0b6746;max-width:100%}body{background:#fff}}
