@import"https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700;800&family=Outfit:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500&display=swap";@import"https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;0,6..72,600;1,6..72,400&family=Hanken+Grotesk:wght@400;500;600;700&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=Space+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-ease:initial}}}@layer theme{:root,:host{--font-mono:"IBM Plex Mono", ui-monospace, monospace;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--radius-xs:.125rem;--radius-sm:.375rem;--radius-lg:.75rem;--radius-xl:.75rem;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer utilities{.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.w-10{width:calc(var(--spacing) * 10)}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:.75rem}.rounded-md{border-radius:.5rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-border{border-color:var(--ds-border)}.bg-card{background-color:var(--ds-card)}.bg-destructive{background-color:var(--ds-destructive)}.bg-muted{background-color:var(--ds-muted)}.bg-primary,.bg-primary\/10{background-color:var(--ds-primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--ds-primary) 10%,transparent)}}.bg-success\/10{background-color:var(--ds-success)}@supports (color:color-mix(in lab,red,red)){.bg-success\/10{background-color:color-mix(in oklab,var(--ds-success) 10%,transparent)}}.bg-transparent{background-color:#0000}.bg-warning\/10{background-color:var(--ds-warning)}@supports (color:color-mix(in lab,red,red)){.bg-warning\/10{background-color:color-mix(in oklab,var(--ds-warning) 10%,transparent)}}.p-6{padding:calc(var(--spacing) * 6)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.pt-0{padding-top:calc(var(--spacing) * 0)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-card-foreground{color:var(--ds-card-foreground)}.text-destructive-foreground{color:var(--ds-destructive-foreground)}.text-muted-foreground{color:var(--ds-muted-foreground)}.text-primary{color:var(--ds-primary)}.text-primary-foreground{color:var(--ds-primary-foreground)}.text-success{color:var(--ds-success)}.text-warning{color:var(--ds-warning)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--ds-background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media (hover:hover){.hover\:bg-destructive\/90:hover{background-color:var(--ds-destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--ds-destructive) 90%,transparent)}}.hover\:bg-muted:hover{background-color:var(--ds-muted)}.hover\:bg-primary\/90:hover{background-color:var(--ds-primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--ds-primary) 90%,transparent)}}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--ds-ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}}:root{--ds-background:#f0f2f8;--ds-foreground:#1e1b3a;--ds-card:#fff;--ds-card-foreground:#1e1b3a;--ds-muted:#f4f5fa;--ds-muted-foreground:#6b6b8d;--ds-border:#e4e4f0;--ds-input:#f4f5fa;--ds-ring:#6c3ae0;--ds-primary:#6c3ae0;--ds-primary-foreground:#fff;--ds-destructive:#ef4444;--ds-destructive-foreground:#fff;--ds-success:#10b981;--ds-warning:#f59e0b}.dark{--ds-background:#14121f;--ds-foreground:#eceaf5;--ds-card:#1e1b2e;--ds-card-foreground:#eceaf5;--ds-muted:#262338;--ds-muted-foreground:#a0a0be;--ds-border:#2e2a42;--ds-input:#262338;--ds-ring:#8b5cf6;--ds-primary:#8b5cf6;--ds-primary-foreground:#fff;--ds-destructive:#f87171;--ds-destructive-foreground:#1e1b3a;--ds-success:#34d399;--ds-warning:#fbbf24}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ease{syntax:"*";inherits:false}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-body: #F0F2F8;--bg-surface: #FFFFFF;--bg-surface-hover: #F8F7FF;--bg-sidebar-start: #6C3AE0;--bg-sidebar-mid: #5B2CC5;--bg-sidebar-end: #4318A8;--bg-sidebar-item-hover: rgba(255, 255, 255, .12);--bg-sidebar-item-active: rgba(255, 255, 255, .2);--bg-topbar: #FFFFFF;--bg-input: #F4F5FA;--bg-banner: linear-gradient(135deg, #6C3AE0 0%, #8B5CF6 50%, #A78BFA 100%);--text-primary: #1E1B3A;--text-secondary: #6B6B8D;--text-tertiary: #A0A0BE;--text-on-purple: #FFFFFF;--text-on-purple-muted: rgba(255, 255, 255, .65);--accent-green: #10B981;--accent-green-soft: #10B98118;--accent-orange: #F59E0B;--accent-orange-soft: #F59E0B18;--accent-red: #EF4444;--accent-red-soft: #EF444418;--accent-blue: #3B82F6;--accent-blue-soft: #3B82F618;--accent-purple: #8B5CF6;--accent-purple-soft: #8B5CF618;--accent-teal: #14B8A6;--accent-teal-soft: #14B8A618;--accent-pink: #EC4899;--accent-pink-soft: #EC489918;--accent-indigo: #6366F1;--accent-indigo-soft: #6366F118;--muted: var(--bg-input);--border: #E8E5F0;--border-strong: #D4D0E3;--shadow-sm: 0 1px 3px rgba(92, 60, 180, .05);--shadow-md: 0 4px 14px rgba(92, 60, 180, .08);--shadow-lg: 0 10px 40px rgba(92, 60, 180, .12);--shadow-card: 0 2px 8px rgba(92, 60, 180, .06);--radius: 14px;--radius-sm: 10px;--radius-xs: 6px;--sidebar-w: 210px;font-size:14px}[data-theme=dark]{--bg-body: #0E0B1E;--bg-surface: #1A1633;--bg-surface-hover: #221E40;--bg-sidebar-start: #1A1633;--bg-sidebar-mid: #14112A;--bg-sidebar-end: #0E0B1E;--bg-sidebar-item-hover: rgba(139, 92, 246, .15);--bg-sidebar-item-active: rgba(139, 92, 246, .25);--bg-topbar: #1A1633;--bg-input: #14112A;--bg-banner: linear-gradient(135deg, #4C1D95 0%, #6D28D9 50%, #7C3AED 100%);--text-primary: #E8E5F5;--text-secondary: #9892B5;--text-tertiary: #5E5880;--text-on-purple: #FFFFFF;--text-on-purple-muted: rgba(255, 255, 255, .55);--accent-green: #34D399;--accent-green-soft: #34D39920;--accent-orange: #FBBF24;--accent-orange-soft: #FBBF2420;--accent-red: #F87171;--accent-red-soft: #F8717120;--accent-blue: #60A5FA;--accent-blue-soft: #60A5FA20;--accent-purple: #A78BFA;--accent-purple-soft: #A78BFA20;--accent-teal: #2DD4BF;--accent-teal-soft: #2DD4BF20;--accent-pink: #F472B6;--accent-pink-soft: #F472B620;--accent-indigo: #818CF8;--accent-indigo-soft: #818CF820;--border: #2A2548;--border-strong: #3D3660;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 14px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .5);--shadow-card: 0 2px 8px rgba(0, 0, 0, .3)}body{font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg-body);color:var(--text-primary);line-height:1.5;transition:background .5s ease,color .3s ease}@keyframes spin{to{transform:rotate(360deg)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}:root{--topbar-h: 68px}.layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-w);background:linear-gradient(180deg,var(--bg-sidebar-start),var(--bg-sidebar-mid),var(--bg-sidebar-end));display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;overflow:hidden;transition:width .22s cubic-bezier(.4,0,.2,1)}.layout.sidebar-is-collapsed{--sidebar-w: 60px}.layout.sidebar-is-collapsed .sidebar-brand,.layout.sidebar-is-collapsed .nav-group-label,.layout.sidebar-is-collapsed .nav-label{display:none}.layout.sidebar-is-collapsed .sidebar-header{justify-content:center;padding:16px 8px}.layout.sidebar-is-collapsed .nav-item{justify-content:center;padding:10px}.sidebar-toggle{flex-shrink:0;width:100%;padding:10px;background:none;border:none;border-top:1px solid rgba(255,255,255,.1);color:#ffffff73;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:color .2s,background .2s}.sidebar-toggle:hover{color:#fff;background:#ffffff1a}.sidebar-toggle svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;transition:transform .22s cubic-bezier(.4,0,.2,1)}.layout.sidebar-is-collapsed .sidebar-toggle svg{transform:rotate(180deg)}.sidebar:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 20% 20%,rgba(255,255,255,.06) 0%,transparent 50%);pointer-events:none}.sidebar-header{padding:10px 16px;border-bottom:1px solid rgba(255,255,255,.1);display:flex;align-items:center;gap:12px;position:relative}.sidebar-logo-icon{width:42px;height:42px;background:#fff3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;border:1px solid rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-logo-icon svg{width:22px;height:22px;stroke:#fff}.sidebar-brand{display:flex;flex-direction:column}.sidebar-logo{display:block;font-family:Outfit,sans-serif;font-size:20px;font-weight:800;color:var(--text-on-purple);line-height:1.2}.sidebar-subtitle{font-size:11px;font-weight:500;color:var(--text-on-purple-muted);letter-spacing:.5px}.sidebar-nav{flex:1;padding:12px 8px;overflow-y:auto;position:relative}.sidebar-nav::-webkit-scrollbar{width:0}.nav-group-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:2px;color:var(--text-on-purple-muted);padding:16px 10px 6px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;color:#ffffffbf;text-decoration:none;font-size:14px;font-weight:500;transition:all .2s ease;cursor:pointer;position:relative}.nav-item:hover{background:var(--bg-sidebar-item-hover);color:var(--text-on-purple)}.nav-item.active{background:var(--bg-sidebar-item-active);color:var(--text-on-purple);font-weight:600}.nav-item.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:20px;background:#fff;border-radius:0 3px 3px 0}.nav-icon{width:20px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.nav-icon svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.nav-badge{margin-left:auto;background:#ffffff40;padding:1px 8px;border-radius:10px;font-size:10px;font-weight:800;color:var(--text-on-purple)}.nav-badge.alert{background:var(--accent-orange);color:#1e1b3a}.sidebar-footer{padding:12px 16px;border-top:1px solid rgba(255,255,255,.1);display:flex;align-items:center;gap:10px;position:relative}.user-avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#f59e0b,#ef4444);border:2px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:#fff;flex-shrink:0}.user-info{flex:1;min-width:0}.user-name{display:block;font-weight:600;font-size:13px;color:var(--text-on-purple);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:11px;color:var(--text-on-purple-muted);text-transform:uppercase}.btn-logout{background:#ffffff1a;border:1px solid rgba(255,255,255,.15);color:var(--text-on-purple-muted);padding:5px 10px;border-radius:8px;cursor:pointer;font-size:11px;font-weight:600;font-family:Plus Jakarta Sans,sans-serif;transition:all .2s ease;white-space:nowrap}.btn-logout:hover{background:#fff3;color:var(--text-on-purple)}.topbar{height:68px;background:var(--bg-topbar);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 28px;gap:16px;position:relative;z-index:50;transition:background .5s ease,border-color .3s ease}.topbar-left{flex:1}.topbar-greeting{font-family:Outfit,sans-serif;font-size:18px;font-weight:700;color:var(--text-primary)}.topbar-sub{font-size:13px;color:var(--text-secondary)}.topbar-search{width:280px;position:relative}.topbar-search input{width:100%;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 14px 8px 36px;font-size:14px;color:var(--text-primary);font-family:Plus Jakarta Sans,sans-serif;transition:all .3s ease}.topbar-search input:focus{outline:none;border-color:var(--accent-purple);box-shadow:0 0 0 4px var(--accent-purple-soft)}.topbar-search input::placeholder{color:var(--text-tertiary)}.topbar-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-tertiary)}.topbar-search-icon svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.topbar-actions{display:flex;align-items:center;gap:10px}.topbar-icon-btn{width:40px;height:40px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-surface);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-secondary);transition:all .2s ease;position:relative}.topbar-icon-btn:hover{border-color:var(--accent-purple);color:var(--accent-purple)}.topbar-icon-btn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.notification-dot{position:absolute;top:8px;right:8px;width:8px;height:8px;background:var(--accent-red);border-radius:50%;border:2px solid var(--bg-topbar)}.notification-badge{position:absolute;top:5px;right:5px;min-width:16px;height:16px;padding:0 4px;background:var(--accent-red);color:#fff;border-radius:8px;border:2px solid var(--bg-topbar);font-size:9px;font-weight:700;line-height:12px;text-align:center;pointer-events:none}.notif-dropdown{position:absolute;top:calc(100% + 8px);right:0;width:320px;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 32px #00000024;z-index:500;overflow:hidden}.notif-dropdown-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;font-weight:600;font-size:13px;border-bottom:1px solid var(--border)}.notif-count-pill{background:var(--accent-red);color:#fff;border-radius:10px;font-size:11px;font-weight:700;padding:1px 7px}.notif-empty{padding:20px 16px;font-size:13px;color:var(--text-secondary);text-align:center}.notif-list{max-height:320px;overflow-y:auto}.notif-item{padding:10px 16px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s}.notif-item:last-child{border-bottom:none}.notif-item:hover{background:var(--bg-surface)}.notif-item-title{font-size:13px;font-weight:500;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notif-item-meta{display:flex;align-items:center;gap:6px}.notif-item-code{font-size:10px;color:var(--text-tertiary);font-family:monospace}.btn-icon-alert-dot{position:absolute;top:4px;right:4px;width:7px;height:7px;background:var(--accent-red);border-radius:50%;border:1.5px solid var(--bg-card, #fff);animation:pulse-dot 1.8s ease-in-out infinite;pointer-events:none}@keyframes pulse-dot{0%,to{box-shadow:0 0 #e74c3c80}50%{box-shadow:0 0 0 3px #e74c3c00}}.btn-upload{padding:9px 18px;background:linear-gradient(135deg,var(--bg-sidebar-start),var(--bg-sidebar-end));color:#fff;border:none;border-radius:var(--radius-sm);font-size:13px;font-weight:600;font-family:Plus Jakarta Sans,sans-serif;box-shadow:0 2px 8px #6c3ae04d;cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .2s ease}.btn-upload:hover{transform:translateY(-1px);box-shadow:0 4px 16px #6c3ae066}.btn-upload svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.topbar-user{position:relative}.user-menu-btn{display:flex;align-items:center;gap:9px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);padding:5px 10px 5px 5px;cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s;color:var(--text-primary)}.user-menu-btn:hover{background:var(--bg-surface-hover);border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.user-menu-btn .user-avatar{width:28px;height:28px;font-size:10px;flex-shrink:0}.user-menu-info{display:flex;flex-direction:column;align-items:flex-start;line-height:1.2}.user-menu-btn .user-name{font-size:12px;font-weight:600;color:var(--text-primary);max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu-btn .user-role{font-size:10px;color:var(--text-secondary);text-transform:capitalize}.user-menu-chevron{color:var(--text-tertiary);transition:transform .2s;flex-shrink:0}.user-menu-chevron.open{transform:rotate(180deg)}.user-dropdown{position:absolute;top:calc(100% + 8px);right:0;width:220px;background:var(--bg-surface, #fff);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 32px #0000001f;z-index:1000;overflow:hidden;animation:dropdown-in .15s ease}@keyframes dropdown-in{0%{opacity:0;transform:translateY(-4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.user-dropdown-header{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--bg-input)}.user-dropdown-header .user-avatar{width:34px;height:34px;font-size:12px;flex-shrink:0}.user-dropdown-name{font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.user-dropdown-role{font-size:11px;color:var(--text-secondary);text-transform:capitalize;margin-top:1px}.user-dropdown-sep{height:1px;background:var(--border)}.user-dropdown-item{display:flex;align-items:center;gap:9px;width:100%;padding:10px 14px;background:none;border:none;cursor:pointer;font-size:13px;color:var(--text-primary);text-align:left;transition:background .12s}.user-dropdown-item:hover{background:var(--bg-input)}.user-dropdown-item.danger{color:var(--accent-red)}.user-dropdown-item.danger:hover{background:var(--accent-red-soft)}.user-dropdown-item svg{flex-shrink:0;opacity:.7}.main-content{margin-left:var(--sidebar-w);flex:1;min-height:100vh;display:flex;flex-direction:column}.content::-webkit-scrollbar{width:5px}.content::-webkit-scrollbar-track{background:transparent}.content::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.page{padding:28px 32px;max-width:1400px;animation:slideUp .4s ease both}.page-title{font-family:Outfit,sans-serif;font-size:22px;font-weight:700;margin-bottom:6px;color:var(--text-primary)}.page-subtitle{color:var(--text-secondary);margin-bottom:24px;font-size:14px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.page-loading{padding:60px;text-align:center;color:var(--text-secondary)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--bg-sidebar-start) 0%,#8B5CF6 50%,#A78BFA 100%)}.login-card{background:var(--bg-surface);border-radius:var(--radius);width:400px;box-shadow:var(--shadow-lg);animation:slideUp .5s ease both}.login-header{text-align:center;margin-bottom:32px}.login-logo-icon{width:56px;height:56px;background:linear-gradient(135deg,var(--bg-sidebar-start),var(--bg-sidebar-end));border-radius:16px;display:flex;align-items:center;justify-content:center;margin:0 auto 16px}.login-logo-icon svg{width:28px;height:28px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.login-header h1{font-family:Outfit,sans-serif;font-size:26px;font-weight:800;color:var(--text-primary)}.login-header p{color:var(--text-secondary);margin-top:4px;font-size:14px}.login-form .form-group{margin-bottom:16px}.form-group{display:flex;flex-direction:column;gap:5px}.form-inline{display:flex;flex-direction:column;gap:10px}.form-inline .form-group{flex-direction:row;align-items:center;gap:14px}.form-inline .form-group label{flex:0 0 100px;text-align:left;margin:0;white-space:nowrap}.form-inline .form-group>select,.form-inline .form-group>input,.form-inline .form-group>span,.form-inline .form-group>div{flex:1;min-width:0}.form-group label{font-size:13px;font-weight:500;color:var(--text-primary)}input,select,textarea{background:var(--bg-input);border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;font-size:14px;font-family:Plus Jakarta Sans,sans-serif;color:var(--text-primary);transition:all .3s ease;width:100%;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent-purple);box-shadow:0 0 0 4px var(--accent-purple-soft)}input::placeholder,textarea::placeholder{color:var(--text-tertiary)}input:disabled,select:disabled,textarea:disabled{opacity:.5;cursor:not-allowed}.form-row{display:flex;gap:16px;margin-bottom:16px}.form-row .form-group{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 18px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;border:none;cursor:pointer;font-family:Plus Jakarta Sans,sans-serif;transition:all .2s ease;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn:focus-visible{outline:2px solid var(--accent-purple);outline-offset:2px}.btn-primary{background:linear-gradient(135deg,var(--bg-sidebar-start),var(--bg-sidebar-end));color:#fff;box-shadow:0 2px 8px #6c3ae04d}.btn-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 16px #6c3ae066}.btn-secondary{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){border-color:var(--accent-purple);color:var(--accent-purple)}.btn-danger{background:var(--accent-red-soft);color:var(--accent-red);border:1px solid transparent}.btn-danger:hover:not(:disabled){background:var(--accent-red);color:#fff}.btn-sm{padding:6px 16px;font-size:12px;font-weight:600;border-radius:8px;border:1px solid var(--border);background:var(--bg-surface);color:var(--text-primary);font-family:Plus Jakarta Sans,sans-serif;transition:all .2s ease}.btn-sm:hover:not(:disabled){border-color:var(--accent-purple);color:var(--accent-purple)}.btn-sm.primary{background:linear-gradient(135deg,var(--bg-sidebar-start),var(--bg-sidebar-end));color:#fff;border:none;box-shadow:0 2px 6px #6c3ae040}.btn-sm.primary:hover:not(:disabled){box-shadow:0 4px 12px #6c3ae066;transform:translateY(-1px)}.btn-sm.danger{border:1px solid var(--accent-red-soft);background:var(--accent-red-soft);color:var(--accent-red)}.btn-sm.danger:hover:not(:disabled){background:var(--accent-red);color:#fff}.btn-lg{padding:9px 18px;background:linear-gradient(135deg,var(--bg-sidebar-start),var(--bg-sidebar-end));color:#fff;border:none;border-radius:var(--radius-sm);font-size:13px;font-weight:600;font-family:Plus Jakarta Sans,sans-serif;box-shadow:0 2px 8px #6c3ae04d;cursor:pointer;transition:all .2s ease}.btn-lg:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 16px #6c3ae066}.btn-full{width:100%}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px 20px 22px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;text-decoration:none;transition:all .3s ease;box-shadow:var(--shadow-card);animation:slideUp .4s ease both}.stat-card:nth-child(1){animation-delay:.05s}.stat-card:nth-child(2){animation-delay:.1s}.stat-card:nth-child(3){animation-delay:.15s}.stat-card:nth-child(4){animation-delay:.2s}.stat-card:nth-child(5){animation-delay:.25s}.stat-card:nth-child(6){animation-delay:.3s}.stat-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.stat-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon svg{width:36px;height:36px;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.stat-icon.purple{color:var(--accent-purple)}.stat-icon.blue{color:var(--accent-blue)}.stat-icon.green{color:var(--accent-green)}.stat-icon.orange{color:var(--accent-orange)}.stat-icon.teal{color:var(--accent-teal)}.stat-icon.red{color:var(--accent-red)}.stat-info{display:flex;flex-direction:column;align-items:center;gap:2px}.stat-value{font-family:Outfit,sans-serif;font-size:28px;font-weight:800;color:var(--text-primary);line-height:1.1}.stat-label{font-size:13px;font-weight:500;color:var(--text-secondary)}.cta-banner{background:var(--bg-banner);border-radius:var(--radius);padding:28px 32px;display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;position:relative;overflow:hidden;animation:slideUp .4s ease .2s both}.cta-banner:before,.cta-banner:after{content:"";position:absolute;border-radius:50%}.cta-banner:before{width:200px;height:200px;background:#ffffff0f;top:-80px;right:-40px}.cta-banner:after{width:140px;height:140px;background:#ffffff0a;bottom:-60px;right:80px}.cta-text{position:relative;z-index:1;max-width:60%}.cta-title{font-family:Outfit,sans-serif;font-size:22px;font-weight:800;color:#fff;margin-bottom:6px}.cta-desc{font-size:14px;color:#ffffffbf;line-height:1.6}.cta-btn{position:relative;z-index:1;background:#fff;color:var(--bg-sidebar-end);border:none;padding:11px 24px;border-radius:var(--radius-sm);font-size:14px;font-weight:700;font-family:Plus Jakarta Sans,sans-serif;cursor:pointer;box-shadow:0 4px 14px #00000026;transition:all .2s ease;white-space:nowrap}.cta-btn:hover{transform:translateY(-2px);box-shadow:0 6px 20px #0003}.dashboard-sections{display:grid;grid-template-columns:1fr 1fr;gap:24px;animation:slideUp .4s ease .3s both}.dashboard-section{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card);overflow:hidden;transition:border-color .3s ease}.dashboard-section-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.dashboard-section-header h2{font-family:Outfit,sans-serif;font-size:16px;font-weight:700;color:var(--text-primary);margin:0}.dashboard-section-body{padding:16px 20px}.dashboard-section>h2{font-family:Outfit,sans-serif;font-size:16px;font-weight:700;margin:0 0 12px;padding:16px 20px 0}.dashboard-section>.data-table,.dashboard-section>.system-chips,.dashboard-section>.empty-state{padding:0 20px 16px}.system-chips{display:flex;flex-wrap:wrap;gap:8px;padding:16px 20px}.chip{background:var(--accent-purple-soft);color:var(--accent-purple);border-radius:20px;padding:6px 14px;font-size:12.5px;font-weight:600;text-decoration:none;transition:all .2s ease}.chip:hover{background:var(--accent-purple);color:#fff}.tree-browser{display:flex;gap:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-surface);overflow:hidden;min-height:400px;box-shadow:var(--shadow-sm)}.tree-col{flex:1;border-right:1px solid var(--border);display:flex;flex-direction:column;min-width:130px}.tree-col:last-child{border-right:none}.tree-col-header{padding:9px 12px;background:linear-gradient(135deg,var(--bg-sidebar-start),var(--bg-sidebar-end));border-bottom:1px solid var(--border);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#fffc}.tree-item{display:flex;flex-direction:column;padding:7px 12px;border:none;background:transparent;cursor:pointer;text-align:left;border-bottom:1px solid var(--border);transition:all .15s ease;gap:1px;color:var(--text-secondary)}.tree-item:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.tree-item.selected{background:var(--accent-purple-soft);border-left:3px solid var(--accent-purple);padding-left:9px;color:var(--text-primary)}.tree-item.no-click{cursor:default}.tree-item strong{font-size:13px;font-weight:600;font-family:var(--font-ui)}.tree-item span{font-size:12px;color:inherit;opacity:.75}.empty-col{padding:16px 12px;color:var(--text-secondary);font-size:12.5px}.role-info-icon{width:14px;height:14px;color:var(--text-tertiary);cursor:default;flex-shrink:0;transition:color .15s}.role-info-icon:hover{color:var(--accent-purple)}.role-info-popup{transform:translate(-50%) translateY(-100%);background:var(--bg-surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #0000001f,0 2px 6px #0000000f;padding:12px 14px;min-width:300px;z-index:9999;display:flex;flex-direction:column;gap:9px}.role-info-row{display:flex;align-items:center;gap:10px}.role-info-desc{font-size:12px;color:var(--text-secondary);line-height:1.4}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:7px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);cursor:pointer;transition:background .14s,color .14s,border-color .14s;padding:0;flex-shrink:0}.icon-btn svg{width:14px;height:14px}.icon-btn:hover{background:var(--bg-surface-hover);color:var(--text-primary);border-color:var(--border-hover, var(--border))}.icon-btn.danger:hover{background:var(--accent-red-soft);color:var(--accent-red);border-color:var(--accent-red)}.toggle-switch{position:relative;width:36px;height:20px;border-radius:10px;background:var(--bg-input);border:1px solid var(--border);cursor:pointer;transition:background .2s,border-color .2s;padding:0;flex-shrink:0}.toggle-switch:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--text-tertiary);transition:transform .2s,background .2s}.toggle-switch.on{background:var(--accent-green);border-color:var(--accent-green)}.toggle-switch.on:after{transform:translate(16px);background:#fff}.data-table,.table{width:100%;border-collapse:collapse;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-card)}.data-table thead tr,.table thead tr{background:linear-gradient(135deg,var(--bg-sidebar-start),var(--bg-sidebar-end))}.data-table th,.table th{padding:9px 14px;font-size:10px;font-weight:700;font-family:Plus Jakarta Sans,sans-serif;color:#fffc;letter-spacing:.07em;text-align:left;white-space:nowrap;text-transform:uppercase;border-bottom:none}.data-table td,.table td{padding:9px 14px;font-size:12px;font-weight:500;font-family:Plus Jakarta Sans,sans-serif;color:var(--text-primary);border-bottom:1px solid var(--border);vertical-align:middle}.data-table tbody tr:last-child td,.table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover td,.table tbody tr:hover td{background:var(--bg-surface-hover)}.cell-title{font-family:Outfit,sans-serif;font-size:13px;font-weight:700}.cell-code{font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:500;color:var(--accent-purple)}.cell-duration{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--text-secondary)}.cell-meta{font-size:12px;color:var(--text-tertiary)}.table-actions{display:flex;flex-direction:column;gap:4px}.actions-cell{display:flex;gap:6px;flex-wrap:wrap}.lesson-code{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--accent-purple);font-weight:500}.error-cell{max-width:200px}.error-text{color:var(--accent-red);font-size:12px}.badge{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:20px;font-size:12px;font-weight:600}.badge-gray{background:var(--bg-input);color:var(--text-secondary)}.badge-blue{background:var(--accent-blue-soft);color:#1a56c7}.badge-orange{background:var(--accent-orange-soft);color:#92400e}.badge-green{background:var(--accent-green-soft);color:#0a7a54}.badge-red{background:var(--accent-red-soft);color:#b91c1c}.badge-purple{background:var(--accent-purple-soft);color:#5b21b6}.badge-indigo{background:var(--accent-indigo-soft);color:#3730a3}.badge-teal{background:var(--accent-teal-soft);color:#0e7066}[data-theme=dark] .badge-blue{color:var(--accent-blue)}[data-theme=dark] .badge-orange{color:var(--accent-orange)}[data-theme=dark] .badge-green{color:var(--accent-green)}[data-theme=dark] .badge-red{color:var(--accent-red)}[data-theme=dark] .badge-purple{color:var(--accent-purple)}[data-theme=dark] .badge-indigo{color:var(--accent-indigo)}[data-theme=dark] .badge-teal{color:var(--accent-teal)}.badge-ready{background:var(--accent-green-soft);color:#0a7a54}.badge-draft{background:var(--accent-purple-soft);color:#6c3ae0}.badge-stub{background:var(--bg-input);color:var(--text-secondary)}.badge-generating{background:var(--accent-purple-soft);color:var(--accent-purple)}.badge-in-review{background:var(--accent-orange-soft);color:var(--accent-orange)}.badge-approved{background:var(--accent-teal-soft);color:var(--accent-teal)}.badge-published{background:var(--accent-green-soft);color:var(--accent-green)}.badge-archived{background:var(--bg-input);color:var(--text-secondary)}.badge-queued{background:var(--accent-orange-soft);color:var(--accent-orange)}.badge-running{background:var(--accent-purple-soft);color:var(--accent-purple)}.badge-completed{background:var(--accent-green-soft);color:var(--accent-green)}.badge-failed{background:var(--accent-red-soft);color:var(--accent-red)}.badge-cancelled{background:var(--bg-input);color:var(--text-secondary)}.badge-extracting,.badge-processing{background:var(--accent-orange-soft);color:var(--accent-orange)}.badge-ready:before,.badge-draft:before,.badge-approved:before,.badge-published:before,.badge-completed:before,.badge-failed:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge-running:before,.badge-generating:before,.badge-extracting:before,.badge-processing:before,.badge-queued:before,.badge-in-review:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;animation:blink 1.4s infinite}.status-pill-toggle{display:inline-flex;border-radius:20px;border:1.5px solid var(--border);overflow:hidden;font-size:11px;font-weight:600}.status-pill-toggle button{padding:3px 9px;border:none;border-right:1px solid var(--border);background:transparent;color:var(--text-secondary);cursor:pointer;font-family:inherit;font-size:11px;font-weight:600;line-height:1.5;transition:background .12s,color .12s;white-space:nowrap}.status-pill-toggle button:last-child{border-right:none}.status-pill-toggle button:hover:not(:disabled):not(.spt-active-orange):not(.spt-active-purple){background:var(--bg-hover);color:var(--text-primary)}.status-pill-toggle button.spt-active-orange{background:var(--accent-orange-soft);color:#92400e;cursor:default;opacity:1}.status-pill-toggle button.spt-active-green{background:var(--accent-green-soft);color:#0a7a54;cursor:default;opacity:1}.status-pill-toggle button.spt-active-orange:disabled,.status-pill-toggle button.spt-active-green:disabled{opacity:1}[data-theme=dark] .status-pill-toggle button.spt-active-orange{color:var(--accent-orange)}[data-theme=dark] .status-pill-toggle button.spt-active-green{color:var(--accent-green)}.cur-tag{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:8px;font-size:11px;font-weight:700;letter-spacing:.3px;text-transform:uppercase}.cur-tag-ib{background:var(--accent-blue-soft);color:var(--accent-blue)}.cur-tag-pyp{background:var(--accent-teal-soft);color:var(--accent-teal)}.cur-tag-myp{background:var(--accent-blue-soft);color:var(--accent-blue)}.cur-tag-dp{background:var(--accent-pink-soft);color:var(--accent-pink)}.cur-tag-igcse{background:var(--accent-purple-soft);color:var(--accent-purple)}.cur-tag-sat{background:var(--accent-red-soft);color:var(--accent-red)}.alert{padding:12px 16px;border-radius:var(--radius-sm);font-size:13px;margin-top:10px;font-weight:500}.alert-error{background:var(--accent-red-soft);color:var(--accent-red)}.alert-info{background:var(--accent-blue-soft);color:var(--accent-blue)}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;margin-bottom:24px;box-shadow:var(--shadow-card);transition:all .3s ease}.card:hover{box-shadow:var(--shadow-md)}.card h2{font-family:Outfit,sans-serif;font-size:16px;font-weight:700;margin-bottom:8px}.modal{position:fixed;top:20%;left:50%;transform:translate(-50%);z-index:200;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);width:560px;max-width:calc(100vw - 48px);max-height:calc(100vh - 48px);display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:modalIn .2s ease both}@keyframes modalIn{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:linear-gradient(135deg,var(--bg-sidebar-start),var(--bg-sidebar-end));border-radius:var(--radius) var(--radius) 0 0;flex-shrink:0}.modal-header h2{font-family:Plus Jakarta Sans,sans-serif;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:#ffffffe6;margin:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:999}.modal-close{background:none;border:none;font-size:20px;cursor:pointer;color:#fff9;transition:color .2s;line-height:1}.modal-close:hover{color:#fffffff2}.modal-form{padding:16px 20px;overflow-y:auto;flex:1}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}.modal .form-group{gap:3px;margin-bottom:10px}.modal .form-row{gap:10px;margin-bottom:10px}.modal .form-group label{font-size:11px}.modal input,.modal select,.modal textarea{padding:6px 10px;font-size:12px}.modal .file-input-wrapper{padding:8px 10px;gap:8px}.modal .file-input-icon{width:26px;height:26px;font-size:12px}.modal .file-input-label span:first-child{font-size:11px}.modal .file-input-label span:last-child{font-size:10px}.file-input-wrapper{position:relative;display:flex;align-items:center;gap:12px;padding:10px 14px;border:1px dashed var(--border);border-radius:var(--radius);background:var(--bg-surface);cursor:pointer;transition:border-color .2s,background .2s}.file-input-wrapper:hover{border-color:var(--accent-indigo);background:var(--bg-surface-hover)}.file-input-wrapper input[type=file]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;width:100%;height:100%}.file-input-icon{width:32px;height:32px;border-radius:6px;background:linear-gradient(135deg,var(--bg-sidebar-start),var(--bg-sidebar-end));display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:15px}.file-input-label{display:flex;flex-direction:column;gap:2px}.file-input-label span:first-child{font-size:12px;font-weight:600;color:var(--text-primary);font-family:Plus Jakarta Sans,sans-serif}.file-input-label span:last-child{font-size:11px;color:var(--text-tertiary)}.empty-state{color:var(--text-secondary)}.empty-state a{color:var(--accent-purple);text-decoration:none;font-weight:600}.empty-state a:hover{text-decoration:underline}.empty-state-large{text-align:center;padding:80px 20px;color:var(--text-secondary)}.empty-state-large p{margin-bottom:16px}.hint{color:var(--text-secondary);font-size:13px;margin-bottom:16px}.filter-bar{display:flex;align-items:center;gap:8px}.filter-bar label{font-size:13px;color:var(--text-secondary)}.filter-bar select{width:auto}.filter-panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;margin-bottom:20px;box-shadow:var(--shadow-card);display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}.filter-panel-label{display:flex;align-items:center;gap:5px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);padding-bottom:7px;white-space:nowrap;flex-shrink:0}.filter-panel-label svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.filter-divider{width:1px;height:36px;background:var(--border);align-self:flex-end;margin:0 2px 2px;flex-shrink:0}.filter-group{display:flex;flex-direction:column;gap:3px;min-width:0}.filter-group label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);white-space:nowrap}.filter-select{width:auto!important;min-width:110px;max-width:155px;padding:4px 24px 4px 8px!important;font-size:12px!important;border-radius:8px!important;height:30px;line-height:1;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-color:var(--bg-input)!important;border:1.5px solid var(--border)!important;color:var(--text-primary)!important;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236B6B8D' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 7px center!important;transition:all .2s ease;font-family:Plus Jakarta Sans,sans-serif;box-shadow:none}.filter-select:focus{border-color:var(--accent-purple)!important;box-shadow:0 0 0 3px var(--accent-purple-soft)!important;outline:none!important}.filter-select.is-active{border-color:var(--accent-purple)!important;background-color:var(--accent-purple-soft)!important;color:var(--accent-purple)!important;font-weight:600}.filter-active-count{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--accent-purple);color:#fff;font-size:9px;font-weight:700;flex-shrink:0}.filter-clear-btn{display:inline-flex;align-items:center;gap:4px;padding:0 12px;height:30px;font-size:11px;font-weight:600;border-radius:8px;border:1.5px solid var(--accent-red-soft);background:var(--accent-red-soft);color:var(--accent-red);cursor:pointer;font-family:Plus Jakarta Sans,sans-serif;transition:all .2s ease;white-space:nowrap;align-self:flex-end}.filter-clear-btn:hover{background:var(--accent-red);color:#fff;border-color:var(--accent-red)}.generation-controls{margin-top:8px}.generation-controls .form-row{align-items:flex-end}.jobs-section h2{font-family:Outfit,sans-serif;font-size:16px;font-weight:700;margin-bottom:12px}.tag{display:inline-block;padding:2px 8px;border-radius:6px;background:var(--accent-purple-soft);color:var(--accent-purple);font-size:10px;font-weight:700}.loading-screen{display:flex;align-items:center;justify-content:center;height:100vh}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent-purple);border-radius:50%;animation:spin .6s linear infinite}.outlines-list{display:flex;flex-direction:column;gap:16px}.outline-card{padding:16px}.outline-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.outline-meta{display:flex;align-items:center;gap:12px}.outline-stats{font-size:.85rem;color:var(--text-secondary)}.outline-date{font-size:.8rem;color:var(--text-secondary)}.outline-actions{display:flex;gap:8px}.outline-content{margin-top:16px;border-top:1px solid var(--border);padding-top:16px;display:flex;flex-direction:column;gap:12px}.outline-unit{background:var(--bg-input);border-radius:var(--radius-xs);padding:12px}.outline-unit-header{font-size:.95rem;margin-bottom:4px}.outline-central-idea{font-size:.82rem;color:var(--text-secondary);font-style:italic;margin:4px 0 8px}.outline-lessons{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.outline-lessons li{display:flex;align-items:baseline;gap:8px;font-size:.88rem;flex-wrap:wrap}.lesson-num{font-family:IBM Plex Mono,monospace;font-size:.75rem;font-weight:600;color:var(--accent-purple);min-width:24px}.lesson-title{flex:1}.lesson-summary{width:100%;font-size:.8rem;color:var(--text-secondary);margin:2px 0 0 32px}.lesson-gen-progress{margin-top:12px;padding:8px 0}.progress-bar-track{height:8px;background:var(--bg-input);border-radius:4px;overflow:hidden;margin-bottom:6px}.progress-bar-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--accent-purple),#C084FC);transition:width 1s ease}.progress-labels{display:flex;gap:12px;font-size:.78rem;color:var(--text-secondary);flex-wrap:wrap}.progress-labels .done{color:var(--accent-green);font-weight:600}.progress-labels .pending{color:var(--text-tertiary)}.progress-labels .failed{color:var(--accent-red);font-weight:600}.progress-labels .total{margin-left:auto;color:var(--text-tertiary)}.lesson-preview-page{padding:0;display:flex;flex-direction:column;height:100%}.preview-toolbar{display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:1px solid var(--border);background:var(--bg-surface);flex-shrink:0;flex-wrap:wrap}.preview-toolbar-center{flex:1;display:flex;align-items:center;gap:10px;min-width:0}.preview-title{font-family:Outfit,sans-serif;font-size:1rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0}.preview-body{flex:1;overflow:hidden;min-height:0;position:relative}.lesson-html-iframe{width:100%;height:100%;border:none;display:block}.preview-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-tertiary)}.notes-fab{position:fixed;bottom:28px;right:28px;z-index:100;width:48px;height:48px;border-radius:50%;background:var(--primary, #6366f1);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px #0000002e;transition:transform .15s,box-shadow .15s}.notes-fab:hover{transform:scale(1.08);box-shadow:0 6px 20px #00000038}.notes-fab-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;border-radius:9px;background:#ef4444;color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px;border:2px solid #fff}.notes-popup-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#00000059;display:flex;align-items:center;justify-content:center;padding:24px;transition:opacity .2s}.notes-popup{background:var(--bg-surface);border-radius:14px;box-shadow:0 24px 64px #00000038;display:flex;flex-direction:column;width:560px;max-width:100%;max-height:80vh;transition:transform .22s ease,opacity .22s ease;transform-origin:center center}.notes-popup-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;font-size:14px;font-weight:700;color:var(--text-primary);border-bottom:1px solid var(--border);flex-shrink:0}.notes-popup-close{background:none;border:none;cursor:pointer;color:var(--text-tertiary);display:flex;align-items:center;padding:4px;border-radius:6px}.notes-popup-close:hover{color:var(--text-primary);background:var(--bg-hover)}@media (max-width: 600px){.notes-popup-backdrop{align-items:flex-end;padding:0}.notes-popup{width:100%;max-width:100%;max-height:90vh;border-radius:18px 18px 0 0;transform-origin:bottom center}}@media (min-width: 601px) and (max-width: 900px){.notes-popup{width:90vw;max-height:75vh}}.notes-thread{flex:1;display:flex;flex-direction:column;min-height:0}.notes-header{display:none}.notes-list{flex:1;overflow-y:auto;padding:12px 0}.notes-empty{padding:20px;font-size:13px;color:var(--text-tertiary);text-align:center}.note-item{padding:10px 20px;border-bottom:1px solid var(--border)}.note-item:last-child{border-bottom:none}.note-type-rejection{background:var(--accent-red-soft, #fee2e2)}[data-theme=dark] .note-type-rejection{background:#ef44441f}.note-meta{display:flex;align-items:center;gap:6px;margin-bottom:4px;flex-wrap:wrap}.note-author{font-size:12px;font-weight:600;color:var(--text-primary)}.note-time{font-size:11px;color:var(--text-tertiary)}.note-content{font-size:13px;color:var(--text-secondary);line-height:1.5;white-space:pre-wrap}.notes-compose{padding:12px 16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px;flex-shrink:0}.notes-compose textarea{resize:vertical;font-size:13px;min-height:80px;width:100%;box-sizing:border-box}@media (max-width: 600px){.notes-popup-header{padding:14px 16px}.note-item{padding:10px 14px}.notes-compose{padding:10px 12px}.notes-compose textarea{min-height:70px;font-size:16px}.notes-fab{bottom:20px;right:16px}}.lesson-renderer{max-width:860px;margin:0 auto}.lesson-meta-bar{display:flex;gap:12px;align-items:center;margin-bottom:16px;font-size:.85rem;color:var(--text-secondary);flex-wrap:wrap}.lesson-meta-item{color:var(--text-secondary)}.lesson-summary-text{font-size:1rem;color:var(--text-secondary);margin-bottom:24px;font-style:italic}.lesson-sections{display:flex;flex-direction:column;gap:20px}.lesson-section{padding:20px 24px;border-radius:var(--radius)}.section-blue{background:var(--accent-blue-soft)}.section-indigo{background:var(--accent-purple-soft)}.section-amber{background:var(--accent-orange-soft)}.section-green{background:var(--accent-green-soft)}.section-purple{background:var(--accent-purple-soft)}.section-red{background:var(--accent-red-soft)}.section-teal{background:var(--accent-teal-soft)}.section-orange{background:var(--accent-orange-soft)}.section-title{font-family:Outfit,sans-serif;font-size:1.1rem;font-weight:700;margin:0 0 12px;display:flex;align-items:center;gap:8px;color:var(--text-primary)}.section-icon{font-size:1.2rem}.section-content{line-height:1.7}.lesson-paragraph{margin:.4rem 0}.lesson-heading{margin:1rem 0 .5rem}.lesson-list{margin:.4rem 0;padding-left:1.4rem}.lesson-equation{font-family:IBM Plex Mono,monospace;background:var(--bg-input);padding:.2rem .5rem;border-radius:.25rem;display:inline-block}.lesson-callout{display:flex;gap:8px;padding:10px 14px;border-radius:var(--radius-sm);margin:8px 0;background:var(--bg-input)}.callout-teacher_note{background:var(--accent-orange-soft)}.callout-inquiry{background:var(--accent-blue-soft)}.callout-key_idea{background:var(--accent-green-soft)}.callout-misconception{background:var(--accent-red-soft)}.callout-tip{background:var(--accent-green-soft)}.callout-warning{background:var(--accent-orange-soft)}.callout-icon{font-size:1.1rem;flex-shrink:0}.callout-text{font-size:.93rem}.lesson-widget{background:var(--accent-purple-soft);border:1px dashed var(--accent-purple);border-radius:var(--radius-sm);padding:16px;text-align:center}.widget-placeholder{display:flex;flex-direction:column;gap:6px;align-items:center;color:var(--accent-purple)}.widget-icon{font-size:1.5rem}.widget-name{font-weight:600}.widget-props{font-family:IBM Plex Mono,monospace;font-size:.75rem;color:var(--accent-purple);max-width:300px;text-align:left;white-space:pre-wrap}.lesson-image{margin:8px 0}.lesson-image img{max-width:100%;border-radius:var(--radius-sm)}.lesson-image figcaption{font-size:.82rem;color:var(--text-secondary);text-align:center;margin-top:4px}.lesson-video{position:relative;padding-top:56.25%;margin:8px 0}.lesson-video iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;border-radius:var(--radius-sm)}.lesson-vocab-ref{border-bottom:1px dashed var(--text-secondary);cursor:help}.lesson-exercise-ref{color:var(--accent-blue);font-size:.87rem;margin:4px 0}.lesson-empty{color:var(--text-tertiary);text-align:center;padding:40px}.lesson-unknown-block{color:var(--text-tertiary);font-size:.8rem;font-style:italic}.widget-question{font-weight:600;margin-bottom:10px}.widget-actions{margin-top:10px;display:flex;gap:8px}.widget-feedback{margin-top:8px;padding:8px 12px;border-radius:var(--radius-xs);font-weight:500}.feedback-correct{background:var(--accent-green-soft);color:var(--accent-green)}.feedback-wrong{background:var(--accent-red-soft);color:var(--accent-red)}.widget-mc{max-width:560px}.mc-options-list{list-style:none;padding:0;margin:0 0 8px;display:flex;flex-direction:column;gap:6px}.mc-option{display:flex;align-items:center;gap:10px;padding:10px 14px;border:2px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s ease}.mc-option:hover,.mc-option.selected{border-color:var(--accent-purple);background:var(--accent-purple-soft)}.mc-option.correct{border-color:var(--accent-green);background:var(--accent-green-soft);cursor:default}.mc-option.incorrect{border-color:var(--accent-red);background:var(--accent-red-soft);cursor:default}.mc-letter{font-weight:700;color:var(--accent-purple);min-width:20px}.mc-badge{margin-left:auto;font-weight:700}.correct-badge{color:var(--accent-green)}.wrong-badge{color:var(--accent-red)}.widget-tf .tf-buttons{display:flex;gap:12px;margin:8px 0}.tf-btn{min-width:90px;font-size:1rem;font-weight:600;padding:10px 20px;border-radius:var(--radius-sm)}.btn-success{background:var(--accent-green);color:#fff;border:2px solid var(--accent-green)}.btn-danger-tf{background:var(--accent-red);color:#fff;border:2px solid var(--accent-red)}.widget-fib .fib-template{font-size:1rem;margin-bottom:8px;font-style:italic;color:var(--text-secondary)}.fib-inputs{display:flex;flex-direction:column;gap:8px}.fib-input-row{display:flex;align-items:center;gap:10px}.fib-input{border:2px solid var(--border);border-radius:var(--radius-xs);padding:6px 10px;font-size:1rem;min-width:120px}.fib-input.input-correct{border-color:var(--accent-green);background:var(--accent-green-soft)}.fib-input.input-wrong{border-color:var(--accent-red);background:var(--accent-red-soft)}.fib-mark{font-size:.9rem;font-weight:600}.fib-mark.correct{color:var(--accent-green)}.fib-mark.wrong{color:var(--accent-red)}.widget-hundred-grid{overflow-x:auto}.hg-grid{display:grid;gap:2px;width:fit-content;margin:0 auto}.hg-cell{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:4px;font-size:.8rem;font-weight:500;cursor:pointer;background:var(--bg-surface);transition:background .1s;color:var(--text-primary)}.hg-cell:hover{background:var(--accent-purple-soft)}.hg-cell.hg-highlighted{background:var(--accent-orange-soft);border-color:var(--accent-orange);font-weight:700}.hg-cell.hg-clicked{background:var(--accent-purple);color:#fff;border-color:var(--accent-purple)}.hg-cell.hg-highlighted.hg-clicked{background:var(--accent-orange);color:#fff}.hg-legend{text-align:center;font-size:.8rem;color:var(--text-secondary);margin-top:6px}.widget-number-line{padding:12px 0}.nl-track-container{position:relative;padding:20px 10px 10px}.nl-track{position:relative;height:4px;background:var(--border);border-radius:2px;margin-bottom:20px}.nl-tick{position:absolute;transform:translate(-50%)}.nl-tick:before{content:"";display:block;width:1px;height:8px;background:var(--text-tertiary);margin:0 auto -4px}.nl-tick-label{position:absolute;top:8px;left:50%;transform:translate(-50%);font-size:.7rem;color:var(--text-secondary);white-space:nowrap}.nl-mark{position:absolute;top:-4px;transform:translate(-50%);width:12px;height:12px;border-radius:50%;background:var(--accent-purple)}.nl-pointer{position:absolute;top:-8px;transform:translate(-50%);width:20px;height:20px;border-radius:50%;background:var(--accent-orange);border:2px solid var(--accent-orange);pointer-events:none}.nl-slider{position:absolute;top:16px;left:10px;right:10px;width:calc(100% - 20px);opacity:0;cursor:pointer;height:24px}.nl-value-display{text-align:center;font-size:.9rem;color:var(--text-primary);margin-top:4px}.widget-tens-ones{padding:8px 0}.to-sliders{display:flex;gap:24px;flex-wrap:wrap;margin:12px 0}.to-group{flex:1;min-width:120px}.to-group label{display:block;font-weight:600;margin-bottom:6px;font-size:.9rem}.to-group input[type=range]{width:100%}.to-blocks{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px;min-height:32px}.to-block{display:flex;align-items:center;justify-content:center;border-radius:4px;font-size:.75rem;font-weight:700}.ten-block{width:44px;height:28px;background:var(--accent-purple);color:#fff}.one-block{width:24px;height:24px;background:var(--accent-orange);color:#fff}.to-result{text-align:center;padding:10px;border-radius:var(--radius-sm);background:var(--bg-input);border:1px solid var(--border);font-size:1rem;margin-top:8px}.result-correct{background:var(--accent-green-soft);border-color:var(--accent-green);color:var(--accent-green)}.result-pending{background:var(--accent-orange-soft);border-color:var(--accent-orange)}.lessons-layout{display:flex;height:calc(100vh - var(--topbar-h));overflow:hidden;animation:none;padding:0}.lessons-tree{width:248px;min-width:248px;border-right:1px solid var(--border);background:var(--bg-surface);overflow-y:auto;display:flex;flex-direction:column}.lessons-tree::-webkit-scrollbar{width:4px}.lessons-tree::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}.tree-header{padding:11px 14px 9px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--text-tertiary);border-bottom:1px solid var(--border);flex-shrink:0}.tree-list{padding:4px 0}.tree-row{display:flex;align-items:center;gap:5px;padding:5px 8px;cursor:pointer;border-radius:7px;margin:1px 5px;color:var(--text-secondary);font-size:12.5px;font-weight:500;transition:background .12s,color .12s;-webkit-user-select:none;user-select:none}.tree-row:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.tree-row.has-lessons{color:#3db887}[data-theme=dark] .tree-row.has-lessons{color:#6ee7b7}.tree-row.has-lessons:hover{color:#3db887}[data-theme=dark] .tree-row.has-lessons:hover{color:#6ee7b7}.tree-row.selected{background:var(--accent-purple-soft);color:#5b21b6;font-weight:600}[data-theme=dark] .tree-row.selected{color:var(--accent-purple)}.tree-row.unit-row.selected{background:var(--accent-purple);color:#fff}.tree-chevron{width:13px;height:13px;flex-shrink:0;opacity:.45;transition:transform .15s ease}.tree-chevron.open{transform:rotate(90deg);opacity:.75}.tree-chevron svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.tree-row.selected .tree-chevron{opacity:.8}.tree-row.unit-row .tree-chevron{display:none}.tree-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-label-code{font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:600;opacity:.6;margin-right:4px}.tree-count{font-size:10px;font-weight:700;padding:1px 6px;border-radius:10px;background:var(--bg-input);color:var(--text-tertiary);flex-shrink:0}.tree-row.unit-row.has-lessons .tree-count{background:var(--accent-green-soft);color:#0a7a54}[data-theme=dark] .tree-row.unit-row.has-lessons .tree-count{color:#6ee7b7}.tree-row.unit-row.selected .tree-count{background:#ffffff40;color:#ffffffe6}.tree-loading{padding:16px 14px;font-size:12px;color:var(--text-tertiary)}.lessons-tree-toggle{display:none;align-items:center;gap:6px;padding:6px 12px 6px 8px;margin-bottom:14px;border:1px solid var(--border);border-radius:8px;background:var(--bg-surface);color:var(--text-secondary);font-size:12.5px;font-weight:600;cursor:pointer;transition:background .12s,color .12s;width:fit-content}.lessons-tree-toggle:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.lessons-tree-toggle svg{width:15px;height:15px;flex-shrink:0}.lessons-tree-backdrop{display:none}.lessons-main{flex:1;overflow-y:auto;background:var(--bg-body);padding:24px 28px}.lessons-main-header{margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border)}.lessons-topic-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--accent-purple);opacity:.75;margin-bottom:4px}.lessons-unit-title{font-family:Outfit,sans-serif;font-size:20px;font-weight:700;color:var(--text-primary);margin-bottom:6px}.lessons-unit-meta{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary);flex-wrap:wrap}.lessons-unit-meta .lesson-code{font-size:11px}.lessons-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:60%;min-height:280px;color:var(--text-tertiary);text-align:center;gap:12px}.lessons-empty-icon svg{width:44px;height:44px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;opacity:.3}.lessons-empty p{font-size:14px;color:var(--text-secondary);margin:0}.lesson-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.images-folder-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}@media (max-width: 1080px){.images-folder-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 640px){.images-folder-grid{grid-template-columns:1fr}}.lesson-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:16px;padding:24px 24px 18px;display:flex;flex-direction:column;gap:14px;position:relative;overflow:hidden;box-shadow:0 1px 3px #0000000f,0 1px 2px #0000000a;transition:box-shadow .2s,border-color .2s,transform .18s;animation:slideUp .3s ease both}.lesson-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;border-radius:16px 16px 0 0;background:var(--border)}.lesson-card.menu-open,.efx-app .lesson-card.menu-open{overflow:visible;position:relative;z-index:20}.lesson-card.status-stub:before{background:var(--text-disabled)}.lesson-card.status-generating:before{background:linear-gradient(90deg,var(--accent-blue),var(--accent-purple),var(--accent-blue));background-size:200%;animation:shimmerStrip 2s linear infinite}.lesson-card.status-draft:before{background:linear-gradient(90deg,var(--accent-orange),#fcd34d)}.lesson-card.status-ui_review:before{background:linear-gradient(90deg,var(--accent-indigo),var(--accent-purple))}.lesson-card.status-in_review:before{background:linear-gradient(90deg,var(--accent-blue),var(--accent-indigo))}.lesson-card.status-approved:before{background:linear-gradient(90deg,var(--accent-teal),var(--accent-green))}.lesson-card.status-published:before{background:linear-gradient(90deg,var(--accent-green),#4ade80)}.lesson-card.status-archived:before{background:var(--text-disabled);opacity:.4}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes shimmerStrip{0%{background-position:200% center}to{background-position:-200% center}}.lesson-card:nth-child(1){animation-delay:.03s}.lesson-card:nth-child(2){animation-delay:.06s}.lesson-card:nth-child(3){animation-delay:.09s}.lesson-card:nth-child(4){animation-delay:.12s}.lesson-card:hover{box-shadow:0 8px 24px #0000001a,0 2px 6px #0000000f;border-color:var(--accent-purple);transform:translateY(-3px)}[data-theme=dark] .lesson-card{box-shadow:0 1px 3px #0000004d}[data-theme=dark] .lesson-card:hover{box-shadow:0 8px 28px #0006}.lesson-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.lesson-card-code{font-family:IBM Plex Mono,monospace;font-size:11px;font-weight:600;color:var(--text-tertiary);letter-spacing:.02em}.lesson-card-title{font-family:Outfit,sans-serif;font-size:17px;font-weight:700;color:var(--text-primary);line-height:1.4;flex:1}.lesson-card-duration{display:flex;align-items:center;gap:4px;font-size:13px;font-weight:500;color:var(--text-tertiary)}.lesson-card-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-top:14px;margin-top:2px}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);cursor:pointer;transition:background .15s,color .15s,border-color .15s;flex-shrink:0;padding:0}.btn-icon:hover:not(:disabled){background:var(--bg-surface);border-color:var(--accent-purple);color:var(--accent-purple)}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.btn-icon-danger:hover:not(:disabled){background:var(--accent-red-soft);border-color:var(--accent-red);color:var(--accent-red)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.topbar-hamburger{display:none;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--text-secondary);cursor:pointer;flex-shrink:0;transition:all .2s ease}.topbar-hamburger:hover{border-color:var(--accent-purple);color:var(--accent-purple)}.mobile-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:200;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.gen-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}@media (max-width: 1024px){:root{--sidebar-w: 60px}.sidebar-brand,.nav-group-label,.user-info,.btn-logout span{display:none}.sidebar-header{justify-content:center;padding:16px 8px}.nav-item{justify-content:center;padding:10px}.nav-item span:not(.nav-icon){display:none}.sidebar-footer{justify-content:center;padding:12px 8px}}@media (max-width: 900px){.stats-grid{grid-template-columns:1fr 1fr}.gen-grid{grid-template-columns:1fr}}@media (max-width: 768px){.dashboard-sections{grid-template-columns:1fr}.cta-banner{flex-direction:column;text-align:center;gap:16px}.cta-text{max-width:100%}.topbar{padding:0 18px;gap:10px}.page{padding:20px 18px 40px}.lessons-tree{width:190px;min-width:190px}.lessons-main{padding:20px 24px}}@media (max-width: 640px){:root{--sidebar-w: 0px}.layout,.layout.sidebar-is-collapsed{--sidebar-w: 0px}.sidebar{width:220px!important;transform:translate(-100%);transition:transform .25s cubic-bezier(.4,0,.2,1),width 0s;z-index:300;overflow:hidden}.layout.mobile-menu-open .sidebar{transform:translate(0);box-shadow:6px 0 40px #00000047}.layout.mobile-menu-open .sidebar-brand,.layout.mobile-menu-open .nav-group-label{display:flex!important}.layout.mobile-menu-open .nav-label{display:inline!important}.layout.mobile-menu-open .sidebar-header{justify-content:flex-start!important;padding:10px 16px!important}.layout.mobile-menu-open .nav-item{justify-content:flex-start!important;padding:9px 10px!important}.layout.mobile-menu-open .nav-item span:not(.nav-icon){display:inline!important}.layout.mobile-menu-open .user-info{display:block!important}.layout.mobile-menu-open .sidebar-footer{justify-content:flex-start!important;padding:12px 16px!important}.topbar-hamburger{display:flex}.topbar{padding:0 12px;height:56px;gap:8px}.topbar-search{display:none!important}.topbar-sub{display:none}.topbar-greeting{font-size:15px}.user-menu-info,.user-menu-chevron{display:none}.user-menu-btn{padding:4px;gap:0}.page{padding:12px 12px 40px}.lessons-tree{position:fixed;top:var(--topbar-h);left:0;bottom:0;width:260px;min-width:0;z-index:200;transform:translate(-100%);transition:transform .22s cubic-bezier(.4,0,.2,1);box-shadow:none}.lessons-layout.tree-open .lessons-tree{transform:translate(0);box-shadow:4px 0 32px #00000038}.lessons-tree-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:199;background:#00000059}.lessons-main{padding:16px 20px}.lessons-tree-toggle{display:flex}.lessons-tree-backdrop{display:block}.stats-grid{grid-template-columns:1fr 1fr;gap:10px}.card{overflow-x:auto}.data-table,.table{min-width:480px}.modal{width:calc(100vw - 24px);top:50%;transform:translate(-50%,-50%)}}@media (max-width: 480px){.stats-grid{grid-template-columns:1fr}.topbar-greeting{font-size:14px}.page{padding:10px 10px 40px}.cta-banner{padding:20px}.login-card{padding:28px 20px;width:calc(100vw - 32px)}.lessons-main{padding:14px 18px}}.review-fab{position:fixed;right:24px;bottom:24px;z-index:150;width:52px;height:52px;border-radius:50%;border:none;background:var(--accent-purple);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-lg)}.review-fab-badge{position:absolute;top:-4px;right:-4px;min-width:20px;height:20px;padding:0 5px;border-radius:10px;background:var(--accent-red);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}.review-drawer{position:fixed;top:0;right:0;height:100vh;width:420px;max-width:92vw;background:var(--bg-surface);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:200;display:flex;flex-direction:column;transform:translate(100%);transition:transform .24s ease}.review-drawer-open{transform:translate(0)}.review-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.review-drawer-tabs{display:flex;gap:6px}.review-drawer-tabs button{background:none;border:none;padding:6px 10px;cursor:pointer;font-weight:600;color:var(--text-secondary);border-radius:var(--radius-xs);display:inline-flex;align-items:center;gap:6px}.review-drawer-tabs button.active{color:var(--text-primary);background:var(--bg-surface-hover)}.review-drawer-close{background:none;border:none;cursor:pointer;color:var(--text-tertiary)}.review-section-tabs,.review-filters{display:flex;gap:6px;padding:8px 16px;flex-wrap:wrap;align-items:center;border-bottom:1px solid var(--border);flex-shrink:0}.review-section-tabs button{background:var(--bg-input);border:1px solid var(--border);border-radius:999px;padding:3px 10px;font-size:12px;cursor:pointer;color:var(--text-secondary)}.review-section-tabs button.active{background:var(--accent-purple);color:#fff;border-color:var(--accent-purple)}.review-filters select{width:auto;flex:1;min-width:120px;padding:6px 10px;font-size:13px}.review-new-btn{display:inline-flex;align-items:center;gap:4px}.review-drawer-body{flex:1;overflow-y:auto;padding:12px 16px;display:flex;flex-direction:column;gap:10px}.review-empty,.review-history-empty{color:var(--text-tertiary);font-size:13px;text-align:center;padding:24px 0}.review-card{border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;background:var(--bg-surface)}.review-card-head{display:flex;gap:6px;align-items:center;margin-bottom:6px;flex-wrap:wrap}.review-card-download{margin-left:auto;background:none;border:none;cursor:pointer;color:var(--text-tertiary);display:inline-flex;align-items:center;padding:3px;border-radius:var(--radius-xs)}.review-card-download:hover{color:var(--accent-purple);background:var(--bg-surface-hover)}.review-card-download:disabled{opacity:.5;cursor:default}.review-section-chip{font-size:11px;color:var(--text-secondary);background:var(--bg-input);border:1px solid var(--border);border-radius:6px;padding:1px 7px}.review-card-title{background:none;border:none;padding:0;text-align:left;font-weight:600;font-size:14px;color:var(--text-primary);cursor:pointer}.review-card-meta{font-size:12px;color:var(--text-tertiary);margin-top:2px}.review-card-actions{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.review-card-body{margin-top:10px;border-top:1px solid var(--border);padding-top:10px}.review-richtext-render{font-size:13px;color:var(--text-primary)}.review-richtext-render img{max-width:100%;border-radius:6px;margin:6px 0}.review-replies{display:flex;flex-direction:column;gap:8px;margin:8px 0}.review-reply{background:var(--bg-surface-hover);border-radius:var(--radius-xs);padding:6px 10px}.review-reply-meta{font-size:11px;color:var(--text-tertiary);margin-bottom:2px}.review-reply-compose{display:flex;gap:6px;align-items:flex-end}.review-reply-compose textarea{flex:1}.review-composer{border:1px dashed var(--accent-purple);border-radius:var(--radius-sm);padding:12px;display:flex;flex-direction:column;gap:8px}.review-composer-title{font-weight:600}.review-composer-selectors{display:flex;gap:8px}.review-composer-selectors select{flex:1}.review-richtext-toolbar{display:flex;gap:4px}.review-richtext-toolbar button,.review-img-btn{background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-xs);padding:5px 7px;cursor:pointer;color:var(--text-secondary);display:inline-flex;align-items:center}.review-richtext{min-height:90px;border:1px solid var(--border);border-radius:var(--radius-xs);padding:8px 10px;font-size:13px}.review-richtext:focus-within{border-color:var(--accent-purple)}.review-composer-actions{display:flex;gap:6px;justify-content:flex-end}.review-history-group{margin-bottom:12px}.review-history-day{font-size:11px;font-weight:700;color:var(--text-tertiary);text-transform:uppercase;margin-bottom:6px}.review-history-row{display:flex;gap:6px;align-items:center;font-size:12px;padding:4px 0;flex-wrap:wrap}.review-history-actor{font-weight:600;color:var(--text-primary)}.review-history-action{color:var(--text-secondary)}.review-history-link{background:none;border:none;color:var(--accent-purple);cursor:pointer;font-size:12px;padding:0}.review-history-time{margin-left:auto;color:var(--text-tertiary)}.ibis-logo{display:inline-flex;align-items:center}.ibis-logo .ibis-img{height:40px;width:auto;display:block;object-fit:contain;mix-blend-mode:multiply}.efx-app.theme-studio{--bg: oklch(.975 .008 75);--surface: oklch(1 .004 80);--surface-2: oklch(.985 .008 78);--surface-inset: oklch(.96 .012 78);--border: oklch(.9 .012 70);--border-strong: oklch(.83 .018 68);--ink: oklch(.22 .015 60);--ink-soft: oklch(.38 .014 58);--muted: oklch(.54 .012 60);--faint: oklch(.68 .01 65);--accent: oklch(.62 .12 64);--accent-strong: oklch(.54 .13 62);--accent-ink: oklch(.99 .01 80);--accent-soft: oklch(.93 .05 72);--accent-line: oklch(.78 .09 68);--ok: oklch(.58 .1 155);--ok-soft: oklch(.93 .05 155);--warn: oklch(.7 .12 75);--warn-soft: oklch(.93 .07 80);--danger: oklch(.55 .16 25);--danger-soft: oklch(.94 .05 30);--font-display: "Newsreader", Georgia, serif;--font-body: "Hanken Grotesk", system-ui, sans-serif;--font-mono: "JetBrains Mono", monospace;--radius-sm: 6px;--radius: 9px;--radius-lg: 12px;--radius-xl: 16px;--shadow-sm: 0 1px 2px oklch(.4 .02 60 / .04);--shadow: 0 1px 2px oklch(.4 .02 60 / .05), 0 1px 0 oklch(.4 .02 60 / .02);--shadow-lg: 0 12px 30px -12px oklch(.35 .03 60 / .18);--ring: 0 0 0 3px var(--accent-soft);--sidebar-bg: oklch(.96 .012 74);--sidebar-border: oklch(.9 .014 70);--sidebar-ink: oklch(.4 .014 60);--sidebar-ink-strong: oklch(.24 .015 60);--sidebar-active-bg: oklch(1 .004 80);--sidebar-active-ink: oklch(.5 .13 62);--sidebar-section: oklch(.62 .012 65);--topbar-bg: linear-gradient(100deg, oklch(.945 .05 68 / .97) 0%, oklch(.958 .03 80 / .95) 50%, oklch(.965 .018 90 / .93) 100%);--grid-line: oklch(.9 .012 72 / .55);--hero-bg: linear-gradient(120deg, oklch(.93 .05 72), oklch(.95 .03 80));--display-spacing: -.01em;--title-weight: 500}.efx-app.theme-bright{--bg: oklch(.975 .008 264);--surface: oklch(1 0 0);--surface-2: oklch(.985 .006 264);--surface-inset: oklch(.965 .012 264);--border: oklch(.92 .01 264);--border-strong: oklch(.86 .016 264);--ink: oklch(.25 .03 264);--ink-soft: oklch(.4 .03 264);--muted: oklch(.56 .025 264);--faint: oklch(.7 .02 264);--accent: oklch(.55 .2 280);--accent-strong: oklch(.48 .22 280);--accent-ink: oklch(1 0 0);--accent-soft: oklch(.94 .04 280);--accent-line: oklch(.8 .1 280);--ok: oklch(.62 .16 158);--ok-soft: oklch(.94 .06 158);--warn: oklch(.72 .15 70);--warn-soft: oklch(.95 .07 75);--danger: oklch(.58 .2 18);--danger-soft: oklch(.95 .05 20);--font-display: "Space Grotesk", system-ui, sans-serif;--font-body: "Plus Jakarta Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", monospace;--radius-sm: 9px;--radius: 13px;--radius-lg: 18px;--radius-xl: 24px;--shadow-sm: 0 1px 2px oklch(.5 .05 264 / .06);--shadow: 0 2px 8px -2px oklch(.5 .08 264 / .1), 0 1px 2px oklch(.5 .05 264 / .06);--shadow-lg: 0 24px 48px -20px oklch(.45 .12 280 / .28);--ring: 0 0 0 4px var(--accent-soft);--sidebar-bg: oklch(1 0 0);--sidebar-border: oklch(.92 .01 264);--sidebar-ink: oklch(.46 .03 264);--sidebar-ink-strong: oklch(.28 .04 264);--sidebar-active-bg: oklch(.55 .2 280);--sidebar-active-ink: oklch(1 0 0);--sidebar-section: oklch(.64 .025 264);--topbar-bg: linear-gradient(100deg, oklch(.952 .045 272 / .96) 0%, oklch(.962 .03 265 / .94) 50%, oklch(.97 .018 255 / .92) 100%);--grid-line: oklch(.72 .07 272 / .28);--hero-bg: linear-gradient(125deg, oklch(.55 .2 280), oklch(.6 .18 230));--display-spacing: -.02em;--title-weight: 700}.efx-app{--t: .22s cubic-bezier(.4, 0, .2, 1);background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased}.efx-app .nav-label,.efx-app .user-name,.efx-app .topbar-greeting{font-family:var(--font-body)}.efx-app .sidebar{background:var(--sidebar-bg);border-right:1px solid var(--sidebar-border);box-shadow:none}.efx-app .sidebar-header{padding:6px 14px;display:flex;align-items:center;justify-content:center}.efx-app .sidebar-logo .ibis-img{height:100px;width:auto;mix-blend-mode:multiply}.efx-app.sidebar-is-collapsed .sidebar-logo .ibis-img{width:48px;max-width:48px}.efx-app .sidebar-logo-icon{background:var(--accent);color:var(--accent-ink);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.efx-app .sidebar-logo{font-family:var(--font-display);font-weight:600;letter-spacing:var(--display-spacing);color:var(--sidebar-ink-strong)}.efx-app .sidebar-subtitle{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--sidebar-section)}.efx-app .nav-group-label{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--sidebar-section);opacity:1}.efx-app .nav-item{position:relative;color:var(--sidebar-ink);font-weight:500;border:1px solid transparent;border-radius:var(--radius);transition:background var(--t),color var(--t)}.efx-app .nav-item:hover{background:var(--surface-inset);color:var(--sidebar-ink-strong)}.efx-app .nav-item.active{font-weight:700;color:var(--accent-strong);background:transparent;box-shadow:none;border-color:transparent}.efx-app .nav-item.active:hover{background:transparent}.efx-app .nav-item.active .nav-icon svg{color:inherit;stroke:currentColor}.efx-app .nav-item.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);height:60%;width:3px;border-radius:0 3px 3px 0;background:var(--accent)}.efx-app .nav-icon svg{width:18px;height:18px;stroke-width:1.9}.efx-app .sidebar-toggle{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:var(--radius);position:fixed;left:calc(var(--sidebar-w) - 14px);top:20px;z-index:200;width:28px;height:28px;display:flex;align-items:center;justify-content:center;padding:0;opacity:0;pointer-events:none;transition:opacity .2s ease,left .22s cubic-bezier(.4,0,.2,1);box-shadow:var(--shadow-sm)}.efx-app .sidebar:hover .sidebar-toggle{opacity:1;pointer-events:auto}.efx-app .sidebar-toggle:hover{color:var(--ink);background:var(--surface-inset)}.efx-app .main-content,.efx-app .lessons-main{background:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px),var(--bg);background-size:32px 32px,32px 32px,auto}.efx-app.theme-bright .main-content,.efx-app.theme-bright .lessons-main{background:radial-gradient(circle,var(--grid-line) 1.5px,transparent 1.5px),var(--bg);background-size:26px 26px,auto}.efx-app .topbar{background:var(--topbar-bg);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.efx-app .topbar-greeting{font-family:var(--font-display);font-size:23px;font-weight:var(--title-weight);letter-spacing:var(--display-spacing);color:var(--ink)}.efx-app .topbar-sub{font-size:12.5px;color:var(--muted);font-family:var(--font-body)}.efx-app .topbar-search{background:var(--surface-inset);border:1px solid var(--border);border-radius:999px}.efx-app .topbar-search input{color:var(--ink);background:transparent}.efx-app .topbar-search input::placeholder{color:var(--muted)}.efx-app .topbar-search:focus-within{border-color:var(--accent-line);box-shadow:var(--ring)}.efx-app .topbar-search-icon svg{stroke:var(--muted)}.efx-app .topbar-icon-btn{background:var(--surface);border:1px solid var(--border);color:var(--ink-soft);border-radius:var(--radius)}.efx-app .topbar-icon-btn:hover{background:var(--surface-inset);color:var(--ink);border-color:var(--border-strong)}.efx-app .notification-badge{background:var(--accent);color:var(--accent-ink);font-weight:700}.efx-app .notif-dropdown{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);color:var(--ink)}.efx-app .notif-dropdown-header{border-bottom:1px solid var(--border);color:var(--ink)}.efx-app .notif-count-pill{background:var(--accent-soft);color:var(--accent-strong)}.efx-app .notif-item{border-bottom:1px solid var(--border)}.efx-app .notif-item:hover{background:var(--surface-inset)}.efx-app .notif-item-title{color:var(--ink)}.efx-app .notif-empty{color:var(--muted)}.efx-app .notif-item-code,.efx-app .lesson-code{font-family:var(--font-mono);color:var(--accent-strong);background:var(--accent-soft)}.efx-app .user-avatar{background:var(--accent);color:var(--accent-ink);font-weight:700}.efx-app.theme-studio .user-avatar{border-radius:9px}.efx-app .user-name{color:var(--ink)}.efx-app .btn-logout{background:var(--surface);border:1px solid var(--border);color:var(--ink-soft)}.efx-app .btn-logout:hover{background:var(--surface-inset);color:var(--ink);border-color:var(--border-strong)}.efx-app.theme-studio .user-menu-btn{background:#f3ddc5eb;border-color:#dcc7af99}.efx-app.theme-studio .user-menu-btn:hover{background:#eacfb1f2}.efx-app.theme-bright .user-menu-btn{background:#d6e1ffeb;background:oklch(.91 .045 270 / .92);border-color:#becaec99}.efx-app.theme-bright .user-menu-btn:hover{background:#c6d3f9f2}.efx-app .page{max-width:none;margin:0}.efx-app .page-title{font-family:var(--font-display);font-weight:var(--title-weight);letter-spacing:var(--display-spacing);color:var(--ink)}.efx-app .page-subtitle,.efx-app .hint{color:var(--muted)}.efx-app .page-loading{color:var(--muted);font-family:var(--font-mono)}.efx-app .stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);transition:transform var(--t),box-shadow var(--t)}.efx-app .stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.efx-app .stat-icon.purple{color:#6365c1}.efx-app .stat-icon.blue{color:#007ca7;color:oklch(.55 .14 232)}.efx-app .stat-icon.green{color:#007d4d;color:oklch(.52 .13 158)}.efx-app .stat-icon.orange{color:#bd5833}.efx-app .stat-icon.teal{color:#00787d;color:oklch(.52 .12 200)}.efx-app .stat-icon.red{color:#bd413f}.efx-app .stat-value{font-family:var(--font-display);font-weight:var(--title-weight);letter-spacing:var(--display-spacing);color:var(--ink)}.efx-app .stat-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.efx-app .cta-banner{background:var(--hero-bg);border:1px solid var(--border);border-radius:var(--radius-xl);overflow:hidden}.efx-app.theme-bright .cta-banner{border:none}.efx-app .cta-title{font-family:var(--font-display);font-weight:var(--title-weight);letter-spacing:var(--display-spacing)}.efx-app.theme-studio .cta-title{color:var(--ink)}.efx-app.theme-bright .cta-title{color:#fff}.efx-app.theme-studio .cta-desc{color:var(--ink-soft)}.efx-app.theme-bright .cta-desc{color:#eff1ff;color:oklch(.96 .02 280)}.efx-app .cta-btn{border-radius:var(--radius);font-weight:600;border:1px solid transparent;transition:all var(--t)}.efx-app.theme-studio .cta-btn{background:var(--accent);color:var(--accent-ink)}.efx-app.theme-studio .cta-btn:hover{background:var(--accent-strong);transform:translateY(-1px)}.efx-app.theme-bright .cta-btn{background:#fff;color:var(--accent-strong)}.efx-app.theme-bright .cta-btn:hover{transform:translateY(-1px)}.efx-app .dashboard-section,.efx-app .card,.efx-app .outline-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.efx-app .dashboard-section-header{border-bottom:1px solid var(--border)}.efx-app .dashboard-section-header h2,.efx-app .section-head h2{font-family:var(--font-display);font-weight:var(--title-weight);letter-spacing:var(--display-spacing);color:var(--ink)}.efx-app .empty-state,.efx-app .empty-state-large,.efx-app .empty-col{color:var(--muted)}.efx-app .empty-state a,.efx-app .cta-desc a{color:var(--accent-strong)}.efx-app .chip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--ink-soft);font-weight:500;transition:all var(--t)}.efx-app .chip:hover{border-color:var(--accent-line);background:var(--surface-inset)}.efx-app .chip strong{color:var(--accent-strong)}.efx-app .settings-card-header{padding:10px 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border)}.efx-app .settings-card-title{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.efx-app .settings-card-code{font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;color:var(--faint)}.efx-app.theme-studio .settings-card-header{background:#f7e5cf}.efx-app.theme-bright .settings-card-header{background:#dfe7ff;background:oklch(.93 .04 270)}.efx-app .table,.efx-app .data-table{color:var(--ink-soft)}.efx-app .table th,.efx-app .data-table th{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600;border-bottom:1px solid var(--border);text-align:left}.efx-app.theme-studio .table thead tr,.efx-app.theme-studio .data-table thead tr,.efx-app.theme-studio .table th,.efx-app.theme-studio .data-table th,.efx-app.theme-studio .tree-col-header{background:#f7e5cf;color:var(--muted)}.efx-app.theme-bright .table thead tr,.efx-app.theme-bright .data-table thead tr,.efx-app.theme-bright .table th,.efx-app.theme-bright .data-table th,.efx-app.theme-bright .tree-col-header{background:#dfe7ff;background:oklch(.93 .04 270);color:var(--muted)}.efx-app .table td,.efx-app .data-table td{border-bottom:1px solid var(--border);color:var(--ink-soft)}.efx-app .table tbody tr,.efx-app .data-table tbody tr{transition:background var(--t)}.efx-app .table tbody tr:hover,.efx-app .data-table tbody tr:hover{background:var(--surface-2)}.efx-app .cell-title{color:var(--ink);font-weight:600}.efx-app .cell-code,.efx-app .cell-code code{font-family:var(--font-mono);color:var(--accent-strong)}.efx-app .cell-meta,.efx-app .cell-duration{color:var(--muted)}.efx-app .error-text{color:var(--danger)}.efx-app input:not([type=checkbox]):not([type=radio]):not([type=range]),.efx-app select,.efx-app textarea,.efx-app .filter-select{background:var(--surface);border:1px solid var(--border);color:var(--ink);border-radius:var(--radius);font-family:var(--font-body)}.efx-app input::placeholder,.efx-app textarea::placeholder{color:var(--faint)}.efx-app input:not([type=checkbox]):not([type=radio]):focus,.efx-app select:focus,.efx-app textarea:focus,.efx-app .filter-select:focus,.efx-app .filter-select.is-active{border-color:var(--accent-line);box-shadow:var(--ring);outline:none}.efx-app .form-group label,.efx-app label,.efx-app .filter-panel-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600}.efx-app select option{background:var(--surface);color:var(--ink)}.efx-app .btn{border-radius:var(--radius);font-family:var(--font-body);font-weight:600;border:1px solid transparent;transition:all var(--t)}.efx-app .btn-primary,.efx-app .btn-sm.primary,.efx-app .btn-upload{background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-sm);border:none}.efx-app .btn-primary:hover,.efx-app .btn-upload:hover{background:var(--accent-strong);transform:translateY(-1px)}.efx-app .btn-secondary{background:var(--surface);border:1px solid var(--border);color:var(--ink-soft)}.efx-app .btn-secondary:hover{background:var(--surface-inset);color:var(--ink);border-color:var(--border-strong)}.efx-app .btn-danger,.efx-app .btn-sm.danger{background:var(--danger-soft);color:var(--danger);border:1px solid transparent}.efx-app .btn-danger:hover{background:var(--danger);color:#fff}.efx-app .icon-btn{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:var(--radius)}.efx-app .icon-btn:hover{color:var(--ink);border-color:var(--border-strong);background:var(--surface-inset)}.efx-app .icon-btn.danger:hover{color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}.efx-app .filter-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.efx-app .filter-clear-btn{background:var(--surface);border:1px solid var(--border);color:var(--muted)}.efx-app .filter-clear-btn:hover{color:var(--ink)}.efx-app .filter-active-count{background:var(--accent);color:var(--accent-ink)}.efx-app .filter-divider{background:var(--border)}.efx-app .tree-browser,.efx-app .tree-col{border-color:var(--border)}.efx-app .tree-col-header{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)!important;background:var(--surface-2);border-bottom:1px solid var(--border);font-weight:600}.efx-app .tree-item{color:var(--ink-soft);border-radius:var(--radius)}.efx-app .tree-item:hover{background:var(--surface-inset)}.efx-app .tree-item.selected{background:var(--accent);color:var(--accent-ink);font-weight:600;border-left:0;padding-left:12px}.efx-app .tree-item.selected strong,.efx-app .tree-item.selected span{color:var(--accent-ink)}.efx-app .file-input-wrapper{background:var(--surface-2);border:1.5px dashed var(--border-strong);color:var(--muted);border-radius:var(--radius-lg)}.efx-app .file-input-wrapper:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.efx-app .toggle-switch{background:var(--border-strong)}.efx-app .toggle-switch.on{background:var(--ok)}.efx-app .progress-bar-track{background:var(--surface-inset)}.efx-app .progress-bar-fill{background:var(--accent)}.efx-app .spinner{border-color:var(--border);border-top-color:var(--accent)}.efx-app .alert-error{background:var(--danger-soft);color:var(--danger)}.efx-app .alert-info{background:var(--accent-soft);color:var(--accent-strong)}.efx-app .modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);color:var(--ink)}.efx-app .modal-backdrop{background:#1d140d52;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.efx-app .modal-header{border-bottom:1px solid var(--border);color:var(--ink);font-family:var(--font-display)}.efx-app .modal-close{color:var(--muted)}.efx-app .modal-close:hover{color:var(--ink)}.efx-app .preview-toolbar{background:var(--topbar-bg);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.efx-app .preview-title{font-family:var(--font-display);color:var(--ink)}.efx-app .notes-popup{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);color:var(--ink)}.efx-app .notes-popup-header,.efx-app .note-item{border-bottom:1px solid var(--border)}.efx-app .note-content{color:var(--ink)}.efx-app .notes-empty,.efx-app .note-time{color:var(--muted)}.efx-app .badge{border-radius:999px;font-weight:600;border:1px solid transparent}.efx-app.theme-studio .badge{border-radius:6px}.efx-app .badge-green,.efx-app .badge-ready,.efx-app .badge-completed,.efx-app .badge-published,.efx-app .badge-approved{background:var(--ok-soft);color:var(--ok)}.efx-app .badge-orange,.efx-app .badge-in-review,.efx-app .badge-queued,.efx-app .badge-extracting,.efx-app .badge-processing{background:var(--warn-soft);color:#8e5300;color:oklch(.5 .12 65)}.efx-app .badge-red,.efx-app .badge-failed{background:var(--danger-soft);color:var(--danger)}.efx-app .badge-blue,.efx-app .badge-indigo,.efx-app .badge-teal,.efx-app .badge-purple,.efx-app .badge-draft,.efx-app .badge-generating,.efx-app .badge-running{background:var(--accent-soft);color:var(--accent-strong)}.efx-app .badge-gray,.efx-app .badge-stub,.efx-app .badge-archived,.efx-app .badge-cancelled{background:var(--surface-inset);color:var(--muted);border-color:var(--border)}.efx-app.theme-studio .tree-item.selected,.efx-app.theme-studio .tree-item.selected strong,.efx-app.theme-studio .tree-item.selected span{background:unset;color:var(--ink-soft)!important}.efx-app.theme-studio .tree-item.selected{background:#fbf0e2!important;border-left-color:#a57636}.efx-app.theme-bright .tree-item.selected,.efx-app.theme-bright .tree-item.selected strong,.efx-app.theme-bright .tree-item.selected span{background:unset;color:var(--ink-soft)!important}.efx-app.theme-bright .tree-item.selected{background:#edf1ff!important;background:oklch(.96 .022 272)!important;border-left-color:var(--accent)}.efx-app .cur-tag{border:1px solid transparent}.efx-app .cur-tag-ib,.efx-app .cur-tag-myp,.efx-app .cur-tag-igcse{background:var(--accent-soft);color:var(--accent-strong)}.efx-app .cur-tag-pyp{background:var(--ok-soft);color:var(--ok)}.efx-app .cur-tag-dp{background:var(--warn-soft);color:#8e5300;color:oklch(.5 .12 65)}.efx-app .cur-tag-sat{background:var(--danger-soft);color:var(--danger)}.efx-app .lessons-tree .tree-icon{display:inline-flex;align-items:center;margin-right:7px;color:var(--muted);flex:0 0 auto}.efx-app .lessons-tree .tree-icon svg{width:15px;height:15px}.efx-app .lessons-tree .tree-row.selected .tree-icon,.efx-app .lessons-tree .tree-row.has-lessons .tree-icon{color:var(--accent)}.efx-app .lessons-tree .tree-row.selected{background:color-mix(in srgb,var(--accent) 9%,var(--surface));color:var(--accent-strong)}.efx-app .lessons-tree .tree-row.selected .tree-icon{color:var(--accent-strong)}.efx-app .lessons-tree .tree-row.unit-row.selected{background:color-mix(in srgb,var(--accent) 20%,var(--surface));color:var(--accent-strong)}.efx-app .lessons-tree .tree-row.unit-row.selected .tree-icon{color:var(--accent-strong)}.efx-app .lessons-tree .tree-row.unit-row.selected .tree-count{background:color-mix(in srgb,var(--accent) 32%,var(--surface));color:var(--accent-strong)}.efx-app .lessons-unit-meta .crumb-sep{color:var(--faint);opacity:.7}.efx-app .lessons-unit-meta .crumb-topic{display:inline-block;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.efx-app .lesson-cards-grid .lesson-card-order{flex:0 0 70px}.efx-app .lesson-cards-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}@media (max-width: 1080px){.efx-app .lesson-cards-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 700px){.efx-app .lesson-cards-grid{grid-template-columns:1fr}}.efx-app .lesson-card{display:flex;flex-direction:row;align-items:stretch;gap:0;padding:0;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:none;transition:border-color .12s}.efx-app .lesson-card:hover{border-color:var(--border-strong);transform:none;box-shadow:none}.efx-app .lesson-card:before{display:none}.efx-app .lesson-card-order{flex:0 0 110px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:var(--surface-inset);color:var(--muted);border-radius:14px 0 0 14px}.efx-app .lesson-card-order-label{font-size:8px;letter-spacing:.1em;font-weight:600;text-transform:uppercase}.efx-app .lesson-card-order-num{font-size:23px;font-weight:700;line-height:1}.efx-app .lesson-card-body{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:8px;padding:13px 12px 13px 16px}.efx-app .lesson-card-titlerow{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.efx-app .lesson-card-footer{display:flex;align-items:center;justify-content:space-between;gap:8px}.efx-app .lesson-card-code{position:static;align-self:flex-start;font-family:var(--font-mono);font-size:10px;font-weight:600;color:var(--muted);background:transparent;padding:0}.efx-app .lesson-card-title{flex:1;min-width:0;font-size:16px;font-weight:600;line-height:1.3;margin:0;color:var(--ink)}.efx-app .lesson-card-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.efx-app .lesson-card-duration{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--faint)}.efx-app .lesson-card .badge{font-size:10px;padding:2px 8px}.efx-app .lesson-card-workflow{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.efx-app .lesson-card-actions{flex-shrink:0;display:flex;align-items:center;gap:2px;padding-right:10px}.efx-app .lesson-card .btn-icon{width:36px;height:36px;border:none;background:transparent;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;color:var(--ink-soft);transition:background .12s,color .12s}.efx-app .lesson-card .btn-icon:hover{background:var(--surface-inset);color:var(--ink)}.efx-app .lesson-card .btn-icon-danger:hover{background:var(--danger-soft);color:var(--danger)}.efx-app .lesson-card.status-live .lesson-card-order{background:#e1f5ee;color:#0f6e56}.efx-app .lesson-card.status-ready_to_publish .lesson-card-order,.efx-app .lesson-card.status-in_content_review .lesson-card-order,.efx-app .lesson-card.status-in_design_review .lesson-card-order,.efx-app .lesson-card.status-generating .lesson-card-order{background:#eeedfe;color:#3c3489}.efx-app .lesson-card.status-draft .lesson-card-order,.efx-app .lesson-card.status-needs_revision .lesson-card-order,.efx-app .lesson-card.status-needs_design_revision .lesson-card-order{background:#faeeda;color:#854f0b}.efx-app .lesson-card.status-archived .lesson-card-order,.efx-app .lesson-card.status-stub .lesson-card-order{background:#f0efec;color:#6b6a64}.efx-app .lesson-card .lc-menu-wrap{position:relative;display:inline-flex}.efx-app .lesson-card .lc-menu{position:absolute;top:calc(100% + 4px);right:0;z-index:30;min-width:190px;padding:6px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg)}.efx-app .lesson-card .lc-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:none;background:none;border-radius:8px;font-family:var(--font-body);font-size:13px;color:var(--ink-soft);text-align:left;cursor:pointer;transition:background .12s,color .12s}.efx-app .lesson-card .lc-menu-item svg{width:16px;height:16px;flex:0 0 auto}.efx-app .lesson-card .lc-menu-item:hover{background:var(--surface-inset);color:var(--ink)}.efx-app .lesson-card .lc-menu-item.danger{color:var(--danger)}.efx-app .lesson-card .lc-menu-item.danger:hover{background:var(--danger-soft)}.efx-app .lesson-card .lc-menu-item:disabled{opacity:.5;cursor:not-allowed}.efx-app .lesson-card .lc-menu-dot{width:6px;height:6px;border-radius:50%;background:var(--danger);margin-left:auto}.efx-app .topbar-hamburger{background:var(--surface);border-color:var(--border);color:var(--ink-soft);border-radius:var(--radius)}.efx-app .topbar-hamburger:hover{background:var(--surface-inset);color:var(--ink);border-color:var(--border-strong)}@media (max-width: 640px){.efx-app .sidebar{width:220px!important;transform:translate(-100%);transition:transform .25s cubic-bezier(.4,0,.2,1);z-index:300}.efx-app.mobile-menu-open .sidebar{transform:translate(0);box-shadow:6px 0 40px #1d140d47!important}.efx-app .sidebar-toggle{display:none!important}.efx-app.mobile-menu-open .sidebar-logo .ibis-img{height:80px!important;width:auto!important;max-width:none!important}.efx-app.mobile-menu-open .nav-label{display:inline!important}.efx-app.mobile-menu-open .nav-group-label{display:flex!important}.efx-app.mobile-menu-open .nav-item{justify-content:flex-start!important;padding:9px 10px!important}.efx-app.mobile-menu-open .sidebar-header{padding:6px 14px!important;justify-content:center!important}.efx-app .topbar{padding:0 12px}.efx-app .topbar-greeting{font-size:16px}.efx-app .topbar-sub{display:none}.efx-app .page{padding:12px 12px 40px}.efx-app .lesson-cards-grid{grid-template-columns:1fr!important}}@media (max-width: 480px){.efx-app .topbar-greeting{font-size:14px}.efx-app .page{padding:10px 10px 40px}}.efx-login.theme-studio{--bg: oklch(.975 .008 75);--surface: oklch(1 .004 80);--surface-2: oklch(.985 .008 78);--surface-inset: oklch(.96 .012 78);--border: oklch(.9 .012 70);--border-strong: oklch(.83 .018 68);--ink: oklch(.22 .015 60);--ink-soft: oklch(.38 .014 58);--muted: oklch(.54 .012 60);--faint: oklch(.68 .01 65);--accent: oklch(.62 .12 64);--accent-strong: oklch(.54 .13 62);--accent-ink: oklch(.99 .01 80);--accent-soft: oklch(.93 .05 72);--accent-line: oklch(.78 .09 68);--font-display: "Newsreader", Georgia, serif;--font-body: "Hanken Grotesk", system-ui, sans-serif;--font-mono: "JetBrains Mono", monospace;--radius-sm: 6px;--radius: 9px;--radius-lg: 12px;--radius-xl: 16px;--shadow-sm: 0 1px 2px oklch(.4 .02 60 / .04);--shadow-lg: 0 12px 30px -12px oklch(.35 .03 60 / .18);--ring: 0 0 0 3px var(--accent-soft);--grid-line: oklch(.9 .012 72 / .55);--display-spacing: -.01em;--title-weight: 500}.efx-login.theme-bright{--bg: oklch(.975 .008 264);--surface: oklch(1 0 0);--surface-2: oklch(.985 .006 264);--surface-inset: oklch(.965 .012 264);--border: oklch(.92 .01 264);--border-strong: oklch(.86 .016 264);--ink: oklch(.25 .03 264);--ink-soft: oklch(.4 .03 264);--muted: oklch(.56 .025 264);--faint: oklch(.7 .02 264);--accent: oklch(.55 .2 280);--accent-strong: oklch(.48 .22 280);--accent-ink: oklch(1 0 0);--accent-soft: oklch(.94 .04 280);--accent-line: oklch(.8 .1 280);--font-display: "Space Grotesk", system-ui, sans-serif;--font-body: "Plus Jakarta Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", monospace;--radius-sm: 9px;--radius: 13px;--radius-lg: 18px;--radius-xl: 24px;--shadow-sm: 0 1px 2px oklch(.5 .05 264 / .06);--shadow-lg: 0 24px 48px -20px oklch(.45 .12 280 / .28);--ring: 0 0 0 4px var(--accent-soft);--grid-line: oklch(.93 .01 264 / .6);--display-spacing: -.02em;--title-weight: 700}.efx-login{height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;position:relative;overflow:hidden;background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:32px 32px}.efx-login.theme-bright{background-image:radial-gradient(var(--grid-line) 1px,transparent 1px);background-size:26px 26px}.efx-login *,.efx-login *:before,.efx-login *:after{box-sizing:border-box}.efx-login .login-card{width:100%;max-width:1100px;height:calc(100vh - 40px);min-height:520px;display:grid;grid-template-columns:1.1fr .9fr;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);overflow:hidden;animation:efx-pop .32s cubic-bezier(.4,0,.2,1)}@keyframes efx-pop{0%{opacity:0;transform:translateY(12px) scale(.98)}}.efx-login .login-left{padding:28px 32px 20px;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.efx-login.theme-bright .login-left{background:linear-gradient(160deg,var(--surface-2),var(--surface))}.efx-login .login-brand{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-bottom:18px}.efx-login .login-logo .ibis-img{height:auto;width:260px;max-width:100%}.efx-login .sb-logo{width:46px;height:46px;flex:0 0 auto;border-radius:var(--radius);display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-sm)}.efx-login.theme-bright .sb-logo{border-radius:14px}.efx-login .login-name{font-family:var(--font-display);font-size:28px;font-weight:600;letter-spacing:var(--display-spacing)}.efx-login .login-name em{font-style:italic;color:var(--accent)}.efx-login.theme-bright .login-name em{font-style:normal}.efx-login .login-fx{margin-left:auto;font-family:var(--font-mono);font-size:11px;padding:5px 11px;border-radius:999px;background:var(--surface-inset);border:1px solid var(--border);color:var(--muted)}.efx-login .login-tagline{font-family:var(--font-display);font-size:20px;line-height:1.32;font-weight:400;letter-spacing:var(--display-spacing);margin:0 0 6px;color:var(--ink-soft)}.efx-login .login-tagline em{font-style:italic;color:var(--accent);font-weight:600}.efx-login.theme-bright .login-tagline{font-weight:500}.efx-login.theme-bright .login-tagline em{font-style:normal}.efx-login .login-graph-wrap{flex:1;min-height:0;overflow:hidden;padding:8px 0 4px}.efx-login .login-graph{width:100%;height:100%;display:block}.efx-login .login-eqs{display:flex;align-items:center;gap:14px;font-family:var(--font-mono);font-size:12px;color:var(--muted);margin-top:6px}.efx-login .login-eqs .div{color:var(--faint)}.efx-login .login-right{padding:40px 52px;display:flex;flex-direction:column;justify-content:center}.efx-login .login-welcome{font-family:var(--font-display);font-size:24px;font-weight:var(--title-weight);letter-spacing:var(--display-spacing);margin:0;color:var(--ink)}.efx-login .field{display:flex;flex-direction:column;gap:7px}.efx-login .label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600}.efx-login .input{width:100%;padding:11px 14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);font-size:14px;color:var(--ink);outline:none;font-family:var(--font-body);transition:border .22s,box-shadow .22s}.efx-login .input:focus{border-color:var(--accent-line);box-shadow:var(--ring)}.efx-login .input::placeholder{color:var(--faint)}.efx-login .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 17px;border-radius:var(--radius);font-size:13.5px;font-weight:600;font-family:var(--font-body);border:1px solid transparent;cursor:pointer;white-space:nowrap;transition:all .22s cubic-bezier(.4,0,.2,1)}.efx-login .btn svg{width:16px;height:16px}.efx-login .btn-primary{background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-sm)}.efx-login .btn-primary:hover:not(:disabled){background:var(--accent-strong);transform:translateY(-1px)}.efx-login .btn:disabled{opacity:.55;cursor:progress}.efx-login .login-error{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--danger, oklch(.55 .16 25));background:var(--danger-soft, oklch(.94 .05 30));border:1px solid oklch(.8 .1 28 / .5);border-radius:var(--radius);padding:10px 13px}.efx-login .login-foot{font-size:12px;margin-top:24px;text-align:center;color:var(--muted)}.efx-login .login-foot strong{color:var(--ink-soft)}.efx-login .col{display:flex;flex-direction:column}@media (max-width: 820px){.efx-login{padding:16px}.efx-login .login-card{grid-template-columns:1fr;max-width:440px;height:auto;max-height:none;min-height:unset}.efx-login .login-left{display:none}.efx-login .login-right{padding:20px 32px 28px;display:flex;flex-direction:column;align-items:center}.efx-login .login-right:before{content:"";display:block;width:280px;height:104px;background:url(/ibis-cadimy-logo.png) no-repeat center / contain;margin-bottom:0;mix-blend-mode:multiply}.efx-login .login-right form,.efx-login .login-foot{width:100%}.efx-login .login-welcome{display:none}}@media (prefers-reduced-motion: reduce){.efx-login .login-card{animation:none}}
