:root{color:#1f1f1f;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;background-color:#f7f9fa;--brand-primary: #0056d2;--brand-primary-dark: #003d99;--brand-accent: #0056d2;--surface: #ffffff;--surface-soft: #fafbfc;--border: #e5e7eb;--muted: #6b7280;--success: #12805c;--info: #0056d2;--error: #c1121f;--text-primary: #1f1f1f;--text-secondary: #4b5563;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--font-xs: .75rem;--font-sm: .875rem;--font-base: 1rem;--font-lg: 1.125rem;--font-xl: 1.25rem;--font-2xl: 1.5rem;--font-3xl: 2rem;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 1px 3px rgba(0, 0, 0, .08);--shadow-lg: 0 4px 6px rgba(0, 0, 0, .1);--shadow-xl: 0 10px 15px rgba(0, 0, 0, .1);--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease}*{box-sizing:border-box}body{margin:0;padding:0;background:#f7f9fa;color:var(--text-primary);font-size:var(--font-base);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-shell{min-height:100vh;display:flex;flex-direction:column}.site-header{background:var(--surface);color:var(--text-primary);padding:var(--spacing-md);display:flex;flex-direction:column;gap:var(--spacing-md);box-shadow:var(--shadow-md);border-bottom:1px solid var(--border);position:relative}@media (min-width: 768px){.site-header{padding:var(--spacing-md) var(--spacing-xl);display:grid;grid-template-columns:auto 1fr auto;align-items:center}}@media (min-width: 1024px){.site-header{padding:var(--spacing-md) var(--spacing-2xl)}}.brand{display:flex;flex-direction:column;gap:var(--spacing-xs);align-items:flex-start}.brand-mark{font-size:var(--font-xl);font-weight:700;letter-spacing:.02em;color:var(--brand-primary)}.brand-subtitle{font-size:var(--font-xs);color:var(--text-secondary);font-weight:400}@media (min-width: 768px){.brand-mark{font-size:var(--font-2xl)}.brand-subtitle{font-size:var(--font-sm)}}.main-nav{display:flex;flex-direction:column;gap:var(--spacing-sm);width:100%}.auth-nav{display:flex;gap:var(--spacing-sm);align-items:center;flex-wrap:wrap}@media (min-width: 768px){.main-nav{flex-direction:row;justify-content:center;width:auto}}.mobile-menu-toggle{display:block;background:none;border:none;cursor:pointer;padding:var(--spacing-sm);z-index:1001;position:absolute;top:var(--spacing-md);right:var(--spacing-md)}@media (min-width: 768px){.mobile-menu-toggle{display:none}}.hamburger{display:flex;flex-direction:column;gap:5px;width:28px}.hamburger span{display:block;height:2px;background:var(--text-primary);border-radius:2px;transition:all .3s ease}.hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.hamburger.open span:nth-child(2){opacity:0}.hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.nav-button{border:1px solid transparent;background:transparent;color:var(--text-primary);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-sm);font-weight:500;cursor:pointer;transition:all var(--transition-base);width:100%;text-align:left}.nav-button:hover{background:var(--surface-soft)}.nav-button.active{background:var(--brand-primary);color:#fff}.btn{border:none;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-sm);font-weight:500;cursor:pointer;transition:all var(--transition-base);display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);width:100%}.btn-primary{background:var(--brand-primary);color:#fff}.btn-primary:hover{background:var(--brand-primary-dark)}.btn-secondary{background:var(--surface-soft);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--border)}.btn-danger{background:var(--error);color:#fff}.btn-danger:hover{background:#a00f1a}.btn-sm{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-xs)}.btn-lg{padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-base)}@media (min-width: 768px){.nav-button{width:auto;text-align:center}.btn{width:auto}}.alert{width:100%;margin:var(--spacing-md) 0;border-radius:var(--radius-lg);padding:var(--spacing-md);background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;box-shadow:var(--shadow-lg)}.alert.info{background:#e0f2fe;border-color:#bae6fd;color:#075985}.alert.error{background:#fee2e2;border-color:#fecaca;color:var(--error)}.alert-title{font-weight:600;margin-bottom:var(--spacing-xs)}@media (min-width: 768px){.alert{width:min(960px,92vw);margin:var(--spacing-lg) auto 0}}.site-main{flex:1;width:100%;padding:var(--spacing-md);display:flex;flex-direction:column;gap:var(--spacing-lg)}@media (min-width: 768px){.site-main{width:min(1080px,92vw);margin:var(--spacing-xl) auto;padding:0}}.form{display:flex;flex-direction:column;gap:var(--spacing-md)}.form-group{display:flex;flex-direction:column;gap:var(--spacing-xs)}.form-label{font-size:var(--font-sm);font-weight:500;color:var(--text-primary)}.form-input,.form-select,.form-textarea{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--font-base);color:var(--text-primary);background:var(--surface);transition:border-color var(--transition-base);width:100%}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:var(--brand-primary);box-shadow:0 0 0 3px #0056d21a}.form-input-error{border-color:var(--error)}.form-error{font-size:var(--font-xs);color:var(--error)}.form-hint{font-size:var(--font-xs);color:var(--text-secondary)}.form-textarea{min-height:100px;resize:vertical}.form-row{display:grid;grid-template-columns:1fr;gap:var(--spacing-md)}@media (min-width: 768px){.form-row{grid-template-columns:1fr 1fr}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--spacing-xl);box-shadow:var(--shadow-md);transition:box-shadow var(--transition-base)}.card:hover{box-shadow:var(--shadow-lg)}.card-title{margin:0 0 var(--spacing-lg) 0;font-size:var(--font-2xl);font-weight:700;color:var(--text-primary);border-bottom:2px solid var(--brand-primary);padding-bottom:var(--spacing-sm)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radius-md)}.table{width:100%;border-collapse:collapse;font-size:var(--font-sm)}.table thead{background:linear-gradient(135deg,var(--brand-primary) 0%,var(--brand-primary-dark) 100%);border-bottom:2px solid var(--brand-primary-dark)}.table th{padding:var(--spacing-md) var(--spacing-md);text-align:left;font-weight:600;color:#fff;white-space:nowrap}.table td{padding:var(--spacing-md) var(--spacing-md);border-bottom:1px solid var(--border);color:var(--text-secondary)}.table tbody tr{transition:all var(--transition-fast)}.table tbody tr:hover{background:var(--surface-soft);transform:scale(1.01)}.table tbody tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-xs);font-weight:600;text-transform:capitalize;box-shadow:var(--shadow-sm)}.badge-draft{background:linear-gradient(135deg,#f3f4f6,#e5e7eb);color:#374151}.badge-scheduled{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1e40af}.badge-pending{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#92400e}.badge-completed{background:linear-gradient(135deg,#d1fae5,#a7f3d0);color:#065f46}.badge-graded{background:linear-gradient(135deg,#e0e7ff,#c7d2fe);color:#3730a3}.badge-grading{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1e40af}.badge-failed{background:linear-gradient(135deg,#fee2e2,#fecaca);color:#991b1b}.btn-group{display:flex;gap:var(--spacing-sm);flex-wrap:wrap;align-items:center}.btn-group .btn{margin:0}.empty-state{text-align:center;padding:var(--spacing-2xl);color:var(--text-secondary)}.empty-state p{margin:var(--spacing-sm) 0}.text-muted{color:var(--muted);font-size:var(--font-sm)}.loading{text-align:center;padding:var(--spacing-xl);color:var(--text-secondary);font-size:var(--font-sm)}.toast-container{position:fixed;top:var(--spacing-lg);right:var(--spacing-lg);z-index:9999;display:flex;flex-direction:column;gap:var(--spacing-sm);max-width:400px;width:calc(100% - var(--spacing-xl))}@media (min-width: 768px){.toast-container{width:400px}}.toast{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:var(--spacing-md);animation:slideIn .3s ease}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.toast-success{border-left:4px solid var(--success)}.toast-error{border-left:4px solid var(--error)}.toast-info{border-left:4px solid var(--info)}.toast-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-xs)}.toast-header strong{font-size:var(--font-sm);font-weight:600;color:var(--text-primary)}.toast-close{background:none;border:none;font-size:var(--font-xl);line-height:1;cursor:pointer;color:var(--text-secondary);padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.toast-close:hover{color:var(--text-primary)}.toast-body{font-size:var(--font-sm);color:var(--text-secondary)}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:400px;padding:var(--spacing-xl)}.error-content{max-width:600px;text-align:center}.error-content h2{color:var(--error);margin-bottom:var(--spacing-md)}.error-content p{color:var(--text-secondary);margin-bottom:var(--spacing-lg)}.error-content details{text-align:left;background:var(--surface-soft);padding:var(--spacing-md);border-radius:var(--radius-md);margin-bottom:var(--spacing-lg)}.error-content summary{cursor:pointer;font-weight:500;color:var(--text-primary)}.error-content pre{margin-top:var(--spacing-sm);font-size:var(--font-xs);color:var(--error);overflow-x:auto}.skeleton{background:linear-gradient(90deg,var(--surface-soft) 0%,#e0e0e0 50%,var(--surface-soft) 100%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:var(--radius-sm)}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-title{height:24px;width:40%;margin-bottom:var(--spacing-md)}.skeleton-text{height:16px;width:100%;margin-bottom:var(--spacing-sm)}.skeleton-input{height:40px;width:100%;margin-bottom:var(--spacing-md)}.skeleton-button{height:40px;width:120px;margin-top:var(--spacing-md)}.skeleton-table{display:flex;flex-direction:column;gap:var(--spacing-sm)}.skeleton-table-header,.skeleton-table-row{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--spacing-md)}.skeleton-table-header .skeleton{height:20px}.skeleton-table-row .skeleton{height:16px}.tab-nav{display:flex;gap:var(--spacing-sm);border-bottom:2px solid var(--border);margin-bottom:var(--spacing-lg);overflow-x:auto;-webkit-overflow-scrolling:touch}.tab-button{background:none;border:none;padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-sm);font-weight:500;color:var(--text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all var(--transition-base);white-space:nowrap}.tab-button:hover{color:var(--text-primary)}.tab-button.active{color:var(--brand-primary);border-bottom-color:var(--brand-primary)}.tab-content,.learning-workspace,.management-workspace{display:flex;flex-direction:column;gap:var(--spacing-lg)}.user-role{font-size:var(--font-sm);color:var(--text-secondary);text-transform:capitalize}.site-footer{text-align:center;padding:2rem;font-size:.9rem;color:var(--muted)}.hero{display:grid;gap:2rem;background:var(--surface);border-radius:24px;padding:clamp(2rem,5vw,3rem);box-shadow:0 25px 55px #2563eb1f;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));align-items:center}.hero-content{display:flex;flex-direction:column;gap:1.1rem}.hero-badge{display:inline-flex;align-self:flex-start;background:#2563eb1f;color:var(--brand-primary);padding:.4rem .9rem;border-radius:999px;font-weight:600;font-size:.85rem;letter-spacing:.05em}.hero-title{font-size:clamp(1.9rem,5vw,2.8rem);font-weight:700;line-height:1.2;margin:0}.hero-subtitle{color:var(--muted);font-size:clamp(1rem,2.2vw,1.1rem);line-height:1.6;margin:0}.hero-actions{display:flex;gap:1rem;flex-wrap:wrap}.btn{border-radius:6px;padding:.625rem 1.25rem;font-weight:500;font-size:.9375rem;border:1px solid transparent;cursor:pointer;transition:all .2s ease;font-family:inherit}.btn.primary{background:var(--brand-primary);color:#fff;border-color:var(--brand-primary)}.btn.primary:hover{background:var(--brand-primary-dark);border-color:var(--brand-primary-dark)}.btn.secondary{background:#f3f4f6;color:var(--text-primary);border-color:var(--border)}.btn.secondary:hover{background:#e5e7eb}.btn.ghost{background:transparent;color:var(--brand-primary);border:1px solid var(--border)}.btn.ghost:hover{background:var(--surface-soft);border-color:var(--brand-primary)}.hero-grid{display:grid;gap:1rem}.surface{background:var(--surface);border-radius:20px;padding:clamp(1.5rem,4vw,2rem);box-shadow:0 20px 45px #0f172a14}.surface.soft{background:var(--surface-soft);border:1px dashed rgba(37,99,235,.25)}.feature-card{border:1px solid rgba(37,99,235,.1);transition:transform .25s ease,box-shadow .25s ease}.feature-card:hover{transform:translateY(-4px);box-shadow:0 18px 35px #2563eb29}.section-head{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1.4rem}.section-head h2,.section-head h3,.section-head h4{margin:0}.muted{color:var(--muted)}.grid{display:grid;gap:1.5rem}.grid-2{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.stack{display:grid;gap:1rem}.auth-panel{max-width:720px;margin:0 auto}.auth-divider{display:flex;align-items:center;gap:.75rem;margin:1.5rem 0;width:100%;color:var(--muted);font-size:.85rem}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.passkey-form{background:#2563eb0a;padding:1.5rem;border-radius:16px}.passkey-form .btn{justify-self:start}.tab-switch{display:inline-flex;background:#2563eb14;border-radius:999px;padding:.3rem;gap:.4rem;align-self:flex-start;margin-bottom:1.4rem}.learning-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-bottom:2rem}.learning-tab{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1rem;border:2px solid rgba(37,99,235,.2);background:var(--surface);border-radius:16px;cursor:pointer;transition:all .3s ease;font-weight:600;color:var(--muted)}.learning-tab:hover{border-color:#2563eb66;transform:translateY(-2px);box-shadow:0 8px 20px #2563eb1f}.learning-tab.active{background:linear-gradient(135deg,#2563eb1f,#a855f714);border-color:var(--brand-primary);color:var(--brand-primary);box-shadow:0 12px 24px #2563eb2e}.tab-icon{font-size:1.8rem}.tab-label{font-size:.9rem}.pill{border:none;background:transparent;color:var(--muted);padding:.5rem 1.2rem;border-radius:999px;font-weight:600;cursor:pointer;transition:background .2s ease,color .2s ease}.pill.active{background:#fff;color:var(--brand-primary);box-shadow:0 12px 20px #2563eb1f}form{display:grid;gap:1rem}label{display:grid;gap:.4rem;font-size:.95rem;color:var(--muted)}input,select,textarea{border-radius:12px;border:1px solid var(--border);padding:.7rem .85rem;font-size:.95rem;transition:border .2s ease,box-shadow .2s ease}input:focus,select:focus,textarea:focus{border-color:var(--brand-primary);box-shadow:0 0 0 3px #2563eb26;outline:none}.workspace .list,.workspace .stack{margin-top:1rem}.list{display:grid;gap:1rem}.card{background:var(--surface);border-radius:16px;border:1px solid var(--border);padding:1.1rem 1.3rem;display:grid;gap:.8rem;box-shadow:0 15px 30px #0f172a14}.card.soft{background:var(--surface-soft);border-style:dashed}.card.accent{background:#2563eb14;border-color:#2563eb33}.card.tone-info{background:#0891b214;border-color:#0891b233}.card-header{display:flex;justify-content:space-between;gap:1rem;align-items:center}.card-body{display:grid;gap:.6rem}.card-footer{display:flex;justify-content:space-between;gap:1rem;font-size:.85rem;color:var(--muted)}.badge{display:inline-flex;align-items:center;justify-content:center;background:#2563eb26;color:var(--brand-primary);border-radius:999px;padding:.2rem .6rem;font-size:.75rem;margin-left:.5rem}.badge.tone-success{background:#16a34a26;color:var(--success)}.status{font-size:.85rem;color:var(--muted)}.tag{display:inline-flex;background:#a855f71f;color:var(--brand-accent);border-radius:999px;padding:.2rem .7rem;font-size:.75rem;margin-right:.4rem}.simple-list{list-style:none;margin:0;padding:0;display:grid;gap:.4rem;color:var(--muted);font-size:.92rem}.metric-card{background:#2563eb14;padding:1.2rem 1.4rem;border-radius:16px;display:grid;gap:.4rem;border:1px solid rgba(37,99,235,.2)}.metric-label{font-size:.9rem;color:var(--muted)}.metric-value{font-size:1.8rem;font-weight:700;color:var(--brand-primary)}.progress-card{background:var(--surface);border-radius:16px;border:1px solid var(--border);padding:1.2rem 1.4rem;box-shadow:0 12px 28px #0f172a14;display:grid;gap:.7rem}.metric-heading{display:flex;justify-content:space-between;align-items:center;font-size:.95rem;color:var(--muted)}.metric-heading strong{font-size:1.4rem;color:var(--brand-primary)}.progress-bar{background:#0f172a14;border-radius:999px;overflow:hidden;height:.6rem}.progress-fill{height:100%;background:linear-gradient(120deg,var(--brand-primary),var(--brand-accent))}.mt{margin-top:1.5rem}.toast-container{position:fixed;top:1rem;right:1rem;z-index:9999;display:flex;flex-direction:column;gap:.75rem;max-width:400px}.toast{background:#fff;border-radius:12px;padding:1rem 1.25rem;box-shadow:0 10px 30px #00000026;display:flex;align-items:flex-start;gap:.75rem;animation:slideIn .3s ease}@keyframes slideIn{0%{transform:translate(120%);opacity:0}to{transform:translate(0);opacity:1}}.toast.success{border-left:4px solid var(--success)}.toast.error{border-left:4px solid var(--error)}.toast.info{border-left:4px solid var(--info)}.toast-icon{font-size:1.25rem;flex-shrink:0}.toast-content{flex:1}.toast-title{font-weight:600;margin-bottom:.25rem}.toast-message{font-size:.9rem;color:var(--muted)}.toast-close{background:none;border:none;cursor:pointer;padding:.25rem;opacity:.5;transition:opacity .2s}.toast-close:hover{opacity:1}.drop-zone{border:2px dashed rgba(37,99,235,.3);border-radius:16px;padding:2rem;text-align:center;background:#2563eb0d;transition:all .3s ease;cursor:pointer}.drop-zone:hover{border-color:var(--brand-primary);background:#2563eb14}.drop-zone.drag-active{border-color:var(--brand-primary);background:#2563eb1f;border-style:solid}.drop-zone-icon{font-size:3rem;margin-bottom:1rem;opacity:.6}.drop-zone-text{font-size:1.1rem;font-weight:600;margin-bottom:.5rem}.drop-zone-hint{font-size:.9rem;color:var(--muted)}@media (max-width: 820px){.hero{grid-template-columns:1fr}.site-header{grid-template-columns:auto 1fr;padding:1rem 1.5rem;gap:1rem}.mobile-menu-toggle{display:block;grid-column:2;justify-self:end}.brand{align-items:flex-start;text-align:left}.main-nav,.auth-nav{display:none;grid-column:1 / -1;flex-direction:column;width:100%;background:#0f172af2;padding:1rem;border-radius:12px;margin-top:.5rem}.main-nav.mobile-open,.auth-nav.mobile-open{display:flex}.nav-button{width:100%;text-align:left;padding:.75rem 1rem}.learning-tabs{grid-template-columns:repeat(2,1fr)}.toast-container{right:.5rem;left:.5rem;max-width:none}.hero-actions{flex-direction:column;align-items:stretch}.workspace{width:100%;max-width:100%}.grid-2,.grid-3{grid-template-columns:1fr}.learning-tab{padding:.85rem}.tab-icon{font-size:1.5rem}.tab-label{font-size:.85rem}}@media (max-width: 600px){.surface,.hero{padding:1.5rem}.card-footer{flex-direction:column;align-items:flex-start}.learning-tabs{grid-template-columns:1fr;gap:.5rem}.learning-tab{flex-direction:row;justify-content:flex-start;gap:.75rem;padding:.75rem 1rem}.tab-icon{font-size:1.3rem}.tab-label{font-size:.9rem}.btn{width:100%;text-align:center}form .grid-2,form .grid-3{grid-template-columns:1fr;gap:.75rem}}.file-preview{margin-top:.75rem;padding:1rem;background:var(--surface-soft);border-radius:8px;display:flex;flex-direction:column;gap:.75rem}.file-preview .muted{margin:0;font-size:.9rem}.file-preview .btn{align-self:flex-start}.profile-info{display:grid;gap:1rem}.profile-field{display:flex;flex-direction:column;gap:.25rem}.field-label{font-size:.85rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.field-value{font-size:1rem;color:#0f172a;margin:0;padding:.5rem 0}.profile-actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:.5rem}.flex-between{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}.view-mode-toggle{display:flex;gap:.5rem}.selection-summary{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:linear-gradient(135deg,#2563eb1f,#a855f714);border:1px solid rgba(37,99,235,.3);border-radius:12px;margin-top:.5rem}.summary-info{font-weight:600;color:var(--brand-primary)}.visual-file-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;margin-top:1rem}.visual-file-card{background:var(--surface);border:2px solid var(--border);border-radius:12px;padding:1rem;transition:all .2s ease;cursor:pointer}.visual-file-card:hover{border-color:var(--brand-primary);box-shadow:0 4px 12px #2563eb26}.visual-file-card.selected{border-color:var(--brand-primary);background:#2563eb0d;box-shadow:0 0 0 2px #2563eb33}.file-card-header{display:flex;align-items:center;gap:1rem;padding-bottom:1rem}.file-card-checkbox input[type=checkbox]{width:1.25rem;height:1.25rem;cursor:pointer}.file-card-info{flex:1;display:flex;flex-direction:column;gap:.5rem}.file-card-info strong{font-size:1rem;color:#0f172a}.file-card-meta{font-size:.875rem;color:var(--muted)}.page-selector{border-top:1px solid var(--border);padding-top:1rem;margin-top:.5rem}.page-selector-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.page-selector-header span{font-size:.9rem;font-weight:600;color:var(--muted)}.page-selector-actions{display:flex;gap:.5rem}.btn-small{padding:.25rem .75rem;font-size:.85rem;border-radius:6px;border:1px solid rgba(37,99,235,.4);background:transparent;color:var(--brand-primary);cursor:pointer;transition:all .2s ease}.btn-small:hover{background:#2563eb14}.page-numbers{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.page-number{min-width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--muted);cursor:pointer;transition:all .2s ease;font-size:.9rem;font-weight:500}.page-number:hover{border-color:var(--brand-primary);background:#2563eb0d}.page-number.selected{background:var(--brand-primary);color:#fff;border-color:var(--brand-primary)}.selected-pages-info{padding:.5rem .75rem;background:#2563eb14;border-radius:6px;font-size:.875rem;color:var(--brand-primary)}@media (max-width: 820px){.visual-file-grid{grid-template-columns:1fr}.flex-between{flex-direction:column;align-items:stretch}.view-mode-toggle{width:100%}.view-mode-toggle .btn{flex:1}}.account-container{display:flex;flex-direction:column;gap:2.5rem}.account-section{display:flex;flex-direction:column;gap:1.5rem}.account-layout{display:grid;grid-template-columns:minmax(220px,260px) 1fr;gap:1.5rem}.account-menu{display:flex;flex-direction:column;gap:.75rem}.account-menu-item{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;padding:1rem 1.25rem;border-radius:16px;border:1px solid transparent;background:#2563eb0d;color:var(--muted);font-weight:600;text-align:left;transition:all .2s ease}.account-menu-item:hover{border-color:#2563eb59;background:#2563eb1f;color:var(--brand-primary)}.account-menu-item.active{border-color:var(--brand-primary);background:linear-gradient(135deg,#2563eb2e,#3b82f614);color:var(--brand-primary);box-shadow:0 12px 24px #2563eb2e}.account-menu-item .menu-title{font-size:1rem}.account-menu-item .menu-subtitle{font-size:.85rem;color:var(--muted)}.account-menu-item.active .menu-subtitle{color:var(--brand-primary)}.account-content{display:flex;flex-direction:column;gap:1.5rem}@media (max-width: 980px){.account-layout{grid-template-columns:1fr}.account-menu{flex-direction:row;gap:.6rem;overflow-x:auto;padding-bottom:.5rem}.account-menu-item{flex:1;min-width:180px}}.account-card{background:var(--surface);border-radius:20px;border:1px solid var(--border);padding:2rem;box-shadow:0 4px 12px #0f172a0f;transition:box-shadow .3s ease}.account-card:hover{box-shadow:0 8px 24px #0f172a1a}.card-header-section{display:flex;align-items:flex-start;gap:1rem;margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}.card-icon{font-size:2rem;line-height:1}.card-header-section h3{margin:0 0 .25rem;font-size:1.25rem;font-weight:600}.card-header-section .muted{font-size:.875rem;margin:0}.profile-content{display:flex;flex-direction:column;gap:1.5rem}.info-grid{display:grid;gap:1.25rem}.info-item{display:flex;flex-direction:column;gap:.4rem}.info-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.info-value{font-size:1rem;font-weight:500;color:var(--text-primary)}.role-badge{display:inline-block;background:#2563eb1a;color:var(--brand-primary);padding:.25rem .75rem;border-radius:999px;font-size:.875rem;font-weight:600}.card-actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:.5rem}.management-container{display:flex;flex-direction:column;gap:2rem}.management-container .section-head{display:flex;align-items:center;gap:1rem;margin-bottom:0}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.stat-card{display:flex;align-items:center;gap:1rem;background:linear-gradient(135deg,#2563eb14,#a855f70d);border:1px solid rgba(37,99,235,.2);border-radius:16px;padding:1.25rem 1.5rem;transition:all .3s ease}.stat-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px #2563eb26}.stat-icon{font-size:2.5rem;line-height:1}.stat-content{display:flex;flex-direction:column;gap:.25rem}.stat-value{font-size:2rem;font-weight:700;color:var(--brand-primary);line-height:1}.stat-label{font-size:.875rem;color:var(--muted);font-weight:500}.management-grid{display:grid;grid-template-columns:400px 1fr;gap:1.5rem}.add-student-card{height:fit-content}.student-form{display:flex;flex-direction:column;gap:1rem}.form-row{display:flex;flex-direction:column;gap:.5rem}.form-row-2{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.form-row label,.form-row-2 label{font-size:.875rem;font-weight:500;color:var(--text-primary)}.submit-btn{margin-top:.5rem}.student-list-card{max-height:600px;overflow:hidden;display:flex;flex-direction:column}.student-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:.75rem;padding-right:.5rem}.student-item{display:flex;align-items:center;gap:1rem;padding:1rem;background:var(--surface-soft);border:1px solid var(--border);border-radius:12px;transition:all .2s ease}.student-item:hover{border-color:var(--brand-primary);background:#2563eb08;transform:translate(4px)}.student-avatar{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,var(--brand-primary),rgba(168,85,247,.8));color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:600;flex-shrink:0}.student-info{flex:1;min-width:0}.student-name{font-size:1rem;font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.student-details{display:flex;flex-direction:column;gap:.25rem}.student-email{font-size:.875rem;color:var(--muted)}.student-meta{font-size:.8125rem;color:var(--text-secondary)}.student-badge{flex-shrink:0;display:flex;gap:.5rem;align-items:center}.level-badge{display:inline-block;padding:.35rem .75rem;border-radius:8px;font-size:.75rem;font-weight:700;letter-spacing:.05em}.level-badge.sl{background:#3b82f61a;color:#2563eb}.level-badge.hl{background:#a855f71a;color:#9333ea}.year-badge{display:inline-flex;align-items:center;justify-content:center;padding:.25rem .5rem;border-radius:6px;font-size:.7rem;font-weight:600;background:linear-gradient(135deg,#10b9811a,#05966926);color:#059669;border:1px solid rgba(16,185,129,.3);min-width:2rem}.admission-info{font-size:.75rem;opacity:.7}.form-section-divider{display:flex;align-items:center;margin:1.5rem 0 1rem;position:relative}.form-section-divider:before,.form-section-divider:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--border),transparent)}.divider-label{padding:0 1rem;font-size:.875rem;font-weight:600;color:var(--text-secondary);background:var(--surface)}.form-hint{display:block;margin-top:.375rem;font-size:.8125rem;color:var(--text-secondary);font-style:italic}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1rem;text-align:center}.empty-icon{font-size:4rem;opacity:.3;margin-bottom:1rem}.empty-text{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin:0 0 .5rem}.empty-hint{font-size:.875rem;color:var(--muted);margin:0}@media (max-width: 1200px){.account-layout{grid-template-columns:1fr}.account-menu{flex-direction:row;gap:.6rem}.management-grid{grid-template-columns:1fr}.student-list-card{max-height:500px}}@media (max-width: 600px){.stats-grid{grid-template-columns:1fr}.stat-card{padding:1rem}.form-row-2{grid-template-columns:1fr}.student-item{flex-direction:column;text-align:center}.student-details{align-items:center}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:9999;padding:1rem;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--surface);border-radius:20px;padding:var(--spacing-xl);max-width:600px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 25px 50px #0000004d;animation:slideUp .3s ease}.modal-title{margin:0 0 var(--spacing-lg) 0;font-size:var(--font-2xl);font-weight:700;color:var(--text-primary);border-bottom:2px solid var(--brand-primary);padding-bottom:var(--spacing-sm)}@keyframes slideUp{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}.pdf-preview-modal{max-width:90vw;width:1200px;max-height:95vh}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem 2rem;border-bottom:1px solid var(--border)}.modal-header h3{margin:0;font-size:1.25rem;font-weight:600}.modal-close{background:none;border:none;font-size:2rem;line-height:1;cursor:pointer;color:var(--muted);transition:color .2s ease;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center}.modal-close:hover{color:var(--text-primary)}.modal-body{padding:2rem}.modal-actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.5rem}.btn.danger{background:transparent;color:var(--error);border:1px solid var(--error)}.btn.danger:hover{background:var(--error);color:#fff}@media (max-width: 820px){.pdf-preview-modal{max-width:95vw;max-height:90vh}.modal-header,.modal-body{padding:1rem 1.25rem}}@media (max-width: 600px){.modal-content{margin:.5rem}.modal-actions{flex-direction:column}.modal-actions .btn{width:100%}}.pdf-viewer{display:flex;flex-direction:column;height:100%;width:100%;background:#f5f5f5}.pdf-viewer-toolbar{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;gap:.75rem}.pdf-viewer-nav{display:flex;align-items:center;gap:1rem}.pdf-viewer-page-info{font-weight:500;font-size:.9375rem;color:var(--text-primary);min-width:120px;text-align:center}.pdf-viewer-zoom{display:flex;align-items:center;gap:.5rem}.pdf-viewer-zoom-level{font-size:.875rem;font-weight:500;color:var(--text-secondary);min-width:50px;text-align:center}.pdf-viewer-container{flex:1;overflow:auto;display:flex;justify-content:center;align-items:flex-start;padding:2rem 1rem;background:#f5f5f5}.pdf-viewer-container .react-pdf__Document{display:flex;justify-content:center}.pdf-viewer-container .react-pdf__Page{box-shadow:0 4px 12px #00000026;background:#fff}.pdf-viewer-container canvas{max-width:100%;height:auto!important}.pdf-viewer-empty{display:flex;align-items:center;justify-content:center;min-height:300px;color:var(--muted)}.loading-text{padding:2rem;text-align:center;color:var(--muted);font-size:1rem}.error-text{padding:2rem;text-align:center;color:var(--error);font-size:1rem}@media (max-width: 820px){.pdf-viewer-toolbar{flex-direction:column;align-items:stretch}.pdf-viewer-nav,.pdf-viewer-zoom{justify-content:center}.pdf-viewer-container{padding:1rem .5rem}}.clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.clickable:active{transform:scale(.98)}.upload-modal{max-width:700px}.upload-info{padding:1rem;background:#2563eb0d;border:1px solid rgba(37,99,235,.15);border-radius:12px;margin-bottom:1rem}.upload-info p{margin:.5rem 0;font-size:.95rem;color:var(--text-primary)}.upload-info strong{color:var(--brand-primary)}.upload-area{display:block;cursor:pointer;margin:0}.upload-placeholder{border:2px dashed rgba(37,99,235,.3);border-radius:16px;padding:2.5rem;text-align:center;background:#2563eb08;transition:all .3s ease;min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center}.upload-placeholder:hover{border-color:var(--brand-primary);background:#2563eb14}.upload-icon{font-size:3rem;margin-bottom:1rem;opacity:.7}.upload-placeholder p{margin:.5rem 0;font-size:1rem}.file-preview{display:flex;flex-direction:column;align-items:center;gap:1rem}.file-preview p{color:var(--success);font-weight:600;margin:0}.file-preview img{border-radius:8px;box-shadow:0 4px 12px #0000001a}.grading-mode-section{margin-top:1.5rem}.grading-mode-section h4{margin:0 0 1rem;font-size:1.1rem;color:var(--text-primary)}.grading-options{display:grid;gap:1rem}.grading-option{display:flex;align-items:flex-start;gap:1rem;padding:1.25rem;border:2px solid var(--border);border-radius:16px;background:var(--surface);cursor:pointer;transition:all .3s ease}.grading-option:hover{border-color:var(--brand-primary);background:#2563eb08;transform:translateY(-2px);box-shadow:0 4px 12px #2563eb1a}.grading-option.active{border-color:var(--brand-primary);background:linear-gradient(135deg,#2563eb14,#a855f70d);box-shadow:0 4px 16px #2563eb26}.grading-option input[type=radio]{margin-top:.25rem;width:1.25rem;height:1.25rem;cursor:pointer;accent-color:var(--brand-primary)}.option-content{flex:1;display:flex;flex-direction:column;gap:.4rem}.option-content strong{font-size:1rem;color:var(--text-primary)}.option-content .muted{font-size:.875rem;line-height:1.5}@media (max-width: 600px){.upload-placeholder{padding:1.5rem;min-height:150px}.upload-icon{font-size:2rem}.grading-option{padding:1rem}}.photo-uploader{display:flex;flex-direction:column;gap:2rem}.upload-section{display:flex;flex-direction:column;gap:1rem}.upload-section h4{margin:0;font-size:1.1rem;color:var(--text-primary)}.selected-files{margin-top:1rem}.selected-files h5{margin:0 0 .75rem;font-size:1rem;color:var(--text-primary)}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem;margin-bottom:1rem}.photo-preview,.photo-item{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;border:2px solid var(--border);transition:all .2s ease}.photo-preview:hover,.photo-item:hover{border-color:var(--brand-primary);transform:translateY(-2px);box-shadow:0 4px 12px #2563eb26}.photo-preview img,.photo-item img{width:100%;height:100%;object-fit:cover}.photo-preview .remove-btn{position:absolute;top:.5rem;right:.5rem;width:28px;height:28px;border-radius:50%;background:#dc2626e6;color:#fff;border:none;font-size:1.5rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;z-index:10}.photo-preview .remove-btn:hover{background:#dc2626;transform:scale(1.1)}.photo-preview .edit-btn{position:absolute;top:.5rem;left:.5rem;width:28px;height:28px;border-radius:50%;background:#2563ebe6;color:#fff;border:none;font-size:1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease;z-index:10}.photo-preview .edit-btn:hover{background:var(--brand-primary);transform:scale(1.1)}.photo-name,.photo-meta{position:absolute;bottom:0;left:0;right:0;padding:.5rem;background:linear-gradient(to top,rgba(0,0,0,.7),transparent);color:#fff;font-size:.75rem;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photo-score{color:#4ade80;font-weight:600}.photo-actions{position:absolute;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease}.photo-item:hover .photo-actions{opacity:1}.existing-photos{margin-top:2rem}.existing-photos h4{margin:0 0 1rem;font-size:1.1rem;color:var(--text-primary)}@media (max-width: 600px){.photo-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}.photo-grading-modal{max-width:1200px;width:95vw}.grading-layout{display:grid;grid-template-columns:2fr 1fr;gap:2rem;max-height:80vh}.photo-display{display:flex;align-items:center;justify-content:center;background:#f5f5f5;border-radius:12px;overflow:hidden;min-height:400px}.photo-display img{max-width:100%;max-height:70vh;object-fit:contain}.grading-panel{display:flex;flex-direction:column;gap:1.5rem;overflow-y:auto;padding-right:.5rem}.grading-section{display:flex;flex-direction:column;gap:1rem;padding:1rem;background:var(--surface-soft);border-radius:12px}.grading-section h4{margin:0;font-size:1rem;color:var(--text-primary)}.section-header{display:flex;justify-content:space-between;align-items:center}.score-display{display:flex;align-items:baseline;gap:.5rem}.score-value{font-size:3rem;font-weight:700;color:var(--brand-primary)}.score-label{font-size:1.5rem;color:var(--muted)}.grading-form{display:flex;gap:.75rem}.grading-form input{flex:1}.annotation-form{display:flex;flex-direction:column;gap:.75rem}.annotation-form textarea{resize:vertical;min-height:80px}.annotations-list{display:flex;flex-direction:column;gap:.75rem;max-height:300px;overflow-y:auto}.annotation-item{display:flex;gap:.75rem;padding:.75rem;background:#fff;border:1px solid var(--border);border-radius:8px}.annotation-content{flex:1;display:flex;flex-direction:column;gap:.25rem}.annotation-content p{margin:0;font-size:.95rem;line-height:1.5}.annotation-meta{font-size:.75rem;color:var(--muted)}@media (max-width: 900px){.grading-layout{grid-template-columns:1fr}.photo-display{min-height:300px}.photo-display img{max-height:50vh}}
