@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--ink:#142735;--muted:#667784;--line:#dce4e6;--paper:#f4f6f2;--white:#fff;--mint:#c7f1e6;--teal:#0e766b;--orange:#e9aa70;--course:#7757b4;--seminar:#d38a45;--lab:#159687;--radius:20px}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.55 'DM Sans',system-ui,sans-serif}
button,select{font:inherit}
a{color:inherit}
.wrap{width:min(1260px,calc(100% - 64px));margin:auto}
.topbar{height:76px;padding:0 max(32px,calc((100vw - 1260px)/2));display:flex;align-items:center;justify-content:space-between;background:#102532;color:#fff;border-bottom:1px solid #314956}
.brand{text-decoration:none;display:flex;align-items:center;gap:10px;font:700 20px 'Space Grotesk',sans-serif;letter-spacing:-.07em}
.brand small{display:block;font:600 8px 'DM Sans',sans-serif;letter-spacing:.27em;line-height:1;margin-left:1px}
.brand-mark{width:34px;height:34px;display:grid;place-items:center;background:var(--mint);color:#133438;border-radius:9px;font-size:20px}
.topbar nav{display:flex;gap:32px}
.topbar nav a,.source-link{font-size:13px;text-decoration:none;color:#c8d4d6}
.topbar nav a:hover,.source-link:hover{color:#fff}
.source-link{border:1px solid #5b747d;padding:9px 14px;border-radius:99px}
.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:center;padding-top:76px;padding-bottom:72px}
.eyebrow,.section-kicker{font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#44786f}
.eyebrow{display:flex;align-items:center;gap:10px}
.status-dot{width:8px;height:8px;background:#28ae8d;border-radius:50%;box-shadow:0 0 0 5px #daf5ea}
h1,h2,h3,p{margin-top:0}
h1,h2,h3{font-family:'Space Grotesk',system-ui,sans-serif}
h1{font-size:clamp(48px,6.3vw,91px);line-height:.99;letter-spacing:-.075em;margin:22px 0 25px}
h1 em{font-style:normal;color:#1c7d70}
.hero-copy{max-width:610px;color:#526773;font-size:17px;line-height:1.7}
.hero-actions{display:flex;gap:12px;margin-top:31px;flex-wrap:wrap}
.button{display:inline-flex;align-items:center;gap:24px;padding:13px 20px;border-radius:10px;text-decoration:none;font-weight:700;font-size:13px}
.button.primary{background:#102d38;color:#fff}
.button.primary:hover{background:#1b5360}
.button.secondary{background:#fff;border:1px solid #dce4e3}
.button.secondary:hover{border-color:#739d96}
.hero-panel{min-height:360px;background:#16383e;color:#fff;border-radius:25px;padding:28px 32px;position:relative;overflow:hidden;box-shadow:0 26px 50px #173e3c16}
.hero-panel:before{content:"";position:absolute;width:350px;height:350px;border:1px solid #50766b;border-radius:50%;right:-115px;top:16px;box-shadow:0 0 0 36px #ffffff08,0 0 0 72px #ffffff07,0 0 0 108px #ffffff05}
.panel-top,.panel-bottom{position:relative;z-index:1;display:flex;justify-content:space-between;font-size:10px;letter-spacing:.11em}
.panel-top{color:#b5d4ce}.panel-top strong{color:#fff}
.panel-number{position:relative;z-index:1;font:600 clamp(100px,11vw,160px)/1 'Space Grotesk';letter-spacing:-.04em;margin-top:62px;color:#d3f3e6}
.panel-number span{font-size:25px;letter-spacing:0;color:#8bb7a9;margin-left:7px}
.panel-bottom{margin-top:30px;color:#dceee8}
.panel-stripes{position:absolute;right:31px;bottom:95px;display:flex;gap:5px;transform:rotate(-14deg)}
.panel-stripes i{width:8px;height:38px;border-radius:20px;background:#eeb477;opacity:.85}
.panel-stripes i:nth-child(2){height:54px}.panel-stripes i:nth-child(3){height:31px}.panel-stripes i:nth-child(4){height:65px}.panel-stripes i:nth-child(5){height:43px}
.quick-stats{display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border:1px solid var(--line);border-radius:17px;overflow:hidden;margin-bottom:98px}
.quick-stats>div{padding:24px 30px;border-right:1px solid var(--line);display:flex;align-items:baseline;gap:15px}
.quick-stats>div:last-child{border:0}
.quick-stats strong{font:600 33px 'Space Grotesk';letter-spacing:-.03em;color:#1c756a}
.quick-stats span{font-size:12px;color:#60717b}
.next-section{display:grid;grid-template-columns:1fr;gap:16px;padding-top:24px;margin-bottom:22px}
.next-intro h2{font-size:clamp(30px,3vw,42px);letter-spacing:-.055em;line-height:1.1;margin:0}.next-intro p:last-child{color:#6b7b83;font-size:13px;margin:0}
.next-card{width:100%;min-height:170px;border:1px solid #b8dbce;border-radius:17px;background:#e7f4ed;text-align:left;color:var(--ink);padding:24px 28px;display:flex;flex-direction:column;align-items:flex-start;cursor:pointer;box-shadow:0 12px 34px #163d3210}
.next-card:hover{background:#ddf1e7;transform:translateY(-2px)}
.next-meta{font-size:11px;font-weight:700;letter-spacing:.04em;color:#3f7566;text-transform:capitalize}.next-card strong{font:700 clamp(24px,2.8vw,35px)/1.1 'Space Grotesk';letter-spacing:-.045em;margin:12px 0 6px}.next-details{font-size:12px;color:#5b7370}.next-action{font-size:11px;font-weight:700;color:#156c5f;margin-top:12px}.next-empty{background:#fff;border:1px solid var(--line);border-radius:17px;padding:35px;color:#667784}
.schedule-section,.materials-section,.semester-section{scroll-margin-top:35px;margin-bottom:100px}
.schedule-section{padding-top:0;margin-bottom:65px}
.schedule-section .section-head{margin-bottom:15px}
.schedule-section .section-head h1{font-size:clamp(34px,3.5vw,46px);letter-spacing:-.06em;line-height:1.1;margin:0}
.section-head{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:27px}
.section-head h2{font-size:clamp(31px,3.3vw,44px);letter-spacing:-.055em;line-height:1.08;margin:8px 0 9px}
.section-head p:not(.section-kicker){color:#6b7b83;margin:0}
.section-kicker{margin:0}
.print-button{border:1px solid #cbd6d5;border-radius:9px;background:#fff;color:#214149;font-weight:700;font-size:12px;padding:12px 16px;cursor:pointer;white-space:nowrap}
.print-button:hover{border-color:#27796d}
.schedule-shell{background:#fff;border:1px solid #d9e3e3;border-radius:20px;overflow:hidden;box-shadow:0 16px 55px #23404708}
.toolbar{padding:21px 25px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.view-switch{display:flex;padding:4px;background:#edf2f0;border-radius:10px}
.view-switch button{border:0;background:transparent;color:#5a6d72;border-radius:7px;padding:9px 15px;cursor:pointer;font-size:13px;font-weight:700}
.view-switch button.active{background:#fff;color:#13313a;box-shadow:0 2px 9px #102d3814}
.week-picker{display:flex;gap:10px;align-items:center;color:#5d6d75;font-size:12px;font-weight:700;margin-left:auto}
.week-picker select{appearance:none;background:#fff;border:1px solid #cbd9d7;border-radius:8px;padding:9px 34px 9px 12px;font-size:12px;font-weight:700;color:#1c3941;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%23536e72' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
.week-badge{background:#e4f5ed;color:#24785d;border-radius:99px;font-size:10px;font-weight:800;letter-spacing:.1em;padding:8px 11px}
.csv-button{background:transparent;border:0;color:#226c63;font-size:11px;font-weight:700;cursor:pointer;padding:8px}.csv-button:hover{text-decoration:underline}
.filters{border-top:1px solid #edf1f1;border-bottom:1px solid #edf1f1;padding:13px 25px;display:flex;align-items:center;gap:20px;flex-wrap:wrap;font-size:12px}
.filters>span{color:#75878d;font-weight:700}
.filters label{display:flex;align-items:center;gap:6px;color:#4c626a;cursor:pointer}
.filters input{accent-color:#177f6e}
.filters .original-toggle{margin-left:auto;font-weight:700;color:#174b47}
.weekly-wrap{overflow-x:auto}
.weekly-grid{display:grid;grid-template-columns:63px repeat(5,minmax(164px,1fr));grid-template-rows:51px repeat(24,26px);min-width:900px;position:relative}
.grid-head{display:flex;align-items:center;justify-content:center;border-right:1px solid #e8eded;border-bottom:1px solid #dfe8e7;background:#f8faf8;font:700 11px 'Space Grotesk';letter-spacing:.11em;text-transform:uppercase;color:#688087}
.grid-head.today{color:#127968;background:#e9f7f2}
.time-label{font:600 11px 'Space Grotesk';color:#8c9a9e;padding:9px 0 0 11px;border-right:1px solid #e7eeee;border-bottom:1px solid #edf1f0}
.grid-slot{border-right:1px solid #e7eeee;border-bottom:1px solid #edf1f0}
.grid-event{margin:5px 6px;border:0;border-radius:9px;padding:10px 10px 7px;overflow:hidden;z-index:1;box-shadow:0 2px 7px #132e360c;text-align:left;color:var(--ink);font:inherit;cursor:pointer}
.grid-event:hover,.daily-item:hover{filter:brightness(.97);box-shadow:0 4px 14px #132e3622}
.grid-event.course{background:#f0ebf9}
.grid-event.seminar{background:#fff1e4}
.grid-event.lab{background:#e5f6f1}
.grid-event.compact{padding:5px 8px 3px}
.grid-event.compact strong{margin:2px 0 1px}
.grid-event.compact .event-teacher{display:none}
.grid-event.faded{opacity:.48;filter:saturate(.55)}
.event-time{font:700 10px 'Space Grotesk';letter-spacing:.04em;opacity:.72}
.grid-event strong{display:block;font:700 13px/1.18 'Space Grotesk';margin:7px 0 4px}
.event-meta,.event-teacher,.event-note{font-size:10px;line-height:1.25;display:block;color:#50666c}
.event-note{margin-top:5px;font-weight:700;color:#a8602b}
.grid-event.empty{display:grid;place-items:center;background:#f7f8f7;border:1px dashed #d8e2e0;color:#9eaeb0;font-size:11px}
.schedule-footer{display:flex;gap:18px;align-items:center;flex-wrap:wrap;padding:16px 25px;border-top:1px solid #edf1f1;color:#647680;font-size:11px}
.schedule-footer>span{display:flex;align-items:center;gap:6px}
.key-dot{display:inline-block;width:9px;height:9px;border-radius:3px}.key-dot.course{background:var(--course)}.key-dot.seminar{background:var(--seminar)}.key-dot.lab{background:var(--lab)}
.key-dot.faded{background:#a6b1b0}
.source-note{margin-left:auto}
.source-note a{color:#237568}
.schedule-disclaimer{font-size:12px;color:#78888c;line-height:1.6;margin:15px 4px}
.daily-view{padding:22px 25px 28px;min-height:420px}
.day-tabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:23px}
.day-tabs button{border:1px solid #d9e4e1;border-radius:8px;padding:9px 13px;background:#fff;color:#566d72;cursor:pointer;font-weight:700;font-size:12px}
.day-tabs button.active{background:#123c42;color:#fff;border-color:#123c42}
.daily-heading{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}
.daily-heading h3{font-size:27px;letter-spacing:-.05em;margin:0}
.daily-heading span{color:#6e8388;font-size:12px}
.daily-list{border-top:1px solid #e5ecea}
.daily-item{display:grid;grid-template-columns:98px 1fr;gap:18px;align-items:stretch;border:0;border-bottom:1px solid #e5ecea;padding:13px 0;width:100%;background:transparent;text-align:left;color:var(--ink);cursor:pointer}
.daily-item.faded{opacity:.48;filter:saturate(.55)}
.daily-item time{font:700 12px 'Space Grotesk';color:#4e6870;padding-top:7px}
.daily-item strong{font:700 17px 'Space Grotesk'}
.daily-item p{color:#617881;font-size:12px;margin:4px 0 0}
.daily-item small{display:inline-block;margin-top:7px;color:#a25d2d;font-weight:700}
.empty-day{padding:55px 20px;background:#f8faf9;border-radius:12px;text-align:center;color:#6e8287}
.event-dialog{width:min(570px,calc(100% - 28px));max-height:min(84vh,760px);border:1px solid #cdded9;border-radius:19px;padding:25px 30px;background:#fff;color:var(--ink);box-shadow:0 28px 95px #10263255}
.event-dialog::backdrop{background:#0d262eb5;backdrop-filter:blur(3px)}
.dialog-top{display:flex;align-items:center;justify-content:space-between}.dialog-close{border:0;background:#eff4f1;border-radius:50%;width:35px;height:35px;color:#34545a;font-size:23px;line-height:1;cursor:pointer}.dialog-close:hover{background:#dceae5}
.event-dialog h2{font-size:31px;letter-spacing:-.05em;margin:8px 0 18px}.event-details{margin:0}.detail-row{display:grid;grid-template-columns:125px 1fr;gap:14px;padding:10px 0;border-top:1px solid #e9efed}.detail-row dt{color:#718389;font-size:12px;font-weight:700}.detail-row dd{margin:0;font-size:13px;color:#273d45}.detail-row a{color:#166e63;text-decoration:underline;text-underline-offset:2px}.formations{line-height:1.6}.detail-change{margin:16px 0 0;background:#fff4e8;border-radius:9px;padding:12px 14px;font-size:12px;color:#7e502b}.dialog-source{display:inline-block;margin-top:17px;font-size:12px;font-weight:700;color:#176c62;text-decoration:none}.dialog-source:hover{text-decoration:underline}
.text-link{font-weight:700;font-size:12px;text-decoration:none;color:#176c62;white-space:nowrap}
.text-link:hover{text-decoration:underline}
.material-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.material-card{background:#fff;border:1px solid #dce5e2;border-radius:18px;overflow:hidden;display:grid;grid-template-columns:44% 56%;min-height:328px}
.material-image{background:#dde8df;overflow:hidden}
.material-image img{height:100%;width:100%;object-fit:cover;object-position:center}
.psych-art{background:#e7e9dc;position:relative;overflow:hidden;display:flex;align-items:end;padding:25px}
.psych-art span{position:relative;z-index:1;color:#234e48;font:700 29px/.92 'Space Grotesk';letter-spacing:-.08em}
.art-circle{position:absolute;width:225px;height:225px;background:#b1ceba;border-radius:50%;top:-57px;right:-74px;box-shadow:-42px 99px 0 #d5b49e}
.art-grid{position:absolute;inset:0;background-image:linear-gradient(#52726b26 1px,transparent 1px),linear-gradient(90deg,#52726b26 1px,transparent 1px);background-size:28px 28px;mask-image:linear-gradient(90deg,#0007,transparent)}
.material-body{padding:25px;display:flex;flex-direction:column}
.material-meta{display:flex;justify-content:space-between;color:#658078;font-size:10px;font-weight:700;letter-spacing:.1em}
.material-body h3{font-size:clamp(22px,2.2vw,29px);line-height:1.08;letter-spacing:-.055em;margin:24px 0 10px}
.material-body p{color:#688088;font-size:12px;line-height:1.5}
.file-links{display:flex;gap:10px 18px;flex-wrap:wrap;margin-top:auto}
.file-links a,.inline-action{color:#147266;text-decoration:none;font-size:11px;font-weight:700}
.file-links a:hover,.inline-action:hover{text-decoration:underline}
.inline-action{margin:auto auto 0 0;border:0;background:transparent;padding:0;cursor:pointer}
.psych-details{margin-top:20px;background:#fff;border:1px solid #dce5e2;border-radius:18px;padding:27px 33px}
.details-head{display:flex;align-items:end;justify-content:space-between}.details-head h3{font-size:27px;margin:4px 0 0;letter-spacing:-.05em}
.psych-details ol{padding-left:25px;display:grid;grid-template-columns:1fr 1fr;gap:12px 40px;margin:26px 0}
.psych-details li{padding-left:5px;color:#344d55;font-size:13px}
.psych-details li::marker{color:#15806e;font-weight:700}
.assignment{background:#fff6eb;border-radius:9px;padding:16px 20px}
.assignment strong{font-size:11px;color:#a26230;text-transform:uppercase;letter-spacing:.1em}
.assignment p{font-size:13px;margin:6px 0 0}
.semester-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.semester-card{min-height:155px;padding:21px;border:1px solid #dce5e2;background:#f9faf7;border-radius:13px;display:flex;flex-direction:column}
.semester-card.current{background:#dff2e9;border-color:#bee0d0}
.semester-card span{font-size:10px;font-weight:700;color:#588077;letter-spacing:.12em}
.semester-card strong{font:700 20px 'Space Grotesk';letter-spacing:-.045em;margin:8px 0}
.semester-card small{color:#81918f;font-size:11px}
.semester-card.current small{color:#577a6b}
.semester-card a{margin-top:auto;color:#1b7467;font-size:11px;font-weight:700;text-decoration:none}
footer{background:#102532;color:#b1c7c7;padding:25px 0;font-size:11px;letter-spacing:.05em}
footer .wrap{display:flex;justify-content:space-between}
[hidden]{display:none!important}
:focus-visible{outline:3px solid #f0aa61;outline-offset:3px}
@media(max-width:1000px){.hero{grid-template-columns:1fr 330px}.quick-stats>div{padding:19px}.quick-stats{grid-template-columns:repeat(2,1fr)}.quick-stats>div:nth-child(2){border-right:0}.quick-stats>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.material-card{grid-template-columns:1fr}.material-image,.psych-art{height:190px}.material-body{min-height:280px}}
@media(max-width:700px){.wrap{width:min(100% - 32px,1260px)}.topbar{padding:0 16px;height:65px}.topbar nav{gap:12px}.topbar nav a{font-size:11px}.source-link{display:none}.hero{grid-template-columns:1fr;padding-top:44px;padding-bottom:32px}.hero-panel{min-height:245px}.panel-number{font-size:106px;margin-top:23px}.panel-bottom{margin-top:15px}.quick-stats{margin-bottom:55px}.quick-stats>div{padding:17px 13px;display:block}.quick-stats strong{font-size:27px;display:block}.quick-stats span{font-size:10px}.next-section{grid-template-columns:1fr;gap:14px;margin-bottom:22px}.next-card{min-height:155px;padding:21px}.section-head{align-items:start}.section-head h2{font-size:32px}.section-head p:not(.section-kicker){font-size:12px}.print-button{font-size:0;padding:10px}.print-button:first-letter{font-size:15px}.toolbar{padding:15px}.week-picker{margin-left:0}.filters{padding:10px 15px;gap:9px 14px}.schedule-footer{padding:12px 15px}.source-note{margin-left:0;width:100%}.daily-view{padding:16px}.daily-item{grid-template-columns:79px 1fr;gap:10px}.material-grid{grid-template-columns:1fr}.material-card{grid-template-columns:38% 62%;min-height:270px}.material-image,.psych-art{height:auto}.material-body{min-height:270px;padding:18px}.material-body h3{margin:19px 0 8px}.psych-details{padding:22px}.psych-details ol{grid-template-columns:1fr}.semester-grid{grid-template-columns:1fr 1fr}.semester-card{min-height:138px;padding:16px}.event-dialog{padding:20px}.detail-row{grid-template-columns:100px 1fr}footer .wrap{display:block}footer span{display:block;margin-bottom:5px}}
@media(max-width:450px){.material-card{grid-template-columns:1fr}.material-image,.psych-art{height:180px}.material-body{min-height:220px}.semester-grid{grid-template-columns:1fr}}
@media print{*{box-shadow:none!important}body{background:#fff;color:#000}.topbar,.hero,.quick-stats,.next-section,.materials-section,.semester-section,.print-button,.csv-button,.filters,.hero-actions,footer,.schedule-disclaimer,.event-dialog{display:none!important}.wrap{width:100%}.schedule-section{margin:0}.section-head{margin-bottom:12px}.schedule-shell{border:0}.toolbar{padding:0 0 12px}.view-switch,.week-picker{display:none}.weekly-wrap{overflow:visible}.weekly-grid{min-width:0;grid-template-columns:55px repeat(5,1fr)}.grid-event{break-inside:avoid;padding:6px;margin:3px;font-size:10px}.grid-event strong{font-size:10px}.event-meta,.event-teacher,.event-note{font-size:8px}.schedule-footer{padding:9px 0}.daily-view{padding:0}.day-tabs{display:none}.daily-item{break-inside:avoid}.schedule-section{break-after:avoid}@page{size:landscape;margin:10mm}}
