@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--orange:#f47721;--dark:#202b3b;--muted:#798596;--line:#e8edf3;--bg:#fafbfe}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--dark);font-family:'DM Sans','DejaVu Sans',sans-serif}button,input,select{font:inherit}button{cursor:pointer;transition:all .2s}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ffd0ab;outline-offset:2px}#app{max-width:1680px;min-height:100vh;margin:auto;padding:32px clamp(16px,4vw,64px)}main{max-width:1500px;margin:auto}.view[hidden],header[hidden],.modal[hidden],[hidden]{display:none!important}header{max-width:1500px;margin:0 auto 42px}.steps{display:flex;justify-content:space-between;color:#a4adba;font-size:13px;font-weight:750;margin-bottom:12px}.steps .active{color:#dc671a}.track{height:9px;background:#f4e9df;border-radius:20px;overflow:hidden}.track>div{height:100%;width:0;background:linear-gradient(90deg,#ff9c56,#ef6a16);border-radius:20px;transition:width .45s}.welcome{min-height:calc(100vh - 65px);display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;text-align:center}.welcome h1{font:800 clamp(42px,6vw,76px)/1.15 'Manrope',sans-serif;letter-spacing:-3px;margin:18px 0 10px}.welcome p{font-size:clamp(15px,2vw,19px);color:#798596;margin:0}.hero-label,.eyebrow{font-size:12px;letter-spacing:2px;font-weight:800;color:#df7227}.start-btn{margin:60px auto 30px;height:174px;width:174px;border-radius:50%;border:8px solid #ffe4d2;box-shadow:0 24px 58px #ed7d3140;background:linear-gradient(145deg,#ff984a,#f16b17);color:white;font-weight:800;font-size:20px;animation:breathe 3s ease-in-out infinite}.start-btn span{display:block;font-size:31px}.start-btn:hover{transform:scale(1.06);box-shadow:0 28px 70px #eb773970}.credit{position:absolute;right:0;bottom:4px;color:#a0a9b5;font-size:12px}@keyframes breathe{50%{box-shadow:0 12px 35px #ed7d3135}}h2{font:800 clamp(26px,3vw,40px) 'Manrope',sans-serif;letter-spacing:-1px;margin:10px 0}h3{margin:0}.muted{color:var(--muted);font-size:14px}.section-top,.toolbar,.nav,.actions,.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:14px}.nav{margin:24px 0}.primary,.secondary{border:0;border-radius:13px;padding:13px 21px;font-weight:800}.primary{background:linear-gradient(120deg,#ff8b36,#ed6917);color:white;box-shadow:0 7px 18px #ef741d33}.primary:hover{transform:translateY(-2px);box-shadow:0 9px 25px #ef741d44}.secondary{border:1px solid #eddacb;background:white;color:#c45c17}.secondary:hover{background:#fff4eb}.small{padding:9px 15px;font-size:13px}.pill,.count{border-radius:20px;background:#fff1e5;color:#cc651b;padding:7px 13px;font-size:13px;font-weight:750}.drop-zone{border:2px dashed #f4c49f;background:linear-gradient(170deg,#fff,#fff8f2);border-radius:25px;min-height:360px;margin-top:30px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:13px;transition:.2s}.drop-zone.drag{background:#fff0df;border-color:#ee7419}.drop-zone strong{font-size:18px}.drop-zone>span{color:var(--muted);font-size:13px}.upload-symbol{display:grid;place-items:center;width:74px;height:74px;border-radius:22px;background:#fff0e4;color:#f07724;font-size:40px}.status{min-height:30px;margin-top:16px;color:#b45c25}.warning-button{border:1px solid #f3c9a3;background:#fff4e6;color:#a45e10;border-radius:30px;padding:8px 16px}.warning-button.glow{animation:warn 2s infinite}@keyframes warn{50%{box-shadow:0 0 20px #f5a04c75}}.toolbar{justify-content:flex-start;margin:28px 0 20px}.search,select{border:1px solid #e1e7ef;background:white;padding:14px 17px;border-radius:13px;color:var(--dark)}.search{flex:1;min-width:0}select{min-width:165px;accent-color:var(--orange)}.course-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px}.panel{background:white;border:1px solid var(--line);border-radius:20px;padding:19px;min-width:0}.panel-title{font-weight:800;margin-bottom:14px}.course-list,.selected-list{max-height:420px;overflow:auto;min-height:200px}.course-item,.selected-item{padding:13px;border-radius:12px;border:1px solid var(--line);margin-bottom:9px;display:flex;justify-content:space-between;align-items:center;gap:12px}.course-item:hover{border-color:#f2b17e}.course-item strong,.selected-item strong{display:block;font-size:13px}.course-item small,.selected-item small{display:block;color:#8992a0;margin-top:5px}.add,.remove{border:0;border-radius:10px;background:#fff0e4;color:#d56513;font-size:18px;font-weight:800;min-width:38px;height:38px}.add:hover,.remove:hover{background:#f7d6ba}.generation{background:white;border:1px solid #f0d5c0;border-radius:17px;padding:17px;margin-top:20px;display:flex;align-items:center;gap:17px}.generation .track{flex:1}.spinner{width:24px;height:24px;border:3px solid #f6cfb0;border-top-color:#f47721;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.routines{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,620px),1fr));align-items:start;gap:20px;margin-top:28px}.routine-card{background:white;border:1px solid #e4e9f0;border-radius:18px;overflow:hidden;min-width:0;box-shadow:0 8px 30px #22304408}.routine-top{display:flex;align-items:center;justify-content:space-between;padding:17px 20px;gap:10px}.routine-top strong{font:800 17px 'Manrope',sans-serif}.routine-top .primary{padding:8px 11px;font-size:12px}.table-wrap{overflow:auto;max-width:100%}table{width:100%;border-collapse:collapse;font-size:12px;min-width:620px}th{background:#fff1e5;color:#8c470d;text-align:left;padding:12px 9px;white-space:nowrap}td{padding:12px 9px;border-bottom:1px solid #eaeef3;vertical-align:middle}td.day{text-align:center;font-weight:800;background:#fffaf6;border-right:1px solid #f4dfce}tr:nth-child(even) td:not(.day){background:#fdfdfe}#moreZone{padding:24px;text-align:center}.modal{position:fixed;inset:0;background:#18253688;display:grid;place-items:center;padding:20px;z-index:10}.dialog{background:#fff;border-radius:20px;max-height:85vh;width:min(780px,100%);overflow:hidden;display:flex;flex-direction:column;box-shadow:0 30px 80px #14243855}.dialog-top{padding:20px 24px;border-bottom:1px solid var(--line)}.close{border:0;background:#fff1e5;color:#a8531a;border-radius:50%;width:34px;height:34px}.modal-content{overflow:auto;padding:23px}.modal-content p{line-height:1.6}.choice{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.compare-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:16px}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:#fff1e8;border-radius:10px}::-webkit-scrollbar-thumb{background:#ed8b46;border:2px solid #fff1e8;border-radius:12px}::-webkit-scrollbar-thumb:hover{background:#df6a16}@media(max-width:790px){#app{padding:20px 15px}.course-layout{grid-template-columns:1fr}.course-list,.selected-list{max-height:280px}.steps{font-size:11px}.generation{flex-wrap:wrap}.generation .track{flex-basis:100%}.welcome h1{letter-spacing:-1px}}


/* Result preferences */
.routine-filters{background:#fff;border:1px solid #f0dfd1;border-radius:20px;padding:17px 20px;margin-top:20px;box-shadow:0 8px 24px #29354908}
.filter-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.filter-heading strong{font-size:15px;color:#263241}.filter-heading .muted{font-size:12px}
.day-filter,.filter-bottom{display:flex;flex-wrap:wrap;align-items:center;gap:9px}
.filter-bottom{border-top:1px solid #f1e7df;margin-top:13px;padding-top:13px;justify-content:space-between}
.filter-pill{display:inline-flex;gap:7px;align-items:center;padding:9px 13px;border:1px solid #f2dcca;border-radius:999px;background:#fffaf6;color:#97501e;font-weight:700;font-size:12px;cursor:pointer;user-select:none;transition:background .18s,border-color .18s,box-shadow .18s}
.filter-pill:hover{background:#fff0e2;border-color:#eb9c61}
.filter-pill:has(input:checked){background:#ffe8d5;border-color:#f47721;box-shadow:0 2px 10px #f477211b}
.filter-pill input{accent-color:#ed731d;margin:0}
.sort-label{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:750;color:#97501e}
.sort-label select{padding:10px 13px;min-width:185px;font-size:13px;border-color:#f0d8c4;background:#fffaf6}
.filter-feedback{margin:12px 0 0;color:#9b5b2b;font-size:12px;min-height:17px}
.routine-meta{font-size:12px;color:#93644c;background:#fff1e5;padding:5px 9px;border-radius:999px;margin-left:auto}
@media(max-width:790px){.routine-filters{padding:15px}.filter-bottom{align-items:flex-start}.sort-label{flex-wrap:wrap}.routine-meta{margin-left:0}}

/* Selected course faculty choices: one teacher per row, never crowded inline. */
.selected-item>div:first-child{min-width:0;flex:1}
.faculty-preferences{display:flex;flex-direction:column;align-items:flex-start;gap:7px;margin-top:12px}
.faculty-pref-label{font-weight:700;font-size:13px;color:#394555;margin-bottom:2px}
.faculty-choice-vertical{display:flex;align-items:center;gap:9px;width:100%;font-size:13px;line-height:1.5;color:#344054;cursor:pointer}
.faculty-choice-vertical input{flex:0 0 auto;margin:0;accent-color:#ed731d}

/* Weekly day-by-time layout (shared by routines, comparison and visual exports). */
.routines{grid-template-columns:minmax(0,1fr)}
.week-wrap{overflow-x:auto;max-width:100%;border:0;background:#fff}
.weekly-grid{width:100%;min-width:1120px;background:#fff;color:#273346;font-family:'DM Sans',sans-serif}
.weekly-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;background:#fff}
.weekly-heading strong{font-size:22px;font-weight:800}
.weekly-heading span{font-size:12px;font-weight:700;color:#64748b}
.week-board{border:1px solid #cdd6df;border-bottom:0}
.week-axis,.week-row{display:grid;grid-template-columns:110px minmax(0,1fr)}
.week-corner{padding:11px 8px;font-size:10px;font-weight:800;border-right:1px solid #cdd6df;background:#f5f8fa}
.week-scale{height:42px;position:relative;border-bottom:1px solid #cdd6df;background:#f5f8fa}
.week-scale span{position:absolute;transform:translateX(-50%);white-space:nowrap;top:12px;font-size:10px;font-weight:700;color:#44546b}
.week-day{display:flex;align-items:center;justify-content:center;text-align:center;padding:8px;font-size:12px;font-weight:800;border-right:1px solid #cdd6df;border-bottom:1px solid #cdd6df;background:#f7f9fb}
.week-lane{position:relative;height:135px;border-bottom:1px solid #cdd6df;background:repeating-linear-gradient(90deg,#fff 0%,#fff 49.9%,#f9fbfc 50%,#f9fbfc 100%)}
.week-line{position:absolute;top:0;bottom:0;width:1px;background:#dce3e8;pointer-events:none}
.week-empty{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:12px;font-style:italic;color:#a1abb7}
.week-class{position:absolute;top:5px;bottom:5px;border-radius:6px;border:1px solid #bd9a60;background:#fff3d9;padding:7px;display:flex;flex-direction:column;gap:3px;overflow:hidden;box-shadow:0 1px 3px #34405418;z-index:1}
.week-class small{font-size:10px;line-height:1.15;white-space:normal;color:#46576c;overflow-wrap:anywhere}
.week-class strong{font-size:13px;line-height:1.22;font-weight:800;overflow-wrap:anywhere}
.week-class b{font-size:10px;line-height:1.2;margin-top:auto}
.week-shade-0{background:#fff0cf;border-color:#c9a46a}.week-shade-1{background:#e9e6fc;border-color:#a69dd7}.week-shade-2{background:#dff2e9;border-color:#8bbcac}.week-shade-3{background:#e1effe;border-color:#94b8dd}.week-shade-4{background:#e6f3dd;border-color:#a1c995}.week-shade-5{background:#ffebe3;border-color:#d8ad97}

/* Empty weekdays remain visible but use only a compact strip. */
.week-row-empty .week-lane{height:34px;background:#fafbfc}
.week-row-empty .week-day{font-size:11px;color:#778394}
.week-row-empty .week-empty{font-size:11px}

/* Actual UIU class-period labels and readable section metadata */
.week-scale{height:48px}
.week-scale span{top:14px;transform:translateX(-50%);font-size:11px;font-weight:800;white-space:nowrap}
.week-scale .week-scale-first{transform:none;left:0!important;padding-left:6px}
.week-scale .week-scale-last{transform:translateX(-100%);padding-right:6px}
.week-class{gap:4px;padding:8px 10px}
.week-course{font-size:13px;font-weight:800;line-height:1.15}
.week-section,.week-room{font-size:13px;font-weight:800;line-height:1.15;overflow-wrap:anywhere}
.week-faculty{font-size:12px;font-weight:650;line-height:1.17;overflow-wrap:anywhere}
.week-title{font-size:14px;line-height:1.17;font-weight:800}
.week-period{font-size:11px;line-height:1.15;margin-top:auto}

/* Stagger unusual adjacent starts (e.g. 1:51 and 2:00) rather than overlap their labels. */
.week-scale{height:62px}
.week-scale .week-scale-close{top:37px;font-size:10px;color:#9a4d1c}
.week-lane{height:160px}
