:root{--bg-0: #070b14;--bg-1: #0c1120;--bg-2: #111828;--bg-3: #1a2338;--bg-card: rgba(16, 22, 40, .82);--bg-card-hover: rgba(22, 30, 52, .92);--text-0: #ffffff;--text-1: #d6dff5;--text-2: #8a9bb6;--text-3: #4a5b78;--accent: #00c9a7;--accent-dim: rgba(0, 201, 167, .18);--accent-amber: #f5a623;--accent-amber-dim: rgba(245, 166, 35, .15);--accent-rose: #f06080;--layer-foundations: #4a90d4;--layer-core: #2a9960;--layer-advanced: #c4900a;--layer-research: #8040c0;--layer-industry: #cc3a3a;--layer-integrative: #208880;--subgraph-academic: #5b8ee8;--subgraph-professional: #e07b44;--subgraph-self-directed: #14b8a6;--edge-prerequisite: rgba(100,140,220,.85);--edge-interdisciplinary: rgba(0,201,167,.85);--edge-specialization: rgba(160,100,240,.85);--edge-composition: rgba(240,130,60,.85);--edge-cross: rgba(255,200,80,.85);--border: rgba(255, 255, 255, .07);--border-strong: rgba(255, 255, 255, .14);--border-accent: rgba(0, 201, 167, .3);--radius-sm: 7px;--radius: 10px;--radius-lg: 16px;--radius-xl: 22px;--shadow: 0 4px 24px rgba(0, 0, 0, .45);--shadow-lg: 0 8px 48px rgba(0, 0, 0, .6);--glow-accent: 0 0 24px rgba(0, 201, 167, .25);--sidebar-w: 240px;--header-h: 56px;--font-display: "Crimson Pro", Georgia, serif;--font-body: "DM Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Courier New", monospace;--fs-display: clamp(2rem, 3.2vw, 2.4rem);--fs-h2: 1.75rem;--fs-h3: 1.25rem;--fs-body: 14px;--fs-body-lg: 15px;--fs-caption: 12px;--fs-micro: 11px;--fs-tiny: 10px;--fw-body: 400;--fw-med: 500;--fw-semi: 600;--fw-bold: 700;--fw-display: 600;--lh-tight: 1.2;--lh-body: 1.6;--tracking-caps: .08em;--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(.22, 1, .36, 1)}[data-theme=light]{--bg-0: #f5f1ea;--bg-1: #ede8df;--bg-2: #e4ddd2;--bg-3: #d5cec2;--bg-card: rgba(253, 250, 244, .92);--bg-card-hover: rgba(255, 253, 248, .98);--text-0: #0a0805;--text-1: #261f17;--text-2: #5e5042;--text-3: #9c8a72;--accent: #007a64;--accent-dim: rgba(0, 122, 100, .1);--accent-amber: #b86c00;--accent-amber-dim: rgba(184, 108, 0, .12);--accent-rose: #b53050;--layer-foundations: #2868b0;--layer-core: #1a7840;--layer-advanced: #9c6200;--layer-research: #6628aa;--layer-industry: #a82020;--layer-integrative: #107070;--border: rgba(0, 0, 0, .09);--border-strong: rgba(0, 0, 0, .16);--border-accent: rgba(0, 122, 100, .28);--shadow: 0 2px 16px rgba(0, 0, 0, .08);--shadow-lg: 0 6px 36px rgba(0, 0, 0, .12);--glow-accent: 0 0 20px rgba(0, 122, 100, .14)}[data-theme=light] body{background:var(--bg-0);color:var(--text-1)}[data-theme=light] ::-webkit-scrollbar-thumb{background:var(--bg-3)}[data-theme=light] ::-webkit-scrollbar-thumb:hover{background:var(--text-3)}[data-theme=light] .modal-overlay{background:#b4ac9ea6}[data-theme=light] .form-input,[data-theme=light] .form-select,[data-theme=light] .form-textarea,[data-theme=light] .form-select option{background:var(--bg-0);color:var(--text-0)}[data-theme=light] .search-input{background:var(--bg-0);color:var(--text-1)}[data-theme=light] .btn-primary{color:#fff}.theme-toggle{display:inline-flex;align-items:center;justify-content:space-between;gap:6px;width:100%;padding:7px 10px;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--text-2);font-family:var(--font-body);font-size:12px;cursor:pointer;transition:all .18s;margin-bottom:2px}.theme-toggle:hover{background:var(--bg-3);color:var(--text-1);border-color:var(--border-strong)}.theme-toggle-track{position:relative;width:30px;height:16px;border-radius:99px;background:var(--bg-3);border:1px solid var(--border-strong);transition:background .25s;flex-shrink:0}[data-theme=light] .theme-toggle-track{background:var(--accent);border-color:transparent}.theme-toggle-thumb{position:absolute;top:2px;left:2px;width:10px;height:10px;border-radius:50%;background:var(--text-3);transition:transform .25s var(--ease-spring),background .25s}[data-theme=light] .theme-toggle-thumb{transform:translate(14px);background:#fff}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;overflow:hidden}body{font-family:var(--font-body);background:var(--bg-0);color:var(--text-1);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-3);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--text-3)}h1,h2,h3{font-family:var(--font-display);font-weight:600;color:var(--text-0);line-height:1.2;letter-spacing:-.01em}h1{font-size:2.4rem}h2{font-size:1.75rem}h3{font-size:1.25rem}a{color:var(--accent);text-decoration:none}a:hover{opacity:.8}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInRight{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}@keyframes pulseGlow{0%,to{box-shadow:0 0 12px #00c9a733}50%{box-shadow:0 0 24px #00c9a780}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes hintFade{0%{opacity:0}15%{opacity:1}70%{opacity:1}to{opacity:0}}@keyframes slideUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes viewHintFade{0%{opacity:0;transform:translateY(-8px)}12%{opacity:1;transform:translateY(0)}72%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(0)}}@keyframes bannerIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes bannerOut{0%{opacity:1}to{opacity:0}}@keyframes pulseNode{0%,to{opacity:.18}50%{opacity:.32}}.anim-fade-in{animation:fadeIn .4s var(--ease-out) both}.anim-fade-in-right{animation:fadeInRight .35s var(--ease-out) both}.hover-bg3{transition:background .15s}.hover-bg3:hover{background:var(--bg-3)}.hover-accent-border{border:1px solid var(--border);transition:border-color .15s,box-shadow .15s}.hover-accent-border:hover{border-color:var(--border-accent);box-shadow:var(--glow-accent)}.list-item-hover{background:var(--bg-2);transition:background .15s}.list-item-hover:hover{background:var(--bg-1)}.app-shell{display:flex;height:100vh;overflow:hidden}.app-sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--bg-1);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;z-index:10}.app-main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.app-header{height:var(--header-h);background:var(--bg-1);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 20px;gap:12px;flex-shrink:0;z-index:9}.app-content{flex:1;overflow-y:auto;overflow-x:hidden}.card{background:var(--bg-card);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:var(--radius-lg);transition:border-color .2s,background .2s,box-shadow .2s}.card:hover{background:var(--bg-card-hover);border-color:var(--border-strong)}.card-interactive{cursor:pointer}.card-interactive:hover{border-color:var(--border-accent);box-shadow:var(--glow-accent)}.btn{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;border-radius:var(--radius);border:1px solid transparent;font-family:var(--font-body);font-size:13px;font-weight:500;cursor:pointer;transition:all .18s;white-space:nowrap;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);color:#071510;font-weight:600}.btn-primary:hover:not(:disabled){background:#00e0bb;box-shadow:0 0 16px #00c9a766}.btn-ghost{background:transparent;color:var(--text-2);border-color:var(--border)}.btn-ghost:hover:not(:disabled){background:var(--bg-3);color:var(--text-1);border-color:var(--border-strong)}.btn-danger{background:transparent;color:var(--accent-rose);border-color:#f060804d}.btn-danger:hover:not(:disabled){background:#f060801a;border-color:var(--accent-rose)}.btn-amber{background:var(--accent-amber-dim);color:var(--accent-amber);border-color:#f5a6234d}.btn-amber:hover:not(:disabled){background:#f5a62340}.btn-sm{padding:5px 11px;font-size:12px;border-radius:7px}.btn-icon{padding:7px;border-radius:8px}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:500;letter-spacing:.03em}.form-group{display:flex;flex-direction:column;gap:6px}.form-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-2)}.form-input,.form-select,.form-textarea{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-0);font-family:var(--font-body);font-size:14px;padding:9px 12px;transition:border-color .15s,box-shadow .15s;outline:none;width:100%}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px #00c9a71f}.form-select{cursor:pointer}.form-select option{background:var(--bg-2)}.form-textarea{resize:vertical;min-height:72px;line-height:1.5}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#040812cc;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:24px;animation:fadeIn .2s ease both}.modal{background:var(--bg-2);border:1px solid var(--border-strong);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:90vh;overflow-y:auto;animation:fadeIn .25s var(--ease-spring) both}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border)}.modal-body{padding:20px 24px;display:flex;flex-direction:column;gap:16px}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 24px;border-top:1px solid var(--border)}.search-wrap{position:relative;flex:1;max-width:400px}.search-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--text-3);pointer-events:none}.search-input{width:100%;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-1);font-family:var(--font-body);font-size:13px;padding:7px 12px 7px 34px;outline:none;transition:border-color .15s,box-shadow .15s}.search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #00c9a71a}.search-input::placeholder{color:var(--text-3)}.layer-pill{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;padding:2px 8px;border-radius:99px;border:1px solid currentColor}.loader{width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}.divider{height:1px;background:var(--border);margin:4px 0}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:60px 24px;text-align:center;color:var(--text-3)}.empty-state svg{opacity:.3}.empty-state p{font-size:14px}.mobile-header{display:none}.sidebar-backdrop{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:199;cursor:pointer}.sidebar-close-btn{display:none}@media (max-width: 768px){.app-shell{height:100dvh}.mobile-header{display:flex;align-items:center;gap:12px;height:var(--header-h);padding:0 16px;background:var(--bg-1);border-bottom:1px solid var(--border);flex-shrink:0}.app-sidebar{position:fixed;top:0;left:0;bottom:0;width:260px;transform:translate(-100%);transition:transform .25s var(--ease-out),box-shadow .25s;z-index:200}.app-sidebar.sidebar-open{transform:translate(0);box-shadow:var(--shadow-lg)}.sidebar-backdrop.sidebar-open{display:block;animation:fadeIn .2s ease both}.sidebar-close-btn{display:flex;align-items:center;justify-content:center;position:absolute;top:14px;right:14px;width:28px;height:28px;border-radius:6px;background:transparent;border:1px solid var(--border);color:var(--text-3);cursor:pointer;transition:background .15s,color .15s}.sidebar-close-btn:hover{background:var(--bg-3);color:var(--text-1)}.modal-overlay{padding:0;align-items:flex-end}.modal{max-width:100%!important;border-radius:var(--radius-xl) var(--radius-xl) 0 0;max-height:92dvh}.modal-header{padding:16px 16px 12px}.modal-body{padding:16px}.modal-footer{padding:12px 16px;flex-wrap:wrap;gap:8px}.modal-footer .btn{flex:1;justify-content:center;min-width:100px}.graph-toolbar{height:auto!important;min-height:44px;flex-wrap:wrap;padding:6px 10px!important;gap:4px!important;row-gap:4px}}
