:root{--bg:#f5f6f2;--paper:#fff;--ink:#253b34;--muted:#87908a;--green:#295c4f;--lime:#e8eec7;--line:#e8ece5;--side:#fcfdfb;--course-bg:#e5ece8;--course-ink:#3e6656;--study-bg:#e9e7f3;--study-ink:#726287;--life-bg:#f5ead5;--life-ink:#967c44;--other-bg:#e5edf4;--other-ink:#5d7f99;--shadow:0 3px 16px #253b3403;font-family:Inter,'Pretendard','Apple SD Gothic Neo','Noto Sans KR',system-ui,-apple-system,BlinkMacSystemFont,sans-serif;font-synthesis:none;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button{background:none;border:0}a{color:inherit;text-decoration:none}button,input,select,textarea,a{outline-offset:4px}button:focus-visible,a:focus-visible{outline:2px solid var(--green)}button:disabled{opacity:.45;cursor:not-allowed}button svg{flex-shrink:0}svg.icon{width:19px;height:19px;vertical-align:middle;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}h1,h2,h3,p{margin:0}button,a{touch-action:manipulation}input[type=checkbox]{accent-color:var(--green)}
.boot{min-height:100vh;display:grid;place-content:center;text-align:center;gap:20px}.boot p{color:var(--muted);font-size:14px}.shell{min-height:100vh}.sidebar{width:224px;position:fixed;inset:0 auto 0 0;background:var(--side);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:37px 22px 20px;z-index:20}.brand{display:flex;gap:10px;align-items:center;padding:0 11px}.brand-mark{width:36px;height:38px;border-radius:12px;background:var(--green);font-size:39px;font-weight:700;color:#edf0d2;line-height:31px;display:inline-block;position:relative;text-align:center;font-family:Georgia,serif;letter-spacing:-4px;padding-right:5px}.brand-mark span{position:absolute;font-size:20px;bottom:0;right:4px;color:#c8d58d}.brand-name{font-family:Georgia,serif;font-size:27px;letter-spacing:-1.4px;font-weight:700}.brand-sub{font-size:8px;font-weight:700;letter-spacing:2.3px;margin-top:3px;color:#87938b}.nav-caption{font-size:10px;font-weight:650;letter-spacing:1.6px;color:#a0aaa2;margin:52px 15px 13px}.nav-list{display:flex;flex-direction:column;gap:7px}.nav-link{display:flex;gap:13px;align-items:center;padding:14px;border-radius:9px;font-size:13px;font-weight:500;color:#7e8981;transition:background .16s,color .16s;position:relative}.nav-link:hover{background:#f0f3ec}.nav-link.active{background:var(--green);color:white;box-shadow:0 4px 9px #295c4f12}.nav-link.active:after{content:'';position:absolute;width:5px;height:5px;border-radius:50%;background:#d6e4ac;right:15px}.nav-link .icon{width:18px;height:18px}.sidebar-bottom{margin-top:auto;padding-top:60px}.semester-widget{padding:17px 14px 18px;border:1px solid #e4e9dc;border-radius:11px;background:#f5f7ee;position:relative;overflow:hidden}.semester-widget h3{font-size:12px;font-weight:650}.semester-widget p{font-size:10px;color:#8c9682;margin-top:7px;line-height:1.7}.semester-widget .tiny-tag{font-size:8px;letter-spacing:1.2px;margin-bottom:13px;color:#8c9872}.semester-widget .little-flower{position:absolute;right:10px;top:10px;color:#b4c18a;font-size:33px;transform:rotate(15deg)}.semester-widget a{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:#72815d;margin-top:14px}.sidebar-util{display:flex;align-items:center;gap:9px;color:#8b958e;font-size:12px;padding:21px 12px}.profile{border-top:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:20px 8px 0}.avatar{background:#e8ede4;border-radius:50%;width:33px;height:33px;display:grid;place-content:center;font-size:14px}.profile strong{font-size:12px;font-weight:600}.profile small{display:block;font-size:10px;color:#95a096;margin-top:3px}.profile .icon{margin-left:auto;color:#9da69f;width:16px}.workspace{margin-left:224px}.topbar{height:77px;border-bottom:1px solid var(--line);padding:0 40px;display:flex;align-items:center;justify-content:space-between;background:#fcfdfb;font-size:12px}.breadcrumb{display:flex;align-items:center;gap:11px;color:#9ba49d}.breadcrumb strong{font-weight:500;color:#53675b}.breadcrumb .icon{width:15px;height:15px}.topbar-right{display:flex;gap:22px;align-items:center}.save-state{font-size:10px;color:#8a978d;display:flex;gap:6px;align-items:center}.save-state i{width:5px;height:5px;background:#84a186;border-radius:50%}.today-date{font-size:11px;color:#86938a}.topbar-right .icon-btn{color:#809087}.mobile-brand{display:none}.content{padding:34px 40px 36px;max-width:1560px;margin:0 auto}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:27px}.eyebrow{font-size:9px;font-weight:650;letter-spacing:2.1px;color:#96a48d;margin-bottom:10px}.page-heading h1{font-size:28px;font-weight:650;letter-spacing:-1.2px;display:flex;align-items:baseline;gap:12px}.page-heading h1 span{font-size:14px;font-weight:400;letter-spacing:-.3px;color:#99a398}.heading-sub{font-size:12px;color:#919c92;margin-top:10px;line-height:1.6}.heading-actions{display:flex;align-items:center;gap:10px}.button{display:inline-flex;gap:8px;align-items:center;justify-content:center;min-height:39px;padding:10px 15px;border-radius:7px;font-size:12px;font-weight:550;border:1px solid var(--line);background:white;transition:transform .15s,background .15s;white-space:nowrap}.button:hover{background:#f0f4ee}.button.primary{background:var(--green);color:#fff;border-color:var(--green);box-shadow:0 3px 5px #295c4f0b}.button.primary:hover{background:#204d41}.button .icon{height:15px;width:15px}.button.soft{background:#f4f6f1;color:#65785f;border:0}.button.danger{color:#b85e5e;background:#fff5f4;border-color:#f3d8d7}.icon-btn{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px}.icon-btn:hover{background:#eef2ea}.icon-btn .icon{height:17px;width:17px}.date-nav{display:flex;align-items:center;gap:3px}.date-nav .today-btn{font-size:11px;color:#657a68;border:1px solid #e3e9df;padding:6px 11px;border-radius:5px;margin:0 5px}.sample-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;margin-bottom:20px;background:#edf1e7;border:1px solid #e3e9db;border-radius:7px;font-size:11px;color:#7e8b6d}.sample-banner span{display:flex;gap:7px;align-items:center;line-height:1.6}.sample-banner .icon{width:14px;height:14px}.sample-banner button{font-size:10px;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:23px}.metric{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:19px 21px;box-shadow:var(--shadow);position:relative;overflow:hidden;min-height:113px}.metric-label{font-size:11px;color:#859084;display:flex;align-items:center;justify-content:space-between}.metric-label .icon{width:16px;height:16px;color:#9fae9f}.metric-value{font-size:29px;line-height:1.2;letter-spacing:-.8px;font-weight:600;margin-top:13px}.metric-value small{font-size:12px;font-weight:400;color:#9aa699;margin-left:5px;letter-spacing:0}.metric-foot{font-size:10px;color:#93a08e;margin-top:7px}.metric-progress{height:4px;background:#edf1e7;margin-top:12px;border-radius:3px;overflow:hidden}.metric-progress div{height:100%;background:#a0b476;border-radius:3px}.metric.highlight{background:#eef2e3;border-color:#e0e7cf}.metric.highlight .metric-value{color:#4b6544}.daily-layout{display:grid;grid-template-columns:minmax(420px,1.6fr) minmax(280px,1fr);gap:23px;align-items:start}.card{background:white;border:1px solid var(--line);border-radius:11px;box-shadow:var(--shadow);overflow:hidden}.card-head{padding:21px 24px 18px;display:flex;align-items:center;justify-content:space-between;gap:14px}.card-head h2{font-size:14px;font-weight:650;letter-spacing:-.35px;display:flex;align-items:center;gap:8px}.card-head h2 .icon{color:#799279;width:17px;height:17px}.card-head .subtle{font-size:10px;color:#99a497}.card-head-line{border-bottom:1px solid var(--line)}.small-link{font-size:11px;color:#7f9276;display:inline-flex;align-items:center;gap:5px}.small-link .icon{width:13px;height:13px}.legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:10px;color:#919b91}.legend span{display:flex;align-items:center;gap:5px}.dot{height:6px;width:6px;border-radius:2px;display:inline-block;flex-shrink:0}.dot.course{background:#91aa99}.dot.study{background:#afa0ca}.dot.life{background:#d5bc83}.dot.other{background:#8bacc7}.timeline-legend{padding:0 24px 18px;display:flex;justify-content:space-between;align-items:center}.timeline-legend p{font-size:10px;color:#b0b7ad}.schedule-scroll{max-height:540px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#dce4d8 transparent}.timeline{margin:0 24px 14px 57px;position:relative}.hour-line{border-top:1px solid #edf0ea;position:absolute;left:0;right:0;text-align:left}.hour-line:after{content:'';position:absolute;top:30px;left:0;right:0;border-top:1px dashed #f0f2ed}.hour-line label{position:absolute;left:-37px;top:-7px;font-size:10px;color:#a5afa5;font-variant-numeric:tabular-nums}.hour-hit{position:absolute;inset:0 0 auto 0;height:60px;width:100%;text-align:left;color:transparent}.hour-hit:hover{background:#f8faf5}.hour-hit:hover:after{content:'+ 일정 추가';position:absolute;right:10px;top:13px;font-size:10px;color:#b1bfa8}.event-block{position:absolute;border:1px solid transparent;border-left:3px solid;display:flex;flex-direction:column;justify-content:flex-start;text-align:left;border-radius:5px;padding:10px 12px;overflow:hidden;transition:filter .15s,box-shadow .15s;z-index:2}.event-block:hover{filter:brightness(.97);box-shadow:0 3px 8px #233e2610}.event-block.course{background:var(--course-bg);border-left-color:#89a390;color:var(--course-ink)}.event-block.study{background:var(--study-bg);border-left-color:#af9acb;color:var(--study-ink)}.event-block.life{background:var(--life-bg);border-left-color:#d3b36d;color:var(--life-ink)}.event-block.other{background:var(--other-bg);border-left-color:#87abc5;color:var(--other-ink)}.event-block strong{font-size:12px;font-weight:600;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.event-block small{font-size:10px;opacity:.7;margin-top:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.event-block .event-meta{display:flex;justify-content:space-between;gap:5px;font-size:9px;margin-top:6px;opacity:.78}.event-block.done{opacity:.62}.event-block.done strong:after{content:' ✓'}.event-block.compact{padding:5px 8px}.event-block.compact small{display:none}.now-line{height:1px;background:#d49178;position:absolute;left:-6px;right:0;z-index:4;pointer-events:none}.now-line:before{content:'';position:absolute;width:5px;height:5px;background:#d49178;border-radius:50%;left:-2px;top:-2px}.now-line label{position:absolute;left:-39px;top:-7px;font-size:9px;color:#c6826b;background:#fff;padding:1px}.card-footer{border-top:1px solid var(--line);padding:12px 23px;text-align:center;font-size:10px;color:#a5afa1}.side-column{display:flex;flex-direction:column;gap:19px}.focus-card{background:#f0f3e5;border:1px solid #e3e9d7;border-radius:11px;padding:22px 24px;position:relative;overflow:hidden}.focus-title{font-size:10px;color:#8d9b77;display:flex;align-items:center;gap:6px;margin-bottom:15px;font-weight:550}.focus-title .icon{width:15px;height:15px}.focus-input{display:block;resize:none;width:100%;background:none;border:0;padding:0;font-size:16px;line-height:1.7;letter-spacing:-.4px;font-weight:550;color:#586c46;min-height:56px;outline:0}.focus-input::placeholder{color:#9eac8a}.focus-note{font-size:10px;color:#a2ad8c;margin-top:12px;display:flex;align-items:center;gap:5px}.focus-note .icon{width:12px;height:12px}.task-count{background:#f1f4ec;border-radius:4px;font-size:10px;color:#8da17a;padding:3px 6px;font-weight:400}.task-list{padding:0 23px 7px}.task-row{display:flex;align-items:flex-start;gap:10px;padding:12px 0;border-bottom:1px solid #eff1ec}.task-row:last-child{border-bottom:0}.check-btn{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border:1px solid #d9e0d5;border-radius:4px;flex-shrink:0;margin-top:2px;background:white;padding:0}.check-btn.checked{background:#8aa278;border-color:#8aa278;color:white}.check-btn .icon{width:11px;height:11px}.task-main{flex:1;min-width:0}.task-main strong{font-size:12px;font-weight:450;line-height:1.6;word-break:break-word}.task-main small{display:block;font-size:9px;color:#a4afa0;margin-top:5px}.task-row.completed .task-main strong{text-decoration:line-through;color:#a6afa1}.task-priority{font-size:8px;display:inline-block;border-radius:3px;padding:3px 5px;margin-top:4px;color:#ab8c52;background:#f8f2e4}.task-delete{color:#b4bcb0;opacity:0;width:22px;height:22px;flex-shrink:0}.task-row:hover .task-delete,.task-row:focus-within .task-delete{opacity:1}.task-delete .icon{width:12px;height:12px}.inline-task{display:flex;gap:9px;padding:13px 23px 18px;align-items:center}.inline-task input{border:0;background:#f7f8f5;border-radius:6px;padding:10px 12px;min-width:0;width:100%;font-size:11px;color:var(--ink);outline-color:#a2b68c}.inline-task input::placeholder{color:#a7b09f}.inline-task button{color:#8c9d7f;background:#f1f5eb;width:31px;height:31px;border-radius:6px;flex-shrink:0}.inline-task .icon{height:14px;width:14px}.note-area{padding:0 23px 21px}.note-area textarea{border:0;resize:vertical;width:100%;min-height:93px;font-size:12px;color:#7f8e78;line-height:28px;background:repeating-linear-gradient(transparent 0,transparent 27px,#edf0e9 27px,#edf0e9 28px);outline-color:#b9c5af}.note-area textarea::placeholder{color:#b6beb1}.quote-card{padding:13px 18px;text-align:center;font-size:10px;line-height:1.9;color:#a3ae98}.quote-card span{font-family:Georgia,serif;font-size:23px;color:#c1ccb2;display:block;height:21px}.footer{display:flex;justify-content:space-between;color:#aeb7a9;font-size:9px;padding:23px 2px 0;letter-spacing:.2px}.footer span:first-child{font-family:Georgia,serif;font-style:italic;font-size:10px}.footer a:hover{color:var(--green)}.empty{padding:28px 15px;color:#a3ae9d;font-size:12px;text-align:center;line-height:1.9}.empty .icon{display:block;margin:0 auto 10px;color:#b2bea8}.week-layout{display:grid;grid-template-columns:minmax(560px,1fr) 265px;gap:20px;align-items:start}.week-toolbar{display:flex;justify-content:space-between;align-items:center;padding:19px 22px;border-bottom:1px solid var(--line);gap:12px}.week-toolbar h2{font-size:13px;font-weight:600}.week-scroll{overflow-x:auto}.week-board{min-width:660px}.week-days{display:grid;grid-template-columns:48px repeat(7,minmax(0,1fr));border-bottom:1px solid var(--line);position:sticky;top:0;background:white;z-index:5}.week-day{padding:14px 2px;text-align:center;border-left:1px solid #f0f2ed;font-size:10px;color:#98a390}.week-day b{font-size:16px;color:#7c8d72;font-weight:500;display:block;margin-top:6px}.week-day.today b{display:flex;width:29px;height:29px;align-items:center;justify-content:center;margin:2px auto -4px;background:var(--green);color:white;border-radius:50%}.week-day.today{color:var(--green);background:#f6f9f1}.week-day.weekend{color:#b5b9ae}.week-time-scroll{max-height:590px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#dce4d8 transparent}.week-time-grid{display:grid;grid-template-columns:48px repeat(7,minmax(0,1fr));position:relative}.week-times{position:relative}.week-times label{position:absolute;right:12px;font-size:9px;color:#a4afa0}.week-column{position:relative;border-left:1px solid #edf0e9;background:repeating-linear-gradient(transparent 0,transparent 55px,#edf0e9 55px,#edf0e9 56px)}.week-column.today{background-color:#fcfdf9}.week-column .event-block{padding:8px 5px;border-left-width:2px;border-radius:4px}.week-column .event-block strong{font-size:10px;white-space:normal;line-height:1.5;word-break:keep-all}.week-column .event-block small{font-size:8px;margin-top:5px}.week-column .event-block .event-meta{font-size:8px;line-height:1.5;flex-direction:column;gap:1px}.week-column .hour-hit{height:56px}.week-column .hour-hit:hover:after{content:'+';right:8px;font-size:14px}.weekly-note{padding:19px 22px;background:#eef2e5;border-radius:10px;font-size:11px;line-height:1.9;color:#7d8f68}.weekly-note strong{display:block;color:#647c50;font-size:12px;margin-bottom:9px}.weekly-note p{color:#94a187;font-size:10px;margin-top:10px}.category-breakdown{padding:0 22px 20px}.category-row{display:grid;grid-template-columns:62px 1fr 42px;align-items:center;gap:10px;margin:14px 0;font-size:10px;color:#8a9783}.category-row span{display:flex;gap:6px;align-items:center}.category-row>div{height:5px;background:#f2f4ef;border-radius:3px;overflow:hidden}.category-row i{display:block;height:100%;background:#a8bc94;border-radius:3px}.category-row b{text-align:right;font-weight:400;font-size:9px}.month-layout{display:grid;grid-template-columns:minmax(500px,1fr) 280px;gap:22px;align-items:start}.month-toolbar{padding:21px 24px;display:flex;justify-content:space-between;align-items:center}.month-toolbar h2{font-family:Georgia,serif;font-size:23px;letter-spacing:-.5px;font-weight:500}.month-toolbar h2 small{font-family:inherit;font-size:13px;color:#a5af9c;margin-left:8px}.month-weekdays{display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid var(--line);padding:13px 0;font-size:10px;color:#9aa591;text-align:center}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.month-cell{min-height:117px;border-top:1px solid var(--line);border-right:1px solid var(--line);padding:9px 6px;cursor:pointer;position:relative;transition:background .15s}.month-cell:nth-child(7n){border-right:0}.month-cell:hover{background:#f8faf4}.month-cell.outside{background:#fafbf8}.month-cell.selected{background:#f0f5e8;box-shadow:inset 0 0 0 1.5px #a1b485}.month-cell.outside .day-number{color:#c7cec1}.day-number{font-size:11px;padding:0;width:25px;height:25px;display:grid;place-content:center;color:#8e9a83;margin-bottom:6px}.month-cell.today .day-number{background:var(--green);color:white;border-radius:50%}.month-chip{width:100%;display:block;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:3px;text-align:left;margin:4px 0;padding:4px 5px;color:var(--course-ink);background:var(--course-bg)}.month-chip.study{background:var(--study-bg);color:var(--study-ink)}.month-chip.life{background:var(--life-bg);color:var(--life-ink)}.month-chip.other{background:var(--other-bg);color:var(--other-ink)}.month-chip.milestone{background:#f6e6df;color:#ae7b61}.more-events{font-size:9px;color:#a5af9a;padding:1px 5px}.agenda-list{padding:0 22px 20px}.agenda-item{display:flex;align-items:flex-start;gap:10px;padding:13px 0;border-bottom:1px solid #edf0e8;cursor:pointer;width:100%;text-align:left}.agenda-item:last-child{border:0}.agenda-item .dot{margin-top:5px}.agenda-item strong{font-size:11px;font-weight:500;line-height:1.5;display:block}.agenda-item small{font-size:9px;color:#a5ae9e;display:block;margin-top:6px}.goal-list{padding:0 22px 20px}.goal-item{border-bottom:1px solid #edf0e8;padding:13px 0;display:flex;gap:10px;align-items:flex-start}.goal-item:last-child{border:0}.goal-item .goal-body{flex:1;min-width:0}.goal-item strong{font-size:11px;display:block;font-weight:500;line-height:1.6}.goal-item small{font-size:9px;color:#a2ad9a;display:block;margin-top:5px}.goal-item.done strong{text-decoration:line-through;color:#9eab95}.goal-item .icon-btn{width:23px;height:23px;color:#a3ad99}.academic-layout{display:grid;grid-template-columns:minmax(500px,1fr) 290px;gap:22px;align-items:start}.table-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:19px 22px;border-bottom:1px solid var(--line)}.table-toolbar h2{font-size:14px;font-weight:600}.table-filters{display:flex;gap:8px}.table-filters select{border:1px solid #e6ebdf;border-radius:5px;padding:6px 8px;background:white;font-size:10px;color:#8c9a81;max-width:130px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;font-size:11px;white-space:nowrap}th{text-align:left;background:#fafbf8;color:#a0ac95;font-size:9px;font-weight:500;padding:13px 16px;border-bottom:1px solid var(--line)}th:first-child{padding-left:22px}td{padding:16px;border-bottom:1px solid #eff2e9;color:#85937a}td:first-child{padding-left:22px;color:#4c6443;font-weight:500}td:last-child{padding-right:14px}tr:last-child td{border-bottom:0}.tag{display:inline-flex;align-items:center;font-size:9px;line-height:1;padding:5px 7px;border-radius:4px;background:#ecf2e5;color:#8b9c74}.tag.general{background:#f3ecd9;color:#ae9964}.tag.elective{background:#ece8f3;color:#a398b7}.tag.status{background:#eff1ed;color:#9da794}.tag.enrolled{background:#e5edea;color:#6f9485}.grade{font-weight:650;color:#4e6950}.audit{padding:0 23px 22px}.audit-top{display:flex;justify-content:space-between;font-size:11px;margin:17px 0 9px;color:#80916e}.audit-top b{font-weight:500;font-size:10px;color:#9da991}.audit-bar{height:6px;background:#eef2e8;border-radius:4px;overflow:hidden}.audit-bar div{height:100%;background:#a8ba8a;border-radius:4px}.audit-bar.general div{background:#d6c395}.audit-bar.elective div{background:#bbaed0}.audit-bottom{padding-top:18px;border-top:1px solid var(--line);margin-top:20px;font-size:10px;color:#a0ab95;line-height:1.8}.degree-ring{display:flex;justify-content:center;padding:5px 0 12px}.ring{width:128px;height:128px;border-radius:50%;display:grid;place-content:center;background:conic-gradient(#96ad77 var(--progress),#edf1e6 0);position:relative}.ring:before{content:'';position:absolute;inset:9px;border-radius:50%;background:white}.ring-inner{position:relative;text-align:center}.ring-inner b{display:block;font-size:25px;font-weight:550;letter-spacing:-1px;color:#617b4f}.ring-inner small{font-size:9px;color:#a2af95;display:block;margin-top:4px}.info-card{background:#f1f3eb;border:1px solid #e4e9da;padding:20px 22px;border-radius:10px}.info-card h3{font-size:11px;font-weight:600;color:#7b8e65;display:flex;align-items:center;gap:6px}.info-card h3 .icon{width:14px;height:14px}.info-card p{font-size:10px;color:#9aa68d;line-height:1.9;margin-top:10px}.semester-summary{padding:18px 23px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:10px;color:#9caa90}.semester-summary b{color:#6f8660;font-weight:500}.tabular{font-variant-numeric:tabular-nums}.course-action{padding:4px;color:#9caf8f}.course-action .icon{width:13px;height:13px}
dialog{border:1px solid #e0e6d7;border-radius:14px;padding:0;max-width:500px;width:calc(100vw - 32px);box-shadow:0 25px 90px #1d382a25;color:var(--ink);background:#fff;max-height:90vh;overflow:auto}dialog::backdrop{background:#203c2e50;backdrop-filter:blur(3px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;padding:24px 26px 19px;border-bottom:1px solid var(--line)}.dialog-head h2{font-size:18px;letter-spacing:-.5px;font-weight:600}.dialog-head p{font-size:10px;color:#9ba991;margin-top:6px}.dialog-body{padding:23px 26px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 14px}.field{display:flex;flex-direction:column;gap:8px;font-size:11px;color:#7a8e6b}.field.full{grid-column:1 / -1}.field input,.field select,.field textarea{width:100%;border:1px solid #e1e7d8;border-radius:6px;padding:10px 12px;font-size:12px;color:#526847;background:#fcfdf9;min-width:0;outline-color:#a0b68a}.field textarea{resize:vertical;min-height:70px}.field input::placeholder,.field textarea::placeholder{color:#aeba9f}.field small{font-size:9px;color:#a0ad93;line-height:1.7}.check-field{display:flex;align-items:center;gap:8px;font-size:11px;color:#899a79;grid-column:1/-1}.check-field input{margin:0}.form-notice{background:#f5f7f0;padding:11px 13px;font-size:10px;line-height:1.8;color:#95a085;border-radius:5px;margin-top:18px}.form-error{color:#bd7364;font-size:11px;line-height:1.6;margin-top:15px;min-height:0}.dialog-actions{display:flex;gap:8px;align-items:center;justify-content:flex-end;padding:18px 26px;border-top:1px solid var(--line);background:#fcfdf9}.dialog-actions .danger{margin-right:auto}.settings-section{padding:17px 0;border-top:1px solid var(--line);margin-top:20px}.settings-section h3{font-size:12px;margin-bottom:11px;font-weight:600}.settings-section p{font-size:10px;line-height:1.9;color:#9eaa92;margin-bottom:13px}.settings-buttons{display:flex;gap:8px;flex-wrap:wrap}.settings-buttons .button{font-size:10px}.settings-section a{font-size:11px;color:var(--green);text-decoration:underline;text-underline-offset:3px}.confirm-text{font-size:12px;color:#859377;line-height:1.9}.confirm-text strong{color:#526a44}#toast{position:fixed;bottom:27px;left:calc(50% + 112px);transform:translate(-50%,20px);background:#294f42;color:#f5f8ee;padding:13px 21px;border-radius:9px;font-size:12px;box-shadow:0 8px 30px #25493020;z-index:100;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:90vw;text-align:center}#toast.show{opacity:1;transform:translate(-50%,0)}.error-panel{padding:40px;max-width:600px;margin:auto}.error-panel h1{font-size:22px}.error-panel p{font-size:14px;line-height:1.9;margin:20px 0;color:#7b8c70}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1550px){.content{padding-left:48px;padding-right:48px}.timeline{margin-right:30px}.daily-layout{grid-template-columns:1.8fr 1fr}.metric{min-height:119px}.schedule-scroll{max-height:600px}.week-layout{grid-template-columns:minmax(650px,1fr) 310px}}
@media(max-width:1180px){.sidebar{width:194px;padding-left:15px;padding-right:15px}.workspace{margin-left:194px}.topbar{padding:0 27px}.content{padding:28px 27px}.nav-link{font-size:12px}.daily-layout{grid-template-columns:minmax(340px,1.3fr) minmax(260px,1fr);gap:18px}.metric{padding:17px 17px}.week-layout,.month-layout,.academic-layout{grid-template-columns:minmax(0,1fr)}.week-layout>.side-column,.month-layout>.side-column,.academic-layout>.side-column{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.month-cell{min-height:128px}.week-board{min-width:690px}.academic-layout>.side-column .info-card{grid-column:1/-1}#toast{left:calc(50% + 97px)}}
@media(max-width:900px){.sidebar{width:76px;padding:27px 11px 20px}.brand{padding:0 7px}.brand-name,.brand-sub,.nav-caption,.nav-link span,.semester-widget,.sidebar-util span,.profile>div:not(.avatar),.profile>.icon{display:none}.nav-list{margin-top:45px;gap:13px}.nav-link{justify-content:center;padding:15px 11px}.nav-link.active:after{display:none}.sidebar-bottom{padding-top:20px}.sidebar-util{justify-content:center;padding:20px 0}.profile{padding:20px 10px 0}.workspace{margin-left:76px}.daily-layout{grid-template-columns:minmax(310px,1.2fr) minmax(240px,1fr);gap:16px}.content{padding:27px 23px}.metrics{gap:10px}.metric{padding:16px 14px}.metric-value{font-size:26px}.metric-label{font-size:10px}.metric-foot{font-size:9px}.metric-label .icon{width:14px;height:14px}.card-head{padding:20px}.task-list{padding-left:20px;padding-right:20px}.focus-card{padding:20px}.focus-input{font-size:15px}.page-heading h1{font-size:25px}.heading-actions{gap:7px}.heading-actions .date-nav{gap:0}#toast{left:calc(50% + 38px)}}
@media(max-width:700px){.sidebar{inset:auto 0 0;width:100%;height:69px;background:#fffffff5;backdrop-filter:blur(12px);padding:0;border-right:0;border-top:1px solid var(--line);z-index:20;display:block}.sidebar .brand,.sidebar-bottom{display:none}.nav-list{margin:0;display:grid;grid-template-columns:repeat(4,1fr);height:100%;gap:0}.nav-link{padding:9px 2px 8px;flex-direction:column;gap:5px;font-size:9px;border-radius:0;justify-content:center}.nav-link span{display:block}.nav-link.active{background:#f0f5e8;color:var(--green);box-shadow:none}.nav-link.active:before{content:'';height:2px;background:#8fa777;position:absolute;top:0;width:28px}.workspace{margin:0;padding-bottom:70px}.topbar{height:62px;padding:0 19px}.breadcrumb{display:none}.mobile-brand{display:flex;align-items:center;gap:8px;font-family:Georgia,serif;font-size:22px;letter-spacing:-1px;font-weight:bold}.mobile-brand .brand-mark{font-size:31px;width:29px;height:30px;line-height:26px;border-radius:9px}.mobile-brand .brand-mark span{font-size:16px;bottom:-2px;right:4px}.topbar-right{gap:12px}.today-date{display:none}.save-state{font-size:9px}.content{padding:26px 18px 20px}.page-heading{align-items:flex-start;flex-wrap:wrap;margin-bottom:20px;gap:16px}.eyebrow{font-size:8px;margin-bottom:9px}.page-heading h1{font-size:25px;gap:8px}.page-heading h1 span{font-size:12px}.heading-sub{font-size:11px;margin-top:8px}.heading-actions{width:100%;justify-content:space-between}.heading-actions .date-nav{order:1}.heading-actions .primary{order:2}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin-bottom:18px}.metric{min-height:110px;padding:16px 18px}.metric-value{font-size:27px}.metric-label{font-size:11px}.daily-layout{grid-template-columns:1fr;gap:18px}.schedule-scroll{max-height:520px}.side-column{gap:16px}.focus-card{order:0}.daily-layout .side-column{display:flex}.week-layout>.side-column,.month-layout>.side-column,.academic-layout>.side-column{grid-template-columns:1fr}.sample-banner{font-size:10px;padding:9px 11px;margin-bottom:17px}.sample-banner span{gap:5px}.sample-banner .icon{display:none}.sample-banner button{font-size:9px}.week-toolbar{padding:17px}.week-toolbar .legend{gap:8px;font-size:9px}.week-board{min-width:620px}.month-toolbar{padding:19px 16px}.month-cell{min-height:95px;padding:7px 3px}.month-chip{font-size:8px;padding:4px 3px;margin:3px 0}.day-number{width:22px;height:22px;font-size:10px}.more-events{font-size:8px;padding:2px}.month-toolbar h2{font-size:21px}.month-weekdays{font-size:9px}.month-layout{gap:18px}.month-toolbar .legend{display:none}.week-time-scroll{max-height:520px}.table-toolbar{align-items:flex-start;flex-wrap:wrap;padding:18px}.table-filters select{font-size:10px}.footer{font-size:8px;padding-top:21px;gap:15px}.footer span:first-child{font-size:9px}.task-delete{opacity:1}.quote-card{display:none}.dialog-head{padding:21px}.dialog-body{padding:21px}.dialog-actions{padding:17px 21px}#toast{left:50%;bottom:87px}.focus-input{min-height:45px}.topbar-right .icon-btn{width:28px}.card-head h2{font-size:13px}.timeline-legend{padding-left:20px;padding-right:20px}.timeline-legend p{font-size:9px}.form-grid{gap:16px 12px}.metric-foot{font-size:9px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

[hidden]{display:none!important}.all-day-strip{padding:0 24px 12px}.all-day-strip .month-chip{padding:8px 10px;font-size:11px}.course-semester{display:block;margin-top:6px;font-size:9px;font-weight:400;color:#a2af97}.month-cell{outline-offset:-3px}.month-cell:focus-visible{outline:2px solid var(--green)}

/* Shared theme accents; schedule category colors keep their own meaning. */
:root{--on-accent:#fff;--accent-strong:#1b3c33;--accent-soft:#eef2e3;--accent-faint:#f5f7ee;--accent-border:#d9e2cc;--accent-decor:#a0b476}
.topbar{background:var(--side)}
.nav-link.active,.button.primary,.brand-mark,.week-day.today b,.month-cell.today .day-number{color:var(--on-accent)}
.brand-mark span,.nav-link.active:after{color:var(--on-accent);background:transparent}
.nav-link.active:after{background:var(--on-accent)}
.button.primary:hover{background:var(--green);box-shadow:0 0 0 3px var(--accent-soft)}
.nav-link:hover,.button:not(.primary):not(.danger):hover,.icon-btn:hover,.hour-hit:hover,.month-cell:hover{background:var(--accent-faint)}
.nav-link.active:hover{background:var(--green)}
.semester-widget,.focus-card,.weekly-note,.info-card,.metric.highlight,.sample-banner{background:var(--accent-soft);border-color:var(--accent-border)}
.semester-widget h3,.semester-widget a,.metric.highlight .metric-value,.focus-input,.weekly-note strong,.info-card h3,.ring-inner b,.semester-summary b,.grade,td:first-child{color:var(--accent-strong)}
.semester-widget p,.semester-widget .tiny-tag,.sample-banner,.focus-title,.focus-note,.weekly-note,.weekly-note p,.info-card p,.audit-top,.field{color:var(--muted)}
.semester-widget .little-flower,.card-head h2 .icon{color:var(--accent-strong)}
.metric-progress,.audit-bar,.task-count,.avatar,.inline-task button,.month-cell.selected{background:var(--accent-soft)}
.metric-progress div,.audit-bar:not(.general):not(.elective) div,.check-btn.checked{background:var(--green)}
.check-btn.checked{border-color:var(--green);color:var(--on-accent)}
.ring{background:conic-gradient(var(--green) var(--progress),var(--accent-soft) 0)}
.month-cell.selected{box-shadow:inset 0 0 0 1.5px var(--accent-border)}
.week-day.today,.week-column.today,.form-notice,.dialog-actions,.field input,.field select,.field textarea{background-color:var(--accent-faint)}
.field input,.field select,.field textarea{color:var(--ink);border-color:var(--accent-border);outline-color:var(--green)}
.form-notice{color:var(--muted)}
.task-count,.inline-task button{color:var(--accent-strong)}
.focus-input::placeholder{color:var(--muted)}
#toast{background:var(--green);color:var(--on-accent)}

/* Theme settings are native keyboard-accessible radio choices and a color picker. */
.theme-settings{margin:0 0 24px;padding:0 0 23px;border:0;border-bottom:1px solid var(--line);min-width:0}
.theme-settings legend{padding:0;margin-bottom:8px;font-size:14px;font-weight:650;color:var(--ink)}
.theme-settings p{font-size:11px;color:var(--muted);line-height:1.7}
.theme-presets{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:18px 0}
.theme-choice{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;padding:7px 0;cursor:pointer;font-size:10px;color:var(--muted);border-radius:8px}
.theme-swatch{width:34px;height:34px;border-radius:50%;background:var(--swatch);display:grid;place-items:center;outline:2px solid transparent;outline-offset:3px;color:white}
.theme-swatch .icon{width:17px;height:17px;visibility:hidden;stroke-width:2.4}
.theme-choice input:checked+.theme-swatch{outline-color:var(--swatch)}
.theme-choice input:checked+.theme-swatch .icon{visibility:visible}
.theme-choice:has(input:checked){color:var(--ink);font-weight:650}
.theme-choice input:focus-visible+.theme-swatch{outline:3px solid var(--ink);outline-offset:4px}
.theme-choice:hover{background:var(--accent-faint)}
.custom-theme{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:12px;color:var(--ink)}
.custom-theme-value{display:flex;align-items:center;gap:10px}
.custom-theme input[type=color]{width:48px;height:38px;padding:3px;border:1px solid var(--accent-border);border-radius:7px;background:var(--paper);cursor:pointer}
.custom-theme input[type=color]:focus-visible{outline:2px solid var(--green)}
.custom-theme output{font-family:ui-monospace,monospace;font-size:11px;color:var(--muted);min-width:7ch}
.theme-preview{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:17px;padding:13px 15px;border:1px solid var(--accent-border);border-radius:8px;background:var(--accent-soft);font-size:12px;color:var(--accent-strong)}
.theme-preview-button{border-radius:5px;padding:8px 11px;background:var(--green);color:var(--on-accent);font-size:11px}
.theme-settings .theme-help{margin-top:10px;font-size:10px}
.dialog-actions{position:sticky;bottom:0;z-index:1}

/* The semester picker is a prominent, comfortably sized control. */
.table-toolbar{flex-wrap:wrap;gap:16px}
.table-filters{align-items:flex-end;gap:12px}
.semester-control{display:flex;flex-direction:column;gap:7px}
.semester-control label{font-size:11px;font-weight:600;color:var(--muted)}



@media(max-width:700px){
  .nav-link.active,.nav-link.active:hover{background:var(--accent-soft);color:var(--accent-strong)}
  .nav-link.active:before{background:var(--green)}
  .table-filters{display:grid;grid-template-columns:minmax(0,1fr) 100px;width:100%;gap:10px}
  
  
}
@media(max-width:380px){.theme-presets{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 12px}}

.semester-plan-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 20px;padding:18px 22px;border:1px solid var(--accent-border);border-radius:10px;background:var(--accent-faint)}
.semester-plan-banner strong{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--accent-strong)}
.semester-plan-banner strong span{padding:4px 7px;border-radius:5px;background:var(--accent-soft);font-size:10px;font-weight:500}
.semester-plan-banner p{margin-top:8px;font-size:12px;color:var(--ink);line-height:1.6}
.semester-plan-banner small{display:block;margin-top:5px;font-size:10px;color:var(--muted);line-height:1.6}
.semester-plan-banner .button{font-size:11px}
.semester-plan-settings{min-width:0;margin:0 0 24px;padding:0 0 22px;border:0;border-bottom:1px solid var(--line)}
.semester-plan-settings legend{padding:0;font-size:14px;font-weight:650;color:var(--ink)}
.semester-plan-settings p{margin:9px 0 17px;font-size:11px;color:var(--muted);line-height:1.7}
.plan-range-preview{display:block;margin-top:16px;padding:11px 12px;border-radius:6px;background:var(--accent-soft);color:var(--accent-strong);font-size:11px;line-height:1.7}
.semester-plan-settings>small{display:block;margin-top:9px;font-size:10px;color:var(--muted);line-height:1.7}
@media(max-width:700px){.semester-plan-banner{align-items:flex-start;flex-wrap:wrap;padding:16px 18px;gap:12px}.semester-plan-banner .button{min-height:40px}.semester-plan-banner p{font-size:11px}}
/* Academic timetable: one hour per 60px, with half-hour guides. */
.course-timetable-card{margin-bottom:24px;overflow:hidden}
.course-timetable-card select{padding:10px 12px;border:1px solid #dfe5df;border-radius:8px;background:#f7f9f4;font:inherit;font-weight:600;color:#294b3b}
.course-timetable-card .table-toolbar p,.course-timetable-note,.course-meetings p{font-size:13px;color:#637167}
.course-timetable-note{padding:0 24px 16px;margin:0;line-height:1.7}
.course-timetable-note strong{color:#a23c33}
.course-timetable-scroll{overflow-x:auto;padding:0 20px 24px}
.course-timetable{min-width:620px}
.course-days,.course-grid{display:grid;grid-template-columns:60px repeat(5,minmax(0,1fr))}
.course-days{height:42px;align-items:center;text-align:center;background:#f5f7f5;border:1px solid #dfe5df;font-size:13px}
.course-grid{height:720px;border-bottom:1px solid #dfe5df;border-right:1px solid #dfe5df}
.course-hours{position:relative;font-size:11px;color:#67736a}
.course-hours span{position:absolute;right:9px;transform:translateY(-50%)}
.course-hours span:first-child{transform:none}
.course-day{position:relative;border-left:1px solid #dfe5df;background:repeating-linear-gradient(to bottom,transparent 0,transparent 29px,#edf0ec 29px,#edf0ec 30px,transparent 30px,transparent 59px,#dfe5df 59px,#dfe5df 60px)}
.course-block{position:absolute;border:0;border-left:3px solid #718478;border-radius:4px;padding:5px 7px;text-align:left;color:#263c31;overflow:auto;cursor:pointer;font:inherit;font-size:12px;line-height:1.35}
.course-block strong,.course-block small{display:block;overflow-wrap:anywhere}
.course-block small{font-size:11px;margin-top:3px}
.course-block.overlap{border-left-color:#b84439}
.course-block:focus-visible{outline:3px solid #264d38;z-index:2}
.course-meetings{border:1px solid #dfe5df;border-radius:10px;padding:14px;margin:20px 0}
.course-meetings legend{font-weight:600;padding:0 5px}
.meeting-row{display:grid;grid-template-columns:65px 1fr 1fr;gap:10px;border-bottom:1px solid #e3e8e2;padding:12px 0;margin-bottom:12px}
.meeting-row .meeting-place{grid-column:span 2}
.meeting-row>.button{align-self:end}
@media(max-width:600px){.course-timetable-scroll{padding-left:8px;padding-right:8px}.course-timetable-note{padding-left:16px}.meeting-row{grid-template-columns:60px minmax(0,1fr) minmax(0,1fr)}}

.semester-picker{display:flex;flex-direction:column;gap:8px;min-width:0}
.semester-picker-label{font-size:11px;font-weight:600;color:var(--muted)}
.semester-picker-controls{display:grid;grid-template-columns:110px minmax(0,1fr);align-items:start;gap:8px}
.semester-picker .semester-year-label{display:block;min-width:0}
.semester-picker select[data-semester-year]{width:100%;min-height:46px;padding:10px 12px;border:1px solid var(--accent-border);border-radius:8px;background:var(--accent-faint);color:var(--ink);font:inherit;font-size:14px;font-weight:600;cursor:pointer}
.semester-term-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;min-width:0}
.semester-term-option{position:relative;cursor:pointer;min-width:0}
.semester-term-option input{position:absolute;opacity:0;width:1px;height:1px}
.semester-term-option>span{display:flex;min-height:46px;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);font-size:13px;font-weight:600;white-space:nowrap;padding:8px 5px}
.semester-term-option input:checked+span{background:var(--green);border-color:var(--green);color:var(--on-accent)}
.semester-term-option input:disabled+span{background:#f0f1ef;color:#939993;border-color:#e4e7e3;opacity:.7;cursor:not-allowed}
.semester-term-option input:focus-visible+span,.semester-picker select:focus-visible{outline:2px solid var(--green);outline-offset:3px}


.form-grid>.full{grid-column:1 / -1}
.table-filters{display:flex;flex-wrap:wrap;width:100%;align-items:flex-start;gap:12px}
.table-filters .semester-picker{flex:1;min-width:380px;max-width:620px}

.course-timetable-card>.table-toolbar>.semester-picker{width:100%;max-width:620px}
.course-timetable-card>.table-toolbar{flex-direction:column;align-items:stretch}
@media(max-width:700px){.table-filters .semester-picker{min-width:0;flex-basis:100%}.semester-picker-controls{grid-template-columns:95px minmax(0,1fr)}.semester-term-option>span{font-size:12px;padding:8px 3px}}
@media(max-width:520px){.semester-term-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Course planning: compare the course list and timetable side by side. */
.academic-board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:stretch;margin-bottom:20px}
.academic-board>.card{min-width:0;margin-bottom:0}
.course-list-card{display:flex;flex-direction:column}
.course-list-card .semester-summary{margin-top:auto}
.academic-board .table-toolbar{padding:16px;gap:12px;align-items:stretch}
.academic-board .table-toolbar h2{font-size:14px}
.academic-board .table-toolbar p{font-size:11px;margin-top:4px}
.academic-board .semester-picker-controls{grid-template-columns:90px minmax(0,1fr);gap:6px}
.academic-board .semester-picker select[data-semester-year]{min-height:40px;padding:8px;font-size:12px}
.academic-board .semester-term-option>span{min-height:40px;font-size:11px;padding:6px 3px}
.academic-board .semester-term-tabs{gap:4px}
.academic-board .table-filters{gap:8px}
.academic-board .table-filters .semester-picker{min-width:0;flex-basis:100%;max-width:none}

.course-list-card .table-scroll{max-height:400px}
.course-list-card table{table-layout:fixed;white-space:normal;font-size:12px}
.course-list-card th,.course-list-card td{padding:12px 4px;overflow-wrap:anywhere;line-height:1.45}
.course-list-card th:first-child,.course-list-card td:first-child{padding-left:16px;width:33%}
.course-list-card th:nth-child(2){width:19%}
.course-list-card th:nth-child(3),.course-list-card th:nth-child(4){width:10%}
.course-list-card th:nth-child(5){width:19%}
.course-list-card th:last-child{width:9%}
.course-list-card th{position:sticky;top:0;z-index:1;padding-top:4px;padding-bottom:4px;color:#5e7165}
.course-list-card td{color:#526b5e}
.course-list-card td:first-child{color:#314e40;font-weight:600}
.course-list-card td:nth-child(3),.course-list-card td:nth-child(4){text-align:center;font-variant-numeric:tabular-nums}
.course-list-card td:last-child{padding-right:6px}
.course-list-card tr:hover td{background:#f8faf7}
.course-sort{display:inline-flex;align-items:center;align-content:center;justify-content:flex-start;flex-wrap:wrap;gap:1px 2px;width:100%;max-width:100%;min-height:40px;padding:6px 0;text-align:left;font:inherit;font-size:11px;font-weight:600;color:inherit;line-height:1.25}
.course-list-card th:nth-child(3) .course-sort,.course-list-card th:nth-child(4) .course-sort{justify-content:center}
.course-sort:hover,.course-sort.active{color:var(--green)}
.course-sort-arrow{font-size:9px;flex-shrink:0;color:#86978b}
.course-sort.active .course-sort-arrow{color:var(--green)}
.course-sort:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.course-list-card .course-semester{font-size:10px;line-height:1.5;color:#778a7d;font-weight:400}
.course-list-card .tag{font-size:10px;padding:5px 6px;white-space:nowrap;color:#42634f}
.course-list-card .tag.general{color:#75622f}
.course-list-card .tag.elective{color:#665679}
.course-list-card .tag.status{color:#52665a}
.course-list-card .tag.enrolled{color:#376d5a}
.course-list-card .course-action{display:inline-flex;align-items:center;justify-content:center;min-width:30px;min-height:30px;padding:4px;border-radius:6px;color:#5c7868}
.course-list-card .course-action:hover{background:var(--accent-soft);color:var(--green)}
.course-list-card .semester-summary{padding:13px 16px;font-size:10px;gap:8px;flex-wrap:wrap}
.academic-board .course-timetable-note{font-size:11px;padding:0 16px 12px;min-height:30px}
.academic-board .course-timetable-scroll{padding:0 12px 16px}
.academic-board .course-timetable{min-width:0}
.academic-board .course-days,.academic-board .course-grid{grid-template-columns:42px repeat(5,minmax(0,1fr))}
.academic-board .course-days{height:32px;font-size:11px}
.academic-board .course-grid{height:432px}
.academic-board .course-day{background:repeating-linear-gradient(to bottom,transparent 0,transparent 17px,#edf0ec 17px,#edf0ec 18px,transparent 18px,transparent 35px,#dfe5df 35px,#dfe5df 36px)}
.academic-board .course-hours{font-size:9px}
.academic-board .course-hours span{right:5px}
.academic-board .course-block{font-size:10px;padding:3px;border-left-width:2px;line-height:1.25}
.academic-board .course-block small{font-size:9px;margin-top:2px}
.academic-support{display:block;width:100%}
.degree-summary{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:0 23px;color:var(--green)}
.degree-summary strong{font-size:20px;font-weight:600}
.degree-summary span{font-size:12px;color:var(--muted)}
.profile{width:100%;text-align:left;cursor:pointer}
.profile:hover{color:var(--green)}
.campus-breadcrumb{padding:3px 0;color:inherit;font-size:inherit}
.campus-breadcrumb:hover{text-decoration:underline}
.campus-credits .form-grid{margin-top:16px}
.avatar{overflow:hidden;flex-shrink:0}
.avatar img{display:block;width:100%;height:100%;object-fit:cover}
.campus-avatar-settings{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid var(--line)}
.campus-avatar-settings h3{font-size:13px;font-weight:600;margin:0 0 14px}
.campus-avatar-row{display:flex;gap:16px;align-items:center}
.avatar-preview{width:72px;height:72px;font-size:28px}
.campus-avatar-actions{min-width:0}
.campus-avatar-buttons{display:flex;gap:8px;flex-wrap:wrap}
.campus-avatar-buttons label{cursor:pointer}
.campus-avatar-file-button:focus-within{outline:2px solid var(--green);outline-offset:3px}
.campus-avatar-actions p{font-size:11px;color:var(--muted);line-height:1.6;margin:8px 0 0}
.campus-avatar-actions .avatar-error{color:#b34d45}
.campus-avatar-actions .avatar-error:empty{display:none}
.campus-mobile-avatar{display:none}
@media (min-width:701px) and (max-width:900px){.profile>span:not(.avatar){display:none}}
@media (max-width:700px){.campus-profile-trigger>svg{display:none}.campus-mobile-avatar{display:block}.campus-mobile-avatar .avatar{width:28px;height:28px;font-size:14px}}
@media (max-width:520px){.course-list-card table{min-width:320px}.course-list-card th:first-child,.course-list-card td:first-child{width:30%}.course-list-card th:nth-child(2){width:18%}.course-list-card th:nth-child(5){width:19%}.course-list-card th:last-child{width:13%}.course-sort{font-size:10px}.course-list-card .tag{font-size:9px;padding:5px}}
@media(max-width:980px){.academic-board{grid-template-columns:minmax(0,1fr)}.course-list-card .table-scroll{max-height:320px}.academic-board .semester-term-option>span{font-size:12px}.academic-board .course-grid{height:432px}}
@media(max-width:700px){.academic-support{grid-template-columns:minmax(0,1fr)}}

/* My Campus navigation and overview. */
.campus-nav-desktop{margin-top:32px}
.nav-caption{margin-top:24px}
.mobile-campus-nav{display:none}
.campus-portrait{width:72px;height:72px;border-radius:20px;font-size:28px}
.campus-hub{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(250px,1fr);gap:20px;margin-bottom:20px;align-items:stretch}
.campus-today-card{min-width:0}
.campus-today-date{margin:8px 0 0;font-size:12px;color:var(--muted)}
.campus-day-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 24px 14px;padding:18px 0;border-radius:10px;background:var(--accent-faint)}
.campus-day-summary>div{padding:0 18px;border-right:1px solid var(--accent-border)}
.campus-day-summary>div:last-child{border:0}
.campus-day-summary dt{font-size:11px;color:var(--muted)}
.campus-day-summary dd{margin:8px 0 0;font-size:25px;font-weight:600;color:var(--green);font-variant-numeric:tabular-nums}
.campus-day-summary dd small{margin-left:5px;font-size:12px;font-weight:400}
.campus-agenda .agenda-item strong{overflow-wrap:anywhere}
.campus-agenda .empty{padding:40px 16px}
.campus-today-footer{display:flex;justify-content:space-between;gap:12px;padding:16px 24px;border-top:1px solid var(--line)}
.campus-settings-card{display:flex;flex-direction:column;align-items:flex-start;padding:28px;background:var(--accent-faint);border-color:var(--accent-border)}
.campus-settings-card h2{font-size:18px;margin:20px 0 0}
.campus-settings-card ul{list-style:none;padding:0;margin:22px 0 28px;display:grid;gap:16px;color:var(--muted);font-size:13px}
.campus-settings-card li{display:flex;align-items:center;gap:10px}
.campus-settings-card li svg{width:17px;height:17px}
.campus-settings-card>.button{margin-top:auto;width:100%;justify-content:center}
.campus-links{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:0 24px 24px}
.campus-link{display:flex;align-items:center;gap:10px;min-width:0;min-height:58px;padding:10px;border:1px solid var(--line);border-radius:9px;color:var(--ink);transition:background .15s,border-color .15s}
.campus-link:hover{background:var(--accent-faint);border-color:var(--accent-border)}
.campus-link strong{font-size:12px;font-weight:600;min-width:0}
.campus-link>svg{width:14px;height:14px;margin-left:auto;color:var(--muted)}
.campus-link-icon{display:grid;place-items:center;width:34px;height:34px;flex-shrink:0;border-radius:9px;color:var(--green);background:var(--accent-soft)}
.campus-link-icon svg{width:17px;height:17px}
.legend .legend-filter{display:inline-flex;align-items:center;gap:5px;padding:5px 7px;border:1px solid transparent;border-radius:7px;color:inherit;font:inherit;cursor:pointer}
.legend .legend-filter:hover,.legend .legend-filter.selected{background:var(--accent-faint);border-color:var(--accent-border);color:var(--green)}
.legend .legend-filter:focus-visible{outline:2px solid var(--green);outline-offset:2px}
@media(min-width:701px){.daily-layout{align-items:stretch}.daily-layout>.side-column>section{flex:1 1 auto}}
@media(min-width:1181px){.week-layout,.month-layout{align-items:stretch}.week-layout>.side-column>section,.month-layout>.side-column>section{flex:1 1 auto}.month-layout>.side-column>section:first-child{display:flex;flex-direction:column}.month-layout>.side-column>section:first-child .agenda-list{flex:1}}
.side-column>.card:has(.inline-task){display:flex;flex-direction:column}
.side-column>.card:has(.inline-task) .task-list{flex:1}
.side-column>.card:has(.inline-task) .inline-task{margin-top:auto}
.inline-task button{display:grid;place-items:center;padding:0}
.inline-task button .icon{display:block}
@media(max-width:700px){.month-toolbar{flex-wrap:wrap;gap:10px}.month-toolbar .legend{display:flex;width:100%}}
@media (min-width:701px) and (max-width:900px){.campus-nav-desktop{margin-top:36px}.nav-list{margin-top:14px}}
@media (max-width:1000px){.campus-hub{grid-template-columns:minmax(0,1fr)}.campus-settings-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:0 18px;align-items:center;padding:22px 24px}.campus-settings-card .campus-portrait{grid-row:1/3}.campus-settings-card h2{margin:0}.campus-settings-card ul{display:flex;flex-wrap:wrap;gap:8px 16px;margin:12px 0 0}.campus-settings-card>.button{grid-column:3;grid-row:1/3;margin:0}}
@media (max-width:700px){.campus-nav-desktop{display:none}.mobile-campus-nav{display:flex}.nav-list{grid-template-columns:repeat(5,minmax(0,1fr))}.campus-portrait{width:58px;height:58px;border-radius:16px;font-size:23px}.campus-links{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 18px 18px}.campus-link strong{font-size:11px}.campus-hub{gap:16px;margin-bottom:16px}.campus-day-summary{margin:0 18px 12px}.campus-day-summary>div{padding:0 12px}.campus-today-footer{padding:16px 18px}.campus-settings-card{padding:20px 18px;grid-template-columns:auto minmax(0,1fr);gap:0 14px}.campus-settings-card h2{font-size:16px}.campus-settings-card ul{font-size:11px;gap:8px 12px}.campus-settings-card li{gap:5px}.campus-settings-card li svg{width:14px;height:14px}.campus-settings-card>.button{grid-column:1/-1;grid-row:auto;margin-top:20px}}

.category-add-row{display:flex;gap:8px;align-items:center}.category-add-row input{min-width:0;flex:1}.category-add-row .button{flex-shrink:0}.category-add-error{color:#b34d45}.category-add-error:empty{display:none}
.dot[style*="--custom-color"]{background:var(--custom-color)}
.event-block.custom-category{background:color-mix(in srgb,var(--custom-color) 20%,white);border-color:var(--custom-color);color:#33463d}
.month-chip.custom-category{background:color-mix(in srgb,var(--custom-color) 20%,white);color:#33463d}


.category-add[hidden],.category-settings-row[hidden]{display:none!important}
.category-settings-list{display:grid;gap:9px;margin-top:14px}.category-settings-row{display:flex;gap:9px;align-items:center}.category-settings-row .category-name{min-width:0;flex:1;border:1px solid var(--line);border-radius:7px;padding:9px;font:inherit}.category-color{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.category-color input{width:36px;height:34px;padding:2px;border:1px solid var(--line);border-radius:6px;background:white;cursor:pointer}.category-fixed{font-size:11px;color:var(--muted)}


.category-settings-add{margin-top:12px}.event-block.unclassified,.month-chip.unclassified{background:#fff;color:var(--ink);border:1px solid #cfd8d1}.event-block.unclassified{border-left:3px solid #cfd8d1}


.major-picker{min-width:0;margin:0;padding:13px;border:1px solid var(--line);border-radius:8px}.major-picker legend{padding:0 5px;font-size:11px;font-weight:600;color:#526847}.major-picker-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.major-picker [hidden]{display:none}.major-picker select:disabled{opacity:.55}@media(max-width:420px){.major-picker-fields{grid-template-columns:1fr}}
