:root{--mq-red: #a7192f;--mq-dark: #821226;--mq-light: #fff5f6;--white: #ffffff;--gray-50: #fafafa;--gray-100: #f8f8f8;--gray-200: #f1f1f1;--gray-300: #eee;--gray-400: #ddd;--gray-500: #aaa;--gray-700: #555;--gray-900: #222;--success: #4caf50;--success-light: rgba(144, 238, 144, .7);--warning: #ff9800;--warning-light: rgba(255, 213, 128, .76);--info: #4169e1;--info-light: #cfe4ff;--neutral: #d3d3d3;--session-1: #3498db;--session-2: #e67e22;--session-3: #9b59b6;--shadow-sm: 0 2px 4px rgba(0, 0, 0, .08);--shadow-md: 0 4px 8px rgba(0, 0, 0, .1);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .08);--shadow-xl: 0 12px 30px rgba(0, 0, 0, .15);--shadow-mq: 0 4px 16px rgba(167, 25, 47, .4);--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 14px;--radius-full: 9999px;--transition-fast: .15s ease;--transition-base: .3s ease;--transition-slow: .5s ease;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;font-size:1rem;line-height:1.6;color:var(--gray-900);background:linear-gradient(135deg,var(--white) 0%,var(--gray-100) 100%);min-height:100vh}:root{--studyplan-scale: .85}#root,.App{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.2;color:var(--gray-900)}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}.header-banner{position:relative;display:flex;align-items:center;justify-content:center;padding:var(--space-lg) var(--space-xl);background:linear-gradient(90deg,var(--mq-red),var(--mq-dark));color:var(--white);box-shadow:var(--shadow-mq);z-index:100}.header-banner .logo{position:absolute;left:var(--space-xl);width:85px;height:auto;filter:drop-shadow(0 2px 6px rgba(0,0,0,.3));transition:transform var(--transition-base)}.header-banner h1{font-size:2rem;font-weight:700;letter-spacing:.5px;text-shadow:0 2px 6px rgba(0,0,0,.2);color:var(--white)}.header-lines{position:absolute;right:var(--space-xl);top:50%;transform:translateY(-50%)}.menu-toggle-btn{display:flex;flex-direction:column;justify-content:space-between;gap:4px;width:28px;height:20px;background:none;border:none;cursor:pointer;padding:0;transition:var(--transition-base)}.menu-toggle-btn span{display:block;height:3px;background-color:var(--white);border-radius:2px;transition:var(--transition-base)}.menu-toggle-btn.open span:nth-child(1){transform:rotate(45deg) translate(5px,5px)}.menu-toggle-btn.open span:nth-child(2){opacity:0}.menu-toggle-btn.open span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}.dropdown-menu{position:absolute;right:0;top:calc(100% + 8px);background:var(--white);border-radius:var(--radius-md);box-shadow:var(--shadow-xl);min-width:160px;padding:var(--space-xs) 0;z-index:200;animation:fadeInDown var(--transition-base)}.dropdown-menu button{width:100%;padding:var(--space-sm) var(--space-md);background:none;border:none;text-align:left;font-size:.95rem;color:var(--gray-900);cursor:pointer;transition:var(--transition-fast);margin:0}.dropdown-menu button:hover{background-color:var(--mq-red);color:var(--white);transform:none}main{flex:1;padding:var(--space-2xl) var(--space-xl);background:linear-gradient(to bottom right,var(--gray-50),var(--gray-200));display:flex;flex-direction:column;gap:var(--space-xl)}.search-section{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);width:100%;max-width:600px;margin:0 auto}.input-wrapper{position:relative;width:100%}.input-wrapper input{width:100%;padding:var(--space-md) var(--space-lg);font-size:1.05rem;border-radius:var(--radius-xl);border:2px solid var(--gray-400);background:#fffffff2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:var(--shadow-lg);transition:var(--transition-base)}.input-wrapper input:focus{outline:none;border-color:var(--mq-red);box-shadow:0 0 0 4px #a7192f1a}.suggestions-container{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--white);border:1px solid var(--gray-400);border-radius:0 0 var(--radius-xl) var(--radius-xl);max-height:250px;overflow-y:auto;box-shadow:var(--shadow-lg);z-index:50}.suggestion-item{padding:var(--space-md);cursor:pointer;border-bottom:1px solid var(--gray-300);transition:var(--transition-fast)}.suggestion-item:last-child{border-bottom:none}.suggestion-item:hover{background:var(--mq-red);color:var(--white)}button{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-sm) var(--space-lg);background:var(--mq-red);color:var(--white);border:none;border-radius:var(--radius-xl);font-size:1rem;font-weight:500;letter-spacing:.3px;cursor:pointer;transition:var(--transition-base);box-shadow:var(--shadow-md);margin:var(--space-md) 0}button:hover:not(:disabled){background:var(--mq-dark);transform:translateY(-2px);box-shadow:var(--shadow-xl)}button:disabled{opacity:.6;cursor:not-allowed}.download-btn{padding:var(--space-sm) var(--space-md);font-size:.9rem;margin:var(--space-sm) 0}.course-details,.study-plan,.semester-section,.unit-load-selection,.major-section,.requirements-summary{background:var(--white);padding:var(--space-lg);border-radius:var(--radius-xl);margin-bottom:var(--space-xl);box-shadow:var(--shadow-lg);transition:var(--transition-base);display:flex;flex-direction:column}.course-details:hover,.study-plan:hover,.semester-section:hover{transform:translateY(-2px);box-shadow:var(--shadow-xl)}.course-details h2,.study-plan h3,.semester-section h2,.major-section h2,.unit-load-section h2,.requirements-summary h3{margin-bottom:var(--space-md);color:var(--mq-red)}.course-details table,.units-table,.unit-table{width:100%;border-collapse:collapse;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.course-details th,.course-details td,.units-table th,.units-table td,.unit-table th,.unit-table td{border:1px solid var(--gray-300);padding:var(--space-md);text-align:left;font-size:.95rem}.course-details th,.units-table th,.unit-table th{position:sticky;top:0;background:#0c0a04;color:var(--white);font-weight:600;text-transform:uppercase;letter-spacing:.5px;z-index:10}.course-details tbody tr:nth-child(2n),.unit-table tbody tr:nth-child(2n){background-color:var(--gray-50)}.course-details tbody tr:hover,.unit-table tbody tr:hover{background-color:var(--mq-light);transition:var(--transition-fast)}.unit-table tbody tr.unit-degree td{background-color:var(--success-light)}.unit-table tbody tr.unit-major td{background-color:var(--warning-light)}.unit-table tbody tr.unit-other-major td{background-color:var(--info-light)}.unit-table tbody tr.unit-flexible td{background-color:var(--neutral);color:var(--gray-700);font-style:italic}.unit-table tbody tr.unit-essential-bordered{border-left:4px solid var(--info)}.unit-table tbody td.unit-credit-cell{text-align:center;font-weight:600}.unit-table tbody tr.unit-hsc-credit td{background-color:#e40a2de8!important}.units-table-wrapper{display:none;overflow-x:auto;margin-top:var(--space-md);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.toggle-checkbox{float:right;width:25px;height:25px;cursor:pointer;accent-color:var(--mq-red)}.toggle-checkbox:checked~.units-table-wrapper{display:block}.course-title{display:inline-block;vertical-align:middle}.toggle-p{float:right;margin-right:var(--space-md);font-weight:600;vertical-align:middle}.semester-badge-wrapper{display:flex;flex-direction:column;gap:var(--space-xs)}.semester-badge,.session-badge{display:inline-block;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-full);font-size:.8rem;font-weight:600;color:var(--white);box-shadow:var(--shadow-sm);transition:var(--transition-fast)}.semester-badge{background-color:var(--mq-red)}.semester-badge:hover{transform:scale(1.05)}.sem-1 .session-badge{background-color:var(--session-1)}.sem-2 .session-badge{background-color:var(--session-2)}.se.study-plan{max-width:1200px;margin:var(--space-xl) auto}.plan-title{text-align:center;margin-bottom:var(--space-lg);color:var(--gray-900)}:root{--studyplan-scale: 1}m-3 .session-badge{background-color:var(--session-3)}.studyplan-scale{transform:scale(var(--studyplan-scale));transform-origin:top left;width:calc(100% / var(--studyplan-scale))}.semesters-container{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px;margin-top:20px}.semester-card{background:#fff;border-radius:12px;padding:12px;box-shadow:0 4px 10px #0000001f;min-width:360px;max-width:430px;flex:1 1 360px;transform-origin:top center;display:flex;flex-direction:column}.table-wrapper{overflow-x:auto}.unit-table{width:100%;border-collapse:collapse;table-layout:fixed}.unit-table th,.unit-table td{padding:8px 10px;word-wrap:break-word;white-space:normal;text-align:left}.semester-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:calc(var(--space-md) * 1.1)}.unit-title-link{word-break:break-word}.plan-title,.semester-header h3{font-size:1rem}.color-legend{margin-top:var(--space-xl);padding:var(--space-lg);background:var(--gray-50);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.color-legend h3{margin-bottom:var(--space-md);color:var(--gray-900)}.legend-items{display:flex;flex-wrap:wrap;gap:var(--space-lg)}.legend-item{display:flex;align-items:center;gap:var(--space-sm)}.legend-color{width:30px;height:20px;border:1px solid var(--gray-400);border-radius:var(--radius-sm)}.legend-color.unit-degree{background-color:var(--success-light)}.legend-color.unit-major{background-color:var(--warning-light)}.legend-color.unit-flexible{background-color:var(--neutral)}.legend-color.unit-other-major{background-color:var(--info-light)}.legend-color.unit-elective{background-color:var(--white);border-left:4px solid var(--info)}.legend-color.unit-hsc-credit{background-color:#e40a2de8;border:1px solid var(--mq-red)}.legend-label{font-size:.95rem;color:var(--gray-700)}.plan-summary{margin-top:var(--space-xl);text-align:center;font-size:1.1rem}.plan-summary .complete{color:var(--success);font-weight:600}.plan-summary .in-progress{color:var(--warning);font-weight:600}.requirement-item{padding:var(--space-md);margin-bottom:var(--space-sm);background:var(--white);border-radius:var(--radius-md);border-left:4px solid var(--gray-400);transition:var(--transition-base)}.requirement-item.complete{border-left-color:var(--success)}.requirement-item.incomplete{border-left-color:var(--warning)}.requirement-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-xs)}.requirement-name{font-weight:600;color:var(--gray-900)}.requirement-status{font-size:1.2rem}.requirement-progress{font-size:.9rem;color:var(--gray-700)}.selector-container{display:flex;gap:var(--space-xl);align-items:stretch}.selector-container>.semester-section,.selector-container>.unit-load-selection{flex:1;margin-bottom:0}.major-selector{margin:var(--space-xl) 0}.major-selector h3{margin-bottom:var(--space-md);font-weight:600}.major-selector *{color:var(--mq-red)}.majors-list,.major-cards{display:flex;flex-wrap:wrap;gap:var(--space-md)}.major-btn,.major-card{padding:var(--space-sm) var(--space-md);border:2px solid var(--gray-400);background:var(--white);color:var(--gray-900);border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-base);box-shadow:var(--shadow-sm);font-size:.9rem;text-align:center}.major-btn:hover,.major-card:hover{border-color:var(--mq-red);background-color:var(--mq-light);transform:translateY(-2px);box-shadow:var(--shadow-md)}.major-btn.selected,.major-card.selected{border-color:var(--mq-red);background-color:var(--mq-red);color:var(--white);font-weight:600;box-shadow:var(--shadow-md)}.semester-selection,.unit-load-selection{display:flex;flex-wrap:wrap;gap:var(--space-md);margin-top:var(--space-sm);width:100%}.semester-selection .radio-card,.unit-load-selection .radio-card{padding:var(--space-sm) var(--space-md);border:2px solid var(--gray-400);background:var(--white);color:var(--gray-900);border-radius:var(--radius-lg);cursor:pointer;transition:var(--transition-base);box-shadow:var(--shadow-sm);font-size:.9rem;text-align:center;display:flex;align-items:center;justify-content:center;flex-grow:1}.semester-selection .radio-card:hover,.unit-load-selection .radio-card:hover{border-color:var(--mq-red);background-color:var(--mq-light);transform:translateY(-2px);box-shadow:var(--shadow-md)}.semester-selection input[type=radio],.unit-load-selection input[type=radio]{display:none}.semester-selection input[type=radio]:checked+.radio-card,.unit-load-selection input[type=radio]:checked+.radio-card{border-color:var(--mq-red);background-color:var(--mq-red);color:var(--white);font-weight:600;box-shadow:var(--shadow-md)}.semester-selection label,.unit-load-selection label{flex:1;display:flex;justify-content:center}.modal-overlay{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn var(--transition-base)}.modal-content{background:var(--white);padding:var(--space-xl);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);max-width:480px;width:90%;text-align:center;animation:fadeInUp var(--transition-base)}.modal-content h2{color:var(--mq-red);margin-bottom:var(--space-md)}.modal-content ul{list-style:none;padding:0;margin-bottom:var(--space-lg)}.modal-content li{padding:var(--space-sm) 0;border-bottom:1px solid var(--gray-300);transition:var(--transition-fast)}.modal-content li:last-child{border-bottom:none}.modal-content li:hover{background-color:var(--mq-light);border-radius:var(--radius-md)}.modal-content .close-btn{margin-top:var(--space-md)}.help-modal h2{margin-bottom:16px;font-size:1.5rem;color:var(--mq-dark)}.help-steps{padding-left:20px;margin-bottom:20px}.help-steps li{margin-bottom:12px;font-size:1rem;line-height:1.5}.help-steps li::marker{font-weight:700;color:var(--mq-red)}.about-modal h3{margin-top:20px;margin-bottom:12px;font-size:1.25rem;color:var(--mq-dark)}.features-list{padding-left:20px;margin-bottom:20px}.features-list li{margin-bottom:10px;line-height:1.5;font-size:1rem}footer{background:var(--mq-dark);color:var(--white);text-align:center;padding:var(--space-lg);font-size:.95rem;letter-spacing:.3px;box-shadow:0 -2px 10px #0000001a}.loading{text-align:center;font-size:1.2rem;color:var(--gray-700);padding:var(--space-xl)}.error{text-align:center;font-size:1.1rem;color:var(--mq-red);padding:var(--space-md);background:#ffe6e6;border-radius:var(--radius-lg);margin:var(--space-md) 0}.scroll-top-wrapper{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:50}.scroll-top-btn{width:50px;height:50px;background:var(--mq-red);color:#fff;border:none;border-radius:50%;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px #0000004d;transition:transform .2s ease,background .2s ease,box-shadow .2s ease}.scroll-top-btn:hover{transform:scale(1.05);background:#d32f2f;box-shadow:0 6px 16px #0006}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1024px){.semesters-container{grid-template-columns:1fr}.legend-items{flex-direction:column;gap:var(--space-sm)}}@media(max-width:768px){:root{--space-xl: 1.5rem;--space-2xl: 2rem}button{min-height:44px;padding:var(--space-md) var(--space-lg);font-size:1.05rem}.header-banner{padding:var(--space-md);flex-wrap:wrap}.header-banner .logo{position:static;width:60px;order:1;margin-right:auto}.header-banner h1{font-size:1.3rem;order:2;flex:1;text-align:center;margin:0 var(--space-sm)}.header-lines{position:static;transform:none;order:3}.menu-toggle-btn{width:32px;height:24px;padding:var(--space-xs)}.dropdown-menu{right:var(--space-md);min-width:180px}.dropdown-menu button{padding:var(--space-md) var(--space-lg);font-size:1rem}main{padding:var(--space-lg) var(--space-md);gap:var(--space-lg)}.search-section{max-width:100%}.input-wrapper input{font-size:1rem;padding:var(--space-md)}.suggestions-container{font-size:.95rem}.course-details,.study-plan,.semester-section,.unit-load-selection,.major-section,.requirements-summary{padding:var(--space-md);border-radius:var(--radius-lg)}.units-table-wrapper{overflow-x:auto;-webkit-overflow-scrolling:touch}.units-table,.unit-table{min-width:600px}.course-details th,.course-details td,.units-table th,.units-table td,.unit-table th,.unit-table td{padding:var(--space-sm);font-size:.85rem}.semesters-container{grid-template-columns:1fr;gap:var(--space-md)}.semester-card{padding:var(--space-md)}.semester-card .unit-table{overflow-x:auto;-webkit-overflow-scrolling:touch}.major-cards,.majors-list{gap:var(--space-sm)}.major-card,.major-btn{flex-basis:calc(50% - var(--space-xs));font-size:.85rem;padding:var(--space-sm)}.semester-selection,.unit-load-selection{flex-direction:column;align-items:stretch}.semester-selection label,.unit-load-selection label{width:100%;justify-content:flex-start;min-height:44px}.requirement-item{padding:var(--space-sm)}.modal-content{width:95%;padding:var(--space-lg);max-width:none}.color-legend{padding:var(--space-md)}.legend-items{flex-direction:column;gap:var(--space-sm)}.toggle-p{font-size:.9rem}.toggle-checkbox{width:22px;height:22px}}@media(max-width:480px){:root{--space-md: .75rem;--space-lg: 1rem;--space-xl: 1.25rem}.header-banner{padding:var(--space-sm) var(--space-md)}.header-banner .logo{width:50px}.header-banner h1{font-size:1.1rem}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.1rem}body{font-size:.95rem}button{font-size:1rem;padding:var(--space-sm) var(--space-md)}.course-details,.study-plan,.semester-section,.unit-load-selection,.major-section,.requirements-summary{padding:var(--space-sm) var(--space-md)}.course-details th,.course-details td,.units-table th,.units-table td,.unit-table th,.unit-table td{padding:var(--space-xs) var(--space-sm);font-size:.8rem}.major-card,.major-btn{flex-basis:100%}.semester-badge,.session-badge{font-size:.75rem;padding:2px var(--space-xs)}.modal-content{padding:var(--space-md)}.modal-content h2{font-size:1.25rem}footer{padding:var(--space-md);font-size:.85rem}.input-wrapper input{font-size:.95rem;padding:var(--space-sm) var(--space-md)}.dropdown-menu{min-width:150px;right:var(--space-sm)}.dropdown-menu button{padding:var(--space-sm) var(--space-md);font-size:.95rem}}@media(max-width:360px){.header-banner h1{font-size:1rem}.units-table,.unit-table{min-width:500px}}@media(max-height:500px)and (orientation:landscape){.header-banner{padding:var(--space-sm) var(--space-md)}.header-banner h1{font-size:1.1rem}main{padding:var(--space-md)}}.menu-svg-toggle{display:flex;align-items:center;justify-content:center;cursor:pointer;width:48px;height:48px;border-radius:50%;background:#333;box-shadow:none;transition:transform .3s ease,background .3s ease}.menu-svg-toggle:hover{transform:scale(1.1);background:#444}.menu-svg-toggle.active svg{transform:rotate(180deg);transition:transform .6s ease}.glassy{position:absolute;top:65px;right:0;display:flex;flex-direction:column;background:#fff;border-radius:16px;padding:8px;min-width:240px;z-index:20;opacity:0;pointer-events:none;transform:translateY(-8px);transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1);border:1.5px solid var(--mq-red);box-shadow:0 10px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.glassy.show{opacity:1;pointer-events:all;transform:translateY(0)}.glassy .menu-item{background:transparent;border:none;border-radius:10px;color:#1f2937;font-size:.9375rem;font-weight:600;text-align:left;padding:12px 16px;line-height:1.5;transition:all .15s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;gap:12px;white-space:nowrap;cursor:pointer;position:relative}.glassy .menu-item:hover{background:#f9fafb;color:#111827}.glassy .menu-item:active{transform:scale(.98);background:#f3f4f6}.glassy .menu-item.danger{color:#dc2626}.glassy .menu-item.danger:hover{background:#fef2f2;color:#b91c1c}.glassy .menu-item:hover svg,.glassy .menu-item:hover i{opacity:1}.glassy .menu-divider{height:1px;background:#00000014;margin:6px 8px}.glassy .menu-header{padding:8px 14px 4px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#9ca3af}@media print{.header-lines,.menu-toggle-btn,.download-btn,button{display:none}.course-details,.study-plan,.semester-card{box-shadow:none;page-break-inside:avoid}}.tooltip-container{position:relative;display:inline-block}.tooltip-box{position:fixed;background:#000000e6;color:#fff;padding:6px 8px;border-radius:6px;font-size:.85rem;z-index:99999;white-space:pre-wrap;line-height:1.3;opacity:0;transition:opacity .1s ease-in-out}.tooltip-box.visible{opacity:1;transform:translate(0)}.study-plan,.course-details,.semester-card,.semester-section{transform:none!important}@media(max-width:768px){.selector-container{flex-direction:column}.semester-selection,.unit-load-selection{flex-direction:row;justify-content:space-around}.semester-selection label,.unit-load-selection label{flex:none;width:auto}.semester-selection .radio-card,.unit-load-selection .radio-card{flex-grow:0;min-width:80px}}
