:root{--color-bg-primary: #f5f7fa;--color-bg-secondary: #eef1f6;--color-bg-card: #ffffff;--color-bg-hover: #e7ecf3;--color-bg-active: #dbe3ec;--color-text-primary: #1e2430;--color-text-secondary: #5a6573;--color-text-muted: #78828f;--color-text-inverse: #ffffff;--color-primary-subtle: rgba(77, 171, 247, .1);--color-danger-subtle: rgba(201, 42, 42, .1);--color-warning-subtle: rgba(230, 119, 0, .1);--color-success-subtle: rgba(43, 138, 62, .1);--color-chart-1: #4a90d9;--color-chart-2: #e8734a;--color-chart-3: #50b86c;--color-chart-4: #f5a623;--color-chart-5: #9b59b6;--color-chart-6: #e74c3c;--color-chart-7: #1abc9c;--color-primary: #4dabf7;--color-border: #d6dde6;--color-border-focus: #4dabf7;--color-risk-satisfactory: #2b8a3e;--color-risk-warning: #e67700;--color-risk-atrisk: #e8590c;--color-risk-critical: #c92a2a;--color-risk-at-risk: var(--color-risk-atrisk);--hero-bg-satisfactory: rgba(43, 138, 62, .07);--hero-bg-warning: rgba(230, 119, 0, .08);--hero-bg-atrisk: rgba(232, 89, 12, .09);--hero-bg-critical: rgba(201, 42, 42, .11);--hero-border-critical: rgba(201, 42, 42, .55);--color-absence-unexcused: #c92a2a;--color-absence-excused: #1971c2;--color-absence-late: #e67700;--color-absence-early: #ae3ec9;--color-absence-present: #2b8a3e;--color-absence-cancelled: #868e96;--font-family: "Source Sans 3", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-family-display: "Source Serif 4", "Iowan Old Style", "Apple Garamond", Georgia, serif;--font-family-mono: "SF Mono", "Cascadia Code", "Roboto Mono", Consolas, monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.5rem;--font-size-2xl: 2rem;--font-size-3xl: 2.75rem;--font-size-4xl: 3.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-8: 3rem;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(15, 23, 42, .05);--shadow-md: 0 1px 3px 0 rgba(15, 23, 42, .08), 0 1px 2px -1px rgba(15, 23, 42, .05);--shadow-lg: 0 6px 14px -3px rgba(15, 23, 42, .1), 0 2px 5px -2px rgba(15, 23, 42, .06);--transition-fast: .15s ease;--transition-normal: .25s ease;--z-dropdown: 100;--z-modal: 200;--z-tooltip: 300;--z-toast: 400}[data-theme=dark]{--color-bg-primary: #16191f;--color-bg-secondary: #1d2128;--color-bg-card: #21252e;--color-bg-hover: #2a2f38;--color-bg-active: #353b45;--color-text-primary: #e8ecf1;--color-text-secondary: #a3adb9;--color-text-muted: #6f7884;--color-primary: #339af0;--color-border: #2f343d;--color-border-focus: #339af0;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .4);--shadow-md: 0 1px 3px 0 rgba(0, 0, 0, .5), 0 1px 2px -1px rgba(0, 0, 0, .4);--shadow-lg: 0 6px 14px -3px rgba(0, 0, 0, .55), 0 2px 5px -2px rgba(0, 0, 0, .45);--hero-bg-satisfactory: rgba(43, 138, 62, .14);--hero-bg-warning: rgba(230, 119, 0, .16);--hero-bg-atrisk: rgba(232, 89, 12, .18);--hero-bg-critical: rgba(201, 42, 42, .22);--hero-border-critical: rgba(255, 107, 107, .65)}[data-contrast=high]{--color-border: #000000;--color-text-secondary: #495057;--color-risk-satisfactory: #1b5e20;--color-risk-warning: #bf5700;--color-risk-atrisk: #d84315;--color-risk-critical: #b71c1c;--hero-bg-satisfactory: rgba(27, 94, 32, .16);--hero-bg-warning: rgba(191, 87, 0, .18);--hero-bg-atrisk: rgba(216, 67, 21, .2);--hero-bg-critical: rgba(183, 28, 28, .24);--hero-border-critical: #b71c1c}[data-text-size=large]{--font-size-xs: .9375rem;--font-size-sm: 1.09375rem;--font-size-base: 1.25rem;--font-size-lg: 1.40625rem;--font-size-xl: 1.875rem;--font-size-2xl: 2.5rem;--font-size-3xl: 3.4375rem;--font-size-4xl: 4.375rem}#root{--cc-accent: 77, 171, 247;--cc-text: 30, 36, 48;--cc-bg: 255, 255, 255;--cc-info: 77, 171, 247;--cc-warn: 230, 119, 0;--cc-font-sans: "Source Sans 3", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--cc-font-mono: "SF Mono", "Cascadia Code", "Roboto Mono", Consolas, monospace;--cc-radius: var(--radius-md)}[data-theme=dark] #root{--cc-accent: 51, 154, 240;--cc-text: 232, 236, 241;--cc-bg: 33, 37, 46}#root{--cn-accent: 77, 171, 247;--cn-text: 30, 36, 48;--cn-bg: 255, 255, 255;--cn-surface: 238, 241, 246;--cn-border: 214, 221, 230}[data-theme=dark] #root{--cn-accent: 51, 154, 240;--cn-text: 232, 236, 241;--cn-bg: 33, 37, 46;--cn-surface: 29, 33, 40;--cn-border: 47, 52, 61}#root,[data-theme=dark] #root{--cs-accent: var(--cn-accent);--cs-text: var(--cn-text);--cs-bg: var(--cn-bg);--cs-surface: var(--cn-surface);--cs-border: var(--cn-border)}:root{--about-modal-bg: var(--color-bg-card);--about-modal-panel-bg: var(--color-bg-secondary);--about-modal-border: var(--color-border);--about-modal-text-primary: var(--color-text-primary);--about-modal-text-body: var(--color-text-secondary);--about-modal-text-muted: var(--color-text-muted);--about-modal-link: var(--color-border-focus);--about-modal-close-bg: var(--color-bg-hover);--about-modal-close-color: var(--color-text-muted);--about-modal-btn-bg: var(--color-text-primary);--about-modal-btn-text: var(--color-text-inverse);--about-modal-btn-bg-hover: var(--color-text-secondary);--about-modal-radius: var(--radius-lg)}[data-theme=dark]{--about-modal-overlay: rgba(0, 0, 0, .65);--about-modal-bg: var(--color-bg-card);--about-modal-panel-bg: var(--color-bg-secondary);--about-modal-border: var(--color-border);--about-modal-text-primary: var(--color-text-primary);--about-modal-text-body: var(--color-text-secondary);--about-modal-text-muted: var(--color-text-muted);--about-modal-link: var(--color-primary);--about-modal-close-bg: rgba(255, 255, 255, .08);--about-modal-close-color: var(--color-text-muted);--about-modal-btn-bg: var(--color-primary);--about-modal-btn-text: var(--color-text-inverse);--about-modal-btn-bg-hover: #5bb7f7}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-family);font-size:100%;line-height:var(--line-height-normal);color:var(--color-text-primary);background-color:var(--color-bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-display);line-height:var(--line-height-tight);font-weight:var(--font-weight-semibold);letter-spacing:-.005em}h1{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold)}h2{font-size:var(--font-size-xl)}h3{font-size:var(--font-size-lg)}a{color:var(--color-border-focus);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.skip-to-content{position:absolute;top:-100%;left:var(--space-4);padding:var(--space-2) var(--space-4);background:var(--color-bg-primary);border:2px solid var(--color-border-focus);z-index:9999;font-weight:var(--font-weight-semibold)}.skip-to-content:focus{top:var(--space-4)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;border-radius:var(--radius-md);font-family:var(--font-family);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-fast);line-height:var(--line-height-tight)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm)}.btn--md{padding:var(--space-2) var(--space-4);font-size:var(--font-size-base)}.btn--lg{padding:var(--space-3) var(--space-6);font-size:var(--font-size-lg)}.btn--primary{background:var(--color-border-focus);color:#fff}.btn--primary:hover:not(:disabled){filter:brightness(1.1)}.btn--secondary{background:var(--color-bg-secondary);color:var(--color-text-primary);border-color:var(--color-border)}.btn--secondary:hover:not(:disabled){background:var(--color-bg-hover)}.btn--danger{background:var(--color-risk-critical);color:#fff}.btn--danger:hover:not(:disabled){filter:brightness(1.1)}.btn--ghost{background:transparent;color:var(--color-text-secondary)}.btn--ghost:hover:not(:disabled){background:var(--color-bg-hover)}.btn__spinner{width:1em;height:1em;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.input-group{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-3)}.input-group__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.input-group__required{color:var(--color-risk-critical);margin-left:var(--space-1)}.input-group__input,.input-group__select,.input-group__textarea{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text-primary);background:var(--color-bg-primary);transition:border-color var(--transition-fast)}.input-group__input:focus,.input-group__select:focus,.input-group__textarea:focus{border-color:var(--color-border-focus);outline:none;box-shadow:0 0 0 3px #4dabf733}.input-group--error .input-group__input,.input-group--error .input-group__select{border-color:var(--color-risk-critical)}.input-group__error{font-size:var(--font-size-xs);color:var(--color-risk-critical)}#root .cn-drawer{background:rgb(var(--cn-surface))}#root .cn-tab-bar{background:rgb(var(--cn-bg))}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--space-4)}.modal{background:var(--color-bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-height:90vh;overflow-y:auto}.modal--sm{max-width:400px;width:100%}.modal--md{max-width:600px;width:100%}.modal--lg{max-width:800px;width:100%}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.modal__title{font-size:var(--font-size-lg);margin:0}.modal__close{background:none;border:none;font-size:var(--font-size-xl);cursor:pointer;color:var(--color-text-secondary);padding:var(--space-1);line-height:1}.modal__body{padding:var(--space-5)}.load-demo{display:flex;flex-direction:column;gap:var(--space-4)}.load-demo__hint{margin:0;font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-normal)}.load-demo__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.load-demo__item{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4);background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.load-demo__item:hover{border-color:var(--color-border-focus);box-shadow:var(--shadow-sm)}.load-demo__item-info{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.load-demo__item-name{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.load-demo__item-desc{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-normal)}.quick-log{display:flex;flex-direction:column;gap:var(--space-4)}.quick-log__context{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3) var(--space-4);background:var(--color-bg-secondary);border-radius:var(--radius-md);border-left:3px solid var(--color-primary)}.quick-log__course{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm);color:var(--color-text-primary)}.quick-log__date{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.quick-log__hint{margin:0;font-size:var(--font-size-xs);color:var(--color-text-muted);line-height:1.4}.quick-log .btn{width:100%;justify-content:center;gap:var(--space-2)}.tab-bar{display:flex;border-bottom:2px solid var(--color-border);gap:0;overflow-x:auto}.tab-bar__tab{padding:var(--space-3) var(--space-5);border:none;background:none;font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;white-space:nowrap;transition:all var(--transition-fast)}.tab-bar__tab--active{color:var(--color-border-focus);border-bottom-color:var(--color-border-focus)}.tab-bar__tab:hover{color:var(--color-text-primary)}.tab-bar__icon{margin-right:var(--space-1)}.budget-gauge{display:flex;flex-direction:column;gap:var(--space-1)}.budget-gauge__bar{height:8px;background:var(--color-bg-secondary);border-radius:var(--radius-full);overflow:hidden}.budget-gauge__fill{height:100%;border-radius:var(--radius-full);transition:width var(--transition-normal),background-color var(--transition-normal)}.budget-gauge__label{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.risk-badge{display:inline-flex;align-items:center;gap:var(--space-1);border-radius:var(--radius-full);color:var(--color-text-inverse);font-weight:var(--font-weight-semibold)}.risk-badge--sm{padding:2px var(--space-2);font-size:var(--font-size-xs)}.risk-badge--md{padding:var(--space-1) var(--space-3);font-size:var(--font-size-sm)}.risk-badge--lg{padding:var(--space-2) var(--space-4);font-size:var(--font-size-base)}.penalty-countdown{display:flex;align-items:baseline;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--color-bg-secondary);border-radius:var(--radius-md)}.penalty-countdown__number{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-risk-warning)}.penalty-countdown__label{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.penalty-countdown__tier{font-size:var(--font-size-xs);color:var(--color-text-muted)}.collapsible-panel{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.collapsible-panel__header{width:100%;display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);background:var(--color-bg-secondary);border:none;cursor:pointer;font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.collapsible-panel__content{padding:var(--space-4)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8);text-align:center;gap:var(--space-3)}.empty-state__icon{font-size:3rem}.empty-state__title{font-size:var(--font-size-xl)}.empty-state__description{color:var(--color-text-secondary);max-width:400px}@keyframes toast-slide-in{0%{opacity:0;transform:translate(1rem)}to{opacity:1;transform:translate(0)}}@keyframes toast-slide-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(1rem)}}.toast-container{position:fixed;top:var(--space-4);right:var(--space-4);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-2)}.toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);color:var(--color-text-inverse);font-size:var(--font-size-sm);box-shadow:var(--shadow-md);min-width:250px;max-width:400px;animation:toast-slide-in .15s ease-out}.toast--exiting{animation:toast-slide-out .15s ease-in forwards}.toast--success{background:var(--color-risk-satisfactory)}.toast--error{background:var(--color-risk-critical)}.toast--warning{background:var(--color-risk-warning)}.toast--info{background:var(--color-absence-excused)}.toast__dismiss{background:none;border:none;color:var(--color-text-inverse);cursor:pointer;font-size:var(--font-size-lg);opacity:.7;padding:0;line-height:1}.stat-card{text-align:center}.stat-card--card{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-primary)}.stat-card__value{display:block;font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.stat-card__label{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted)}.stat-card--lg .stat-card__value{font-size:var(--font-size-2xl)}.stat-card--lg .stat-card__label{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:var(--space-1)}.stat-card--md .stat-card__value{font-size:var(--font-size-xl)}.stat-card--sm .stat-card__value{font-size:var(--font-size-lg)}.stat-card--danger .stat-card__value{color:var(--color-risk-critical)}.header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-5);background:var(--color-bg-card);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:var(--z-dropdown);gap:var(--space-4)}.header__brand{display:flex;align-items:baseline;gap:var(--space-2)}.header__logo{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);margin:0}.header__subtitle{font-size:var(--font-size-sm);color:var(--color-text-muted)}.header__course-select{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-secondary);font-size:var(--font-size-sm);min-width:200px}.header__actions{display:flex;align-items:center;gap:var(--space-2)}.header__icon-btn{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:var(--space-1);color:var(--color-text-secondary);border-radius:var(--radius-sm);line-height:0;transition:all var(--transition-fast)}.header__icon-btn:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.header__overflow{position:relative;display:inline-flex}.header__overflow-dropdown{position:absolute;top:calc(100% + var(--space-1));right:0;min-width:200px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:var(--z-dropdown);padding:var(--space-1);display:flex;flex-direction:column}.header__overflow-item{display:flex;align-items:center;gap:var(--space-2);text-align:left;background:none;border:none;cursor:pointer;padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);transition:background var(--transition-fast)}.header__overflow-item:hover{background:var(--color-bg-hover)}.header__overflow-item svg{flex-shrink:0;color:var(--color-text-secondary)}.header__quick-log{gap:var(--space-1)}.dashboard{padding:var(--space-5);flex:1}.dashboard__toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4)}.dashboard__actions{display:flex;gap:var(--space-2);align-items:center}.dashboard__demo-section{margin-top:var(--space-6)}.course-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4)}.course-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);cursor:pointer;transition:box-shadow var(--transition-fast),transform var(--transition-fast);display:flex;flex-direction:column;gap:var(--space-3)}.course-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.course-card--add{display:flex;align-items:center;justify-content:center;border-style:dashed;color:var(--color-text-muted);min-height:180px;flex-direction:column;gap:var(--space-2);background:none;width:100%;font-family:var(--font-family);font-size:var(--font-size-base);cursor:pointer}.course-card--add:hover{border-color:var(--color-border-focus);color:var(--color-border-focus)}.course-card__add-icon{font-size:2rem}.course-card__header{display:flex;justify-content:space-between;align-items:flex-start;min-width:0;overflow:hidden}.course-card__name{font-size:var(--font-size-base);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.course-card__code{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap}.course-card__status{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.course-detail{flex:1;display:flex;flex-direction:column}.course-detail__header{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5)}.course-detail__info{display:flex;flex-direction:column;min-width:0;overflow:hidden}.course-detail__name{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.course-detail__code{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.course-detail__content{padding:var(--space-5);flex:1}.overview-panel{display:flex;flex-direction:column;gap:var(--space-5);max-width:640px}.overview-hero{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5) var(--space-5) var(--space-4);border-radius:var(--radius-lg);border:1px solid var(--color-border);border-left:4px solid var(--color-border);background:var(--color-bg-card);box-shadow:var(--shadow-sm)}.overview-hero--satisfactory{background:var(--hero-bg-satisfactory);border-left-color:var(--color-risk-satisfactory)}.overview-hero--warning{background:var(--hero-bg-warning);border-left-color:var(--color-risk-warning)}.overview-hero--at-risk{background:var(--hero-bg-atrisk);border-left-color:var(--color-risk-atrisk)}.overview-hero--critical{background:var(--hero-bg-critical);border-left-color:var(--color-risk-critical)}.overview-hero--critical-loud{border:2px solid var(--hero-border-critical);border-left-width:6px;box-shadow:var(--shadow-lg)}.overview-hero__masthead{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap}.overview-hero__burn{margin-top:0;flex:1;min-width:0}.overview-hero__burn--fast{color:var(--color-risk-warning);font-weight:var(--font-weight-semibold)}.overview-hero__quick-log{margin-left:auto;gap:var(--space-1);flex-shrink:0}.overview-hero__headline{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2) var(--space-3);margin:0;line-height:1}.overview-hero__number{font-family:var(--font-family-display);font-size:var(--font-size-4xl);font-weight:var(--font-weight-bold);letter-spacing:-.02em;line-height:.9;color:var(--color-text-primary);animation:overview-hero-settle .42s cubic-bezier(.16,1,.3,1) both}.overview-hero--critical-loud .overview-hero__number{color:var(--color-risk-critical)}.overview-hero__unit{font-family:var(--font-family-display);font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.overview-hero__headline-sub{flex-basis:100%;font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:var(--space-1)}.overview-hero .budget-gauge{gap:var(--space-2)}.overview-hero .budget-gauge__bar{height:22px;background:var(--color-bg-active);box-shadow:inset 0 1px 2px #0f172a1f}.overview-hero .budget-gauge__fill{border-radius:var(--radius-full);background-image:linear-gradient(100deg,transparent 0%,rgba(255,255,255,.28) 50%,transparent 100%);background-size:200% 100%;animation:budget-gauge-sweep .9s ease-out .12s both}.overview-hero .budget-gauge__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.overview-hero__stats{display:flex;align-items:center;gap:var(--space-5);flex-wrap:wrap}.overview-hero__stat{display:flex;flex-direction:column}.overview-hero__stat-value{font-family:var(--font-family-display);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary);line-height:1.1}.overview-hero__stat-label{font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted)}.overview-hero__recovery{padding:var(--space-3) var(--space-4);background:var(--color-bg-card);border-radius:var(--radius-md);border-left:4px solid var(--color-risk-satisfactory);overflow-wrap:anywhere;font-size:var(--font-size-sm)}.overview-hero__recovery--critical{border-left-color:var(--color-risk-critical);background:var(--color-bg-secondary)}.overview-hero--first-use{padding-top:var(--space-6);padding-bottom:var(--space-6)}.overview-hero__first-use-kicker{margin:0;font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.08em;font-weight:var(--font-weight-semibold);color:var(--color-risk-satisfactory)}.overview-hero__headline--onboarding .overview-hero__unit{color:var(--color-text-primary)}.overview-hero__first-use-cta{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);margin-top:var(--space-1)}.overview-hero__first-use-cta .btn{gap:var(--space-2)}.overview-hero__first-use-cta .btn svg{transition:transform .16s cubic-bezier(.16,1,.3,1)}.overview-hero__first-use-cta .btn:hover:not(:disabled) svg{transform:translate(2px)}.overview-hero__first-use-hint{margin:0;font-size:var(--font-size-sm);color:var(--color-text-muted);max-width:46ch}.overview-panel__divider{height:1px;background:linear-gradient(to right,transparent 0%,var(--color-border) 12%,var(--color-border) 88%,transparent 100%);margin:var(--space-1) 0 var(--space-1)}.overview-panel__details{display:flex;flex-direction:column;gap:var(--space-3)}.overview-panel__breakdown ul{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-2)}.overview-panel__breakdown li{font-size:var(--font-size-sm);color:var(--color-text-secondary)}@keyframes overview-hero-settle{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes budget-gauge-sweep{0%{background-position:200% 0}to{background-position:-50% 0}}.log-absence-panel{display:flex;flex-direction:column;gap:var(--space-6)}.log-absence-panel__form{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-3);align-items:start}.log-absence-panel__table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.log-absence-panel__table th,.log-absence-panel__table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);text-align:left}.grade-impact-panel{display:flex;flex-direction:column;gap:var(--space-5);max-width:600px}.grade-impact-panel__grade{display:flex;align-items:baseline;gap:var(--space-3)}.grade-impact-panel__letter{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold)}.grade-impact-panel__points{font-size:var(--font-size-lg);color:var(--color-text-secondary)}.grade-impact-panel__penalty{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.audit-step{padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.audit-step:last-child{border-bottom:none}.audit-step__header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-1)}.audit-step__number{font-size:var(--font-size-xs);color:var(--color-text-muted);font-weight:var(--font-weight-semibold)}.audit-step__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.audit-step__row{display:flex;gap:var(--space-2);font-size:var(--font-size-xs);padding-left:var(--space-4)}.audit-step__field{font-weight:var(--font-weight-medium);color:var(--color-text-secondary);min-width:60px}.calendar-grid{max-width:700px}.calendar-grid__nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.calendar-grid__month{font-size:var(--font-size-lg);margin:0}.calendar-month{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--color-border);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.calendar-month__header{display:contents}.calendar-month__weekday{padding:var(--space-2);text-align:center;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);background:var(--color-bg-secondary)}.calendar-month__body{display:contents}.calendar-day{padding:var(--space-2);min-height:48px;display:flex;flex-direction:column;align-items:center;gap:var(--space-1);background:var(--color-bg-primary);cursor:pointer;transition:background var(--transition-fast)}.calendar-day:hover{background:var(--color-bg-hover)}.calendar-day--today{background:var(--color-bg-secondary);font-weight:var(--font-weight-bold)}.calendar-day--other{opacity:.4}.calendar-day__number{font-size:var(--font-size-sm)}.calendar-day__dot{width:8px;height:8px;border-radius:50%}.template-selector__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-3)}.template-selector__card{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-card);cursor:pointer;text-align:left;font-family:var(--font-family);transition:border-color var(--transition-fast)}.template-selector__card:hover{border-color:var(--color-border-focus)}.template-selector__name{font-weight:var(--font-weight-semibold);font-size:var(--font-size-sm)}.template-selector__desc{font-size:var(--font-size-xs);color:var(--color-text-secondary)}.policy-config-form__fields{display:flex;flex-direction:column;gap:var(--space-3)}.policy-config-form__inline{display:flex;gap:var(--space-4)}.policy-config-form__toggle{display:flex;flex-direction:column;gap:var(--space-2)}.policy-config-form__actions{display:flex;gap:var(--space-3);margin-top:var(--space-4)}.penalty-tier-editor{display:flex;flex-direction:column;gap:var(--space-3)}.penalty-tier-editor__tier{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--space-2);padding:var(--space-3);background:var(--color-bg-secondary);border-radius:var(--radius-md);align-items:start}.course-setup-form{display:flex;flex-direction:column;gap:var(--space-3)}.course-setup-form__fieldset{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4)}.course-setup-form__fieldset legend{font-weight:var(--font-weight-semibold);padding:0 var(--space-2)}.course-setup-form__pattern{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--space-2);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);align-items:start}.course-setup-form__actions{display:flex;gap:var(--space-3);margin-top:var(--space-4)}.setup-wizard__progress{display:flex;justify-content:center;gap:var(--space-2);margin-bottom:var(--space-5)}.setup-wizard__step-dot{width:12px;height:12px;border-radius:50%;background:var(--color-border)}.setup-wizard__step-dot--active{background:var(--color-border-focus)}.setup-wizard__step-dot--done{background:var(--color-risk-satisfactory)}.setup-wizard__content{display:flex;flex-direction:column;gap:var(--space-3);min-height:200px}.setup-wizard__days{display:flex;gap:var(--space-3);flex-wrap:wrap}.setup-wizard__day-check{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer}.setup-wizard__actions{display:flex;justify-content:space-between;margin-top:var(--space-5)}.export-import-bar{display:flex;flex-direction:column;gap:var(--space-4)}.export-import-bar__section{display:flex;flex-direction:column;gap:var(--space-2)}.export-import-bar__confirm-actions{display:flex;gap:var(--space-3);margin-top:var(--space-4)}.settings-panel{display:flex;flex-direction:column;gap:var(--space-5)}.settings-panel__section{display:flex;flex-direction:column;gap:var(--space-3)}.settings-panel__hint{color:var(--color-text-secondary);font-size:var(--font-size-sm)}.settings-panel__policy-actions{margin-bottom:var(--space-3)}@keyframes app-loading-sweep{0%{stroke-dashoffset:157}50%{stroke-dashoffset:55}to{stroke-dashoffset:157}}@keyframes app-loading-pulse{0%,to{opacity:.55}50%{opacity:1}}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:var(--space-4);color:var(--color-text-secondary)}.app-loading__gauge{width:120px;height:68px}.app-loading__gauge-track{stroke:var(--color-border)}.app-loading__gauge-sweep{stroke:var(--color-primary);stroke-dasharray:157;stroke-dashoffset:157;animation:app-loading-sweep 1.4s ease-in-out infinite}.app-loading__title{margin:0;font-size:var(--font-size-xl);color:var(--color-text-primary);letter-spacing:.02em;animation:app-loading-pulse 1.4s ease-in-out infinite}@media (max-width: 768px){.header{flex-wrap:wrap;gap:var(--space-2)}.header__subtitle{display:none}.course-card-grid,.log-absence-panel__form{grid-template-columns:1fr}.calendar-day{min-height:44px;padding:var(--space-1)}.calendar-day__number{font-size:var(--font-size-xs)}.overview-hero__number{font-size:var(--font-size-3xl)}.overview-hero__unit{font-size:var(--font-size-lg)}.overview-hero{padding:var(--space-4)}}@media (max-width: 1024px){.tab-bar{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.overview-panel,.grade-impact-panel{max-width:none}}.semester-dashboard{padding:var(--space-4)}.semester-dashboard__stats{display:flex;gap:var(--space-4);margin:var(--space-4) 0;flex-wrap:wrap}.semester-dashboard__stat{flex:1;min-width:120px;background:var(--color-bg-card);padding:var(--space-4)}.semester-dashboard__risk-grid{margin:var(--space-4) 0}.semester-dashboard__risk-items{display:flex;gap:var(--space-3);flex-wrap:wrap}.semester-dashboard__risk-item{display:flex;align-items:center;gap:var(--space-2)}.semester-dashboard__highest-risk{padding:var(--space-3);background:var(--color-bg-secondary);border-radius:var(--radius-md);display:flex;align-items:center;gap:var(--space-2)}.semester-dashboard__course-list{margin-top:var(--space-4)}.semester-dashboard__course-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.semester-dashboard__course-name{flex:1;font-weight:var(--font-weight-medium)}.semester-dashboard__course-pct{font-variant-numeric:tabular-nums;min-width:3rem;text-align:right}.semester-dashboard__course-budget{min-width:4rem;text-align:right;color:var(--color-text-secondary)}.session-timeline{padding:var(--space-3) 0}.session-timeline__track{display:flex;gap:2px;overflow-x:auto;padding-bottom:var(--space-2)}.session-timeline__block{width:12px;height:24px;border-radius:2px;flex-shrink:0}.session-timeline__block--present{background:var(--color-risk-satisfactory)}.session-timeline__block--unexcused{background:var(--color-risk-critical)}.session-timeline__block--excused{background:var(--color-absence-excused)}.session-timeline__block--late{background:var(--color-risk-warning)}.session-timeline__block--early_departure{background:var(--color-absence-early)}.session-timeline__block--cancelled{background:var(--color-absence-cancelled)}.session-timeline__block--holiday{background:var(--color-absence-cancelled);opacity:.5}.session-timeline__block--future{background:var(--color-border);opacity:.3}.session-timeline__legend{display:flex;gap:var(--space-3);flex-wrap:wrap;font-size:var(--font-size-xs)}.session-timeline__legend-item:before{content:"";display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:var(--space-1);vertical-align:middle}.attendance-sparkline{padding:var(--space-2) 0}.attendance-sparkline svg{display:block}.threshold-timeline{padding:var(--space-3);background:var(--color-bg-secondary);border-radius:var(--radius-md)}.threshold-timeline__info p{margin:var(--space-1) 0}.threshold-timeline--safe{color:var(--color-risk-satisfactory)}.threshold-timeline__date{color:var(--color-risk-atrisk);font-weight:var(--font-weight-medium)}.tooltip-wrapper{position:relative;display:inline-block}.tooltip-trigger{cursor:help;border-bottom:1px dotted var(--color-text-secondary)}.tooltip-content{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:var(--color-text-primary);color:var(--color-bg-primary);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-sm);white-space:normal;width:max-content;max-width:16rem;line-height:var(--line-height-normal);z-index:var(--z-tooltip);pointer-events:none}.help-icon{display:inline-flex;align-items:center;justify-content:center;width:1.05em;height:1.05em;margin-left:var(--space-1);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);line-height:1;vertical-align:baseline;cursor:help;color:var(--color-text-secondary);border:1px solid var(--color-border);border-radius:50%}.help-icon:hover,.help-icon:focus{color:var(--color-text-primary);border-color:var(--color-text-secondary)}.stat-caption{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-normal);margin-top:var(--space-1)}.demo-course-loader{padding:var(--space-4);text-align:center;background:var(--color-bg-secondary);border-radius:var(--radius-md)}.demo-course-loader p{margin-bottom:var(--space-3);color:var(--color-text-secondary)}.faq-panel{padding:var(--space-4)}.faq-panel__controls{display:flex;gap:var(--space-3);margin-bottom:var(--space-4)}.faq-panel__search,.faq-panel__category{padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-family)}.faq-panel__search{flex:1}.faq-panel__list{display:flex;flex-direction:column;gap:var(--space-2)}.faq-panel__empty{color:var(--color-text-muted);text-align:center;padding:var(--space-4)}.glossary-panel{padding:var(--space-4)}.glossary-panel__search{width:100%;padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:var(--space-4);font-family:var(--font-family)}.glossary-panel__list{display:flex;flex-direction:column;gap:var(--space-3)}.glossary-panel__entry{border-bottom:1px solid var(--color-border);padding-bottom:var(--space-2)}.glossary-panel__entry dt{font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.glossary-panel__entry dd{margin:var(--space-1) 0 0;color:var(--color-text-secondary);font-size:var(--font-size-sm)}.glossary-panel__empty{color:var(--color-text-muted);text-align:center;padding:var(--space-4)}.participation-log{padding:var(--space-4)}.participation-log__form{display:flex;flex-direction:column;gap:var(--space-3)}.participation-log__stars{display:flex;gap:var(--space-1)}.participation-log__star{background:none;border:none;font-size:var(--font-size-lg);cursor:pointer;color:var(--color-text-muted);padding:0;line-height:1}.participation-log__star--active{color:var(--color-risk-warning)}.participation-log__history{margin-top:var(--space-4)}.participation-log__entry{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border)}.participation-log__entry-date{min-width:5rem;font-variant-numeric:tabular-nums}.participation-log__entry-stars{color:var(--color-risk-warning)}.participation-log__entry-notes{flex:1;color:var(--color-text-secondary);font-size:var(--font-size-sm);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.participation-log__entry-delete{background:none;border:none;cursor:pointer;color:var(--color-text-muted);font-size:var(--font-size-lg);padding:0 var(--space-1)}.feedback-form{padding:var(--space-4)}.feedback-form form{display:flex;flex-direction:column;gap:var(--space-3)}.feedback-form textarea,.feedback-form input,.feedback-form select{padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-family);font-size:var(--font-size-base);background:var(--color-bg-primary);color:var(--color-text-primary)}.feedback-form__actions{display:flex;gap:var(--space-3)}.alert-banner-container{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2) var(--space-4);max-width:800px;margin:0 auto}.alert-banner{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.alert-banner--danger{background:var(--color-danger-subtle);border:1px solid var(--color-risk-critical);color:var(--color-risk-critical)}.alert-banner--warning{background:var(--color-warning-subtle);border:1px solid var(--color-risk-warning);color:var(--color-risk-warning)}.alert-banner--info{background:var(--color-primary-subtle);border:1px solid var(--color-primary);color:var(--color-primary)}.alert-banner__icon{font-size:var(--font-size-lg);flex-shrink:0}.alert-banner__message{flex:1}.alert-banner__dismiss{background:none;border:none;cursor:pointer;font-size:var(--font-size-xl);color:inherit;opacity:.7;padding:0 var(--space-1)}.alert-banner__dismiss:hover{opacity:1}.safe-to-miss{padding:var(--space-4)}.safe-to-miss__picker{margin-bottom:var(--space-3)}.safe-to-miss__picker label{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.safe-to-miss__picker input[type=date]{padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base)}.safe-to-miss__answer{padding:var(--space-3);border-radius:var(--radius-md);margin-top:var(--space-3)}.safe-to-miss--safe{background:var(--color-success-subtle);border:1px solid var(--color-risk-satisfactory)}.safe-to-miss--warning{background:var(--color-warning-subtle);border:1px solid var(--color-risk-warning)}.safe-to-miss--danger{background:var(--color-danger-subtle);border:1px solid var(--color-risk-critical)}.safe-to-miss__verdict{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);margin-bottom:var(--space-1)}.safe-to-miss__explanation{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.safe-to-miss__hint{color:var(--color-text-secondary);font-size:var(--font-size-sm)}.scenario-comparison{padding:var(--space-4)}.scenario-comparison h4{margin-bottom:var(--space-3)}.scenario-comparison__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-3)}.scenario-comparison__card{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:center;background:var(--color-bg-primary)}.scenario-comparison__card--fail{border-color:var(--color-risk-critical);background:var(--color-danger-subtle)}.scenario-comparison__card h5{margin:0 0 var(--space-2) 0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.scenario-comparison__card .stat-card{margin:var(--space-1) 0}.scenario-comparison__auto-fail{margin-top:var(--space-2);padding:var(--space-1) var(--space-2);background:var(--color-risk-critical);color:var(--color-text-inverse);border-radius:var(--radius-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold)}.what-if-panel{padding:var(--space-4)}.what-if-panel h3{margin-bottom:var(--space-3)}.what-if-panel__pace{display:flex;gap:var(--space-4);flex-wrap:wrap;align-items:center}.what-if-panel__pace-warning{width:100%;padding:var(--space-2) var(--space-3);background:var(--color-warning-subtle);border:1px solid var(--color-risk-warning);border-radius:var(--radius-md);color:var(--color-risk-warning);font-size:var(--font-size-sm)}.what-if-panel__backcalc{padding:var(--space-3)}.what-if-panel__backcalc label{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-2)}.what-if-panel__backcalc select{padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md)}.what-if-panel__backcalc-result{padding:var(--space-2) var(--space-3);background:var(--color-bg-secondary);border-radius:var(--radius-md)}.what-if-panel__backcalc-zero{color:var(--color-risk-critical);font-weight:var(--font-weight-bold)}.notification-prefs{display:flex;flex-direction:column;gap:var(--space-3)}.notification-prefs__toggle{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--font-size-sm)}.notification-prefs__section{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--color-border)}.notification-prefs__section h5{margin:0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.notification-prefs__quiet{display:flex;gap:var(--space-3)}.notification-prefs__quiet label{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-sm)}.notification-prefs__quiet input[type=time]{padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.notification-prefs__milestones{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.notification-prefs__milestone-tag{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:var(--color-bg-secondary);border-radius:var(--radius-sm);font-size:var(--font-size-xs)}.notification-prefs__milestone-tag button{background:none;border:none;cursor:pointer;color:var(--color-text-muted);font-size:var(--font-size-base);padding:0}.notification-prefs__add-milestone{display:flex;gap:var(--space-2)}.notification-prefs__add-milestone input{width:80px;padding:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm)}.notification-prefs__add-milestone button{padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-secondary);cursor:pointer;font-size:var(--font-size-sm)}.trend-analytics{padding:var(--space-4)}.trend-analytics h4{margin-bottom:var(--space-3)}.trend-analytics__empty{color:var(--color-text-muted);font-size:var(--font-size-sm)}.trend-analytics__chart-group{display:flex;gap:var(--space-4);flex-wrap:wrap}.trend-analytics__chart{flex:1;min-width:250px}.trend-analytics__chart h5{margin:0 0 var(--space-2) 0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.trend-analytics__chart svg{max-width:100%;height:auto}.trend-analytics__donut-row{display:flex;gap:var(--space-3);align-items:center}.trend-analytics__legend{display:flex;flex-direction:column;gap:var(--space-1)}.trend-analytics__legend-item{display:flex;align-items:center;gap:var(--space-2);font-size:var(--font-size-xs)}.trend-analytics__legend-swatch{width:12px;height:12px;border-radius:2px;flex-shrink:0}.trend-analytics__summary{margin-top:var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-secondary)}.print-report{padding:var(--space-4)}.print-report__actions{margin-bottom:var(--space-3)}.print-report__print-btn{padding:var(--space-2) var(--space-4);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-base)}.print-report__content{max-width:800px}.print-report__header{margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:2px solid var(--color-text-primary)}.print-report__header h2{margin:0 0 var(--space-1) 0}.print-report__course-name{font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);margin:0}.print-report__meta{margin:var(--space-1) 0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.print-report__section{margin-bottom:var(--space-4)}.print-report__section h3{margin:0 0 var(--space-2) 0;font-size:var(--font-size-lg)}.print-report__table{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.print-report__table th,.print-report__table td{padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);text-align:left}.print-report__table th{background:var(--color-bg-secondary);font-weight:var(--font-weight-medium)}.term-summary{padding:var(--space-4)}.term-summary h4{margin-bottom:var(--space-3)}.term-summary__grid{display:flex;gap:var(--space-4);align-items:center;flex-wrap:wrap;margin-bottom:var(--space-3)}.term-summary__gauge{text-align:center}.term-summary__gauge-label{display:block;font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-1)}.term-summary__stats{display:flex;gap:var(--space-4);flex-wrap:wrap}.term-summary__breakdown{margin-bottom:var(--space-3);padding-top:var(--space-2);border-top:1px solid var(--color-border)}.term-summary__breakdown h5{margin:0 0 var(--space-2) 0;font-size:var(--font-size-sm)}.term-summary__breakdown-row{display:flex;gap:var(--space-4);flex-wrap:wrap;font-size:var(--font-size-sm)}.term-summary__penalty{padding:var(--space-2) var(--space-3);background:var(--color-danger-subtle);border-radius:var(--radius-md)}.term-summary__penalty h5{margin:0 0 var(--space-1) 0;color:var(--color-risk-critical)}.term-summary__penalty p{margin:var(--space-1) 0;font-size:var(--font-size-sm)}@media print{.no-print,.header,.course-detail__header,.course-detail .tab-bar,.skip-to-content,.alert-banner-container,.toast-container,.modal-overlay{display:none!important}.print-report__content{max-width:none}.print-report__print-btn{display:none}body,#root{min-height:auto}.course-detail__content{padding:0}}.calendar-planner{padding:var(--space-3)}.calendar-planner h5{margin:0 0 var(--space-2) 0;font-size:var(--font-size-base)}.calendar-planner__actions{display:flex;gap:var(--space-2);align-items:center;margin-bottom:var(--space-3)}.calendar-planner__actions button{padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-secondary);cursor:pointer;font-size:var(--font-size-xs)}.calendar-planner__count{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.calendar-planner__months{display:flex;flex-direction:column;gap:var(--space-3)}.calendar-planner__month h6{margin:0 0 var(--space-1) 0;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.calendar-planner__dates{display:flex;flex-wrap:wrap;gap:var(--space-1)}.calendar-planner__date{padding:var(--space-1) var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-primary);cursor:pointer;font-size:var(--font-size-sm);transition:all var(--transition-fast)}.calendar-planner__date--selected{background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary)}.calendar-planner__empty{color:var(--color-text-muted);font-size:var(--font-size-sm)}.calendar-planner__impact{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border)}.calendar-planner__impact h5{margin:0 0 var(--space-2) 0}.calendar-planner__stats{display:flex;gap:var(--space-4);flex-wrap:wrap}.calendar-sync-panel{padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-3)}.calendar-sync-panel select,.calendar-sync-panel input[type=url]{padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);width:100%}.calendar-sync-panel label{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-sm)}.calendar-sync-panel button{padding:var(--space-2) var(--space-3);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm)}.calendar-sync-panel__toggle{flex-direction:row;align-items:center;gap:var(--space-2)}.calendar-sync-panel__connected{color:var(--color-risk-satisfactory);font-weight:var(--font-weight-bold)}.calendar-sync-panel__status{font-size:var(--font-size-sm);color:var(--color-text-secondary);padding:var(--space-2);background:var(--color-bg-secondary);border-radius:var(--radius-md)}.calendar-sync-panel__ics p{font-size:var(--font-size-sm);margin:0 0 var(--space-2) 0}.lms-connect-panel{padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-3)}.lms-connect-panel select,.lms-connect-panel input[type=url]{padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);width:100%}.lms-connect-panel label{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--font-size-sm)}.lms-connect-panel button{padding:var(--space-2) var(--space-3);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm)}.lms-connect-panel__actions{display:flex;gap:var(--space-2)}.lms-connect-panel__connected{color:var(--color-risk-satisfactory);font-weight:var(--font-weight-bold)}.lms-connect-panel__status{font-size:var(--font-size-sm);color:var(--color-text-secondary);padding:var(--space-2);background:var(--color-bg-secondary);border-radius:var(--radius-md)}.profile-selector{display:flex;flex-direction:column;gap:var(--space-3)}.profile-selector__list{display:flex;flex-direction:column;gap:var(--space-2)}.profile-selector__item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md)}.profile-selector__item--active{border-color:var(--color-primary);background:var(--color-primary-subtle)}.profile-selector__avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--color-text-inverse);font-weight:var(--font-weight-bold);font-size:var(--font-size-sm)}.profile-selector__info{display:flex;flex-direction:column;flex:1}.profile-selector__name{font-weight:var(--font-weight-medium)}.profile-selector__type{font-size:var(--font-size-xs);color:var(--color-text-muted);text-transform:capitalize}.profile-selector__delete{background:none;border:none;cursor:pointer;color:var(--color-text-muted);font-size:var(--font-size-lg)}.profile-selector__create{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.profile-selector__create input{flex:1;padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md)}.profile-selector__create button{padding:var(--space-2) var(--space-3);background:var(--color-primary);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);cursor:pointer}.data-erasure{display:flex;flex-direction:column;gap:var(--space-3)}.data-erasure__warning{padding:var(--space-3);background:var(--color-danger-subtle);border:1px solid var(--color-risk-critical);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.data-erasure__warning ul{margin:var(--space-2) 0;padding-left:var(--space-4)}.data-erasure__warning li{margin:var(--space-1) 0}.data-erasure__proceed{padding:var(--space-2) var(--space-3);background:var(--color-risk-critical);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm)}.data-erasure input[type=text]{width:100%;padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-family-mono);font-size:var(--font-size-base)}.data-erasure__actions{display:flex;gap:var(--space-2);justify-content:flex-end}.data-erasure__erase-btn{padding:var(--space-2) var(--space-3);background:var(--color-risk-critical);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);cursor:pointer}.data-erasure__erase-btn:disabled{opacity:.5;cursor:not-allowed}.data-erasure__done{text-align:center;padding:var(--space-4)}.data-erasure__done p{margin:var(--space-2) 0}.policy-search{display:flex;flex-direction:column;gap:var(--space-3)}.policy-search input[type=search]{padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.policy-search__results{display:flex;flex-direction:column;gap:var(--space-2);max-height:300px;overflow-y:auto}.policy-search__result{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-primary);cursor:pointer;text-align:left;font-size:var(--font-size-sm)}.policy-search__result--selected{border-color:var(--color-primary);background:var(--color-primary-subtle)}.policy-search__desc{font-size:var(--font-size-xs);color:var(--color-text-muted)}.error-boundary{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-6)}.error-boundary__content{max-width:500px;text-align:center;display:flex;flex-direction:column;gap:var(--space-4)}.error-boundary__title{font-size:var(--font-size-xl);color:var(--color-risk-critical)}.error-boundary__message{color:var(--color-text-secondary)}.error-boundary__details{text-align:left;background:var(--color-bg-secondary);border-radius:var(--radius-md);padding:var(--space-3)}.error-boundary__details summary{cursor:pointer;font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.error-boundary__stack{font-size:var(--font-size-xs);white-space:pre-wrap;word-break:break-word;color:var(--color-risk-critical);font-family:var(--font-family-mono)}.error-boundary__actions{display:flex;gap:var(--space-3);justify-content:center}.feedback-widget__overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--space-4)}.feedback-widget__panel{background:var(--color-bg-primary);color:var(--color-text-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:672px;width:100%;max-height:90vh;overflow-y:auto}.feedback-widget__body{padding:var(--space-5)}.feedback-widget__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-5)}.feedback-widget__title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);margin:0}.feedback-widget__field{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-3)}.feedback-widget__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.feedback-widget__priority-row{display:flex;gap:var(--space-2);flex-wrap:wrap}.feedback-widget__actions{display:flex;justify-content:flex-end;gap:var(--space-3);padding-top:var(--space-4);margin-top:var(--space-2);border-top:1px solid var(--color-border)}.feedback-widget__success{text-align:center;padding:var(--space-6) var(--space-4)}.feedback-widget__success-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);margin-bottom:var(--space-2)}.feedback-widget__success-text{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-bottom:var(--space-4)}.feedback-widget__ref{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-bottom:var(--space-4)}.feedback-widget__fab{position:fixed;bottom:var(--space-4);right:var(--space-4);z-index:90;display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;padding:0;border:none;border-radius:var(--radius-full);background:var(--color-primary);color:var(--color-text-inverse);box-shadow:var(--shadow-lg);cursor:pointer;transition:filter var(--transition-fast),transform var(--transition-fast)}.feedback-widget__fab:hover{filter:brightness(1.1);transform:translateY(-1px)}.feedback-widget__fab:focus-visible{outline:3px solid var(--color-border-focus);outline-offset:2px}@media print{.feedback-widget__overlay,.feedback-widget__fab{display:none!important}}.applock-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-4);background:var(--color-bg-secondary);color:var(--color-text-primary)}.applock-card{width:100%;max-width:420px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-3)}.applock-card__icon{font-size:2.5rem;line-height:1;text-align:center}.applock-card__title{margin:0;text-align:center;font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.applock-card__text{margin:0;text-align:center;font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-normal)}.applock-card__hint{margin:0;text-align:center;font-size:var(--font-size-xs);color:var(--color-text-muted)}.applock-card__warning{margin:0;padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-warning-subtle);border:1px solid var(--color-risk-warning);font-size:var(--font-size-sm);color:var(--color-text-primary);line-height:var(--line-height-normal)}.applock-card__error{margin:0;font-size:var(--font-size-xs);color:var(--color-risk-critical)}.applock-card__actions{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-2)}.applock-menu{position:relative;display:inline-flex}.applock-menu__trigger{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;line-height:0;padding:var(--space-1);color:var(--color-text-secondary);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.applock-menu__trigger:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.applock-menu__dropdown{position:absolute;top:calc(100% + var(--space-1));right:0;min-width:180px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:var(--z-dropdown);padding:var(--space-1);display:flex;flex-direction:column}.applock-menu__item{text-align:left;background:none;border:none;cursor:pointer;padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);transition:background var(--transition-fast)}.applock-menu__item:hover{background:var(--color-bg-hover)}.applock-menu__panel{position:absolute;top:calc(100% + var(--space-1));right:0;width:260px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:var(--z-dropdown);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2)}.applock-menu__text{margin:0;font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:var(--line-height-normal)}.applock-menu__error{margin:0;font-size:var(--font-size-xs);color:var(--color-risk-critical)}.applock-menu__message{margin:0;font-size:var(--font-size-xs);color:var(--color-risk-satisfactory)}.applock-menu__panel-actions{display:flex;gap:var(--space-2);justify-content:flex-end}:root{--cc-accent: var(--color-accent, #d2911e);--cc-text: var(--color-text-primary, #232328);--cc-bg: var(--color-bg-primary, #f5f3f0);--cc-warn: var(--color-warning, #e69628);--cc-info: var(--color-info, var(--color-accent, #5082aa));--cc-font-mono: var(--font-family-mono, "Fira Code", "Cascadia Code", "SF Mono", monospace);--cc-font-sans: var(--font-family, "IBM Plex Sans", system-ui, sans-serif);--cc-font-size: 13px;--cc-label-size: 12px;--cc-control-height: 30px;--cc-radius: var(--radius-sm, 5px);--cc-row-gap: 12px;--cc-label-width: 130px;--cc-border-width: 1px}.cc-row{display:flex;align-items:flex-start;gap:var(--cc-row-gap);padding:7px 0;border-bottom:1px solid color-mix(in srgb,var(--cc-text) 6%,transparent)}.cc-label{width:var(--cc-label-width);font-size:var(--cc-label-size);color:color-mix(in srgb,var(--cc-text) 50%,transparent);flex-shrink:0;padding-top:6px;letter-spacing:.01em}.cc-group{flex:1;display:flex;align-items:flex-start;gap:8px}.cc-unit{font-size:var(--cc-label-size);color:color-mix(in srgb,var(--cc-text) 30%,transparent);font-family:var(--cc-font-mono);padding-top:6px;min-width:28px}.cc-scrub-display{display:flex;align-items:center;gap:6px;padding:4px 10px;min-width:88px;height:var(--cc-control-height);border:var(--cc-border-width) solid color-mix(in srgb,var(--cc-text) 12%,transparent);border-radius:var(--cc-radius);background:color-mix(in srgb,var(--cc-text) 4%,transparent);user-select:none;touch-action:none;-webkit-user-select:none;outline:none;transition:background .1s,border-color .1s;cursor:row-resize;box-sizing:border-box}.cc-scrub-display:hover{border-color:color-mix(in srgb,var(--cc-text) 20%,transparent)}.cc-scrub-display:focus-visible{border-color:color-mix(in srgb,var(--cc-accent) 60%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--cc-accent) 15%,transparent)}.cc-scrub-display.cc-dragging{cursor:ns-resize;background:color-mix(in srgb,var(--cc-accent) 12%,transparent);border-color:color-mix(in srgb,var(--cc-accent) 60%,transparent)}.cc-scrub-value{font-family:var(--cc-font-mono);font-size:var(--cc-font-size);font-variant-numeric:tabular-nums;color:color-mix(in srgb,var(--cc-text) 90%,transparent);flex:1;text-align:right}.cc-scrub-placeholder{font-family:var(--cc-font-sans);font-variant-numeric:normal;color:color-mix(in srgb,var(--cc-text) 40%,transparent);font-style:italic}.cc-dragging .cc-scrub-value{color:color-mix(in srgb,var(--cc-accent) 90%,transparent)}.cc-scrub-arrow{font-size:9px;line-height:1;color:color-mix(in srgb,var(--cc-text) 20%,transparent)}.cc-dragging .cc-scrub-arrow{color:color-mix(in srgb,var(--cc-accent) 80%,transparent)}.cc-text-input{font-family:var(--cc-font-mono);font-size:var(--cc-font-size);width:88px;height:var(--cc-control-height);padding:4px 8px;background:color-mix(in srgb,var(--cc-text) 4%,transparent);border:var(--cc-border-width) solid color-mix(in srgb,var(--cc-text) 12%,transparent);border-radius:var(--cc-radius);color:color-mix(in srgb,var(--cc-text) 90%,transparent);outline:none;box-sizing:border-box}.cc-text-input:focus,.cc-text-input.cc-focused{border-color:color-mix(in srgb,var(--cc-accent) 70%,transparent)}.cc-text-input.cc-editing{border-color:color-mix(in srgb,var(--cc-accent) 70%,transparent)}.cc-preview{position:absolute;top:calc(100% + 4px);left:0;background:color-mix(in srgb,var(--cc-bg) 95%,transparent);border:1px solid color-mix(in srgb,var(--cc-accent) 30%,transparent);border-radius:4px;padding:3px 8px;font-size:11px;color:color-mix(in srgb,var(--cc-accent) 90%,transparent);font-family:var(--cc-font-mono);white-space:nowrap;z-index:100;pointer-events:none}.cc-range-row{display:flex;flex-direction:column;align-items:stretch;gap:0;padding:7px 0;border-bottom:1px solid color-mix(in srgb,var(--cc-text) 6%,transparent)}.cc-range-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.cc-range-header .cc-label{padding-top:0;width:auto}.cc-range-track{position:relative;height:44px;display:flex;align-items:center;cursor:pointer;touch-action:none;user-select:none;outline:none;border-radius:4px}.cc-range-track:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--cc-accent) 50%,transparent)}.cc-range-groove{position:absolute;left:0;right:0;height:3px;background:color-mix(in srgb,var(--cc-text) 8%,transparent);border-radius:2px}.cc-range-fill{position:absolute;left:0;height:3px;background:color-mix(in srgb,var(--cc-accent) 75%,transparent);border-radius:2px;transition:width .05s}.cc-range-fill.cc-dragging{transition:none}.cc-range-thumb-area{position:absolute;width:44px;height:44px;display:flex;align-items:center;justify-content:center;transform:translate(-50%)}.cc-range-thumb{width:13px;height:13px;border-radius:50%;background:#fff;border:2px solid color-mix(in srgb,var(--cc-text) 50%,transparent);box-shadow:none;transition:background .1s,box-shadow .1s,border-color .1s}.cc-range-thumb.cc-dragging{background:var(--cc-accent);border-color:var(--cc-accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--cc-accent) 20%,transparent)}.cc-range-minmax{display:flex;justify-content:space-between;font-size:10px;color:color-mix(in srgb,var(--cc-text) 20%,transparent);font-family:var(--cc-font-mono);margin-top:-4px}.cc-toggle-group{display:flex;background:color-mix(in srgb,var(--cc-text) 5%,transparent);border-radius:var(--cc-radius);padding:2px;gap:2px}.cc-toggle-btn{padding:3px 14px;border:none;border-radius:3px;cursor:pointer;font-size:var(--cc-label-size);font-family:var(--cc-font-sans);background:transparent;color:color-mix(in srgb,var(--cc-text) 40%,transparent);transition:background .15s,color .15s;outline:none}.cc-toggle-btn:hover{color:color-mix(in srgb,var(--cc-text) 60%,transparent)}.cc-toggle-btn:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--cc-accent) 30%,transparent)}.cc-toggle-btn.cc-active{background:color-mix(in srgb,var(--cc-accent) 70%,transparent);color:#fff}.cc-toggle-btn.cc-active:hover{background:color-mix(in srgb,var(--cc-accent) 80%,transparent);color:#fff}.cc-select{font-family:var(--cc-font-mono);font-size:var(--cc-font-size);height:var(--cc-control-height);min-width:140px;padding:4px 28px 4px 10px;background-color:color-mix(in srgb,var(--cc-text) 4%,transparent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath d='M2 3.5l3 3 3-3' stroke='rgba(35,35,40,0.35)' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;border:var(--cc-border-width) solid color-mix(in srgb,var(--cc-text) 12%,transparent);border-radius:var(--cc-radius);color:color-mix(in srgb,var(--cc-text) 90%,transparent);appearance:none;-webkit-appearance:none;cursor:pointer;outline:none;box-sizing:border-box}.cc-select:hover{border-color:color-mix(in srgb,var(--cc-text) 20%,transparent)}.cc-select:focus-visible{border-color:color-mix(in srgb,var(--cc-accent) 60%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--cc-accent) 15%,transparent)}.cc-select option{background:var(--cc-bg)}.cc-display-value{font-family:var(--cc-font-mono);font-size:var(--cc-font-size);font-variant-numeric:tabular-nums;color:color-mix(in srgb,var(--cc-info) 90%,transparent);transition:color .12s cubic-bezier(.25,1,.5,1)}.cc-display-value.cc-warn{color:color-mix(in srgb,var(--cc-warn) 95%,transparent)}@keyframes cc-value-flash{0%{color:var(--cc-accent)}to{color:color-mix(in srgb,var(--cc-info) 90%,transparent)}}@keyframes cc-value-flash-warn{0%{color:var(--cc-accent)}to{color:color-mix(in srgb,var(--cc-warn) 95%,transparent)}}.cc-display-value.cc-flash{animation:cc-value-flash .25s cubic-bezier(.25,1,.5,1)}.cc-display-value.cc-warn.cc-flash{animation:cc-value-flash-warn .25s cubic-bezier(.25,1,.5,1)}.cc-display-warn-icon{font-size:11px;color:color-mix(in srgb,var(--cc-warn) 70%,transparent);padding-top:5px}.cc-disabled{opacity:.5}.cc-disabled .cc-disabled{opacity:1}.cc-disabled .cc-scrub-display,.cc-disabled .cc-range-track{cursor:not-allowed}.cc-disabled .cc-scrub-display:hover,.cc-disabled .cc-scrub-display:focus-visible{border-color:color-mix(in srgb,var(--cc-text) 12%,transparent);box-shadow:none;background:color-mix(in srgb,var(--cc-text) 4%,transparent)}@media (prefers-reduced-motion: reduce){.cc-display-value,.cc-display-value.cc-flash,.cc-display-value.cc-warn.cc-flash{transition:none;animation:none}}:root{--cn-accent: var(--color-accent, #15803d);--cn-text: var(--color-text-primary, #212529);--cn-bg: var(--color-bg-primary, #ffffff);--cn-surface: var(--color-bg-secondary, #f8f9fa);--cn-border: var(--color-border, #dee2e6);--cn-font-sans: var(--font-family, "Inter", system-ui, sans-serif);--cn-font-size: 13px;--cn-label-size: 12px;--cn-radius: var(--radius-sm, 4px);--cn-tab-gap: 2px;--cn-transition-speed: .15s;--cn-drawer-width: 380px;--cn-drawer-speed: .2s}.cn-tab-group{position:relative;isolation:isolate}.cn-tab-bar{display:flex;flex-wrap:wrap;gap:var(--cn-tab-gap);border-bottom:2px solid color-mix(in srgb,var(--cn-border) 10%,transparent);position:sticky;top:0;background:var(--cn-bg);padding:8px 0 0;z-index:10}.cn-tab-panel[hidden]{display:none!important}.cn-tab-btn{padding:8px 14px;border:none;background:none;cursor:pointer;font-size:var(--cn-font-size);font-family:var(--cn-font-sans);font-weight:400;color:color-mix(in srgb,var(--cn-text) 45%,transparent);border-bottom:2px solid transparent;margin-bottom:-2px;transition:color var(--cn-transition-speed),border-color var(--cn-transition-speed);white-space:nowrap;outline:none}.cn-tab-btn:hover{color:color-mix(in srgb,var(--cn-text) 70%,transparent)}.cn-tab-btn:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--cn-accent) 30%,transparent);border-radius:var(--cn-radius) var(--cn-radius) 0 0}.cn-tab-btn.cn-active{font-weight:600;color:var(--cn-accent);border-bottom-color:var(--cn-accent)}.cn-tab-panel{padding-top:1em}.cn-tab-panel.cn-panel-active{animation:cn-fade-in var(--cn-transition-speed) ease-out}@keyframes cn-fade-in{0%{opacity:0}to{opacity:1}}.cn-drawer-overlay{position:fixed;inset:0;background:#0006;z-index:900;opacity:0;pointer-events:none;transition:opacity var(--cn-drawer-speed) ease}.cn-drawer-overlay.cn-drawer-open{opacity:1;pointer-events:auto}.cn-drawer{position:fixed;top:0;right:0;bottom:0;width:var(--cn-drawer-width);max-width:90vw;background:var(--cn-surface);border-left:1px solid color-mix(in srgb,var(--cn-border) 10%,transparent);z-index:901;transform:translate(100%);transition:transform var(--cn-drawer-speed) ease;display:flex;flex-direction:column;outline:none}.cn-drawer.cn-drawer-open{transform:translate(0)}.cn-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid color-mix(in srgb,var(--cn-border) 10%,transparent);flex-shrink:0}.cn-drawer-title{margin:0;font-size:16px;font-weight:600;font-family:var(--cn-font-sans);color:color-mix(in srgb,var(--cn-text) 90%,transparent)}.cn-drawer-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:none;cursor:pointer;color:color-mix(in srgb,var(--cn-text) 40%,transparent);border-radius:var(--cn-radius);transition:background var(--cn-transition-speed),color var(--cn-transition-speed)}.cn-drawer-close:hover{background:color-mix(in srgb,var(--cn-text) 8%,transparent);color:color-mix(in srgb,var(--cn-text) 70%,transparent)}.cn-drawer-close:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--cn-accent) 30%,transparent)}.cn-drawer-content{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:16px}:root{--cs-accent: var(--color-accent, #6378ff);--cs-text: var(--color-text-primary, #212529);--cs-bg: var(--color-bg-primary, #ffffff);--cs-surface: var(--color-bg-secondary, #f8f9fa);--cs-border: var(--color-border, #dee2e6);--cs-font-sans: var(--font-family, "Inter", system-ui, sans-serif);--cs-font-size: 13px;--cs-radius: var(--radius-sm, 5px);--cs-item-gap: 2px;--cs-transition-speed: .15s;--cs-sidebar-width: 220px;--cs-sidebar-padding: 8px;--cs-drawer-speed: .2s;--cs-collapse-speed: .2s}.cs-sidebar-nav{display:flex;align-items:stretch;gap:16px;position:relative}.cs-sidebar{flex-shrink:0;position:sticky;height:100%;overflow-y:auto;background:var(--cs-surface);border:1px solid color-mix(in srgb,var(--cs-border) 10%,transparent);border-radius:var(--cs-radius);padding:var(--cs-sidebar-padding);z-index:5;transition:width var(--cs-collapse-speed) ease,padding var(--cs-collapse-speed) ease,border-color var(--cs-collapse-speed) ease}.cs-sidebar-list{display:flex;flex-direction:column;gap:var(--cs-item-gap)}.cs-sidebar-item{display:flex;flex-direction:column}.cs-sidebar-group{padding:14px 12px 4px;font-family:var(--cs-font-sans);font-size:10px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:color-mix(in srgb,var(--cs-text) 40%,transparent);line-height:1;user-select:none}.cs-sidebar-list .cs-sidebar-item:first-child .cs-sidebar-group{padding-top:4px}.cs-sidebar-btn{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border:none;background:none;cursor:pointer;font-size:var(--cs-font-size);font-family:var(--cs-font-sans);font-weight:400;color:color-mix(in srgb,var(--cs-text) 50%,transparent);border-radius:var(--cs-radius);text-align:left;transition:color var(--cs-transition-speed),background var(--cs-transition-speed);outline:none}.cs-sidebar-btn:hover{color:color-mix(in srgb,var(--cs-text) 80%,transparent);background:color-mix(in srgb,var(--cs-text) 5%,transparent)}.cs-sidebar-btn:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--cs-accent) 40%,transparent)}.cs-sidebar-btn.cs-active{font-weight:600;color:var(--cs-accent);background:color-mix(in srgb,var(--cs-accent) 12%,transparent)}.cs-sidebar-icon{display:inline-flex;flex-shrink:0}.cs-sidebar-icon svg{width:16px;height:16px}.cs-sidebar-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.cs-sidebar-badge{flex-shrink:0;margin-left:auto;display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;font-family:var(--cs-font-sans);font-size:10px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1;color:color-mix(in srgb,var(--cs-text) 55%,transparent);background:color-mix(in srgb,var(--cs-text) 8%,transparent);border-radius:9px}.cs-sidebar-btn.cs-active .cs-sidebar-badge{color:var(--cs-accent);background:color-mix(in srgb,var(--cs-accent) 14%,transparent)}.cs-sidebar-content{flex:1;min-width:0}.cs-sidebar-panel.cs-panel-active{animation:cs-fade-in var(--cs-transition-speed) ease-out}@keyframes cs-fade-in{0%{opacity:0}to{opacity:1}}.cs-sidebar-collapse-btn{display:flex;align-items:center;justify-content:center;position:sticky;top:var(--cs-toggle-top, 8px);width:28px;height:28px;flex-shrink:0;align-self:flex-start;border:1px solid color-mix(in srgb,var(--cs-border) 15%,transparent);background:var(--cs-surface);cursor:pointer;color:color-mix(in srgb,var(--cs-text) 40%,transparent);border-radius:var(--cs-radius);transition:background var(--cs-transition-speed),color var(--cs-transition-speed);z-index:6}.cs-sidebar-collapse-btn:hover{background:color-mix(in srgb,var(--cs-text) 6%,transparent);color:color-mix(in srgb,var(--cs-text) 70%,transparent)}.cs-sidebar-collapse-btn:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--cs-accent) 40%,transparent);outline:none}.cs-sidebar-nav[data-cs-collapsed=true] .cs-sidebar{width:0!important;padding:0;border-color:transparent;overflow:hidden}.cs-sidebar-nav[data-cs-collapsed=true] .cs-sidebar-label,.cs-sidebar-nav[data-cs-collapsed=true] .cs-sidebar-badge,.cs-sidebar-nav[data-cs-collapsed=true] .cs-sidebar-group,.cs-sidebar-toggle,.cs-sidebar-overlay{display:none}@media (max-width: 767px){.cs-sidebar-nav{display:block}.cs-sidebar-collapse-btn{display:none}.cs-sidebar-toggle{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid color-mix(in srgb,var(--cs-border) 15%,transparent);border-radius:var(--cs-radius);background:var(--cs-surface);color:color-mix(in srgb,var(--cs-text) 80%,transparent);cursor:pointer;position:sticky;top:var(--cs-toggle-top, 8px);z-index:20}.cs-sidebar-toggle:hover{background:color-mix(in srgb,var(--cs-text) 6%,transparent)}.cs-sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--cs-sidebar-width);max-width:80vw;border-radius:0;border-left:none;transform:translate(-100%);transition:transform var(--cs-drawer-speed) ease;z-index:50;overflow-y:auto;padding-top:16px}.cs-sidebar-nav[data-cs-open=true] .cs-sidebar{transform:translate(0);box-shadow:2px 0 12px #00000040}.cs-sidebar-overlay{display:block;position:fixed;inset:0;background:#0006;z-index:40;opacity:0;pointer-events:none;transition:opacity var(--cs-drawer-speed) ease}.cs-sidebar-nav[data-cs-open=true] .cs-sidebar-overlay{opacity:1;pointer-events:auto}}:root{--about-modal-overlay: rgba(0, 0, 0, .5);--about-modal-bg: #ffffff;--about-modal-panel-bg: #f4f4f5;--about-modal-cta-bg: #efefef;--about-modal-border: #e4e4e7;--about-modal-text-primary: #09090b;--about-modal-text-body: #52525b;--about-modal-text-muted: #a1a1aa;--about-modal-link: #2563eb;--about-modal-link-weight: 400;--about-modal-close-bg: rgba(0, 0, 0, .07);--about-modal-close-color: #71717a;--about-modal-btn-bg: #09090b;--about-modal-btn-text: #ffffff;--about-modal-btn-bg-hover: #27272a;--about-modal-radius: 14px;--about-modal-shadow: 0 2px 8px rgba(0,0,0,.08), 0 14px 48px rgba(0,0,0,.18)}
