:root{--color-bg-deep: #2d3436;--color-bg-surface: #353b48;--color-bg-elevated: #2f3640;--color-bg-overlay: #3d4655;--color-text-primary: #dfe6e9;--color-text-secondary: #b2bec3;--color-text-muted: #636e72;--color-text-inverse: #2d3436;--color-accent-primary: #a29bfe;--color-accent-primary-hover: #6c5ce7;--color-accent-primary-active: #5849be;--color-accent-text-hover: #ff69b4;--color-accent-primary-rgb: 162, 155, 254;--color-accent-secondary: #55efc4;--color-accent-secondary-hover: #00b894;--color-accent-secondary-rgb: 85, 239, 196;--color-success: #55efc4;--color-success-subtle: #00b894;--color-error: #ff7675;--color-error-subtle: #d63031;--color-warning: #ffeaa7;--color-warning-subtle: #fdcb6e;--color-border-default: #464f5b;--color-border-muted: #3d4655;--color-border-emphasis: #576574;--space-xs: 6px;--space-sm: 12px;--space-md: 20px;--space-lg: 32px;--space-xl: 48px;--space-2xl: 64px;--space-3xl: 96px;--font-logo: "Fredoka", "Quicksand", "Varela Round", sans-serif;--font-display: "Nunito", "Quicksand", "Varela Round", "Segoe UI Rounded", system-ui, sans-serif;--font-sans: "Nunito", "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Consolas", "Monaco", monospace;--font-heading: var(--font-display);--font-body: var(--font-sans);--font-size-xs: .875rem;--font-size-sm: 1rem;--font-size-md: 1.125rem;--font-size-lg: 1.25rem;--font-size-xl: 1.5rem;--font-size-2xl: 2rem;--font-size-3xl: 3rem;--font-weight-light: 400;--font-weight-normal: 500;--font-weight-medium: 600;--font-weight-semibold: 700;--font-weight-bold: 800;--line-height-tight: 1.2;--line-height-normal: 1.6;--line-height-relaxed: 1.8;--sidebar-width: 300px;--content-max-width: 840px;--content-wide-max-width: 1200px;--header-height: 70px;--radius-sm: 8px;--radius-md: 16px;--radius-lg: 24px;--radius-xl: 32px;--radius-full: 9999px;--shadow-sm: 0 2px 4px rgba(0,0,0,.1);--shadow-md: 0 4px 12px rgba(0,0,0,.15);--shadow-lg: 0 8px 24px rgba(0,0,0,.2);--transition-fast: .15s cubic-bezier(.25, .8, .25, 1);--transition-base: .3s cubic-bezier(.25, .8, .25, 1);--transition-slow: .5s cubic-bezier(.25, .8, .25, 1);--z-base: 1;--z-dropdown: 10;--z-sticky: 20;--z-fixed: 30;--z-overlay: 40;--z-modal: 50;--z-toast: 60;--color-progress-bg: var(--color-bg-elevated);--color-progress-fill: var(--color-accent-secondary);--code-bg: #2d3436;--code-fg: #dfe6e9;--code-comment: #636e72;--code-keyword: #a29bfe;--code-string: #55efc4;--code-function: #74b9ff;--code-variable: #ffeaa7;--code-number: #fd79a8;--code-operator: #fab1a0;--code-punctuation: #b2bec3;--brick-body-fill: rgba(162, 155, 254, .15);--brick-body-stroke: #a29bfe;--brick-glasses: #ff69b4;--brick-pupils: #dfe6e9;--brick-mouth: #a29bfe;--brick-glint: rgba(255, 255, 255, .6)}[data-theme=light]{--color-bg-deep: #fdfbf7;--color-bg-surface: #ffffff;--color-bg-elevated: #f4f4f0;--color-bg-overlay: #eaeae5;--color-text-primary: #2d3436;--color-text-secondary: #636e72;--color-text-muted: #b2bec3;--color-text-inverse: #ffffff;--color-accent-primary: #6c5ce7;--color-accent-primary-hover: #5849be;--color-accent-primary-active: #4834d4;--color-accent-text-hover: #ff69b4;--color-accent-primary-rgb: 108, 92, 231;--color-accent-secondary: #00b894;--color-accent-secondary-hover: #00a884;--color-accent-secondary-rgb: 0, 184, 148;--color-success: #00b894;--color-success-subtle: #55efc4;--color-error: #d63031;--color-error-subtle: #ff7675;--color-warning: #fdcb6e;--color-warning-subtle: #ffeaa7;--color-border-default: #dfe6e9;--color-border-muted: #f4f4f0;--color-border-emphasis: #b2bec3;--shadow-sm: 0 2px 8px rgba(108, 92, 231, .08);--shadow-md: 0 8px 24px rgba(108, 92, 231, .12);--shadow-lg: 0 16px 48px rgba(108, 92, 231, .16);--code-bg: #f4f4f0;--code-fg: #2d3436;--code-comment: #b2bec3;--code-keyword: #6c5ce7;--code-string: #00b894;--code-function: #0984e3;--code-variable: #d63031;--code-number: #e17055;--code-operator: #fdcb6e;--code-punctuation: #636e72;--brick-body-fill: rgba(108, 92, 231, .1);--brick-body-stroke: #6c5ce7;--brick-glasses: #e84393;--brick-pupils: #2d3436;--brick-mouth: #6c5ce7;--brick-glint: rgba(255, 255, 255, .8)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{font-family:var(--font-body);font-size:var(--font-size-md);font-weight:var(--font-weight-normal);line-height:var(--line-height-normal);color:var(--color-text-primary);background-color:var(--color-bg-deep);min-height:100vh}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:var(--font-weight-normal);line-height:var(--line-height-tight);color:var(--color-text-primary);margin-bottom:var(--space-md);letter-spacing:0;text-transform:none}h1{font-size:var(--font-size-3xl);font-weight:var(--font-weight-light);margin-bottom:var(--space-lg)}h2{font-size:var(--font-size-2xl);font-weight:var(--font-weight-light);margin-top:var(--space-xl)}h3{font-size:var(--font-size-xl);margin-top:var(--space-lg)}h4{font-family:var(--font-body);font-size:var(--font-size-lg);margin-top:var(--space-lg)}h5,h6{font-family:var(--font-body);font-size:var(--font-size-md);font-weight:var(--font-weight-normal)}p{margin-bottom:var(--space-md);color:var(--color-text-primary);line-height:var(--line-height-relaxed)}strong,b{font-weight:var(--font-weight-normal)}em,i{font-style:italic}small{font-size:var(--font-size-sm);color:var(--color-text-muted)}ul,ol{margin-bottom:var(--space-md);padding-left:var(--space-lg);color:var(--color-text-secondary)}ul{list-style-type:disc}ol{list-style-type:decimal}li{margin-bottom:var(--space-sm);line-height:var(--line-height-relaxed)}li::marker{color:var(--color-text-muted)}a{color:var(--color-accent-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-accent-text-hover);text-decoration:underline}a:active{color:var(--color-accent-primary-active)}code{font-family:var(--font-mono);font-size:.9em;padding:2px 6px;background-color:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-sm);color:var(--code-fg)}pre{font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);background-color:var(--code-bg);border:1px solid var(--color-border-default);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-md);overflow-x:auto;tab-size:2}pre code{padding:0;background:transparent;border:none;font-size:inherit;color:inherit}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:var(--code-comment);font-style:italic}.token.keyword,.token.tag,.token.boolean,.token.important{color:var(--code-keyword)}.token.string,.token.attr-value{color:var(--code-string)}.token.function,.token.class-name{color:var(--code-function)}.token.variable,.token.property{color:var(--code-variable)}.token.number{color:var(--code-number)}.token.operator{color:var(--code-operator)}.token.punctuation{color:var(--code-punctuation)}blockquote{margin:var(--space-lg) 0;padding:var(--space-md) var(--space-lg);border-left:3px solid var(--color-accent-primary);color:var(--color-text-secondary);font-style:italic;background:var(--color-bg-surface)}hr{border:none;border-top:1px solid var(--color-border-default);margin:var(--space-xl) 0}:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:2px;border-radius:var(--radius-sm)}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:2px}::selection{background-color:var(--color-accent-primary);color:var(--color-text-inverse)}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--color-bg-deep)}::-webkit-scrollbar-thumb{background:var(--color-border-default);border:2px solid var(--color-bg-deep)}::-webkit-scrollbar-thumb:hover{background:var(--color-accent-primary)}img,video{max-width:100%;height:auto;display:block}table{width:100%;border-collapse:collapse;margin-bottom:var(--space-md)}th,td{padding:var(--space-sm) var(--space-md);text-align:left;border-bottom:1px solid var(--color-border-default)}th{font-weight:var(--font-weight-normal);color:var(--color-text-primary);background-color:var(--color-bg-elevated)}td{color:var(--color-text-secondary)}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-muted{color:var(--color-text-muted)}.text-success{color:var(--color-success)}.text-error{color:var(--color-error)}.text-warning{color:var(--color-warning)}.bg-deep{background-color:var(--color-bg-deep)}.bg-surface{background-color:var(--color-bg-surface)}.bg-elevated{background-color:var(--color-bg-elevated)}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}#app,.app-container{display:flex;min-height:100vh;background-color:var(--color-bg-deep)}.sidebar{position:fixed;top:0;left:0;width:var(--sidebar-width);height:100vh;background:linear-gradient(180deg,#22c55e1f,#22c55e0a),var(--color-bg-surface);border-right:1px solid var(--color-border-default);overflow-y:auto;padding:var(--space-md);z-index:var(--z-fixed)}.sidebar-header{margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border-default)}.sidebar-title{font-family:var(--font-body);font-size:var(--font-size-lg);font-weight:var(--font-weight-normal);color:var(--color-text-primary);margin-bottom:var(--space-xs);letter-spacing:-.01em}.sidebar-subtitle{font-size:var(--font-size-sm);color:var(--color-text-muted)}.sidebar-nav{list-style:none;padding:0;margin:0 0 var(--space-md) 0}.sidebar-nav-item{margin-bottom:var(--space-xs)}.sidebar-nav-link{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);color:var(--color-text-secondary);font-family:var(--font-body);font-size:var(--font-size-sm);transition:all var(--transition-fast);text-decoration:none}.sidebar-nav-link:hover{background-color:var(--color-bg-elevated);color:var(--color-accent-text-hover);text-decoration:none}.sidebar-nav-link.active{background-color:var(--color-accent-primary);color:var(--color-text-inverse);font-weight:var(--font-weight-normal)}.sidebar-section{margin-bottom:0}.sidebar-section-title{font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-md);padding:0 var(--space-sm)}.sidebar-subjects{display:flex;flex-direction:column;gap:var(--space-xs)}.sidebar-subject-link{display:block;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);text-decoration:none;color:inherit;transition:background var(--transition-fast)}.sidebar-subject-link:hover{background:var(--color-bg-elevated);text-decoration:none}.sidebar-subject-link:hover .sidebar-subject-title,.sidebar-subject-link:hover .sidebar-subject-code{color:var(--color-accent-text-hover)}.sidebar-subject-link.active{background:var(--color-accent-primary)}.sidebar-subject-link.active .sidebar-subject-title{color:var(--color-text-inverse)}.sidebar-subject-header{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-xs)}.sidebar-subject-title{font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-subject-code{font-family:var(--font-body);font-size:var(--font-size-xs);color:var(--color-text-muted)}.sidebar-subject-progress{height:3px;background:var(--color-bg-elevated);border-radius:var(--radius-sm);overflow:hidden}.sidebar-subject-progress-fill{height:100%;background:var(--color-accent-primary);border-radius:var(--radius-sm);transition:width var(--transition-slow)}.sidebar-logo{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs);padding:var(--space-xs) 0;text-decoration:none;border-radius:var(--radius-md);transition:opacity var(--transition-fast)}.sidebar-logo:hover{text-decoration:none;background-color:transparent}.logo-icon{display:flex;align-items:center;justify-content:center;color:var(--color-accent-primary)}.sidebar-logo .logo-icon{width:120px;height:120px;flex-shrink:0}.logo-icon svg{display:block;width:100%;height:100%}.sidebar-logo .logo-icon svg{margin-top:0}.mobile-header .logo-icon svg{width:48px;height:48px;margin-top:0}.logo-text{font-family:var(--font-mono);font-size:2.5rem;font-weight:300;color:var(--color-text-primary);letter-spacing:-.02em;line-height:1;border-bottom:2px solid transparent;transition:border-color var(--transition-fast),color var(--transition-fast)}.sidebar-logo:hover .logo-icon{animation:logo-bounce .4s ease}.sidebar-logo:hover .logo-text{color:var(--color-accent-primary);border-color:var(--color-accent-text-hover)}.subjects-section{margin-top:var(--space-sm)}.subjects-header{font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-md);padding:0 var(--space-sm)}.subjects-list{display:flex;flex-direction:column;gap:var(--space-xs)}.subject-group-header{font-family:var(--font-body);font-size:var(--font-size-xs);color:var(--color-text-muted);padding:var(--space-md) var(--space-sm) var(--space-xs);margin-top:var(--space-sm)}.subject-item{position:relative;margin-bottom:var(--space-xs)}.subject-link{display:block;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);text-decoration:none;color:inherit;transition:background var(--transition-fast)}.subject-link:hover{background:var(--color-bg-elevated);text-decoration:none}.subject-link:hover .subject-title,.subject-link:hover .subject-subtitle{color:var(--color-accent-text-hover)}.subject-link.active{background:var(--color-accent-primary)}.subject-link.active .subject-title,.subject-link.active .subject-subtitle{color:var(--color-text-inverse)}.subject-link .subject-header{display:flex;align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-xs)}.subject-icon{font-size:var(--font-size-sm);flex-shrink:0}.subject-info{flex:1;min-width:0}.subject-link .subject-title{font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-secondary)}.subject-link .subject-subtitle{font-family:var(--font-body);font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.subject-progress-bar{height:3px;background:var(--color-bg-elevated);border-radius:var(--radius-sm);overflow:hidden}.subject-progress-fill{height:100%;border-radius:var(--radius-sm);transition:width var(--transition-slow)}.subject-hover-menu{position:absolute;top:50%;left:calc(100% + var(--space-sm));transform:translateY(-50%) translate(8px);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md);padding:var(--space-sm);opacity:0;pointer-events:none;transition:opacity var(--transition-fast),transform var(--transition-fast);min-width:240px;z-index:var(--z-overlay)}.subject-item.menu-open .subject-hover-menu,.subject-item:focus-within .subject-hover-menu{opacity:1;pointer-events:auto;transform:translateY(-50%) translate(0)}.subject-hover-menu .menu-action{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-sm);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-text-primary);font-family:var(--font-body);font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.subject-hover-menu .menu-action:hover,.subject-hover-menu .menu-action:focus-visible{background:var(--color-bg-elevated);color:var(--color-accent-text-hover)}.subject-hover-menu .menu-icon svg{width:16px;height:16px}.subject-hover-menu .menu-section{border-top:1px solid var(--color-border-default);padding-top:var(--space-sm);margin-top:var(--space-sm)}.subject-hover-menu .menu-section-title{font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--space-xs)}.subject-hover-menu .menu-condensed{padding:var(--space-xs) var(--space-sm)}.subject-hover-menu .menu-footnote{font-size:var(--font-size-xs);color:var(--color-text-muted);padding:0 var(--space-xs)}.subject-hover-menu .menu-text{flex:1;text-align:left;display:flex;flex-direction:column;gap:2px}.subject-hover-menu .menu-title{font-weight:var(--font-weight-normal);color:var(--color-text-primary)}.subject-hover-menu .menu-subtitle{font-size:var(--font-size-xs);color:var(--color-text-muted)}.subject-hover-menu .menu-chevron svg{width:14px;height:14px;color:var(--color-text-muted)}.subject-submenu{position:fixed;background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md);padding:var(--space-xs);min-width:220px;opacity:0;pointer-events:none;transition:opacity var(--transition-fast),transform var(--transition-fast);transform:translate(6px);z-index:var(--z-overlay)}.subject-submenu:before{content:"";position:absolute;top:0;left:-12px;width:12px;height:100%}.subject-submenu.open{opacity:1;pointer-events:auto;transform:translate(0)}.subject-submenu .menu-action{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-sm);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-text-primary);font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.subject-submenu .menu-action:hover,.subject-submenu .menu-action:focus-visible{background:var(--color-bg-elevated);color:var(--color-accent-text-hover)}.subject-submenu .menu-condensed{padding:var(--space-xs) var(--space-sm)}.subject-submenu .menu-text{flex:1;text-align:left;display:flex;flex-direction:column;gap:2px}.subject-submenu .menu-title{font-weight:var(--font-weight-normal);color:var(--color-text-primary)}.subject-submenu .menu-subtitle{font-size:var(--font-size-xs);color:var(--color-text-muted)}.subject-submenu .menu-chevron svg{width:14px;height:14px;color:var(--color-text-muted)}.current-subject-section{margin-top:var(--space-lg);padding-top:var(--space-lg);border-top:1px solid var(--color-border-default)}.current-subject-header{font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-md)}.current-subject-card{padding:var(--space-md);background:var(--color-bg-elevated);border-radius:var(--radius-md)}.current-subject-card .subject-code{font-size:var(--font-size-xs);color:var(--color-accent-primary);font-weight:var(--font-weight-normal);margin-bottom:var(--space-xs)}.current-subject-card .subject-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-primary);margin-bottom:var(--space-xs)}.current-subject-card .subject-meta{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--space-md)}.progress-container{margin-top:var(--space-sm)}.progress-container .progress-label{display:flex;justify-content:space-between;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--space-xs)}.progress-bar-track{height:4px;background:var(--color-bg-surface);border-radius:var(--radius-sm);overflow:hidden}.progress-bar-fill{height:100%;border-radius:var(--radius-sm);transition:width var(--transition-slow)}.nav-icon{flex-shrink:0}.nav-label{flex:1}.main-content{flex:1;margin-left:var(--sidebar-width);min-height:100vh;background-color:var(--color-bg-deep);padding:var(--space-2xl) var(--space-xl);overflow-x:clip;transition:margin-left var(--transition-base)}.sidebar-toggle{position:fixed;top:var(--space-md);left:var(--sidebar-width);transform:translate(calc(-100% - var(--space-sm)));z-index:var(--z-fixed);width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast)}.sidebar-toggle:hover{color:var(--color-accent-text-hover);background:var(--color-bg-elevated)}.sidebar-toggle svg{width:18px;height:18px;transition:transform var(--transition-fast)}.sidebar.collapsed,.app-container.sidebar-collapsed .sidebar{transform:translate(-100%)}.sidebar.collapsed+.main-content,.app-container.sidebar-collapsed .main-content{margin-left:0}.app-container.sidebar-collapsed .sidebar-toggle{left:0;transform:translate(var(--space-md))}.app-container.sidebar-collapsed .sidebar-toggle svg{transform:rotate(180deg)}@media (max-width: 768px){.sidebar-toggle{display:none}}.grid{display:grid;gap:var(--space-lg)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-auto{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.flex{display:flex;gap:var(--space-md)}.flex-center{display:flex;align-items:center;justify-content:center}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-col{display:flex;flex-direction:column;gap:var(--space-md)}.mt-sm{margin-top:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.mt-xl{margin-top:var(--space-xl)}.mt-2xl{margin-top:var(--space-2xl)}.mb-sm{margin-bottom:var(--space-sm)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.mb-xl{margin-bottom:var(--space-xl)}.mb-2xl{margin-bottom:var(--space-2xl)}.p-sm{padding:var(--space-sm)}.p-md{padding:var(--space-md)}.p-lg{padding:var(--space-lg)}.p-xl{padding:var(--space-xl)}.p-2xl{padding:var(--space-2xl)}.container{width:100%;max-width:var(--content-max-width);margin:0 auto;padding:0 var(--space-lg)}.container.wide{max-width:var(--content-wide-max-width)}.divider{height:1px;background-color:var(--color-border-default);margin:var(--space-xl) 0}.stack{display:flex;flex-direction:column}.stack>*+*{margin-top:var(--space-md)}.stack.tight>*+*{margin-top:var(--space-sm)}.stack.loose>*+*{margin-top:var(--space-lg)}.mobile-header{display:none;position:fixed;top:0;left:0;right:0;height:var(--mobile-header-height, 56px);background-color:var(--color-bg-surface);border-bottom:1px solid var(--color-border-default);padding:0 var(--space-md);align-items:center;justify-content:space-between;z-index:var(--z-fixed);transition:transform var(--transition-base)}.mobile-header .mobile-logo{display:flex;align-items:center;gap:var(--space-sm);text-decoration:none}.mobile-header .mobile-logo span:not(.logo-icon){font-family:var(--font-logo);font-size:1.4rem;font-weight:600;color:var(--color-text-primary);letter-spacing:.02em}@keyframes logo-squash{0%,to{transform:scale(1) rotate(0)}15%{transform:scale(1.08,.92) rotate(-6deg)}35%{transform:scale(.94,1.12) rotate(7deg)}55%{transform:scale(1.12,.9) rotate(-8deg)}75%{transform:scale(.96,1.08) rotate(4deg)}}@keyframes logo-color{0%,to{color:var(--color-accent-primary)}50%{color:var(--color-text-primary)}}@media (prefers-reduced-motion: reduce){.logo-icon svg{animation:none}}@media (prefers-reduced-motion: reduce){.logo-icon{animation:none}}.hamburger-btn{display:flex;flex-direction:column;justify-content:center;align-items:center;width:44px;height:44px;padding:var(--space-sm);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;gap:5px;transition:background-color var(--transition-fast)}.hamburger-btn:hover,.hamburger-btn:focus-visible{background-color:var(--color-bg-elevated)}.hamburger-btn span{display:block;width:22px;height:2px;background-color:var(--color-text-primary);border-radius:1px;transition:transform var(--transition-fast),opacity var(--transition-fast)}.hamburger-btn.active span:nth-child(1){transform:translateY(7px) rotate(45deg)}.hamburger-btn.active span:nth-child(2){opacity:0}.hamburger-btn.active span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.mobile-overlay{display:none;position:fixed;inset:0;background-color:#00000080;z-index:calc(var(--z-fixed) + 5);opacity:0;transition:opacity var(--transition-base);backdrop-filter:blur(2px)}.mobile-overlay.active{opacity:1}.mobile-bottom-nav{display:none}.sidebar-close-btn{display:none;position:absolute;top:var(--space-md);right:var(--space-md);width:40px;height:40px;background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--font-size-xl);cursor:pointer;align-items:center;justify-content:center;transition:all var(--transition-fast)}.sidebar-close-btn:hover{background:var(--color-bg-overlay);color:var(--color-accent-text-hover)}@media (max-width: 1024px){.grid-3{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){:root{--mobile-header-height: 56px}.mobile-header{display:flex}.mobile-overlay{display:block;pointer-events:none}.mobile-overlay.active{pointer-events:auto}.sidebar{position:fixed;top:0;left:0;width:min(280px,85vw);height:100vh;height:100dvh;transform:translate(-100%);transition:transform var(--transition-base);z-index:calc(var(--z-fixed) + 10);border-right:1px solid var(--color-border-default);border-bottom:none;padding:var(--space-lg);padding-top:calc(var(--space-lg) + 48px);overflow-y:auto;overscroll-behavior:contain}.sidebar.open{transform:translate(0)}.sidebar-close-btn{display:flex}#app,.app-container{flex-direction:column}.main-content{margin-left:0;margin-top:var(--mobile-header-height);padding:var(--space-lg) var(--space-md) calc(var(--space-3xl, 4rem) + 72px);min-height:calc(100vh - var(--mobile-header-height));min-height:calc(100dvh - var(--mobile-header-height))}.mobile-bottom-nav{position:fixed;right:0;bottom:0;left:0;z-index:var(--z-fixed);display:grid;grid-template-columns:repeat(4,1fr);gap:2px;min-height:64px;padding:6px max(var(--space-sm),env(safe-area-inset-right)) max(6px,env(safe-area-inset-bottom)) max(var(--space-sm),env(safe-area-inset-left));background:color-mix(in srgb,var(--color-bg-surface) 96%,transparent);border-top:1px solid var(--color-border-default);box-shadow:0 -8px 24px #0000002e;backdrop-filter:blur(12px);transition:transform var(--transition-base)}body.mobile-chrome-hidden .mobile-header{transform:translateY(-100%)}body.mobile-chrome-hidden .mobile-bottom-nav{transform:translateY(100%)}.mobile-bottom-nav-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0;min-height:52px;border-radius:var(--radius-md);color:var(--color-text-muted);font-size:var(--font-size-xs);line-height:1.1;text-decoration:none;transition:background var(--transition-fast),color var(--transition-fast)}.mobile-bottom-nav-link:hover,.mobile-bottom-nav-link:focus-visible,.mobile-bottom-nav-link.active{background:var(--color-bg-elevated);color:var(--color-accent-primary);text-decoration:none}.mobile-bottom-nav-icon{display:flex;align-items:center;justify-content:center}.mobile-bottom-nav-icon svg{width:20px;height:20px}.grid-2,.grid-3{grid-template-columns:1fr}.sidebar-nav-link,.subject-link{padding:var(--space-md);min-height:44px}.subject-hover-menu,.subject-submenu{display:none}.flex{flex-wrap:wrap}}@media (max-width: 480px){.main-content{padding:var(--space-md) var(--space-md) calc(var(--space-3xl, 4rem) + 72px)}.sidebar{width:100vw}}@media (min-width: 481px) and (max-width: 600px){.grid-auto{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.sidebar,.mobile-overlay{transition:none}}.sidebar-content{display:flex;flex-direction:column;height:100%}.sidebar-search-container{margin-bottom:var(--space-sm)}.sidebar-search{width:100%;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border-default);border-radius:var(--radius-md);background:var(--color-bg-elevated);color:var(--color-text-primary);font-family:var(--font-sans);font-size:var(--font-size-sm);transition:border-color var(--transition-fast)}.sidebar-search:focus{outline:none;border-color:var(--color-accent-primary)}.sidebar-search::placeholder{color:var(--color-text-muted)}.sidebar-filters{display:flex;gap:var(--space-xs);margin-bottom:var(--space-md);flex-wrap:wrap}.filter-btn{padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-border-default);border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-family:var(--font-sans);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.filter-btn:hover{background:var(--color-bg-elevated);color:var(--color-accent-text-hover)}.filter-btn.active{background:var(--color-text-primary);border-color:var(--color-text-primary);color:var(--color-bg-deep)}.subject-list-container{flex:1;overflow-y:auto}.subjects-list-new{display:flex;flex-direction:column;gap:var(--space-xs)}.no-subjects-message{padding:var(--space-lg);text-align:center;color:var(--color-text-muted);font-size:var(--font-size-sm)}.subject-group{margin-bottom:var(--space-sm)}.subject-group-header-new{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-sm) var(--space-xs);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;transition:all var(--transition-fast)}.subject-group-header-new:hover{color:var(--color-accent-text-hover);background:var(--color-bg-elevated)}.subject-group-header-new .group-title{flex:1;text-align:left}.subject-group-header-new .group-count{font-weight:var(--font-weight-normal);color:var(--color-text-muted)}.subject-group-header-new .group-chevron{transition:transform var(--transition-fast)}.subject-group-header-new .group-chevron.collapsed{transform:rotate(-90deg)}.subject-group-content{display:grid;grid-template-rows:1fr;transition:grid-template-rows .2s ease-out}.subject-group-content.collapsed{grid-template-rows:0fr}.subject-group-content>*{overflow:hidden}.subject-item-new{margin-bottom:var(--space-xs)}.subject-header-new{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);cursor:pointer;border-radius:var(--radius-md);background:transparent;border:1px solid transparent;transition:background var(--transition-fast),border-color var(--transition-fast);position:relative;overflow:hidden}.subject-header-new:hover{background:var(--color-bg-hover);border-color:var(--color-border-default)}.subject-header-new:hover .subject-title-new,.subject-header-new:hover .subject-code-new{color:var(--color-accent-text-hover)}.subject-item-new.active .subject-header-new{background:color-mix(in srgb,var(--color-accent-primary) 5%,transparent)}.subject-header-new:focus-visible{outline:2px solid var(--color-accent-primary);outline-offset:-2px}.subject-progress-bar{position:absolute;bottom:0;left:0;height:3px;width:var(--progress, 0%);background:var(--progress-color, var(--color-text-muted));border-radius:0 var(--radius-sm) var(--radius-sm) 0;transition:width var(--transition-base)}.subject-info-new{flex:1;min-width:0}.subject-code-new{font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-accent-primary);margin-bottom:2px}.subject-title-new{font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.subject-stats{font-family:var(--font-body);font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:2px}.expand-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;background:transparent;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.expand-btn:hover{background:var(--color-bg-surface);color:var(--color-accent-text-hover)}.expand-btn svg{transition:transform var(--transition-fast)}.expand-btn.expanded svg{transform:rotate(180deg)}.topic-list{display:grid;grid-template-rows:0fr;transition:grid-template-rows .2s ease-out}.topic-list.expanded{grid-template-rows:1fr}.topic-list-inner{overflow:hidden;padding:var(--space-xs) var(--space-md) var(--space-sm)}.topic-list-inner .topic-section{margin-bottom:var(--space-sm)}.topic-list-inner .topic-section:last-child{margin-bottom:0}.topic-list-inner .topic-section-header{display:flex;align-items:center;gap:var(--space-xs);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-muted);margin-bottom:4px;padding-left:2px}.topic-list-inner .topic-section-header .section-icon{display:flex;align-items:center;opacity:.7}.topic-list-inner .topic-section-header .section-icon svg{width:12px;height:12px}.topic-list-inner .topic-section-header .section-count{margin-left:auto;font-size:9px;font-weight:500;color:var(--color-text-muted);opacity:.7}.topic-list-inner .topic-items{display:flex;flex-direction:column;gap:1px}.topic-list-inner .topic-item{display:flex;align-items:center;gap:6px;padding:4px 6px;margin-left:-6px;color:var(--color-text-secondary);font-size:var(--font-size-xs);text-decoration:none;transition:all var(--transition-fast);line-height:1.4;background:none;border:none;border-radius:0;border-left:2px solid transparent}.topic-list-inner .topic-item:hover{color:var(--color-accent-text-hover);background:var(--color-bg-hover);text-decoration:none;border-left-color:var(--color-border-default)}.topic-list-inner .topic-item.completed{color:var(--color-text-muted)}.topic-list-inner .topic-item.completed:hover{color:var(--color-accent-text-hover)}.topic-list-inner .topic-item.current{color:var(--color-accent-primary);background:color-mix(in srgb,var(--color-accent-primary) 8%,transparent)}.topic-list-inner .topic-item.more{color:var(--color-text-muted);font-style:italic;font-size:11px}.topic-list-inner .topic-item.more.expand-toggle{cursor:pointer;font-style:normal;color:var(--color-accent-primary);opacity:.8}.topic-list-inner .topic-item.more.expand-toggle:hover{opacity:1;color:var(--color-accent-text-hover);background:var(--color-bg-hover);border-left-color:var(--color-accent-primary)}.topic-list-inner .topic-item.more:not(.expand-toggle):hover{background:none;border-left-color:transparent;cursor:default}.topic-list-inner .topic-number{font-size:10px;color:var(--color-text-muted);min-width:14px;text-align:right;font-weight:500;font-variant-numeric:tabular-nums}.topic-list-inner .topic-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topic-list-inner .topic-check{display:flex;align-items:center;color:var(--color-status-success);flex-shrink:0}.topic-list-inner .topic-check svg{width:12px;height:12px}.topic-list-inner .current-indicator{display:none}.progress-ring{display:block}@media (max-width: 768px){.sidebar-filters{flex-wrap:nowrap;overflow-x:auto;padding-bottom:var(--space-xs);-webkit-overflow-scrolling:touch}.filter-btn{flex-shrink:0}.subject-header-new{padding:var(--space-md);min-height:44px}.topic-item{padding:var(--space-sm) var(--space-sm);min-height:40px}}.page-container{width:100%;max-width:var(--content-max-width);margin:0 auto;padding-bottom:var(--space-2xl)}.page-container.wide{max-width:var(--content-wide-max-width)}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-lg);margin-bottom:var(--space-2xl);padding-bottom:var(--space-lg);border-bottom:1px solid var(--color-border-default)}.page-header-content{flex:1}.page-header h1{margin:0 0 var(--space-xs) 0;font-size:clamp(1.5rem,4vw,2rem);line-height:1.2}.page-header .subtitle{font-size:var(--font-size-md);color:var(--color-text-secondary);margin:0;line-height:var(--line-height-relaxed)}.page-header-actions{display:flex;align-items:center;gap:var(--space-md);flex-shrink:0}@media (max-width: 768px){.page-header{flex-direction:column;gap:var(--space-md);align-items:stretch}.page-header-actions{width:100%;flex-wrap:wrap}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);line-height:1;border:1px solid var(--color-border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:var(--color-text-primary);color:var(--color-bg-deep);border-color:var(--color-text-primary)}.btn-primary:hover:not(:disabled){background-color:transparent;color:var(--color-accent-text-hover);border-color:var(--color-text-primary);text-decoration:none}.btn-primary:active:not(:disabled){background-color:var(--color-text-secondary);border-color:var(--color-text-secondary);color:var(--color-bg-deep)}.btn-secondary{background-color:var(--color-bg-elevated);color:var(--color-text-primary);border-color:var(--color-border-default)}.btn-secondary:hover:not(:disabled){background-color:var(--color-bg-overlay);border-color:var(--color-border-emphasis);color:var(--color-accent-text-hover);text-decoration:none}.btn-ghost{background-color:transparent;color:var(--color-text-secondary);border-color:transparent}.btn-ghost:hover:not(:disabled){background-color:var(--color-bg-elevated);color:var(--color-accent-text-hover);text-decoration:none}.btn-sm{padding:var(--space-xs) var(--space-md);font-size:var(--font-size-xs)}.btn-lg{padding:var(--space-md) var(--space-xl);font-size:var(--font-size-md)}.card{background-color:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-lg);transition:border-color var(--transition-fast)}.card:hover{border-color:var(--color-border-emphasis)}.card-header{margin-bottom:var(--space-md);padding-bottom:var(--space-md);border-bottom:1px solid var(--color-border-default)}.card-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-normal);color:var(--color-text-primary);margin-bottom:var(--space-xs)}.card-description{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.card-body{color:var(--color-text-secondary)}.card-footer{margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border-default)}.card-interactive{cursor:pointer;text-decoration:none;color:inherit}.card-interactive:hover{border-color:var(--color-accent-primary);background-color:var(--color-bg-elevated)}.progress{width:100%;height:6px;background-color:var(--color-bg-overlay);overflow:hidden;position:relative}.progress-bar{height:100%;background-color:var(--color-accent-primary);transition:width var(--transition-slow);position:relative}.progress-label{display:flex;justify-content:space-between;margin-bottom:var(--space-xs);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.badge{display:inline-flex;align-items:center;padding:var(--space-xs) var(--space-sm);font-family:var(--font-mono);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);line-height:1;border-radius:var(--radius-lg);white-space:nowrap}.badge-default{background-color:var(--color-bg-elevated);color:var(--color-text-secondary)}.badge-primary{background-color:rgba(var(--color-accent-primary-rgb),.15);color:var(--color-accent-primary)}.badge-success{background-color:#4ade8026;color:var(--color-success)}.badge-error{background-color:#f8717126;color:var(--color-error)}.badge-warning{background-color:#fbbf2426;color:var(--color-warning)}.form-group{margin-bottom:var(--space-lg)}.form-label{display:block;margin-bottom:var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-primary)}.form-input,.form-textarea,.form-select{width:100%;padding:var(--space-sm) var(--space-md);font-family:var(--font-sans);font-size:var(--font-size-sm);line-height:var(--line-height-normal);color:var(--color-text-primary);background-color:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);transition:border-color var(--transition-fast)}.form-input:focus,.form-textarea:focus,.form-select:focus{outline:none;border-color:var(--color-accent-primary)}.form-input::placeholder,.form-textarea::placeholder{color:var(--color-text-muted)}.form-textarea{min-height:100px;resize:vertical}.form-hint{display:block;margin-top:var(--space-xs);font-size:var(--font-size-xs);color:var(--color-text-muted)}.form-error{display:block;margin-top:var(--space-xs);font-size:var(--font-size-xs);color:var(--color-error)}.form-checkbox,.form-radio{display:flex;align-items:center;gap:var(--space-sm);cursor:pointer;margin-bottom:var(--space-sm)}.form-checkbox input,.form-radio input{width:16px;height:16px;cursor:pointer}.quiz-question{background-color:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-lg);margin-bottom:var(--space-lg)}.quiz-question-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--space-md)}.quiz-question-number{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-muted)}.quiz-question-text{font-size:var(--font-size-md);font-weight:var(--font-weight-normal);color:var(--color-text-primary);margin-bottom:var(--space-md)}.quiz-options{display:flex;flex-direction:column;gap:var(--space-sm)}.quiz-option{padding:var(--space-md);background-color:var(--color-bg-elevated);border:2px solid var(--color-border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.quiz-option:hover{border-color:var(--color-border-emphasis);background-color:var(--color-bg-overlay);color:var(--color-accent-text-hover)}.quiz-option.selected{border-color:var(--color-accent-primary);background-color:#58a6ff1a}.quiz-option.correct{border-color:var(--color-success);background-color:#56d3641a}.quiz-option.incorrect{border-color:var(--color-error);background-color:#f851491a}.quiz-feedback{margin-top:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.quiz-feedback.correct{background-color:#56d3641a;border:1px solid var(--color-success);color:var(--color-success)}.quiz-feedback.incorrect{background-color:#f851491a;border:1px solid var(--color-error);color:var(--color-error)}.form-hint.text-success{color:var(--color-success)}.quiz-container{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-xl);padding:var(--space-xl)}.quiz-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-lg);flex-wrap:wrap}.quiz-title{margin:0;font-size:var(--font-size-xl)}.quiz-info{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap;color:var(--color-text-secondary);font-size:var(--font-size-sm)}.quiz-info .info-item{display:inline-flex;align-items:center;gap:var(--space-xs);padding:6px 10px;border:1px solid var(--color-border-default);border-radius:var(--radius-md);background:var(--color-bg-elevated)}.quiz-info .icon svg{width:14px;height:14px}.quiz-timer{display:flex;align-items:center;gap:var(--space-xs);padding:8px 14px;border-radius:var(--radius-md);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);font-weight:var(--font-weight-normal);font-variant-numeric:tabular-nums;transition:all .3s ease}.quiz-timer .timer-icon svg{width:16px;height:16px}.quiz-timer .timer-value{font-size:var(--font-size-md);min-width:4ch}.quiz-timer.timer-warning{background:var(--color-bg-warning);border-color:var(--color-warning);color:var(--color-warning-text, #92400e)}.quiz-timer.timer-critical{background:var(--color-bg-danger);border-color:var(--color-danger);color:var(--color-danger);animation:timer-pulse 1s ease-in-out infinite}.quiz-timer.timer-finished{background:var(--color-bg-muted);border-color:var(--color-border-default);color:var(--color-text-muted);animation:none}@keyframes timer-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.questions-container{display:flex;flex-direction:column}.question-header{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm);color:var(--color-text-muted);font-size:var(--font-size-sm)}.question-number{padding:2px 8px;background:var(--color-bg-elevated);border-radius:999px;font-weight:var(--font-weight-normal)}.question-prompt{font-size:var(--font-size-md);color:var(--color-text-primary);margin-bottom:var(--space-md)}.code-snippet{background:var(--code-bg);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-md);overflow:auto;margin-bottom:var(--space-md)}.submitted-code,.coding-feedback .submitted-code{margin-top:var(--space-md)}.code-header{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-muted);margin-bottom:var(--space-xs)}.code-display{background:var(--code-bg);border:1px solid var(--color-border-default);border-radius:var(--radius-md);padding:var(--space-md);margin:0;font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--color-text-primary);overflow-x:auto}.answer-container{display:flex;flex-direction:column;gap:var(--space-sm)}.option-label{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-md);border:1px solid var(--color-border-default);border-radius:var(--radius-md);background:var(--color-bg-elevated);cursor:pointer;transition:all var(--transition-fast)}.option-label:hover{border-color:var(--color-accent-primary);background:var(--color-bg-overlay);color:var(--color-accent-text-hover)}.option-label.correct{border-color:var(--color-success);background:#56d36414}.option-label.incorrect{border-color:var(--color-error);background:#f8514914}.option-label input{width:16px;height:16px}.text-input{padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border-default);border-radius:var(--radius-md);background:var(--color-bg-elevated);color:var(--color-text-primary)}.written-textarea{min-height:140px;resize:vertical;font-family:inherit}.text-input.correct{border-color:var(--color-success);background:#56d36414}.text-input.incorrect{border-color:var(--color-error);background:#f8514914}.feedback{margin-top:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);border:1px solid var(--color-border-default);background:var(--color-bg-elevated)}.feedback.correct{border-color:var(--color-success);background:#56d36414}.feedback.incorrect{border-color:var(--color-error);background:#f8514914}.feedback-header{display:flex;align-items:center;gap:var(--space-xs);font-weight:var(--font-weight-normal);margin-bottom:var(--space-xs)}.ai-evaluation-section{margin-top:var(--space-md);border:1px solid rgba(163,113,247,.3);border-radius:var(--radius-md);overflow:hidden}.ai-evaluation-header{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);background:#a371f71a;font-weight:var(--font-weight-normal);font-size:var(--font-size-sm);color:var(--color-accent-secondary)}.ai-evaluation-header .ai-icon{display:flex;align-items:center}.ai-evaluation-content{padding:var(--space-md);background:var(--color-bg-elevated)}.ai-evaluation-content.loading{text-align:center;color:var(--color-text-secondary);font-style:italic}.ai-evaluation-content.error{color:var(--color-error)}.quiz-summary{margin-bottom:var(--space-lg);padding:var(--space-lg);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);background:var(--color-bg-elevated)}.summary-header{font-size:var(--font-size-lg);font-weight:var(--font-weight-normal);margin-bottom:var(--space-md)}.summary-score{display:flex;align-items:center;gap:var(--space-lg)}.score-circle{width:96px;height:96px;border-radius:50%;display:grid;place-items:center;font-weight:var(--font-weight-normal);border:6px solid var(--color-border-default);color:var(--color-text-primary)}.score-circle.pass{border-color:var(--color-success);color:var(--color-success)}.score-circle.fail{border-color:var(--color-error);color:var(--color-error)}.score-details{display:flex;flex-direction:column;gap:var(--space-xs)}.question-nav{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);margin-top:var(--space-md)}.code-editor-container{position:relative;background-color:var(--code-bg);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-lg)}.code-editor-container.fullscreen{position:fixed;inset:0;z-index:9999;border-radius:0;margin:0;display:flex;flex-direction:column}.code-editor-container.fullscreen .editor-wrapper{flex:1;display:flex;flex-direction:column}.code-editor-container.fullscreen .editor-element{flex:1;height:auto!important}.code-editor-container.light-theme{background-color:#fff;border-color:#d0d7de}.editor-wrapper{display:flex;flex-direction:column}.editor-toolbar{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background-color:var(--color-bg-deep);border-bottom:1px solid var(--color-border-default);flex-wrap:wrap;gap:var(--space-sm)}.toolbar-left,.toolbar-right{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.editor-toolbar .toolbar-right{gap:var(--space-xs)}.editor-toolbar .toolbar-right .btn{padding:4px 10px;font-size:var(--font-size-xs);gap:var(--space-xs)}.editor-toolbar .toolbar-right .btn-icon svg{width:12px;height:12px}.toolbar-separator{width:1px;height:16px;background-color:var(--color-border-default);margin:0 4px}.font-controls{display:flex;align-items:center;gap:4px}.font-size-display{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--color-text-secondary);min-width:30px;text-align:center}.btn-font{padding:4px 8px;min-width:28px}.btn-icon{display:inline-flex;align-items:center;vertical-align:middle}.btn-icon svg{width:14px;height:14px}.panel-icon{display:inline-flex;align-items:center;vertical-align:middle;margin-right:var(--space-xs)}.panel-icon svg{width:16px;height:16px}.editor-element{width:100%;min-height:200px}.btn-vim{font-family:var(--font-mono);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);padding:var(--space-xs) var(--space-sm);letter-spacing:.5px}.btn-vim.active{background-color:var(--color-success);color:var(--color-text-inverse)}.btn-vim.active:hover{background-color:var(--color-success);opacity:.9}.vim-status-bar{padding:var(--space-xs) var(--space-md);background-color:var(--color-bg-deep);border-top:1px solid var(--color-border-default);font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--color-text-secondary);min-height:24px}.vim-status-bar input{background:transparent;border:none;color:var(--color-text-primary);font-family:var(--font-mono);font-size:var(--font-size-xs);outline:none}.output-panel{display:none;border-top:1px solid var(--color-border-default);background-color:var(--color-bg-deep)}.output-panel.show{display:block}.output-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background-color:var(--color-bg-elevated);border-bottom:1px solid var(--color-border-default);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-secondary)}.execution-time{font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--color-text-muted)}.output-content{padding:var(--space-md);margin:0;font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--color-text-primary);white-space:pre-wrap;word-break:break-word;max-height:300px;overflow-y:auto}.output-panel.error .output-content{color:var(--color-error)}.test-results-panel{display:none;border-top:1px solid var(--color-border-default);background-color:var(--color-bg-surface)}.test-results-panel.show{display:block}.test-results-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background-color:var(--color-bg-elevated);border-bottom:1px solid var(--color-border-default);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-secondary)}.test-results-content{padding:var(--space-md);max-height:400px;overflow-y:auto}.test-result{padding:var(--space-md);margin-bottom:var(--space-sm);border-radius:var(--radius-md);border:1px solid var(--color-border-default)}.test-result:last-child{margin-bottom:0}.test-result.passed{background-color:#56d3641a;border-color:var(--color-success)}.test-result.failed{background-color:#f851491a;border-color:var(--color-error)}.test-result-header{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm)}.test-badge{width:24px;height:24px;min-width:24px;display:flex;align-items:center;justify-content:center;border-radius:50%}.test-badge svg{width:14px;height:14px}.test-badge.passed{background-color:var(--color-success);color:#fff}.test-badge.failed{background-color:var(--color-error);color:#fff}.test-name{flex:1;font-weight:var(--font-weight-normal);color:var(--color-text-primary);line-height:1.4}.test-status{font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);text-transform:uppercase;letter-spacing:.5px;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);white-space:nowrap}.test-status.passed{color:var(--color-success);background-color:#56d36426}.test-status.failed{color:var(--color-error);background-color:#f8514926}.test-details{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.test-details>div{margin-bottom:var(--space-xs)}.test-details code{background-color:var(--color-bg-elevated);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-xs)}.hints-panel{border-top:1px solid var(--color-border-default);background-color:var(--color-bg-surface)}.hints-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background-color:#d299221a;border-bottom:1px solid var(--color-border-default);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-warning)}.hints-title{display:flex;align-items:center}.hints-content{padding:var(--space-md)}.hints-content:empty{display:none}.hint-item{padding:var(--space-sm) var(--space-md);margin-bottom:var(--space-sm);background-color:var(--color-bg-elevated);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.hint-item:last-child{margin-bottom:0}.hint-number{font-weight:var(--font-weight-normal);color:var(--color-warning);margin-right:var(--space-sm)}.solution-panel{border-top:1px solid var(--color-border-default);background-color:var(--color-bg-surface)}.solution-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background-color:#58a6ff1a;border-bottom:1px solid var(--color-border-default);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-accent-primary)}.solution-title{display:flex;align-items:center}.solution-content{padding:var(--space-md)}.solution-content.hidden{display:none}.solution-code{margin:0;padding:var(--space-md);background-color:var(--color-bg-deep);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--color-text-primary);white-space:pre-wrap;overflow-x:auto}.preview-panel{border-top:1px solid var(--color-border-default);background-color:var(--color-bg-surface)}.preview-panel.hidden{display:none}.preview-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background-color:#58a6ff1a;border-bottom:1px solid var(--color-border-default);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-accent-primary)}.preview-title{display:flex;align-items:center}.preview-content{padding:var(--space-md);background:var(--color-bg-elevated);border-radius:0 0 var(--radius-lg) var(--radius-lg);color:var(--color-text-primary);line-height:var(--line-height-relaxed)}.preview-content>*:first-child{margin-top:0}.preview-content>*:last-child{margin-bottom:0}.evaluation-panel{border-top:1px solid var(--color-border-default);background-color:var(--color-bg-surface)}.evaluation-panel.hidden{display:none}.evaluation-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background-color:#a371f71a;border-bottom:1px solid var(--color-border-default);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-accent-secondary)}.evaluation-title{display:flex;align-items:center}.evaluation-content{padding:var(--space-md)}.evaluation-loading{text-align:center;color:var(--color-text-secondary);padding:var(--space-lg);font-style:italic}.evaluation-error{color:var(--color-error);padding:var(--space-md);background-color:#f851491a;border-radius:var(--radius-md)}.evaluation-result{padding:var(--space-md);border-radius:var(--radius-md)}.evaluation-result.passed{background-color:#3fb9501a;border:1px solid rgba(63,185,80,.3)}.evaluation-result.not-passed{background-color:#f8a6491a;border:1px solid rgba(248,166,73,.3)}.result-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-md)}.result-badge{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-weight:var(--font-weight-normal);font-size:var(--font-size-sm)}.result-badge.passed{background-color:#3fb95033;color:var(--color-success)}.result-badge.not-passed{background-color:#f8a64933;color:#f8a649}.result-score{font-weight:var(--font-weight-normal);color:var(--color-text-secondary)}.result-feedback{margin-bottom:var(--space-md);line-height:1.6}.result-section{margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border-muted)}.result-section h4{margin:0 0 var(--space-sm) 0;font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-primary)}.result-section.strengths h4{color:var(--color-success)}.result-section.improvements h4{color:#f8a649}.result-section ul{margin:0;padding-left:var(--space-lg)}.result-section li{margin-bottom:var(--space-xs);color:var(--color-text-secondary);line-height:1.5}.btn-evaluate{background-color:#a371f726;color:var(--color-accent-secondary);border:1px solid rgba(163,113,247,.3)}.btn-evaluate:hover:not(:disabled){background-color:#a371f740}.btn-evaluate:disabled{opacity:.6;cursor:not-allowed}.error-line-highlight{background-color:#f8514933!important}.error-glyph{background-color:var(--color-error);border-radius:50%;margin-left:3px}.code-editor{position:relative;background-color:var(--code-bg);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-lg)}.code-editor-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background-color:var(--color-bg-deep);border-bottom:1px solid var(--color-border-default)}.code-editor-lang{font-family:var(--font-mono);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-secondary);text-transform:uppercase}.code-editor-actions{display:flex;gap:var(--space-sm)}.code-editor-body{padding:0;overflow-x:auto}.code-editor-body pre{margin:0;background:transparent;border:none;padding:0}.rubric-table{width:100%;border-collapse:collapse;background-color:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-lg)}.rubric-table thead{background-color:var(--color-bg-elevated)}.rubric-table th{padding:var(--space-md);text-align:left;font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-primary);border-bottom:2px solid var(--color-border-default)}.rubric-table td{padding:var(--space-md);font-size:var(--font-size-sm);color:var(--color-text-secondary);border-bottom:1px solid var(--color-border-muted)}.rubric-table tbody tr:last-child td{border-bottom:none}.rubric-table tbody tr:hover{background-color:var(--color-bg-elevated)}.rubric-criteria{font-weight:var(--font-weight-normal);color:var(--color-text-primary)}.rubric-points{text-align:center;font-weight:var(--font-weight-normal);color:var(--color-accent-primary)}.alert{padding:var(--space-md);border-radius:var(--radius-md);margin-bottom:var(--space-lg);border-left:3px solid}.alert-info{background-color:var(--color-bg-elevated);border-left-color:var(--color-accent-primary);color:var(--color-text-secondary)}.alert-success{background-color:var(--color-bg-elevated);border-left-color:var(--color-success);color:var(--color-text-secondary)}.alert-warning{background-color:var(--color-bg-elevated);border-left-color:var(--color-warning);color:var(--color-text-secondary)}.alert-error{background-color:var(--color-bg-elevated);border-left-color:var(--color-error);color:var(--color-text-secondary)}.spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--color-border-default);border-top-color:var(--color-accent-primary);border-radius:50%;animation:spin .8s linear infinite}.tooltip{position:relative;display:inline-block}.tooltip-text{visibility:hidden;background-color:var(--color-bg-overlay);color:var(--color-text-primary);text-align:center;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-size:var(--font-size-xs);position:absolute;z-index:var(--z-tooltip);bottom:125%;left:50%;transform:translate(-50%);white-space:nowrap;opacity:0;transition:opacity var(--transition-fast)}.tooltip:hover .tooltip-text{visibility:visible;opacity:1}.error-boundary{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;padding:var(--space-2xl);text-align:center}.error-boundary .error-icon{font-size:4rem;margin-bottom:var(--space-lg)}.error-boundary h1{font-size:var(--font-size-2xl);font-weight:var(--font-weight-normal);color:var(--color-text-primary);margin-bottom:var(--space-md)}.error-boundary .error-message{font-size:var(--font-size-md);color:var(--color-text-secondary);margin-bottom:var(--space-xl)}.error-boundary .error-details{width:100%;max-width:600px;text-align:left;margin-bottom:var(--space-xl);background-color:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);padding:var(--space-md)}.error-boundary .error-details summary{cursor:pointer;font-weight:var(--font-weight-normal);color:var(--color-text-secondary);margin-bottom:var(--space-sm)}.error-boundary .error-details p{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-sm)}.error-boundary .error-details code{background-color:var(--color-bg-deep);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--color-error)}.error-boundary .error-stack{background-color:var(--color-bg-deep);padding:var(--space-md);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-xs);color:var(--color-text-muted);overflow-x:auto;white-space:pre-wrap;word-break:break-word;max-height:200px;overflow-y:auto}.error-boundary .error-actions{display:flex;gap:var(--space-md)}.proof-editor-container{position:relative;background-color:var(--code-bg);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-lg)}.proof-editor-container.fullscreen{position:fixed;inset:0;z-index:9999;border-radius:0;margin:0;display:flex;flex-direction:column}.proof-editor-container.fullscreen .editor-wrapper{flex:1;display:flex;flex-direction:column}.proof-editor-container.fullscreen .editor-element{flex:1;height:auto!important}.proof-editor-container.light-theme{background-color:#fff;border-color:#d0d7de}.save-status{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:var(--font-size-xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm)}.save-status.saved{color:var(--color-success);background-color:#56d3641a}.save-status.saved svg{width:12px;height:12px}.save-status.unsaved{color:var(--color-warning);background-color:#d299221a}.proof-instructions{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-md);line-height:var(--line-height-relaxed)}.proof-instructions code{background-color:var(--color-bg-elevated);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-xs)}.completion-badge.saved{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);border-radius:var(--radius-sm);background-color:#56d36426;color:var(--color-success)}.completion-badge.saved svg{width:12px;height:12px}@media (max-width: 768px){.btn{min-height:44px;padding:var(--space-md) var(--space-lg)}.btn-sm{min-height:36px;padding:var(--space-sm) var(--space-md)}.btn-lg{min-height:52px;padding:var(--space-lg) var(--space-xl)}.quiz-option,.option-label{padding:var(--space-lg);min-height:56px}.quiz-header{flex-direction:column;align-items:flex-start}.quiz-info{width:100%;justify-content:flex-start}.quiz-timer{width:100%;justify-content:center}.editor-toolbar{padding:var(--space-sm)}.toolbar-left,.toolbar-right{gap:var(--space-xs)}.toolbar-separator,.font-controls{display:none}.editor-element{min-height:250px}.output-content{max-height:200px;font-size:var(--font-size-xs)}.test-results-content,.test-result{padding:var(--space-sm)}.test-result-header{flex-wrap:wrap;gap:var(--space-xs);margin-bottom:var(--space-xs)}.test-name{flex:1 1 0;min-width:0;word-break:break-word;font-size:var(--font-size-sm)}.test-status{flex:1 1 100%;margin-left:32px;text-align:left}.test-details>div{display:flex;flex-direction:column;gap:4px;margin-bottom:var(--space-sm)}.test-details>div:last-child{margin-bottom:0}.test-details code{display:block;padding:var(--space-sm);white-space:pre-wrap;word-break:break-word;overflow-wrap:anywhere;line-height:1.4}.form-input,.form-textarea,.form-select{min-height:44px;font-size:16px}.form-checkbox,.form-radio{min-height:44px;padding:var(--space-sm) 0}.form-checkbox input,.form-radio input{width:20px;height:20px}.card{padding:var(--space-md)}.question-nav{flex-direction:column;gap:var(--space-md)}.question-nav .btn{width:100%}.summary-score{flex-direction:column;align-items:center;text-align:center}.score-circle{width:80px;height:80px}.quiz-container{padding:0;border:none;background:transparent;border-radius:0}.quiz-question{padding:var(--space-md);margin-bottom:var(--space-md)}.quiz-question-header{flex-direction:column;gap:var(--space-xs)}.quiz-question .code-snippet,.quiz-question .code-display,.quiz-question .solution-code,.quiz-question .solution-details>pre,.exercise-page .exercise-description .description-content pre{margin-inline:calc(var(--space-md) * -1);border-left:none;border-right:none;border-radius:0;padding-inline:var(--space-md)}.option-label input{width:22px;height:22px}.written-textarea{min-height:96px;resize:vertical}.quiz-container .submit-button{position:sticky;bottom:calc(72px + env(safe-area-inset-bottom,0px));width:100%;z-index:5;box-shadow:0 8px 24px #00000059}.alert{padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm)}.rubric-table th,.rubric-table td{padding:var(--space-sm);font-size:var(--font-size-xs)}}@media (max-width: 480px){.btn{padding:var(--space-sm) var(--space-md)}.quiz-timer{padding:6px 10px;font-size:var(--font-size-sm)}.code-editor-container{border-radius:var(--radius-md)}.editor-element{min-height:200px}.btn-vim{display:none}.quiz-option,.option-label{padding:var(--space-md)}.badge{font-size:10px;padding:2px var(--space-xs)}}.subtopic-navigator{display:grid;grid-template-columns:260px 1fr;gap:var(--space-xl);min-height:calc(100vh - 250px)}.subtopic-sidebar{position:sticky;top:var(--space-xl);height:fit-content;max-height:calc(100vh - 120px);overflow-y:auto;padding-right:var(--space-md)}.subtopic-section{margin-bottom:var(--space-lg)}.subtopic-section-header{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.subtopic-section-header .section-icon{display:flex;align-items:center}.subtopic-section-header .section-icon svg{width:14px;height:14px}.subtopic-section-header .section-count{margin-left:auto;font-weight:var(--font-weight-normal);color:var(--color-text-muted)}.subtopic-tabs{display:flex;flex-direction:column;gap:2px}.subtopic-tab{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border:none;border-radius:var(--radius-md);background:transparent;color:var(--color-text-secondary);font-size:var(--font-size-sm);text-align:left;cursor:pointer;transition:all var(--transition-fast);position:relative}.subtopic-tab:hover{background:var(--color-bg-elevated);color:var(--color-accent-text-hover)}.subtopic-tab.active{background:rgba(var(--color-accent-primary-rgb),.1);color:var(--color-accent-primary)}.subtopic-tab.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:20px;background:var(--color-accent-primary);border-radius:0 2px 2px 0}.subtopic-tab.viewed:not(.active){color:var(--color-text-muted)}.tab-indicator{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--color-bg-overlay);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);flex-shrink:0}.subtopic-tab.active .tab-indicator{background:var(--color-accent-primary);color:var(--color-text-inverse)}.subtopic-tab.viewed .tab-indicator{background:var(--color-status-success);color:var(--color-text-inverse)}.tab-indicator .tab-check svg{width:12px;height:12px}.tab-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.practice-section{padding-top:var(--space-lg);border-top:1px solid var(--color-border-default)}.practice-group{margin-bottom:var(--space-md)}.practice-group-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--space-xs);padding:0 var(--space-sm)}.practice-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-xs) var(--space-sm);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}.practice-item:hover{background:var(--color-bg-elevated);color:var(--color-accent-text-hover)}.practice-item.completed{color:var(--color-text-muted)}.practice-check{color:var(--color-status-success);display:flex;align-items:center}.practice-check svg{width:14px;height:14px}.practice-more{padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-xs);color:var(--color-text-muted)}.subtopic-content{max-width:var(--content-max-width);min-width:0}.subtopic-content .content-body{padding-bottom:var(--space-xl)}.subtopic-pagination{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-xl);padding-top:var(--space-xl);border-top:1px solid var(--color-border-default);gap:var(--space-md)}.pagination-left,.pagination-right{flex:1;min-width:0}.pagination-right{display:flex;justify-content:flex-end}.pagination-link{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-md);background:var(--color-bg-elevated);color:var(--color-text-primary);text-decoration:none;transition:all var(--transition-fast);max-width:100%}.pagination-link:hover{background:var(--color-bg-overlay);color:var(--color-accent-text-hover);text-decoration:none}.pagination-link .pagination-icon{display:flex;align-items:center;flex-shrink:0}.pagination-text{display:flex;flex-direction:column;gap:2px;min-width:0}.pagination-label{font-size:var(--font-size-xs);color:var(--color-text-muted)}.pagination-title{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pagination-center{flex-shrink:0}.pagination-counter{font-size:var(--font-size-sm);color:var(--color-text-muted)}.topic-page.with-subtopics{max-width:none}.topic-page.with-subtopics .page-header{margin-bottom:var(--space-xl)}@media (max-width: 900px){.subtopic-navigator{grid-template-columns:1fr}.subtopic-sidebar{position:static;max-height:none;padding-right:0;padding-bottom:var(--space-lg);margin-bottom:var(--space-lg);border-bottom:1px solid var(--color-border-default)}.subtopic-tabs{flex-direction:row;flex-wrap:wrap;gap:var(--space-xs)}.subtopic-tab{padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-full);background:var(--color-bg-elevated)}.subtopic-tab.active:before{display:none}.tab-title{white-space:nowrap}.subtopic-sidebar .practice-section{display:none}.pagination-link{padding:var(--space-sm)}.pagination-title{display:none}}@media (max-width: 600px){.subtopic-tabs{overflow-x:auto;flex-wrap:nowrap;padding-bottom:var(--space-sm);margin:0 calc(-1 * var(--space-md));padding:0 var(--space-md) var(--space-sm)}.subtopic-pagination{flex-direction:column;gap:var(--space-sm)}.pagination-left,.pagination-right{width:100%}.pagination-link{width:100%;justify-content:center}.pagination-center{order:-1}}.content-navigator{display:grid;grid-template-columns:1fr 280px;gap:var(--space-xl);min-height:calc(100vh - 200px);max-width:1200px;margin:0 auto;align-items:start}.content-navigator .content-sidebar{order:2;position:sticky;top:var(--space-lg);align-self:start;max-height:calc(100vh - 100px);overflow-y:auto;padding-right:var(--space-md)}.content-navigator .content-sidebar-tabs{display:none}.content-navigator .content-sidebar-tab{display:flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:var(--space-sm);border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--color-text-secondary);font-family:var(--font-body);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}.content-navigator .content-sidebar-tab:hover{background:var(--color-bg-elevated);color:var(--color-accent-text-hover)}.content-navigator .content-sidebar-tab.active{border-color:var(--color-border-default);background:var(--color-bg-default);color:var(--color-accent-primary);font-weight:var(--font-weight-normal)}.content-navigator .content-sidebar-tab .tab-icon{display:inline-flex;align-items:center}.content-navigator .content-sidebar-tab .tab-icon svg{width:14px;height:14px}.content-navigator .sidebar-section{margin-bottom:var(--space-xl)}.content-navigator .sidebar-section-header{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-xs);font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.content-navigator .sidebar-section-header .section-icon{display:flex;align-items:center}.content-navigator .sidebar-section-header .section-icon svg{width:14px;height:14px}.content-navigator .topic-list{display:flex;flex-direction:column;gap:2px}.content-navigator .topic-group{border-radius:var(--radius-md)}.content-navigator .topic-group.active{background:transparent}.content-navigator .topic-item{display:flex;flex-direction:row;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-xs) var(--space-sm);border:none;border-radius:var(--radius-md);background:transparent;border:1px solid transparent;color:var(--color-text-secondary);font-family:var(--font-body);font-size:var(--font-size-sm);text-align:left;cursor:pointer;transition:all var(--transition-fast)}.content-navigator .topic-item:hover{background:var(--color-bg-elevated);border-color:var(--color-border-default);color:var(--color-accent-text-hover)}.content-navigator .topic-item.active{color:var(--color-accent-primary);font-weight:var(--font-weight-normal);background:rgba(var(--color-accent-primary-rgb),.05)}.content-navigator .topic-item.completed:not(.active){color:var(--color-text-muted)}.content-navigator .topic-indicator{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--color-bg-overlay);border:1px solid var(--color-border-default);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);flex-shrink:0}.content-navigator .topic-item.active .topic-indicator{background:var(--color-accent-primary);border-color:transparent;color:var(--color-text-inverse)}.content-navigator .topic-item.completed .topic-indicator{background:var(--color-status-success);border-color:transparent;color:var(--color-text-inverse)}.content-navigator .topic-indicator .indicator-check svg{width:12px;height:12px}.content-navigator .topic-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-navigator .topic-progress{font-size:var(--font-size-xs);color:var(--color-text-muted);flex-shrink:0;padding:2px 8px;border-radius:var(--radius-full);background:var(--color-bg-overlay);border:1px solid var(--color-border-default)}.content-navigator .subtopic-list{display:flex;flex-direction:column;gap:1px;padding:var(--space-xs) 0 var(--space-sm) calc(var(--space-md) + 12px);margin-left:var(--space-md);border-left:1px solid var(--color-border-muted)}.content-navigator .subtopic-item{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-xs) var(--space-sm);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-family:var(--font-body);font-size:var(--font-size-sm);text-align:left;cursor:pointer;transition:all var(--transition-fast)}.content-navigator .subtopic-item:hover{background:var(--color-bg-overlay);color:var(--color-accent-text-hover)}.content-navigator .subtopic-item.active{color:var(--color-accent-primary);background:rgba(var(--color-accent-primary-rgb),.05)}.content-navigator .subtopic-item.viewed:not(.active){color:var(--color-text-muted)}.content-navigator .subtopic-indicator{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0}.content-navigator .subtopic-indicator .indicator-dot{width:6px;height:6px;border-radius:50%;background:var(--color-border-default)}.content-navigator .subtopic-item.active .indicator-dot{background:var(--color-accent-primary)}.content-navigator .subtopic-indicator .indicator-check{color:var(--color-status-success)}.content-navigator .subtopic-indicator .indicator-check svg{width:12px;height:12px}.content-navigator .subtopic-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-navigator .content-sidebar .practice-section{padding-top:var(--space-lg);border-top:1px solid var(--color-border-default)}.content-navigator .practice-group{margin-bottom:var(--space-md)}.content-navigator .practice-group-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-xs) var(--space-sm);font-family:var(--font-body);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-muted)}.content-navigator .practice-count{font-weight:var(--font-weight-normal)}.content-navigator .practice-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-xs) var(--space-sm);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-secondary);font-family:var(--font-body);font-size:var(--font-size-sm);text-align:left;cursor:pointer;transition:all var(--transition-fast)}.content-navigator .practice-item:hover{background:var(--color-bg-elevated);color:var(--color-accent-text-hover)}.content-navigator .practice-item.completed{color:var(--color-text-muted)}.content-navigator .practice-item.active{background:rgba(var(--color-accent-primary-rgb),.05);color:var(--color-primary);font-weight:var(--font-weight-normal)}.content-navigator .practice-item.active.completed{color:var(--color-primary)}.content-navigator .practice-check{color:var(--color-status-success);display:flex;align-items:center}.content-navigator .practice-check svg{width:14px;height:14px}.content-navigator .practice-toggle{display:block;width:100%;padding:var(--space-xs) var(--space-sm);border:none;background:transparent;color:var(--color-accent-primary);font-family:var(--font-body);font-size:var(--font-size-xs);text-align:left;cursor:pointer;transition:color var(--transition-fast)}.content-navigator .practice-toggle:hover{color:var(--color-accent-primary-hover)}.content-navigator .practice-empty{padding:var(--space-sm);border-radius:var(--radius-md);background:var(--color-bg-overlay);border:1px solid var(--color-border-default);color:var(--color-text-muted);font-family:var(--font-body);font-size:var(--font-size-sm)}.content-navigator .content-area{order:1;min-width:0}.content-navigator .breadcrumb{margin-bottom:var(--space-md)}.content-navigator .content-header{margin-bottom:var(--space-xl)}.content-navigator .content-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-lg)}.content-navigator .content-title-row h1{margin:0;font-size:var(--font-size-2xl);font-weight:var(--font-weight-normal);color:var(--color-text-primary);line-height:1.2}.content-navigator .content-title-row .subject-code{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-accent-primary);margin-bottom:var(--space-xs)}.content-navigator .content-title-row .topic-counter{flex-shrink:0;padding:var(--space-xs) var(--space-sm);background:var(--color-bg-elevated);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text-muted)}.content-navigator .content-body{padding-bottom:var(--space-xl)}.function-plot{margin:var(--space-lg) auto;max-width:100%;overflow-x:auto}.function-plot svg{display:block;margin:0 auto;background:transparent!important}.function-plot svg text{fill:var(--color-text-secondary)!important;font-size:var(--font-size-sm)}.function-plot svg .axis path,.function-plot svg .axis line{stroke:var(--color-border-default)}.function-plot svg .grid line{stroke:var(--color-border-subtle);opacity:.5}.plot-error{padding:var(--space-md);background:var(--color-bg-error);color:var(--color-text-error);border-radius:var(--radius-md);font-size:var(--font-size-sm);text-align:center}.content-navigator .content-pagination{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-xl);padding-top:var(--space-xl);border-top:1px solid var(--color-border-default);gap:var(--space-md)}.content-navigator .content-overview{padding:var(--space-lg) 0}.content-navigator .overview-section{margin-bottom:var(--space-2xl)}.content-navigator .overview-section h2{font-family:var(--font-body);font-size:var(--font-size-lg);font-weight:var(--font-weight-normal);margin-bottom:var(--space-md);color:var(--color-text-primary)}.content-navigator .overview-description{font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:1.6}.content-navigator .overview-meta{display:flex;flex-wrap:wrap;gap:var(--space-lg);margin-top:var(--space-md)}.content-navigator .overview-meta .meta-item{display:flex;align-items:center;gap:var(--space-xs);font-size:var(--font-size-sm);color:var(--color-text-muted)}.content-navigator .overview-meta .meta-icon{display:flex;align-items:center}.content-navigator .overview-meta .meta-icon svg{width:16px;height:16px}.content-navigator .objectives-list{list-style:none;padding:0;margin:0}.content-navigator .objectives-list li{position:relative;padding-left:var(--space-lg);margin-bottom:var(--space-sm);font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:1.5}.content-navigator .objectives-list li:before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--color-accent-primary)}.content-navigator .overview-actions{display:flex;flex-wrap:wrap;gap:var(--space-md);margin-top:var(--space-lg)}.content-navigator .overview-actions .btn{flex-shrink:0}.content-navigator .overview-actions .btn svg{width:16px;height:16px;flex-shrink:0}@media (max-width: 480px){.content-navigator .overview-actions{flex-direction:column}.content-navigator .overview-actions .btn{width:100%;justify-content:center}}.mobile-menu-toggle{display:none;width:100%;align-items:center;justify-content:space-between;padding:var(--space-md);margin-bottom:var(--space-md);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-primary);font-family:var(--font-body);font-size:var(--font-size-md);cursor:pointer;transition:all var(--transition-fast)}.mobile-menu-toggle:hover{background:var(--color-bg-overlay);border-color:var(--color-border-emphasis);color:var(--color-accent-text-hover)}.mobile-menu-toggle .toggle-label{font-weight:var(--font-weight-medium);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-menu-toggle .toggle-icon svg{width:16px;height:16px}@media (max-width: 900px){.content-navigator{grid-template-columns:1fr;gap:var(--space-md)}.content-navigator .content-sidebar{order:unset;position:sticky;top:calc(var(--mobile-header-height, 56px) + var(--space-sm));z-index:20;max-height:none;overflow:visible;padding-right:0;padding-bottom:0;margin-bottom:var(--space-md);border-bottom:none;transition:top var(--transition-base),transform var(--transition-base),opacity var(--transition-base)}body.mobile-chrome-hidden .content-navigator .content-sidebar{top:var(--space-sm);transform:translateY(calc(-100% - var(--space-md)));opacity:0;pointer-events:none}body.mobile-chrome-hidden .content-navigator .sidebar-content-wrapper.open{display:none}.mobile-menu-toggle{display:flex;margin-bottom:0;box-shadow:var(--shadow-sm)}.sidebar-content-wrapper{display:none}.sidebar-content-wrapper.open{display:block;position:absolute;top:calc(100% + var(--space-xs));right:0;left:0;z-index:30;max-height:min(70dvh,520px);overflow-y:auto;overscroll-behavior:contain;padding:var(--space-md);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);background:var(--color-bg-surface);box-shadow:var(--shadow-lg);animation:slideDown .2s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.content-navigator .content-sidebar-tabs{position:sticky;top:0;z-index:1;display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm);margin-bottom:var(--space-md);padding:3px;border:1px solid var(--color-border-default);border-radius:var(--radius-lg);background:var(--color-bg-elevated)}.content-navigator[data-mobile-panel=topics] .content-sidebar .practice-section,.content-navigator[data-mobile-panel=practice] .content-sidebar .topics-section{display:none}.content-navigator .topic-list{gap:2px}.content-navigator .topic-item,.content-navigator .subtopic-item,.content-navigator .practice-item{min-height:44px;min-width:0;white-space:normal}.content-navigator .topic-title,.content-navigator .subtopic-title,.content-navigator .practice-title{white-space:normal;overflow-wrap:anywhere}.content-navigator .subtopic-list{margin-left:var(--space-md);padding:var(--space-xs) 0 var(--space-sm) var(--space-md);border-left:1px solid var(--color-border-muted)}.content-navigator .content-area{padding-bottom:var(--space-lg)}.content-navigator .overview-actions .btn,.content-navigator .content-pagination .pagination-link,.content-navigator .mobile-menu-toggle,.content-navigator .content-sidebar-tab{min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere}.content-navigator .overview-actions .btn>span:not([class*=icon]),.content-navigator .content-pagination .pagination-title,.content-navigator .content-pagination .pagination-label,.content-navigator .mobile-menu-toggle .toggle-label,.content-navigator .content-sidebar-tab .tab-label{min-width:0;overflow-wrap:anywhere}}@media (max-width: 600px){.content-navigator .breadcrumb{display:none}.content-navigator .content-title-row{flex-direction:column;align-items:flex-start;gap:var(--space-sm)}.content-navigator .content-title-row h1{font-size:var(--font-size-xl)}.content-navigator .content-title-row .topic-counter{width:100%}.content-navigator .content-pagination{position:sticky;bottom:calc(64px + env(safe-area-inset-bottom));z-index:10;flex-direction:column;gap:var(--space-sm);margin-right:calc(-1 * var(--space-md));margin-left:calc(-1 * var(--space-md));padding:var(--space-md);background:var(--color-bg-deep);border-top:1px solid var(--color-border-default);box-shadow:0 -8px 18px #00000024;transition:transform var(--transition-base),opacity var(--transition-base)}body.mobile-chrome-hidden .content-navigator .content-pagination{transform:translateY(calc(100% + 64px + env(safe-area-inset-bottom)));opacity:0;pointer-events:none}.content-navigator .pagination-left,.content-navigator .pagination-right{width:100%}.content-navigator .pagination-link{width:100%;justify-content:center}.content-navigator .pagination-center{order:-1}}@media (hover: none) and (pointer: coarse){.content-navigator .topic-item:hover,.content-navigator .subtopic-item:hover,.content-navigator .practice-item:hover,.subject-card:hover,.review-item:hover,.action-card:hover{transform:none}}.reading-list{margin-top:var(--space-2xl);padding-top:var(--space-xl);border-top:1px solid var(--color-border-default)}.reading-list-header{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-lg)}.reading-list-header h2{font-family:var(--font-body);font-size:var(--font-size-lg);font-weight:var(--font-weight-normal);color:var(--color-text-primary);margin:0}.reading-list-icon{display:flex;align-items:center;color:var(--color-accent-primary)}.reading-list-icon svg{width:20px;height:20px}.reading-list-context{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-left:auto}.reading-group{margin-bottom:var(--space-xl)}.reading-group:last-child{margin-bottom:0}.reading-group-title{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--space-md);padding-bottom:var(--space-xs);border-bottom:1px solid var(--color-border-default)}.reading-group-title.required{color:var(--color-accent-primary)}.reading-group-title.optional{color:var(--color-text-muted)}.reading-count{font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);padding:2px 8px;background:var(--color-bg-overlay);border-radius:var(--radius-full)}.reading-items{display:flex;flex-direction:column;gap:var(--space-sm)}.reading-item{display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-md);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);text-decoration:none;color:inherit;transition:all var(--transition-fast)}.reading-item:hover{border-color:var(--color-accent-primary);background:var(--color-bg-overlay);text-decoration:none}.reading-item:hover .reading-title{color:var(--color-accent-text-hover)}.reading-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);background:var(--color-bg-overlay);color:var(--color-text-muted);flex-shrink:0}.reading-item:hover .reading-icon{background:rgba(var(--color-accent-primary-rgb),.1);color:var(--color-accent-text-hover)}.reading-icon svg{width:18px;height:18px}.reading-item.reading-type-paper .reading-icon{background:rgba(var(--color-accent-primary-rgb),.1);color:var(--color-accent-primary)}.reading-item.reading-type-documentation .reading-icon{background:#56d3641a;color:var(--color-success)}.reading-item.reading-type-textbook .reading-icon{background:#d299221a;color:var(--color-warning)}.reading-item.reading-type-video .reading-icon{background:#f851491a;color:var(--color-error)}.reading-content{flex:1;min-width:0}.reading-header{display:flex;align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-xs)}.reading-title{font-size:var(--font-size-base);font-weight:var(--font-weight-normal);color:var(--color-text-primary);line-height:1.4}.reading-external{display:flex;align-items:center;color:var(--color-text-muted);opacity:0;transition:opacity var(--transition-fast);flex-shrink:0;margin-top:2px}.reading-item:hover .reading-external{opacity:1;color:var(--color-accent-text-hover)}.reading-external svg{width:14px;height:14px}.reading-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-xs)}.reading-authors{font-style:italic}.reading-year{color:var(--color-text-muted)}.reading-type-badge{display:inline-block;padding:2px 8px;background:var(--color-bg-overlay);border-radius:var(--radius-full);font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:capitalize}.reading-time{display:inline-flex;align-items:center;gap:4px}.reading-time .time-icon{display:flex;align-items:center}.reading-time .time-icon svg{width:12px;height:12px}.reading-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:1.5;margin:0}@media (max-width: 600px){.reading-item{flex-direction:column;gap:var(--space-sm)}.reading-icon{width:32px;height:32px}.reading-icon svg{width:16px;height:16px}.reading-meta{flex-direction:column;align-items:flex-start;gap:var(--space-xs)}.reading-list-header{flex-wrap:wrap}.reading-list-context{width:100%;margin-left:0}}.toast-container{position:fixed;bottom:var(--space-xl);left:50%;transform:translate(-50%);z-index:9999;display:flex;flex-direction:column;gap:var(--space-sm);pointer-events:none}.toast{padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);background-color:var(--color-bg-elevated);border:1px solid var(--color-border-default);color:var(--color-text-primary);box-shadow:var(--shadow-lg);opacity:0;transform:translateY(10px);transition:opacity var(--transition-normal),transform var(--transition-normal);pointer-events:auto}.toast-visible{opacity:1;transform:translateY(0)}.toast-hiding{opacity:0;transform:translateY(-10px)}.toast-success{border-color:var(--color-success);background-color:var(--color-bg-surface)}.toast-error{border-color:var(--color-error);background-color:var(--color-bg-surface)}.toast-info{border-color:var(--color-border-emphasis);background-color:var(--color-bg-surface)}.brick-fill{fill:var(--brick-body-fill);stroke:var(--brick-body-stroke);stroke-width:2.2}.brick-stroke{stroke:var(--brick-body-stroke);stroke-width:2.2;fill:none}.brick-glasses{stroke:var(--brick-glasses);stroke-width:2.2;fill:none}.brick-glasses-thick{stroke-width:2.5}.brick-pupils{fill:var(--brick-pupils);stroke:none}.brick-glint{fill:var(--brick-glint);stroke:none;opacity:0}.brick-blink{transform-origin:center}.brick-kinetic{transform-origin:32px 48px}.brick-kinetic .brick-face{transform-origin:32px 38px}.brick-kinetic-once{transform-origin:32px 48px}.brick-kinetic-once .brick-face,.brick-zen,.brick-pondering,.brick-delighted{transform-origin:32px 38px}.home-header h1{display:flex;align-items:center;gap:var(--space-md)}.home-header h1 svg{width:120px;height:120px;margin-top:-16px}.breadcrumb{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-xl)}.breadcrumb a{color:var(--color-text-secondary);text-decoration:none;transition:color var(--transition-fast)}.breadcrumb a:hover{color:var(--color-accent-text-hover)}.breadcrumb .separator{color:var(--color-text-muted)}.breadcrumb .current{color:var(--color-text-primary)}.page-header{margin-bottom:var(--space-2xl)}.page-header h1{margin-bottom:var(--space-sm)}.page-actions{margin-top:var(--space-2xl);padding-top:var(--space-xl);border-top:1px solid var(--color-border-default)}.section{margin-bottom:var(--space-2xl)}.section h2{margin-bottom:var(--space-lg);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border-default)}.home-header{margin-bottom:var(--space-2xl)}.home-header h1{margin-bottom:var(--space-sm);font-family:JetBrains Mono,monospace;font-size:clamp(2rem,3.2vw,3rem);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent-primary);line-height:1.05}.home-header .subtitle{font-size:var(--font-size-lg);color:var(--color-text-secondary)}.progress-summary{margin-bottom:var(--space-2xl)}.progress-card{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-xl)}.progress-bar-container{position:relative;height:12px;background:var(--color-bg-elevated);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:var(--space-lg)}.progress-bar-container .progress-bar{height:100%;background:linear-gradient(90deg,var(--color-accent-primary),var(--color-accent-primary-hover));border-radius:var(--radius-lg);transition:width var(--transition-slow)}.progress-bar-container .progress-percentage{position:absolute;right:var(--space-md);top:50%;transform:translateY(-50%);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-primary)}.progress-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-lg);text-align:center}.progress-stats .stat{display:flex;flex-direction:column;gap:var(--space-xs)}.progress-stats .stat-value{font-size:var(--font-size-xl);font-weight:var(--font-weight-normal);color:var(--color-text-primary)}.progress-stats .stat-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.current-subject,.dashboard-next-action{margin-bottom:var(--space-2xl)}.next-action-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-lg);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-lg)}.next-action-icon{display:flex;align-items:center;justify-content:center;width:48px;height:48px;color:var(--color-accent-primary);background:var(--color-bg-elevated);border-radius:var(--radius-md)}.next-action-icon svg{width:24px;height:24px}.next-action-content{min-width:0}.next-action-eyebrow{display:block;margin-bottom:var(--space-2xs);font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:0}.next-action-content h2{margin:0 0 var(--space-xs) 0;font-size:var(--font-size-xl)}.next-action-content p{margin:0 0 var(--space-sm) 0;color:var(--color-text-secondary)}.next-action-meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.next-action-cta{white-space:nowrap}@media (max-width: 768px){.next-action-card{grid-template-columns:auto minmax(0,1fr)}.next-action-cta{grid-column:1 / -1;justify-self:stretch}}.subject-card.featured{background:var(--color-bg-surface);border:2px solid var(--color-accent-primary);border-radius:var(--radius-lg);padding:var(--space-xl)}.completion-message{text-align:center;padding:var(--space-2xl);background:var(--color-bg-surface);border-radius:var(--radius-lg)}.recent-subjects,.quick-stats,.quick-actions{margin-bottom:var(--space-2xl)}.subjects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-lg)}.subject-card{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-lg);cursor:pointer;transition:all var(--transition-base)}.subject-card:hover{border-color:var(--color-accent-primary);transform:translateY(-2px);box-shadow:var(--shadow-md)}.subject-card:not(.locked):hover h3,.subject-card:not(.locked):hover h4,.subject-card:not(.locked):hover .subject-code{color:var(--color-accent-text-hover)}.subject-card.locked{opacity:.6;cursor:not-allowed;position:relative}.subject-card.locked:hover{transform:none;border-color:var(--color-border-default)}.subject-card .subject-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-md)}.subject-card h3,.subject-card h4{font-size:var(--font-size-md);margin:0 0 var(--space-xs) 0}.subject-card .subject-code{font-size:var(--font-size-sm);color:var(--color-accent-primary);font-weight:var(--font-weight-normal)}.subject-card .subject-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-md);line-height:var(--line-height-relaxed)}.subject-card .subject-meta{display:flex;gap:var(--space-lg);font-size:var(--font-size-xs);color:var(--color-text-muted)}.subject-card .meta-item{display:flex;align-items:center;gap:var(--space-xs)}.subject-card .meta-icon{font-size:var(--font-size-sm)}.subject-card .subject-progress{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-md)}.progress-bar-small{flex:1;height:6px;background:var(--color-bg-elevated);border-radius:var(--radius-sm);overflow:hidden}.progress-bar-small .progress-bar{height:100%;background:var(--color-accent-primary);border-radius:var(--radius-sm)}.progress-text{font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-secondary)}.subject-prerequisites{margin-bottom:var(--space-md)}.prereq-label{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-right:var(--space-sm)}.prereq-list{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-xs)}.prereq-tag{font-size:var(--font-size-xs);padding:2px var(--space-sm);border-radius:var(--radius-sm);background:var(--color-bg-elevated);color:var(--color-text-muted)}.prereq-tag.met{background:#56d36426;color:var(--color-success)}.prereq-tag.unmet{background:#d2992226;color:var(--color-warning)}.locked-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);background:#0d1117b3;border-radius:var(--radius-lg)}.lock-icon{font-size:var(--font-size-2xl)}.lock-text{font-size:var(--font-size-xs);color:var(--color-text-muted)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-lg)}.stat-card{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-lg);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg)}.stat-card .stat-icon{font-size:var(--font-size-2xl)}.stat-card .stat-content{display:flex;flex-direction:column}.stat-card .stat-number{font-size:var(--font-size-xl);font-weight:var(--font-weight-normal);color:var(--color-text-primary)}.stat-card .stat-description{font-size:var(--font-size-sm);color:var(--color-text-muted)}.actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-md)}.action-card{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-xl) var(--space-lg);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);color:var(--color-text-secondary);font-family:inherit;font-size:inherit}.action-card:hover{background:var(--color-bg-elevated);border-color:var(--color-accent-primary);color:var(--color-accent-text-hover)}.action-card .action-icon{font-size:var(--font-size-2xl)}.action-card .action-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal)}.daily-review{margin-bottom:var(--space-2xl);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-lg)}.daily-review h2{display:flex;align-items:center;gap:var(--space-sm);margin:0 0 var(--space-xs) 0;font-size:var(--font-size-lg)}.daily-review .review-count{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-muted);background:var(--color-bg-elevated);padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-full)}.daily-review .review-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0 0 var(--space-lg) 0}.review-list{display:flex;flex-direction:column;gap:var(--space-sm)}.review-item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);text-decoration:none;color:inherit;transition:all var(--transition-fast)}.review-item:hover{border-color:var(--color-accent-primary);transform:translate(4px)}.review-item:hover .review-item-title{color:var(--color-accent-text-hover)}.review-item-icon{font-size:var(--font-size-xl);opacity:.8}.review-item-content{flex:1;display:flex;flex-direction:column;gap:var(--space-2xs)}.review-item-title{font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.review-item-meta{font-size:var(--font-size-xs);color:var(--color-text-muted)}.review-item-arrow{color:var(--color-text-muted);font-size:var(--font-size-lg);transition:transform var(--transition-fast)}.review-item:hover .review-item-arrow{transform:translate(4px);color:var(--color-accent-text-hover)}.review-more{margin:var(--space-md) 0 0 0;font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:center}.curriculum-page{margin:0 auto}.curriculum-header{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:var(--space-lg);margin-bottom:var(--space-xl)}.curriculum-header h1{margin-bottom:var(--space-xs)}.curriculum-header .subtitle{color:var(--color-text-secondary)}.curriculum-filters{display:flex;gap:var(--space-lg);align-items:center}.filter-group{display:flex;align-items:center;gap:var(--space-sm)}.filter-group label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.filter-select{padding:var(--space-sm) var(--space-md);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-sm)}.checkbox-label{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary);cursor:pointer}.curriculum-legend{display:flex;gap:var(--space-xl);margin-bottom:var(--space-xl);padding:var(--space-md) var(--space-lg);background:var(--color-bg-surface);border-radius:var(--radius-md)}.status-badge{width:12px;height:12px;border-radius:50%}.status-badge.status-not-started,.subject-status-badge.status-not-started{background:var(--color-text-muted)}.status-badge.status-locked{background:var(--color-bg-overlay);border:2px solid var(--color-text-muted)}.status-badge.status-in-progress,.subject-status-badge.status-in-progress{background:var(--color-warning)}.status-badge.status-completed,.subject-status-badge.status-completed{background:var(--color-success)}.year-section{margin-bottom:var(--space-2xl)}.year-title{font-size:var(--font-size-xl);margin-bottom:var(--space-lg);padding-bottom:var(--space-sm);border-bottom:2px solid var(--color-border-default)}.semester-section{margin-bottom:var(--space-xl)}.semester-title{font-size:var(--font-size-md);color:var(--color-text-secondary);margin-bottom:var(--space-md)}.subject-status{position:absolute;top:var(--space-md);right:var(--space-md)}.subject-card .subject-content{position:relative}.subject-header{margin-bottom:var(--space-2xl)}.subject-title-row{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-lg)}.subject-title-row .subject-code{font-size:var(--font-size-sm);color:var(--color-accent-primary);font-weight:var(--font-weight-normal);margin-bottom:var(--space-xs);display:block}.subject-title-row h1{margin:0}.subject-status-badge{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal)}.subject-status-badge.status-not-started{background:var(--color-bg-elevated);color:var(--color-text-muted)}.subject-status-badge.status-in-progress{background:#d2992226;color:var(--color-warning)}.subject-status-badge.status-completed{background:#56d36426;color:var(--color-success)}.subject-page .subject-description{font-size:var(--font-size-md);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin-bottom:var(--space-lg)}.subject-page .subject-meta{display:flex;flex-wrap:wrap;gap:var(--space-lg);font-size:var(--font-size-sm);color:var(--color-text-muted)}.prerequisites-warning{padding:var(--space-lg);background:#d299221a;border:1px solid var(--color-warning);border-radius:var(--radius-lg);margin-bottom:var(--space-2xl)}.prerequisites-warning h3{color:var(--color-warning);margin:0 0 var(--space-sm) 0}.prerequisites-warning p{margin-bottom:var(--space-md);color:var(--color-text-secondary)}.prerequisite-list{list-style:none;padding:0;margin:0}.prerequisite-list li{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) 0;font-size:var(--font-size-sm)}.prerequisite-list li .checkbox{color:var(--color-text-muted)}.prerequisite-list li.completed .checkbox{color:var(--color-success)}.subject-dependencies{margin-bottom:var(--space-lg)}.subject-dependencies h3{color:var(--color-text-muted);margin:0 0 var(--space-sm) 0;font-size:var(--font-size-sm);font-weight:var(--font-weight-normal)}.subject-dependency-graph{overflow-x:auto;padding:var(--space-sm) 0}.objectives-list{padding-left:var(--space-lg)}.objectives-list li{color:var(--color-text-secondary);margin-bottom:var(--space-sm)}.topics-list{display:flex;flex-direction:column;gap:var(--space-md)}.topics-list .topic-item{display:flex;align-items:center;gap:var(--space-lg);padding:var(--space-lg);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);transition:border-color var(--transition-fast)}.topics-list .topic-item:hover{border-color:var(--color-border-emphasis)}.topics-list .topic-item:hover .topic-info h3{color:var(--color-accent-text-hover)}.topics-list .topic-item.completed{border-color:var(--color-success)}.topic-number{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--color-bg-elevated);border-radius:var(--radius-md);font-weight:var(--font-weight-normal);color:var(--color-text-secondary);flex-shrink:0}.topics-list .topic-item.completed .topic-number{background:#56d36426;color:var(--color-success)}.topic-info{flex:1;min-width:0}.topic-info h3{font-size:var(--font-size-md);margin:0 0 var(--space-xs) 0}.topic-meta{display:flex;gap:var(--space-lg);font-size:var(--font-size-sm);color:var(--color-text-muted)}.completed-tag{color:var(--color-success);font-weight:var(--font-weight-normal)}.projects-list{display:flex;flex-direction:column;gap:var(--space-md)}.project-item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);padding:var(--space-lg);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);transition:border-color var(--transition-fast)}.project-item:hover{border-color:var(--color-border-emphasis)}.project-item:hover .project-info h3{color:var(--color-accent-text-hover)}.project-item.submitted{border-color:var(--color-success)}.project-info{flex:1;min-width:0}.project-info h3{font-size:var(--font-size-md);margin:0 0 var(--space-xs) 0}.project-info p{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-sm)}.project-meta{display:flex;gap:var(--space-lg);font-size:var(--font-size-sm);color:var(--color-text-muted)}.submitted-tag{color:var(--color-success);font-weight:var(--font-weight-normal)}.topic-page{max-width:var(--content-max-width);margin:0 auto}.content-section{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-xl);margin-bottom:var(--space-2xl)}.content-section p{margin-bottom:var(--space-md)}.content-section pre{margin:var(--space-lg) 0}.content-section ul,.content-section ol{margin-bottom:var(--space-md)}.practice-quick-nav{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-md) var(--space-lg);margin-bottom:var(--space-xl);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.practice-quick-title{display:inline-flex;align-items:center;gap:var(--space-sm);font-weight:var(--font-weight-normal);color:var(--color-text-primary)}.practice-quick-title .icon svg{width:18px;height:18px}.practice-quick-actions{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.exams-list{display:flex;flex-direction:column;gap:var(--space-md)}.exam-item{display:flex;justify-content:space-between;align-items:center;padding:var(--space-lg);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md)}.exam-item.passed{border-color:var(--color-success)}.exam-info h3{margin-bottom:var(--space-xs)}.exam-info p{margin:0 0 var(--space-sm) 0;color:var(--color-text-secondary)}.exam-meta{display:flex;gap:var(--space-md);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.assessment-list{display:flex;flex-direction:column;gap:var(--space-md)}.assessment-item{display:flex;justify-content:space-between;align-items:center;padding:var(--space-lg);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md)}.assessment-item.passed{border-color:var(--color-success)}.assessment-info{display:flex;align-items:center;gap:var(--space-md)}.assessment-type{padding:var(--space-xs) var(--space-sm);background:var(--color-bg-elevated);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-muted);text-transform:uppercase}.assessment-title{font-weight:var(--font-weight-normal)}.assessment-score{font-weight:var(--font-weight-normal);color:var(--color-text-muted)}.assessment-score.passed{color:var(--color-success)}.quiz-page,.exercise-page,.project-page{max-width:var(--content-max-width);margin:0 auto}.quiz-header,.exercise-header,.project-header{margin-bottom:var(--space-2xl)}.exercise-header h1{margin-bottom:var(--space-sm)}.exercise-meta-row{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.exercise-meta-row .meta-separator{width:1px;height:16px;background:var(--color-border-default);margin:0 var(--space-xs)}.exercise-meta-row .info-item{display:inline-flex;align-items:center;gap:var(--space-xs)}.exercise-meta-row .info-item .icon{display:inline-flex;color:var(--color-text-muted)}.exercise-meta-row .info-item .icon svg{width:14px;height:14px}.exercise-meta-row .completion-group{margin-left:auto;display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.exercise-meta-row .ai-score-history{font-size:var(--font-size-xs);color:var(--color-text-muted);background:var(--color-bg-elevated);border-radius:var(--radius-md);padding:var(--space-xs) var(--space-sm)}.quiz-progress{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-lg);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.best-score{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--color-bg-elevated);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.best-score .label{color:var(--color-text-muted)}.best-score .score{font-weight:var(--font-weight-normal)}.best-score .score.passed{color:var(--color-success)}.exercise-type-badge{padding:var(--space-xs) var(--space-sm);background:var(--color-bg-elevated);border-radius:var(--radius-sm);font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase}.exercise-hints,.exercise-solution{margin-top:var(--space-lg)}.exercise-hints details,.exercise-solution details{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md);padding:var(--space-md)}.exercise-hints summary,.exercise-solution summary{cursor:pointer;font-weight:var(--font-weight-normal);color:var(--color-accent-primary)}.hints-list{margin-top:var(--space-md);padding-left:var(--space-lg)}.solution-content{margin-top:var(--space-md)}.project-scaffolding{margin-top:var(--space-xl);margin-bottom:var(--space-xl);padding:var(--space-lg);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg)}.project-scaffolding-header h2{margin:0 0 var(--space-xs) 0}.scaffolding-overview{color:var(--color-text-secondary);margin:0 0 var(--space-md) 0;line-height:var(--line-height-relaxed)}.scaffolding-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--space-md)}.scaffolding-card{padding:var(--space-md);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md)}.scaffolding-card h3{margin:0 0 var(--space-sm) 0;font-size:var(--font-size-sm)}.scaffolding-card ul{margin:0;padding-left:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-xs);color:var(--color-text-secondary)}.resource-list{list-style:none;padding-left:0}.resource-list li{padding-left:0}.resource-label a{font-size:var(--font-size-xs);margin-left:var(--space-xs);color:var(--color-accent-primary)}.resource-description{color:var(--color-text-secondary);font-size:var(--font-size-xs);margin-top:var(--space-xs)}.editor-container{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);overflow:hidden}.editor-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-md);background:var(--color-bg-elevated);border-bottom:1px solid var(--color-border-default)}.language-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-accent-primary);text-transform:uppercase;letter-spacing:.05em}.editor-actions{display:flex;gap:var(--space-sm)}.btn-small{padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-xs)}textarea.code-editor{width:100%;min-height:400px;padding:var(--space-md);font-family:var(--font-mono);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed);color:var(--color-text-primary);background:var(--code-bg);border:none;resize:vertical;tab-size:2}textarea.code-editor:focus{outline:none;box-shadow:inset 0 0 0 2px var(--color-accent-primary)}textarea.code-editor::placeholder{color:var(--color-text-muted)}.test-results{margin-top:var(--space-xl)}.test-results h2{margin-bottom:var(--space-lg)}.test-result-item{display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-md);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md);margin-bottom:var(--space-sm)}.test-result-item.passed{border-color:var(--color-success);background:#56d3640d}.test-result-item.failed{border-color:var(--color-error);background:#f851490d}.test-result-item .test-status{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:var(--font-size-sm)}.test-result-item.passed .test-status{background:#56d36433;color:var(--color-success)}.test-result-item.failed .test-status{background:#f8514933;color:var(--color-error)}.test-details{flex:1;min-width:0}.test-name{font-weight:var(--font-weight-normal);margin-bottom:var(--space-xs)}.test-expected,.test-actual{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.test-expected code,.test-actual code{background:var(--color-bg-elevated);padding:2px var(--space-xs);border-radius:var(--radius-sm);font-family:var(--font-mono)}.hints-modal{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--space-lg)}.hints-modal .modal-content{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);max-width:500px;width:100%;max-height:80vh;overflow:hidden;display:flex;flex-direction:column}.hints-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border-default)}.hints-modal .modal-header h3{margin:0}.hints-modal .modal-close{background:none;border:none;color:var(--color-text-secondary);font-size:var(--font-size-xl);cursor:pointer;padding:var(--space-xs);line-height:1}.hints-modal .modal-close:hover{color:var(--color-accent-text-hover)}.hints-modal .modal-body{padding:var(--space-lg);overflow-y:auto}.hints-modal .hints-list{margin:0;padding-left:var(--space-lg)}.hints-modal .hints-list li{margin-bottom:var(--space-md);color:var(--color-text-secondary)}.completion-badge{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal)}.completion-badge.passed{background:#56d36426;color:var(--color-success)}.completion-badge.partial{background:#d2992226;color:var(--color-warning)}.project-rubric{margin-bottom:var(--space-2xl)}.rubric-table{display:flex;flex-direction:column;gap:var(--space-lg)}.rubric-criterion{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);overflow:hidden}.criterion-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md) var(--space-lg);background:var(--color-bg-elevated);border-bottom:1px solid var(--color-border-default)}.criterion-header h3{margin:0;font-size:var(--font-size-md)}.criterion-weight{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-accent-primary);background:#58a6ff1a;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md)}.criterion-levels{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--color-border-default)}@media (max-width: 768px){.criterion-levels{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}}.rubric-level{display:flex;flex-direction:column;background:var(--color-bg-surface);padding:var(--space-md);height:100%}.exercise-page .exercise-description{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-lg);margin-bottom:var(--space-xl)}.exercise-page .description-content{background:transparent;border:none;padding:0}.mobile-exercise-tabs{display:none}.mobile-exercise-tab{flex:1;padding:var(--space-sm) var(--space-md);min-height:44px;border:1px solid var(--color-border-default);background:var(--color-bg-elevated);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.mobile-exercise-tab:first-child{border-radius:var(--radius-md) 0 0 var(--radius-md);border-right:none}.mobile-exercise-tab:last-child{border-radius:0 var(--radius-md) var(--radius-md) 0}.mobile-exercise-tab.active{background:var(--color-accent-primary);color:var(--color-bg-deep);border-color:var(--color-accent-primary)}.topic-title-section{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.topic-title-section h1{margin:0}.topic-counter{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-muted);background:var(--color-bg-elevated);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm)}.topic-navigation{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-2xl);padding-top:var(--space-xl);border-top:1px solid var(--color-border-default);gap:var(--space-md)}.topic-navigation .nav-left,.topic-navigation .nav-right{flex:1;min-width:0}.topic-navigation .nav-left{text-align:left}.topic-navigation .nav-right{text-align:right}.topic-navigation .nav-center{flex:0 0 auto}.topic-navigation .nav-counter{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-secondary);background:var(--color-bg-elevated);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-lg)}.topic-navigation .btn{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exercise-counter{font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);color:var(--color-text-muted);background:var(--color-bg-elevated);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm)}.exercise-navigation{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-2xl);padding-top:var(--space-xl);border-top:1px solid var(--color-border-default);gap:var(--space-md)}.exercise-navigation .nav-left,.exercise-navigation .nav-right{flex:1}.exercise-navigation .nav-left{text-align:left}.exercise-navigation .nav-right{text-align:right}.exercise-navigation .nav-center{flex:0 0 auto}.exercise-navigation .nav-counter{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-secondary);background:var(--color-bg-elevated);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-lg)}.exercise-workspace{margin-bottom:var(--space-xl)}.exercise-workspace h2{display:flex;align-items:center;justify-content:space-between}.test-results{background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-lg);margin-top:var(--space-xl);font-family:var(--font-mono)}.test-results h2{font-family:var(--font-body);font-size:var(--font-size-md);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border-default);padding-bottom:var(--space-sm);margin-bottom:var(--space-md)}.test-result-item{background:var(--color-bg-surface);border:1px solid var(--color-border-default);margin-bottom:var(--space-xs);border-radius:var(--radius-sm);transition:transform var(--transition-fast)}.test-result-item:hover{transform:translate(4px)}.test-result-item.passed{border-left:4px solid var(--color-success)}.test-result-item.failed{border-left:4px solid var(--color-error)}.level-score{font-size:var(--font-size-2xl);font-weight:var(--font-weight-normal);color:var(--color-accent-primary);margin-bottom:var(--space-sm)}.level-content{flex:1}.level-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-primary);margin-bottom:var(--space-xs)}.level-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.project-description,.project-requirements{margin-bottom:var(--space-2xl)}.description-content{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-lg)}.description-content p{margin-bottom:var(--space-md)}.description-content p:last-child{margin-bottom:0}.requirements-list{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-lg) var(--space-lg) var(--space-lg) var(--space-2xl);margin:0}.requirements-list li{margin-bottom:var(--space-sm);color:var(--color-text-secondary)}.requirements-list li:last-child{margin-bottom:0}.submission-form{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-xl)}.submission-form .form-group{margin-bottom:var(--space-lg)}.submission-form label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-primary);margin-bottom:var(--space-sm)}.submission-form input[type=url],.submission-form textarea{width:100%;padding:var(--space-sm) var(--space-md);font-family:var(--font-sans);font-size:var(--font-size-sm);color:var(--color-text-primary);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.submission-form input[type=url]:focus,.submission-form textarea:focus{outline:none;border-color:var(--color-accent-primary);box-shadow:0 0 0 3px #58a6ff1a}.submission-form textarea{min-height:120px;resize:vertical}.submission-form input::placeholder,.submission-form textarea::placeholder{color:var(--color-text-muted)}.self-assessment-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-md)}.self-assessment-grid .assessment-item{display:flex;flex-direction:column;gap:var(--space-xs)}.self-assessment-grid .assessment-item label{font-size:var(--font-size-xs);margin-bottom:0}.self-assessment-select{padding:var(--space-sm) var(--space-md);font-size:var(--font-size-sm);color:var(--color-text-primary);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);cursor:pointer}.self-assessment-select:focus{outline:none;border-color:var(--color-accent-primary)}.form-actions{display:flex;justify-content:flex-end;gap:var(--space-md);margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--color-border-default)}.latest-submission{margin-bottom:var(--space-2xl)}.submission-card{background:var(--color-bg-surface);border:1px solid var(--color-success);border-radius:var(--radius-lg);padding:var(--space-lg)}.submission-meta{margin-bottom:var(--space-md)}.submission-date{font-size:var(--font-size-sm);color:var(--color-text-muted)}.submission-link{margin-bottom:var(--space-sm)}.submission-link .label{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-secondary);margin-right:var(--space-sm)}.submission-link a{font-size:var(--font-size-sm);word-break:break-all}.submission-description,.submission-notes{margin-top:var(--space-md)}.submission-description .label,.submission-notes .label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-secondary);margin-bottom:var(--space-xs)}.submission-description p,.submission-notes p{margin:0;font-size:var(--font-size-sm);color:var(--color-text-primary)}.submission-count{font-size:var(--font-size-sm);color:var(--color-text-muted);background:var(--color-bg-elevated);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md)}.file-upload-group{border-top:1px solid var(--color-border-default);padding-top:var(--space-lg);margin-top:var(--space-lg)}.form-hint{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--space-sm)}.submission-form input[type=file]{padding:var(--space-sm);font-size:var(--font-size-sm);background:var(--color-bg-elevated);border:1px dashed var(--color-border-default);border-radius:var(--radius-md);cursor:pointer;width:100%}.submission-form input[type=file]:hover{border-color:var(--color-accent-primary)}.file-list{margin-top:var(--space-sm)}.selected-files{font-size:var(--font-size-sm);color:var(--color-text-secondary);background:var(--color-bg-elevated);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md)}.selected-files ul{margin:var(--space-xs) 0 0 var(--space-lg);padding:0}.selected-files li{color:var(--color-text-muted)}.file-error{color:var(--color-error);font-size:var(--font-size-sm);margin-top:var(--space-sm)}.ai-score{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md);margin-left:var(--space-md)}.ai-score.score-excellent,.ai-score.score-good{background:var(--color-success-bg, rgba(46, 160, 67, .15));color:var(--color-success)}.ai-score.score-satisfactory{background:var(--color-warning-bg, rgba(210, 153, 34, .15));color:var(--color-warning)}.ai-score.score-needs-improvement{background:var(--color-error-bg, rgba(248, 81, 73, .15));color:var(--color-error)}.ai-evaluation{margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--color-border-default)}.ai-evaluation h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-normal);color:var(--color-text-primary);margin-bottom:var(--space-md)}.ai-evaluation h4{font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-secondary);margin:var(--space-lg) 0 var(--space-sm) 0}.evaluation-feedback{background:var(--color-bg-elevated);padding:var(--space-md);border-radius:var(--radius-md);border-left:3px solid var(--color-accent-primary)}.evaluation-feedback p{margin:0;font-size:var(--font-size-sm);color:var(--color-text-primary);line-height:var(--line-height-relaxed)}.rubric-scores{margin-top:var(--space-lg)}.rubric-score-item{background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-sm)}.rubric-score-header{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm);margin-bottom:var(--space-sm)}.rubric-score-header .criterion-name{font-weight:var(--font-weight-normal);color:var(--color-text-primary)}.rubric-score-header .criterion-weight{font-size:var(--font-size-xs);color:var(--color-text-muted)}.rubric-score-header .criterion-score{margin-left:auto;font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm)}.criterion-score.score-excellent,.criterion-score.score-good{background:var(--color-success-bg, rgba(46, 160, 67, .15));color:var(--color-success)}.criterion-score.score-satisfactory{background:var(--color-warning-bg, rgba(210, 153, 34, .15));color:var(--color-warning)}.criterion-score.score-needs-improvement{background:var(--color-error-bg, rgba(248, 81, 73, .15));color:var(--color-error)}.criterion-justification{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0;line-height:var(--line-height-relaxed)}.evaluation-strengths,.evaluation-improvements{margin-top:var(--space-md)}.evaluation-strengths ul,.evaluation-improvements ul{margin:0;padding-left:var(--space-lg)}.evaluation-strengths li{color:var(--color-success);font-size:var(--font-size-sm);margin-bottom:var(--space-xs)}.evaluation-improvements li{color:var(--color-warning);font-size:var(--font-size-sm);margin-bottom:var(--space-xs)}.previous-attempts{margin-bottom:var(--space-2xl)}.attempts-list{display:flex;flex-direction:column;gap:var(--space-sm)}.attempt-card{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md) var(--space-lg);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md)}.attempt-card.passed{border-color:var(--color-success)}.attempt-card.failed{border-color:var(--color-error)}.attempt-info{display:flex;flex-direction:column;gap:var(--space-xs)}.attempt-number{font-weight:var(--font-weight-normal)}.attempt-date{font-size:var(--font-size-sm);color:var(--color-text-muted)}.attempt-score{font-size:var(--font-size-xl);font-weight:var(--font-weight-normal)}.attempt-card.passed .attempt-score{color:var(--color-success)}.attempt-card.failed .attempt-score{color:var(--color-error)}.quiz-start{text-align:center;padding:var(--space-2xl);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg)}.quiz-start h2{margin-bottom:var(--space-md);border:none;padding:0}.quiz-start p{margin-bottom:var(--space-xl);color:var(--color-text-secondary)}.btn-large{padding:var(--space-md) var(--space-xl);font-size:var(--font-size-md)}.exam-start-buttons{display:flex;gap:var(--space-md);justify-content:center;flex-wrap:wrap}.practice-mode{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-xl)}.practice-header{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-xl);padding-bottom:var(--space-md);border-bottom:1px solid var(--color-border-default)}.practice-badge{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm);background:var(--color-accent-primary);color:#fff;border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal)}.practice-badge svg{width:16px;height:16px}.practice-count{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.practice-header #exit-practice-btn{margin-left:auto}#practice-question-container{min-height:200px}#practice-actions,#practice-next-actions{display:flex;gap:var(--space-md);margin-top:var(--space-lg);padding-top:var(--space-lg);border-top:1px solid var(--color-border-default)}#practice-feedback{margin-top:var(--space-lg)}.practice-loading,.practice-evaluating{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-2xl);text-align:center;color:var(--color-text-secondary)}.practice-loading p,.practice-evaluating p{margin-top:var(--space-md);margin-bottom:0}.loading-mascot{width:80px;height:80px}.loading-mascot svg{width:100%;height:100%}.empty-state-mascot{width:64px;height:64px;margin:0 auto var(--space-md)}.empty-state-mascot svg{width:100%;height:100%}.practice-error{padding:var(--space-xl);text-align:center;background:var(--color-bg-elevated);border-radius:var(--radius-md)}.practice-error p{color:var(--color-text-secondary);margin-bottom:var(--space-md)}.practice-error a{color:var(--color-accent-primary)}.loading-page{min-height:240px;display:flex;align-items:center;justify-content:center}.loading-state{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);color:var(--color-text-muted)}.loading-spinner{width:40px;height:40px;border:3px solid var(--color-border-default);border-top-color:var(--color-accent-primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.test-results{margin:var(--space-md) 0;display:flex;flex-direction:column;gap:var(--space-sm)}.test-result{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm);background:var(--color-bg-elevated);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.test-result.passed{border-left:3px solid var(--color-success)}.test-result.failed{border-left:3px solid var(--color-error)}.test-icon svg{width:16px;height:16px}.test-result.passed .test-icon svg{color:var(--color-success)}.test-result.failed .test-icon svg{color:var(--color-error)}.test-desc{flex:1}.test-error{color:var(--color-error);font-size:var(--font-size-xs)}.solution-details{margin-top:var(--space-md)}.solution-details summary{cursor:pointer;color:var(--color-accent-primary);font-weight:var(--font-weight-normal)}.solution-details pre{margin-top:var(--space-sm);padding:var(--space-md);background:var(--color-bg-elevated);border-radius:var(--radius-md);overflow-x:auto}.correct-answer{margin:var(--space-md) 0;padding:var(--space-md);background:var(--color-bg-elevated);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.progress-header{margin-bottom:var(--space-2xl)}.progress-header h1{margin-bottom:var(--space-sm)}.progress-header .subtitle{font-size:var(--font-size-lg);color:var(--color-text-secondary)}.progress-overview-card{display:flex;flex-direction:column;gap:var(--space-xl);padding:var(--space-xl);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);margin-bottom:var(--space-2xl)}@media (min-width: 768px){.progress-overview-card{flex-direction:row;align-items:center}}.circular-progress{display:flex;justify-content:center;flex-shrink:0;position:relative}.progress-ring-circle-bg{stroke:var(--color-bg-elevated)}.progress-ring-circle{stroke:var(--color-accent-primary);transition:stroke-dashoffset 1s ease-in-out;transform-origin:50% 50%}.progress-text{font-size:var(--font-size-3xl);font-weight:var(--font-weight-normal);fill:var(--color-text-primary)}.progress-stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-lg);flex:1;width:100%}.stat-box{padding:var(--space-md);background:var(--color-bg-elevated);border-radius:var(--radius-md);text-align:center}.stat-box .stat-value{display:block;font-size:var(--font-size-2xl);font-weight:var(--font-weight-normal);color:var(--color-text-primary);margin-bottom:var(--space-xs)}.stat-box .stat-label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.year-breakdown{margin-bottom:var(--space-2xl)}.year-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--space-lg)}.year-card{padding:var(--space-lg);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg)}.year-card-header{margin-bottom:var(--space-md)}.year-card h3{font-size:var(--font-size-md);margin-bottom:var(--space-sm)}.year-progress-bar{height:6px;background:var(--color-bg-elevated);border-radius:var(--radius-sm);overflow:hidden}.year-card-stats{display:flex;justify-content:space-between;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.year-percentage{font-weight:var(--font-weight-normal);color:var(--color-accent-primary)}.subject-breakdown{margin-bottom:var(--space-2xl)}.year-breakdown-section{margin-bottom:var(--space-md);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);overflow:hidden}.year-breakdown-header{padding:var(--space-md) var(--space-lg);background:var(--color-bg-surface);cursor:pointer;transition:background-color var(--transition-fast)}.year-breakdown-header:hover{background:var(--color-bg-elevated)}.year-breakdown-header:hover h3{color:var(--color-accent-text-hover)}.year-breakdown-header h3{margin:0;font-size:var(--font-size-md);display:flex;align-items:center;gap:var(--space-sm)}.expand-icon{font-size:var(--font-size-sm);color:var(--color-text-muted)}.year-breakdown-content{padding:var(--space-lg);border-top:1px solid var(--color-border-default);background:var(--color-bg-deep)}.semester-breakdown{margin-bottom:var(--space-lg)}.semester-breakdown:last-child{margin-bottom:0}.semester-breakdown h4{font-size:var(--font-size-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-md)}.subjects-breakdown-list{display:flex;flex-direction:column;gap:var(--space-sm)}.subject-breakdown-item{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.subject-breakdown-item:hover{border-color:var(--color-accent-primary);transform:translate(4px)}.subject-breakdown-item:hover .subject-info h5{color:var(--color-accent-text-hover)}.subject-breakdown-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-xs)}.subject-info{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.subject-info h5{margin:0;font-size:var(--font-size-sm);color:var(--color-text-primary);line-height:1.3;word-break:break-word}.subject-info .subject-code{font-size:var(--font-size-xs);color:var(--color-text-muted)}.subject-status-pill{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-lg);border:1px solid transparent;font-size:var(--font-size-xs);font-weight:var(--font-weight-normal);white-space:nowrap}.subject-status-pill.status-not-started{color:var(--color-text-secondary);background:var(--color-bg-elevated);border-color:var(--color-border-default)}.subject-status-pill.status-in-progress{color:var(--color-warning);background:#d299221f;border-color:#d2992259}.subject-status-pill.status-completed{color:var(--color-success);background:#56d36424;border-color:#56d36459}.subject-breakdown-progress{margin-top:var(--space-sm)}.subject-breakdown-progress .progress-bar-container{margin-bottom:var(--space-xs)}.progress-details{display:flex;justify-content:flex-start;gap:var(--space-lg);font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-xs);flex-wrap:wrap}.achievements{margin-bottom:var(--space-2xl)}.achievements-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-lg)}.achievement-card{display:flex;gap:var(--space-md);padding:var(--space-lg);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);transition:all var(--transition-base)}.achievement-card.locked{opacity:.6;filter:grayscale(1)}.achievement-card.unlocked{border-color:var(--color-accent-primary);background:linear-gradient(to bottom right,var(--color-bg-surface),rgba(88,166,255,.05))}.achievement-icon{font-size:var(--font-size-2xl)}.achievement-content h3{font-size:var(--font-size-md);margin-bottom:var(--space-xs)}.achievement-content p{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-sm);line-height:1.4}.achievement-date{font-size:var(--font-size-xs);color:var(--color-success);font-weight:var(--font-weight-normal)}.achievement-progress{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-xs);color:var(--color-text-muted)}.data-management{margin-bottom:var(--space-2xl)}.data-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--space-lg)}.action-group{padding:var(--space-xl);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);text-align:center}.action-group h3{font-size:var(--font-size-lg);margin-bottom:var(--space-xs)}.action-group p{color:var(--color-text-secondary);margin-bottom:var(--space-lg)}.action-group .btn{width:100%}.settings-section{margin-bottom:var(--space-2xl)}.settings-section h2{margin-bottom:var(--space-lg);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border-default)}.settings-group{display:flex;flex-direction:column;gap:var(--space-md)}.setting-item{display:flex;justify-content:space-between;align-items:center;padding:var(--space-xl);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);transition:border-color var(--transition-fast)}.setting-item:hover{border-color:var(--color-border-emphasis)}.setting-item:hover:not(.danger-zone) .setting-info h3{color:var(--color-accent-text-hover)}.setting-info{flex:1;padding-right:var(--space-lg)}.setting-info h3{font-size:var(--font-size-md);margin:0 0 var(--space-xs) 0;color:var(--color-text-primary)}.setting-info p{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0;line-height:1.5}.theme-selector{display:flex;background:var(--color-bg-elevated);padding:4px;border-radius:var(--radius-md);border:1px solid var(--color-border-default)}.theme-option{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast)}.theme-option:hover{color:var(--color-accent-text-hover)}.theme-option.active{background:var(--color-bg-surface);color:var(--color-accent-primary);box-shadow:var(--shadow-sm);font-weight:var(--font-weight-medium)}.theme-option .theme-icon svg{width:16px;height:16px}.font-size-control{display:flex;align-items:center;gap:var(--space-md)}.font-size-slider{width:120px;height:4px;background:var(--color-bg-elevated);border-radius:2px;appearance:none;outline:none}.font-size-slider::-webkit-slider-thumb{appearance:none;width:16px;height:16px;background:var(--color-accent-primary);border-radius:50%;cursor:pointer;transition:transform var(--transition-fast)}.font-size-slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.font-size-value{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--color-text-secondary);min-width:40px;text-align:center}.toggle-switch{position:relative;display:inline-block;width:44px;height:24px}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;inset:0;background-color:var(--color-bg-elevated);transition:.4s;border-radius:24px;border:1px solid var(--color-border-default)}.toggle-slider:before{position:absolute;content:"";height:18px;width:18px;left:2px;bottom:2px;background-color:var(--color-text-muted);transition:.4s;border-radius:50%}input:checked+.toggle-slider{background-color:var(--color-accent-primary);border-color:var(--color-accent-primary)}input:checked+.toggle-slider:before{transform:translate(20px);background-color:#fff}.setting-item.danger-zone{border-color:#f8514966}.setting-item.danger-zone:hover{border-color:var(--color-error);background:#f8514905}.setting-item.danger-zone h3{color:var(--color-error)}.warning-message{display:flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-sm);padding:var(--space-sm);background:#f851491a;border-radius:var(--radius-md);font-size:var(--font-size-xs);color:var(--color-error)}.warning-message .warning-icon svg{width:16px;height:16px}.setting-stats{display:flex;gap:var(--space-xl);margin-top:var(--space-md)}.stat-row{display:flex;flex-direction:column;gap:2px}.stat-row .stat-label{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.stat-row .stat-value{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--color-text-primary);font-family:var(--font-mono)}.about-info{text-align:center;padding:var(--space-xl);background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg)}.version-info{display:inline-block;margin-top:var(--space-md);padding:var(--space-xs) var(--space-md);background:var(--color-bg-elevated);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-family:var(--font-mono);color:var(--color-text-muted)}.font-preview{margin-top:var(--space-md);padding:var(--space-md);background:var(--color-bg-deep);border:1px solid var(--color-border-default);border-radius:var(--radius-md)}.font-preview pre{margin:0}.font-preview code{font-family:var(--font-mono);color:var(--color-text-primary)}.setting-control.vertical{display:flex;flex-direction:column;width:100%;max-width:400px}.input-group{display:flex;gap:var(--space-sm);margin-bottom:var(--space-sm)}.status-message{font-size:var(--font-size-sm);color:var(--color-text-secondary);display:flex;align-items:center;gap:var(--space-xs)}.status-message.success{color:var(--color-success)}.status-message svg{width:14px;height:14px}.help-text{margin-top:var(--space-sm);font-size:var(--font-size-xs);color:var(--color-text-muted)}.help-text a{color:var(--color-accent-primary)}.error-page{max-width:var(--content-max-width);margin:0 auto;text-align:center;padding:var(--space-3xl) var(--space-xl)}.error-page h1{margin-bottom:var(--space-md)}.error-page p{margin-bottom:var(--space-xl)}@media (max-width: 768px){.curriculum-header{flex-direction:column}.curriculum-filters{width:100%}.curriculum-legend{flex-wrap:wrap;gap:var(--space-md)}.progress-stats{grid-template-columns:repeat(2,1fr)}.stats-grid{grid-template-columns:1fr}.subject-title-row{flex-direction:column;gap:var(--space-md)}.topics-list .topic-item{flex-direction:column;align-items:flex-start}.topics-list .topic-item .btn{width:100%;margin-top:var(--space-md)}.projects-list .project-item{flex-direction:column;align-items:flex-start}.projects-list .project-item .btn{width:100%;margin-top:var(--space-md)}.assessment-item{flex-direction:column;align-items:flex-start;gap:var(--space-md)}.assessment-item .btn{width:100%}}@media (max-width: 480px){.subjects-grid,.actions-grid{grid-template-columns:1fr}}.export-page .page-description{color:var(--color-text-secondary);margin-bottom:var(--space-xl)}.export-container{display:grid;grid-template-columns:1fr 320px;gap:var(--space-xl);align-items:start}.export-card{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-xl)}.export-section{margin-bottom:var(--space-xl)}.export-label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);color:var(--color-text-primary);margin-bottom:var(--space-sm)}.export-select{width:100%;padding:var(--space-sm) var(--space-md);font-size:var(--font-size-md);font-family:var(--font-sans);color:var(--color-text-primary);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--transition-fast)}.export-select:focus{outline:none;border-color:var(--color-accent-primary);box-shadow:0 0 0 3px #58a6ff1a}.export-select:disabled{opacity:.6;cursor:not-allowed}.export-preview{padding:var(--space-lg);background:var(--color-bg-elevated);border-radius:var(--radius-md);margin-bottom:var(--space-xl)}.export-preview h3{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0 0 var(--space-md) 0;text-transform:uppercase;letter-spacing:.05em}.preview-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-md);margin-bottom:var(--space-lg)}.stat-item{text-align:center}.stat-item .stat-value{display:block;font-size:var(--font-size-xl);font-weight:var(--font-weight-normal);color:var(--color-accent-primary)}.stat-item .stat-label{font-size:var(--font-size-xs);color:var(--color-text-muted)}.preview-description{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed);margin:0}.export-checkbox{display:flex;gap:var(--space-md);padding:var(--space-md);background:var(--color-bg-elevated);border-radius:var(--radius-md);cursor:pointer}.export-checkbox input[type=checkbox]{width:20px;height:20px;margin:0;cursor:pointer;accent-color:var(--color-accent-primary);flex-shrink:0}.export-checkbox input[type=checkbox]:disabled{opacity:.6;cursor:not-allowed}.export-checkbox label{display:flex;flex-direction:column;gap:var(--space-xs);cursor:pointer}.checkbox-title{font-weight:var(--font-weight-normal);color:var(--color-text-primary)}.checkbox-description{font-size:var(--font-size-sm);color:var(--color-text-muted)}.export-actions{margin-top:var(--space-xl)}.export-actions .btn-large{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-md) var(--space-xl);font-size:var(--font-size-md)}.export-actions .btn-icon{font-size:var(--font-size-lg)}.export-actions .btn-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spinner .8s linear infinite}@keyframes spinner{to{transform:rotate(360deg)}}.export-progress{margin-top:var(--space-lg);text-align:center}.export-progress .progress-bar{height:4px;background:var(--color-bg-elevated);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:var(--space-sm)}.progress-bar-indeterminate{width:30%;height:100%;background:var(--color-accent-primary);border-radius:var(--radius-sm);animation:indeterminate 1.5s ease-in-out infinite}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(400%)}}.export-progress .progress-text{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.export-info{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-xl)}.export-info h3{font-size:var(--font-size-md);margin:0 0 var(--space-lg) 0}.info-list{list-style:none;padding:0;margin:0 0 var(--space-xl) 0}.info-list li{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-md) 0;border-bottom:1px solid var(--color-border-default)}.info-list li:last-child{border-bottom:none}.info-list li strong{font-size:var(--font-size-sm);color:var(--color-text-primary)}.info-list li span{font-size:var(--font-size-sm);color:var(--color-text-muted)}.info-note{font-size:var(--font-size-sm);color:var(--color-text-secondary);padding:var(--space-md);background:var(--color-bg-elevated);border-radius:var(--radius-md)}.info-note strong{color:var(--color-text-primary)}@media (max-width: 768px){.export-container{grid-template-columns:1fr}.preview-stats{grid-template-columns:repeat(2,1fr)}}.view-toggle{display:flex;background:var(--color-bg-elevated);padding:4px;border-radius:var(--radius-md);border:1px solid var(--color-border-default)}.toggle-btn{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);background:transparent;border:none;border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-normal);cursor:pointer;transition:all var(--transition-fast)}.toggle-btn:hover{color:var(--color-accent-text-hover)}.toggle-btn.active{background:var(--color-bg-surface);color:var(--color-accent-primary);box-shadow:var(--shadow-sm)}.toggle-btn svg{width:16px;height:16px}@media (max-width: 768px){.page-header h1,h1{font-size:var(--font-size-2xl)}.page-header,.home-header,.progress-header,.section,.recent-subjects,.quick-stats,.quick-actions,.progress-summary,.current-subject,.dashboard-next-action{margin-bottom:var(--space-xl)}h2{font-size:var(--font-size-xl)}h3{font-size:var(--font-size-lg)}.circular-progress svg{width:160px;height:160px}.progress-text{font-size:var(--font-size-2xl)}.progress-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.progress-stats-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-md)}.subjects-grid,.stats-grid,.actions-grid,.achievements-grid,.data-actions,.year-cards{grid-template-columns:1fr;gap:var(--space-md)}.stat-box{padding:var(--space-sm)}.stat-box .stat-value{font-size:var(--font-size-xl)}.year-cards{grid-template-columns:1fr}.breadcrumb{flex-wrap:wrap;font-size:var(--font-size-xs)}.progress-card,.daily-review,.stat-card,.action-card,.subject-card{padding:var(--space-md)}.subject-card .subject-meta{flex-wrap:wrap;gap:var(--space-sm)}.topics-list .topic-item,.projects-list .project-item,.exams-list .exam-item{flex-direction:column;align-items:stretch;gap:var(--space-md)}.topics-list .topic-item .btn,.projects-list .project-item .btn,.exams-list .exam-item .btn{width:100%}.btn{max-width:100%;min-height:44px;min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:var(--line-height-normal);text-align:center}.btn>span:not([class*=icon]),.btn .btn-label,.btn .action-label{min-width:0;overflow-wrap:anywhere}.btn svg,.btn-icon,.action-icon,.meta-icon{flex-shrink:0}.topic-number{width:32px;height:32px;font-size:var(--font-size-sm)}.exercise-page .exercise-description{padding:var(--space-md)}.mobile-exercise-tabs{display:flex;margin-bottom:var(--space-md)}.exercise-page[data-mobile-tab=description] .exercise-workspace,.exercise-page[data-mobile-tab=workspace] .exercise-description{display:none}.topic-navigation,.exercise-navigation{flex-direction:column;gap:var(--space-md)}.topic-navigation .nav-left,.topic-navigation .nav-right,.exercise-navigation .nav-left,.exercise-navigation .nav-right{width:100%;text-align:center}.topic-navigation .btn,.exercise-navigation .btn{width:100%;max-width:none;white-space:normal;overflow-wrap:anywhere}.practice-quick-nav{flex-direction:column;align-items:stretch}.practice-quick-actions{justify-content:stretch}.practice-quick-actions .btn{flex:1}.setting-item{flex-direction:column;align-items:flex-start;gap:var(--space-md)}.setting-item>*{width:100%}.achievements-grid,.data-actions{grid-template-columns:1fr}.subject-status-badge{font-size:var(--font-size-xs);padding:var(--space-xs) var(--space-sm)}.attempt-card{flex-direction:column;gap:var(--space-sm);text-align:center}.form-actions{flex-direction:column}.form-actions .btn{width:100%}.self-assessment-grid,.scaffolding-grid{grid-template-columns:1fr}.topic-title-section{flex-direction:column;align-items:flex-start;gap:var(--space-sm)}.theme-selector,.font-size-control{width:100%}.theme-selector{display:grid;grid-template-columns:repeat(3,1fr)}.theme-option{justify-content:center}.font-size-slider{flex:1;width:auto}}@media (max-width: 480px){.circular-progress svg{width:120px;height:120px}.progress-text{font-size:var(--font-size-xl)}.progress-stats,.progress-stats-grid{grid-template-columns:1fr}.progress-card,.progress-overview-card{padding:var(--space-md)}.subject-breakdown-item{padding:var(--space-sm)}.subject-breakdown-header{flex-direction:column;align-items:flex-start;gap:var(--space-sm)}.content-section{padding:var(--space-md)}.topic-meta,.project-meta,.exam-meta{flex-direction:column;gap:var(--space-xs)}}.rubric-table,table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width: 768px){.rubric-table{min-width:500px}.table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 calc(-1 * var(--space-md));padding:0 var(--space-md)}}pre,.code-snippet{overflow-x:auto;-webkit-overflow-scrolling:touch}.main-content{overflow-x:clip}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-word{word-break:break-word;overflow-wrap:break-word}img{max-width:100%;height:auto}.markdown-content,.content-body,.question-content,.exercise-content,.exam-content{min-width:0;overflow-wrap:anywhere}.markdown-content table,.content-body table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.dependency-graph-container,.subject-dependency-graph,.curriculum-graph-container{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}@supports (padding: max(0px)){.mobile-header{padding-left:max(var(--space-md),env(safe-area-inset-left));padding-right:max(var(--space-md),env(safe-area-inset-right))}.sidebar{padding-left:max(var(--space-lg),env(safe-area-inset-left));padding-bottom:max(var(--space-lg),env(safe-area-inset-bottom))}@media (max-width: 768px){.main-content{padding-left:max(var(--space-md),env(safe-area-inset-left));padding-right:max(var(--space-md),env(safe-area-inset-right));padding-bottom:max(var(--space-md),env(safe-area-inset-bottom))}}}.timeline-setup{display:flex;flex-direction:column;align-items:center;padding:var(--space-2xl) 0}.setup-welcome{text-align:center;margin-bottom:var(--space-2xl);max-width:500px}.setup-welcome h1{margin-bottom:var(--space-md)}.timeline-planner{width:100%;max-width:500px}.planner-card{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-xl)}.planner-header{display:flex;align-items:flex-start;gap:var(--space-md);margin-bottom:var(--space-xl)}.planner-icon{color:var(--color-accent-primary);flex-shrink:0}.planner-icon svg{width:32px;height:32px}.planner-header h2{font-family:var(--font-body);margin:0 0 var(--space-xs);font-size:var(--font-size-lg)}.planner-form{display:flex;flex-direction:column;gap:var(--space-lg)}.planner-form .form-group{display:flex;flex-direction:column;gap:var(--space-sm)}.planner-form label{font-weight:500;color:var(--color-text-primary)}.planner-form input[type=date]{padding:var(--space-sm) var(--space-md);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-base)}.planner-form input[type=date]:focus{outline:none;border-color:var(--color-accent-primary)}.pace-options{display:flex;flex-direction:column;gap:var(--space-sm)}.pace-option{display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-md);background:var(--color-bg-elevated);border:2px solid var(--color-border-default);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--transition-fast),background var(--transition-fast)}.pace-option:hover{border-color:var(--color-border-strong)}.pace-option:hover .pace-label{color:var(--color-accent-text-hover)}.pace-option.selected{border-color:var(--color-accent-primary);background:#58a6ff1a}.pace-option input[type=radio]{margin-top:3px;accent-color:var(--color-accent-primary)}.pace-content{display:flex;flex-direction:column;gap:var(--space-2xs)}.pace-label{font-weight:500;color:var(--color-text-primary)}.pace-description{font-size:var(--font-size-sm);color:var(--color-text-muted)}.timeline-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-lg);margin-bottom:var(--space-xl);flex-wrap:wrap}.timeline-title h1{display:flex;align-items:center;gap:var(--space-sm);margin:0 0 var(--space-xs)}.timeline-title h1 svg{width:28px;height:28px;color:var(--color-accent-primary)}.timeline-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--space-md);margin-bottom:var(--space-xl)}.timeline-stats .stat-card{background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius-md);padding:var(--space-md);text-align:center}.timeline-stats .stat-value{display:block;font-size:var(--font-size-2xl);font-weight:600;color:var(--color-text-primary)}.timeline-stats .stat-value.stat-completed{color:var(--color-success)}.timeline-stats .stat-value.stat-in-progress{color:var(--color-accent-primary)}.timeline-stats .stat-value.stat-scheduled{color:var(--color-text-muted)}.timeline-stats .stat-value.stat-behind{color:var(--color-error)}.timeline-stats .stat-card-warning{border-color:var(--color-error);background:#f851491a}.timeline-stats .stat-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.timeline-legend{display:flex;flex-wrap:wrap;gap:var(--space-lg);margin-bottom:var(--space-lg);padding:var(--space-md);background:var(--color-bg-surface);border-radius:var(--radius-md)}.legend-item{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.legend-color{width:16px;height:16px;border-radius:var(--radius-sm)}.legend-completed{background:var(--color-success)}.legend-in-progress{background:var(--color-accent-primary)}.legend-scheduled{background:var(--color-text-muted);background:repeating-linear-gradient(45deg,var(--color-text-muted),var(--color-text-muted) 2px,transparent 2px,transparent 4px)}.legend-blocked{background:var(--color-border-default);opacity:.5}.legend-overdue{background:var(--color-error);box-shadow:0 0 0 2px var(--color-error)}.timeline-gantt-wrapper{overflow-x:auto;border:1px solid var(--color-border-default);border-radius:var(--radius-lg);background:var(--color-bg-surface)}.timeline-gantt-container{position:relative;min-height:400px}.timeline-tooltip{position:absolute;z-index:1000;background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);padding:var(--space-md);box-shadow:var(--shadow-lg);pointer-events:none;max-width:280px}.tooltip-title{font-weight:600;color:var(--color-text-primary);margin-bottom:var(--space-xs)}.tooltip-dates{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-sm)}.tooltip-status{font-size:var(--font-size-sm);padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-sm);display:inline-block}.tooltip-status.status-completed{background:#56d36433;color:var(--color-success)}.tooltip-status.status-in-progress{background:#58a6ff33;color:var(--color-accent-primary)}.tooltip-status.status-scheduled{background:#6e768133;color:var(--color-text-muted)}.tooltip-status.status-blocked{background:#f8514933;color:var(--color-error)}.tooltip-progress{font-size:var(--font-size-sm);color:var(--color-success);margin-top:var(--space-sm)}.tooltip-hint{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-sm);font-style:italic}.tooltip-override{font-size:var(--font-size-xs);color:var(--color-warning);margin-top:var(--space-xs)}.tooltip-overdue{font-size:var(--font-size-sm);color:var(--color-error);font-weight:600;margin-top:var(--space-sm)}.timeline-page .modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center}.timeline-page .modal-backdrop{position:absolute;inset:0;background:#000000b3}.timeline-page .modal-content{position:relative;background:var(--color-bg-deep);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);max-width:500px;width:90%;max-height:90vh;overflow-y:auto}.timeline-page .modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-lg);border-bottom:1px solid var(--color-border-default)}.timeline-page .modal-header h2{font-family:var(--font-body);margin:0;font-size:var(--font-size-lg)}.timeline-page .modal-close{background:none;border:none;font-size:var(--font-size-2xl);color:var(--color-text-muted);cursor:pointer;padding:0;line-height:1}.timeline-page .modal-close:hover{color:var(--color-accent-text-hover)}.timeline-page #modal-planner{padding:var(--space-lg)}.timeline-page #modal-planner .planner-card{background:transparent;border:none;padding:0}.timeline-page #modal-planner .planner-header{display:none}@media (max-width: 768px){.timeline-header{flex-direction:column;align-items:stretch}.timeline-stats{grid-template-columns:repeat(2,1fr)}.timeline-legend{gap:var(--space-md)}}.course-builder-header{margin-bottom:var(--space-2xl)}.course-builder-header h1{font-size:var(--font-size-3xl);margin-bottom:var(--space-sm)}.course-builder-header .subtitle{color:var(--color-text-secondary);margin-bottom:var(--space-lg)}.selection-summary{display:flex;gap:var(--space-xl)}.summary-stat{color:var(--color-text-secondary)}.summary-stat strong{color:var(--color-accent-primary)}.templates-section{margin-bottom:var(--space-3xl)}.templates-section h2{font-size:var(--font-size-xl);margin-bottom:var(--space-sm)}.section-description{color:var(--color-text-secondary);margin-bottom:var(--space-lg)}.templates-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-lg)}.template-card{background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-lg);padding:var(--space-lg);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.template-card:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-lg)}.template-card:hover .template-name{color:var(--color-accent-text-hover)}.template-icon{font-size:2rem;margin-bottom:var(--space-md)}.template-name{font-size:var(--font-size-lg);margin-bottom:var(--space-sm)}.template-description{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--space-md);line-height:1.5}.template-meta{display:flex;gap:var(--space-lg);color:var(--color-text-muted);font-size:var(--font-size-sm);margin-bottom:var(--space-md)}.apply-template-btn{width:100%}.catalog-section h2{font-size:var(--font-size-xl);margin-bottom:var(--space-sm)}.catalog-controls{display:flex;flex-wrap:wrap;gap:var(--space-md);margin-bottom:var(--space-lg);align-items:center}.search-box{flex:1;min-width:200px}.search-box input{width:100%;padding:var(--space-sm) var(--space-md);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-base)}.search-box input:focus{outline:none;border-color:var(--color-accent-primary)}.filter-controls{display:flex;gap:var(--space-sm)}.filter-controls select{padding:var(--space-sm) var(--space-md);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-sm)}.bulk-actions{display:flex;gap:var(--space-sm)}.subject-list{display:flex;flex-direction:column;gap:var(--space-sm)}.subject-item{display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-md);background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius-md);cursor:pointer;transition:border-color var(--transition-fast),background-color var(--transition-fast)}.subject-item:hover{border-color:var(--color-border-hover)}.subject-item:hover .subject-title,.subject-item:hover .subject-code{color:var(--color-accent-text-hover)}.subject-item.selected{border-color:var(--color-accent-primary);background:color-mix(in srgb,var(--color-accent-primary) 10%,var(--color-bg-elevated))}.subject-item.has-warning{border-color:var(--color-warning)}.subject-checkbox{padding-top:var(--space-xs)}.subject-checkbox input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-accent-primary)}.subject-info{flex:1}.subject-header{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-xs)}.subject-code{font-weight:600;font-family:var(--font-mono)}.category-badge{font-size:var(--font-size-xs);padding:2px 6px;border-radius:var(--radius-sm);font-weight:500}.category-badge.category-cs{background:color-mix(in srgb,var(--color-accent-primary) 20%,transparent);color:var(--color-accent-primary)}.category-badge.category-math{background:color-mix(in srgb,var(--color-success) 20%,transparent);color:var(--color-success)}.year-badge{font-size:var(--font-size-xs);color:var(--color-text-muted)}.subject-title{font-size:var(--font-size-base);margin-bottom:var(--space-xs)}.subject-meta{display:flex;gap:var(--space-md);color:var(--color-text-muted);font-size:var(--font-size-sm)}.prereq-count{color:var(--color-warning)}.prereq-warning{margin-top:var(--space-sm);padding:var(--space-sm);background:color-mix(in srgb,var(--color-warning) 15%,transparent);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-warning)}.course-builder-footer{position:sticky;bottom:0;display:flex;justify-content:space-between;align-items:center;padding:var(--space-lg);margin-top:var(--space-xl);background:var(--color-bg-surface);border-top:1px solid var(--color-border-default)}.footer-summary{color:var(--color-text-secondary)}.footer-summary strong{color:var(--color-text-primary)}.empty-state{text-align:center;padding:var(--space-2xl);color:var(--color-text-muted)}@media (max-width: 768px){.catalog-controls{flex-direction:column;align-items:stretch}.filter-controls{flex-direction:column}.bulk-actions{flex-wrap:wrap}.templates-grid{grid-template-columns:1fr}.course-builder-footer{flex-direction:column;gap:var(--space-md);text-align:center}}.brick-blink{animation:brick-blink 5s step-end infinite;transform-origin:center}@keyframes brick-blink{0%,92%,to{transform:scaleY(1)}96%{transform:scaleY(.1)}}.brick-kinetic{animation:brick-fall 4s ease-in infinite;transform-origin:32px 48px}.brick-kinetic .brick-face{animation:brick-face-wobble 4s linear infinite;transform-origin:32px 38px}@keyframes brick-fall{0%{transform:translateY(-120px);opacity:0}15%{opacity:1}20%{transform:translateY(0) scaleY(1)}25%{transform:scaleY(.6) scaleX(1.3)}30%{transform:scaleY(1.1) scaleX(.9)}35%{transform:scaleY(1) scaleX(1)}80%{transform:scaleY(1) scaleX(1);opacity:1}90%{opacity:0}to{opacity:0;transform:translateY(0)}}@keyframes brick-face-wobble{0%,35%{transform:translate(0)}40%{transform:translate(-2px)}45%{transform:translate(2px)}50%{transform:translate(0)}to{transform:translate(0)}}.brick-kinetic-once{animation:brick-fall-once 2.5s ease-out 1 forwards;transform-origin:32px 48px}.brick-kinetic-once .brick-face{animation:brick-face-wobble 2.5s linear 1 forwards;transform-origin:32px 38px}@keyframes brick-fall-once{0%{transform:translateY(-150px);opacity:0}10%{opacity:1}20%{transform:translateY(0) scaleY(1)}25%{transform:scaleY(.6) scaleX(1.3)}30%{transform:scaleY(1.1) scaleX(.9)}35%{transform:scaleY(1) scaleX(1)}to{transform:translateY(0) scaleY(1) scaleX(1);opacity:1}}.brick-zen,.brick-delighted,.brick-float{animation:brick-float 3s ease-in-out infinite;transform-origin:32px 38px}@keyframes brick-float{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-5px) rotate(1deg)}}.brick-pondering,.brick-wobble{animation:brick-wobble 2.5s ease-in-out infinite;transform-origin:32px 38px}@keyframes brick-wobble{0%,to{transform:rotate(0)}25%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}}.brick-eyes-scan,.eyes-scan{animation:brick-eyes-scan 3s ease-in-out infinite}@keyframes brick-eyes-scan{0%,to{transform:translate(0)}50%{transform:translate(2px)}}.brick-rotate-eyes{animation:brick-rotate-eyes 4s linear infinite;transform-origin:32px 37px}@keyframes brick-rotate-eyes{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.brick-glint{fill:var(--brick-glint);stroke:none;opacity:0;animation:brick-glint 4s ease-in-out infinite}@keyframes brick-glint{0%,to{opacity:0}50%{opacity:.6}}.brick-snooze{animation:brick-snooze 3s ease-in-out infinite;transform-origin:center}.brick-snooze-delay{animation-delay:1.2s}@keyframes brick-snooze{0%{transform:translate(0) scale(.8);opacity:0}20%{opacity:1}to{transform:translate(6px,-10px) scale(1.2);opacity:0}}.brick-shake{animation:brick-shake .5s cubic-bezier(.36,.07,.19,.97) infinite both;transform-origin:center}@keyframes brick-shake{10%,90%{transform:translate3d(-1px,0,0)}20%,80%{transform:translate3d(2px,0,0)}30%,50%,70%{transform:translate3d(-2px,0,0)}40%,60%{transform:translate3d(2px,0,0)}}.brick-pulse{animation:brick-pulse 2s ease-in-out infinite;transform-origin:center}@keyframes brick-pulse{0%{transform:scale(1)}50%{transform:scale(1.02)}to{transform:scale(1)}}@keyframes logo-bounce{0%,to{transform:translateY(0)}40%{transform:translateY(-4px)}60%{transform:translateY(-2px)}}.mascot-breathing{animation:mascot-breathe 3s ease-in-out infinite;transform-origin:32px 48px}.mascot-sleeping .mascot-body-group.mascot-breathing{animation:mascot-sleep-breathe 4.5s ease-in-out infinite}@keyframes mascot-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@keyframes mascot-sleep-breathe{0%,to{transform:scale(.98) translateY(0)}50%{transform:scale(1.01) translateY(1px)}}.mascot-entrance{animation:mascot-entrance .6s cubic-bezier(.34,1.56,.64,1) forwards;transform-origin:32px 48px}@keyframes mascot-entrance{0%{transform:translateY(-30px) scale(.8);opacity:0}50%{transform:translateY(4px) scale(1.05);opacity:1}70%{transform:translateY(-2px) scale(.98)}to{transform:translateY(0) scale(1)}}.mascot-blush{fill:#ffb8b8;opacity:0;transition:opacity .3s ease}.mascot-blush-active{opacity:.6}.mascot-reflection{fill:#fff;opacity:0;transition:opacity .3s ease,transform .1s ease;pointer-events:none}.mascot-reflection-active{opacity:.4}.mascot-lean{transition:transform .3s cubic-bezier(.34,1.56,.64,1);transform-origin:32px 48px}.mascot-squint .brick-blink{transform:scaleY(.6)!important}.mascot-spin{animation:mascot-spin .45s cubic-bezier(.34,1.1,.64,1);transform-origin:32px 48px}.mascot-jump{animation:mascot-jump .6s cubic-bezier(.34,1.4,.64,1)}@keyframes mascot-spin{0%{transform:translateY(0) rotate(0)}35%{transform:translateY(-6px) rotate(-8deg)}70%{transform:translateY(-2px) rotate(4deg)}to{transform:translateY(0) rotate(0)}}@keyframes mascot-jump{0%{transform:translateY(0)}40%{transform:translateY(-12px)}70%{transform:translateY(0)}85%{transform:translateY(-4px)}to{transform:translateY(0)}}.mascot-konami .mascot-sunglasses-drop{animation:sunglasses-drop .5s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes sunglasses-drop{0%{transform:translateY(-20px);opacity:0}60%{transform:translateY(2px)}to{transform:translateY(0);opacity:1}}.mascot-sparkle{opacity:0;transform-origin:center}.mascot-sparkle-active{animation:sparkle-burst 1s ease-out forwards}@keyframes sparkle-burst{0%{opacity:0;transform:scale(0)}20%{opacity:1;transform:scale(1.2)}to{opacity:0;transform:scale(.5) translateY(-10px)}}.sparkle-1{animation-delay:0s}.sparkle-2{animation-delay:.1s}.sparkle-3{animation-delay:.2s}.sparkle-4{animation-delay:.15s}.mascot-sweat-animated{animation:sweat-drip 2s ease-in infinite;transform-origin:top center}.mascot-sweat-animated:nth-child(2){animation-delay:1s}@keyframes sweat-drip{0%{transform:translateY(0) scale(1);opacity:0}10%{opacity:.8}80%{opacity:.8}to{transform:translateY(15px) scale(.6);opacity:0}}.snore-bubble{fill:#fff9;stroke:var(--brick-stroke, #2d3436);stroke-width:1;opacity:0}.snore-bubble-1{animation:snore-bubble 2.5s ease-in-out infinite}.snore-bubble-2{animation:snore-bubble 2.5s ease-in-out infinite .4s}.snore-bubble-3{animation:snore-bubble 2.5s ease-in-out infinite .8s}@keyframes snore-bubble{0%{opacity:0;transform:translateY(0) scale(.5)}20%{opacity:.8}80%{opacity:.6}to{opacity:0;transform:translateY(-15px) scale(1.2)}}.mascot-dream-bubble{animation:dream-float 3s ease-in-out infinite}.dream-trail{fill:#ffffff80;stroke:var(--brick-stroke, #2d3436);stroke-width:.8}.dream-trail-1{animation:dream-trail-pulse 2s ease-in-out infinite}.dream-trail-2{animation:dream-trail-pulse 2s ease-in-out infinite .3s}.dream-cloud{fill:#ffffffe6;stroke:var(--brick-stroke, #2d3436);stroke-width:1;animation:dream-cloud-pulse 4s ease-in-out infinite}.dream-icon{animation:dream-icon-fade 3s ease-in-out infinite;fill:#2d3436;font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}@keyframes dream-float{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}@keyframes dream-trail-pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}}@keyframes dream-cloud-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes dream-icon-fade{0%,to{opacity:1}50%{opacity:.7}}.mascot-gone{animation:mascot-float-away 2s ease-in-out forwards}.mascot-gone .mascot-body-group{animation:mascot-drift 4s ease-in-out infinite}@keyframes mascot-float-away{0%{transform:translateY(0) translate(0);opacity:1}70%{transform:translateY(-20px) translate(30px);opacity:.6}to{transform:translateY(-30px) translate(50px);opacity:.3}}@keyframes mascot-drift{0%,to{transform:translateY(0) rotate(0)}25%{transform:translateY(-2px) rotate(2deg)}75%{transform:translateY(2px) rotate(-2deg)}}
