:root{--radius-md: 12px;--radius-sm: 8px;--anim-speed: .3s;--hue-success: 150;--hue-warning: 35;--hue-danger: 0}:root,[data-theme=light]{--c-bg: #f8fafc;--c-surface: #ffffff;--c-surface-border: #e2e8f0;--c-text-main: #1e293b;--c-text-primary: #0f172a;--c-text-muted: #64748b;--c-primary: #6366f1;--c-primary-rgb: 99, 102, 241;--c-primary-hover: #4f46e5;--c-primary-light: #e0f2fe;--c-success: #16a34a;--c-danger: #dc2626;--c-locked: #f1f5f9;--grade-color: #cbd5e1;--shadow-sm: 0 2px 8px -2px rgba(0, 0, 0, .05);--shadow-hover: 0 10px 25px -5px rgba(0, 0, 0, .1)}[data-theme=dark]{--c-bg: #1a1b26;--c-surface: #24283b;--c-surface-border: #414868;--c-text-main: #c0caf5;--c-text-primary: #15161e;--c-text-muted: #565f89;--c-primary: #7aa2f7;--c-primary-rgb: 122, 162, 247;--c-primary-light: #2f334d;--c-success: #9ece6a;--c-danger: #f7768e;--c-locked: #16161e;--grade-color: #414868;--shadow-sm: 0 4px 6px -1px rgba(0, 0, 0, .3);--shadow-hover: 0 10px 15px -3px rgba(0, 0, 0, .4)}[data-theme=rose]{--c-bg: #fff0f5;--c-surface: #ffffff;--c-surface-border: #fbcfe8;--c-text-main: #881337;--c-text-primary: #4c0519;--c-text-muted: #be185d;--c-primary: #881337;--c-primary-rgb: 136, 19, 55;--c-primary-light: #fdf2f8;--c-success: #10b981;--c-danger: #e11d48;--c-locked: #fce7f3;--grade-color: #fce7f3;--shadow-sm: 0 2px 8px -2px rgba(190, 24, 93, .1);--shadow-hover: 0 10px 25px -5px rgba(190, 24, 93, .15)}.theme-modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#0000004d;backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;z-index:9999}.theme-modal{background:var(--c-surface);border:1px solid var(--c-surface-border);border-radius:var(--radius-md);box-shadow:var(--shadow-hover);padding:1.5rem;width:90%;max-width:400px;animation:modalIn .2s ease-out}@keyframes modalIn{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.theme-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.theme-modal-header h3{font-size:1.1rem;font-weight:700;margin:0;color:var(--c-text-main)}.close-btn{background:transparent;border:none;font-size:1.25rem;cursor:pointer;color:var(--c-text-muted)}.close-btn:hover{color:var(--c-text-main)}.theme-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));gap:1rem}.theme-option{display:flex;flex-direction:column;align-items:center;gap:.5rem;cursor:pointer;transition:transform .2s}.theme-option:hover{transform:translateY(-2px)}.theme-preview{width:60px;height:60px;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm);transition:all .2s}.theme-option span{font-size:.85rem;font-weight:500;color:var(--c-text-main)}.theme-preview>div{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.theme-preview svg{display:block}*{box-sizing:border-box;margin:0;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}body{background-color:var(--c-bg);color:var(--c-text-main);height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden;-webkit-text-size-adjust:none;text-size-adjust:none}.stats-bar{background:var(--c-surface);padding:1rem 2rem;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;margin-top:4px;border-bottom:1px solid rgba(0,0,0,.06);box-shadow:var(--shadow-sm);z-index:10;flex-shrink:0}.brand{display:flex;flex-direction:column;margin-bottom:0}.stats-footer{display:flex;justify-content:space-between;align-items:center;width:100%}@media (min-width: 901px){.stats-bar{flex-direction:row;align-items:center;justify-content:space-between}.brand{margin-bottom:0}.stats-footer{justify-content:flex-end;gap:.75rem;width:auto;flex-grow:1}.controls-group{order:1;margin-right:.5rem}.metrics{order:2}}@media (max-width: 900px){.stats-footer{justify-content:space-between;align-items:flex-end;margin-top:.25rem}.controls-group .info-btn{order:0}.controls-group .import-btn{order:1}.controls-group .reset-btn{order:2}.controls-group .lang-btn{order:3}.controls-group .theme-toggle{order:4}.controls-group .sim-btn{order:5}}.department-selector{display:flex;align-items:center;gap:.5rem;cursor:pointer;position:relative;user-select:none}.department-selector h1{font-size:1.5rem;font-weight:800;letter-spacing:-.02em;margin:0;color:var(--c-text-main);transition:color .2s}.department-selector:hover h1{color:var(--c-primary)}.chevron-icon{width:20px;height:20px;color:var(--c-text-muted);transition:transform .2s}.department-selector:hover .chevron-icon{color:var(--c-primary)}.department-selector.active .chevron-icon{transform:rotate(180deg)}.dropdown-menu{position:absolute;top:100%;left:0;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-md);box-shadow:0 4px 12px #0000001a;padding:.5rem;min-width:250px;z-index:100;opacity:0;visibility:hidden;transform:translateY(10px);transition:all .2s;flex-direction:column;display:flex}.department-selector.active .dropdown-menu{opacity:1;visibility:visible;transform:translateY(0)}.dropdown-item{padding:.75rem 1rem;border-radius:var(--radius-sm);cursor:pointer;font-size:.9rem;font-weight:500;color:var(--c-text-main);transition:background .2s}.dropdown-item:hover{background:var(--c-bg);color:var(--c-primary)}.dropdown-item.selected{background:var(--c-primary);color:#fff}.brand span{font-weight:400;color:var(--c-text-muted);font-size:.9rem}.metrics{display:flex;gap:2rem;align-items:center}.controls-group{display:flex;gap:.25rem;align-items:center}.metric-card{display:flex;flex-direction:column;align-items:center}.metric-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--c-text-muted);font-weight:600}.metric-value{font-size:1.5rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--c-text-main);transition:color .3s ease}.theme-toggle,.lang-btn,.reset-btn,.sim-btn,.import-btn,.info-btn{background:none;border:none;cursor:pointer;color:var(--c-text-main);padding:8px;border-radius:50%;transition:background .2s,color .2s;display:flex;align-items:center;justify-content:center}@media (min-width: 901px){.controls-group .sim-btn{order:1}.controls-group .theme-toggle{order:2}.controls-group .lang-btn{order:3}.controls-group .reset-btn{order:4}.controls-group .import-btn{order:5}.controls-group .info-btn{order:6}}.theme-toggle:hover,.lang-btn:hover,.reset-btn:hover{background:#0000000d}[data-theme=dark] .theme-toggle:hover,[data-theme=dark] .reset-btn:hover,[data-theme=dark] .sim-btn:hover{background:#ffffff1a}.import-btn:hover{background:#22c55e1a!important;color:#22c55e!important}.info-btn:hover{background:rgba(var(--c-primary-rgb),.1)!important;color:var(--c-primary)!important}.theme-toggle:hover{background:#d4a3731a!important;color:#d4a373!important}.reset-btn:hover{color:#ef4444;background:#ef44441a!important}[data-theme=dark] .reset-btn:hover{color:#fca5a5;background:#7f1d1d66!important}.modal-actions{display:flex;justify-content:flex-end;gap:1rem;margin-top:1.5rem}.modal-btn{padding:.5rem 1rem;border-radius:var(--radius-sm);font-weight:600;cursor:pointer;border:none;transition:background-color .2s}.modal-btn.cancel{background:transparent;color:var(--c-text-muted);border:1px solid var(--c-surface-border)}.modal-btn.cancel:hover{background:var(--c-surface-border);color:var(--c-text-main)}.modal-btn.confirm{background:var(--c-danger);color:#fff}.modal-btn.confirm:hover{filter:brightness(1.1)}.grid-wrapper{flex:1;display:flex;align-items:flex-start;justify-content:flex-start;overflow:auto;-webkit-overflow-scrolling:touch;position:relative;background:var(--c-bg);padding-top:0;padding-bottom:.5rem;width:100%;min-height:0}.curriculum-grid{display:grid;grid-template-columns:repeat(9,max-content);gap:0 4rem;padding:0 1rem 4rem;position:relative;transform-origin:top center;transition:transform .2s ease-out;margin:auto}.curriculum-grid::-webkit-scrollbar{width:8px}.curriculum-grid::-webkit-scrollbar-track{background:transparent}.curriculum-grid::-webkit-scrollbar-thumb{background:#0000001a;border-radius:4px}.term-column{display:flex;flex-direction:column;gap:1rem;position:relative;min-width:0;padding:0;border-right:none;z-index:2}.term-column:last-child{border-right:none}.term-header{padding-bottom:.5rem;padding-top:1rem;gap:.25rem;display:flex;justify-content:center;align-items:center;width:100%;border-bottom:2px solid var(--c-surface-border);transition:border-color .2s ease}.term-column:hover .term-header{border-color:#0000000d}.term-year-badge{font-size:.8rem;padding:4px 12px}.term-name{font-size:1rem}.course-card{background:var(--c-surface);border-radius:var(--radius-md);padding:.5rem;gap:.15rem;border-radius:6px;z-index:2;position:relative;min-height:70px;display:flex;flex-direction:column;justify-content:space-between;border-left:6px solid var(--grade-color, var(--c-surface-border));transition:all .2s ease}.course-card+.course-card{margin-top:2rem}.course-card:not(.locked):hover{transform:translateY(-4px);box-shadow:var(--shadow-hover);border-color:#00000014}.course-card.locked{background:var(--c-locked);color:var(--c-text-muted);box-shadow:none;border-color:transparent}.course-card.locked .card-controls *{pointer-events:none}.course-card.dependency-highlight{opacity:1!important;background:var(--c-surface)!important;transform:translateY(-2px);transition:all .2s ease}.card-header{display:flex;justify-content:space-between;align-items:flex-start}.course-id{font-size:.8rem;font-weight:700;border-color:var(--grade-color, var(--c-primary));background:var(--grade-color, var(--c-primary));color:var(--c-text-primary);padding:1px 4px;border-radius:4px;margin-bottom:0;font-size:.75rem;transition:all .2s ease}.course-name{font-size:.8rem;line-height:1.2;font-weight:600;white-space:normal;overflow:hidden}.prereq-hint{display:none}.course-card.completed .course-id,.course-card.failed .course-id{color:#fff}[data-theme=dark] .course-card.completed .course-id,[data-theme=dark] .course-card.failed .course-id{color:#000}.locked-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--c-text-muted);opacity:.15;display:none;pointer-events:none;z-index:0}.course-card.locked .locked-icon{display:block}#card-ME400{border:2px dashed var(--c-text-main);border-left:6px solid var(--grade-color, var(--c-text-muted));opacity:1!important}.card-controls{display:flex;align-items:center;justify-content:flex-start;margin-top:auto;border-top:1px solid rgba(0,0,0,.04);padding-top:.4rem;gap:.75rem}.checkbox-wrapper{display:flex;align-items:center;gap:.5rem;cursor:pointer;user-select:none}.checkbox-wrapper input{display:none}.custom-checkbox{width:18px;height:18px;border-radius:4px;border:2px solid var(--grade-color, #ddd);display:flex;align-items:center;justify-content:center;transition:all .2s;color:#fff;font-size:16px}.custom-checkbox svg{width:14px;height:14px;display:block}.checkbox-wrapper input:checked+.custom-checkbox{background:var(--grade-color, var(--c-success));border-color:var(--grade-color, var(--c-success))}.checkbox-label{font-size:.8rem;font-weight:500}[data-theme=dark] .checkbox-wrapper input:checked+.custom-checkbox{color:#000}.grade-select{border:1px solid #eee;border-radius:4px;padding:.25rem .5rem;font-size:.85rem;outline:none;background:transparent;color:var(--c-text-main);cursor:pointer;transition:border-color .2s}[data-theme=dark] .grade-select,[data-theme=dark] .grade-select option{background-color:var(--c-surface);color:var(--c-text-main)}.grade-select:hover{border-color:var(--c-primary)}.grade-select:disabled{opacity:.5;cursor:not-allowed}#arrows-container{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:1;overflow:visible}.arrow-path{fill:none;stroke-width:2px;opacity:.8;transition:opacity .3s,stroke-width .3s}.arrow-path.active{opacity:1;stroke-width:3px}.arrow-path.locked{stroke:var(--hue-danger);stroke-dasharray:4}@media (max-width: 900px){.arrow-path{stroke-width:1px!important}.arrow-path.active{stroke-width:2px!important}.curriculum-grid{gap:0 2.5rem;margin:0;padding-left:2rem!important;padding-right:2rem!important;padding-bottom:2rem}.course-card+.course-card{margin-top:1rem}.term-column{gap:.75rem}.course-card{padding:.3rem;min-height:60px;gap:.1rem}.course-name,.course-id{font-size:.7rem}.card-header{margin-bottom:0}.checkbox-wrapper{transform:scale(.95)}.grid-wrapper{-ms-overflow-style:none;scrollbar-width:none;overflow:auto}.grid-wrapper::-webkit-scrollbar{display:none}}@media (max-width: 600px){.stats-bar{padding:.75rem 1rem .5rem}.brand{margin-bottom:.5rem}.brand h1{font-size:1.1rem;line-height:1.1}.brand span{font-size:.75rem}.metrics{gap:1rem}.metric-value{font-size:1.1rem}.metric-label{font-size:.65rem}}.attribution{position:fixed;bottom:.5rem;right:1rem;font-size:.75rem;color:var(--c-text-muted);font-weight:500;z-index:100;opacity:.7;transition:opacity .3s;pointer-events:none;display:flex;flex-direction:column;align-items:flex-end;gap:8px;text-align:right}.attribution:hover{opacity:1}.author-name{color:var(--c-primary);font-weight:700}.donate-btn{background:linear-gradient(135deg,#6a11cb,#2575fc);color:#fff;padding:6px 12px;border-radius:8px;font-size:.75rem;font-weight:600;display:flex;align-items:center;gap:6px;box-shadow:0 4px 6px #0000001a;transition:transform .2s}.donate-btn:hover{transform:translateY(-2px)}@media (max-width: 600px){.attribution{font-size:.65rem;bottom:.25rem;left:.5rem;right:.5rem;flex-direction:row-reverse;justify-content:space-between;align-items:center}}.course-card.summer-practice{border:2px dashed var(--c-primary)!important;background:#2563eb0d!important}.course-card.summer-practice .course-id{background:var(--c-primary)!important;color:#000!important}.sim-btn:hover{color:#8b5cf6;background:#8b5cf61a!important}.lang-btn{width:36px;height:36px}.lang-btn:hover{color:var(--c-primary);background:#2563eb26!important}body.simulation-active .stats-bar{border-bottom:2px solid #8b5cf6;position:relative}body.simulation-active .stats-bar:after{content:"";position:absolute;inset:0;background:linear-gradient(to right,transparent,rgba(139,92,246,.15));pointer-events:none;z-index:-1}body.simulation-active .course-card.completed:not(.simulation-added){opacity:.5;filter:grayscale(1);transition:all .4s ease}body.simulation-active .course-card.simulation-added{box-shadow:0 0 0 2px #8b5cf6,0 0 12px #8b5cf666;background:#8b5cf608;z-index:5;transform:translateY(-2px);border-color:#8b5cf6}body.simulation-active .course-card.simulation-added .course-id{background-color:#8b5cf6;color:#fff}.theme-light body.simulation-active .course-card.simulation-added,.theme-rose body.simulation-active .course-card.simulation-added{box-shadow:0 0 0 2px #4c1d95,0 0 12px #4c1d9566;border-color:#4c1d95;background:#4c1d950d}.theme-light body.simulation-active .course-card.simulation-added .course-id,.theme-rose body.simulation-active .course-card.simulation-added .course-id{background-color:#4c1d95;color:#fff}.theme-light body.simulation-active .stats-bar,.theme-rose body.simulation-active .stats-bar{border-bottom-color:#4c1d95}.theme-light body.simulation-active .course-card.completed:not(.simulation-added),.theme-rose body.simulation-active .course-card.completed:not(.simulation-added){opacity:.85;background-color:#cbd5e1!important;border:1px solid #94a3b8!important;filter:grayscale(1);color:#475569;box-shadow:none}.theme-light body.simulation-active .course-card.completed:not(.simulation-added) .course-id,.theme-rose body.simulation-active .course-card.completed:not(.simulation-added) .course-id{background-color:#475569!important;color:#e2e8f0!important}@keyframes flashRed{0%,to{border-color:#eee;box-shadow:none}50%{border-color:var(--c-danger);box-shadow:0 0 8px #dc262666}}.grade-select.flash-attention{animation:flashRed 1s ease;border-color:var(--c-danger)}#notification-container{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:10px;z-index:1000;pointer-events:none}.toast{background:var(--c-surface);color:var(--c-text-main);border:1px solid var(--c-border);padding:12px 16px;border-radius:8px;box-shadow:0 4px 12px #00000026;display:flex;align-items:center;gap:12px;min-width:300px;max-width:400px;pointer-events:auto;animation:slideIn .3s cubic-bezier(.16,1,.3,1);transition:all .3s ease}.toast.success{border-left:4px solid var(--c-success)}.toast.error{border-left:4px solid var(--c-danger)}.toast.info{border-left:4px solid var(--c-primary)}.toast-message{font-size:.9rem;font-weight:500;flex:1}.toast-close{background:none;border:none;color:var(--c-text-muted);cursor:pointer;padding:4px;font-size:1.2rem;line-height:1;display:flex;align-items:center;justify-content:center;opacity:.7;transition:opacity .2s}.toast-close:hover{opacity:1}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes fadeOut{to{opacity:0;transform:translateY(10px)}}@media (max-width: 600px){#notification-container{bottom:20px;right:20px;left:20px;align-items:center}.toast{width:100%;min-width:unset}}body.pwa-standalone .attribution{bottom:calc(1.25rem + env(safe-area-inset-bottom))!important;justify-content:center!important;gap:10px!important}body.pwa-standalone .grid-wrapper{padding-bottom:calc(.5rem + env(safe-area-inset-bottom))}@keyframes flashCredit{0%,to{background:transparent;box-shadow:none}50%{background:#2563eb26;box-shadow:0 0 8px #2563eb80}}.flash-credit-attention{animation:flashCredit .5s ease 3;border-radius:4px}
