:root{--font-display: "Inter", Helvetica, Arial, sans-serif;--font-body: "Inter", Helvetica, Arial, sans-serif;--font-mono: "JetBrains Mono", "SFMono-Regular", Menlo, monospace;--background: #f7f8fa;--foreground: #1d1f24;--card: #ffffff;--primary: #1d3557;--primary-hover: #26436b;--primary-foreground: #ffffff;--secondary: #f2f3f5;--muted: #eceef1;--accent: #f2f3f5;--muted-foreground: #6b7280;--border: #eceef1;--border-strong: #dde1e6;--destructive: #e63946;--status-approved-text: #1e7a4c;--status-approved-bg: #e7f5ee;--status-review-text: #a3670a;--status-review-bg: #fff4e0;--status-draft-text: #1d3557;--status-draft-bg: #e7f0fb;--status-resubmit-text: #c23b32;--status-resubmit-bg: #fdeceb;--status-pending-text: #5b6472;--status-pending-bg: #eef0f3;--label: #374151;--text-muted-2: #9aa1ab;--radius-sm: 0px;--radius-lg: 4px;--radius-xl: 8px;--input-bg: #ffffff;--input-border: #dde1e6;--navy: #1d3557;--navy-light: #26436b;--navy-border: #2c4a72;--navy-muted: #8ca0bd;--navy-text: #c3cede}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}.full-viewport-height{height:100vh;height:100dvh}body{margin:0;background:var(--background);color:var(--foreground);font-family:var(--font-body)}h1,h2,h3{font-family:var(--font-display);font-weight:700;letter-spacing:-.015em;margin:0}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px}a{color:var(--primary)}a:hover{color:var(--primary-hover)}button,input,select,textarea{font-family:var(--font-body);color:inherit}.eyebrow{font-family:var(--font-mono);font-weight:500;text-transform:uppercase;letter-spacing:.14em;font-size:10.5px;color:var(--muted-foreground);line-height:1.4}.mono{font-family:var(--font-mono)}.lms-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:none}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:28px;flex-wrap:wrap}.page-header-title{font-family:var(--font-display);font-weight:700;font-size:26px;letter-spacing:-.02em;color:var(--foreground);margin:6px 0}.page-header-subtitle{font-family:var(--font-body);font-size:13.5px;color:var(--muted-foreground)}.btn{font-family:var(--font-mono);font-weight:500;text-transform:uppercase;letter-spacing:.1em;font-size:10.5px;padding:11px 18px;border-radius:var(--radius-lg);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent;background:transparent;transition:background-color .15s ease,color .15s ease,border-color .15s ease;white-space:nowrap}.btn:disabled{opacity:.4;pointer-events:none}.btn-primary{background:var(--primary);color:var(--primary-foreground)}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{background:transparent;border-color:var(--border-strong);color:var(--foreground)}.btn-secondary:hover{background:var(--foreground);color:var(--background);border-color:var(--foreground)}.btn-tertiary{background:transparent;border:none;color:var(--muted-foreground);padding:8px 2px}.btn-tertiary:hover{color:var(--foreground)}.btn-destructive{background:transparent;border-color:var(--destructive);color:var(--destructive)}.btn-destructive:hover{background:var(--destructive);color:var(--primary-foreground)}.btn-sm{padding:7px 12px;font-size:10px}.status-badge{display:inline-flex;align-items:center;font-family:var(--font-mono);font-weight:500;text-transform:uppercase;letter-spacing:.08em;font-size:10px;padding:4px 9px;border-radius:999px;border:1px solid;line-height:1.5;white-space:nowrap}.status-approved{color:var(--status-approved-text);background:var(--status-approved-bg);border-color:#005e2840;border-color:oklch(.42 .12 150 / .25)}.status-review{color:var(--status-review-text);background:var(--status-review-bg);border-color:#96580040;border-color:oklch(.52 .14 65 / .25)}.status-draft{color:var(--status-draft-text);background:var(--status-draft-bg);border-color:#9d630040;border-color:oklch(.55 .13 70 / .25)}.status-resubmit{color:var(--status-resubmit-text);background:var(--status-resubmit-bg);border-color:#b7182440}.status-pending{color:var(--status-pending-text);background:var(--status-pending-bg);border-color:#15151524}.lms-input{width:100%;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--input-bg);font-size:13.5px;font-family:var(--font-body);color:var(--foreground);outline:none;transition:border-color .15s ease}.lms-input::placeholder{color:var(--muted-foreground)}.lms-input:focus{border-color:var(--primary)}.field-label{font-family:var(--font-mono);font-weight:500;text-transform:uppercase;letter-spacing:.1em;font-size:10.5px;color:var(--muted-foreground);margin-bottom:7px}.toggle-switch{position:relative;display:inline-flex;align-items:center;cursor:pointer;flex-shrink:0}.toggle-switch input{position:absolute;opacity:0;width:0;height:0}.toggle-track{width:38px;height:22px;background:var(--border-strong);border-radius:999px;display:block;position:relative;transition:background-color .15s ease}.toggle-thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:999px;transition:transform .15s ease;box-shadow:0 1px 2px #15151540}.toggle-switch input:checked+.toggle-track{background:var(--primary)}.toggle-switch input:checked+.toggle-track .toggle-thumb{transform:translate(16px)}.progress-track{height:3px;background:var(--secondary);border-radius:var(--radius-sm);overflow:hidden}.progress-track.pill{border-radius:999px}.progress-fill{height:100%;background:var(--primary)}.stat-label{font-family:var(--font-mono);font-weight:500;text-transform:uppercase;letter-spacing:.12em;font-size:10.5px;color:var(--muted-foreground);margin-bottom:10px}.stat-figure{font-family:var(--font-display);font-weight:700;font-size:28px;letter-spacing:-.015em;color:var(--foreground);margin-bottom:6px;line-height:1.1}.stat-sub{font-family:var(--font-body);font-size:12px;color:var(--muted-foreground)}.table-head{font-family:var(--font-mono);font-weight:500;text-transform:uppercase;letter-spacing:.09em;font-size:10px;color:var(--muted-foreground);border-bottom:1px solid var(--border)}.table-row{border-bottom:1px solid var(--border);transition:background-color .12s ease}.table-row:last-child{border-bottom:none}.table-row:hover{background:#15151508}.empty-state{font-family:var(--font-body);font-style:italic;font-size:13px;color:var(--muted-foreground)}.accordion-row{cursor:pointer}.accordion-chevron{width:22px;height:22px;border-radius:999px;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--muted-foreground);transition:transform .2s cubic-bezier(.16,1,.3,1),background-color .2s ease,color .2s ease;flex-shrink:0}.accordion-chevron.open{transform:rotate(180deg);background:var(--foreground);color:var(--background)}.accordion-panel{background:#edebe759;border-top:1px solid var(--border)}.timeline-dot{width:8px;height:8px;border-radius:999px;background:var(--primary);flex-shrink:0}.timeline-line{width:1px;flex:1;background:var(--border-strong);min-height:20px}.timeline-time{font-family:var(--font-mono);font-size:10.5px;color:var(--muted-foreground);letter-spacing:.04em}.avatar-circle{border-radius:999px;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:500;flex-shrink:0}.sidebar{flex:0 0 280px;width:280px;background:var(--navy);color:var(--navy-text);border-right:1px solid var(--navy-border);display:flex;flex-direction:column;height:100vh;position:sticky;top:0}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:26px 24px 20px}.logo-mark{height:80px;width:auto;object-fit:contain;flex-shrink:0}.sidebar-wordmark{font-family:var(--font-display);font-weight:700;font-size:15px;letter-spacing:-.01em;color:#fff;line-height:1.2}.sidebar-subtitle{font-family:var(--font-mono);font-weight:500;text-transform:uppercase;letter-spacing:.12em;font-size:9.5px;color:var(--navy-muted);margin-top:2px}.nav-eyebrow{font-family:var(--font-mono);font-weight:500;text-transform:uppercase;letter-spacing:.14em;font-size:10px;color:var(--navy-muted);padding:0 24px 10px}.nav-list{display:flex;flex-direction:column;gap:1px;padding:0 12px}.nav-item{padding:10px 12px;border-radius:var(--radius-lg);font-family:var(--font-body);font-size:13.5px;font-weight:500;cursor:pointer;color:var(--navy-text);transition:background-color .12s ease,color .12s ease}.nav-item:hover{background:#ffffff14;color:#fff}.nav-item.active{background:var(--navy-light);color:#fff;font-weight:600}.sidebar-footer{border-top:1px solid var(--navy-border);padding:16px 24px 20px;flex-shrink:0}.sidebar-account{display:flex;align-items:center;gap:10px;cursor:pointer;padding:6px;margin:-6px;border-radius:var(--radius-lg);transition:background-color .12s ease}.sidebar-account:hover{background:#ffffff12}.sidebar-account-name{font-size:13px;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-logout-link{font-family:var(--font-mono);font-weight:600;text-transform:uppercase;letter-spacing:.06em;font-size:9.5px;color:var(--navy-muted);padding:5px 7px;border-radius:var(--radius-lg);cursor:pointer;flex-shrink:0;transition:background-color .12s ease,color .12s ease}.sidebar-logout-link:hover{background:var(--destructive);color:#fff}.mobile-topbar{display:none;position:sticky;top:0;z-index:40;height:56px;align-items:center;justify-content:space-between;padding:0 20px;background:var(--navy);border-bottom:1px solid var(--navy-border)}.hamburger{width:32px;height:32px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:transparent;border:none;cursor:pointer}.hamburger span{width:18px;height:2px;background:#fff;display:block}.mobile-drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:49}.mobile-drawer{position:fixed;top:0;left:0;bottom:0;width:280px;max-width:84vw;background:var(--navy);color:var(--navy-text);border-right:1px solid var(--navy-border);z-index:50;display:flex;flex-direction:column;overflow-y:auto}.app-main{flex:1;min-width:0;min-height:0;overflow-y:auto}.app-main-inner{max-width:100%;margin:0 auto;padding:48px}@media (max-width: 768px){.sidebar{display:none}.mobile-topbar{display:flex}.app-main-inner{padding:20px}}@keyframes lms-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.animate-in{animation:lms-enter .6s cubic-bezier(.16,1,.3,1) both}@keyframes chat-bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-4px)}}.chat-typing-dot{width:6px;height:6px;border-radius:999px;background:var(--muted-foreground);display:inline-block;animation:chat-bounce 1s infinite}.lms-line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.resource-grid{display:grid;grid-template-columns:1fr;gap:14px}@media (min-width: 640px){.resource-grid{grid-template-columns:repeat(2,1fr)}}.resource-card{display:flex;flex-direction:column;gap:12px;padding:18px 20px;cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.resource-card:hover{border-color:var(--primary);background:#15151505}.resource-card-icon{width:38px;height:38px;border-radius:var(--radius-lg);background:var(--secondary);color:var(--primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.resource-card-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:12px;border-top:1px solid var(--border)}.chapter-module-icon{width:72px;height:72px;border-radius:var(--radius-xl);background:var(--primary);overflow:hidden;flex-shrink:0}.chapter-module-icon img{width:100%;height:100%;object-fit:cover}.chapter-intro-box{display:flex;align-items:flex-start;gap:14px;padding:16px 18px;margin-bottom:20px;background:#edebe759;border-radius:var(--radius-lg)}.unit-header-row{display:flex;align-items:center;gap:14px;padding:16px 18px}.unit-intro-pill{font-size:12px;color:var(--muted-foreground);background:var(--secondary);padding:5px 12px;border-radius:999px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px;flex-shrink:0}.unit-panel{padding:16px 18px;display:flex;flex-direction:column;gap:14px}.unit-attachment-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.file-badge{width:34px;height:34px;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;flex-shrink:0}.file-badge-doc{background:var(--status-draft-bg);color:var(--status-draft-text)}.file-badge-slides{background:var(--status-review-bg);color:var(--status-review-text)}.file-badge-link{background:var(--secondary);color:var(--primary)}.unit-summary-box{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;background:var(--status-approved-bg);border-radius:var(--radius-lg)}.unit-summary-icon{color:var(--status-approved-text);flex-shrink:0}.module-image-card-media{position:relative;aspect-ratio:16 / 10;overflow:hidden;background:var(--secondary)}.module-image-card-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s ease,filter .4s ease}.module-image-card:not(.module-image-card-locked):hover .module-image-card-media img{transform:scale(1.06)}.module-image-card-locked .module-image-card-media img{filter:grayscale(1) brightness(.6)}.module-image-card-badge{position:absolute;top:10px;left:10px;min-width:24px;height:24px;padding:0 8px;border-radius:999px;background:var(--primary);color:var(--primary-foreground);font-family:var(--font-mono);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}.module-image-card-badge.locked{background:#15151566;color:#ffffffbf;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.module-image-card-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-top:12px;border-top:1px solid var(--border)}.card-grid-4{display:grid;grid-template-columns:1fr;gap:16px;margin-bottom:24px}@media (min-width: 640px){.card-grid-4{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.card-grid-4{grid-template-columns:repeat(4,1fr)}}.action-row-4{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}@media (min-width: 640px){.action-row-4{grid-template-columns:repeat(4,1fr)}}.stat-strip{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:24px}.stat-strip.stat-strip-4{grid-template-columns:repeat(2,1fr)}@media (min-width: 640px){.stat-strip.stat-strip-4{grid-template-columns:repeat(4,1fr)}.stat-strip.stat-strip-tracker{grid-template-columns:repeat(3,1fr)}}@media (min-width: 1024px){.stat-strip.stat-strip-tracker{grid-template-columns:repeat(6,1fr)}}.stat-tile-headline{grid-column:span 2 / span 2;background:var(--foreground);color:var(--background);border-radius:var(--radius-xl);padding:22px}.stat-tile-headline .stat-label{color:#f6f3ed8c}.stat-tile-headline .stat-figure{color:var(--background)}.stat-tile-headline .stat-sub{color:#f6f3ed8c}.group-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 24px;cursor:pointer}@media (max-width: 640px){.hide-mobile{display:none}}.login-screen{display:flex;height:100vh;width:100%;flex-wrap:wrap;overflow-y:auto}.login-brand{flex:1 1 420px;min-height:280px;background:var(--primary);display:flex;flex-direction:column;justify-content:space-between;padding:56px}.login-logo{height:160px;width:auto}.login-form-wrap{flex:1 1 420px;display:flex;align-items:center;justify-content:center;background:var(--background);padding:40px 24px}@media (max-width: 768px){.login-brand{min-height:unset;padding:32px 24px}.login-logo{height:90px}.login-form-wrap{padding:32px 20px}}.group-thumb{width:44px;height:44px;border-radius:var(--radius-lg);overflow:hidden;flex-shrink:0}.grade-meter-track{height:6px;background:var(--secondary);border-radius:999px;overflow:hidden}.grade-meter-fill{height:100%;border-radius:999px}.quote-block{border-left:2px solid var(--border-strong);padding:4px 0 4px 14px;font-style:italic;font-size:13px;color:var(--muted-foreground)}.week-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.week-day-tile{border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px 8px;text-align:center}.week-day-tile.no-data{opacity:.5}.week-day-tile.warn{border-color:#b718244d;background:var(--status-resubmit-bg)}.full-bleed{margin:-48px -48px 0}@media (max-width: 768px){.full-bleed{margin:-20px -20px 0}}.content-hero{position:relative;overflow:hidden}.content-hero-art{position:absolute;top:0;right:0;bottom:0;left:0}.content-hero-fade{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,oklch(.194 0 0 / .18) 0%,oklch(.194 0 0 / .05) 22%,var(--background) 72%)}.content-hero-inner{position:relative;max-width:1152px;margin:0 auto;padding:36px 48px;display:flex;flex-direction:column;justify-content:flex-end;min-height:100%}@media (max-width: 768px){.content-hero-inner{padding:20px 20px 26px}}.back-link{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:.08em;color:var(--foreground);cursor:pointer;margin-bottom:22px}.back-link:hover{color:var(--primary)}.content-body{display:grid;grid-template-columns:220px 1fr;gap:40px;padding-top:36px;align-items:start}@media (max-width: 900px){.content-body{grid-template-columns:1fr}}.content-side-nav{position:sticky;top:24px;display:flex;flex-direction:column;gap:2px}@media (max-width: 900px){.content-side-nav{position:static;flex-direction:row;overflow-x:auto;gap:6px;padding-bottom:8px}}.side-nav-link{padding:8px 12px;border-left:2px solid transparent;font-size:13px;font-weight:500;color:var(--muted-foreground);cursor:pointer;text-decoration:none;white-space:nowrap}.side-nav-link:hover{color:var(--foreground)}.side-nav-link.active{border-left-color:var(--primary);color:var(--foreground);font-weight:600;background:#15151508}.content-section{scroll-margin-top:24px;padding-bottom:40px;border-bottom:1px solid var(--border);margin-bottom:40px}.content-section:last-of-type{border-bottom:none}@media (max-width: 768px){.apply-summary-panel{display:none!important}.apply-chat-column{flex:1 1 100%!important;border-right:none!important}}.caret:after{content:"";display:inline-block;width:2px;height:1em;margin-left:2px;background:currentColor;vertical-align:text-bottom;animation:blink .85s steps(1) infinite}@keyframes blink{0%,50%{opacity:1}50.01%,to{opacity:0}}.lms-spinner{display:inline-block;border-style:solid;border-width:2px;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rise-fade-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.animate-rise{animation:rise-fade-in .5s cubic-bezier(.16,1,.3,1) both}@media (prefers-reduced-motion: reduce){.caret:after{animation:none;opacity:0}.animate-rise{animation:none}}
