:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}*{box-sizing:border-box}body{color:#1c1e21;background:#f4f5f7;margin:0}.app{max-width:1200px;margin:0 auto;padding:24px 16px 64px}.app-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.app-header h1{margin:0 0 4px;font-size:26px}.app-header p{color:#5b5f66;margin:0 0 20px}.header-actions{gap:8px;display:flex}.print-button{cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #c9ccd1;border-radius:8px;padding:8px 14px;font-size:14px}.print-button:hover{background:#eef0f2}.reset-button{color:#d93025;border-color:#f5c6c2}.reset-button:hover{background:#fdf3f3}.print-only{display:none}.print-meta{color:#5b5f66;font-size:13px}.panel{background:#fff;border:1px solid #dfe1e5;border-radius:10px;margin-bottom:16px;padding:16px}.panel h2{margin:0 0 8px;font-size:16px}.panel h3{text-transform:uppercase;letter-spacing:.04em;color:#5b5f66;margin:20px 0 8px;font-size:14px}.panel-hint{color:#6c7076;margin:0 0 12px;font-size:13px}.settings-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;display:grid}.settings-field{color:#5b5f66;flex-direction:column;gap:4px;font-size:13px;display:flex}.settings-field input,.settings-field select{border:1px solid #c9ccd1;border-radius:6px;width:100%;padding:6px 8px;font-size:14px}.layout{grid-template-columns:1fr 340px;align-items:start;gap:16px;display:grid}@media (width<=900px){.layout{grid-template-columns:1fr}}.grid-panel-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.grid-panel-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.grid-panel-header h2{margin:0}.credit-counter{flex-wrap:wrap;gap:8px;display:flex}.credit-counter-item{color:#5b5f66;background:#eef0f2;border-radius:999px;padding:3px 12px;font-size:13px}.credit-counter-item strong{color:#1c1e21;font-size:14px}.credit-counter-item.total{color:#174ea6;background:#e8f0fe}.credit-counter-item.total strong{color:#174ea6}.grid-scroll{overflow-x:auto}.quarter-grid{border-collapse:separate;border-spacing:6px;width:100%}.quarter-grid th{color:#5b5f66;text-align:left;padding:4px 8px;font-size:13px}.grid-corner{white-space:nowrap}.grid-quarter{white-space:nowrap;width:70px}.grid-cell{vertical-align:top;background:#fafbfc;border:1px dashed #c9ccd1;border-radius:8px;width:210px;max-width:210px;min-height:96px;padding:8px}.grid-cell.flagged{background:#fdf3f3;border-style:solid;border-color:#d93025}.course-chip{border-radius:6px;flex-direction:column;align-items:stretch;gap:2px;margin-bottom:4px;padding:3px 6px;font-size:12px;display:flex}.chip-core{color:#174ea6;background:#e8f0fe}.chip-elective{color:#137333;background:#e6f4ea}.chip-foundation{color:#0f766e;background:#e0f5f4}.chip-interdisciplinary{color:#7c3aed;background:#f3e8fd}.chip-top{align-items:center;gap:6px;display:flex}.chip-code{flex:1;font-size:13px;font-weight:700}.chip-name{overflow-wrap:anywhere;line-height:1.3}.chip-credits{opacity:.8}.chip-remove{cursor:pointer;color:inherit;opacity:.6;background:0 0;border:none;padding:0 2px;font-size:14px;line-height:1}.chip-remove:hover{opacity:1}.cell-footer{justify-content:space-between;align-items:center;margin-top:4px;display:flex}.cell-credits{color:#6c7076;font-size:12px}.cell-credits.over-limit{color:#b06000;font-weight:600}.cell-add{cursor:pointer;background:#fff;border:1px solid #c9ccd1;border-radius:6px;padding:2px 10px;font-size:12px}.cell-add:hover{background:#eef0f2}.modal-backdrop{z-index:10;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#fff;border-radius:12px;flex-direction:column;width:min(520px,90vw);max-height:80vh;display:flex}.modal-header{border-bottom:1px solid #dfe1e5;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.modal-header h3{margin:0}.modal-close{cursor:pointer;background:0 0;border:none;font-size:22px;line-height:1}.picker-list{padding:12px 16px 16px;overflow-y:auto}.picker-search{padding:12px 16px 0;position:relative}.picker-search input{border:1px solid #c9ccd1;border-radius:8px;width:100%;padding:8px 30px 8px 10px;font-size:14px}.picker-search input:focus{border-color:#a8c7fa;outline:2px solid #a8c7fa}.picker-search-clear{cursor:pointer;color:#6c7076;background:0 0;border:none;font-size:16px;line-height:1;position:absolute;top:50%;right:22px;transform:translateY(-50%)}.picker-course{text-align:left;cursor:pointer;background:#fff;border:1px solid #dfe1e5;border-radius:8px;align-items:center;gap:8px;width:100%;margin-bottom:6px;padding:8px 10px;font-size:13px;display:flex}.picker-course:hover{background:#f0f4ff;border-color:#a8c7fa}.picker-course.disabled{opacity:.55;cursor:not-allowed;background:#fafbfc}.picker-course-code{font-weight:600}.picker-course-name{flex:1}.picker-course-credits{color:#6c7076}.picker-divider{text-transform:uppercase;letter-spacing:.04em;color:#9aa0a6;margin:12px 0 6px;font-size:12px}.tag{text-transform:uppercase;letter-spacing:.03em;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:600}.tag-core{color:#174ea6;background:#e8f0fe}.tag-elective{color:#137333;background:#e6f4ea}.tag-foundation{color:#0f766e;background:#e0f5f4}.tag-interdisciplinary{color:#7c3aed;background:#f3e8fd}.picker-course-offered{color:#6c7076;font-size:12px}.picker-course{position:relative}.picker-course.warned{background:#fefbf0;border-color:#f0d78c}.picker-course.warned:hover{background:#fef7e0;border-color:#e3c05c}.picker-course.warned .picker-course-warn{color:#b06000}.picker-course.warned-error{background:#fefafa;border-color:#f5c6c2}.picker-course.warned-error:hover{background:#fdf3f3;border-color:#e8a0a0}.picker-course-warn{color:#d93025;margin-left:4px;font-size:12px}.picker-tooltip{z-index:20;color:#fff;pointer-events:none;background:#1c1e21;border-radius:8px;padding:8px 10px;font-size:12px;line-height:1.45;display:none;position:absolute;top:calc(100% + 4px);left:0;right:0;box-shadow:0 4px 12px #00000040}.picker-course:hover .picker-tooltip,.picker-course:focus-visible .picker-tooltip,.picker-tooltip span{display:block}.verdict{border-radius:8px;margin:0;padding:10px 12px;font-weight:600}.verdict-pass{color:#137333;background:#e6f4ea;border:1px solid #b7dfc0}.verdict-fail{color:#d93025;background:#fdf3f3;border:1px solid #f5c6c2}.check-ok{color:#137333;margin:0;font-weight:600}.requirement-list{margin:0;padding:0;list-style:none}.requirement-item{border:1px solid;border-radius:8px;align-items:flex-start;gap:8px;margin-bottom:6px;padding:8px 10px;font-size:13px;display:flex}.requirement-item.req-ok{color:#1c1e21;background:#e6f4ea;border-color:#b7dfc0}.requirement-item.req-missing{color:#1c1e21;background:#fdf3f3;border-color:#f5c6c2}.req-icon{font-weight:700}.req-ok .req-icon{color:#137333}.req-missing .req-icon{color:#d93025}.req-body{flex-direction:column;gap:2px;display:flex}.req-label{font-weight:600}.req-detail{color:#5b5f66;font-size:12px}.taken-search{margin-bottom:10px;position:relative}.taken-search input{border:1px solid #c9ccd1;border-radius:6px;width:100%;padding:6px 28px 6px 8px;font-size:13px}.taken-search .picker-search-clear{cursor:pointer;color:#6c7076;background:0 0;border:none;font-size:14px;line-height:1;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.sidebar{flex-direction:column;gap:16px;display:flex}.taken-list{max-height:320px;margin:0;padding:0;list-style:none;overflow-y:auto}.taken-list li{padding:3px 0}.taken-item{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.course-code{font-weight:600}.validation-ok{color:#137333;margin:0;font-weight:600}.violation-list{margin:0;padding:0;list-style:none}.violation{background:#fdf3f3;border:1px solid #f5c6c2;border-radius:8px;margin-bottom:6px;padding:8px 10px;font-size:13px}.violation.warning{color:#7a5c00;background:#fef7e0;border-color:#f0d78c}.completion-list{margin:0;padding:0;list-style:none}.completion-item{align-items:center;gap:8px;padding:4px 0;font-size:13px;display:flex}.optimizer-modal .modal-header h3{font-size:16px}.optimizer-body{flex-direction:column;gap:12px;padding:12px 16px 16px;display:flex;overflow-y:auto}.optimizer-goals{flex-direction:column;gap:6px;display:flex}.optimizer-goal{cursor:pointer;border:1px solid #dfe1e5;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.optimizer-goal.selected{background:#f0f4ff;border-color:#a8c7fa}.optimizer-goal input{accent-color:#174ea6}.optimizer-goal-label{font-weight:600}.optimizer-goal-hint{color:#6c7076;font-size:12px}.optimizer-fields{flex-wrap:wrap;gap:12px;display:flex}.optimizer-years{max-width:200px}.optimizer-cap-hint{margin:-4px 0 0}.optimizer-search{padding:0}.optimizer-list{border:1px solid #dfe1e5;border-radius:8px;max-height:240px;margin:0;padding:0;list-style:none;overflow-y:auto}.optimizer-item{cursor:pointer;border-bottom:1px solid #eef0f2;align-items:center;gap:8px;padding:6px 10px;font-size:13px;display:flex}.optimizer-item:last-of-type{border-bottom:none}.optimizer-item:hover{background:#f0f4ff}.optimizer-item.disabled{opacity:.6;cursor:not-allowed}.optimizer-item-name{flex:1}.optimizer-item-extra{color:#6c7076;font-size:12px}.optimizer-notes{background:#fef7e0;border:1px solid #f0d78c;border-radius:8px;padding:8px 12px}.optimizer-notes-title{margin:0 0 4px;font-size:13px;font-weight:600}.optimizer-note{color:#7a5c00;margin:2px 0;font-size:12px}.optimizer-actions{justify-content:flex-end;gap:8px;display:flex}.optimizer-generate{color:#fff;background:#174ea6;border-color:#174ea6}.optimizer-generate:hover{background:#0d3c85}@page{size:landscape;margin:12mm}@media print{*{-webkit-print-color-adjust:exact;print-color-adjust:exact}body{background:#fff}.no-print{display:none!important}.print-only{display:block}.app{max-width:none;padding:0}.app-header p,.panel-hint,.taken-search,.taken-panel{display:none}.taken-panel:has(input:checked){display:block}.taken-panel .taken-list{display:block}.taken-panel .taken-item{break-inside:avoid;align-items:center;gap:8px;padding:2px 0;display:flex}.taken-panel .taken-item input{display:none}.taken-panel .taken-item:before{content:"✓";color:#137333;font-weight:700}.layout,.sidebar{display:block}.panel{box-shadow:none;break-inside:avoid;border:none;border-radius:0;margin-bottom:14px;padding:0 0 10px}.grid-scroll{overflow:visible}.quarter-grid{table-layout:fixed;border-spacing:4px;width:100%}.grid-cell{break-inside:avoid;background:#fff;border:1px solid #9aa0a6;width:auto;max-width:none;min-height:0}.grid-cell.flagged{background:#fdf3f3;border:1px solid #d93025}.cell-add,.chip-remove{display:none}.course-chip{margin-bottom:3px;padding:2px 4px;display:flex}.chip-name{display:block}.modal-backdrop{display:none!important}.violation,.requirement-item{break-inside:avoid}}
