:root{--epe-forest:#163f3a;--epe-green:#245b52;--epe-sage:#dce9df;--epe-mist:#eef4ef;--epe-cream:#faf8f1;--epe-ink:#17312e;--epe-muted:#647773;--epe-line:#dde5df;--epe-shadow:0 14px 42px rgba(21,63,57,.08)}
.epe-portal{background:var(--epe-cream);color:var(--epe-ink);display:grid;grid-template-columns:250px minmax(0,1fr);min-height:82vh;border:1px solid var(--epe-line);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.epe-portal *{box-sizing:border-box}.epe-portal h1,.epe-portal h2{font-family:Georgia,"Times New Roman",serif;font-weight:500}.epe-skip{position:absolute;left:-9999px}.epe-skip:focus{left:1rem;top:1rem;z-index:9999;background:#fff;padding:.75rem}.epe-sidebar{padding:2.3rem 1.6rem;border-right:1px solid var(--epe-line);background:#fff}.epe-brand{color:var(--epe-forest);font:700 1.05rem Georgia,serif;letter-spacing:.18em;margin-bottom:2.4rem}.epe-brand span{display:block;font:500 .68rem Inter,sans-serif;letter-spacing:.08em;margin-top:.35rem;color:var(--epe-muted)}.epe-avatar{width:40px;height:40px;border-radius:50%;display:inline-grid;place-items:center;object-fit:cover;background:var(--epe-sage);color:var(--epe-forest);font-weight:700}.epe-avatar--desktop{width:68px;height:68px}.epe-avatar--large{width:88px;height:88px;font-size:1.6rem}.epe-student-name{font-weight:650}.epe-sidebar ul{list-style:none;margin:1.9rem 0;padding:0}.epe-sidebar a,.epe-drawer a{display:block;color:var(--epe-ink);padding:.78rem .9rem;text-decoration:none;border-radius:999px}.epe-sidebar a[aria-current=page],.epe-sidebar a:hover{background:var(--epe-mist);color:var(--epe-forest)}.epe-main{padding:clamp(1.3rem,4vw,3.8rem);min-width:0}.epe-hero{min-height:285px;display:flex;justify-content:space-between;gap:2rem;align-items:flex-end;padding:clamp(1.6rem,4vw,3rem);border-radius:4px;background:linear-gradient(90deg,rgba(13,48,43,.84),rgba(13,48,43,.12)),url(../images/student-portal-mountain-hero.png) center 54%/cover no-repeat;box-shadow:var(--epe-shadow);color:#fff}.epe-hero h1{font-size:clamp(2.3rem,5vw,4.3rem);line-height:1;margin:.35rem 0;color:#fff}.epe-hero p{margin:.45rem 0}.epe-eyebrow,.epe-kicker{text-transform:uppercase;letter-spacing:.13em;font-size:.7rem;color:var(--epe-muted)}.epe-hero .epe-eyebrow{color:#e4ede8}.epe-day{border:1px solid rgba(255,255,255,.7);border-radius:50%;width:112px;height:112px;display:grid;place-items:center;text-align:center;background:rgba(15,55,49,.54);font-weight:700}.epe-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin:1.5rem 0}.epe-summary>a,.epe-summary>div{padding:1.15rem;background:#fff;border:1px solid var(--epe-line);text-decoration:none;color:var(--epe-ink)}.epe-summary span{display:block;font-size:.76rem;color:var(--epe-muted);text-transform:uppercase;letter-spacing:.06em}.epe-summary strong{display:block;color:var(--epe-forest);font:500 1.25rem Georgia,serif;margin-top:.4rem}.epe-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem}.epe-card{background:#fff;border:1px solid var(--epe-line);padding:1.55rem;box-shadow:var(--epe-shadow);margin-bottom:1.25rem}.epe-card--wide{grid-column:1/-1}.epe-section-head,.epe-dimension{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.epe-section-head h2,.epe-card h2{color:var(--epe-forest);margin-top:0}.epe-text-link,.epe-section-head>a{color:var(--epe-green)}.epe-list{list-style:none;padding:0;margin:0}.epe-list>li{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.1rem 0;border-top:1px solid var(--epe-line)}.epe-list h3{margin:0 0 .25rem;font:500 1.12rem Georgia,serif}.epe-list p{margin:.2rem 0;color:var(--epe-muted);font-size:.86rem}.epe-index{float:left;margin-right:.9rem;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--epe-mist);font-size:.75rem}.epe-button{display:inline-flex;align-items:center;justify-content:center;background:var(--epe-forest);color:#fff!important;border:1px solid var(--epe-forest);border-radius:2px;padding:.78rem 1.2rem;text-decoration:none;cursor:pointer}.epe-button--small{font-size:.8rem;padding:.58rem .85rem}.epe-button:focus,.epe-portal a:focus,.epe-portal button:focus,.epe-portal textarea:focus{outline:3px solid #91bdb4;outline-offset:2px}.epe-status,.epe-unavailable{font-size:.78rem;color:var(--epe-green);font-weight:700}.epe-unavailable{color:#787d78}.epe-mini-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:.75rem;margin-top:1rem}.epe-mini-stats span{background:var(--epe-mist);padding:.85rem;font-size:.7rem}.epe-mini-stats strong{display:block;font:500 1.2rem Georgia,serif;color:var(--epe-forest)}.epe-calendar{display:grid;grid-template-columns:repeat(auto-fill,minmax(18px,1fr));gap:.35rem;margin-top:1rem}.epe-calendar>span{width:100%;aspect-ratio:1;border:1px solid var(--epe-line);background:#fff}.epe-calendar .is-done{background:var(--epe-green)}.epe-calendar--large{grid-template-columns:repeat(7,minmax(24px,1fr));max-width:660px}.epe-calendar-key{display:flex;align-items:center;gap:.4rem;font-size:.76rem;color:var(--epe-muted)}.epe-calendar-key>span{display:inline-block;width:12px;height:12px;border:1px solid var(--epe-line)}.epe-calendar-key .is-done{background:var(--epe-green)}.epe-progress-row{display:grid;grid-template-columns:1fr auto;gap:.3rem 1rem;padding:1rem 0}.epe-bar{grid-column:1/-1;height:7px;background:var(--epe-mist);overflow:hidden}.epe-bar span{display:block;height:100%;background:var(--epe-green)}.epe-progress-row small{grid-column:1/-1}.epe-dimension{align-items:center}.epe-ring{--epe-value:0;width:100px;height:100px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--epe-green) calc(var(--epe-value)*1%),var(--epe-mist) 0);position:relative}.epe-ring:before{content:"";width:76px;height:76px;border-radius:50%;background:#fff;position:absolute}.epe-ring span{position:relative;font-weight:700}.epe-profile{max-width:680px}.epe-profile label{display:grid;gap:.35rem;font-weight:600}.epe-profile input,.epe-profile select,.epe-notes textarea{width:100%;border:1px solid #cfdad3;border-radius:2px;padding:.8rem;background:#fff}.epe-notes textarea{display:block;margin:1rem 0;resize:vertical}.epe-lede{font-size:1.05rem;line-height:1.7;color:var(--epe-muted)}.epe-settings-list{display:grid}.epe-settings-list>*{padding:.9rem 0;border-top:1px solid var(--epe-line);color:var(--epe-ink)}.epe-settings-list small{display:block;color:var(--epe-muted)}.epe-mobile-top,.epe-bottom{display:none}.epe-overlay{position:fixed;inset:0;background:rgba(13,35,34,.32);z-index:9997}.epe-drawer{position:fixed;top:0;right:0;bottom:0;width:min(86vw,340px);background:#fff;z-index:9998;padding:2rem;transform:translateX(105%);transition:transform .22s ease;box-shadow:-20px 0 50px rgba(0,0,0,.12)}.epe-drawer.is-open{display:block;visibility:visible;pointer-events:auto;transform:none}.epe-drawer:not(.is-open){display:none;visibility:hidden;pointer-events:none}.epe-drawer-close{position:absolute;right:1rem;top:1rem;background:none;border:0;font-size:2rem}.epe-page-head{margin-bottom:2rem}.epe-page-head h1{color:var(--epe-forest);font-size:clamp(2.25rem,5vw,4rem);line-height:1;margin:.35rem 0}.epe-page-head>p:last-child{color:var(--epe-muted)}.epe-portal-message{padding:2rem;background:var(--epe-cream);border:1px solid var(--epe-line)}
@media(min-width:821px){.epe-portal{position:relative;left:50%;width:calc(100vw - 48px);max-width:1320px;transform:translateX(-50%)}}
@media(max-width:820px){.epe-portal{display:block;border:0}.epe-sidebar{display:none}.epe-main{padding:1rem 1rem calc(88px + env(safe-area-inset-bottom))}.epe-mobile-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.epe-mobile-title{font:500 1.15rem Georgia,serif}.epe-avatar-button{border:0;background:none;padding:0}.epe-hero{min-height:235px;padding:1.4rem}.epe-day{display:none}.epe-summary{grid-template-columns:repeat(2,1fr)}.epe-grid{display:block}.epe-mini-stats{grid-template-columns:repeat(2,1fr)}.epe-bottom{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;z-index:9996;left:0;right:0;bottom:0;padding:.55rem .25rem calc(.55rem + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--epe-line)}.epe-bottom a{font-size:.69rem;text-align:center;text-decoration:none;color:#4e6764;padding:.5rem .1rem}.epe-bottom a[aria-current=page]{color:var(--epe-forest);font-weight:700}.epe-list>li{align-items:flex-start}.epe-lessons>li{flex-direction:column}.epe-lessons .epe-button,.epe-lessons .epe-unavailable{margin-left:46px}.epe-ring{width:82px;height:82px}.epe-ring:before{width:62px;height:62px}}
@media(prefers-reduced-motion:reduce){.epe-drawer{transition:none}}
.epe-object-selector{display:flex;align-items:center;gap:.75rem;max-width:520px;margin:-5rem 0 1.5rem auto;padding:.8rem;background:#fff;border:1px solid var(--epe-line)}.epe-object-selector label{font-weight:700}.epe-object-selector select{flex:1;min-width:0;padding:.65rem;border:1px solid var(--epe-line);background:#fff}.epe-history-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr);gap:1.25rem}.epe-summary--history{grid-template-columns:repeat(2,1fr);margin-bottom:0}.epe-ring--small{width:76px;height:76px}.epe-ring--small:before{width:56px;height:56px}.epe-back{display:inline-block;margin-bottom:1rem;color:var(--epe-forest);text-decoration:none}.epe-assignment-meta{display:grid;grid-template-columns:repeat(4,1fr);margin-bottom:1.25rem;border-top:1px solid var(--epe-line);border-bottom:1px solid var(--epe-line)}.epe-assignment-meta>div{padding:1.1rem;border-right:1px solid var(--epe-line)}.epe-assignment-meta>div:last-child{border-right:0}.epe-assignment-meta span,.epe-assignment-meta strong{display:block}.epe-assignment-meta span{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--epe-muted)}.epe-assignment-meta strong{margin-top:.35rem;font-family:Georgia,serif}
@media(max-width:820px){.epe-main{overflow-x:hidden}.epe-history-grid{display:block}.epe-object-selector{margin:0 0 1rem;flex-wrap:wrap}.epe-object-selector label{width:100%}.epe-assignment-meta{grid-template-columns:1fr}.epe-assignment-meta>div{border-right:0;border-bottom:1px solid var(--epe-line)}}
