:root{--bg:#ffffff;--bg-subtle:#f8f9fa;--bg-hover:#f1f3f5;--bg-active:#e9ecef;--border:#e9ecef;--border-strong:#ced4da;--text:#111827;--text-2:#4b5563;--text-3:#9ca3af;--brand:#166534;--brand-hover:#14532d;--brand-fg:#ffffff;--brand-subtle:#f0fdf4;--gold:#a16207;--gold-bg:#fefce8;--ok:#16a34a;--ok-bg:#f0fdf4;--warn:#d97706;--warn-bg:#fffbeb;--danger:#dc2626;--danger-bg:#fef2f2;--info:#2563eb;--info-bg:#eff6ff;--sidebar-w:240px;--sidebar-bg:#fafafa;--sidebar-border:#e9ecef;--r-xs:3px;--r-sm:6px;--r:8px;--r-lg:12px;--r-xl:16px;--shadow-xs:0 1px 2px rgba(0,0,0,.04);--shadow-sm:0 1px 3px rgba(0,0,0,.07),0 2px 8px rgba(0,0,0,.04);--shadow:0 2px 6px rgba(0,0,0,.08),0 8px 24px rgba(0,0,0,.05);--shadow-lg:0 8px 24px rgba(0,0,0,.10),0 24px 64px rgba(0,0,0,.06);--font-ui:"Inter","Instrument Sans",system-ui,-apple-system,sans-serif;--font-display:"Instrument Serif",Georgia,serif;--ease:cubic-bezier(0.16,1,0.3,1);--t:150ms}[data-theme=dark]{--bg:#111111;--bg-subtle:#191919;--bg-hover:#222222;--bg-active:#2c2c2c;--border:#2a2a2a;--border-strong:#3d3d3d;--text:#f0f0f0;--text-2:#a1a1aa;--text-3:#52525b;--brand:#4ade80;--brand-hover:#22c55e;--brand-fg:#052e16;--brand-subtle:#071f10;--gold:#fbbf24;--gold-bg:#1c1500;--ok:#4ade80;--ok-bg:#052e16;--warn:#fbbf24;--warn-bg:#1c1500;--danger:#f87171;--danger-bg:#200e0e;--info:#60a5fa;--info-bg:#0c1a40;--sidebar-bg:#0f0f0f;--sidebar-border:#222222;--shadow-xs:0 1px 2px rgba(0,0,0,.35);--shadow-sm:0 1px 3px rgba(0,0,0,.45),0 2px 8px rgba(0,0,0,.28);--shadow:0 2px 6px rgba(0,0,0,.55),0 8px 24px rgba(0,0,0,.32);--shadow-lg:0 8px 24px rgba(0,0,0,.65),0 24px 64px rgba(0,0,0,.42)}*,:after,:before{box-sizing:border-box}body,html{padding:0;height:100%;background:var(--bg);font-family:var(--font-ui);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body,h1,h2,h3,h4,html{margin:0;color:var(--text)}h1,h2,h3,h4{line-height:1.2;font-weight:600}h1{font-size:20px;letter-spacing:-.3px}h2{font-size:17px;letter-spacing:-.2px}h3{font-size:14px}h4{font-size:13px}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}p{margin:0}code{font-family:Fira Code,Menlo,monospace;font-size:.875em;background:var(--bg-hover);border-radius:var(--r-xs);padding:2px 5px;color:var(--text-2)}.app-shell{overflow:hidden;background:var(--bg)}.app-shell,.sidebar{display:flex;height:100vh}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);flex-direction:column;overflow-y:auto;overflow-x:hidden}.sidebar-logo{display:flex;align-items:center;gap:9px;padding:16px 14px 10px}.sidebar-logo,.sidebar-logo:hover{text-decoration:none}.sidebar-logo-mark{width:26px;height:26px;background:var(--brand);border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-logo-mark span{font-family:var(--font-display);font-size:14px;font-weight:700;color:var(--brand-fg);line-height:1}.sidebar-logo-text{font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--text);letter-spacing:-.2px}.sidebar-section-label{padding:14px 14px 4px;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}.sidebar-item,.sidebar-section-label{-webkit-user-select:none;-moz-user-select:none;user-select:none}.sidebar-item{display:flex;align-items:center;gap:8px;padding:6px 10px;margin:1px 6px;font-size:13.5px;font-weight:500;color:var(--text-2);text-decoration:none;border-radius:var(--r-sm);cursor:pointer;transition:background var(--t) var(--ease),color var(--t) var(--ease)}.sidebar-item:hover{background:var(--bg-hover);color:var(--text);text-decoration:none}.sidebar-item.active{background:var(--bg-active);color:var(--text);font-weight:600}.sidebar-item svg{flex-shrink:0;opacity:.65}.sidebar-item.active svg{opacity:1}.sidebar-item:hover svg{opacity:.85}.sidebar-spacer{flex:1 1}.sidebar-footer{border-top:1px solid var(--sidebar-border);padding:8px;display:flex;flex-direction:column;gap:2px;position:-webkit-sticky;position:sticky;bottom:0;background:var(--sidebar-bg);z-index:1}.theme-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;font-size:13px;font-weight:500;color:var(--text-3);background:none;border:none;cursor:pointer;border-radius:var(--r-sm);font-family:var(--font-ui);text-align:left;transition:background var(--t),color var(--t)}.theme-toggle:hover{background:var(--bg-hover);color:var(--text-2)}.sidebar-user{display:flex;align-items:center;gap:9px;padding:6px 8px;border-radius:var(--r-sm);cursor:pointer;transition:background var(--t) var(--ease);-webkit-user-select:none;-moz-user-select:none;user-select:none}.sidebar-user:hover{background:var(--bg-hover)}.sidebar-avatar{width:26px;height:26px;background:var(--brand-subtle);color:var(--brand);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0;border:1px solid var(--border)}.sidebar-user-info{flex:1 1;min-width:0}.sidebar-user-name{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-role{font-size:11px;color:var(--text-3);white-space:nowrap}.app-main{height:100vh;overflow-y:auto;min-width:0;background:var(--bg)}.app-main,.page{flex:1 1;display:flex;flex-direction:column}.page-header{padding:18px 28px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:16px;flex-shrink:0;position:-webkit-sticky;position:sticky;top:0;z-index:20;background:var(--bg)}.page-header h1{font-size:17px;font-weight:600;letter-spacing:-.3px}.page-header .subtitle{font-size:13px;color:var(--text-3);margin-top:1px}.page-header-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.page-body{padding:24px 28px 56px;flex:1 1;display:flex;flex-direction:column;gap:20px}.admin-shell{display:flex;flex:1 1;min-height:0}.admin-subnav{width:198px;flex-shrink:0;border-right:1px solid var(--border);padding:12px 0;position:-webkit-sticky;position:sticky;top:0;max-height:100vh;overflow-y:auto;background:var(--bg-subtle);align-self:flex-start}.admin-subnav-section{padding:12px 14px 4px;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}.admin-subnav a{display:block;padding:6px 14px;font-size:13px;font-weight:500;color:var(--text-2);border-left:2px solid transparent;text-decoration:none;transition:color var(--t),border-color var(--t),background var(--t)}.admin-subnav a:hover{color:var(--text);background:var(--bg-hover);text-decoration:none}.admin-subnav a.active{color:var(--text);border-left-color:var(--brand);background:var(--bg-active);font-weight:600}.admin-content{flex:1 1;padding:24px 28px 56px;overflow-y:auto;min-width:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:6px 14px;border-radius:var(--r-sm);border:1px solid var(--border-strong);font-family:var(--font-ui);font-size:13.5px;font-weight:500;cursor:pointer;transition:background var(--t),border-color var(--t),color var(--t),box-shadow var(--t);white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:var(--bg);color:var(--text);box-shadow:var(--shadow-xs)}.btn,.btn:hover{text-decoration:none}.btn:hover{background:var(--bg-hover)}.btn:active{transform:translateY(.5px)}.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.btn:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.btn.primary{background:var(--brand);color:var(--brand-fg);border-color:var(--brand);box-shadow:none}.btn.primary:hover{background:var(--brand-hover);border-color:var(--brand-hover)}.btn.ghost{background:transparent;border-color:transparent;box-shadow:none}.btn.ghost:hover{background:var(--bg-hover);border-color:var(--border)}.btn.danger-btn{background:var(--danger-bg);color:var(--danger);border-color:var(--danger)}.btn.danger-btn:hover{background:var(--danger);color:white}.btn.sm{padding:4px 10px;font-size:12.5px}.btn.lg{padding:9px 20px;font-size:15px;border-radius:var(--r)}.btn.secondary{background:transparent;border-color:var(--border-strong);color:var(--text-2);box-shadow:none}.btn.secondary:hover{background:var(--bg-hover);color:var(--text)}.btn.gold{background:var(--gold-bg);color:var(--gold);border-color:var(--gold)}.btn.gold:hover{background:var(--gold);color:white}input:not([type=checkbox]):not([type=radio]),select,textarea{width:100%;padding:7px 10px;border:1px solid var(--border-strong);border-radius:var(--r-sm);font-size:13.5px;font-family:var(--font-ui);background:var(--bg);color:var(--text);transition:border-color var(--t),box-shadow var(--t);-moz-appearance:none;appearance:none;-webkit-appearance:none}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(22,101,52,.14)}[data-theme=dark] input:focus,[data-theme=dark] select:focus,[data-theme=dark] textarea:focus{box-shadow:0 0 0 3px rgba(74,222,128,.16)}input::placeholder,textarea::placeholder{color:var(--text-3)}textarea{resize:vertical;min-height:80px}label{display:block;font-size:12.5px;font-weight:500;color:var(--text-2);margin-bottom:5px}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field:last-child{margin-bottom:0}.card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;transition:border-color var(--t),box-shadow var(--t),transform var(--t);display:flex;flex-direction:column;box-shadow:var(--shadow-xs);cursor:pointer}.card,.card:hover{text-decoration:none;color:inherit}.card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.card .thumb,.card-thumb{width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--bg-hover);display:block;flex-shrink:0}.card-body{padding:14px 16px 16px;display:flex;flex-direction:column;gap:7px;flex:1 1}.card-title{font-size:14px;font-weight:600;color:var(--text);line-height:1.3}.card-desc{font-size:13px;color:var(--text-3);line-height:1.45}.card-meta{font-size:12px;color:var(--text-3);margin-top:auto}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:12px;gap:12px}.stat-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--shadow-xs);display:flex;flex-direction:column;gap:5px}.stat-label{font-size:11px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}.stat-value{font-size:28px;font-weight:700;color:var(--text);line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.5px}.stat-delta{font-size:12px;color:var(--ok);font-weight:500}.stat-delta.neg{color:var(--danger)}.panel{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px 20px;box-shadow:var(--shadow-xs)}.data-table{width:100%;border-collapse:collapse;font-size:13.5px}.data-table th{text-align:left;padding:8px 12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text-3);background:var(--bg-subtle)}.data-table td,.data-table th{border-bottom:1px solid var(--border)}.data-table td{padding:10px 12px;vertical-align:middle;color:var(--text-2)}.data-table td:first-child{color:var(--text);font-weight:500}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td,.pill{background:var(--bg-hover)}.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:600;color:var(--text-2);border:1px solid var(--border);letter-spacing:.01em}.pill.green{background:var(--ok-bg);color:var(--ok)}.pill.gold,.pill.green{border-color:transparent}.pill.gold{background:var(--gold-bg);color:var(--gold)}.pill.red{background:var(--danger-bg);color:var(--danger)}.pill.blue,.pill.red{border-color:transparent}.pill.blue{background:var(--info-bg);color:var(--info)}.pill.orange,.pill.warn{background:var(--warn-bg);color:var(--warn);border-color:transparent}.grid,.grid-3{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:16px;gap:16px}.grid-4{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:14px;gap:14px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.between{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:16px}.muted{color:var(--text-3)}.text-sm{font-size:13px}.text-xs{font-size:11.5px}.alert{padding:10px 14px;border-radius:var(--r-sm);font-size:13.5px;display:flex;align-items:flex-start;gap:8px}.alert.error{background:var(--danger-bg);color:var(--danger)}.alert.error,.alert.success{border:1px solid var(--border)}.alert.success{background:var(--ok-bg);color:var(--ok)}.alert.warn{background:var(--warn-bg);color:var(--warn)}.alert.info,.alert.warn{border:1px solid var(--border)}.alert.info{background:var(--info-bg);color:var(--info)}.error{background:var(--danger-bg);color:var(--danger)}.error,.notice{border:1px solid var(--border-strong);padding:10px 14px;border-radius:var(--r-sm);font-size:13.5px}.notice{background:var(--ok-bg);color:var(--ok)}.progress{height:5px;border-radius:999px;background:var(--bg-active);overflow:hidden}.progress>span{display:block;height:100%;background:var(--brand);border-radius:999px;transition:width .4s var(--ease)}.learn-shell{display:grid;grid-template-columns:1fr 290px;flex:1 1;min-height:0}.learn-main{padding:24px 28px;gap:18px}.learn-aside,.learn-main{overflow-y:auto;display:flex;flex-direction:column}.learn-aside{border-left:1px solid var(--border);background:var(--bg-subtle)}.learn-aside-header{padding:14px 16px 10px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text-3);position:-webkit-sticky;position:sticky;top:0;background:var(--bg-subtle)}.learn-aside-header,.lesson-item{border-bottom:1px solid var(--border)}.lesson-item{display:flex;align-items:center;gap:9px;padding:9px 16px;font-size:13px;color:var(--text-2);text-decoration:none;transition:background var(--t)}.lesson-item:hover{background:var(--bg-hover);text-decoration:none;color:var(--text)}.lesson-item.active{background:var(--bg-active);color:var(--text);font-weight:600}.lesson-item .check{color:var(--ok);font-size:12px;flex-shrink:0}.lesson-list a{display:block;padding:9px 12px;border-radius:var(--r-sm);color:var(--text-2);font-size:13px;text-decoration:none;transition:background var(--t)}.lesson-list a:hover{background:var(--bg-hover);text-decoration:none;color:var(--text)}.lesson-list a.active{background:var(--bg-active);font-weight:600;color:var(--text)}.check{color:var(--ok);font-weight:700}.video-wrap{position:relative;aspect-ratio:16/9;background:#000;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow)}.video-wrap img,.video-wrap video{width:100%;height:100%;object-fit:contain;display:block}.choice{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border:1px solid var(--border);border-radius:var(--r);cursor:pointer;background:var(--bg);transition:border-color var(--t),background var(--t);font-size:14px}.choice:hover{border-color:var(--brand);background:var(--brand-subtle)}.choice.correct{border-color:var(--ok);background:var(--ok-bg)}.choice.wrong{border-color:var(--danger);background:var(--danger-bg)}.choice input{width:auto;margin-top:3px;flex-shrink:0}.login-page{min-height:100vh;display:flex;align-items:stretch;background:var(--bg)}.login-brand-pane{width:40%;background:var(--brand);flex-direction:column;padding:48px;gap:28px}.login-brand-icon,.login-brand-pane{display:flex;align-items:center;justify-content:center}.login-brand-icon{width:56px;height:56px;background:rgba(255,255,255,.15);border-radius:15px}.login-brand-icon span{font-family:var(--font-display);font-size:28px;font-weight:700;color:white;line-height:1}.login-brand-copy{text-align:center}.login-brand-copy h2{font-family:var(--font-display);font-size:26px;color:white;margin-bottom:10px;letter-spacing:-.3px}.login-brand-copy p{font-size:14.5px;color:rgba(255,255,255,.72);line-height:1.65;max-width:260px;margin:0 auto}.login-form-pane{flex:1 1;display:flex;align-items:center;justify-content:center;padding:48px 32px}.login-box{width:100%;max-width:400px}.login-box .eyebrow{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--brand);margin-bottom:8px}.login-box h1{font-size:24px;font-weight:700;letter-spacing:-.5px;margin-bottom:4px}.login-box .tagline{color:var(--text-3);font-size:14px;margin-bottom:32px}@media (max-width:640px){.login-brand-pane{display:none}.login-form-pane{align-items:flex-start;padding:56px 20px 32px}}.demo-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px;margin-top:10px}.stub-panel{background:var(--bg-subtle);border:1px dashed var(--border-strong);border-radius:var(--r-lg);padding:20px;color:var(--text-3);font-size:13.5px}.stub-panel h3{color:var(--text-3);font-size:14px}.search-bar{display:flex;align-items:center;gap:8px;background:var(--bg-subtle);border:1px solid var(--border);border-radius:var(--r-lg);padding:6px 12px 6px 8px;max-width:380px}.search-bar input{flex:1 1;border:none;background:transparent;outline:none;box-shadow:none;font-size:13.5px;padding:0;width:auto}.search-bar input:focus{box-shadow:none}.search-bar svg{flex-shrink:0;color:var(--text-3)}.filter-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.filter-row select{width:auto;min-width:140px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:64px 32px;text-align:center;gap:12px;color:var(--text-3)}.empty-state h3{color:var(--text-2);font-size:15px}.empty-state p{font-size:13.5px;max-width:280px}@media (max-width:768px){:root{--sidebar-w:0px}.sidebar{display:none}.learn-shell{grid-template-columns:1fr}.learn-aside{display:none}.page-body{padding:16px 16px 48px}.page-header{padding:14px 16px 12px}.admin-content{padding:16px 16px 48px}}