@import"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;700&display=swap";:root{--color-bg-primary: #0a0e17;--color-bg-secondary: #111827;--color-bg-card: #1a2332;--color-bg-hover: #243044;--color-accent: #00f0ff;--color-accent-dim: #00a8b3;--color-accent-glow: rgba(0, 240, 255, .15);--color-success: #10b981;--color-warning: #f59e0b;--color-danger: #ef4444;--color-text-primary: #f1f5f9;--color-text-secondary: #94a3b8;--color-text-muted: #64748b;--color-border: #2d3a4f;--color-border-hover: #3d4f6a;--font-sans: "Noto Sans SC", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px var(--color-accent-glow)}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-sans);background:var(--color-bg-primary);color:var(--color-text-primary);line-height:1.6;min-height:100vh;background-image:radial-gradient(ellipse at 20% 0%,rgba(0,240,255,.05) 0%,transparent 50%),radial-gradient(ellipse at 80% 100%,rgba(0,240,255,.03) 0%,transparent 50%)}#root{min-height:100vh;display:flex;flex-direction:column}a{color:var(--color-accent);text-decoration:none;transition:color .2s ease}a:hover{color:var(--color-text-primary)}button{font-family:var(--font-sans);cursor:pointer;border:none;outline:none;transition:all .2s ease}button:disabled{opacity:.6;cursor:not-allowed}input{font-family:var(--font-sans)}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:1rem}.loading-spinner{width:48px;height:48px;border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.app-header{position:sticky;top:0;z-index:100;background:#0a0e17d9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border)}.header-content{max-width:1200px;margin:0 auto;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between}.logo{font-size:1.25rem;font-weight:700;color:var(--color-accent);letter-spacing:-.02em}.nav-links{display:flex;align-items:center;gap:1.5rem}.nav-links a{font-size:.9rem;font-weight:500;color:var(--color-text-secondary);padding:.5rem 0;position:relative}.nav-links a:after{content:"";position:absolute;bottom:0;left:0;width:0;height:2px;background:var(--color-accent);transition:width .2s ease}.nav-links a:hover{color:var(--color-text-primary)}.nav-links a:hover:after{width:100%}.username{font-family:var(--font-mono);font-size:.85rem;color:var(--color-text-muted)}.logout-btn{font-size:.85rem;font-weight:500;padding:.5rem 1rem;background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md)}.logout-btn:hover{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.main-content{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:2rem 1.5rem}.auth-container{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 4rem);padding:2rem}.auth-card{width:100%;max-width:400px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:2.5rem;box-shadow:var(--shadow-lg)}.auth-header{text-align:center;margin-bottom:2rem}.auth-header h2{font-size:1.75rem;font-weight:700;margin-bottom:.5rem;background:linear-gradient(135deg,var(--color-text-primary),var(--color-accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.auth-header p{color:var(--color-text-secondary);font-size:.95rem}.auth-form{display:flex;flex-direction:column;gap:1.25rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{font-size:.85rem;font-weight:500;color:var(--color-text-secondary)}.form-group input{padding:.875rem 1rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:1rem;transition:all .2s ease}.form-group input::placeholder{color:var(--color-text-muted)}.form-group input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-glow)}.error-message{padding:.875rem 1rem;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:var(--radius-md);color:var(--color-danger);font-size:.9rem}.auth-button{margin-top:.5rem;padding:1rem;background:linear-gradient(135deg,var(--color-accent),var(--color-accent-dim));border-radius:var(--radius-md);color:var(--color-bg-primary);font-size:1rem;font-weight:600;box-shadow:var(--shadow-glow)}.auth-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 0 30px var(--color-accent-glow)}.auth-footer{margin-top:1.5rem;text-align:center;color:var(--color-text-secondary);font-size:.9rem}.auth-footer a{font-weight:500}.pending-container{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 4rem);padding:2rem}.pending-card{width:100%;max-width:480px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:3rem;text-align:center;box-shadow:var(--shadow-lg)}.pending-icon{margin-bottom:1.5rem;color:var(--color-warning);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.pending-card h2{font-size:1.5rem;font-weight:700;margin-bottom:1rem}.pending-message{font-size:1.1rem;margin-bottom:.75rem}.pending-description{color:var(--color-text-secondary);margin-bottom:2rem;line-height:1.7}.pending-tips{text-align:left;background:var(--color-bg-secondary);border-radius:var(--radius-md);padding:1.25rem;margin-bottom:2rem}.pending-tips h4{font-size:.9rem;font-weight:600;margin-bottom:.75rem;color:var(--color-text-secondary)}.pending-tips ul{list-style:none;display:flex;flex-direction:column;gap:.5rem}.pending-tips li{font-size:.9rem;color:var(--color-text-secondary);padding-left:1.25rem;position:relative}.pending-tips li:before{content:"•";position:absolute;left:0;color:var(--color-accent)}.logout-link{font-size:.9rem;color:var(--color-text-muted);background:none;padding:.5rem}.logout-link:hover{color:var(--color-danger)}.course-container{max-width:900px;margin:0 auto}.course-header{margin-bottom:2rem}.course-header h2{font-size:2rem;font-weight:700;margin-bottom:.5rem}.course-header p{color:var(--color-text-secondary)}.course-grid{display:flex;flex-direction:column;gap:1rem}.course-card{display:flex;align-items:center;gap:1.5rem;padding:1.5rem;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);transition:all .2s ease}.course-card:hover{background:var(--color-bg-hover);border-color:var(--color-border-hover);transform:translate(4px)}.course-number{font-family:var(--font-mono);font-size:1.5rem;font-weight:700;color:var(--color-accent);min-width:48px}.course-title{flex:1;font-size:1.1rem;font-weight:600;color:var(--color-text-primary)}.course-meta{font-size:.85rem;color:var(--color-text-muted)}.course-arrow{color:var(--color-text-muted);transition:transform .2s ease}.course-card:hover .course-arrow{transform:translate(4px);color:var(--color-accent)}.course-loading,.course-error,.course-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;gap:1rem;text-align:center}.course-error button,.admin-error button{padding:.75rem 1.5rem;background:var(--color-accent);color:var(--color-bg-primary);border-radius:var(--radius-md);font-weight:500}.empty-icon{color:var(--color-text-muted);opacity:.5}.course-empty h3{font-size:1.25rem;color:var(--color-text-secondary)}.course-empty p{color:var(--color-text-muted)}.course-detail{max-width:800px;margin:0 auto}.course-detail-header{margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid var(--color-border)}.back-link{display:inline-flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--color-text-secondary);margin-bottom:1rem}.back-link:hover{color:var(--color-accent)}.course-detail-header h1{font-size:2rem;font-weight:700;margin-bottom:.75rem;line-height:1.3}.course-detail-meta{font-size:.9rem;color:var(--color-text-muted)}.markdown-body{line-height:1.8;color:var(--color-text-primary)}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:2rem;margin-bottom:1rem;font-weight:700;line-height:1.4}.markdown-body h1{font-size:1.75rem}.markdown-body h2{font-size:1.5rem;border-bottom:1px solid var(--color-border);padding-bottom:.5rem}.markdown-body h3{font-size:1.25rem}.markdown-body h4{font-size:1.1rem}.markdown-body p{margin-bottom:1rem}.markdown-body ul,.markdown-body ol{margin-bottom:1rem;padding-left:2rem}.markdown-body li{margin-bottom:.5rem}.markdown-body blockquote{margin:1.5rem 0;padding:1rem 1.5rem;background:var(--color-bg-secondary);border-left:4px solid var(--color-accent);border-radius:0 var(--radius-md) var(--radius-md) 0;color:var(--color-text-secondary)}.markdown-body code{font-family:var(--font-mono);font-size:.9em;padding:.2em .4em;background:var(--color-bg-secondary);border-radius:var(--radius-sm);color:var(--color-accent)}.markdown-body pre{margin:1.5rem 0;padding:1.25rem;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow-x:auto}.markdown-body pre code{padding:0;background:none;color:var(--color-text-primary);font-size:.9rem;line-height:1.6}.markdown-body img{max-width:100%;height:auto;border-radius:var(--radius-md);margin:1.5rem 0}.markdown-body a{color:var(--color-accent);text-decoration:underline;text-underline-offset:2px}.markdown-body a:hover{color:var(--color-text-primary)}.markdown-body table{width:100%;margin:1.5rem 0;border-collapse:collapse}.markdown-body th,.markdown-body td{padding:.75rem 1rem;border:1px solid var(--color-border);text-align:left}.markdown-body th{background:var(--color-bg-secondary);font-weight:600}.markdown-body hr{margin:2rem 0;border:none;border-top:1px solid var(--color-border)}.admin-container{max-width:900px;margin:0 auto}.admin-header{margin-bottom:2rem}.admin-header h2{font-size:2rem;font-weight:700;margin-bottom:.5rem}.admin-header p{color:var(--color-text-secondary)}.admin-section{margin-bottom:3rem}.admin-section h3{font-size:1.1rem;font-weight:600;margin-bottom:1rem;color:var(--color-text-secondary)}.user-table{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.user-table-header{display:grid;grid-template-columns:1fr 140px 200px;gap:1rem;padding:1rem 1.5rem;background:var(--color-bg-secondary);font-size:.85rem;font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.admin-section:last-child .user-table-header{grid-template-columns:1fr 140px 100px 200px}.user-row{display:grid;grid-template-columns:1fr 140px 200px;gap:1rem;align-items:center;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.admin-section:last-child .user-row{grid-template-columns:1fr 140px 100px 200px}.user-row.pending{background:#f59e0b0d}.user-name{font-family:var(--font-mono);font-weight:500;display:flex;align-items:center;gap:.5rem}.admin-badge{font-size:.7rem;font-family:var(--font-sans);padding:.2rem .5rem;background:var(--color-accent-glow);color:var(--color-accent);border-radius:var(--radius-sm);text-transform:uppercase;letter-spacing:.05em}.user-date{font-size:.9rem;color:var(--color-text-muted)}.user-role{font-size:.9rem;color:var(--color-text-secondary)}.user-actions{display:flex;gap:.5rem;flex-wrap:wrap}.user-actions button{font-size:.8rem;font-weight:500;padding:.5rem .875rem;border-radius:var(--radius-md)}.activate-btn{background:var(--color-success);color:#fff}.activate-btn:hover:not(:disabled){background:#0d9c6e}.deactivate-btn{background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border)}.deactivate-btn:hover:not(:disabled){background:var(--color-danger);border-color:var(--color-danger);color:#fff}.grant-admin-btn{background:transparent;color:var(--color-accent);border:1px solid var(--color-accent)}.grant-admin-btn:hover:not(:disabled){background:var(--color-accent);color:var(--color-bg-primary)}.revoke-admin-btn{background:transparent;color:var(--color-warning);border:1px solid var(--color-warning)}.revoke-admin-btn:hover:not(:disabled){background:var(--color-warning);color:var(--color-bg-primary)}.no-users{padding:2rem;text-align:center;color:var(--color-text-muted)}.admin-loading,.admin-error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;gap:1rem}@media(max-width:768px){.header-content{flex-direction:column;gap:1rem}.nav-links{flex-wrap:wrap;justify-content:center}.auth-card,.pending-card{padding:1.5rem}.course-card{flex-direction:column;align-items:flex-start;gap:.75rem}.course-number{font-size:1rem}.course-arrow{display:none}.user-table-header,.user-row{grid-template-columns:1fr!important;gap:.5rem}.user-table-header span:not(:first-child){display:none}.user-row{padding:1.25rem 1rem}.user-actions{margin-top:.5rem}}
