@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Outfit:wght@400;500;600;700;800&family=Fraunces:opsz,wght@9..144,500;9..144,600;9..144,700&family=JetBrains+Mono:wght@400;500;700&display=swap";.cega-loader-overlay{z-index:9999;background:var(--bg-primary);justify-content:center;align-items:center;animation:.25s loaderFadeIn;display:flex;position:fixed;inset:0}@keyframes loaderFadeIn{0%{opacity:0}to{opacity:1}}.cega-loader-content{flex-direction:column;align-items:center;gap:2.4rem;display:flex}.cega-loader-rings{justify-content:center;align-items:center;width:130px;height:130px;display:flex;position:relative}.ring{border:2.5px solid #0000;border-radius:50%;position:absolute;inset:0}.ring-1{border-top-color:var(--accent-primary);border-right-color:rgba(var(--accent-primary-rgb), .3);animation:1.2s linear infinite spin}.ring-2{border-bottom-color:var(--accent-secondary,#2ca76e);border-left-color:rgba(var(--accent-primary-rgb), .15);animation:1.8s linear infinite reverse spin;inset:12px}.ring-3{border-top-color:rgba(var(--accent-primary-rgb), .5);border-right-color:#0000;animation:2.4s linear infinite spin;inset:24px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.cega-loader-logo-wrap{z-index:1;border:3px solid var(--bg-secondary);width:62px;height:62px;box-shadow:0 0 0 2px rgba(var(--accent-primary-rgb), .25), 0 8px 24px -8px rgba(var(--accent-primary-rgb), .45);border-radius:50%;animation:2.5s ease-in-out infinite logoPulse;position:relative;overflow:hidden}.cega-loader-logo{object-fit:cover;width:100%;height:100%}@keyframes logoPulse{0%,to{box-shadow:0 0 0 2px rgba(var(--accent-primary-rgb), .25), 0 8px 24px -8px rgba(var(--accent-primary-rgb), .45)}50%{box-shadow:0 0 0 6px rgba(var(--accent-primary-rgb), .12), 0 12px 32px -6px rgba(var(--accent-primary-rgb), .6)}}.cega-loader-text{text-align:center;flex-direction:column;align-items:center;gap:.5rem;display:flex}.cega-loader-name{color:var(--text-primary);letter-spacing:.03em;margin:0;font-family:Outfit,sans-serif;font-size:1.35rem;font-weight:700;animation:2.5s ease-in-out infinite textGlow}@keyframes textGlow{0%,to{opacity:1}50%{opacity:.7}}.cega-loader-msg{color:var(--text-secondary);letter-spacing:.01em;margin:0;font-size:.88rem}.cega-loader-bar{gap:6px;margin-top:.6rem;display:flex}.cega-loader-bar span{background:var(--accent-primary);border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite dotBounce;display:block}.cega-loader-bar span:first-child{animation-delay:0s}.cega-loader-bar span:nth-child(2){animation-delay:.12s}.cega-loader-bar span:nth-child(3){animation-delay:.24s}.cega-loader-bar span:nth-child(4){animation-delay:.36s}.cega-loader-bar span:nth-child(5){animation-delay:.48s}@keyframes dotBounce{0%,to{opacity:.4;transform:translateY(0)}40%{opacity:1;transform:translateY(-8px)}}:root{--bg-primary:#f8fafc;--bg-secondary:#fff;--bg-card:#fff;--text-primary:#0b0e14;--text-secondary:#475569;--brand-green:#1a4c3e;--brand-green-rgb:26, 76, 62;--accent-primary:var(--brand-green);--accent-primary-rgb:var(--brand-green-rgb);--accent-secondary:#12372d;--accent-hover:#11362b;--border-color:#0000001a;--error:#ef4444;--sidebar-width:260px;--topbar-height:60px;--font-mono:"JetBrains Mono", "Consolas", monospace;--font-serif:"Fraunces", Georgia, serif}[data-theme=dark]{--bg-primary:#0b0e14;--bg-secondary:#131821;--bg-card:#131821;--text-primary:#f8fafc;--text-secondary:#94a3b8;--accent-primary:#28b08a;--accent-primary-rgb:40, 176, 138;--accent-secondary:#1f896b;--accent-hover:#34d3a3;--border-color:#ffffff1a;--error:#ef4444}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{overscroll-behavior:none;width:100%;height:100%;margin:0;padding:0;position:fixed;top:0;left:0;overflow:hidden}body{background-color:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,sans-serif}h1,h2,h3,h4,h5,h6{font-family:Outfit,sans-serif}.glass-panel{background:var(--bg-card);border:1px solid var(--border-color);border-radius:8px}.gradient-text{color:var(--accent-primary);font-weight:700}.animate-fade-in{animation:.5s cubic-bezier(.4,0,.2,1) forwards fadeIn}.animate-slide-up{animation:.6s cubic-bezier(.16,1,.3,1) forwards slideUp}.animate-spin{animation:1s linear infinite spin}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.auth-layout{background-color:var(--bg-primary);flex-direction:column;height:100dvh;display:flex;overflow-y:auto}.auth-container{width:100%;max-width:440px;margin:auto;padding:1.5rem}@media (width>=768px){.auth-container{padding:2.5rem}}.auth-header{text-align:center;margin-bottom:2rem}.auth-header h1{margin-bottom:.5rem;font-size:1.75rem}@media (width>=768px){.auth-header h1{font-size:2rem}}.auth-header p{color:var(--text-secondary);font-size:.95rem}.form-group{margin-bottom:1.25rem}.form-row{grid-template-columns:1fr;gap:1rem;display:grid}@media (width>=640px){.form-row{grid-template-columns:1fr 1fr}}.form-label{color:var(--text-secondary);margin-bottom:.5rem;font-size:.875rem;font-weight:500;display:block}.form-input,.input-field{border:1px solid var(--border-color);width:100%;color:var(--text-primary);background:#00000008;border-radius:8px;padding:.75rem 1rem;font-family:inherit;font-size:1rem;transition:all .2s}.form-input:focus,.input-field:focus{border-color:var(--accent-primary);background:#0000000d;outline:none}.form-input::placeholder,.input-field::placeholder{color:#94a3b880}.btn{cursor:pointer;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;width:100%;padding:.75rem 1.5rem;font-family:Outfit,sans-serif;font-size:1rem;font-weight:600;transition:all .2s;display:inline-flex}.btn-primary{background:var(--accent-primary);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{color:var(--text-primary);border:1px solid var(--border-color);background:#0000000d}.btn-secondary:hover{background:#0000001a}.btn-back{border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;background:#ffffff0d;border-radius:8px;justify-content:center;align-items:center;gap:.5rem;width:max-content;padding:.5rem 1.25rem;font-size:.95rem;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.btn-back:hover{background:#ffffff1a;border-color:#fff3}.link{color:var(--accent-primary);font-weight:500;text-decoration:none;transition:color .3s}.link:hover{color:var(--accent-secondary)}.backend-note{background:var(--bg-primary);border:1px solid var(--border-color);border-left:4px solid var(--accent-secondary);color:var(--text-secondary);border-radius:8px;margin-top:1.5rem;padding:1rem;font-size:.85rem}.backend-note strong{color:var(--accent-secondary)}[data-theme=dark] .form-input,[data-theme=dark] .input-field{background:#ffffff08}[data-theme=dark] .form-input:focus,[data-theme=dark] .input-field:focus,[data-theme=dark] .btn-secondary{background:#ffffff0d}[data-theme=dark] .btn-secondary:hover{background:#ffffff1a}[data-theme=light] .btn-back{background:#0000000d}[data-theme=light] .btn-back:hover{background:#0000001a;border-color:#0003}.dropdown-menu{z-index:50;background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;min-width:200px;padding:.5rem 0;position:absolute;top:100%;right:1rem;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.dropdown-item{text-align:left;cursor:pointer;width:100%;color:var(--text-primary);background:0 0;border:none;align-items:center;gap:.75rem;padding:.75rem 1rem;font-size:.9rem;font-weight:500;transition:all .2s;display:flex}.dropdown-item:hover{background-color:#00000008}[data-theme=dark] .dropdown-item:hover{background-color:#ffffff0d}.dropdown-item.danger{color:var(--error)}.dropdown-item.danger:hover{background-color:#ef44441a}.dropdown-item.success{color:var(--accent-primary)}.dropdown-item.success:hover{background-color:rgba(var(--accent-primary-rgb), .1)}.dropdown-item.warning{color:#f59e0b}.dropdown-item.warning:hover{background-color:#f59e0b1a}.app-container{background-color:var(--bg-primary);flex-direction:column;height:100%;display:flex;position:absolute;inset:0;overflow:hidden}.mobile-topbar{height:var(--topbar-height);background-color:var(--bg-secondary);border-bottom:1px solid var(--border-color);z-index:50;flex-shrink:0;justify-content:space-between;align-items:center;padding:0 1rem;display:flex;position:sticky;top:0}.sidebar{width:var(--sidebar-width);background-color:var(--bg-secondary);border-right:1px solid var(--border-color);z-index:100;flex-direction:column;padding:1.5rem 1rem;transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%)}.sidebar.is-open{transform:translate(0)}.sidebar-overlay{z-index:90;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background-color:#00000080;transition:opacity .3s;position:fixed;inset:0}.sidebar-overlay.is-visible{opacity:1;pointer-events:auto}.main-content{-webkit-overflow-scrolling:touch;flex-direction:column;flex:1;min-width:0;min-height:0;padding:1rem;display:flex;position:relative;overflow:hidden auto}.main-content:before{content:"";pointer-events:none;z-index:0;opacity:.04;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='800' height='800' viewBox='0 0 800 800'%3E%3Cdefs%3E%3Cstyle%3E.geo%7Bfill:none;stroke:%231A4C3E;stroke-linecap:round;stroke-linejoin:round%7D%3C/style%3E%3C/defs%3E%3Cg class='geo'%3E%3C!-- Mountain range 1 --%3E%3Cpath d='M0 520 L60 440 L100 480 L160 380 L200 420 L260 340 L300 390 L340 310 L380 360 L420 280 L460 340 L500 300 L540 360 L580 290 L620 350 L660 310 L700 380 L740 330 L800 400' stroke-width='1.5'/%3E%3C!-- Mountain range 2 (background) --%3E%3Cpath d='M0 580 L80 530 L140 560 L200 500 L280 540 L340 480 L400 520 L460 470 L520 510 L580 460 L640 500 L700 450 L760 490 L800 460' stroke-width='1'/%3E%3C!-- Strata / Rock layers --%3E%3Cpath d='M0 640 Q200 620 400 650 Q600 680 800 640' stroke-width='1.2'/%3E%3Cpath d='M0 670 Q200 690 400 670 Q600 650 800 680' stroke-width='0.8'/%3E%3Cpath d='M0 700 Q150 710 300 695 Q500 675 650 705 Q750 720 800 710' stroke-width='1'/%3E%3Cpath d='M0 730 Q250 740 400 725 Q550 710 700 735 Q780 745 800 740' stroke-width='0.7'/%3E%3C!-- Crystal / Diamond formation (top-right) --%3E%3Cpolygon points='620,80 660,30 700,80 660,140' stroke-width='1.2'/%3E%3Cline x1='660' y1='30' x2='660' y2='140' stroke-width='0.6'/%3E%3Cline x1='620' y1='80' x2='700' y2='80' stroke-width='0.6'/%3E%3Cpolygon points='680,100 710,60 740,100 710,150' stroke-width='0.8'/%3E%3C!-- Crystal formation (bottom-left) --%3E%3Cpolygon points='80,620 110,570 140,620 110,680' stroke-width='1'/%3E%3Cline x1='110' y1='570' x2='110' y2='680' stroke-width='0.5'/%3E%3Cline x1='80' y1='620' x2='140' y2='620' stroke-width='0.5'/%3E%3Cpolygon points='50,650 75,610 100,650 75,700' stroke-width='0.7'/%3E%3C!-- Compass rose (center-right) --%3E%3Ccircle cx='700' cy='400' r='35' stroke-width='1'/%3E%3Ccircle cx='700' cy='400' r='25' stroke-width='0.6'/%3E%3Cline x1='700' y1='360' x2='700' y2='440' stroke-width='0.8'/%3E%3Cline x1='660' y1='400' x2='740' y2='400' stroke-width='0.8'/%3E%3Cline x1='675' y1='375' x2='725' y2='425' stroke-width='0.5'/%3E%3Cline x1='725' y1='375' x2='675' y2='425' stroke-width='0.5'/%3E%3Cpolygon points='700,362 694,382 706,382' fill='%231A4C3E'/%3E%3C!-- Geological cross-section lines --%3E%3Cpath d='M30 200 Q120 180 200 210 Q280 240 380 200 Q480 160 560 200' stroke-width='0.8' stroke-dasharray='8,4'/%3E%3Cpath d='M30 230 Q130 250 220 230 Q320 210 400 240 Q490 270 560 230' stroke-width='0.6' stroke-dasharray='6,3'/%3E%3C!-- Fault line --%3E%3Cline x1='350' y1='150' x2='380' y2='750' stroke-width='1.5' stroke-dasharray='12,6'/%3E%3Cpath d='M340 300 L370 300' stroke-width='2'/%3E%3Cpath d='M345 400 L375 400' stroke-width='2'/%3E%3Cpath d='M350 500 L380 500' stroke-width='2'/%3E%3C!-- Seismic waves --%3E%3Cpath d='M100 300 Q115 280 130 300 Q145 320 160 300 Q175 280 190 300 Q205 320 220 300' stroke-width='0.7'/%3E%3Cpath d='M100 320 Q120 305 140 320 Q160 335 180 320 Q200 305 220 320' stroke-width='0.5'/%3E%3C!-- Topographic contour lines --%3E%3Cellipse cx='550' cy='200' rx='80' ry='40' stroke-width='0.7'/%3E%3Cellipse cx='550' cy='200' rx='60' ry='28' stroke-width='0.6'/%3E%3Cellipse cx='550' cy='200' rx='40' ry='16' stroke-width='0.5'/%3E%3Cellipse cx='550' cy='200' rx='20' ry='8' stroke-width='0.4'/%3E%3C!-- Fossil spiral (ammonite) --%3E%3Cpath d='M160 100 Q160 80 180 80 Q200 80 200 100 Q200 120 175 120 Q150 120 150 95 Q150 70 185 70 Q220 70 220 105 Q220 140 170 140 Q130 140 130 90' stroke-width='0.9'/%3E%3C!-- Rock symbols (small crosses for igneous) --%3E%3Cg stroke-width='0.6'%3E%3Cline x1='430' y1='140' x2='430' y2='155'/%3E%3Cline x1='423' y1='148' x2='437' y2='148'/%3E%3Cline x1='470' y1='160' x2='470' y2='175'/%3E%3Cline x1='463' y1='168' x2='477' y2='168'/%3E%3Cline x1='450' y1='120' x2='450' y2='135'/%3E%3Cline x1='443' y1='128' x2='457' y2='128'/%3E%3C/g%3E%3C!-- Hexagonal basalt columns --%3E%3Cpolygon points='740,560 755,550 770,560 770,580 755,590 740,580' stroke-width='0.7'/%3E%3Cpolygon points='770,560 785,550 800,560 800,580 785,590 770,580' stroke-width='0.7'/%3E%3Cpolygon points='755,590 770,580 785,590 785,610 770,620 755,610' stroke-width='0.7'/%3E%3Cpolygon points='725,590 740,580 755,590 755,610 740,620 725,610' stroke-width='0.7'/%3E%3C/g%3E%3C/svg%3E");background-repeat:repeat;background-size:600px 600px;position:fixed;inset:0}[data-theme=dark] .main-content:before{opacity:.045;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='800' height='800' viewBox='0 0 800 800'%3E%3Cdefs%3E%3Cstyle%3E.geo%7Bfill:none;stroke:%2328B08A;stroke-linecap:round;stroke-linejoin:round%7D%3C/style%3E%3C/defs%3E%3Cg class='geo'%3E%3C!-- Mountain range 1 --%3E%3Cpath d='M0 520 L60 440 L100 480 L160 380 L200 420 L260 340 L300 390 L340 310 L380 360 L420 280 L460 340 L500 300 L540 360 L580 290 L620 350 L660 310 L700 380 L740 330 L800 400' stroke-width='1.5'/%3E%3C!-- Mountain range 2 (background) --%3E%3Cpath d='M0 580 L80 530 L140 560 L200 500 L280 540 L340 480 L400 520 L460 470 L520 510 L580 460 L640 500 L700 450 L760 490 L800 460' stroke-width='1'/%3E%3C!-- Strata / Rock layers --%3E%3Cpath d='M0 640 Q200 620 400 650 Q600 680 800 640' stroke-width='1.2'/%3E%3Cpath d='M0 670 Q200 690 400 670 Q600 650 800 680' stroke-width='0.8'/%3E%3Cpath d='M0 700 Q150 710 300 695 Q500 675 650 705 Q750 720 800 710' stroke-width='1'/%3E%3Cpath d='M0 730 Q250 740 400 725 Q550 710 700 735 Q780 745 800 740' stroke-width='0.7'/%3E%3C!-- Crystal / Diamond formation (top-right) --%3E%3Cpolygon points='620,80 660,30 700,80 660,140' stroke-width='1.2'/%3E%3Cline x1='660' y1='30' x2='660' y2='140' stroke-width='0.6'/%3E%3Cline x1='620' y1='80' x2='700' y2='80' stroke-width='0.6'/%3E%3Cpolygon points='680,100 710,60 740,100 710,150' stroke-width='0.8'/%3E%3C!-- Crystal formation (bottom-left) --%3E%3Cpolygon points='80,620 110,570 140,620 110,680' stroke-width='1'/%3E%3Cline x1='110' y1='570' x2='110' y2='680' stroke-width='0.5'/%3E%3Cline x1='80' y1='620' x2='140' y2='620' stroke-width='0.5'/%3E%3Cpolygon points='50,650 75,610 100,650 75,700' stroke-width='0.7'/%3E%3C!-- Compass rose (center-right) --%3E%3Ccircle cx='700' cy='400' r='35' stroke-width='1'/%3E%3Ccircle cx='700' cy='400' r='25' stroke-width='0.6'/%3E%3Cline x1='700' y1='360' x2='700' y2='440' stroke-width='0.8'/%3E%3Cline x1='660' y1='400' x2='740' y2='400' stroke-width='0.8'/%3E%3Cline x1='675' y1='375' x2='725' y2='425' stroke-width='0.5'/%3E%3Cline x1='725' y1='375' x2='675' y2='425' stroke-width='0.5'/%3E%3Cpolygon points='700,362 694,382 706,382' fill='%2328B08A'/%3E%3C!-- Geological cross-section lines --%3E%3Cpath d='M30 200 Q120 180 200 210 Q280 240 380 200 Q480 160 560 200' stroke-width='0.8' stroke-dasharray='8,4'/%3E%3Cpath d='M30 230 Q130 250 220 230 Q320 210 400 240 Q490 270 560 230' stroke-width='0.6' stroke-dasharray='6,3'/%3E%3C!-- Fault line --%3E%3Cline x1='350' y1='150' x2='380' y2='750' stroke-width='1.5' stroke-dasharray='12,6'/%3E%3Cpath d='M340 300 L370 300' stroke-width='2'/%3E%3Cpath d='M345 400 L375 400' stroke-width='2'/%3E%3Cpath d='M350 500 L380 500' stroke-width='2'/%3E%3C!-- Seismic waves --%3E%3Cpath d='M100 300 Q115 280 130 300 Q145 320 160 300 Q175 280 190 300 Q205 320 220 300' stroke-width='0.7'/%3E%3Cpath d='M100 320 Q120 305 140 320 Q160 335 180 320 Q200 305 220 320' stroke-width='0.5'/%3E%3C!-- Topographic contour lines --%3E%3Cellipse cx='550' cy='200' rx='80' ry='40' stroke-width='0.7'/%3E%3Cellipse cx='550' cy='200' rx='60' ry='28' stroke-width='0.6'/%3E%3Cellipse cx='550' cy='200' rx='40' ry='16' stroke-width='0.5'/%3E%3Cellipse cx='550' cy='200' rx='20' ry='8' stroke-width='0.4'/%3E%3C!-- Fossil spiral (ammonite) --%3E%3Cpath d='M160 100 Q160 80 180 80 Q200 80 200 100 Q200 120 175 120 Q150 120 150 95 Q150 70 185 70 Q220 70 220 105 Q220 140 170 140 Q130 140 130 90' stroke-width='0.9'/%3E%3C!-- Rock symbols (small crosses for igneous) --%3E%3Cg stroke-width='0.6'%3E%3Cline x1='430' y1='140' x2='430' y2='155'/%3E%3Cline x1='423' y1='148' x2='437' y2='148'/%3E%3Cline x1='470' y1='160' x2='470' y2='175'/%3E%3Cline x1='463' y1='168' x2='477' y2='168'/%3E%3Cline x1='450' y1='120' x2='450' y2='135'/%3E%3Cline x1='443' y1='128' x2='457' y2='128'/%3E%3C/g%3E%3C!-- Hexagonal basalt columns --%3E%3Cpolygon points='740,560 755,550 770,560 770,580 755,590 740,580' stroke-width='0.7'/%3E%3Cpolygon points='770,560 785,550 800,560 800,580 785,590 770,580' stroke-width='0.7'/%3E%3Cpolygon points='755,590 770,580 785,590 785,610 770,620 755,610' stroke-width='0.7'/%3E%3Cpolygon points='725,590 740,580 755,590 755,610 740,620 725,610' stroke-width='0.7'/%3E%3C/g%3E%3C/svg%3E")}.main-content>*{z-index:1;position:relative}@media (width>=1024px){.app-container{flex-direction:row}.mobile-topbar{display:none}.sidebar{width:var(--sidebar-width);padding:2rem 1.5rem;transition:width .3s,padding .3s,opacity .3s;position:relative;transform:translate(0)}.sidebar.is-collapsed{opacity:0;border-right:none;width:0;padding:0;overflow:hidden}.sidebar-overlay{display:none}.main-content{padding:2rem 3rem;transition:padding .3s}}.hidden-mobile{display:none!important}@media (width>=1024px){.hidden-mobile{display:flex!important}.hidden-desktop{display:none!important}}.table-responsive{-webkit-overflow-scrolling:touch;width:100%;overflow-x:auto}.responsive-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:2rem;display:flex}@media (width<=639px){.responsive-header{flex-direction:column;align-items:stretch}.responsive-header>div:last-child{flex-direction:column;width:100%;display:flex}.responsive-header button{width:100%!important}}.footer-grid{z-index:1;grid-template-columns:1.5fr 1fr 2fr 1.2fr;gap:3rem;display:grid;position:relative}@media (width<=1024px){.footer-grid{grid-template-columns:1fr 1fr;gap:2rem}}@media (width<=768px){.footer-grid{grid-template-columns:1fr;gap:2.5rem}}@media (width<=640px){.footer-sub{text-align:center;flex-direction:column!important;gap:1.5rem!important}}:root{--lmsui-radius:16px;--lmsui-radius-sm:12px;--lmsui-shadow:0 1px 2px #1018280a, 0 8px 24px -12px #1018281f;--lmsui-shadow-hover:0 4px 8px #1018280f, 0 18px 40px -16px #10182838;--lmsui-grad:linear-gradient(135deg, var(--accent-primary), var(--accent-secondary))}[data-theme=dark]{--lmsui-shadow:0 1px 2px #0000004d, 0 8px 24px -12px #00000080;--lmsui-shadow-hover:0 4px 8px #0006, 0 18px 40px -16px #000000a6}.lmsui-page{width:100%;max-width:1500px;margin:0 auto;animation:.4s lmsuiIn}@keyframes lmsuiIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.lmsui-card{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--lmsui-radius);box-shadow:var(--lmsui-shadow);transition:transform .2s,box-shadow .2s,border-color .2s}.lmsui-card.hoverable:hover{box-shadow:var(--lmsui-shadow-hover);border-color:rgba(var(--accent-primary-rgb), .45);transform:translateY(-3px)}.lmsui-hero{background:radial-gradient(900px 260px at 90% -30%, rgba(var(--accent-primary-rgb), .35), transparent 60%), linear-gradient(135deg, #0f1f1a 0%, #14372c 55%, #0e2a21 100%);color:#fff;border-radius:20px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:2rem;margin-bottom:1.8rem;padding:clamp(1.6rem,3vw,2.4rem) clamp(1.4rem,3vw,2.6rem);display:flex;position:relative;overflow:hidden}.lmsui-hero:after{content:"";pointer-events:none;background-image:radial-gradient(#ffffff17 1px,#0000 1px);background-size:24px 24px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(110deg,#0000 35%,#000 100%);mask-image:linear-gradient(110deg,#0000 35%,#000 100%)}.lmsui-hero .lh-date{letter-spacing:.06em;text-transform:uppercase;color:#a7dcc8;align-items:center;gap:.45rem;margin-bottom:.7rem;font-size:.78rem;font-weight:600;display:inline-flex}.lmsui-hero h1{color:#fff;margin:0 0 .45rem;font-family:Outfit,sans-serif;font-size:clamp(1.5rem,3.2vw,2.1rem);font-weight:700}.lmsui-hero p{color:#ffffffb8;max-width:560px;margin:0;font-size:.98rem}.lmsui-hero .lh-right{z-index:1;align-items:center;gap:1.4rem;display:flex;position:relative}.lmsui-ring{flex-shrink:0;width:108px;height:108px;position:relative}.lmsui-ring svg{transform:rotate(-90deg)}.lmsui-ring .ring-bg{stroke:#ffffff26}.lmsui-ring .ring-val{stroke:url(#lmsuiRingGrad);stroke-linecap:round;transition:stroke-dashoffset 1s}.lmsui-ring .ring-center{color:#fff;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.lmsui-ring .ring-center b{font-family:Outfit,sans-serif;font-size:1.35rem}.lmsui-ring .ring-center span{text-transform:uppercase;letter-spacing:.08em;color:#ffffffa6;font-size:.62rem}.lmsui-ring.on-card .ring-bg{stroke:var(--border-color)}.lmsui-ring.on-card .ring-center{color:var(--text-primary)}.lmsui-ring.on-card .ring-center span{color:var(--text-secondary)}.lmsui-kpis{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:1.1rem;margin-bottom:2rem;display:grid}.lmsui-kpi{align-items:center;gap:1rem;padding:1.25rem 1.4rem;display:flex}.lmsui-kpi .k-icon{color:#fff;border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;display:flex}.lmsui-kpi .k-icon.green{background:var(--lmsui-grad);box-shadow:0 8px 18px -8px rgba(var(--accent-primary-rgb), .6)}.lmsui-kpi .k-icon.blue{background:linear-gradient(135deg,#3b82f6,#1d4ed8);box-shadow:0 8px 18px -8px #3b82f68c}.lmsui-kpi .k-icon.amber{background:linear-gradient(135deg,#f59e0b,#d97706);box-shadow:0 8px 18px -8px #f59e0b8c}.lmsui-kpi .k-icon.violet{background:linear-gradient(135deg,#8b5cf6,#6d28d9);box-shadow:0 8px 18px -8px #8b5cf68c}.lmsui-kpi h3{color:var(--text-primary);margin:0;font-family:Outfit,sans-serif;font-size:1.65rem;font-weight:700;line-height:1.1}.lmsui-kpi p{color:var(--text-secondary);margin:.2rem 0 0;font-size:.83rem}.lmsui-sectiontitle{justify-content:space-between;align-items:center;gap:1rem;margin:0 0 1.1rem;display:flex}.lmsui-sectiontitle h2{color:var(--text-primary);align-items:center;gap:.6rem;margin:0;font-family:Outfit,sans-serif;font-size:1.15rem;font-weight:700;display:flex}.lmsui-sectiontitle h2 .st-ico{background:rgba(var(--accent-primary-rgb), .12);width:30px;height:30px;color:var(--accent-primary);border-radius:9px;justify-content:center;align-items:center;display:inline-flex}.lmsui-link{color:var(--accent-primary);cursor:pointer;background:0 0;border:none;align-items:center;gap:.3rem;font-size:.85rem;font-weight:600;display:inline-flex}.lmsui-link:hover{text-decoration:underline}.lmsui-courselist{flex-direction:column;gap:1rem;display:flex}.lmsui-course{cursor:pointer;align-items:stretch;gap:0;display:flex;overflow:hidden}.lmsui-course.locked{opacity:.62;filter:grayscale(.3);cursor:not-allowed}.lmsui-course .c-thumb{background:var(--lmsui-grad);color:#fffffff2;flex-shrink:0;justify-content:center;align-items:center;width:118px;display:flex;position:relative}.lmsui-course .c-thumb:after{content:"";background-image:radial-gradient(#ffffff2e 1px,#0000 1px);background-size:14px 14px;position:absolute;inset:0}.lmsui-course .c-thumb .c-num{letter-spacing:.08em;color:#fffc;font-size:.68rem;font-weight:700;position:absolute;top:8px;left:10px}.lmsui-course .c-body{flex-direction:column;flex:1;gap:.55rem;min-width:0;padding:1.05rem 1.3rem;display:flex}.lmsui-course .c-title{color:var(--text-primary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-family:Outfit,sans-serif;font-size:1rem;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.lmsui-course .c-meta{flex-wrap:wrap;gap:.5rem;display:flex}.lmsui-chip{color:var(--text-secondary);background:var(--bg-primary);border:1px solid var(--border-color);border-radius:99px;align-items:center;gap:.35rem;padding:.22rem .65rem;font-size:.72rem;font-weight:600;display:inline-flex}.lmsui-chip.done{color:var(--accent-primary);border-color:rgba(var(--accent-primary-rgb), .4);background:rgba(var(--accent-primary-rgb), .08)}.lmsui-chip.locked{color:#ef4444;background:#ef444412;border-color:#ef444459}.lmsui-course .c-progress{align-items:center;gap:.8rem;margin-top:auto;display:flex}.lmsui-bar{background:var(--border-color);border-radius:99px;flex:1;height:8px;overflow:hidden}.lmsui-bar>div{background:var(--lmsui-grad);border-radius:99px;height:100%;transition:width .9s}.lmsui-course .c-pct{color:var(--text-primary);text-align:right;min-width:38px;font-size:.82rem;font-weight:700}.lmsui-course .c-action{align-items:center;padding:0 1.2rem 0 .4rem;display:flex}.lmsui-cta{background:var(--lmsui-grad);color:#fff;cursor:pointer;white-space:nowrap;box-shadow:0 6px 16px -8px rgba(var(--accent-primary-rgb), .65);border:none;border-radius:12px;align-items:center;gap:.5rem;padding:.65rem 1.25rem;font-size:.88rem;font-weight:600;transition:transform .15s,box-shadow .15s,opacity .15s;display:inline-flex}.lmsui-cta:hover:not(:disabled){box-shadow:0 10px 22px -8px rgba(var(--accent-primary-rgb), .75);transform:translateY(-2px)}.lmsui-cta:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.lmsui-cta.ghost{color:var(--accent-primary);border:1.5px solid rgba(var(--accent-primary-rgb), .5);box-shadow:none;background:0 0}.lmsui-cta.ghost:hover:not(:disabled){background:rgba(var(--accent-primary-rgb), .08)}.lmsui-panel{padding:1.3rem 1.4rem}.lmsui-panel h3{color:var(--text-primary);align-items:center;gap:.55rem;margin:0 0 1rem;font-family:Outfit,sans-serif;font-size:1rem;font-weight:700;display:flex}.lmsui-eval{border-radius:var(--lmsui-radius-sm);border:1px solid var(--border-color);background:var(--bg-primary);cursor:pointer;align-items:center;gap:.9rem;margin-bottom:.65rem;padding:.75rem .8rem;transition:border-color .15s,transform .15s;display:flex}.lmsui-eval:hover{border-color:rgba(var(--accent-primary-rgb), .5);transform:translate(3px)}.lmsui-eval .e-date{background:rgba(var(--accent-primary-rgb), .1);border:1px solid rgba(var(--accent-primary-rgb), .25);width:46px;height:50px;color:var(--accent-primary);border-radius:10px;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;display:flex}.lmsui-eval .e-date b{font-family:Outfit,sans-serif;font-size:1.05rem;line-height:1}.lmsui-eval .e-date span{text-transform:uppercase;letter-spacing:.05em;font-size:.6rem;font-weight:700}.lmsui-eval .e-body{flex:1;min-width:0}.lmsui-eval .e-body h4{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;margin:0 0 .15rem;font-size:.9rem;overflow:hidden}.lmsui-eval .e-body p{color:var(--text-secondary);align-items:center;gap:.3rem;margin:0;font-size:.75rem;display:flex}.lmsui-eval .e-arrow{color:var(--text-secondary);flex-shrink:0}.lmsui-empty{text-align:center;color:var(--text-secondary);border:1.5px dashed var(--border-color);border-radius:var(--lmsui-radius-sm);padding:1.6rem 1rem;font-size:.88rem}.cv-side-head{border-bottom:1px solid var(--border-color);padding:1.3rem 1.3rem 1.1rem}.cv-side-head h2{color:var(--text-primary);margin:0 0 .35rem;font-family:Outfit,sans-serif;font-size:1.02rem;font-weight:700;line-height:1.45}.cv-side-head .cv-hours{color:var(--text-secondary);align-items:center;gap:.4rem;font-size:.78rem;display:inline-flex}.cv-side-progress{border-radius:var(--lmsui-radius-sm);background:rgba(var(--accent-primary-rgb), .07);border:1px solid rgba(var(--accent-primary-rgb), .2);margin:1rem 1.3rem;padding:.9rem 1rem}.cv-side-progress .sp-row{color:var(--text-secondary);justify-content:space-between;margin-bottom:.5rem;font-size:.78rem;font-weight:600;display:flex}.cv-side-progress .sp-row b{color:var(--accent-primary)}.cv-mod{border-radius:var(--lmsui-radius-sm);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;align-items:center;gap:.75rem;width:100%;margin-bottom:.45rem;padding:.8rem .9rem;transition:all .18s;display:flex}.cv-mod:hover:not(:disabled){background:rgba(var(--accent-primary-rgb), .06)}.cv-mod.active{background:rgba(var(--accent-primary-rgb), .1);border-color:rgba(var(--accent-primary-rgb), .35)}.cv-mod:disabled{opacity:.5;cursor:not-allowed}.cv-mod .m-idx{background:var(--bg-primary);border:1px solid var(--border-color);width:34px;height:34px;color:var(--text-secondary);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;font-family:Outfit,sans-serif;font-size:.85rem;font-weight:700;display:flex}.cv-mod.active .m-idx,.cv-mod.done .m-idx{background:var(--lmsui-grad);color:#fff;border:none}.cv-mod .m-body{flex:1;min-width:0}.cv-mod .m-title{color:var(--text-primary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.85rem;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.cv-mod .m-meta{color:var(--text-secondary);margin-top:.15rem;font-size:.72rem}.cv-mod .m-state{color:var(--text-secondary);flex-shrink:0;display:flex}.cv-mod .m-state .ok{color:var(--accent-primary)}.cv-hero{background:radial-gradient(1000px 300px at 88% -35%, rgba(var(--accent-primary-rgb), .4), transparent 62%), linear-gradient(135deg, #0f1f1a 0%, #14372c 55%, #0e2a21 100%);color:#fff;border-radius:20px;margin-bottom:2.2rem;padding:clamp(1.8rem,3.4vw,2.8rem);position:relative;overflow:hidden}.cv-hero:after{content:"";pointer-events:none;background-image:radial-gradient(#ffffff17 1px,#0000 1px);background-size:24px 24px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(110deg,#0000 30%,#000 100%);mask-image:linear-gradient(110deg,#0000 30%,#000 100%)}.cv-hero .h-kicker{letter-spacing:.1em;text-transform:uppercase;color:#a7dcc8;background:#ffffff14;border:1px solid #ffffff24;border-radius:99px;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.35rem .85rem;font-size:.74rem;font-weight:700;display:inline-flex}.cv-hero h1{color:#fff;max-width:860px;margin:0 0 .8rem;font-family:Outfit,sans-serif;font-size:clamp(1.45rem,3.2vw,2.1rem);font-weight:700;line-height:1.25}.cv-hero p{color:#ffffffbd;max-width:760px;margin:0 0 1.2rem;font-size:.98rem;line-height:1.7}.cv-hero .h-meta{z-index:1;flex-wrap:wrap;gap:.6rem;display:flex;position:relative}.cv-hero .h-chip{color:#ffffffe0;background:#ffffff17;border:1px solid #ffffff24;border-radius:99px;align-items:center;gap:.4rem;padding:.38rem .9rem;font-size:.8rem;display:inline-flex}.cv-modgrid{grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr));gap:1.4rem;display:grid}.cv-modcard{cursor:pointer;flex-direction:column;padding:1.5rem 1.6rem;display:flex;position:relative}.cv-modcard.locked{opacity:.6;cursor:not-allowed}.cv-modcard .mc-top{justify-content:space-between;align-items:flex-start;margin-bottom:1rem;display:flex}.cv-modcard .mc-icon{background:var(--lmsui-grad);color:#fff;width:50px;height:50px;box-shadow:0 8px 18px -8px rgba(var(--accent-primary-rgb), .55);border-radius:14px;justify-content:center;align-items:center;display:flex}.cv-modcard.locked .mc-icon{background:var(--border-color);color:var(--text-secondary);box-shadow:none}.cv-modcard .mc-state{font-size:.72rem;font-weight:700}.cv-modcard h2{color:var(--text-primary);margin:0 0 .4rem;font-family:Outfit,sans-serif;font-size:1.05rem;font-weight:700;line-height:1.4}.cv-modcard .mc-desc{color:var(--text-secondary);margin:0 0 1rem;font-size:.84rem;line-height:1.55}.cv-modcard .mc-progress{align-items:center;gap:.7rem;margin-bottom:1rem;display:flex}.cv-modcard .mc-progress span{color:var(--text-secondary);white-space:nowrap;font-size:.75rem;font-weight:700}.cv-modcard .mc-lessons{flex-direction:column;gap:.15rem;margin-top:auto;display:flex}.cv-lessonmini{color:var(--text-secondary);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:9px;align-items:center;gap:.6rem;width:100%;padding:.5rem .55rem;font-size:.84rem;line-height:1.35;transition:background .15s,color .15s;display:flex}.cv-lessonmini:hover{background:rgba(var(--accent-primary-rgb), .07);color:var(--text-primary)}.cv-lessonmini .lm-ico{flex-shrink:0;display:flex}.cv-lessonmini .lm-ico.done{color:var(--accent-primary)}.cv-lessonmini .lm-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.cv-lessonmore{border:none;border-top:1px dashed var(--border-color);color:var(--accent-primary);cursor:pointer;background:0 0;border-radius:0 0 9px 9px;justify-content:center;align-items:center;gap:.35rem;width:100%;margin-top:.4rem;padding:.5rem .55rem;font-size:.8rem;font-weight:600;transition:background .15s,color .15s;display:flex}.cv-lessonmore:hover{background:rgba(var(--accent-primary-rgb), .08)}.cv-lessonmore svg{transition:transform .15s}.cv-lessonmore:hover svg{transform:translate(2px)}.cv-lessonrows{flex-direction:column;gap:.8rem;display:flex}.cv-lessonrow{text-align:left;cursor:pointer;background:var(--bg-secondary);align-items:center;gap:1.1rem;width:100%;padding:1.05rem 1.3rem;display:flex}.cv-lessonrow:disabled{cursor:not-allowed}.cv-lessonrow .lr-status{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-family:Outfit,sans-serif;font-size:.95rem;font-weight:700;display:flex}.cv-lessonrow .lr-status.done{background:rgba(var(--accent-primary-rgb), .12);color:var(--accent-primary);border:1.5px solid rgba(var(--accent-primary-rgb), .45)}.cv-lessonrow .lr-status.current{background:var(--lmsui-grad);color:#fff;box-shadow:0 6px 14px -6px rgba(var(--accent-primary-rgb), .6)}.cv-lessonrow .lr-status.locked{background:var(--bg-primary);color:var(--text-secondary);border:1.5px solid var(--border-color)}.cv-lessonrow .lr-body{flex:1;min-width:0}.cv-lessonrow .lr-body h3{color:var(--text-primary);margin:0 0 .2rem;font-size:.98rem;font-weight:600;line-height:1.4}.cv-lessonrow .lr-body p{color:var(--text-secondary);align-items:center;gap:.35rem;margin:0;font-size:.78rem;display:flex}.cv-lessonrow .lr-go{color:var(--text-secondary);flex-shrink:0;transition:transform .15s,color .15s}.cv-lessonrow:hover:not(:disabled) .lr-go{color:var(--accent-primary);transform:translate(4px)}.cv-lessonrow .lr-badge{text-transform:uppercase;letter-spacing:.06em;border-radius:99px;flex-shrink:0;padding:.28rem .7rem;font-size:.7rem;font-weight:700}.cv-lessonrow .lr-badge.done{color:var(--accent-primary);background:rgba(var(--accent-primary-rgb), .1)}.cv-lessonrow .lr-badge.locked{color:var(--text-secondary);background:var(--bg-primary);border:1px solid var(--border-color)}@media (width<=720px){.lmsui-course{flex-direction:column}.lmsui-course .c-thumb{width:100%;height:64px}.lmsui-course .c-action{padding:0 1.3rem 1.1rem}.lmsui-course .c-action .lmsui-cta,.lmsui-hero .lh-right{justify-content:center;width:100%}.cv-lessonrow{flex-wrap:wrap}}
