:root{font-family:system-ui,Arial,sans-serif;line-height:1.5;font-weight:300;color-scheme:light dark;color:#ffffffde;background-color:#242424}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:2000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-content{background:#2a2a2a;color:#fff;border-radius:16px;border:1px solid #FF6B00;max-width:440px;width:90%;overflow:hidden;animation:modalSlideIn .2s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.modal-header{padding:1.3rem 2rem;text-align:center;position:relative;border-bottom:1px solid rgba(255,255,255,.1)}.modal-title{margin:0;font-size:1.6rem;font-weight:600;color:#fff;letter-spacing:-.3px}.modal-body{padding:1.5rem 2rem;text-align:center}.modal-message{margin:0;font-size:1.05rem;line-height:1.6;color:silver}.modal-footer{padding:0 2rem 2rem;display:flex;gap:1rem;justify-content:center}.modal-button{padding:.875rem 1.75rem;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s ease;border:none;min-width:110px;font-family:inherit;flex:1}.modal-button--secondary{background:#404040;color:#fff}.modal-button--secondary:hover{background:#4a4a4a}.modal-button--secondary:active{background:#383838}.modal-button--primary{background:#ff6b00;color:#fff}.modal-button--primary:hover{background:#e55a00}.modal-button--primary:active{background:#cc5200}.modal-button:disabled{opacity:.6;cursor:not-allowed}.modal-button:focus-visible{outline:2px solid rgba(255,107,0,.5);outline-offset:2px}.modal-close-button:focus-visible{outline:2px solid rgba(255,107,0,.5);outline-offset:0}@media (max-width: 768px){.modal-content{width:95%;margin:1rem}.modal-header,.modal-body,.modal-footer{padding-left:1.5rem;padding-right:1.5rem}.modal-footer{flex-direction:column}.modal-button{width:100%}}@media (max-width: 480px){.modal-title{font-size:1.5rem}.modal-message{font-size:1rem}.modal-button{padding:.75rem 1.5rem;font-size:.9rem}.modal-close-button{top:1rem;right:1rem}}.navbar{display:flex;justify-content:center;align-items:center;padding:0;background-color:#212121;box-shadow:0 2px 8px #0000004d;z-index:1000;width:100%}.navbar-container{display:flex;justify-content:space-between;align-items:center;width:100%;padding:10px 2rem;position:relative;max-width:2000px}.navbar-left{display:flex;align-items:center;gap:10px}.navbar-left h1{font-weight:600;font-size:2.3rem;margin:0;color:#ff6b00}.navbar-left a{text-decoration:none}.navbar-center{display:flex;align-items:center;gap:150px}.navbar-center a{color:#fff;text-decoration:none;font-weight:550;font-size:1.2rem;padding:.5rem 0;position:relative}.navbar-center a:hover{color:#ff6b00}.navbar-center a:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:#ff6b00;transition:width .3s ease}.navbar-center a:hover:after{width:100%}.navbar-right{display:flex;align-items:center;gap:50px}.hamburger-menu{display:none;flex-direction:column;justify-content:space-between;width:30px;height:21px;cursor:pointer;z-index:1100}.hamburger-menu span{display:block;height:3px;width:100%;background-color:#fff;border-radius:3px;transition:all .3s ease}.hamburger-menu.active span:nth-child(1){transform:translateY(9px) rotate(45deg)}.hamburger-menu.active span:nth-child(2){opacity:0}.hamburger-menu.active span:nth-child(3){transform:translateY(-9px) rotate(-45deg)}.mobile-menu{display:none;position:absolute;background-color:#212121;flex-direction:column;box-shadow:0 4px 8px #0000004d;padding:1rem;transition:transform .3s ease,opacity .3s ease;z-index:1050;opacity:0;transform:translateY(-20px)}.mobile-menu a{color:#fff;text-decoration:none;font-weight:550;font-size:1.2rem;padding:1rem;text-align:center;transition:color .3s ease}.mobile-menu a:hover{color:#ff6b00}.mobile-menu.full-width{width:100%;left:0;top:70px}.mobile-menu.popup{width:250px;right:20px;top:70px;border-radius:5px}.mobile-menu.open{display:flex;opacity:1;transform:translateY(0)}.logout-button{background-color:transparent;border:2px solid #FF6B00;color:#ff6b00;padding:.5rem 1rem;border-radius:5px;font-weight:600;font-size:1rem;cursor:pointer;transition:all .3s ease;text-transform:uppercase;letter-spacing:.5px}.logout-button:hover{background-color:#ff6b00;color:#fff}.logout-button:active{background-color:#e55a00;border-color:#e55a00}@media (max-width: 992px){.navbar-center.desktop-menu{display:none}.hamburger-menu{display:flex}.navbar-container{padding:10px 1.5rem}.navbar-left h1{font-size:2rem}.logout-button{font-size:.9rem;padding:.4rem .8rem}.navbar-right{gap:20px}}@media (max-width: 768px){.navbar-left h1{font-size:1.8rem}.navbar-container{padding:10px 0}.mobile-menu.full-width{width:100vw;left:0;right:0;top:70px;border-radius:0}.logout-button{font-size:.8rem;padding:.3rem .6rem}.navbar-right{gap:15px}}@media (max-width: 480px){.logout-button{font-size:.7rem;padding:.25rem .5rem}}*{box-sizing:border-box}.dashboard-container{height:calc(100vh - 122px);padding:min(25px,2vh);overflow:hidden}.dashboard-grid{display:grid;grid-template-columns:minmax(0,50fr) minmax(0,11fr);gap:min(25px,2vw);height:100%}.dashboard-schedule-section{background:#2a2a2a;border:2px solid #404040;border-radius:8px;padding:min(25px,2vh);height:100%;overflow:hidden;display:flex;flex-direction:column}.dashboard-stats-section{display:grid;grid-template-rows:.8fr 1.4fr .8fr;gap:min(25px,2vh);height:100%}.dashboard-stats-section>*{background:#2a2a2a;border:1px solid #404040;border-radius:8px;padding:min(25px,2vh);overflow:hidden;min-height:0}@media (max-width: 1200px){.dashboard-grid{grid-template-columns:1fr}}@media (max-width: 768px){.dashboard-container{height:auto;min-height:calc(100vh - 95px);padding:16px}.dashboard-grid{grid-template-columns:1fr;grid-template-rows:auto;gap:16px}.dashboard-schedule-section{min-height:50vh;max-height:70vh}.dashboard-stats-section{grid-template-rows:auto auto auto;grid-template-columns:1fr;gap:16px}.dashboard-stats-section>*{min-height:25vh;padding:20px}}@media (max-width: 480px){.dashboard-container{padding:12px}.dashboard-grid,.dashboard-stats-section{gap:12px}.dashboard-schedule-section,.dashboard-stats-section>*{padding:16px}}@media (max-width: 768px) and (orientation: landscape){.dashboard-schedule-section{min-height:80vh;max-height:90vh}.dashboard-stats-section>*{min-height:40vh}}@media (max-height: 600px){.dashboard-container{padding:10px}.dashboard-stats-section,.dashboard-grid{gap:10px}.dashboard-schedule-section,.dashboard-stats-section>*{padding:15px}}.today-schedule{height:100%;display:flex;flex-direction:column}.today-schedule-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:min(20px,2vh);flex-shrink:0}.today-schedule-title{display:flex;align-items:center;gap:10px;font-size:clamp(16px,2.5vh,20px);font-weight:600;color:#ff6b00;margin:0}.today-schedule-date{font-size:clamp(12px,1.8vh,14px);color:#9ca3af}.today-schedule-list{flex:1;overflow-y:auto;overflow-x:hidden;padding-right:8px;padding-bottom:8px;min-height:0}.today-schedule-item{display:flex;gap:min(20px,2vw);margin-bottom:min(20px,2vh)}.today-schedule-item:last-child{margin-bottom:0}.today-schedule-time{width:min(140px,20vw);font-size:clamp(12px,1.8vh,14px);color:#9ca3af;padding-top:4px;flex-shrink:0}.today-schedule-card{flex:1;background:#1f1f1f;border:1px solid #404040;border-left:4px solid;border-radius:8px;padding:min(18px,1.5vh) min(20px,2vw);transition:all .2s ease}.today-schedule-card:hover{background:#262626;transform:translate(2px)}.today-schedule-free-time{border-left-style:dashed;border-left-color:#6b7280!important;opacity:.7}.today-schedule-free-time p{color:#9ca3af;margin:0;font-size:clamp(12px,1.8vh,14px)}.today-schedule-module{font-size:clamp(14px,2.2vh,17px);font-weight:600;color:#f0f0f0;margin:0 0 min(6px,.6vh) 0}.today-schedule-module-title{font-size:clamp(12px,1.8vh,14px);color:#d0d0d0;margin:0 0 min(14px,1.4vh) 0}.today-schedule-details{display:flex;gap:min(20px,2vw);flex-wrap:wrap}.today-schedule-detail{display:flex;align-items:center;gap:6px;font-size:clamp(11px,1.6vh,13px);color:#9ca3af}.today-schedule-detail svg{flex-shrink:0}.today-schedule-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:min(60px,6vh) 20px;text-align:center;color:#9ca3af;height:100%}.today-schedule-empty svg{opacity:.5;margin-bottom:min(16px,1.6vh)}.today-schedule-empty p{font-size:clamp(14px,2vh,16px);margin:0 0 min(16px,1.6vh) 0}.today-schedule-create-btn{background:transparent;border:none;color:#ff6b00;font-size:clamp(12px,1.8vh,14px);cursor:pointer;transition:all .2s ease;padding:8px 16px}.today-schedule-create-btn:hover{color:#ff8533;transform:translate(4px)}.today-schedule-list::-webkit-scrollbar{width:6px}.today-schedule-list::-webkit-scrollbar-track{background:#1f1f1f;border-radius:3px}.today-schedule-list::-webkit-scrollbar-thumb{background:#404040;border-radius:3px}.today-schedule-list::-webkit-scrollbar-thumb:hover{background:#555}@media (max-height: 700px){.today-schedule-item{margin-bottom:min(15px,1.5vh)}.today-schedule-card{padding:min(12px,1.2vh) min(16px,1.6vw)}.today-schedule-module-title{margin-bottom:min(10px,1vh)}}@media (max-width: 1400px){.today-schedule-time{width:min(120px,18vw)}}@media (max-width: 768px){.today-schedule-header{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:16px}.today-schedule-title{font-size:18px}.today-schedule-date{font-size:13px}.today-schedule-item{flex-direction:column;gap:8px;margin-bottom:16px}.today-schedule-item:last-child{margin-bottom:0}.today-schedule-time{width:100%;font-size:12px;padding-top:0;font-weight:500;color:#ff6b00}.today-schedule-card{padding:14px 16px}.today-schedule-module{font-size:15px}.today-schedule-module-title{font-size:13px;margin-bottom:10px}.today-schedule-details{gap:16px}.today-schedule-detail{font-size:12px}}@media (max-width: 480px){.today-schedule-title{font-size:16px}.today-schedule-card{padding:12px 14px}.today-schedule-details{flex-direction:column;gap:6px}}.progress-card{height:100%;display:flex;flex-direction:column;border:2px solid #404040}.progress-card-title{display:flex;align-items:center;gap:8px;font-size:clamp(14px,2vh,16px);font-weight:600;color:#ff6b00;margin:0 0 min(15px,1.5vh) 0}.progress-card-content{flex:1;display:flex;flex-direction:column;justify-content:space-between}.progress-mc-section{display:flex;flex-direction:column;gap:min(6px,.6vh)}.progress-mc-header{display:flex;justify-content:space-between;align-items:center}.progress-mc-label{font-size:clamp(11px,1.6vh,12px);color:#9ca3af}.progress-mc-value{font-size:clamp(12px,1.8vh,13px);font-weight:600;color:#f0f0f0}.progress-bar-container{width:100%;height:min(6px,.8vh);background:#1f1f1f;border-radius:3px;overflow:hidden}.progress-bar-fill{height:100%;background:#ff6b00;border-radius:3px;transition:width .3s ease}.progress-year-info{font-size:clamp(11px,1.6vh,12px);color:#9ca3af;margin-top:min(8px,.8vh)}.progress-loading{display:flex;justify-content:center;align-items:center;padding:25px 0}@media (max-height: 600px){.progress-card-title{margin-bottom:min(10px,1vh)}.progress-bar-container{height:min(5px,.6vh)}}@media (max-width: 768px){.progress-card-title{font-size:15px;margin-bottom:12px}.progress-mc-label{font-size:12px}.progress-mc-value{font-size:13px}.progress-bar-container{height:8px}.progress-year-info{font-size:12px;margin-top:10px}}.semester-card{height:100%;display:flex;flex-direction:column;border:2px solid #404040}.semester-card-title{display:flex;align-items:center;gap:8px;font-size:clamp(14px,2vh,16px);font-weight:600;color:#ff6b00;margin:0 0 min(15px,1.5vh) 0}.semester-card-content{flex:1;display:flex;flex-direction:column;gap:min(16px,1.5vh);overflow:hidden}.semester-summary{font-size:clamp(12px,1.8vh,14px);color:#9ca3af;padding-bottom:min(8px,.8vh);flex-shrink:0}.semester-modules-list{list-style:none;margin:0;padding:0 4px 0 0;display:grid;grid-template-columns:1fr;grid-auto-rows:auto;gap:min(14px,1.4vh);overflow-y:auto;overflow-x:hidden}.semester-modules-list.two-columns{grid-template-columns:1fr 1fr;grid-auto-flow:column;grid-template-rows:repeat(5,auto);gap:min(14px,1.4vh) 20px}.semester-module-item{display:flex;align-items:center;gap:12px}.semester-module-dot{width:min(10px,1.2vh);height:min(10px,1.2vh);border-radius:50%;flex-shrink:0}.semester-module-code{font-size:clamp(13px,2vh,15px);color:#f0f0f0;font-weight:500}.semester-modules-list::-webkit-scrollbar{width:4px}.semester-modules-list::-webkit-scrollbar-track{background:transparent}.semester-modules-list::-webkit-scrollbar-thumb{background:#404040;border-radius:2px}@media (max-height: 700px){.semester-modules-list{gap:min(10px,1vh)}.semester-modules-list.two-columns{gap:min(10px,1vh) 20px}.semester-card-content{gap:min(12px,1.2vh)}}@media (max-height: 600px){.semester-module-dot{width:min(8px,1vh);height:min(8px,1vh)}}@media (max-width: 768px){.semester-card-title{font-size:15px;margin-bottom:12px}.semester-summary{font-size:13px;padding-bottom:10px}.semester-card-content{gap:14px}.semester-modules-list{gap:12px;max-height:none}.semester-modules-list.two-columns{grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,auto);gap:12px 16px}.semester-module-dot{width:10px;height:10px}.semester-module-code{font-size:14px}}@media (max-width: 768px) and (orientation: landscape){.semester-modules-list{grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,auto);gap:10px 20px}}@media (max-width: 480px){.semester-modules-list,.semester-modules-list.two-columns{grid-template-columns:1fr;grid-auto-flow:row;grid-template-rows:none}}.semester-loading{display:flex;justify-content:center;align-items:center;padding:65px 0}.upcoming-card{height:100%;display:flex;flex-direction:column;border:2px solid #404040}.upcoming-card-title{display:flex;align-items:center;gap:8px;font-size:clamp(14px,2vh,16px);font-weight:600;color:#ff6b00;margin:0 0 min(15px,1.5vh) 0}.upcoming-card-content{flex:1;display:flex;flex-direction:column;gap:min(8px,.8vh);justify-content:flex-start}.upcoming-event{display:flex;justify-content:space-between;align-items:center;padding:min(6px,.6vh) 0;border-bottom:1px solid #333}.upcoming-event:last-child{border-bottom:none}.upcoming-event-name{font-size:clamp(11px,1.6vh,12px);color:#9ca3af}.upcoming-event-time{font-size:clamp(11px,1.6vh,12px);font-weight:500;color:#f0f0f0}.upcoming-event-soon{color:#ff6b00;font-weight:600}@media (max-height: 600px){.upcoming-event{padding:min(4px,.4vh) 0}.upcoming-card-content{gap:min(6px,.6vh)}}@media (max-width: 768px){.upcoming-card-title{font-size:15px;margin-bottom:12px}.upcoming-card-content{gap:8px}.upcoming-event{padding:8px 0}.upcoming-event-name,.upcoming-event-time{font-size:12px}}@media (max-width: 480px){.upcoming-event{padding:6px 0}}.app-footer{background-color:#212121;border-top:1px solid #333;padding:6px 0;margin-top:auto}.footer-content{max-width:1200px;margin:0 auto;padding:0 20px;text-align:center}.footer-content p{color:#888;font-size:12px;margin:0}.footer-content a{color:#ff6b00;text-decoration:none}.footer-content a:hover{color:#f9814e;text-decoration:underline}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}.roadmap-container{position:relative;width:100%;height:calc(100vh - 6px);margin-top:6px;overflow:hidden;max-height:calc(100vh - 128px)}.react-flow__node{transition:opacity .3s ease,transform .2s ease}.roadmap-container.node-hovering .react-flow__node{opacity:.25}.roadmap-container.node-hovering .react-flow__node.node-highlighted{opacity:1;z-index:10}.react-flow__node.node-hovered{transform:scale(1.05);z-index:20}.react-flow__node.node-highlighted .custom-node{border-color:#ff6b00}.react-flow__edge-path{stroke:#6b7280;stroke-width:2;transition:stroke .3s ease,opacity .3s ease;pointer-events:none}.react-flow__edge .react-flow__arrowhead path{fill:#6b7280;transition:fill .3s ease}.react-flow__edge{pointer-events:none}.roadmap-container.node-hovering .react-flow__edge-path{opacity:.15;stroke:#4b5563}.roadmap-container.node-hovering .react-flow__edge.edge-highlighted .react-flow__edge-path{opacity:1;stroke:#ff6b00;stroke-width:2}.roadmap-container.node-hovering .react-flow__edge.edge-highlighted .react-flow__arrowhead path{fill:#ff6b00}.react-flow__edge.animated .react-flow__edge-path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}@keyframes dashdraw{to{stroke-dashoffset:-10}}.react-flow__connection{stroke:#ff6b00}.react-flow__arrowhead{transition:fill .3s ease}.react-flow svg defs marker,.react-flow svg defs marker *{opacity:1!important}.react-flow marker path,.react-flow defs marker path,.react-flow svg marker path{opacity:1!important;fill-opacity:1!important}.roadmap-container.node-hovering .react-flow__edge:not(.edge-highlighted) .react-flow__arrowhead{opacity:.15;fill:#4b5563}.roadmap-container.node-hovering .react-flow__edge.edge-highlighted .react-flow__arrowhead{opacity:1!important;fill:#ff6b00!important}[id*=react-flow__arrowclosed],[id*=react-flow__arrow]{opacity:1!important}[id*=react-flow__arrowclosed] path,[id*=react-flow__arrow] path{opacity:1!important;fill-opacity:1!important;transition:fill .3s ease}.react-flow marker{opacity:1!important}.react-flow marker path{opacity:1!important;fill-opacity:1!important}.custom-node{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transition:filter .3s ease}.react-flow__panel{background:transparent;border:none;display:flex;flex-direction:row;align-items:center;gap:6px;flex-wrap:nowrap}.add-rmv-button{padding:10px 20px;background:#2a2a2a;border:2px solid #404040;border-radius:8px;color:#f0f0f0;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;outline:none;height:40px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;margin:0;min-width:120px}.add-rmv-button:hover{border-color:#ff6b00;color:#ff6b00;background:#323232}.add-rmv-button:active{background:#1f1f1f;transform:scale(.98)}.zoom-button{padding:8px;background:#2a2a2a;border:2px solid #404040;border-radius:8px;color:#f0f0f0;font-size:14px;cursor:pointer;transition:all .2s ease;outline:none;height:40px;width:40px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;margin:0}.zoom-button:hover{border-color:#ff6b00;background:#323232}.zoom-button:hover svg{color:#ff6b00}.react-flow__edges{z-index:0}.react-flow__nodes{z-index:1}.custom-module-node{background:#2a2a2a;border:2px solid #404040;border-radius:8px;padding:12px 16px;min-width:200px;max-width:250px;box-shadow:0 2px 4px #0000004d;transition:all .2s ease;position:relative;cursor:pointer}.custom-module-node:hover{transform:translateY(-1px);box-shadow:0 4px 8px #0006}.module-content{display:flex;flex-direction:column;gap:6px}.module-header{display:flex;justify-content:space-between;align-items:center}.module-code{font-weight:700;font-size:14px;color:#f0f0f0;letter-spacing:.5px}.module-title{font-size:12px;color:#d0d0d0;line-height:1.3;font-weight:500}.status-icon{flex-shrink:0;transition:all .2s ease}.status-icon--clickable{cursor:pointer!important;border-radius:50%;padding:2px;transition:all .2s ease}.status-icon--clickable:hover{background-color:#ffffff1a;transform:scale(1.1)}.custom-module-node--available{background:#2a2a2a;border-color:#ff6b00;color:#f0f0f0}.custom-module-node--available:hover{border-color:#ff8533;box-shadow:0 4px 8px #ff6b0033}.custom-module-node--available .module-code,.custom-module-node--available .status-icon{color:#ff6b00}.custom-module-node--available .status-icon--clickable:hover{background-color:#ff6b0033}.custom-module-node--completed{background:#1a2f1a;border-color:#4ade80;color:#f0f0f0}.custom-module-node--completed:hover{border-color:#65e194;box-shadow:0 4px 8px #4ade8033}.custom-module-node--completed .module-code{color:#4ade80}.custom-module-node--completed .module-title{color:#e0f2e0}.custom-module-node--completed .status-icon{color:#4ade80}.custom-module-node--completed .status-icon--clickable:hover{background-color:#4ade8033}.custom-module-node--locked{background:#1a1a1a;border-color:#525252;color:#9ca3af;cursor:not-allowed}.custom-module-node--locked:hover{transform:none;border-color:#6b7280;box-shadow:0 2px 4px #0000004d}.custom-module-node--locked .module-code,.custom-module-node--locked .module-title{color:#6b7280}.custom-module-node--locked .status-icon{color:#6b7280;cursor:not-allowed}.module-handle{background:#ff6b00;border:2px solid #2a2a2a;width:8px;height:8px;transition:all .2s ease}.module-handle:hover{background:#ff8533;transform:scale(1.2)}.custom-module-node--completed .module-handle{background:#4ade80}.custom-module-node--completed .module-handle:hover{background:#65e194}.custom-module-node--locked .module-handle{background:#6b7280;cursor:not-allowed}.custom-module-node--locked .module-handle:hover{background:#6b7280;transform:none}.module-handle--invisible{opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important}.node-info-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000c;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fadeIn .2s ease-out}.node-info-modal-content{background:#1a1a1a;border:1px solid #333;border-radius:12px;padding:0;max-width:600px;width:90%;height:80vh;max-height:600px;display:flex;flex-direction:column;box-shadow:0 8px 32px #00000080;animation:slideIn .3s ease-out}@keyframes slideIn{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.node-info-modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #333;background:#242424;border-radius:12px 12px 0 0;flex-shrink:0}.node-info-modal-header-left{display:flex;align-items:center;gap:12px}.node-info-modal-module-code{font-size:24px;font-weight:700;color:#ff6b00;margin:0;letter-spacing:.5px}.node-info-status-badge{padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.node-info-status-badge--available{background:#ff6b0033;color:#ff6b00;border:1px solid rgba(255,107,0,.3)}.node-info-status-badge--completed{background:#4ade8033;color:#4ade80;border:1px solid rgba(74,222,128,.3)}.node-info-status-badge--locked{background:#6b728033;color:#6b7280;border:1px solid rgba(107,114,128,.3)}.node-info-modal-close{background:transparent;border:none;color:#999;cursor:pointer;padding:8px;border-radius:8px;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.node-info-modal-close:hover{background:#ffffff1a;color:#fff}.node-info-modal-body{flex:1;overflow-y:auto;padding:0 24px}.node-info-modal-title{font-size:18px;font-weight:600;color:#f0f0f0;margin:20px 0 0;line-height:1.4}.node-info-modal-info-row{padding:20px 0;border-bottom:1px solid #333}.node-info-info-item{display:flex;align-items:center;gap:8px}.node-info-info-icon{color:#ff6b00}.node-info-info-label{font-size:14px;color:#999}.node-info-info-value{font-size:14px;font-weight:600;color:#f0f0f0}.node-info-modal-section{padding:20px 0;border-bottom:1px solid #333}.node-info-modal-section:last-child{border-bottom:none;padding-bottom:20px}.node-info-section-title{font-size:14px;font-weight:600;color:#f0f0f0;margin:0 0 12px;text-transform:uppercase;letter-spacing:.5px;display:flex;align-items:center;gap:8px}.node-info-section-icon{color:#ff6b00}.node-info-modal-description{font-size:14px;line-height:1.6;color:#d0d0d0;margin:0;text-align:left;white-space:pre-wrap;word-wrap:break-word}.node-info-modal-footer{padding:20px 24px;background:#242424;border-top:1px solid #333;display:flex;justify-content:flex-end;border-radius:0 0 12px 12px;flex-shrink:0}.node-info-nusmods-button{background:#ff6b00;color:#fff;border:none;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:8px}.node-info-nusmods-button:hover{background:#e55a00}.node-info-modal-body::-webkit-scrollbar{width:8px}.node-info-modal-body::-webkit-scrollbar-track{background:#1a1a1a}.node-info-modal-body::-webkit-scrollbar-thumb{background:#444;border-radius:4px}.node-info-modal-body::-webkit-scrollbar-thumb:hover{background:#555}@media (max-width: 600px){.node-info-modal-content{width:95%;height:90vh;max-height:90vh;margin:20px}.node-info-modal-header{padding:16px 20px}.node-info-modal-body{padding:0 20px}.node-info-modal-module-code{font-size:20px}.node-info-modal-title{font-size:16px}.node-info-modal-section,.node-info-modal-info-row{padding:16px 0}.node-info-modal-footer{padding:16px 20px}}.major-dropdown{position:relative;width:100%;max-width:280px;min-width:220px;font-family:inherit}.major-dropdown *{box-sizing:border-box}.major-dropdown>.major-dropdown-trigger{width:100%;display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#2a2a2a;border:2px solid #404040;border-radius:8px;color:#f0f0f0;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;outline:none;height:40px;margin:0;box-sizing:border-box}.major-dropdown>.major-dropdown-trigger:hover{border-color:#ff6b00;background:#323232}.major-dropdown-label{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.major-dropdown-label.placeholder{color:#9ca3af}.major-dropdown-icon{flex-shrink:0;margin-left:8px;transition:transform .2s ease;color:#9ca3af}.major-dropdown-icon--open{transform:rotate(180deg)}.major-dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;width:100%;background:#1f1f1f;border:2px solid #404040;border-radius:8px;box-shadow:0 10px 30px #00000080;z-index:1000;overflow:hidden;animation:dropdownSlideIn .2s ease-out;box-sizing:border-box}@keyframes dropdownSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.major-dropdown-search{position:relative;padding:12px;border-bottom:1px solid #333;background:#1a1a1a}.major-dropdown-search-icon{position:absolute;left:24px;top:50%;transform:translateY(-50%);color:#9ca3af;pointer-events:none;z-index:1}.major-dropdown-search-input{width:100%;padding:10px 16px 10px 44px;background:#2a2a2a;border:1px solid #404040;border-radius:6px;color:#f0f0f0;font-size:14px;outline:none;transition:all .2s ease;box-sizing:border-box}.major-dropdown-search-input::placeholder{color:#6b7280}.major-dropdown-search-input:focus{border-color:#ff6b00;background:#333}.major-dropdown-results{max-height:240px;overflow-y:auto;background:#1f1f1f}.major-dropdown-results::-webkit-scrollbar{width:8px}.major-dropdown-results::-webkit-scrollbar-track{background:#1a1a1a}.major-dropdown-results::-webkit-scrollbar-thumb{background:#404040;border-radius:4px}.major-dropdown-results::-webkit-scrollbar-thumb:hover{background:#525252}.major-dropdown-empty{padding:32px 24px;text-align:center;color:#6b7280;font-size:14px}.major-dropdown-list{padding:4px}.major-dropdown-item{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;margin-bottom:2px;background:transparent;border:2px solid transparent;border-radius:6px;color:#d0d0d0;font-size:14px;text-align:left;cursor:pointer;transition:all .15s ease;position:relative;box-sizing:border-box}.major-dropdown-item:last-child{margin-bottom:0}.major-dropdown-item:hover{background:#ffffff0d;color:#f0f0f0}.major-dropdown-item--selected:hover{background:#ff6b0026;border-color:#ff6b004d}.major-dropdown-item--active{background:#ff6b0033;border-color:#ff6b00;color:#f0f0f0;font-weight:600;position:relative}.major-dropdown-item--active:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#ff6b00;border-radius:6px 0 0 6px}.major-dropdown-item--active:hover{background:#ff6b0040}.major-dropdown-item-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:8px}@media (max-width: 640px){.major-dropdown{width:100%;min-width:200px}.major-dropdown-menu{position:fixed;top:auto;bottom:0;left:0;right:0;border-radius:16px 16px 0 0;max-height:70vh;animation:mobileSlideUp .3s ease-out}@keyframes mobileSlideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.major-dropdown-results{max-height:50vh}}.add-remove-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.add-remove-modal{background:#2a2a2a;border:1px solid #404040;border-radius:12px;width:90%;max-width:800px;height:80vh;max-height:600px;display:flex;flex-direction:column;animation:add-remove-modal-slide-in .2s ease-out;position:relative}@keyframes add-remove-modal-slide-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.add-remove-modal-header{padding:20px 20px 16px;display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;background-color:#242424;border-radius:12px 12px 0 0}.add-remove-modal-title{color:#f0f0f0;font-size:25px;font-weight:600;margin:0}.add-remove-modal-close{position:absolute;right:20px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:#fff9;cursor:pointer;padding:6px;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.add-remove-modal-close:hover{color:#fffffff2;background-color:#ffffff14}.add-remove-modal-close:active{background-color:#ffffff1f}.add-remove-modal-close:focus-visible{outline:2px solid rgba(255,107,0,.5);outline-offset:0}.mod-search-section{background-color:#242424;padding:0 20px 20px;flex-shrink:0;position:relative;z-index:20}.search-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#1f1f1f;border:2px solid #404040;border-radius:8px;max-height:420px;overflow:hidden;z-index:10;box-shadow:0 10px 30px #00000080}.search-results-list{overflow-y:auto;max-height:420px}.search-empty-state,.search-loading-state{padding:48px 24px;text-align:center;color:#6b7280;font-size:15px}.search-result-item:hover{background-color:#ffffff05}.search-result-item.selected{background-color:#8f98a71a}.search-result-item.in-roadmap{background-color:#ff6b001a}.search-result-item.in-roadmap:hover{background-color:#ff6b001f}.search-result-item.in-roadmap.selected{background-color:#ff6b002e}.result-prereqs{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:12px;color:#ef4444;max-width:100%}.result-prereqs span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.result-prereqs svg{flex-shrink:0;width:12px;height:12px}.action-icon-button.locked{background:#6b72801a;color:#6b7280;cursor:not-allowed}.module-tag{display:inline-flex;align-items:center;gap:6px;padding:6px 10px 6px 12px;background:#1f1f1f;border:1px solid #404040;border-radius:20px;transition:all .15s ease}.module-tag.module-tag-completed{background:#4ade801a;border-color:#4ade80}.module-tag.module-tag-available{background:#ff6b001a;border-color:#ff6b00}.module-tag.module-tag-locked{background:#6b72801a;border-color:#6b7280}.module-tag:hover{background:#ef444426!important;border-color:#ef4444!important}.search-empty-state{font-weight:500}.confirm-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:2000;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.confirm-dialog{background:#2a2a2a;border:1px solid #404040;border-radius:12px;padding:32px;max-width:450px;width:90%;text-align:center;animation:confirmSlideIn .2s ease-out}@keyframes confirmSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.confirm-icon{margin-bottom:20px}.confirm-title{color:#f0f0f0;font-size:20px;font-weight:600;margin:0 0 12px}.confirm-message{color:#d0d0d0;font-size:15px;line-height:1.5;margin:0 0 20px}.confirm-message strong{color:#ff6b00}.confirm-dependents{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:28px}.dependent-module{background:#ef44441a;color:#ef4444;padding:6px 12px;border-radius:6px;font-size:13px;font-weight:500;border:1px solid rgba(239,68,68,.3)}.confirm-actions{display:flex;gap:12px;justify-content:center}.confirm-button{padding:10px 24px;border-radius:8px;font-size:14px;font-weight:500;border:none;cursor:pointer;transition:all .15s ease;min-width:100px}.confirm-button.cancel{background:#404040;color:#f0f0f0}.confirm-button.cancel:hover{background:#525252}.confirm-button.remove{background:#ef4444;color:#fff}.confirm-button.remove:hover{background:#dc2626}@media (max-width: 768px){.add-remove-modal{width:95%;height:90vh;max-height:none}.add-remove-modal-header,.mod-search-section,.current-modules-section{padding-left:16px;padding-right:16px}.search-dropdown{max-height:300px}.confirm-dialog{padding:24px}.confirm-actions{flex-direction:column}.confirm-button{width:100%}}@media (max-width: 480px){.add-remove-modal-title{font-size:16px}.search-input{font-size:14px;padding:12px 44px}.result-code{font-size:14px}.result-title{font-size:12px}}.loading-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#212121;display:flex;justify-content:center;align-items:center;z-index:9999;margin:0;padding:0}.loading-content{display:flex;justify-content:center;align-items:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.loader{width:60px;aspect-ratio:2;--_g: no-repeat radial-gradient(circle closest-side, #FF6B00 90%, #0000);background:var(--_g) 0% 50%,var(--_g) 50% 50%,var(--_g) 100% 50%;background-size:calc(100%/3) 50%;animation:l3 1s infinite linear;margin:0;padding:0}@keyframes l3{20%{background-position:0% 0%,50% 50%,100% 50%}40%{background-position:0% 100%,50% 0%,100% 50%}60%{background-position:0% 50%,50% 100%,100% 0%}80%{background-position:0% 50%,50% 50%,100% 100%}}.custom-timetable-wrapper{background:#212121;border-radius:12px;border:1px solid #404040;overflow:hidden;height:100%;display:flex;flex-direction:column;box-shadow:0 2px 8px #0000004d}.custom-timetable-grid{flex:1;display:flex;flex-direction:column;overflow:visible;min-height:0}.timetable-header{display:flex;background:#2a2a2a;border-bottom:2px solid #404040;flex-shrink:0}.time-header{width:80px;padding:16px 8px;background:#3a3a3a;color:#fff;font-weight:600;font-size:.9rem;text-align:center;border-right:1px solid #404040}.day-header{flex:1;padding:16px 8px;color:#ff6b00;font-weight:600;font-size:1rem;text-align:center;border-right:1px solid #404040;background:#2a2a2a;text-transform:uppercase;letter-spacing:.5px}.timetable-body{background:#212121}.time-row{display:flex;border-bottom:1px solid #333;height:60px}.time-cell{width:80px;padding:8px;background:#2a2a2a;color:#ccc;font-size:.8rem;text-align:center;border-right:1px solid #404040;display:flex;align-items:center;justify-content:center;font-weight:500}.timetable-cell{flex:1;border-right:1px solid #333;background:#212121;position:relative;height:60px;transition:background-color .2s ease;overflow:visible}.timetable-cell:hover{background:#2a2a2a}.timetable-cell:last-child{border-right:none}.timetable-block{position:absolute;border-radius:6px;color:#fff;font-weight:600;padding:6px 8px;box-shadow:0 2px 6px #0000004d;transition:all .2s ease;cursor:pointer;border-left:4px solid rgba(255,255,255,.3);z-index:1;box-sizing:border-box;overflow:hidden}.timetable-block:hover{filter:brightness(.9)}.timetable-block.alternative{background:#7c3aed!important;border-left-color:#ffffff80;animation:pulse-alternative 2s infinite}.timetable-block.current-selection{opacity:.6;transform:none}.timetable-block.current-selection:hover{opacity:.8;transform:translateY(-1px)}.timetable-block.custom-block{border-left-color:#fff9;font-style:italic;cursor:default}.timetable-block.custom-block:hover{transform:none;box-shadow:0 2px 6px #0000004d}@keyframes pulse-alternative{0%,to{box-shadow:0 0 8px #7c3aed99}50%{box-shadow:0 0 16px #7c3aedcc}}.block-content{width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-start;gap:1px;overflow:hidden}.block-title{font-weight:700;font-size:.85rem;color:#fff;line-height:1.1;margin:0;text-shadow:0 1px 2px rgba(0,0,0,.3);white-space:normal;word-wrap:break-word;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.block-subtitle{font-weight:500;font-size:.7rem;color:#fffffff2;line-height:1;margin:0;white-space:normal;word-wrap:break-word;overflow-wrap:break-word}.block-venue{font-size:.65rem;color:#ffffffd9;line-height:1;white-space:normal;word-wrap:break-word;overflow-wrap:break-word;margin:0;font-style:italic}.block-time{font-size:.6rem;color:#fffc;line-height:1;margin:0;font-weight:400;white-space:nowrap}.no-content-message{flex:1;display:flex;align-items:center;justify-content:center;color:#666;font-size:1.1rem;font-style:italic;padding:60px 20px;text-align:center}.no-content-message p{margin:0;max-width:400px;line-height:1.5}.cancel-alternatives:hover{background:#7c3aed1a}.more-indicator{display:flex;align-items:center;justify-content:center;font-weight:600;cursor:pointer;opacity:.9}.more-indicator:hover{opacity:1;transform:none}.more-blocks-modal{width:90%;max-width:500px;max-height:70vh;display:flex;flex-direction:column}.more-blocks-content{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:12px}.more-block-item{background:#1f1f1f;border:1px solid #404040;border-radius:8px;padding:16px;cursor:pointer;transition:all .2s ease}.more-block-item:hover{background:#2a2a2a;border-color:#ff6b00}.more-block-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.more-block-code{font-weight:600;color:#ff6b00;font-size:16px}.more-block-type{color:#9ca3af;font-size:14px}.more-block-venue{color:#d0d0d0;font-size:14px;margin-bottom:4px}.more-block-time{color:#9ca3af;font-size:13px}@media (max-width: 1024px){.time-header,.time-cell{width:70px;padding:12px 4px;font-size:.8rem}.day-header{padding:12px 6px;font-size:.9rem}.timetable-block{padding:4px 6px}.block-title{font-size:.8rem}.block-subtitle{font-size:.65rem}.block-venue{font-size:.6rem}.block-time{font-size:.55rem}}@media (max-width: 768px){.time-header,.time-cell{width:60px;padding:8px 2px;font-size:.75rem}.day-header{padding:8px 4px;font-size:.85rem}.time-row,.timetable-cell{min-height:50px}.timetable-block{padding:3px 4px;left:1px;right:1px}.block-title{font-size:.75rem}.block-subtitle{font-size:.6rem}.block-venue{font-size:.55rem}.block-time{font-size:.5rem}.alternatives-info{padding:8px 12px;flex-direction:column;gap:8px;align-items:stretch}.alternatives-info span{font-size:.85rem;text-align:center}.cancel-alternatives{align-self:center;width:fit-content}.alternatives-instructions{padding:12px 16px}.alternatives-instructions p{font-size:.85rem}}@media (max-width: 480px){.time-header,.time-cell{width:50px;padding:6px 2px;font-size:.7rem}.day-header{padding:6px 2px;font-size:.8rem}.time-row,.timetable-cell{min-height:45px}.block-title{font-size:.7rem}.block-subtitle{font-size:.55rem}.block-venue{font-size:.5rem}.block-time{font-size:.45rem}.no-content-message{font-size:1rem;padding:40px 16px}}.timetable-add-modal-size{width:90%;max-width:700px;height:80vh;max-height:600px}.timetable-search-section{background:#242424;padding:15px;position:relative;z-index:20}.search-container{position:relative}.search-input-wrapper{position:relative;display:flex;align-items:center}.search-icon{position:absolute;left:16px;color:#9ca3af;pointer-events:none;z-index:1}.search-input{width:100%;padding:14px 44px 14px 48px;background:#1f1f1f;border:2px solid #404040;border-radius:8px;color:#f0f0f0;font-size:16px;transition:all .2s ease}.search-input:focus{outline:none;border-color:#ff6b00;background:#1a1a1a}.search-input::placeholder{color:#6b7280}.search-clear{position:absolute;right:12px;background:none;border:none;color:#6b7280;cursor:pointer;padding:4px;border-radius:4px;transition:all .15s ease;display:flex;align-items:center;justify-content:center}.search-clear:hover{color:#f0f0f0;background:#ffffff1a}.search-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#1f1f1f;border:2px solid #404040;border-radius:8px;max-height:320px;overflow:hidden;z-index:10;box-shadow:0 10px 30px #00000080}.search-results-list{overflow-y:auto;max-height:320px}.search-empty-state,.search-loading-state{padding:32px 24px;text-align:center;color:#6b7280;font-size:15px}.search-loading-state{display:flex;flex-direction:column;align-items:center;gap:12px}.loading-spinner{width:24px;height:24px;border:2px solid #404040;border-top-color:#ff6b00;border-radius:50%;animation:spin .8s linear infinite}.search-result-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #333;transition:all .15s ease}.search-result-item:last-child{border-bottom:none}.search-result-item:hover{background:#ffffff05}.search-result-item.selected{background:#8f98a71a}.search-result-item.in-timetable{background:#ff6b001a}.search-result-item.in-timetable:hover{background:#ff6b001f}.search-result-item.in-timetable.selected{background:#ff6b002e}.result-content{flex:1;min-width:0;overflow:hidden}.result-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.result-code{font-weight:600;color:#ff6b00;font-size:15px;letter-spacing:.02em}.result-credits{font-size:12px;color:#9ca3af;background:#333;padding:2px 6px;border-radius:4px}.result-title{font-size:13px;color:#d0d0d0;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.result-action{flex-shrink:0;margin-left:12px}.action-icon-button{width:32px;height:32px;border-radius:6px;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s ease;outline:none}.action-icon-button.add{background:#10b98126;color:#10b981}.action-icon-button.add:hover{background:#19936a;color:#fff}.action-icon-button.remove{background:#ef444426;color:#ef4444}.action-icon-button.remove:hover{background:#ed5959;color:#fff}.current-modules-section{flex:1;padding:20px 24px 24px;overflow-y:auto;border-top:1px solid #404040;background:#242424;min-height:0;border-radius:0 0 12px 12px}.section-title{margin:0 0 16px;color:#f0f0f0;font-size:15px;font-weight:600}.module-tags{display:flex;flex-wrap:wrap;gap:8px;cursor:default}.module-tag{display:inline-flex;align-items:center;gap:6px;padding:6px 10px 6px 12px;background:#ff6b001a;border:1px solid #FF6B00;border-radius:20px;transition:all .15s ease}.module-tag:hover{background:#ef444426;border-color:#ef4444}.tag-code{font-size:13px;font-weight:500;color:#f0f0f0}.tag-remove{background:none;border:none;color:#6b7280;cursor:pointer;padding:2px;border-radius:50%;transition:all .15s ease;display:flex;align-items:center;justify-content:center}.tag-remove:hover{color:#ef4444;background:#ef444433}.no-modules-message{text-align:center;color:#6b7280;font-style:italic;margin-top:20px}.no-modules-message p{margin:0;line-height:1.5}.search-results-list::-webkit-scrollbar,.current-modules-section::-webkit-scrollbar{width:6px}.search-results-list::-webkit-scrollbar-track,.current-modules-section::-webkit-scrollbar-track{background:#1f1f1f}.search-results-list::-webkit-scrollbar-thumb,.current-modules-section::-webkit-scrollbar-thumb{background:#404040;border-radius:3px}.search-results-list::-webkit-scrollbar-thumb:hover,.current-modules-section::-webkit-scrollbar-thumb:hover{background:#525252}.result-code strong,.result-title strong{font-weight:800;color:inherit}@media (max-width: 768px){.timetable-add-modal-size{width:95%;height:90vh;max-height:none}.timetable-search-section,.current-modules-section{padding-left:16px;padding-right:16px}.search-dropdown,.search-results-list{max-height:240px}}@media (max-width: 480px){.search-input{font-size:14px;padding:12px 44px}.result-code{font-size:14px}.result-title{font-size:12px}}.custom-block-modal-size{width:90%;max-width:500px}.days-selector{display:flex;gap:8px;flex-wrap:wrap}.day-button{padding:10px 16px;background:#1f1f1f;border:2px solid #404040;border-radius:8px;color:#f0f0f0;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;min-width:60px}.day-button:hover{border-color:#ff6b00;background:#ff6b001a}.day-button.selected{background:#ff6b00;border-color:#ff6b00;color:#fff}.time-group{display:grid;grid-template-columns:1fr 1fr;gap:16px}.color-selector{display:flex;gap:8px;flex-wrap:wrap}.color-option{width:36px;height:36px;border:3px solid transparent;border-radius:8px;cursor:pointer;transition:all .2s ease;background-clip:padding-box}.color-option:hover{transform:scale(1.1);box-shadow:0 4px 8px #0000004d}.color-option.selected{border-color:#fff;transform:scale(1.15);box-shadow:0 6px 12px #0006}.time-group input[type=time]{padding:12px 16px;background:#1f1f1f;border:2px solid #404040;border-radius:8px;color:#f0f0f0;font-size:14px;transition:all .2s ease}.time-group input[type=time]:focus{outline:none;border-color:#ff6b00;background:#1a1a1a}@media (max-width: 768px){.custom-block-modal-size{width:95%;margin:20px}.time-group{grid-template-columns:1fr;gap:12px}.days-selector{gap:6px}.day-button{padding:8px 12px;min-width:50px;font-size:13px}.color-option{width:32px;height:32px}}@media (max-width: 480px){.day-button{padding:6px 10px;font-size:12px}.color-option{width:28px;height:28px}}.alert-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:2000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.alert-modal-content{background:#2a2a2a;color:#fff;border-radius:16px;border:2px solid #404040;max-width:360px;width:90%;padding:1.75rem;text-align:center;animation:alertModalSlideIn .2s ease-out}@keyframes alertModalSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.alert-modal-icon{color:#ef4444;margin-bottom:1rem}.alert-modal-message{margin:0 0 1.5rem;font-size:.95rem;line-height:1.5;color:#d0d0d0}.alert-modal-button{padding:.6rem 2rem;border-radius:8px;font-size:.95rem;font-weight:500;cursor:pointer;transition:all .2s ease;border:none;background:#ff6b00;color:#fff;min-width:100px}.alert-modal-button:hover{background:#e55a00}.alert-modal-button:active{background:#cc5200}.alert-modal-button:focus-visible{outline:2px solid rgba(255,107,0,.5);outline-offset:2px}@media (max-width: 480px){.alert-modal-content{padding:1.5rem}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-container{background:#2a2a2a;border:1px solid #404040;border-radius:12px;display:flex;flex-direction:column;animation:modal-slide-in .2s ease-out;overflow:hidden}@keyframes modal-slide-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.modal-header{padding:20px 20px 16px;display:flex;align-items:center;justify-content:center;position:relative;background:#242424;border-radius:12px 12px 0 0}.modal-title{color:#f0f0f0;font-size:22px;font-weight:600;margin:0}.modal-close{position:absolute;right:20px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:#fff9;cursor:pointer;padding:6px;border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all .15s ease}.modal-close:hover{color:#fffffff2;background:#ffffff14}.modal-form{padding:20px 24px 24px;background:#242424;border-radius:0 0 12px 12px;display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{color:#f0f0f0;font-size:14px;font-weight:500}.form-input{padding:12px 16px;background:#1f1f1f;border:2px solid #404040;border-radius:8px;color:#f0f0f0;font-size:14px;transition:all .2s ease}.form-input:focus{outline:none;border-color:#ff6b00;background:#1a1a1a}.form-input::placeholder{color:#6b7280}.btn{padding:12px 24px;border-radius:8px;font-size:14px;font-weight:500;border:none;cursor:pointer;transition:all .15s ease;min-width:100px;display:flex;align-items:center;justify-content:center;gap:8px}.btn-cancel{background:#404040;color:#f0f0f0}.btn-cancel:hover{background:#525252}.btn-primary{background:#ff6b00;color:#fff}.btn-primary:hover{background:#ff6b00}.btn-primary:disabled{background:#666;color:#999;cursor:not-allowed}.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:8px}.spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top:2px solid #fff;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.modal-container{width:95%;margin:20px}.modal-header,.modal-form{padding-left:16px;padding-right:16px}.form-actions{flex-direction:column}.btn{width:100%}}@media (max-width: 480px){.modal-title{font-size:18px}.form-input{padding:10px 14px;font-size:13px}}.time-preference-modal-size{width:100%;max-width:900px;height:85vh;max-height:800px}.time-preference-content{flex:1;padding:12px 20px 16px;background:#242424;border-radius:0 0 12px 12px;display:flex;flex-direction:column;gap:8px;min-height:0;overflow:hidden}.time-preference-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;flex-wrap:wrap;gap:8px;flex-shrink:0}.grid-controls{display:flex;align-items:center;gap:12px;width:100%;justify-content:space-between}.selection-info{color:#ccc;font-size:.85rem;font-style:italic}.control-buttons{display:flex;gap:8px}.control-button{background:transparent;border:1px solid #666;color:#ccc;padding:4px 10px;border-radius:4px;cursor:pointer;transition:all .2s ease;font-size:.8rem}.control-button:hover:not(:disabled){border-color:#ff6b00;color:#ff6b00;background:#ff6b001a}.control-button:disabled{opacity:.5;cursor:not-allowed}.grid-instructions{margin-bottom:0;flex-shrink:0}.grid-instructions p{color:#9ca3af;font-size:.8rem;margin:0;line-height:1.3}.time-preference-grid{border:1px solid #444;border-radius:6px;overflow:hidden;background:#1a1a1a;flex:1;display:flex;flex-direction:column;min-height:0}.grid-header{display:flex;background:#333;border-bottom:1px solid #444;flex-shrink:0}.time-column-header{width:70px;padding:8px 4px;background:#3a3a3a;color:#fff;font-weight:600;font-size:.8rem;text-align:center;border-right:.5px solid #444}.day-header{flex:1;padding:8px 4px;color:#fff;font-weight:600;font-size:.8rem;text-align:center;border-right:.5px solid #444;background:#333}.day-header:last-child{border-right:none}.grid-body{flex:1;min-height:0;display:flex;flex-direction:column}.time-row{display:flex;border-bottom:.5px solid #444;flex:1;min-height:0}.time-row:last-child{border-bottom:none}.time-label{width:70px;padding:4px 2px;background:#2a2a2a;color:#ccc;font-size:.7rem;text-align:center;border-right:.5px solid #444;display:flex;align-items:center;justify-content:center;font-weight:500}.time-slot{flex:1;border-right:.5px solid #333;cursor:pointer;background:#1a1a1a;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center}.time-slot:last-child{border-right:none}.time-slot.available{background:#49d67e;border-color:#16a34a}.time-slot.blocked{background:#cb4240;border-color:#dc2626}.slot-content{width:100%;height:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}.selection-indicator{color:#fff;font-weight:700;font-size:12px;pointer-events:none}.usage-hint{margin-top:8px;color:#94a3b8;font-size:.75rem;line-height:1.3;flex-shrink:0}.usage-hint strong{color:#ff6b00}.optimize-section{margin-top:12px;display:flex;justify-content:flex-end;gap:12px;flex-shrink:0}.optimize-button-container{display:flex;gap:12px;align-items:center}@media (max-width: 768px){.time-preference-modal-size{width:100%;height:90vh;max-height:90vh}.time-preference-content{padding-left:12px;padding-right:12px}.time-preference-header{flex-direction:column;align-items:stretch;gap:6px}.grid-controls{align-items:stretch}.control-buttons{justify-content:space-between}.time-column-header{width:50px;padding:8px 2px;font-size:.7rem}.time-label{width:50px;font-size:.65rem;padding:2px 1px}.day-header{font-size:.7rem;padding:8px 2px}.selection-indicator{font-size:10px}.optimize-section{flex-direction:column;align-items:stretch}.optimize-button-container{flex-direction:column;gap:8px}}@media (max-width: 480px){.time-column-header{width:45px;padding:6px 1px;font-size:.65rem}.time-label{width:45px;font-size:.6rem;padding:2px 1px}.day-header{font-size:.65rem;padding:6px 1px}.selection-indicator{font-size:9px}}.timetable-container{padding:3rem 2rem 1rem}.timetable-content{max-width:1280px;margin:0 auto;display:flex;flex-direction:column;gap:20px}.timetable-action-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 24px;background:#2a2a2a;border:1px solid #404040;border-radius:12px;box-shadow:0 2px 8px #0000004d;flex-wrap:wrap}.action-buttons-left{display:flex;align-items:center;gap:16px}.semester-buttons-right{display:flex;align-items:center;gap:0;background:#1a1a1a;border:1px solid #404040;border-radius:8px;padding:4px}.action-button{display:flex;align-items:center;gap:8px;padding:12px 20px;border:2px solid #FF6B00;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .15s ease;background:transparent;color:#ff6b00;white-space:nowrap;outline:none;min-height:48px;box-sizing:border-box}.action-button:hover{background:#ff6b001a}.action-button:active{transform:scale(.98)}.action-button:disabled{border-color:#666;color:#999;cursor:not-allowed;background:transparent}.action-button:disabled:hover{background:transparent;transform:none}.semester-button{display:flex;align-items:center;gap:8px;padding:8px 16px;border:none;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .15s ease;background:transparent;color:#9ca3af;white-space:nowrap;outline:none;min-height:36px;box-sizing:border-box}.semester-button:hover{color:#ff6b00;background:#ff6b001a}.semester-button.active{background:#ff6b00;color:#fff}.semester-button.active:hover{background:#ff8533;color:#fff}.timetable-section{background:#212121;border:1px solid #404040;border-radius:12px;box-shadow:0 2px 8px #0000004d;overflow:hidden}@media (max-width: 1200px){.timetable-container{padding:2rem 1.5rem 1rem}}@media (max-width: 768px){.timetable-container{padding:1.5rem 1rem}.timetable-action-bar{flex-direction:column;gap:16px;align-items:stretch;padding:16px}.action-buttons-left{flex-direction:column;gap:12px;width:100%}.semester-buttons-right{align-self:center}.action-button{width:100%;justify-content:center;padding:12px 16px}}@media (max-width: 480px){.action-button{padding:10px 14px;font-size:.85rem}.semester-button{padding:6px 12px;font-size:.85rem}}.export-button{position:fixed;bottom:24px;right:24px;width:56px;height:56px;border-radius:50%;background:transparent;border:2px solid #FF6B00;color:#ff6b00;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0000004d;transition:all .15s ease;z-index:100}.export-button:hover{background:#ff6b001a}.export-button:active{transform:scale(.98)}.export-button svg{width:24px;height:24px}@media (max-width: 768px){.export-button{bottom:20px;right:20px;width:48px;height:48px}.export-button svg{width:20px;height:20px}}.timetable-page{height:100vh}.stats-section{margin-bottom:4rem}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.stat-card{background-color:#2a2a2a;border-radius:8px;padding:1rem;border:2px solid #404040;transition:all .2s ease;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.stat-header{display:flex;justify-content:space-between;align-items:center}.stat-label{font-size:.75rem;color:#9ca3af;letter-spacing:.05em}.stat-icon{width:1rem;height:1rem;transition:color .2s ease}.stat-icon-orange{color:#ff6b00}.stat-icon-blue{color:#4a9eff}.stat-icon-green{color:#42c35a}.stat-value{font-size:2.5rem;font-weight:700;color:#f0f0f0;margin:.7rem 0rem}.stat-value-primary{color:#ff6b00}.stat-subtitle{font-size:.75rem;color:#6b7280}@media (max-width: 768px){.stats-grid{grid-template-columns:1fr}}.module-search-container{position:relative;flex:1}.module-search-input-wrapper{position:relative;display:flex;align-items:center}.module-search-input{padding:.5rem 2rem .5rem .5rem;background-color:#1f1f1f;border:2px solid #404040;border-radius:.5rem;color:#f0f0f0;font-size:.875rem;transition:all .2s ease;width:100%;height:2.5rem;box-sizing:border-box;min-height:2.5rem}.module-search-input:focus{outline:none;border-color:#ff6b00;background:#1a1a1a}.module-search-input::placeholder{color:#6b7280}.module-search-clear{position:absolute;right:.5rem;display:flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;background-color:transparent;border:none;border-radius:.375rem;color:#6b7280;cursor:pointer;transition:all .15s ease}.module-search-clear:hover{color:#f0f0f0;background-color:#ffffff14}.module-search-dropdown{position:absolute;top:calc(100% + .25rem);left:0;right:0;background-color:#2a2a2a;border:2px solid #404040;border-radius:.5rem;box-shadow:0 10px 15px -3px #0000004d,0 4px 6px -2px #0003;z-index:50;max-height:240px;overflow-y:auto;animation:dropdownSlideIn .2s ease-out}@keyframes dropdownSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.module-search-loading{display:flex;align-items:center;gap:.75rem;padding:1rem;color:#9ca3af;font-size:.875rem}.module-search-spinner{width:1rem;height:1rem;border:2px solid #404040;border-top-color:#ff6b00;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.module-search-empty{padding:1rem;color:#9ca3af;font-size:.875rem;text-align:center;line-height:1.5}.module-search-results{padding:.25rem}.module-search-item{padding:.75rem 1rem;cursor:pointer;transition:all .15s ease;border-radius:.375rem;margin:.125rem 0}.module-search-item:hover{background-color:#ff6b001a}.module-search-item.selected{background-color:#ff6b0026;outline:1px solid rgba(255,107,0,.3)}.module-search-item-code{font-family:monospace;font-size:.875rem;font-weight:600;color:#ff6b00;margin-bottom:.25rem}.module-search-item-title{font-size:.8125rem;color:#d0d0d0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.3}.module-search-dropdown::-webkit-scrollbar{width:8px}.module-search-dropdown::-webkit-scrollbar-track{background:#1f1f1f;border-radius:4px}.module-search-dropdown::-webkit-scrollbar-thumb{background:#404040;border-radius:4px}.module-search-dropdown::-webkit-scrollbar-thumb:hover{background:#525252}.module-search-dropdown::-webkit-scrollbar-thumb:active{background:#ff6b00}@media (max-width: 768px){.module-search-dropdown{max-height:200px}.module-search-item{padding:.875rem 1rem}}.academic_history{margin-bottom:4rem}.academic_history_section_header{display:flex;justify-content:space-between;align-items:center}.academic_history_section_title{font-size:1.5rem;font-weight:600;margin:0;color:#f0f0f0}.academic_history_semesters_list{display:flex;flex-direction:column;gap:1rem}.academic_history_semester_form{background-color:#2a2a2a;border-radius:.75rem;border:2px solid #FF6B00;padding:1.5rem;margin-bottom:1rem;scroll-margin:100px;position:relative;animation:academic_history_formSlideIn .3s ease-out;z-index:1}@keyframes academic_history_formSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.academic_history_form_header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.academic_history_form_title{font-size:1.125rem;font-weight:600;margin:0;color:#f0f0f0}.academic_history_form_grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.5rem}.academic_history_form_group{display:flex;flex-direction:column}.academic_history_form_label{font-size:.875rem;color:#9ca3af;margin-bottom:.25rem;padding-left:.5rem}.academic_history_form_modules{margin-bottom:1rem}.academic_history_module_row_wrapper,.academic_history_module_row_wrapper:first-child{margin-bottom:.25rem}.academic_history_module_row_wrapper:not(:first-child){padding-top:0}.academic_history_module_row_wrapper:not(:last-child){padding-bottom:0}.academic_history_module_input_grid{display:flex;gap:.75rem;align-items:flex-end!important}.academic_history_module_input_grid input,.academic_history_module_input_grid select{height:2.5rem!important;min-height:2.5rem!important}.academic_history_module_row_wrapper:not(:first-child) .academic_history_module_input_grid{align-items:flex-end!important}.academic_history_form_field{display:flex;flex-direction:column}.academic_history_desktop_hidden{display:none}@media (max-width: 768px){.academic_history_desktop_hidden{display:block}}.academic_history_module_code_field{flex:0 0 30%}.academic_history_module_name_field{flex:0 0 35%}.academic_history_module_code_field .academic_history_form_input,.academic_history_module_code_field input{height:2.5rem;min-height:2.5rem}.academic_history_mc_field{flex:0 0 60px}.academic_history_grade_field{flex:0 0 100px}.academic_history_su_field{flex:0 0 60px}.academic_history_su_field .academic_history_form_label{text-align:center;padding-left:0}.academic_history_action_field{flex:0 0 40px;margin-top:0!important;padding-top:0!important}.academic_history_form_label_invisible{visibility:hidden;margin-bottom:.25rem;font-size:.875rem;padding-left:0}.academic_history_su_field .academic_history_su_checkbox{height:2.5rem;display:flex;align-items:center;justify-content:center}.academic_history_module_action_spacer{width:32px;height:2.5rem}.academic_history_form_actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.5rem}.academic_history_form_input,.academic_history_form_select{padding:.5rem;background-color:#1f1f1f;border:2px solid #404040;border-radius:.5rem;color:#f0f0f0;font-size:.875rem;transition:all .2s ease;width:100%;height:2.5rem;box-sizing:border-box;min-height:2.5rem}.academic_history_form_input:focus,.academic_history_form_select:focus{outline:none;border-color:#ff6b00;background:#1a1a1a}.academic_history_form_input::placeholder{color:#6b7280}.academic_history_form_input:disabled{background-color:#1a1a1a;cursor:not-allowed;opacity:.6;height:2.5rem}.academic_history_form_input:disabled::placeholder{color:#6b7280;font-style:italic}.academic_history_mcs_input{text-align:center;appearance:textfield;-moz-appearance:textfield;-webkit-appearance:textfield}.academic_history_mcs_input::-webkit-outer-spin-button,.academic_history_mcs_input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.academic_history_su_checkbox{display:flex;align-items:center;justify-content:center;cursor:pointer}.academic_history_su_checkbox_input{accent-color:#FF6B00;cursor:pointer;transform:scale(1.25)}.academic_history_empty_state_card{background-color:#2a2a2a;border-radius:.75rem;border:2px solid #404040;padding:3rem 2rem;text-align:center;display:flex;flex-direction:column;align-items:center;gap:1rem}.academic_history_empty_state_icon{color:#6b7280;margin-bottom:.5rem}.academic_history_empty_state_title{font-size:1.25rem;font-weight:600;color:#f0f0f0;margin:0}.academic_history_empty_state_text{color:#9ca3af;font-size:.875rem;max-width:24rem;margin:0 0 1rem}.academic_history_semester_card{background-color:#2a2a2a;border-radius:.75rem;border:2px solid #404040;overflow:hidden;transition:all .2s ease}.academic_history_semester_card:hover{border-color:#525252}.academic_history_semester_header{width:100%;padding:1.5rem;display:flex;justify-content:space-between;align-items:center;background:transparent;border:none;color:inherit;cursor:pointer;transition:background-color .2s ease}.academic_history_semester_info{display:flex;align-items:center;gap:1rem}.academic_history_semester_name{font-size:1.125rem;font-weight:500;color:#f0f0f0}.academic_history_semester_cap{font-size:.875rem;color:#9ca3af}.academic_history_cap_value{color:#ff6b00;font-weight:600}.academic_history_chevron_icon{transition:transform .3s ease;color:#9ca3af}.academic_history_chevron_up{transform:rotate(180deg)}.academic_history_semester_content{padding:0 1.5rem 1rem}.academic_history_modules_list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.academic_history_module_row{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background-color:#1f1f1f;border:1px solid #404040;border-radius:.5rem;transition:all .15s ease}.academic_history_module_info{display:flex;align-items:center;gap:1rem;flex:1}.academic_history_module_code{font-family:monospace;font-size:.875rem;font-weight:500;color:#f0f0f0;min-width:5rem}.academic_history_module_name{color:#d0d0d0;flex:1}.academic_history_module_details{display:flex;align-items:center;gap:1.5rem;flex-shrink:0}.academic_history_module_mcs{font-size:.875rem;color:#9ca3af;min-width:3.5rem;text-align:right}.academic_history_grade_display{display:inline-flex;align-items:center;gap:.5rem}.academic_history_module_grade{font-weight:600;text-align:center;width:3rem;display:inline-block}.academic_history_btn_icon_inline{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;padding:0;background-color:transparent;border:none;border-radius:.375rem;color:#6b7280;cursor:pointer;transition:all .15s ease}.academic_history_btn_icon_inline:hover{color:#ff6b00;background-color:#ff6b001a}.academic_history_btn_icon_placeholder{width:1.5rem;height:1.5rem;display:inline-block}.academic_history_semester_actions{display:flex;gap:1rem;padding-top:1rem;border-top:1px solid #404040}.academic_history_btn{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;font-weight:500;border:none;cursor:pointer;transition:all .2s ease;position:relative;z-index:10;pointer-events:auto}.academic_history_btn_primary{background-color:#ff6b00;color:#fff;position:relative;z-index:999}.academic_history_btn_primary:hover{background-color:#e65a00}.academic_history_btn_primary:active{transform:scale(.98)}.academic_history_btn_secondary{background-color:transparent;color:#ff6b00;border:2px solid #FF6B00;margin-bottom:.7rem}.academic_history_btn_secondary:hover{background-color:#ff6b001a;border-color:#ff6b00}.academic_history_btn_ghost{background-color:transparent;color:#9ca3af;padding:.5rem 1rem}.academic_history_btn_ghost:hover{color:#f0f0f0;background-color:#ffffff0d}.academic_history_btn_small{padding:.25rem .75rem;font-size:.75rem}.academic_history_btn_danger{color:#ef4444!important}.academic_history_btn_danger:hover{color:#dc2626!important;background-color:#ef44441a!important}.academic_history_btn_icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem!important;height:2.5rem!important;padding:0;background-color:transparent;border:none;border-radius:.375rem;color:#9ca3af;cursor:pointer;transition:all .15s ease}.academic_history_btn_icon:hover{color:#f0f0f0;background-color:#ffffff14}.academic_history_btn_icon_danger:hover{color:#ef4444;background-color:#ef444426}.academic_history_btn:focus-visible,.academic_history_btn_icon:focus-visible{outline:2px solid rgba(255,107,0,.5);outline-offset:2px}@media (max-width: 768px){.academic_history_form_grid{grid-template-columns:1fr}.academic_history_module_input_grid{flex-direction:column;gap:1rem;align-items:stretch!important}.academic_history_module_code_field,.academic_history_module_name_field,.academic_history_mc_field,.academic_history_grade_field,.academic_history_su_field,.academic_history_action_field{flex:0 0 100%;width:100%}.academic_history_form_label_invisible{display:none}.academic_history_action_field{margin-top:.5rem}.academic_history_module_row_wrapper:not(:first-child){padding-top:.75rem}.academic_history_module_row{flex-direction:column;align-items:stretch;gap:.75rem;padding:1rem}.academic_history_module_info{display:flex;flex-direction:column;gap:.25rem}.academic_history_module_details{display:flex;justify-content:space-between;align-items:center;width:100%}.academic_history_grade_display{width:auto;justify-content:flex-start}.academic_history_su_checkbox{margin-left:0}.academic_history_section_header{flex-direction:column;align-items:flex-start;gap:1rem}.academic_history_btn{justify-content:center}.academic_history_empty_state_card{padding:2rem 1rem}}.planning_section{margin-bottom:2rem}.planning_section_section_header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.planning_section_section_title{font-size:1.5rem;font-weight:600;margin:0;color:#f0f0f0}.planning_section_empty_state_card{background-color:#2a2a2a;border-radius:.75rem;border:2px solid #404040;padding:3rem 2rem;text-align:center;display:flex;flex-direction:column;align-items:center;gap:1rem;margin-bottom:1.5rem}.planning_section_empty_state_icon{color:#6b7280;margin-bottom:.5rem}.planning_section_empty_state_title{font-size:1.25rem;font-weight:600;color:#f0f0f0;margin:0}.planning_section_empty_state_text{color:#9ca3af;font-size:.875rem;max-width:24rem;margin:0}.planning_section_planning_form_card{background-color:#2a2a2a;border-radius:.75rem;border:2px solid #FF6B00;padding:1.5rem;margin-bottom:1.5rem;transition:all .2s ease;animation:planning_section_formSlideIn .3s ease-out;position:relative;z-index:1}@keyframes planning_section_formSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.planning_section_planning_form_card:hover{border-color:#ff6b00}.planning_section_form_header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.planning_section_form_title{font-size:1.125rem;font-weight:600;margin:0;color:#f0f0f0}.planning_section_form_modules{margin-bottom:1rem}.planning_section_module_row_wrapper{margin-bottom:1.75rem}.planning_section_module_row_wrapper:last-child{margin-bottom:0}.planning_section_module_input_grid{display:flex;gap:.75rem;align-items:flex-end!important}.planning_section_module_input_grid input,.planning_section_module_input_grid select{height:2.5rem!important;min-height:2.5rem!important}.planning_section_module_row_wrapper:not(:first-child) .planning_section_module_input_grid{align-items:flex-end!important}.planning_section_module_row_wrapper:not(:first-child) .planning_section_action_field{padding-top:0}.planning_section_form_field{display:flex;flex-direction:column}.planning_section_form_label{font-size:.875rem;color:#9ca3af;margin-bottom:.25rem;padding-left:.5rem}.planning_section_module_code_field{flex:0 0 30%}.planning_section_module_name_field{flex:0 0 35%}.planning_section_mc_field{flex:0 0 60px}.planning_section_grade_field{flex:0 0 100px}.planning_section_su_field{flex:0 0 60px}.planning_section_su_field .planning_section_form_label{text-align:center;padding-left:0}.planning_section_action_field{flex:0 0 40px;margin-top:0!important;padding-top:0!important}.planning_section_form_label_invisible{visibility:hidden;margin-bottom:.25rem;font-size:.875rem;padding-left:0;height:1.25rem}.planning_section_result_value_increase{color:#22c55e!important}.planning_section_result_value_decrease{color:#ef4444!important}.planning_section_result_value_same{color:#fb923c!important}.planning_section_result_change_positive{color:#22c55e}.planning_section_result_change_negative{color:#ef4444}.planning_section_result_change_neutral{color:#9ca3af}.planning_section_form_input,.planning_section_form_select{padding:.5rem;background-color:#1f1f1f;border:2px solid #404040;border-radius:.5rem;color:#f0f0f0;font-size:.875rem;transition:all .2s ease;width:100%;height:2.5rem;box-sizing:border-box;min-height:2.5rem}.planning_section_form_input:focus,.planning_section_form_select:focus{outline:none;border-color:#ff6b00;background:#1a1a1a}.planning_section_form_input::placeholder{color:#6b7280}.planning_section_form_input:disabled{background-color:#1a1a1a;cursor:not-allowed;opacity:.6;height:2.5rem}.planning_section_form_input:disabled::placeholder{color:#6b7280;font-style:italic}.planning_section_mcs_input{text-align:center;appearance:textfield;-moz-appearance:textfield;-webkit-appearance:textfield}.planning_section_mcs_input::-webkit-outer-spin-button,.planning_section_mcs_input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.planning_section_su_checkbox{display:flex;align-items:center;justify-content:center;cursor:pointer;height:2.5rem}.planning_section_su_checkbox_input{accent-color:#FF6B00;cursor:pointer;transform:scale(1.25)}.planning_section_module_action_spacer{width:32px;height:2.5rem}.planning_section_form_actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.5rem}.planning_section_planning_results_card{background-color:#2a2a2a;border-radius:.75rem;border:2px solid #404040;padding:1.5rem;margin-bottom:1.5rem;transition:all .2s ease}.planning_section_planning_results_card:hover{border-color:#525252}.planning_section_results_title{font-size:1.125rem;font-weight:600;margin:0 0 1rem;color:#f0f0f0}.planning_section_simulated_modules_list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.planning_section_simulated_module_row{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background-color:#1f1f1f;border:1px solid #404040;border-radius:.5rem;transition:all .15s ease}.planning_section_module_info{display:flex;align-items:center;gap:1rem;flex:1}.planning_section_module_code{font-family:monospace;font-size:.875rem;font-weight:500;color:#f0f0f0;min-width:5rem}.planning_section_module_name{color:#d0d0d0;flex:1}.planning_section_module_details{display:flex;align-items:center;gap:1.5rem;flex-shrink:0}.planning_section_module_mcs{font-size:.875rem;color:#9ca3af;min-width:3.5rem;text-align:right}.planning_section_module_grade{font-weight:600;text-align:center;width:3rem;display:inline-block}.grade-excellent{color:#10b981}.grade-good{color:#3b82f6}.grade-average{color:#eab308}.grade-su{color:#6b7280}.grade-poor{color:#ef4444}.planning_section_simulation_actions{display:flex;gap:1rem;padding-top:1rem;border-top:1px solid #404040}.planning_section_planning_results{display:grid;grid-template-columns:1fr 1fr;gap:1rem;position:relative;z-index:0}.planning_section_result_card{background-color:#ff6b000d;border:2px solid rgba(255,107,0,.2);border-radius:.5rem;padding:1.25rem;transition:all .2s ease}.planning_section_result_card_increase{background-color:#22c55e14;border-color:#22c55e4d}.planning_section_result_card_decrease{background-color:#ef444414;border-color:#ef44444d}.planning_section_result_card_same{background-color:#fb923c14;border-color:#fb923c4d}.planning_section_result_label{font-size:.875rem;color:#d0d0d0;margin:0!important;margin-bottom:.75rem!important;display:block}.planning_section_result_value{font-size:2rem;font-weight:700;color:#ff6b00;margin:0!important;margin-bottom:.75rem!important;line-height:1.5;display:block}.planning_section_result_hint{font-size:.75rem;color:#6b7280;margin-top:0!important;display:block}.planning_section_result_change{font-size:.75rem;margin-top:0!important;font-weight:500;display:block}.planning_section_btn{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;font-weight:500;border:none;cursor:pointer;transition:all .2s ease}.planning_section_btn_primary{background-color:#ff6b00;color:#fff}.planning_section_btn_primary:hover{background-color:#e65a00}.planning_section_btn_secondary{background-color:transparent;color:#ff6b00;border:2px solid #FF6B00}.planning_section_section_header .planning_section_btn_secondary{margin-bottom:0}.planning_section_btn_secondary:hover{background-color:#ff6b001a;border-color:#ff6b00}.planning_section_btn_ghost{background-color:transparent;color:#9ca3af;padding:.5rem 1rem}.planning_section_btn_ghost:hover{color:#f0f0f0;background-color:#ffffff0d}.planning_section_btn_small{padding:.25rem .75rem;font-size:.75rem}.planning_section_btn_danger{color:#ef4444!important}.planning_section_btn_danger:hover{color:#dc2626!important;background-color:#ef44441a!important}.planning_section_btn_icon{display:inline-flex;align-items:center;justify-content:center;width:2.5rem!important;height:2.5rem!important;padding:0;background-color:transparent;border:none;border-radius:.375rem;color:#9ca3af;cursor:pointer;transition:all .15s ease}.planning_section_btn_icon:hover{color:#f0f0f0;background-color:#ffffff14}.planning_section_btn_icon_danger:hover{color:#ef4444;background-color:#ef444426}.planning_section_btn:focus-visible,.planning_section_btn_icon:focus-visible{outline:2px solid rgba(255,107,0,.5);outline-offset:2px}.planning_section_desktop_hidden{display:none}@media (max-width: 768px){.planning_section_desktop_hidden{display:block}}@media (max-width: 768px){.planning_section_section_header{flex-direction:column;align-items:flex-start;gap:1rem}.planning_section_planning_form_card{padding:1rem}.planning_section_module_input_grid{flex-direction:column;gap:1rem;align-items:stretch!important}.planning_section_module_code_field,.planning_section_module_name_field,.planning_section_mc_field,.planning_section_grade_field,.planning_section_su_field,.planning_section_action_field{flex:0 0 100%;width:100%}.planning_section_form_label{display:block!important}.planning_section_module_row_wrapper:not(:first-child){padding-top:.75rem}.planning_section_action_field{margin-top:.5rem}.planning_section_planning_results{grid-template-columns:1fr}.planning_section_empty_state_card{padding:2rem 1rem}.planning_section_btn{justify-content:center}}.gpa-container{min-height:100vh;padding:3rem 2rem 1rem}.gpa-content{max-width:1280px;margin:0 auto}@media (max-width: 768px){.gpa-container{padding:1.5rem 1rem}}.registration-success{background-color:#212121;padding:2rem;border-radius:8px;box-shadow:0 4px 8px #0000001a;width:100%;max-width:480px;margin:0 auto;color:#fff;text-align:center}.success-title{margin:0 0 2rem;font-weight:740;color:#fff;font-size:2.3rem}.verification-text{color:#fff;margin:0 0 .5rem;font-size:1rem;line-height:1.6}.email-display{color:#ff6b00;font-weight:600;font-size:1rem;margin:0 0 1.5rem}.instruction-text{color:#fff;margin:0 0 2rem;font-size:1rem;line-height:1.6}.continue-button{padding:.7rem .8rem;background-color:#ff6b00;color:#fff;border:none;border-radius:4px;font-size:1.1rem;font-weight:600;width:100%;cursor:pointer;transition:background-color .3s ease;margin-bottom:1rem}.continue-button:hover:not(:disabled){background-color:#ff4d00}.continue-button:disabled{background-color:#555;cursor:not-allowed}.footer-note{color:#a0a0a0;font-size:.9rem;margin:0;text-align:center}.footer-note a{color:#ff6b00;text-decoration:none;font-weight:350;transition:color .3s ease}.footer-note a:hover{color:#ff4d00;text-decoration:underline}@media (max-width: 768px){.registration-success{padding:1.5rem}.success-title{font-size:2rem}}@media (max-width: 480px){.registration-success{padding:1rem}.success-title{font-size:1.8rem}}main{display:flex;justify-content:center;align-items:center;width:100%;height:auto;padding-top:40px;padding-bottom:40px;flex-direction:column}main form{background-color:#212121;padding:2rem;border-radius:8px;box-shadow:0 4px 8px #0000001a;width:100%;max-width:850px;margin:0 auto;color:#fff}.form-heading{display:flex;flex-direction:column;align-items:flex-start;gap:15px;margin-bottom:1rem}.form-heading h1{margin:0;font-weight:700;color:#ff6b00;font-size:2.5rem}.form-heading h2{margin-bottom:0;font-weight:650;color:#fff;font-size:1.7rem}.input-container{display:flex;flex-direction:column;gap:15px;margin-bottom:2rem;margin-top:-5px;width:100%}.input-container input{width:100%;padding:.8rem;font-size:1rem;border:1px solid #555;border-radius:4px;background-color:#1a1a1a;color:#fff;box-sizing:border-box;transition:border-color .3s ease}.input-container input:focus{border-color:#ff6b00;outline:none}.input-container button[type=submit]{padding:.7rem .8rem;background-color:#ff6b00;color:#fff;border:none;border-radius:4px;font-size:1.1rem;font-weight:600;width:100%;cursor:pointer;transition:background-color .3s ease}.input-container button[type=submit]:hover:not(:disabled){background-color:#ff4d00}.input-container button[type=submit]:disabled{background-color:#555;cursor:not-allowed}.error-forgot-container{display:flex;justify-content:space-between;align-items:flex-start;width:100%;height:30px;margin-top:-10px;position:relative}.error-message-wrapper{flex:1;height:24px;display:flex;align-items:center}.forgot-password-link{background:none!important;border:none!important;color:#ff6b00!important;text-decoration:none!important;font-size:.9rem!important;font-weight:500!important;cursor:pointer!important;transition:color .3s ease!important;padding:0!important;margin-top:5px;white-space:nowrap;flex-shrink:0;position:relative;z-index:1}.forgot-password-link:hover{color:#ff4d00!important;text-decoration:underline!important;background:none!important}.back-to-login-btn{background-color:transparent!important;color:#ff6b00!important;border:2px solid #FF6B00!important;border-radius:4px!important;padding:.7rem .8rem!important;font-size:1rem!important;font-weight:500!important;width:100%!important;cursor:pointer!important;margin-top:10px!important}.back-to-login-btn:hover{background-color:#555!important}main form p{text-align:center;margin-top:2rem;color:#fff}main form p a{color:#ff6b00;text-decoration:none;font-weight:500;transition:color .3s ease}main form p a:hover{color:#ff4d00;text-decoration:underline}.input-error{border:1px solid #ff3333!important;box-shadow:0 0 5px #ff33334d}.error-message{color:#f33!important;font-size:.9rem!important;text-align:left;width:100%;line-height:1}.error-forgot-container .error-message{position:absolute;left:0;top:50%;transform:translateY(-50%)}.input-container>.error-message{margin-top:-10px;margin-bottom:5px;position:static!important;transform:none!important}@keyframes fadeIn{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.password-input-container{position:relative;display:flex;align-items:center}.password-input-container input{width:100%;padding-right:45px}.password-toggle{position:absolute!important;right:12px!important;background:none!important;border:none!important;cursor:pointer!important;color:#ccc!important;z-index:1!important;padding:4px!important;display:flex!important;align-items:center!important;justify-content:center!important;border-radius:4px!important;transition:color .3s ease!important;width:auto!important;font-size:inherit!important;font-weight:400!important}.password-toggle:hover{color:#ff6b00!important;background:none!important}@media (max-width: 768px){main form{padding:1.5rem}.form-heading h1{font-size:2rem}.form-heading h2{font-size:1.3rem}}@media (max-width: 480px){main form{padding:1rem}.form-heading h1{font-size:1.8rem}.form-heading h2{font-size:1.2rem}.input-container input{padding:.6rem}.error-forgot-container{flex-direction:row;align-items:center;gap:10px;height:auto;min-height:30px}.error-forgot-container .error-message{position:static;transform:none}.forgot-password-link{align-self:center}}.page-not-found{min-height:calc(100vh - 20px);display:flex;align-items:center;justify-content:center;background-color:#1a1a1a;padding:2rem}.error-content{text-align:center;max-width:500px;animation:fadeInUp .6s ease-out}.error-code{font-size:120px;font-weight:800;margin:0;color:#ff6b00;text-shadow:0 4px 20px rgba(255,107,0,.3);animation:pulse 2s ease-in-out infinite;line-height:1}.error-title{font-size:32px;font-weight:600;color:#f0f0f0;margin:20px 0 16px;letter-spacing:-.5px}.error-message{font-size:16px;color:#888;margin:0 0 40px;line-height:1.6}.back-home-button{padding:12px 32px;background:#2a2a2a;border:2px solid #404040;border-radius:8px;color:#f0f0f0;font-size:15px;font-weight:500;cursor:pointer;transition:all .2s ease;outline:none;text-decoration:none;display:inline-block;position:relative;overflow:hidden}.back-home-button:hover{border-color:#ff6b00;color:#ff6b00;background:#323232;box-shadow:0 4px 12px #ff6b0033}.back-home-button:active{background:#1f1f1f;transform:translateY(0);box-shadow:0 2px 6px #ff6b001a}@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}
