:root{color:#172033;font-synthesis:none;text-rendering:optimizelegibility;background:#f8fafc;font-family:Inter,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input{font:inherit}h1,h2,h3{color:#0f172a}h1{font-size:2.7rem;line-height:1.1}#root{min-height:100vh}.planner{text-align:left;max-width:1280px;margin:0 auto;padding:2rem}.planner-header{justify-content:space-between;align-items:end;gap:2rem;margin-bottom:1rem;display:flex}.planner-header p{margin:0}.header-actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;display:flex}.eyebrow{color:#1d4ed8;letter-spacing:.08em;text-transform:uppercase;font-size:.8rem;font-weight:800}.planner h1{margin:.25rem 0}.reset-button{color:#172033;cursor:pointer;font:inherit;white-space:nowrap;background:#fff;border:1px solid #64748b;border-radius:.35rem;padding:.55rem .8rem}.reset-button:hover,.reset-button:focus-visible{outline-offset:2px;background:#eef2ff;outline:3px solid #1d4ed8}.credit-summary{color:#334155;background:#f8fafc;border:1px solid #cbd5e1;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-bottom:1rem;padding:.65rem .8rem;display:flex}.credit-summary strong{color:#172033}.credit-summary span+span{border-left:1px solid #cbd5e1;padding-left:1rem}.path-picker{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.view-picker{gap:.5rem;margin-bottom:1rem;display:flex}.planner-loading{color:#475569;padding:1rem 0}.path-button{color:#172033;cursor:pointer;font:inherit;background:#fff;border:1px solid #94a3b8;border-radius:999px;padding:.25rem .7rem}.path-button:hover,.path-button:focus-visible{outline-offset:2px;background:#eef2ff;outline:3px solid #1d4ed8}.path-button.is-selected{background:#dbeafe;border-color:#1d4ed8;font-weight:700}.next-term{color:#172554;text-transform:capitalize;background:#eff6ff;border-left:4px solid #2563eb;margin-bottom:1rem;padding:.75rem 1rem}.legend{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.legend-title{margin-right:.25rem;font-weight:700}.legend span:not(.legend-title){background:var(--category-color);color:#172033;border:1px solid #94a3b8;border-radius:999px;padding:.2rem .5rem;font-size:.8rem}.scroll-hint{color:#475569;margin:0 0 .5rem;font-size:.85rem}.curriculum-scroll{padding-bottom:.75rem;overflow-x:auto}.curriculum-grid{border:1px solid #4b5563;min-width:1100px}.grid-header{text-transform:uppercase;background:#e2e8f0;border-bottom:1px solid #4b5563;grid-template-columns:7rem 5rem 1fr;font-size:.8rem;font-weight:800;display:grid}.grid-header>span,.year-label,.term-label{border-right:1px solid #4b5563;align-content:center;padding:.5rem}.credit-heading{text-align:center}.credit-heading strong{padding:.5rem 0 .25rem;display:block}.credit-numbers{grid-template-columns:repeat(18,minmax(0,1fr));display:grid}.credit-numbers span{border-left:1px dotted #94a3b8;padding:.25rem 0}.year-group{grid-template-columns:7rem minmax(0,1fr);display:grid}.year-group+.year-group{border-top:1px solid #4b5563}.year-label{text-transform:capitalize;background:#f8fafc;grid-row:span 2;align-content:center;font-weight:700}.term-row{grid-column:2;grid-template-columns:5rem minmax(0,1fr);display:grid}.term-row+.term-row{border-top:1px solid #4b5563}.term-label{text-transform:capitalize;background:#f8fafc}.credit-grid{background-image:repeating-linear-gradient(90deg,#0000 0 calc(5.5556% - 1px),#b6bec9 calc(5.5556% - 1px) 5.5556%);background-size:100% 100%;grid-template-columns:repeat(18,minmax(0,1fr));min-height:4.5rem;display:grid}@media (width<=700px){.planner{padding:1rem}.planner-header{flex-direction:column;align-items:start;gap:1rem}.planner h1{font-size:2rem}.reset-button{width:100%}.credit-summary span+span{border-left:0;padding-left:0}}.course-cell{background:var(--category-color);color:#172033;cursor:pointer;font:inherit;text-align:center;border:1px solid #4b5563;flex-direction:column;justify-content:center;align-items:center;min-height:4.5rem;padding:.35rem;font-size:.9rem;display:flex}.course-cell:hover,.course-cell:focus-visible{filter:brightness(.94);outline-offset:-3px;outline:3px solid #1d4ed8}.course-cell-credits{opacity:.72;font-size:.72rem}.course-cell.is-completed{color:#0f172a;background:#94a3b8;border-color:#475569;font-weight:700;position:relative;overflow:hidden}.course-cell.is-completed:before,.course-cell.is-completed:after{content:"";opacity:.85;transform-origin:50%;background:#000;width:150%;height:3px;position:absolute;top:50%;left:-25%}.course-cell.is-completed:before{transform:rotate(20deg)}.course-cell.is-completed:after{transform:rotate(-20deg)}.course-cell.is-completed>span{z-index:1;position:relative}.course-cell.is-suggested{box-shadow:inset 0 0 0 3px #2563eb}.course-cell.is-stretch{box-shadow:inset 0 0 0 3px #dc2626}.course-cell.is-high-priority{box-shadow:inset 0 0 0 3px #16a34a}.course-cell.is-high-priority.is-stretch{box-shadow:inset 0 0 0 3px #dc2626,inset 0 0 0 6px #16a34a}.course-status{background:#ffffffc7;border-radius:999px;margin-bottom:.2rem;padding:.08rem .35rem;font-size:.66rem;font-weight:800}.course-cell.is-blocked .course-status{color:#fff;background:#7f1d1d}.course-cell.is-stretch .course-status{color:#fff;background:#991b1b}.course-status.priority-status{color:#fff;background:#166534}.category-cst{--category-color:#d9ead3}.category-math{--category-color:#fff2cc}.category-ge-lower{--category-color:#fce5cd}.category-ge-upper{--category-color:#f9ddbc}.category-concentration-required{--category-color:#d9eaf7}.category-elective{--category-color:#ead1dc}.modal-backdrop{z-index:10;background:#0f172a94;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.course-modal{color:#172033;text-align:left;background:#fff;border-radius:.75rem;width:100%;max-width:42rem;max-height:min(44rem,90vh);padding:2rem;position:relative;overflow:auto;box-shadow:0 20px 60px #0000004d}.course-modal h2{margin:0 2rem .75rem 0}.course-modal h3{margin-top:1.5rem;margin-bottom:.25rem}.course-modal p{margin:.75rem 0}.course-modal ul{margin-top:.25rem;padding-left:1.25rem}.modal-close{cursor:pointer;background:0 0;border:0;font-size:2rem;line-height:1;position:absolute;top:1rem;right:1rem}.modal-kind{color:#5b6475;letter-spacing:.05em;text-transform:uppercase;font-size:.8rem;font-weight:700}.course-name{font-weight:700}.modal-slot-label{color:#475569;font-size:.95rem}.placeholder-note{color:#7c2d12;font-style:italic}.prerequisite-status{border-radius:.25rem;padding:.5rem;font-weight:700}.prerequisite-status.is-met{color:#166534;background:#dcfce7}.prerequisite-status.is-unmet{color:#991b1b;background:#fee2e2}.taken-control,.option-control,.clear-choice-control{color:#fff;cursor:pointer;font:inherit;background:#1d4ed8;border:0;border-radius:.35rem;padding:.35rem .55rem;font-weight:700}.taken-control{margin-top:1.5rem;padding:.65rem .9rem}.clear-choice-control{color:#172033;background:#fff;border:1px solid #64748b;margin-top:.75rem}.taken-control:hover,.taken-control:focus-visible,.option-control:hover,.option-control:focus-visible{outline-offset:2px;background:#1e40af;outline:3px solid #93c5fd}.clear-choice-control:hover,.clear-choice-control:focus-visible{outline-offset:2px;background:#f1f5f9;outline:3px solid #93c5fd}.selected-option{color:#166534;font-weight:700}
