:root{--seed-chrome-h: 217;--seed-chrome-s: 78%;--seed-chrome-l: 11%;--seed-canvas-h: 202;--seed-canvas-s: 72%;--seed-canvas-l: 27%;--seed-brand-h: 205;--seed-brand-s: 73%;--seed-brand-l: 44%;--seed-accent-h: 46;--seed-accent-s: 100%;--seed-accent-l: 62%;--seed-ink-h: 202;--seed-ink-s: 60%;--seed-ink-l: 97%;--seed-on-brand-h: 0;--seed-on-brand-s: 0%;--seed-on-brand-l: 100%;--seed-on-accent-h: 0;--seed-on-accent-s: 0%;--seed-on-accent-l: 8%;--seed-fn-s: 90%;--seed-fn-l: 70%;--seed-dept-s: 70%;--seed-dept-l: 62%;--seed-gate-s: 85%;--seed-gate-l: 65%}:root{--_brand-hover: hsl(var(--seed-brand-h) var(--seed-brand-s) calc(var(--seed-brand-l) + 9%));--_brand-glow: hsl(var(--seed-brand-h) var(--seed-brand-s) var(--seed-brand-l) / 38%);--_brand-glow-strong: hsl(var(--seed-brand-h) var(--seed-brand-s) calc(var(--seed-brand-l) + 9%) / 50%);--_brand-wash: hsl(var(--seed-brand-h) var(--seed-brand-s) var(--seed-brand-l) / 28%);--_on-brand: hsl(var(--seed-on-brand-h) var(--seed-on-brand-s) var(--seed-on-brand-l));--_accent-lift: hsl(var(--seed-accent-h) var(--seed-accent-s) calc(var(--seed-accent-l) + 8%));--_accent-deep: hsl(var(--seed-accent-h) var(--seed-accent-s) calc(var(--seed-accent-l) - 23%) / 80%);--_accent-strong: hsl(var(--seed-accent-h) var(--seed-accent-s) var(--seed-accent-l) / 80%);--_accent-glow: hsl(var(--seed-accent-h) var(--seed-accent-s) var(--seed-accent-l) / 70%);--_accent-wash: hsl(var(--seed-accent-h) var(--seed-accent-s) var(--seed-accent-l) / 45%);--_accent-wash-strong: hsl(var(--seed-accent-h) var(--seed-accent-s) var(--seed-accent-l) / 65%);--_accent-ring: hsl(var(--seed-accent-h) var(--seed-accent-s) var(--seed-accent-l) / 13%);--_on-accent: hsl(var(--seed-on-accent-h) var(--seed-on-accent-s) var(--seed-on-accent-l));--_on-accent-soft: hsl(var(--seed-on-accent-h) var(--seed-on-accent-s) var(--seed-on-accent-l) / 65%);--_on-accent-dim: hsl(var(--seed-on-accent-h) var(--seed-on-accent-s) var(--seed-on-accent-l) / 55%);--_hue-prereq: 200;--_hue-coreq: 28;--_hue-or: 280;--_hue-pending: 38;--_hue-done: 145;--_hue-error: 0}:root{--surface-canvas: hsl(var(--seed-canvas-h) var(--seed-canvas-s) var(--seed-canvas-l));--surface-deep: hsl(var(--seed-chrome-h) var(--seed-chrome-s) var(--seed-chrome-l));--surface: hsl(var(--seed-chrome-h) var(--seed-chrome-s) calc(var(--seed-chrome-l) + 5%));--surface-raised: hsl(var(--seed-chrome-h) var(--seed-chrome-s) calc(var(--seed-chrome-l) + 10%));--surface-glass: hsl(var(--seed-chrome-h) var(--seed-chrome-s) var(--seed-chrome-l) / 82%);--scrim-0: hsl(var(--seed-chrome-h) var(--seed-chrome-s) var(--seed-chrome-l) / 0%);--scrim-20: hsl(var(--seed-chrome-h) var(--seed-chrome-s) var(--seed-chrome-l) / 20%);--scrim-40: hsl(var(--seed-chrome-h) var(--seed-chrome-s) var(--seed-chrome-l) / 40%);--scrim-60: hsl(var(--seed-chrome-h) var(--seed-chrome-s) var(--seed-chrome-l) / 60%);--scrim-80: hsl(var(--seed-chrome-h) var(--seed-chrome-s) var(--seed-chrome-l) / 80%);--scrim-95: hsl(var(--seed-chrome-h) var(--seed-chrome-s) var(--seed-chrome-l) / 95%);--overlay-1: hsl(var(--seed-ink-h) var(--seed-ink-s) var(--seed-ink-l) / 5%);--overlay-2: hsl(var(--seed-ink-h) var(--seed-ink-s) var(--seed-ink-l) / 9%);--overlay-3: hsl(var(--seed-ink-h) var(--seed-ink-s) var(--seed-ink-l) / 14%);--line-faint: hsl(var(--seed-canvas-h) 90% 70% / 7%);--line: hsl(var(--seed-canvas-h) 90% 70% / 18%);--line-strong: hsl(var(--seed-canvas-h) 90% 70% / 40%);--text: hsl(var(--seed-ink-h) var(--seed-ink-s) var(--seed-ink-l));--text-dim: hsl(var(--seed-ink-h) var(--seed-ink-s) calc(var(--seed-ink-l) - 12%) / 78%);--text-faint: hsl(var(--seed-ink-h) var(--seed-ink-s) calc(var(--seed-ink-l) - 18%) / 55%);--text-lift: hsl(var(--seed-canvas-h) 100% 75%);--brand: hsl(var(--seed-brand-h) var(--seed-brand-s) var(--seed-brand-l));--accent: hsl(var(--seed-accent-h) var(--seed-accent-s) var(--seed-accent-l));--accent-hair: hsl(var(--seed-accent-h) var(--seed-accent-s) var(--seed-accent-l) / 55%);--accent-soft: hsl(var(--seed-accent-h) var(--seed-accent-s) var(--seed-accent-l) / 30%);--accent-faint: hsl(var(--seed-accent-h) var(--seed-accent-s) var(--seed-accent-l) / 10%);--shadow-header: 0 4px 24px hsl(var(--seed-chrome-h) 80% 6% / 45%);--shadow-menu: 0 10px 36px hsl(var(--seed-chrome-h) 80% 6% / 60%);--shadow-card: 0 8px 48px hsl(var(--seed-chrome-h) 80% 6% / 60%), 0 1px 0 hsl(var(--seed-canvas-h) 90% 75% / 7%) inset, 0 -1px 0 hsl(var(--seed-chrome-h) 80% 3% / 40%) inset;--fn-prereq: hsl(var(--_hue-prereq) var(--seed-fn-s) var(--seed-fn-l) / 85%);--fn-prereq-hi: hsl(var(--_hue-prereq) var(--seed-fn-s) var(--seed-fn-l));--fn-coreq: hsl(var(--_hue-coreq) var(--seed-fn-s) var(--seed-fn-l) / 70%);--fn-coreq-hi: hsl(var(--_hue-coreq) var(--seed-fn-s) var(--seed-fn-l));--fn-or: hsl(var(--_hue-or) var(--seed-fn-s) var(--seed-fn-l) / 70%);--fn-or-hi: hsl(var(--_hue-or) var(--seed-fn-s) var(--seed-fn-l));--fn-done: hsl(var(--_hue-done) var(--seed-fn-s) var(--seed-fn-l) / 88%);--fn-done-glow: hsl(var(--_hue-done) var(--seed-fn-s) var(--seed-fn-l) / 50%);--fn-done-bg: hsl(var(--_hue-done) var(--seed-fn-s) var(--seed-fn-l) / 15%);--fn-done-bg-hover: hsl(var(--_hue-done) var(--seed-fn-s) var(--seed-fn-l) / 24%);--fn-done-bg-active: hsl(var(--_hue-done) var(--seed-fn-s) var(--seed-fn-l) / 30%);--fn-done-line: hsl(var(--_hue-done) var(--seed-fn-s) var(--seed-fn-l) / 30%);--fn-done-line-strong: hsl(var(--_hue-done) var(--seed-fn-s) var(--seed-fn-l) / 60%);--fn-done-fg: hsl(var(--_hue-done) var(--seed-fn-s) var(--seed-fn-l) / 40%);--fn-done-fg-hover: hsl(var(--_hue-done) var(--seed-fn-s) var(--seed-fn-l) / 75%);--fn-done-fg-active: hsl(var(--_hue-done) var(--seed-fn-s) var(--seed-fn-l));--fn-pending: hsl(var(--_hue-pending) var(--seed-fn-s) var(--seed-fn-l));--fn-pending-bg: hsl(var(--_hue-pending) var(--seed-fn-s) var(--seed-fn-l) / 15%);--fn-pending-line: hsl(var(--_hue-pending) var(--seed-fn-s) var(--seed-fn-l) / 35%);--fn-or-text: hsl(var(--_hue-or) var(--seed-fn-s) calc(var(--seed-fn-l) + 12%));--fn-or-bg: hsl(var(--_hue-or) var(--seed-fn-s) var(--seed-fn-l) / 5%);--fn-or-line: hsl(var(--_hue-or) var(--seed-fn-s) var(--seed-fn-l) / 25%);--fn-error: hsl(var(--_hue-error) var(--seed-fn-s) calc(var(--seed-fn-l) + 4%));--fn-error-fg: hsl(var(--_hue-error) var(--seed-fn-s) calc(var(--seed-fn-l) + 8%));--fn-error-bg: hsl(var(--_hue-error) calc(var(--seed-fn-s) - 20%) calc(var(--seed-fn-l) - 20%) / 12%);--fn-error-bg-hover: hsl(var(--_hue-error) calc(var(--seed-fn-s) - 20%) calc(var(--seed-fn-l) - 20%) / 28%);--fn-error-line: hsl(var(--_hue-error) calc(var(--seed-fn-s) - 20%) calc(var(--seed-fn-l) - 15%) / 25%);--fn-error-line-hover: hsl(var(--_hue-error) calc(var(--seed-fn-s) - 20%) calc(var(--seed-fn-l) - 15%) / 70%);--fn-done-solid: hsl(var(--_hue-done) 55% 38%);--fn-done-solid-glow: hsl(var(--_hue-done) 55% 38% / 40%);--fn-error-solid: hsl(var(--_hue-error) 60% 48%);--fn-error-solid-glow: hsl(var(--_hue-error) 60% 48% / 40%);--fn-error-surface: hsl(var(--_hue-error) 45% 16% / 95%);--dept-s: var(--seed-dept-s);--dept-l: var(--seed-dept-l);--gate-s: var(--seed-gate-s);--gate-l: var(--seed-gate-l)}:root{--page-bg: var(--surface-deep);--section-bg: var(--surface);--section-rule: var(--accent-soft);--header-bg: var(--surface-glass);--header-rule: var(--accent-soft);--card-bg: linear-gradient( 145deg, hsl(var(--seed-chrome-h) var(--seed-chrome-s) calc(var(--seed-chrome-l) + 5%) / 90%) 0%, hsl(var(--seed-chrome-h) var(--seed-chrome-s) var(--seed-chrome-l) / 95%) 100% );--card-border: var(--line);--card-border-hover: var(--line-strong);--card-corner-hair: var(--accent-hair);--field-bg: var(--overlay-1);--field-bg-focus: var(--overlay-2);--field-border: var(--line);--field-border-focus: var(--accent-hair);--field-border-hover: var(--line-strong);--focus-ring: var(--_accent-ring);--placeholder: var(--text-faint);--btn-primary-bg: var(--brand);--btn-primary-bg-hover: var(--_brand-hover);--btn-primary-fg: var(--_on-brand);--btn-primary-glow: var(--_brand-glow);--btn-primary-glow-hover: var(--_brand-glow-strong);--btn-ghost-fg: var(--text-dim);--btn-ghost-fg-hover: var(--text);--btn-ghost-border: var(--line);--btn-ghost-border-hover: var(--line-strong);--btn-ghost-bg: var(--overlay-1);--btn-ghost-bg-hover: var(--overlay-2);--menu-bg: var(--section-bg);--menu-border: var(--line);--menu-option-fg: var(--text-dim);--menu-option-fg-hover: var(--text);--menu-option-bg-hover: var(--overlay-2);--menu-option-bg-selected: var(--_brand-wash);--menu-option-marker: var(--accent);--canvas-bg: var(--surface-canvas);--canvas-sheen: hsl(var(--seed-canvas-h) 60% 66% / 20%);--canvas-vignette: hsl(var(--seed-chrome-h) 80% 9% / 50%);--grid-cell-fill: var(--overlay-1);--grid-cell-stroke: hsl(var(--seed-canvas-h) 100% 73% / 55%);--grid-cell-fill-hover: hsl(var(--seed-canvas-h) 100% 73% / 20%);--grid-cell-stroke-hover: hsl(var(--seed-canvas-h) 100% 85% / 90%);--grid-label: var(--text-dim);--node-fill: var(--_accent-wash);--node-fill-active: var(--_accent-wash-strong);--node-fill-ghost: var(--accent-faint);--node-stroke: var(--_accent-lift);--node-stroke-ghost: var(--accent-hair);--node-glow: var(--_accent-glow);--node-fg: var(--_on-accent-soft);--node-fg-strong: var(--_on-accent);--node-status: var(--_accent-strong);--gate-stroke: var(--_accent-deep);--pip-stroke: var(--_on-accent-dim);--pip-fill: var(--_on-accent-soft);--float-bg: linear-gradient( 180deg, hsl(var(--seed-chrome-h) var(--seed-chrome-s) calc(var(--seed-chrome-l) + 6%) / 97%) 0%, hsl(var(--seed-chrome-h) var(--seed-chrome-s) calc(var(--seed-chrome-l) + 1%) / 97%) 100% );--float-filter: drop-shadow(0 0 1px hsl(var(--seed-canvas-h) 90% 70% / 25%)) drop-shadow(0 4px 16px hsl(var(--seed-chrome-h) 80% 6% / 50%));--float-header-bg: linear-gradient( 180deg, hsl(var(--seed-brand-h) var(--seed-brand-s) var(--seed-brand-l) / 22%) 0%, hsl(var(--seed-brand-h) var(--seed-brand-s) var(--seed-brand-l) / 7%) 100% );--float-header-rule: var(--line);--float-title: var(--text-lift);--float-btn-bg: hsl(var(--seed-canvas-h) 90% 70% / 6%);--float-btn-bg-hover: hsl(var(--seed-canvas-h) 90% 70% / 15%);--float-btn-border: var(--line);--float-btn-border-hover: var(--line-strong);--float-btn-fg: var(--text-dim);--float-btn-fg-hover: var(--text);--float-grip: hsl(var(--seed-canvas-h) 90% 70% / 35%);--float-row-marker: var(--line-strong);--float-row-fg: var(--text-dim);--float-row-fg-hover: var(--text);--float-swatch-border: var(--overlay-3);--tooltip-bg: var(--float-bg);--tooltip-title: var(--accent);--rail-bg: var(--surface);--rail-border: var(--line-strong);--chip-bg: var(--overlay-2);--chip-border: var(--line);--chip-fg: var(--text-dim);--row-hover: hsl(var(--seed-canvas-h) 90% 70% / 10%);--toast-fg: var(--_on-brand)}:root{--chamfer-card: 28px;--chamfer-panel: 20px;--chamfer-float: 12px;--chamfer-btn: 14px;--chamfer-btn-hover: 18px;--chamfer-btn-sm: 10px;--chamfer-btn-sm-hover: 13px;--clip-card: polygon( 0 0, calc(100% - var(--chamfer-card)) 0, 100% var(--chamfer-card), 100% 100%, var(--chamfer-card) 100%, 0 calc(100% - var(--chamfer-card)) );--clip-panel: polygon( 0 0, calc(100% - var(--chamfer-panel)) 0, 100% var(--chamfer-panel), 100% 100%, var(--chamfer-panel) 100%, 0 calc(100% - var(--chamfer-panel)) );--clip-float: polygon( 0 0, calc(100% - var(--chamfer-float)) 0, 100% var(--chamfer-float), 100% 100%, var(--chamfer-float) 100%, 0 calc(100% - var(--chamfer-float)) );--clip-btn: polygon( 0 0, calc(100% - var(--chamfer-btn)) 0, 100% var(--chamfer-btn), 100% 100%, var(--chamfer-btn) 100%, 0 calc(100% - var(--chamfer-btn)) );--clip-btn-hover: polygon( 0 0, calc(100% - var(--chamfer-btn-hover)) 0, 100% var(--chamfer-btn-hover), 100% 100%, var(--chamfer-btn-hover) 100%, 0 calc(100% - var(--chamfer-btn-hover)) );--clip-btn-sm: polygon( 0 0, calc(100% - var(--chamfer-btn-sm)) 0, 100% var(--chamfer-btn-sm), 100% 100%, var(--chamfer-btn-sm) 100%, 0 calc(100% - var(--chamfer-btn-sm)) );--clip-btn-sm-hover: polygon( 0 0, calc(100% - var(--chamfer-btn-sm-hover)) 0, 100% var(--chamfer-btn-sm-hover), 100% 100%, var(--chamfer-btn-sm-hover) 100%, 0 calc(100% - var(--chamfer-btn-sm-hover)) );--radius-card: 0;--radius-btn: 0;--radius-field: 4px;--radius-menu: 6px;--radius-sm: 2px;--radius-scrollbar: 8px;--hex-clip: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%)}:root{--font-display: "Palatino Linotype", "Palatino", "Book Antiqua", georgia, serif;--font-ui: -apple-system, blinkmacsystemfont, "Segoe UI", sans-serif}:root{--header-h: 80px;--float-offset: 16px}@media(max-width:768px){:root{--header-h: 60px}}[data-theme=ucla]{--seed-chrome-h: 217;--seed-chrome-s: 78%;--seed-chrome-l: 11%;--seed-canvas-h: 202;--seed-canvas-s: 72%;--seed-canvas-l: 27%;--seed-brand-h: 205;--seed-brand-s: 73%;--seed-brand-l: 44%;--seed-accent-h: 46;--seed-accent-s: 100%;--seed-accent-l: 62%;--seed-ink-h: 202;--seed-ink-s: 60%;--seed-ink-l: 97%;--seed-on-brand-h: 0;--seed-on-brand-s: 0%;--seed-on-brand-l: 100%;--seed-on-accent-h: 0;--seed-on-accent-s: 0%;--seed-on-accent-l: 8%}[data-theme=usc]{--seed-chrome-h: 350;--seed-chrome-s: 55%;--seed-chrome-l: 10%;--seed-canvas-h: 352;--seed-canvas-s: 48%;--seed-canvas-l: 26%;--seed-brand-h: 352;--seed-brand-s: 68%;--seed-brand-l: 40%;--seed-accent-h: 44;--seed-accent-s: 92%;--seed-accent-l: 58%;--seed-ink-h: 20;--seed-ink-s: 30%;--seed-ink-l: 97%;--seed-on-brand-h: 0;--seed-on-brand-s: 0%;--seed-on-brand-l: 100%;--seed-on-accent-h: 30;--seed-on-accent-s: 40%;--seed-on-accent-l: 8%;--seed-fn-l: 76%}[data-theme=berkeley]{--seed-chrome-h: 213;--seed-chrome-s: 85%;--seed-chrome-l: 12%;--seed-canvas-h: 208;--seed-canvas-s: 60%;--seed-canvas-l: 28%;--seed-brand-h: 212;--seed-brand-s: 70%;--seed-brand-l: 40%;--seed-accent-h: 41;--seed-accent-s: 100%;--seed-accent-l: 53%;--seed-ink-h: 208;--seed-ink-s: 55%;--seed-ink-l: 97%;--seed-on-brand-h: 0;--seed-on-brand-s: 0%;--seed-on-brand-l: 100%;--seed-on-accent-h: 40;--seed-on-accent-s: 30%;--seed-on-accent-l: 8%}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background-color:var(--page-bg);color:var(--text);font-family:var(--font-ui)}:root{color-scheme:dark}.footer{display:flex;align-items:center;justify-content:space-between;width:100%;box-sizing:border-box;padding:20px 24px;background-color:var(--section-bg);border-top:1px solid var(--section-rule);font-family:var(--font-ui)}.footer .footer-title{display:block;margin-bottom:4px;font-family:var(--font-display);font-size:22px;font-weight:700;letter-spacing:-.01em;color:var(--text)}.footer .footer-tagline{display:block;font-size:12px;color:var(--text-dim)}.footer .right-section{display:flex;flex-shrink:0;gap:20px}.footer .footer-link{font-size:14px;text-decoration:none;color:var(--text-faint);transition:color .15s ease}.footer .footer-link:hover{color:var(--text-lift)}@media(max-width:768px){.footer{flex-direction:column;text-align:center;gap:20px}}.header{position:fixed;top:0;left:0;right:0;z-index:1000;height:var(--header-h);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 20px;background:var(--header-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:var(--text);font-family:var(--font-ui);border-bottom:1px solid var(--header-rule);box-shadow:var(--shadow-header)}.header .left-section{flex-shrink:0;display:flex;align-items:center}.header .header-link{display:inline-flex;align-items:center;padding:6px;text-decoration:none;color:var(--text);border-radius:var(--radius-sm);transition:opacity .15s ease}.header .header-link:hover{opacity:.8}.header .logo{display:block;height:44px;width:44px}.header .middle-section{flex:1;min-width:0;max-width:850px;margin:0 10px;display:flex}.header .right-section{flex-shrink:0;display:flex;align-items:center;gap:10px}.search-section{display:flex;gap:10px}.elective-search{position:relative;flex:1;min-width:0}.elective-search .react-select__control{width:100%}.header .react-select__control{min-width:220px;min-height:38px;font-size:13px;color:var(--text);background:var(--field-bg);border:1px solid var(--field-border);border-radius:var(--radius-field);box-shadow:none;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.header .react-select__value-container{padding:0 12px}.header .react-select__control:hover{border-color:var(--field-border-hover)}.header .react-select__control--is-focused{background:var(--field-bg-focus);border-color:var(--field-border-focus);box-shadow:0 0 0 3px var(--focus-ring)}.header .react-select__control--is-disabled{background:var(--overlay-1);border-color:var(--line-faint)}.header .react-select__placeholder{color:var(--placeholder)}.header .react-select__single-value{font-size:14px;color:var(--text)}.header .react-select__input-container,.header .react-select__input{color:var(--text)}.header .react-select__indicator-separator{background:var(--line)}.header .react-select__dropdown-indicator,.header .react-select__clear-indicator{color:var(--text-faint)}.header .react-select__dropdown-indicator:hover,.header .react-select__clear-indicator:hover{color:var(--text-lift)}.header .react-select__menu{min-width:100%;width:auto;margin-top:6px;padding:4px 0;overflow:hidden;font-size:13px;background:var(--menu-bg);border:1px solid var(--menu-border);border-radius:var(--radius-menu);box-shadow:var(--shadow-menu)}.header .react-select__menu-list{padding:0}.header .react-select__option{position:relative;padding:9px 14px;cursor:pointer;color:var(--menu-option-fg);background:transparent;border-radius:0}.header .react-select__option--is-focused{color:var(--menu-option-fg-hover);background:var(--menu-option-bg-hover)}.header .react-select__option--is-focused:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--menu-option-marker)}.header .react-select__option--is-selected{color:var(--text);background:var(--menu-option-bg-selected)}.header .react-select__no-options-message,.header .react-select__loading-message{font-size:13px;color:var(--text-faint)}.header-btn{height:36px;display:inline-flex;align-items:center;padding:0 18px;font-family:var(--font-ui);font-size:14px;font-weight:600;text-decoration:none;white-space:nowrap;cursor:pointer}.header-btn-ghost{color:var(--btn-ghost-fg);background:transparent;border:1px solid var(--btn-ghost-border);border-radius:var(--radius-btn);transition:color .15s ease,border-color .15s ease,background .15s ease}.header-btn-ghost:hover{color:var(--btn-ghost-fg-hover);background:var(--btn-ghost-bg-hover);border-color:var(--btn-ghost-border-hover)}.header-btn-primary{color:var(--btn-primary-fg);background:var(--btn-primary-bg);border:none;border-radius:var(--radius-btn);clip-path:var(--clip-btn-sm);filter:drop-shadow(0 3px 12px var(--btn-primary-glow));transition:background .2s ease,filter .2s ease,clip-path .2s ease}.header-btn-primary:hover{background:var(--btn-primary-bg-hover);clip-path:var(--clip-btn-sm-hover);filter:drop-shadow(0 5px 18px var(--btn-primary-glow-hover))}@media(max-width:1024px){.header .react-select__control{min-width:170px}}@media(max-width:768px){.header{padding:0 12px;gap:8px}.header .logo{height:34px;width:34px}.search-section,.elective-search{display:none}.header-btn{height:32px;padding:0 13px;font-size:13px}}.maintenance-banner{position:fixed;top:var(--header-h);left:0;right:0;display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 20px;font-size:14px;font-weight:500;color:var(--fn-error);background-color:var(--fn-error-surface);border-bottom:1px solid var(--fn-error-line)}.maintenance-banner__icon{flex-shrink:0;font-size:16px}.maintenance-banner__message{flex:1;text-align:center}.maintenance-banner__close{flex-shrink:0;padding:2px 6px;background:none;border:none;border-radius:var(--radius-field);color:var(--fn-error);font-size:14px;line-height:1;opacity:.6;cursor:pointer;transition:opacity .15s ease,background .15s ease}.maintenance-banner__close:hover{opacity:1;background:var(--fn-error-bg)}@media(max-width:768px){.maintenance-banner{font-size:13px;padding:8px 12px}}.login-page{position:relative;display:flex;justify-content:center;align-items:center;min-height:100vh;min-height:100svh}.background-layer{position:absolute;inset:0;z-index:0}.login-form{position:relative;z-index:1;width:min(520px,calc(100vw - 32px));padding:clamp(28px,6vw,56px) clamp(24px,6vw,56px) clamp(24px,4vw,44px);display:flex;flex-direction:column;background:var(--card-bg);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border:1px solid var(--card-border);box-shadow:var(--shadow-card);border-radius:var(--radius-card);clip-path:var(--clip-card);font-family:var(--font-ui);animation:form-appear .4s cubic-bezier(.22,1,.36,1) both}.login-form:before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(135deg,transparent calc(100% - var(--chamfer-card) - 1px),var(--card-corner-hair) calc(100% - var(--chamfer-card) - 1px),var(--card-corner-hair) calc(100% - var(--chamfer-card) + 1px),transparent calc(100% - var(--chamfer-card) + 1px)),linear-gradient(315deg,transparent calc(100% - var(--chamfer-card) - 1px),var(--accent-soft) calc(100% - var(--chamfer-card) - 1px),var(--accent-soft) calc(100% - var(--chamfer-card) + 1px),transparent calc(100% - var(--chamfer-card) + 1px))}.login-form>*{position:relative;z-index:1}@keyframes form-appear{0%{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){.login-form{animation:none}}.login-form h1{margin:0 0 6px;font-family:var(--font-display);font-size:2rem;font-weight:700;letter-spacing:-.02em;color:var(--text)}.login-form .auth-subtitle{margin-bottom:28px;font-size:.82rem;letter-spacing:.01em;color:var(--text-faint)}.auth-field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.auth-field-header{display:flex;justify-content:space-between;align-items:center}.auth-label{font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.auth-forgot{font-size:.75rem;text-decoration:none;color:var(--text-dim);transition:color .15s ease}.auth-forgot:hover{color:var(--text-lift)}.login-input{box-sizing:border-box;width:100%;min-height:44px;padding:0 14px;font-family:var(--font-ui);font-size:1rem;outline:none;color:var(--text);background:var(--field-bg);border:1px solid var(--field-border);border-radius:var(--radius-field);transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}.login-input::placeholder{color:var(--placeholder)}.login-input:focus{background:var(--field-bg-focus);border-color:var(--field-border-focus);box-shadow:0 0 0 3px var(--focus-ring)}.auth-divider{display:flex;align-items:center;gap:12px;margin:8px 0 16px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--line)}.auth-divider span{flex-shrink:0;font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint)}.login-button{width:100%;min-height:44px;border:none;font-family:var(--font-ui);font-size:.88rem;font-weight:600;letter-spacing:.02em;cursor:pointer;margin-bottom:10px}.login-button:not(.google-btn){background:var(--btn-primary-bg);color:var(--btn-primary-fg);border-radius:var(--radius-btn);clip-path:var(--clip-btn);filter:drop-shadow(0 3px 14px var(--btn-primary-glow));transition:background .2s ease,transform .12s ease,filter .2s ease,clip-path .2s ease}.login-button:not(.google-btn):hover:not(:disabled){background:var(--btn-primary-bg-hover);transform:translateY(-1px);clip-path:var(--clip-btn-hover);filter:drop-shadow(0 6px 22px var(--btn-primary-glow-hover))}.login-button:not(.google-btn):active:not(:disabled){transform:translateY(0)}.login-button:not(.google-btn):disabled{opacity:.55;cursor:not-allowed;filter:none}.login-button.google-btn{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:0;color:var(--btn-ghost-fg);background:var(--btn-ghost-bg);border:1px solid var(--btn-ghost-border);border-radius:var(--radius-field);transition:background .2s ease,border-color .2s ease,transform .12s ease}.login-button.google-btn:hover{color:var(--btn-ghost-fg-hover);background:var(--btn-ghost-bg-hover);border-color:var(--btn-ghost-border-hover);transform:translateY(-1px)}.google-icon{width:18px;height:18px;flex-shrink:0;display:block}.login-error{margin-bottom:6px;padding:8px 12px;text-align:center;font-size:.78rem;color:var(--fn-error);background:var(--fn-error-bg);border:1px solid var(--fn-error-line);border-radius:var(--radius-field)}.auth-footer{margin-top:20px;text-align:center;font-size:.8rem;color:var(--text-faint)}.auth-footer a{font-weight:600;text-decoration:none;color:var(--text-lift);transition:color .15s ease}.auth-footer a:hover{text-decoration:underline}.auth-hex-watermark{position:absolute;top:0;right:0;width:200px;height:200px;overflow:hidden;pointer-events:none}.watermark-hex{fill:none}.watermark-hex--large,.watermark-hex--medium{stroke:var(--line-faint)}.watermark-hex--large{stroke-width:1.5}.watermark-hex--medium{stroke-width:1.2}.watermark-hex--small{stroke:var(--accent-faint);stroke-width:1}@media(max-width:480px){.login-page{align-items:flex-start;padding-top:calc(var(--header-h) + 16px)}.login-form h1{font-size:1.6rem}.login-form .auth-subtitle{margin-bottom:20px}}.node-detail-panel{position:fixed;top:var(--header-h);right:0;width:33.33%;height:calc(100svh - var(--header-h));z-index:20;padding:24px;overflow-y:auto;overscroll-behavior:contain;background:var(--rail-bg);border-left:1px solid var(--rail-border);color:var(--text);font-family:var(--font-ui)}.node-detail-close{position:absolute;top:12px;right:16px;padding:4px 8px;background:none;border:none;color:var(--text-dim);font-size:24px;line-height:1;cursor:pointer}.node-detail-close:hover{color:var(--text)}.node-detail-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 8px}.node-detail-title{font-size:22px;font-weight:600;color:var(--accent)}.node-detail-id{margin:0 0 16px;font-size:13px;color:var(--text-faint)}.node-detail-desc{margin:0 0 20px;font-size:15px;line-height:1.5;color:var(--text-dim)}.node-detail-prereqs h4,.node-detail-comments h4{margin:0 0 8px;font-size:14px;font-weight:600;color:var(--text)}.node-detail-prereqs ul{margin:0;padding-left:20px}.node-detail-prereqs li{margin-bottom:4px;font-size:14px}.detail-corequisites{margin-top:12px}.node-detail-none{margin:0;font-size:14px;font-style:italic;color:var(--text-faint)}.node-detail-actions{flex-shrink:0;display:flex;align-items:center;gap:8px}.node-detail-complete{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:var(--radius-field);font-size:13px;font-weight:600;cursor:pointer;background:var(--fn-done-bg);border:1px solid var(--fn-done-line);color:var(--fn-done-fg-hover);transition:background .15s ease,border-color .15s ease}.node-detail-complete:hover{background:var(--fn-done-bg-hover);border-color:var(--fn-done-line-strong)}.node-detail-complete-active{background:var(--fn-done-bg-active);border-color:var(--fn-done-line-strong);color:var(--fn-done-fg-active)}.node-detail-delete{flex-shrink:0;padding:5px 12px;border-radius:var(--radius-field);font-size:13px;font-weight:600;cursor:pointer;background:var(--fn-error-bg);border:1px solid var(--fn-error-line);color:var(--fn-error-fg);transition:background .15s ease,border-color .15s ease}.node-detail-delete:hover{background:var(--fn-error-bg-hover);border-color:var(--fn-error-line-hover)}.node-detail-header-group{display:flex;align-items:flex-start;gap:.6rem}.node-detail-header-group .node-detail-actions{margin-top:20px}.req-k-badge{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;padding:.2rem .55rem;border-radius:var(--radius-field);background:var(--overlay-2);color:var(--text-lift);font-size:.8rem;font-weight:600;white-space:nowrap}.node-detail-group-heading{flex:1;min-width:0}.node-detail-kind-label{margin:0;font-size:.7rem;letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint)}.node-detail-title-group{margin:.1rem 0 0;font-weight:500}.node-detail-group-status{display:flex;align-items:center;gap:8px;margin:.25rem 0 .75rem;font-size:.85rem;color:var(--text-dim)}.node-detail-group-status.req-fulfilled,.node-detail-group-status.req-fulfilled>span:first-child{color:var(--fn-done-fg-active)}.node-detail-or-desc{margin-bottom:8px;font-size:.8rem;color:var(--text-dim)}.node-detail-or-prereqs{margin-top:16px}.node-detail-or-prereqs h4{margin:0 0 4px;font-size:14px;font-weight:600;color:var(--fn-or-text)}.node-detail-or-prereqs-desc{margin:0 0 8px;font-size:.8rem;color:var(--fn-or-text)}.node-detail-or-prereq-choice{margin-bottom:8px;padding:6px 10px;border:1px solid var(--fn-or-line);border-radius:var(--radius-field);background:var(--fn-or-bg)}.node-detail-or-prereq-choice .req-member{border-color:var(--fn-or-line)}.node-detail-or-prereq-choice .req-member:hover{background:var(--fn-or-bg)}.node-detail-or-prereq-choice .req-member.req-viewed{border-color:var(--accent-hair)}.node-detail-comments{display:flex;flex-direction:column;margin-top:24px;padding-top:16px;border-top:1px solid var(--line)}.node-detail-comment{margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--line-faint)}.node-detail-comment:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.node-detail-comment-meta{display:flex;align-items:center;gap:10px;margin-bottom:4px}.node-detail-comment-author{font-size:13px;font-weight:600;color:var(--text)}.node-detail-comment-time{font-size:12px;color:var(--text-faint)}.node-detail-comment-text{margin:0;font-size:13px;line-height:1.5;color:var(--text-dim)}.node-detail-comment-input{display:flex;flex-direction:column;gap:8px;margin-top:12px}.node-detail-comment-textarea{box-sizing:border-box;width:100%;padding:8px 12px;resize:vertical;outline:none;font-family:inherit;font-size:13px;color:var(--text);background:var(--field-bg);border:1px solid var(--field-border);border-radius:var(--radius-field);transition:border-color .15s ease,box-shadow .15s ease}.node-detail-comment-textarea::placeholder{color:var(--placeholder)}.node-detail-comment-textarea:focus{border-color:var(--field-border-focus);box-shadow:0 0 0 3px var(--focus-ring)}.node-detail-comment-submit{align-self:flex-end;padding:6px 18px;border-radius:var(--radius-field);font-size:13px;font-weight:600;cursor:pointer;background:var(--btn-primary-bg);border:none;color:var(--btn-primary-fg);transition:background .15s ease}.node-detail-comment-submit:hover:not(:disabled){background:var(--btn-primary-bg-hover)}.node-detail-comment-submit:disabled{opacity:.4;cursor:default}.node-detail-comment-error{margin:4px 0 0;padding:8px 12px;font-size:.78rem;line-height:1.45;color:var(--fn-error);background:var(--fn-error-bg);border:1px solid var(--fn-error-line);border-radius:var(--radius-field)}.node-detail-comment-pagination{display:flex;align-items:center;justify-content:center;gap:4px;margin-top:16px;padding-top:12px;border-top:1px solid var(--line-faint)}.node-detail-comment-pagination button{min-width:28px;height:28px;padding:0 6px;border-radius:var(--radius-field);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;background:var(--overlay-1);border:1px solid var(--line);color:var(--text-dim);transition:background .15s ease,border-color .15s ease,color .15s ease}.node-detail-comment-pagination button:hover:not(:disabled){background:var(--row-hover);border-color:var(--line-strong);color:var(--text)}.node-detail-comment-pagination button.active{background:var(--menu-option-bg-selected);border-color:var(--line-strong);color:var(--text);font-weight:600}.node-detail-comment-pagination button:disabled{opacity:.25;cursor:default}.req-group-members{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px}.req-group-members .req-group-members{margin:8px 0 2px 10px;padding-left:12px;border-left:1px solid var(--line)}.node-detail-panel input[type=checkbox],.node-detail-panel input[type=radio]{accent-color:var(--brand);flex-shrink:0;cursor:pointer}.req-locked{opacity:.45}.req-locked input{cursor:default}.req-subgroup{padding:6px 10px;background:var(--overlay-1);border:1px solid var(--line);border-radius:var(--radius-field)}.req-subgroup-header{display:flex;align-items:center;gap:8px}.req-subgroup-toggle{flex:1;display:flex;align-items:center;gap:6px;padding:0;text-align:left;background:none;border:none;color:inherit;font:inherit;font-size:.85rem;cursor:pointer}.req-caret{width:12px;color:var(--text-dim)}.req-member{display:flex;align-items:center;font-size:.85rem;background:var(--overlay-1);border:1px solid transparent;border-radius:var(--radius-field);transition:background .15s ease,border-color .15s ease}.req-member:hover{background:var(--row-hover)}.req-member.req-viewed{border-color:var(--accent-hair)}.req-member.req-viewed .req-course-text strong{color:var(--accent)}.req-member-label{flex:1;display:flex;align-items:center;gap:8px;min-width:0;padding:7px 4px 7px 10px;cursor:pointer}.req-locked .req-member-label{opacity:.45;cursor:default}.req-course-text{flex:1}.req-info-btn{flex-shrink:0;align-self:stretch;display:flex;align-items:center;justify-content:center;padding:0 10px;background:none;border:none;border-left:1px solid var(--line);color:var(--text-faint);cursor:pointer;transition:color .15s ease,background .15s ease}.req-info-btn:hover{color:var(--accent);background:var(--accent-faint)}.req-info-btn svg{flex-shrink:0;width:15px;height:15px}.req-member-row{flex:1;min-width:0;display:flex;align-items:center;justify-content:space-between}.req-info-wrap{position:relative;display:inline-flex;align-self:stretch}.req-info-tooltip{position:fixed;z-index:30;box-sizing:border-box;width:var(--req-info-tooltip-width, 240px);padding:.5rem .7rem;font-size:.8rem;overflow-y:auto;pointer-events:none;background:var(--tooltip-bg);clip-path:var(--clip-float);filter:var(--float-filter)}.req-info-tooltip-pinned{pointer-events:auto}.req-info-tooltip-code{margin:0 0 .15rem;font-weight:600;color:var(--text)}.req-info-tooltip-desc{margin:0;line-height:1.45;color:var(--text-dim)}.req-status{display:inline-flex;align-items:center;gap:4px;flex-shrink:0}.req-status-count{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:var(--radius-field);white-space:nowrap;font-size:.72rem;background:var(--fn-pending-bg);border:1px solid var(--fn-pending-line);color:var(--fn-pending)}.req-status.req-fulfilled .req-status-count{background:var(--fn-done-bg);border-color:var(--fn-done-line-strong);color:var(--fn-done-fg-active)}.req-status-limit{padding:2px 7px;border-radius:var(--radius-field);white-space:nowrap;font-size:.68rem;background:var(--chip-bg);border:1px solid var(--chip-border);color:var(--chip-fg)}.req-or-node{margin-right:2px;opacity:.7}.req-or-summary{font-style:italic;color:var(--text-faint)}.req-or-switch{flex-shrink:0}.req-or-picker{max-width:340px;margin:6px 0 2px 26px;padding:6px;background:var(--overlay-1);border:1px solid var(--line);border-radius:var(--radius-field)}.req-or-picker-list{display:flex;flex-direction:column;gap:2px;max-height:180px;overflow-y:auto}.req-or-picker-item{display:flex;gap:6px;align-items:baseline;padding:4px 8px;text-align:left;background:transparent;border:1px solid transparent;border-radius:var(--radius-field);color:inherit;font:inherit;cursor:pointer}.req-or-picker-item:hover{background:var(--row-hover)}.req-or-picker-item-active{background:var(--menu-option-bg-selected);border-color:var(--line-strong)}.req-or-picker-code{flex-shrink:0;font-size:.78rem;font-weight:600}.req-or-picker-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;color:var(--text-faint)}.node-detail-panel,.req-or-picker-list,.req-info-tooltip{scrollbar-width:thin;scrollbar-color:var(--line-strong) var(--overlay-1)}.node-detail-panel::-webkit-scrollbar,.req-or-picker-list::-webkit-scrollbar,.req-info-tooltip::-webkit-scrollbar{width:8px}.node-detail-panel::-webkit-scrollbar-track,.req-or-picker-list::-webkit-scrollbar-track,.req-info-tooltip::-webkit-scrollbar-track{background:var(--overlay-1);border-radius:var(--radius-scrollbar)}.node-detail-panel::-webkit-scrollbar-thumb,.req-or-picker-list::-webkit-scrollbar-thumb,.req-info-tooltip::-webkit-scrollbar-thumb{background-color:var(--line-strong);border:2px solid transparent;border-radius:var(--radius-scrollbar);background-clip:content-box}.node-detail-panel::-webkit-scrollbar-thumb:hover,.req-or-picker-list::-webkit-scrollbar-thumb:hover,.req-info-tooltip::-webkit-scrollbar-thumb:hover{background-color:var(--grid-cell-stroke);background-clip:content-box}.node-info-card{position:absolute;z-index:10;min-width:200px;max-width:300px;padding:12px 16px;pointer-events:none;background:var(--tooltip-bg);clip-path:var(--clip-float);filter:var(--float-filter);font-family:var(--font-ui);font-size:14px;color:var(--text)}.node-info-title{margin:0 0 6px;font-size:16px;font-weight:600;color:var(--tooltip-title)}.node-info-desc{margin:0;line-height:1.45;color:var(--text-dim)}.hex-grid-wrapper{position:relative;width:100%;height:100%;min-height:100svh;overflow:hidden;cursor:grab;-webkit-user-select:none;user-select:none;background-color:var(--canvas-bg)}.hex-grid-wrapper:active{cursor:grabbing}.hex-grid-wrapper:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(90% 60% at 50% -5%,var(--canvas-sheen) 0%,transparent 55%),radial-gradient(135% 135% at 50% 45%,transparent 60%,var(--canvas-vignette) 100%)}.hex-grid-wrapper>svg,.grid{display:block;width:100%;height:100%}.hexagon-group{cursor:pointer}.hexagon polygon{fill:var(--grid-cell-fill);stroke:var(--grid-cell-stroke);stroke-width:.4;transition:fill .15s ease,stroke .15s ease}.hexagon-group:hover .hexagon polygon{fill:var(--grid-cell-fill-hover);stroke:var(--grid-cell-stroke-hover)}.hexagon text{fill:var(--grid-label);font-size:2.2px;font-family:inherit;text-anchor:middle;dominant-baseline:central;pointer-events:none;-webkit-user-select:none;user-select:none}.hex-edge{stroke:var(--fn-prereq);stroke-width:.8;pointer-events:none}.hex-edge-highlighted{stroke:var(--fn-prereq-hi)}.hex-edge-coreq{stroke:var(--fn-coreq);stroke-width:.6}.hex-edge-coreq.hex-edge-highlighted{stroke:var(--fn-coreq-hi);stroke-width:.9}.hex-edge-or{stroke:var(--fn-or)}.hex-edge-or.hex-edge-highlighted{stroke:var(--fn-or-hi)}.hex-edge-completed{stroke:var(--fn-done)}.hex-node,.hex-edge{transition:opacity .15s ease}.hex-node-dimmed{opacity:.2}.hex-edge-dimmed{opacity:.12}.hex-node polygon{fill:var(--node-fill);stroke:var(--node-stroke);stroke-width:.7;cursor:grab;transition:fill .15s ease,stroke .15s ease}.hex-node:active polygon{cursor:grabbing}.hexagon .hex-node-title{fill:var(--node-fg);font-size:2px;font-weight:700;text-anchor:middle;dominant-baseline:central;pointer-events:none}.hex-node-status{fill:var(--node-status);font-size:2px;text-anchor:middle;dominant-baseline:central;pointer-events:none}.hex-node-selected polygon{fill:var(--node-fill-active);stroke:var(--node-stroke);stroke-width:1.2;filter:drop-shadow(0 0 3px var(--node-glow));transition:fill .15s ease,stroke .15s ease,stroke-width .15s ease,filter .2s ease}.hex-node-preview polygon{fill:var(--node-fill-ghost);stroke:var(--node-stroke-ghost);stroke-width:.5;stroke-dasharray:2 1.2}.hex-node-swap-target polygon{opacity:.7;stroke:var(--accent);stroke-width:1.5;filter:drop-shadow(0 0 3px var(--accent-hair))}.hex-node-gate polygon{stroke:var(--gate-stroke);stroke-width:1.2;stroke-dasharray:4 2}.hexagon .hex-gate-symbol{fill:var(--node-fg-strong);font-size:4px;font-weight:900;text-anchor:middle;dominant-baseline:central}.hex-node-gate .hex-node-title{font-size:2px}.hex-node-kofn polygon{stroke:var(--kofn-outline);stroke-width:.6}.hex-node-gate.hex-node-kofn-gate polygon{stroke:var(--kofn-outline);stroke-dasharray:var(--kofn-dash);transition:fill .15s ease,stroke .15s ease,stroke-width .15s ease,filter .2s ease}.hex-node-selected.hex-node-gate.hex-node-kofn-gate polygon{stroke-width:1.4;filter:drop-shadow(0 0 3px var(--kofn-outline))}.hexagon-group .hexagon .hex-gate-pips .hex-pip{fill:none;stroke:var(--pip-stroke);stroke-width:.18;stroke-dasharray:none;filter:none;cursor:inherit;pointer-events:none;transition:fill .2s ease}.hexagon-group .hexagon .hex-gate-pips .hex-pip-filled{fill:var(--pip-fill);stroke:var(--pip-fill)}.hex-node-completed .hexagon-shape,.hex-node-completed polygon{stroke:var(--fn-done);stroke-width:1.5;filter:drop-shadow(0 0 4px var(--fn-done-glow))}.contact-form{width:min(560px,calc(100vw - 32px))}.contact-textarea{min-height:120px;padding:12px 14px;resize:vertical;line-height:1.5}.contact-success{padding:24px 0 8px;text-align:center;font-family:var(--font-ui);font-size:.95rem;line-height:1.6;color:var(--fn-done)}.hero1{position:relative;overflow:hidden;display:flex;align-items:center;padding:calc(var(--header-h) + 40px) 60px 80px;background-color:var(--page-bg);min-height:100vh;min-height:100svh}.hero1-graph{position:absolute;inset:0 -45% 0 0;z-index:0;pointer-events:none;-webkit-user-select:none;user-select:none}.hero1-graph .hex-grid-wrapper{position:absolute;inset:0;width:100%;height:100%;min-width:0;min-height:0;max-width:none;max-height:none}.hero1:after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(90deg,var(--scrim-95) 0%,var(--scrim-80) 22%,var(--scrim-40) 40%,var(--scrim-0) 52%),linear-gradient(0deg,var(--scrim-60) 0%,var(--scrim-0) 16%)}.hero1-left{position:relative;z-index:1;flex:0 1 560px;max-width:560px;font-family:var(--font-ui)}.hero1-title{font-family:var(--font-display);font-size:70px;font-weight:700;letter-spacing:-.02em;line-height:1.05;color:var(--text);margin-bottom:24px}.hero1-text{font-size:18px;line-height:1.6;color:var(--text-dim);max-width:470px;margin-bottom:36px}.hero1-button{display:inline-block;padding:15px 30px;font-family:var(--font-ui);font-size:15px;font-weight:600;letter-spacing:.02em;text-decoration:none;cursor:pointer;border:none;background-color:var(--btn-primary-bg);color:var(--btn-primary-fg);border-radius:var(--radius-btn);clip-path:var(--clip-btn);filter:drop-shadow(0 4px 16px var(--btn-primary-glow));transition:background-color .2s ease,transform .12s ease,clip-path .2s ease,filter .2s ease}.hero1-button:hover{background-color:var(--btn-primary-bg-hover);transform:translateY(-1px);clip-path:var(--clip-btn-hover);filter:drop-shadow(0 7px 24px var(--btn-primary-glow-hover))}.hero1-button:active{transform:translateY(0)}.hero1-figure-note{position:absolute;right:60px;bottom:28px;z-index:1;display:flex;align-items:center;gap:10px;margin:0;font-family:var(--font-ui);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint)}.hero1-figure-note:before{content:"";width:20px;height:1px;background:var(--accent-soft)}.hero2{position:relative;background-color:var(--section-bg);padding:90px 60px;text-align:center}.hero2:before,.hero3:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,var(--section-rule) 30%,var(--section-rule) 70%,transparent)}.hero2-title,.hero3-title{font-family:var(--font-display);font-size:40px;font-weight:700;letter-spacing:-.01em;color:var(--text);margin-bottom:64px}.hero2-steps{position:relative;display:flex;justify-content:center;gap:72px}.hero2-steps:before{content:"";position:absolute;top:28px;left:16.6%;right:16.6%;height:1px;background:linear-gradient(90deg,transparent,var(--line-strong) 6%,var(--line-strong) 94%,transparent)}.hero2-step{position:relative;flex:0 1 300px;max-width:300px;text-align:center}.hero2-number{position:relative;z-index:1;box-sizing:border-box;width:48px;height:56px;margin:0 auto 20px;display:flex;align-items:center;justify-content:center;background:var(--line-strong);clip-path:var(--hex-clip);font-family:var(--font-display);font-size:20px;font-weight:700;color:var(--text-lift)}.hero2-number:before{content:"";position:absolute;inset:1.5px;z-index:-1;background:var(--surface-raised);clip-path:var(--hex-clip)}.hero2-step-title{font-family:var(--font-ui);font-size:18px;font-weight:600;color:var(--text);margin-bottom:10px}.hero2-step-text{font-family:var(--font-ui);font-size:15px;line-height:1.6;color:var(--text-dim)}.hero3{position:relative;background-color:var(--page-bg);padding:90px 60px;text-align:center}.hero3-cards{display:flex;justify-content:center;align-items:stretch;gap:32px}.hero3-card{position:relative;flex:1 1 320px;max-width:360px;padding:36px 30px;text-align:left;background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-card);clip-path:var(--clip-panel);transition:transform .18s ease,border-color .18s ease}.hero3-card:after{content:"";position:absolute;top:0;right:var(--chamfer-panel);width:calc(var(--chamfer-panel) * 1.4142 + 1px);height:1px;background:var(--card-corner-hair);transform-origin:top right;transform:translate(-1px,1px) rotate(-135deg);pointer-events:none;transition:background .18s ease}.hero3-card:hover{transform:translateY(-3px);border-color:var(--card-border-hover)}.hero3-card:hover:after{background:var(--accent)}.hero3-card-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;margin:0 0 20px -4px}.hero3-card-title{font-family:var(--font-ui);font-size:18px;font-weight:600;color:var(--text);margin-bottom:12px}.hero3-card-text{font-family:var(--font-ui);font-size:15px;line-height:1.6;color:var(--text-dim)}@media(max-width:1024px){.hero1{padding:calc(var(--header-h) + 30px) 40px 60px}.hero1-graph{right:-25%}.hero1-title{font-size:50px}.hero1-left{flex-basis:440px;max-width:440px}.hero1-figure-note{right:40px}.hero2-steps{gap:40px}.hero2-steps:before{left:18%;right:18%}.hero3-cards{gap:20px}}@media(max-width:768px){.hero1{flex-direction:column;align-items:stretch;justify-content:flex-start;min-height:88svh;padding:calc(var(--header-h) + 24px) 20px 40px;text-align:center}.hero1-graph{right:0}.hero1:after{background:linear-gradient(180deg,var(--scrim-95) 0%,var(--scrim-80) 34%,var(--scrim-20) 62%,var(--scrim-0) 100%)}.hero1-left{flex:0 0 auto;max-width:100%}.hero1-title{font-size:38px}.hero1-text{font-size:16px;max-width:100%;margin-left:auto;margin-right:auto}.hero1-figure-note{display:none}.hero2,.hero3{padding:60px 20px}.hero2-title,.hero3-title{font-size:30px;margin-bottom:40px}.hero2-steps{flex-direction:column;align-items:center;gap:40px}.hero2-steps:before{display:none}.hero2-step:not(:last-child):after{content:"";position:absolute;left:50%;bottom:-40px;width:1px;height:40px;background:var(--line-strong)}.hero3-cards{flex-direction:column;align-items:center;gap:24px}.hero3-card{width:100%;max-width:100%}}.profile-page{margin-top:80px;min-height:calc(100vh - 80px);position:relative}.profile-background{position:absolute;inset:0;z-index:0}.profile-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;padding-top:60px;padding-bottom:40px;gap:12px}.profile-info{background:linear-gradient(145deg,#0a2647e0,#061630f0);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);border:1px solid rgb(100 190 255 / 18%);box-shadow:0 8px 48px #000a2899,0 1px #78c8ff12 inset,0 -1px #0006 inset;width:min(760px,calc(100vw - 32px));padding:clamp(36px,7vw,64px) clamp(32px,7vw,64px);display:flex;flex-direction:column;align-items:center;gap:0;position:relative;clip-path:polygon(0% 0%,calc(100% - 28px) 0%,100% 28px,100% 100%,28px 100%,0% calc(100% - 28px));animation:profileAppear .4s cubic-bezier(.22,1,.36,1) both}.profile-info:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(135deg,transparent calc(100% - 29px),rgb(255 210 60 / 25%) calc(100% - 29px),rgb(255 210 60 / 25%) calc(100% - 27px),transparent calc(100% - 27px)),linear-gradient(315deg,transparent calc(100% - 29px),rgb(255 210 60 / 20%) calc(100% - 29px),rgb(255 210 60 / 20%) calc(100% - 27px),transparent calc(100% - 27px));z-index:0}.profile-info>*{position:relative;z-index:1}@keyframes profileAppear{0%{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.profile-title h1{font-family:Palatino Linotype,Palatino,Book Antiqua,serif;font-size:2rem;font-weight:700;letter-spacing:-.02em;color:#fff;margin:0 0 20px;text-align:center}.profile-contents{width:100%;margin-bottom:28px;display:flex;flex-direction:column;gap:8px}.profile-contents p{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.95rem;color:#b4dcfad9;margin:0;text-align:center}.profile-greeting{font-family:Palatino Linotype,Palatino,Book Antiqua,serif;font-size:1.6rem!important;font-weight:700;color:#fff!important;letter-spacing:-.01em;margin-bottom:8px!important}.profile-info>.profile-action-link{display:block;min-height:44px;width:min(640px,calc(100vw - 32px));border:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.88rem;font-weight:600;letter-spacing:.02em;cursor:pointer;margin-bottom:12px;text-decoration:none;text-align:center;line-height:44px;background:linear-gradient(135deg,#1e7fc4,#0f5a9e);color:#fff;box-shadow:0 2px 16px #1464c873;clip-path:polygon(0% 0%,calc(100% - 14px) 0%,100% 14px,100% 100%,14px 100%,0% calc(100% - 14px));transition:background .2s ease,transform .12s ease,box-shadow .2s ease,clip-path .2s ease}.profile-info>.profile-action-link:hover{background:linear-gradient(135deg,#2e94db,#1a6db8);box-shadow:0 4px 24px #1e78dc8c;transform:translateY(-1px);clip-path:polygon(0% 0%,calc(100% - 18px) 0%,100% 18px,100% 100%,18px 100%,0% calc(100% - 18px))}.profile-info>.profile-action-link:active{transform:translateY(0)}.profile-info>button{display:block;min-height:44px;width:min(640px,calc(100vw - 32px));border:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.88rem;font-weight:600;letter-spacing:.02em;cursor:pointer;margin-bottom:12px;background:linear-gradient(135deg,#1e7fc4,#0f5a9e);color:#fff;box-shadow:0 2px 16px #1464c873;clip-path:polygon(0% 0%,calc(100% - 14px) 0%,100% 14px,100% 100%,14px 100%,0% calc(100% - 14px));transition:background .2s ease,transform .12s ease,box-shadow .2s ease,clip-path .2s ease}.profile-info>button:hover{background:linear-gradient(135deg,#2e94db,#1a6db8);box-shadow:0 4px 24px #1e78dc8c;transform:translateY(-1px);clip-path:polygon(0% 0%,calc(100% - 18px) 0%,100% 18px,100% 100%,18px 100%,0% calc(100% - 18px))}.profile-info>button:active{transform:translateY(0)}.profile-info>button:last-child{background:#ffffff0f;border:1px solid rgb(80 160 220 / 22%);color:#b4dcf5d9;box-shadow:none;clip-path:polygon(0% 0%,calc(100% - 14px) 0%,100% 14px,100% 100%,14px 100%,0% calc(100% - 14px))}.profile-info>button:last-child:hover{background:#ffffff1c;border-color:#50aaf066;transform:translateY(-1px);clip-path:polygon(0% 0%,calc(100% - 18px) 0%,100% 18px,100% 100%,18px 100%,0% calc(100% - 18px))}@media(max-width:480px){.profile-page{padding-top:32px}.profile-title h1{font-size:1.6rem}}.profile-status{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:1rem;color:#b4dcfaa6;text-align:center;padding:24px 16px;animation:profileAppear .4s cubic-bezier(.22,1,.36,1) both}.profile-error{width:100%;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.82rem;line-height:1.45;color:#ff8a8a;background:#dc3c3c1a;border:1px solid rgb(220 80 80 / 22%);border-radius:6px;padding:10px 16px;text-align:center;margin-bottom:12px;animation:profileAppear .3s cubic-bezier(.22,1,.36,1) both}.panel{position:fixed;z-index:10;display:flex;flex-direction:column;min-width:180px;max-width:300px;max-height:calc(100svh - var(--header-h) - 120px);font-family:var(--font-ui);background:var(--float-bg);clip-path:var(--clip-float);filter:var(--float-filter)}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;background:var(--float-header-bg);border-bottom:1px solid var(--float-header-rule);color:var(--float-title);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;cursor:move;touch-action:none;-webkit-user-select:none;user-select:none}.panel-controls{display:flex;align-items:center;gap:6px}.panel-collapse{display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;font-size:10px;cursor:pointer;color:var(--float-btn-fg);background:var(--float-btn-bg);border:1px solid var(--float-btn-border);border-radius:var(--radius-btn);transition:background .15s,border-color .15s,color .15s}.panel-collapse:hover{color:var(--float-btn-fg-hover);background:var(--float-btn-bg-hover);border-color:var(--float-btn-border-hover)}.panel-grip{display:flex;align-items:center;font-size:11px;color:var(--float-grip)}.panel-body{display:flex;flex-direction:column;gap:2px;min-height:0;padding:6px 14px 10px;overflow-y:auto}.panel-row{display:flex;align-items:center;gap:8px;padding:5px 6px;border-left:2px solid transparent;transition:border-color .15s,color .15s}.panel-row:hover{border-left-color:var(--float-row-marker)}.panel-row-label{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:12px;line-height:1.4;color:var(--float-row-fg)}.panel-row:hover .panel-row-label{color:var(--float-row-fg-hover)}.req-filter-panel{bottom:var(--float-offset);right:var(--float-offset)}.req-filter-done,.req-filter-show{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;background:none;border-radius:var(--radius-btn);cursor:pointer;transition:background .15s,border-color .15s,color .15s,opacity .15s}.req-filter-done{border:1px solid var(--fn-done-line);color:var(--fn-done-fg)}.req-filter-done:hover:not(:disabled){border-color:var(--fn-done-line-strong);color:var(--fn-done-fg-hover)}.req-filter-done-active{background:var(--fn-done-bg);border-color:var(--fn-done-line-strong);color:var(--fn-done-fg-active)}.req-filter-done:disabled{opacity:.25;cursor:default}.req-filter-show{border:none;color:var(--float-row-fg);opacity:.6}.req-filter-show:hover,.req-filter-show-active{color:var(--float-row-fg-hover);opacity:1}.tree-view-page{position:relative;flex:1;display:flex;flex-direction:column;min-height:100svh;background-color:var(--page-bg)}.default-tree-page{margin-top:var(--header-h)}.tree-class-selector{position:relative;display:flex;justify-content:center;margin-top:var(--header-h);min-height:calc(100svh - var(--header-h))}.tree-view-status{position:absolute;top:calc(var(--header-h) + var(--float-offset));left:50%;transform:translate(-50%);z-index:25;padding:10px 24px;white-space:nowrap;font-family:var(--font-ui);font-size:14px;font-weight:500;color:var(--text-dim);background:var(--float-bg);clip-path:var(--clip-float);filter:var(--float-filter);animation:status-appear .3s cubic-bezier(.22,1,.36,1) both}.tree-view-error{color:var(--fn-error);background:var(--fn-error-surface)}@keyframes status-appear{0%{opacity:0;transform:translate(-50%) translateY(-8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.tree-view-actions{position:absolute;top:calc(var(--header-h) + var(--float-offset));left:var(--float-offset);z-index:10;display:flex;flex-direction:column;gap:6px}.tree-view-btn{height:36px;padding:0 18px;border:none;border-radius:var(--radius-btn);font-family:var(--font-ui);font-size:13px;font-weight:600;letter-spacing:.02em;color:var(--text);cursor:pointer;clip-path:var(--clip-btn-sm);transition:background .2s ease,color .2s ease,filter .2s ease,clip-path .2s ease,transform .12s ease}.tree-view-btn:hover{transform:translateY(-1px);clip-path:var(--clip-btn-sm-hover)}.tree-view-btn:active{transform:translateY(0)}.tree-view-btn-primary{background:var(--btn-primary-bg);color:var(--btn-primary-fg);filter:drop-shadow(0 2px 10px var(--btn-primary-glow))}.tree-view-btn-primary:hover{background:var(--btn-primary-bg-hover);filter:drop-shadow(0 5px 18px var(--btn-primary-glow-hover))}.tree-view-btn-secondary{background:var(--overlay-2);color:var(--text-dim)}.tree-view-btn-secondary:hover{background:var(--overlay-3);color:var(--text)}.tree-view-btn-danger{background:var(--fn-error-bg);color:var(--fn-error)}.tree-view-btn-danger:hover{background:var(--fn-error-bg-hover);color:var(--fn-error-fg)}.tree-view-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:1000;padding:10px 20px;border-radius:var(--radius-menu);font-family:var(--font-ui);font-size:14px;font-weight:600;color:var(--toast-fg);pointer-events:none;animation:toast-fade 3s ease forwards}.tree-view-toast-success{background:var(--fn-done-solid);box-shadow:0 4px 16px var(--fn-done-solid-glow)}.tree-view-toast-error{background:var(--fn-error-solid);box-shadow:0 4px 16px var(--fn-error-solid-glow)}@keyframes toast-fade{0%{opacity:0;transform:translate(-50%) translateY(8px)}15%{opacity:1;transform:translate(-50%) translateY(0)}75%{opacity:1}to{opacity:0}}@media(prefers-reduced-motion:reduce){.tree-view-status,.tree-view-toast{animation:none}}.dept-legend{top:calc(var(--header-h) + var(--float-offset));right:var(--float-offset)}.dept-legend-swatch{width:12px;height:12px;flex-shrink:0;border:1px solid var(--float-swatch-border)}
