:root{--color-deep-ocean: #1a3a52;--color-azure-flow: #2d6b8a;--color-teal-mist: #4a8fa8;--color-celestial-blue: #6ba3b8;--color-dark-teal: #1d4f64;--color-warm-light: #f4d03f;--color-golden-accent: #d4a84b;--color-soft-white: #fafaf8;--color-ethereal-cream: #f5f0e8;--color-mist-grey: #e8e4dc;--bg-primary: var(--color-soft-white);--bg-secondary: var(--color-ethereal-cream);--bg-tertiary: var(--color-mist-grey);--bg-hover: var(--color-ethereal-cream);--bg-active: var(--color-mist-grey);--bg-sidebar: var(--color-soft-white);--bg-overlay: rgba(26, 58, 82, .5);--border-default: var(--color-mist-grey);--border-light: var(--color-ethereal-cream);--border-dark: #d4cfc4;--border-focus: var(--color-azure-flow);--text-primary: var(--color-deep-ocean);--text-secondary: var(--color-teal-mist);--text-tertiary: var(--color-celestial-blue);--text-inverse: var(--color-soft-white);--text-muted: #8a9ba8;--accent-primary: var(--color-azure-flow);--accent-primary-hover: var(--color-dark-teal);--accent-secondary: #3d9970;--accent-secondary-hover: #2d7a5a;--accent-warning: var(--color-warm-light);--accent-warning-hover: #e6c230;--accent-danger: #c0392b;--accent-danger-hover: #a33025;--accent-info: var(--color-teal-mist);--accent-gold: var(--color-golden-accent);--status-todo: var(--color-celestial-blue);--status-progress: var(--color-warm-light);--status-review: var(--color-azure-flow);--status-done: #3d9970;--focus-ring: rgba(45, 107, 138, .15);--focus-ring-width: 3px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", Consolas, Monaco, "Courier New", monospace;--text-xs: 11px;--text-sm: 12px;--text-md: 13px;--text-base: 14px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 32px;--text-4xl: 40px;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--leading-none: 1;--leading-tight: 1.25;--leading-snug: 1.375;--leading-normal: 1.5;--leading-relaxed: 1.625;--leading-loose: 2;--tracking-tight: -.025em;--tracking-normal: 0;--tracking-wide: .025em;--tracking-wider: .05em;--tracking-widest: .1em;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--space-24: 96px;--spacing-xs: var(--space-1);--spacing-sm: var(--space-2);--spacing-md: var(--space-3);--spacing-lg: var(--space-4);--spacing-xl: var(--space-6);--spacing-2xl: var(--space-8);--spacing-3xl: var(--space-12);--radius-none: 0;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-2xl: 16px;--radius-full: 9999px;--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / .03);--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / .25);--shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / .05);--shadow-none: 0 0 #0000;--duration-fast: .15s;--duration-normal: .2s;--duration-slow: .3s;--duration-slower: .5s;--ease-linear: linear;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--transition-fast: var(--duration-fast) var(--ease-out);--transition-normal: var(--duration-normal) var(--ease-out);--transition-slow: var(--duration-slow) var(--ease-out);--sidebar-width: 240px;--sidebar-width-collapsed: 64px;--header-height: 52px;--footer-height: 48px;--container-sm: 640px;--container-md: 768px;--container-lg: 1024px;--container-xl: 1280px;--container-2xl: 1536px;--z-dropdown: 10;--z-sticky: 20;--z-fixed: 30;--z-modal-backdrop: 40;--z-modal: 50;--z-popover: 60;--z-tooltip: 70;--z-toast: 80;--btn-height-sm: 28px;--btn-height-md: 36px;--btn-height-lg: 44px;--btn-padding-x-sm: var(--space-2);--btn-padding-x-md: var(--space-4);--btn-padding-x-lg: var(--space-6);--input-height-sm: 28px;--input-height-md: 36px;--input-height-lg: 44px;--input-padding-x: var(--space-3);--card-padding: var(--space-4);--card-padding-lg: var(--space-6);--avatar-xs: 20px;--avatar-sm: 24px;--avatar-md: 32px;--avatar-lg: 48px;--avatar-xl: 80px;--icon-xs: 12px;--icon-sm: 16px;--icon-md: 20px;--icon-lg: 24px;--icon-xl: 32px;--deep-ocean: var(--color-deep-ocean);--azure-flow: var(--color-azure-flow);--teal-mist: var(--color-teal-mist);--celestial-blue: var(--color-celestial-blue);--dark-teal: var(--color-dark-teal);--warm-light: var(--color-warm-light);--golden-accent: var(--color-golden-accent);--soft-white: var(--color-soft-white);--ethereal-cream: var(--color-ethereal-cream);--mist-grey: var(--color-mist-grey);--color-bg-primary: var(--bg-primary);--color-bg-secondary: var(--bg-secondary);--color-bg-tertiary: var(--bg-tertiary);--color-bg-hover: var(--bg-hover);--color-bg-active: var(--bg-active);--color-bg-sidebar: var(--bg-sidebar);--color-border: var(--border-default);--color-border-light: var(--border-light);--color-border-dark: var(--border-dark);--color-text-primary: var(--text-primary);--color-text-secondary: var(--text-secondary);--color-text-tertiary: var(--text-tertiary);--color-text-inverse: var(--text-inverse);--color-accent-primary: var(--accent-primary);--color-accent-primary-hover: var(--accent-primary-hover);--color-accent-secondary: var(--accent-secondary);--color-accent-warning: var(--accent-warning);--color-accent-danger: var(--accent-danger);--color-accent-info: var(--accent-info);--color-accent-gold: var(--accent-gold);--color-status-todo: var(--status-todo);--color-status-progress: var(--status-progress);--color-status-review: var(--status-review);--color-status-done: var(--status-done);--font-family: var(--font-sans);--font-size-xs: var(--text-xs);--font-size-sm: var(--text-sm);--font-size-md: var(--text-md);--font-size-lg: var(--text-base);--font-size-xl: var(--text-lg);--font-size-2xl: var(--text-xl);--font-size-3xl: var(--text-2xl)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);font-size:var(--font-size-md);line-height:1.5;color:var(--color-text-primary);background-color:var(--color-bg-primary)}body[data-text-size=sm]{--font-size-xs: 10px;--font-size-sm: 11px;--font-size-md: 12px;--font-size-lg: 13px;--font-size-xl: 15px;--font-size-2xl: 18px;--font-size-3xl: 24px}body[data-text-size=lg]{--font-size-xs: 12px;--font-size-sm: 13px;--font-size-md: 15px;--font-size-lg: 16px;--font-size-xl: 18px;--font-size-2xl: 22px;--font-size-3xl: 28px}body[data-text-size=xl]{--font-size-xs: 13px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 26px;--font-size-3xl: 32px}body[data-contrast=high]{--color-text-primary: #0f172a;--color-text-secondary: #1f2937;--color-text-tertiary: #334155;--color-border: #111827;--color-bg-primary: #ffffff;--color-bg-secondary: #f1f5f9}body[data-line-spacing=relaxed]{line-height:1.7}body[data-line-spacing=loose]{line-height:1.9}body[data-reduce-motion=true] *{transition:none!important;animation:none!important}body[data-focus-mode=true] .assessment-player,body[data-focus-mode=true] .assessment-lobby{max-width:720px;margin:0 auto}body[data-color-blind=protanopia] #root{filter:grayscale(.2) saturate(.7)}body[data-color-blind=deuteranopia] #root{filter:grayscale(.3) saturate(.8) contrast(1.05)}body[data-color-blind=tritanopia] #root{filter:grayscale(.25) saturate(.75) hue-rotate(10deg)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-xs{gap:var(--spacing-xs)}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.gap-xl{gap:var(--spacing-xl)}.app-layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--color-bg-sidebar);border-right:1px solid var(--color-border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100}.sidebar-header{padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--color-border);display:flex;align-items:center;gap:var(--spacing-sm);height:var(--header-height)}.sidebar-logo{width:24px;height:24px;background:linear-gradient(135deg,var(--azure-flow),var(--deep-ocean));border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:var(--font-size-sm)}.sidebar-title{font-weight:600;font-size:var(--font-size-lg);color:var(--color-text-primary)}.sidebar-content{flex:1;overflow-y:auto;padding:var(--spacing-md) 0}.sidebar-section{margin-bottom:var(--spacing-lg)}.sidebar-section-title{padding:var(--spacing-sm) var(--spacing-lg);font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.5px}.sidebar-nav{list-style:none}.sidebar-nav-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-lg);color:var(--color-text-secondary);text-decoration:none;font-size:var(--font-size-md);font-weight:500;transition:all var(--transition-fast);cursor:pointer;border:none;background:none;width:100%;text-align:left}.sidebar-nav-item:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.sidebar-nav-item.active{background:var(--color-bg-active);color:var(--color-text-primary)}.sidebar-nav-item svg{width:16px;height:16px;flex-shrink:0}.main-content{flex:1;margin-left:var(--sidebar-width);display:flex;flex-direction:column;min-height:100vh}.main-header{height:var(--header-height);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 var(--spacing-xl);background:var(--color-bg-primary);position:sticky;top:0;z-index:50}.page-content{flex:1;padding:var(--spacing-xl);background:var(--color-bg-secondary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-lg);font-size:var(--font-size-md);font-weight:500;font-family:var(--font-family);border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;transition:all var(--transition-fast);text-decoration:none}.btn-primary{background:var(--color-accent-primary);color:var(--color-text-inverse)}.btn-primary:hover{background:var(--color-accent-primary-hover)}.btn-secondary{background:var(--color-bg-primary);border-color:var(--color-border);color:var(--color-text-primary)}.btn-secondary:hover{background:var(--color-bg-hover);border-color:var(--color-border-dark)}.btn-ghost{background:transparent;color:var(--color-text-secondary)}.btn-ghost:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.btn-sm{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm)}.btn-lg{padding:var(--spacing-md) var(--spacing-xl);font-size:var(--font-size-lg)}.card{background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.card-header{padding:var(--spacing-lg);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between}.card-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary)}.card-subtitle{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:2px}.card-body{padding:var(--spacing-lg)}.form-group{margin-bottom:var(--spacing-lg)}.form-label{display:block;font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.form-input{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-md);font-family:var(--font-family);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-primary);color:var(--color-text-primary);transition:all var(--transition-fast)}.form-input:focus{outline:none;border-color:var(--color-accent-primary);box-shadow:0 0 0 3px #2d6b8a26}.form-input::placeholder{color:var(--color-text-tertiary)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:var(--font-size-xs);font-weight:500;border-radius:var(--radius-full);background:var(--color-bg-tertiary);color:var(--color-text-secondary)}.badge-primary{background:#2d6b8a1f;color:var(--color-accent-primary)}.badge-success{background:#10b9811a;color:var(--color-accent-secondary)}.badge-warning{background:#f59e0b1a;color:var(--color-accent-warning)}.badge-danger{background:#ef44441a;color:var(--color-accent-danger)}.badge-info{background:#3b82f61a;color:var(--color-accent-info)}.tabs{display:flex;gap:var(--spacing-xs);border-bottom:1px solid var(--color-border);padding:0 var(--spacing-lg)}.tab{display:inline-flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-md);font-weight:500;color:var(--color-text-secondary);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all var(--transition-fast);margin-bottom:-1px;text-decoration:none}.tab:hover{color:var(--color-text-primary)}.tab.active{color:var(--color-accent-primary);border-bottom-color:var(--color-accent-primary)}.avatar{width:32px;height:32px;border-radius:var(--radius-full);background:linear-gradient(135deg,var(--azure-flow),var(--deep-ocean));display:flex;align-items:center;justify-content:center;color:#fff;font-size:var(--font-size-sm);font-weight:600}.avatar-sm{width:24px;height:24px;font-size:var(--font-size-xs)}.avatar-lg{width:48px;height:48px;font-size:var(--font-size-xl)}.avatar-xl{width:80px;height:80px;font-size:var(--font-size-3xl)}.progress-bar{height:6px;background:var(--color-bg-tertiary);border-radius:var(--radius-full);overflow:hidden}.progress-bar-fill{height:100%;background:var(--color-accent-primary);border-radius:var(--radius-full);transition:width var(--transition-normal)}.progress-bar-success .progress-bar-fill{background:var(--color-accent-secondary)}.stat-card{background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.stat-label{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--spacing-xs)}.stat-value{font-size:var(--font-size-2xl);font-weight:600;color:var(--color-text-primary)}.stat-change{font-size:var(--font-size-xs);margin-top:var(--spacing-xs)}.stat-change-positive{color:var(--color-accent-secondary)}.stat-change-negative{color:var(--color-accent-danger)}.readiness-card .card-body{display:flex;flex-direction:column;gap:var(--spacing-md)}.readiness-score{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-lg)}.readiness-score-value{font-size:var(--font-size-3xl);font-weight:600;color:var(--color-text-primary)}.readiness-score-label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.readiness-confidence{flex:1;min-width:180px}.readiness-confidence-header{display:flex;align-items:center;justify-content:space-between;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--spacing-xs)}.readiness-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.readiness-list-item{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-secondary);border-radius:var(--radius-md)}.readiness-skill-name{font-size:var(--font-size-sm);font-weight:600}.readiness-skill-meta{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-top:2px}.readiness-section-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-secondary);margin-bottom:var(--spacing-xs)}.readiness-divider{height:1px;background:var(--color-border);margin:var(--spacing-md) 0}.readiness-empty{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:var(--spacing-md) var(--spacing-lg);text-align:left;border-bottom:1px solid var(--color-border)}.table th{font-size:var(--font-size-xs);font-weight:500;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;background:var(--color-bg-secondary)}.table td{font-size:var(--font-size-md);color:var(--color-text-primary)}.table tr:hover td{background:var(--color-bg-hover)}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg-secondary)}.login-card{width:100%;max-width:400px;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--spacing-3xl);box-shadow:var(--shadow-lg)}.login-logo{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-2xl)}.login-logo-icon{width:40px;height:40px;background:linear-gradient(135deg,var(--azure-flow),var(--deep-ocean));border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:var(--font-size-xl)}.login-logo-text{font-size:var(--font-size-2xl);font-weight:700;color:var(--color-text-primary)}.login-title{text-align:center;font-size:var(--font-size-xl);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.login-subtitle{text-align:center;font-size:var(--font-size-md);color:var(--color-text-secondary);margin-bottom:var(--spacing-xl)}.login-error{margin-bottom:var(--spacing-lg);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);background:#c0392b1a;border:1px solid rgba(192,57,43,.2);color:var(--color-accent-danger);font-size:var(--font-size-sm)}.spin{width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.grid{display:grid;gap:var(--spacing-lg)}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-3{grid-template-columns:repeat(3,1fr)}.grid-cols-4{grid-template-columns:repeat(4,1fr)}.skill-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-full);font-size:var(--font-size-sm);color:var(--color-text-primary);transition:all var(--transition-fast)}.skill-chip:hover{background:var(--color-bg-hover);border-color:var(--color-border-dark)}.skill-chip-required{background:#2d6b8a1a;border-color:#2d6b8a40;color:var(--color-accent-primary)}.skill-chip-completed{background:#10b98114;border-color:#10b98133;color:var(--color-accent-secondary)}.achievement-card{background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);display:flex;flex-direction:column;align-items:center;text-align:center;transition:all var(--transition-fast)}.achievement-card:hover{border-color:var(--color-border-dark);box-shadow:var(--shadow-md)}.achievement-card.locked{opacity:.5}.achievement-icon{width:56px;height:56px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;margin-bottom:var(--spacing-md);font-size:24px}.achievement-icon-gold{background:linear-gradient(135deg,var(--warm-light),var(--golden-accent))}.achievement-icon-silver{background:linear-gradient(135deg,var(--celestial-blue),var(--teal-mist))}.achievement-icon-bronze{background:linear-gradient(135deg,var(--golden-accent),#b8860b)}.achievement-icon-purple{background:linear-gradient(135deg,var(--azure-flow),var(--deep-ocean))}.achievement-title{font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.achievement-desc{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.timeline{position:relative;padding-left:24px}.timeline:before{content:"";position:absolute;left:7px;top:4px;bottom:4px;width:2px;background:var(--color-border)}.timeline-item{position:relative;padding-bottom:var(--spacing-xl)}.timeline-item:last-child{padding-bottom:0}.timeline-dot{position:absolute;left:-20px;top:4px;width:12px;height:12px;border-radius:var(--radius-full);background:var(--color-bg-primary);border:2px solid var(--color-border)}.timeline-dot.active{background:var(--color-accent-primary);border-color:var(--color-accent-primary)}.timeline-dot.completed{background:var(--color-accent-secondary);border-color:var(--color-accent-secondary)}.timeline-content{background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.timeline-title{font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.timeline-desc{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.roadmap-summary{display:flex;gap:var(--spacing-lg);padding:var(--spacing-md) var(--spacing-lg);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg-primary)}.roadmap-summary-item{display:flex;flex-direction:column;gap:4px}.roadmap-summary-label{font-size:var(--font-size-xs);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.04em}.roadmap-summary-value{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary)}.roadmap-filters{display:flex;flex-direction:column;gap:var(--spacing-lg)}.roadmap-filter-group{display:flex;flex-direction:column;gap:var(--spacing-sm)}.roadmap-filter-label{display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-xs);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.roadmap-filter-options{display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.roadmap-week-card{background:var(--color-bg-primary);border-radius:var(--radius-lg)}.roadmap-week-header{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-lg);margin-bottom:var(--spacing-md)}.roadmap-week-title{font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary)}.roadmap-week-range{font-size:var(--font-size-xs);color:var(--color-text-tertiary);margin-top:2px}.roadmap-week-meta{display:flex;align-items:center;gap:var(--spacing-md)}.roadmap-week-time{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.roadmap-milestone{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);border-radius:var(--radius-md);background:var(--color-bg-secondary);border:1px solid var(--color-border);margin-bottom:var(--spacing-md)}.roadmap-milestone-icon{width:32px;height:32px;border-radius:var(--radius-full);background:#2d6b8a1f;color:var(--color-accent-primary);display:inline-flex;align-items:center;justify-content:center}.roadmap-milestone-label{font-weight:600;font-size:var(--font-size-sm)}.roadmap-milestone-status{font-size:var(--font-size-xs);color:var(--color-text-tertiary);margin-top:2px}.roadmap-items{display:flex;flex-direction:column;gap:var(--spacing-sm)}.roadmap-item{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-lg);padding:var(--spacing-md);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg-primary);text-decoration:none;color:inherit;transition:all var(--transition-fast)}.roadmap-item-main{display:flex;flex-direction:column;gap:var(--spacing-xs)}.roadmap-item-title-link{text-decoration:none;color:inherit}.roadmap-item:hover{border-color:var(--color-border-dark);box-shadow:var(--shadow-sm)}.roadmap-item.completed{opacity:.7}.roadmap-item-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);margin-bottom:4px}.roadmap-item-meta{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);font-size:var(--font-size-xs);color:var(--color-text-secondary);align-items:center}.roadmap-item-modality{text-transform:none}.roadmap-item-priority{text-transform:capitalize;font-weight:600;color:var(--color-accent-warning)}.roadmap-item-actions{display:flex;flex-direction:column;align-items:flex-end;gap:var(--spacing-xs)}.roadmap-item-action{background:none;border:none;padding:0;font-size:var(--font-size-xs);color:var(--color-text-secondary);cursor:pointer}.roadmap-item-action:hover{color:var(--color-text-primary);text-decoration:underline}.roadmap-item-status{display:flex;align-items:center;gap:var(--spacing-xs)}.roadmap-empty{display:flex;align-items:center;gap:var(--spacing-md);color:var(--color-text-secondary);padding:var(--spacing-lg);border-radius:var(--radius-md);background:var(--color-bg-secondary);border:1px dashed var(--color-border)}.roadmap-empty-icon{width:40px;height:40px;border-radius:var(--radius-lg);background:#2d6b8a1f;color:var(--color-accent-primary);display:inline-flex;align-items:center;justify-content:center}.roadmap-drawer{position:fixed;top:0;right:0;height:100vh;width:min(420px,92vw);background:var(--color-bg-primary);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;z-index:210}.roadmap-drawer-header{padding:var(--spacing-lg);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md)}.roadmap-drawer-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary)}.roadmap-drawer-subtitle{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:4px}.roadmap-drawer-close{border:none;background:var(--color-bg-hover);color:var(--color-text-secondary);border-radius:var(--radius-md);width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.roadmap-drawer-close:hover{color:var(--color-text-primary)}.roadmap-drawer-body{padding:var(--spacing-lg);overflow-y:auto;display:flex;flex-direction:column;gap:var(--spacing-lg)}.roadmap-drawer-section{display:flex;flex-direction:column;gap:var(--spacing-sm)}.roadmap-drawer-section-label{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-tertiary)}.roadmap-drawer-card{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-md);background:var(--color-bg-secondary)}.roadmap-drawer-item-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary)}.roadmap-drawer-item-meta{display:flex;gap:var(--spacing-sm);align-items:center;font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-top:6px}.roadmap-drawer-loading{display:flex;flex-direction:column;gap:var(--spacing-sm)}.roadmap-drawer-empty{font-size:var(--font-size-sm);color:var(--color-text-secondary);padding:var(--spacing-sm);border:1px dashed var(--color-border);border-radius:var(--radius-md)}.roadmap-drawer-error{color:var(--color-accent-danger);font-size:var(--font-size-sm);margin-top:var(--spacing-sm)}.roadmap-alternatives{display:flex;flex-direction:column;gap:var(--spacing-md)}.roadmap-alternative{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-md);background:var(--color-bg-primary);display:flex;flex-direction:column;gap:var(--spacing-sm)}.roadmap-alternative-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--spacing-md)}.roadmap-alternative-title{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary)}.roadmap-alternative-meta{display:flex;gap:var(--spacing-sm);align-items:center;font-size:var(--font-size-xs);color:var(--color-text-secondary);margin-top:4px}.roadmap-alternative-tradeoff{display:flex;flex-direction:column;gap:var(--spacing-xs);font-size:var(--font-size-xs);color:var(--color-text-secondary)}.roadmap-tradeoff-summary{color:var(--color-text-secondary)}.roadmap-tradeoff-chips{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.roadmap-tradeoff-chip{background:var(--color-bg-hover);border-radius:var(--radius-sm);padding:2px 8px;font-size:var(--font-size-xs);color:var(--color-text-secondary)}.roadmap-detail-meta{display:flex;flex-wrap:wrap;gap:var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--spacing-lg)}.roadmap-detail-meta-item{display:inline-flex;align-items:center;gap:6px;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-full);background:var(--color-bg-secondary);border:1px solid var(--color-border)}.roadmap-detail-section{margin-bottom:var(--spacing-lg)}.roadmap-detail-label{font-weight:600;font-size:var(--font-size-sm);margin-bottom:var(--spacing-sm)}.roadmap-detail-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.6}.roadmap-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--spacing-md)}.roadmap-detail-key{font-size:var(--font-size-xs);color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px}.roadmap-detail-value{font-size:var(--font-size-sm);color:var(--color-text-primary)}.course-card{background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;transition:all var(--transition-fast)}.course-card:hover{border-color:var(--color-border-dark);box-shadow:var(--shadow-md)}.course-thumbnail{height:120px;background:linear-gradient(135deg,var(--azure-flow),var(--deep-ocean));display:flex;align-items:center;justify-content:center}.course-thumbnail svg{width:40px;height:40px;color:#fff;opacity:.9}.course-content{padding:var(--spacing-lg)}.course-category{font-size:var(--font-size-xs);color:var(--color-accent-primary);font-weight:500;margin-bottom:var(--spacing-xs)}.course-title{font-size:var(--font-size-md);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-sm)}.course-meta{display:flex;align-items:center;gap:var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.page-header{margin-bottom:var(--spacing-xl)}.page-title{font-size:var(--font-size-2xl);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.page-subtitle{font-size:var(--font-size-md);color:var(--color-text-secondary)}.search-input{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);width:240px}.search-input input{flex:1;border:none;background:none;font-size:var(--font-size-md);font-family:var(--font-family);color:var(--color-text-primary)}.search-input input:focus{outline:none}.search-input input::placeholder{color:var(--color-text-tertiary)}.search-input svg{color:var(--color-text-tertiary);width:16px;height:16px}.breadcrumbs{display:flex;align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.breadcrumbs a{color:var(--color-text-secondary);text-decoration:none;transition:color var(--transition-fast)}.breadcrumbs a:hover{color:var(--color-text-primary)}.breadcrumbs-separator{color:var(--color-text-tertiary)}.breadcrumbs-current{color:var(--color-text-primary);font-weight:500}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-3xl);text-align:center}.empty-state-icon{width:64px;height:64px;border-radius:var(--radius-full);background:var(--color-bg-tertiary);display:flex;align-items:center;justify-content:center;margin-bottom:var(--spacing-lg);color:var(--color-text-tertiary)}.empty-state-title{font-size:var(--font-size-lg);font-weight:600;color:var(--color-text-primary);margin-bottom:var(--spacing-xs)}.empty-state-desc{font-size:var(--font-size-md);color:var(--color-text-secondary);max-width:300px}.divider{height:1px;background:var(--color-border);margin:var(--spacing-lg) 0}.user-menu{display:flex;align-items:center;gap:var(--spacing-sm);position:relative}.user-menu-trigger{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast);border:none;background:none;color:inherit}.user-menu-trigger:hover{background:var(--color-bg-hover)}.user-menu-dropdown{position:absolute;right:0;top:calc(100% + 8px);width:340px;background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);overflow:hidden}.user-menu-dropdown-section{padding:var(--spacing-md)}.user-menu-dropdown-title{font-size:var(--font-size-xs);font-weight:600;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.5px;margin-bottom:var(--spacing-sm)}.user-menu-dropdown-empty{font-size:var(--font-size-sm);color:var(--color-text-secondary);padding:var(--spacing-sm);background:var(--color-bg-secondary);border-radius:var(--radius-md)}.user-menu-dropdown-list{display:flex;flex-direction:column;gap:6px}.user-menu-org-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-primary);cursor:pointer;transition:all var(--transition-fast);text-align:left}.user-menu-org-item:hover{background:var(--color-bg-hover);border-color:var(--color-border-dark)}.user-menu-org-item.active{border-color:#2d6b8a59;box-shadow:0 0 0 3px #2d6b8a1f}.user-menu-org-item:disabled{opacity:.6;cursor:default}.user-menu-org-dot{width:10px;height:10px;border-radius:var(--radius-full);background:var(--color-bg-tertiary);border:2px solid var(--color-border-dark);flex-shrink:0}.user-menu-org-item.active .user-menu-org-dot{background:var(--color-accent-primary);border-color:var(--color-accent-primary)}.user-menu-org-name{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text-primary);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu-org-domain{font-size:var(--font-size-xs);color:var(--color-text-tertiary);background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-full);padding:2px 8px}.user-menu-dropdown-divider{height:1px;background:var(--color-border)}.user-menu-action{width:100%;display:flex;align-items:center;gap:var(--spacing-sm);padding:12px 14px;border:none;background:var(--color-bg-primary);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast)}.user-menu-action:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.user-info{text-align:right}.user-name{font-size:var(--font-size-sm);font-weight:500;color:var(--color-text-primary)}.user-role{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.notification-badge{position:relative}.notification-badge:after{content:"";position:absolute;top:-2px;right:-2px;width:8px;height:8px;background:var(--color-accent-danger);border-radius:var(--radius-full);border:2px solid var(--color-bg-primary)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border-dark);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-tertiary)}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,var(--color-bg-tertiary) 0%,var(--color-bg-secondary) 20%,var(--color-bg-tertiary) 40%,var(--color-bg-tertiary) 100%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite}.skeleton-card{background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);overflow:hidden}.skeleton-course-card{background:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.skeleton-course-card .skeleton-thumbnail{background:linear-gradient(90deg,var(--color-azure-flow) 0%,var(--color-teal-mist) 20%,var(--color-azure-flow) 40%,var(--color-azure-flow) 100%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite}.skeleton-table-row td{border-bottom:1px solid var(--color-border)}.assessment-lobby{display:flex;flex-direction:column;gap:var(--spacing-xl)}.lobby-module{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-bg-primary)}.lobby-module-time{display:flex;align-items:center;gap:6px;font-size:var(--font-size-sm);color:var(--color-text-tertiary)}.timer-mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--spacing-sm)}.timer-mode{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);cursor:pointer;font-size:var(--font-size-sm)}.timer-mode input{margin:0}.timer-mode.selected{border-color:var(--color-accent-primary);background:#2d6b8a1f}.timer-mode-label{text-transform:capitalize}.alert{padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.alert-error{background:#c0392b1a;color:var(--color-accent-danger);border:1px solid rgba(192,57,43,.3)}.assessment-player{display:flex;flex-direction:column;gap:var(--spacing-lg)}.player-header{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-lg)}.player-meta{font-size:var(--font-size-sm);color:var(--color-text-secondary);display:flex;gap:var(--spacing-sm);align-items:center}.player-actions{display:flex;gap:var(--spacing-sm)}.player-progress{display:flex;flex-direction:column;gap:var(--spacing-xs)}.player-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(260px,.6fr);gap:var(--spacing-xl)}.question-block{display:flex;flex-direction:column;gap:var(--spacing-md)}.question-meta{font-size:var(--font-size-xs);text-transform:uppercase;color:var(--color-text-tertiary);letter-spacing:.04em}.question-title{font-size:var(--font-size-xl);font-weight:600}.option-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.option{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-primary);text-align:left;cursor:pointer}.option.selected{border-color:var(--color-accent-primary);background:#2d6b8a1a}.option.checkbox{display:flex;align-items:center;gap:var(--spacing-sm)}.text-response textarea{min-height:140px;width:100%;padding:var(--spacing-sm);border-radius:var(--radius-md);border:1px solid var(--color-border);font-family:var(--font-family)}.no-more-items{text-align:center;display:flex;flex-direction:column;gap:var(--spacing-sm);align-items:center}.a11y-controls{display:flex;flex-direction:column;gap:var(--spacing-sm)}.a11y-controls label{display:flex;flex-direction:column;gap:var(--spacing-xs);font-size:var(--font-size-sm)}.a11y-controls select{padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg-primary)}.toggle{flex-direction:row!important;align-items:center;justify-content:space-between}.modal-backdrop{position:fixed;inset:0;background:#0f172a66;display:flex;align-items:center;justify-content:center;z-index:200}.modal{background:var(--color-bg-primary);border-radius:var(--radius-lg);width:min(520px,90vw);box-shadow:var(--shadow-lg)}.modal-header,.modal-body,.modal-footer{padding:var(--spacing-lg)}.modal-footer{display:flex;justify-content:flex-end;gap:var(--spacing-sm)}.admin-assessment-row{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-lg);text-decoration:none;color:inherit}.module-row{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-primary)}.module-row.selected{border-color:var(--color-accent-primary)}.module-form,.item-form{margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--color-border)}.item-row,.flag-row{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-md)}@media(max-width:960px){.player-grid{grid-template-columns:1fr}}.heatmap-card .card-body{display:flex;flex-direction:column;gap:var(--spacing-md)}.heatmap-toggle{display:flex;gap:var(--spacing-xs)}.heatmap-toolbar{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-md);flex-wrap:wrap}.heatmap-filters{display:flex;gap:var(--spacing-sm);align-items:center}.heatmap-grid{display:grid;grid-template-columns:minmax(220px,2fr) repeat(4,minmax(90px,1fr));gap:var(--spacing-xs)}.heatmap-row{display:contents}.heatmap-cell{border:1px solid var(--color-border);background:var(--color-bg-secondary);border-radius:var(--radius-md);padding:var(--spacing-sm);font-size:var(--font-size-sm);text-align:center;color:var(--color-text-secondary);min-height:56px;display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}button.heatmap-cell{cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast)}button.heatmap-cell:hover{border-color:var(--color-accent-primary);color:var(--color-text-primary)}.heatmap-cell.active{background:#2d6b8a1f;color:var(--color-accent-primary);font-weight:600}.heatmap-cell.heatmap-header{background:var(--color-bg-tertiary);color:var(--color-text-primary);font-weight:600;border-radius:var(--radius-md)}.heatmap-skill-cell{text-align:left;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px}.heatmap-skill-title{font-weight:600;color:var(--color-text-primary)}.heatmap-skill-meta{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.heatmap-skill-explanation{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.heatmap-empty{padding:var(--spacing-md);color:var(--color-text-tertiary);font-size:var(--font-size-sm)}.skill-detail-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--spacing-md);flex-wrap:wrap}.skill-detail-badges{display:flex;gap:var(--spacing-xs);align-items:center;flex-wrap:wrap}.skill-detail-progress{display:grid;gap:var(--spacing-md)}.skill-detail-progress-value{font-size:var(--font-size-2xl);font-weight:600;color:var(--color-text-primary)}.skill-detail-progress-label{font-size:var(--font-size-sm);color:var(--color-text-tertiary)}.skill-detail-explanation{margin-top:var(--spacing-md);display:flex;flex-direction:column;gap:var(--spacing-sm);color:var(--color-text-secondary)}.skill-detail-links{display:flex;gap:var(--spacing-md);font-size:var(--font-size-sm)}.skill-detail-links a{color:var(--color-accent-primary);text-decoration:none}.skill-detail-links a:hover{text-decoration:underline}.skill-detail-empty{color:var(--color-text-tertiary);font-size:var(--font-size-sm)}.skill-detail-rubric{display:grid;gap:var(--spacing-xs)}.skill-detail-rubric-title{font-weight:600;color:var(--color-text-primary)}.skill-detail-list{display:grid;gap:var(--spacing-sm)}.skill-detail-assessment{display:flex;justify-content:space-between;gap:var(--spacing-md);padding:var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary)}.skill-detail-assessment-title{font-weight:600;color:var(--color-text-primary)}.skill-detail-assessment-meta{font-size:var(--font-size-xs);color:var(--color-text-tertiary)}.skill-detail-assessment-stats{display:flex;flex-direction:column;gap:4px;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.skill-detail-actions{display:grid;gap:var(--spacing-sm)}.skill-detail-action{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary)}.skill-detail-action-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-md);background:#2d6b8a1f;color:var(--color-accent-primary)}.skill-detail-action-title{font-weight:600;color:var(--color-text-primary)}.skill-detail-action-desc{font-size:var(--font-size-sm);color:var(--color-text-tertiary)}@media(max-width:960px){.heatmap-grid{grid-template-columns:minmax(160px,1fr) repeat(4,minmax(70px,1fr))}.skill-detail-action{grid-template-columns:1fr;align-items:flex-start}}
