body.portal{--forest:#153a2b;--forest2:#0c291d;--paper:#f7f4e9;--ink:#17241d;--muted:#626d62;--line:#ded8c7;--mint:#ebefe3;--mintline:#cdd5be;margin:0;padding-left:246px;background-color:var(--paper);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.055' filter='url(%23n)'/%3E%3C/svg%3E");min-height:100vh;overflow-x:clip;color:var(--ink)}
.portal button,.portal input,.portal a{-webkit-tap-highlight-color:transparent}.portal button{font:inherit}.portal button:focus-visible,.portal a:focus-visible{outline:3px solid #b88c37;outline-offset:4px}.portal-corner{position:absolute;pointer-events:none;z-index:0;right:0;top:0;width:300px;height:390px;background:url(botanical-v27.webp) center/contain no-repeat;transform:rotate(180deg);opacity:.48}.portal-sidebar{position:fixed;inset:0 auto 0 0;width:246px;z-index:10;display:flex;flex-direction:column;padding:29px 14px 22px;color:#f8f5e9;background:linear-gradient(150deg,#153e2d,#0c2a1d);isolation:isolate;overflow:hidden}.portal-sidebar::before{content:"";position:absolute;z-index:-1;pointer-events:none;left:-72px;bottom:-110px;width:430px;height:640px;background:url(botanical-v27.webp) center bottom/contain no-repeat;opacity:.55}.portal-brand{display:flex;align-items:center;gap:12px;margin:0 9px 36px;color:#fff;text-decoration:none;font-size:20px;line-height:1.15;font-weight:500}.portal-logo{flex:0 0 52px;width:52px;height:52px;border-radius:50%;overflow:hidden;border:1px solid rgba(247,240,216,.5);background:#fff}.portal-logo img{width:100%;height:100%;object-fit:cover}.portal-nav{display:flex;flex-direction:column;gap:7px}.portal-nav-button{display:flex;align-items:center;gap:13px;min-height:50px;padding:12px 13px;border:1px solid transparent;border-radius:8px;background:transparent;color:#f5f1e5;text-align:left;cursor:pointer;line-height:1.25;font-size:14px!important}.portal-nav-button svg{flex:0 0 23px;width:23px;height:23px;color:#e4dfc7}.portal-nav-button:hover{background:rgba(232,240,218,.1)}.portal-nav-button.active{background:rgba(221,237,207,.17);border-color:rgba(234,238,209,.16);color:#fff}.portal-sidebar-bottom{margin-top:auto;padding:30px 10px 0;display:flex;flex-direction:column;gap:17px}.portal-sidebar-link{display:flex;align-items:center;gap:9px;color:#f4eedb;text-decoration:none;font-size:12px;text-shadow:0 1px 4px #0c291d}.portal-sidebar-link:hover{text-decoration:underline}.portal-sidebar-link svg{width:18px;height:18px;flex:0 0 18px}.portal-sidebar-term{font-size:10px;color:#d7dccb;text-shadow:0 1px 4px #0c291d}.portal-main{position:relative;z-index:1;max-width:1240px;margin:0 auto;padding:28px 34px 26px;min-width:0}.portal-page-head{position:relative;margin-bottom:24px}.portal-page-head h1{font-size:clamp(42px,4.5vw,65px);font-weight:600;line-height:1.12;margin:17px 0 12px;letter-spacing:-.035em;color:#0c241a;max-width:850px}.portal-rule{width:70px;height:1px;background:#a98537;position:relative;margin-top:10px}.portal-rule::after{position:absolute;content:"";width:6px;height:6px;background:#a98537;border-radius:50%;right:-2px;top:-2.5px}.portal-profile{display:flex;align-items:center;gap:15px;flex-wrap:wrap;padding-right:100px}.portal-avatar{width:54px;height:54px;display:flex;align-items:center;justify-content:center;flex:0 0 54px;border-radius:50%;background:#e6e8d9;color:#36563b}.portal-avatar svg{width:32px;height:32px}.portal-profile h2{font-size:27px;font-weight:600}.portal-profile p{margin:5px 0 0;color:var(--muted);font-size:13px}.portal-demo-tag{padding:6px 12px;border-radius:99px;background:#eee5ce;color:#8b651f;font-size:12px}.portal .student-name-row{margin-top:0}.portal .curator-chip{color:var(--forest);background:#efe9d2;font-size:11px}.portal .curator-chip img{width:25px;height:25px}
.portal .card{background:rgba(255,253,247,.91);border-color:var(--line);border-radius:12px;box-shadow:0 4px 16px rgba(76,60,30,.035)}.portal-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;margin:0 0 18px}.portal-stat{display:flex;align-items:center;gap:16px;min-height:116px;padding:19px 18px}.portal-stat-icon{display:flex;align-items:center;justify-content:center;flex:0 0 54px;width:54px;height:54px;border-radius:50%;color:#3b5c3d;background:#efead9}.portal-stat-icon svg{width:30px;height:30px}.portal-gold-icon{color:#a57c2b}.portal-stat .stat-label{display:block;font-family:Georgia,"Times New Roman",serif;color:var(--ink);font-size:16px;line-height:1.3}.portal-stat-value{display:block;margin-top:6px;font-family:Georgia,"Times New Roman",serif;font-size:39px;line-height:1.05;font-weight:700;white-space:nowrap;color:var(--forest)}.portal-stat.rating-bad .portal-stat-value{color:#992e2e}.portal-stat-small{font-size:19px;font-weight:500}.portal-stat-button{color:inherit;cursor:pointer;text-align:left}.portal-stat-button:hover{border-color:#afbc9b}.portal-overview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.portal-overview-card{min-width:0;padding:19px 21px}.portal-card-title{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding-bottom:13px;margin-bottom:7px}.portal-card-title h3{display:flex;align-items:center;gap:10px;font-size:23px;font-weight:600;line-height:1.2}.portal-card-title h3 svg{width:23px;height:23px;flex:0 0 23px}.portal-text-link{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 0;min-height:40px;border:0;background:transparent;color:var(--forest);font-size:11px!important;cursor:pointer;white-space:nowrap}.portal-text-link:hover{text-decoration:underline}.portal-card-link{margin-top:6px}.portal-mini-table{font-size:13px}.portal-mini-table th{background:transparent;padding:12px 5px;font-family:Georgia,"Times New Roman",serif;font-size:12px}.portal-mini-table td{padding:15px 5px}.portal-mini-table .score strong{font-family:Georgia,"Times New Roman",serif;font-size:19px}.portal-status-list{list-style:none;padding:0;margin:0}.portal-status-list li{display:flex;align-items:center;gap:10px;min-height:48px;padding:10px 0;border-bottom:1px solid var(--line);font-size:12px}.portal-status-list li:last-child{border-bottom:0}.portal-status-symbol{flex:0 0 23px;width:23px;height:23px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-weight:700;font-size:17px}.portal-status-name{min-width:0;flex:1;line-height:1.4}.portal-status-list .credit-status{font-size:10px;min-width:53px;padding:5px 7px}.portal-empty{margin:20px 0;color:var(--muted);font-size:13px;line-height:1.6}.portal-award-preview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding-top:13px}.portal-award-preview button{padding:0;border:0;background:transparent;color:var(--forest);min-width:0;cursor:pointer}.portal-award-preview button:hover img{transform:translateY(-3px)}.portal-award-preview img{display:block;width:100%;aspect-ratio:1;object-fit:contain;transition:.2s}.portal-award-preview span{display:block;margin-top:8px;font-size:10px;line-height:1.35}.portal-collection-count{margin:15px 0 0;color:var(--muted);font-size:11px}.portal .section-card{margin-top:0}.portal .card-head{padding:20px 23px 16px}.portal .card-head h3,.portal .attendance h3{font-size:28px;font-weight:600}.portal .attendance{padding:23px}.portal .month{background:#f4f1e5;border-radius:9px}.portal .practice-item{border-radius:9px;background:#f4f1e5}.portal .credit-summary{background:#f4f1e5}.portal .credit-status,.portal .credit-result{font-family:inherit}.portal .awards-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr))}.portal .award-card{background:transparent;box-shadow:none;border:0}.portal .award-card-face{background:#fffdf7;border-color:var(--line);border-radius:12px}.portal .award-card.locked .award-card-face{background:#f2f1e9}.portal .award-filter{background:#fffdf7;border-color:var(--line);border-radius:8px}.portal .award-filter.active{background:var(--forest);color:white}.portal .award-filters{padding-top:16px}.portal .archive-notice,.portal .demo-notice{border-radius:9px;font-size:12px}.portal .demo-notice{background:#edf0e4;border-color:#cdd5be}.portal-footer{margin:29px 0 0;color:#7a7b6e;text-align:center;font-size:11px}
.portal-login-content{max-width:720px;margin:50px auto 0;text-align:center}.portal-login .portal-page-head h1{font-size:clamp(43px,5.9vw,73px);white-space:nowrap}.portal-login .portal-rule{margin-left:14px}.portal-subtitle{font-size:18px;color:#59665b;line-height:1.5;margin:19px 0 0}.portal-login-card{max-width:570px;margin:27px auto 0;padding:28px 32px 22px;text-align:left}.portal-login-card h2{text-align:center;font-size:30px;font-weight:600}.portal-form-intro{text-align:center;margin:11px 0 25px;color:var(--muted);font-size:14px}.portal-login-card label{font-family:Georgia,"Times New Roman",serif;font-size:16px;font-weight:500}.portal-login-card input{height:52px;border-radius:7px;border-color:#cfc5ae;background:#fffdf7}.portal-code-field{position:relative}.portal-code-field input{padding-right:53px}.portal-code-toggle{position:absolute;right:4px;top:4px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--forest);cursor:pointer;border-radius:5px}.portal-code-toggle svg{width:22px;height:22px}.portal .portal-submit{display:flex;align-items:center;justify-content:center;gap:15px;height:56px;border-radius:7px;font-family:Georgia,"Times New Roman",serif;font-size:22px;font-weight:500}.portal-login-help{text-align:center;color:var(--muted);font-size:12px;margin:18px 0 0;line-height:1.5}.portal-login-note{text-align:center;color:#7b8173;font-size:10px;line-height:1.5;margin:10px 0 0}.portal-teacher-login{display:inline-block;margin:28px auto 0;padding:12px 4px;color:var(--forest);font-family:Georgia,"Times New Roman",serif;font-size:16px;text-underline-offset:3px}.portal-login .portal-footer{margin-top:28px}
@media(min-width:1500px){.portal-main{padding-left:48px;padding-right:48px}.portal-stat{min-height:133px}.portal-stat-value{font-size:45px}.portal-login-content{margin-top:75px}}
@media(max-height:800px) and (min-width:1001px){.portal-sidebar::before{height:420px;opacity:.34}.portal-sidebar{padding-top:20px}.portal-brand{margin-bottom:24px}.portal-nav{gap:3px}.portal-nav-button{min-height:45px;padding:9px 12px}.portal-sidebar-bottom{padding-top:18px;gap:13px}.portal-login-content{margin-top:17px}}
@media(max-width:1200px){.portal-main{padding-left:25px;padding-right:25px}.portal-stat{gap:10px;padding:16px 13px}.portal-stat-icon{width:42px;height:42px;flex-basis:42px}.portal-stat-icon svg{width:25px;height:25px}.portal-stat-value{font-size:32px}.portal-stat .stat-label{font-size:14px}.portal-overview-card{padding:16px}.portal-card-title h3{font-size:20px}.portal-profile{padding-right:50px}.portal-corner{width:245px;height:330px;opacity:.32}}
@media(max-width:1000px){body.portal{padding-left:0}.portal-sidebar{position:relative;width:100%;padding:17px 20px 12px;overflow:visible}.portal-sidebar::before{display:none}.portal-brand{margin:0 0 17px;font-size:18px}.portal-logo{width:42px;height:42px;flex-basis:42px}.portal-nav{flex-direction:row;overflow-x:auto;padding:1px 1px 5px;gap:5px;scrollbar-width:thin}.portal-nav-button{flex:0 0 auto;min-height:46px;white-space:nowrap;font-size:12px!important;padding:9px 12px;gap:8px}.portal-nav-button svg{width:19px;height:19px;flex-basis:19px}.portal-sidebar-bottom{position:absolute;right:20px;top:20px;margin:0;padding:0;align-items:flex-end;gap:10px}.portal-sidebar-link{font-size:11px}.portal-sidebar-term{display:none}.portal-sidebar-bottom .portal-sidebar-link:first-child:not(:last-of-type){display:none}.portal-corner{top:160px;opacity:.2}.portal-main{max-width:980px;padding:24px 22px}.portal-login .portal-corner{top:90px}.portal-login .portal-brand{margin-bottom:0}.portal-login-content{margin-top:28px}.portal-profile{padding-right:0}.portal-page-head h1{font-size:49px}}
@media(max-width:740px){.portal-stats{gap:9px}.portal-stat{min-height:105px;display:block;padding:14px}.portal-stat-icon{display:none}.portal-stat-value{font-size:32px}.portal-stat-small{font-size:16px}.portal-overview-grid{grid-template-columns:1fr}.portal-card-title h3{font-size:23px}.portal-overview-card{padding:18px}.portal-login .portal-page-head h1{font-size:clamp(35px,7.5vw,53px)}.portal-subtitle{font-size:16px}.portal-login .portal-rule{margin-left:0}.portal-corner{width:185px;height:250px;opacity:.15}}
@media(max-width:560px){.portal-main{padding:20px 15px}.portal-sidebar{padding:14px 15px 8px}.portal-sidebar-bottom{top:17px;right:15px}.portal-sidebar-link{font-size:10px}.portal-sidebar-link svg{display:none}.portal-nav-button{min-height:44px}.portal-page-head{margin-bottom:18px}.portal-page-head h1{font-size:39px;margin-top:18px}.portal-profile{gap:10px}.portal-profile h2{font-size:23px}.portal-profile p{font-size:11px}.portal-avatar{width:43px;height:43px;flex-basis:43px}.portal-demo-tag{margin-left:53px;font-size:10px}.portal-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.portal-stat{min-height:91px;padding:13px 14px}.portal-stat-value{font-size:33px}.portal-stat .stat-label{font-size:14px}.portal-stat-button{grid-column:1/-1;display:flex;align-items:center;gap:12px;min-height:75px}.portal-stat-button .portal-stat-icon{display:flex;flex-basis:40px;height:40px;width:40px}.portal-stat-button>span:last-child{display:flex;justify-content:space-between;align-items:center;gap:20px;flex:1}.portal-stat-button .portal-stat-value{margin:0;font-size:30px}.portal-overview-card{padding:16px}.portal-card-title h3{font-size:21px}.portal-card-title{gap:6px}.portal-text-link{font-size:10px!important}.portal .card-head h3,.portal .attendance h3{font-size:25px}.portal .card-head{padding:19px 17px 15px}.portal .attendance{padding:19px 17px}.portal .awards-grid{grid-template-columns:1fr}.portal-login-content{margin-top:16px}.portal-login .portal-page-head h1{font-size:clamp(33px,8.5vw,46px);letter-spacing:-.04em}.portal-subtitle{font-size:14px;margin-top:17px}.portal-login-card{padding:23px 19px 19px;margin-top:23px}.portal-login-card h2{font-size:27px}.portal-form-intro{font-size:13px;margin-bottom:22px}.portal-login .portal-footer{margin-top:17px}.portal-login .portal-corner{opacity:.12}.portal .portal-submit{font-size:21px}.portal-status-list .credit-status{min-width:45px;font-size:9px;padding:5px}.portal-status-list li{gap:7px}.portal-avatar svg{width:26px}.portal-sidebar-link{min-height:25px}}
@media(prefers-reduced-motion:reduce){.portal *{scroll-behavior:auto!important;transition:none!important}}
body.portal-admin{--f:#153a2b;--f2:#0c291d;--m:#edf0e4;--ml:#cdd5be;--p:#f7f4e9;--l:#ded8c7;background:#f7f4e9}.portal-admin .card{border-radius:12px;box-shadow:0 4px 16px rgba(76,60,30,.04)}.portal-admin .header{background:#153a2b;border-color:#153a2b}.portal-admin .brand,.portal-admin .header a{color:#f7f3e6}.portal-admin .logout button{color:#e0e4d8}.portal-admin .header-in{min-height:74px}.portal-admin h1,.portal-admin h2{font-weight:600}.portal-admin .button,.portal-admin input,.portal-admin .upload{border-radius:8px}.portal-admin .nav{background:#e9e7d9;border-radius:9px}.portal-admin .nav a{border-radius:6px}

.portal-profile>div{flex:1;min-width:0}.portal .tab-panel[hidden]{display:none}
@media(max-width:560px){.portal-page-head h1{font-size:clamp(31px,9.8vw,39px)}.portal-login .portal-page-head h1{font-size:clamp(30px,8.5vw,46px)}}

@media(max-width:360px){.portal-stat-button>span:last-child{min-width:0;gap:8px}.portal-stat-button .stat-label{font-size:13px}.portal-stat-button .portal-stat-value{font-size:28px}}

@media(max-width:560px){.portal-profile{display:grid;grid-template-columns:43px minmax(0,1fr);align-items:start;gap:8px 10px}.portal-profile .portal-avatar{grid-column:1;align-self:center}.portal-profile>div{grid-column:2}.portal-profile .portal-demo-tag{grid-column:2;justify-self:start;margin-left:0}.portal-profile h2{overflow-wrap:anywhere}}
.portal-navigation{display:flex;flex-direction:column;flex:1;min-height:0}.portal-menu-toggle,.portal-brand-mobile,.portal-current-section{display:none}
@media(max-width:1000px){
 .portal-dashboard .portal-sidebar{padding:0}
 .portal-dashboard .portal-mobile-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px}
 .portal-dashboard .portal-brand{margin:0;font-size:18px;gap:11px}
 .portal-dashboard .portal-brand-desktop{display:none}.portal-dashboard .portal-brand-mobile{display:block}
 .portal-menu-toggle{display:flex;align-items:center;justify-content:center;gap:8px;min-height:46px;min-width:106px;padding:9px 12px;border:1px solid #cfdcc7;border-radius:8px;background:transparent;color:#fbf8ed;font-family:Georgia,"Times New Roman",serif!important;font-size:15px!important;cursor:pointer}
 .portal-menu-toggle svg{width:21px;height:21px;flex:0 0 21px}.portal-menu-toggle .portal-menu-close{display:none}
 .portal-sidebar.menu-open .portal-menu-hamburger{display:none}.portal-sidebar.menu-open .portal-menu-close{display:block}
 .portal-dashboard .portal-navigation{display:none;background:#fcf9ef;color:var(--forest);border-radius:0 0 10px 10px;box-shadow:0 5px 12px rgba(29,47,25,.07);padding:7px 16px 10px}
 .portal-dashboard .portal-sidebar.menu-open .portal-navigation{display:block}
 .portal-dashboard .portal-nav{display:flex;flex-direction:column;gap:0;overflow:visible;padding:0}
 .portal-dashboard .portal-nav-button{flex:none;width:100%;white-space:normal;min-height:50px;padding:12px 15px;gap:14px;border:0;border-bottom:1px solid #ded8c7;border-radius:0;background:transparent;color:#173d2b;font-size:15px!important;line-height:1.3}
 .portal-dashboard .portal-nav-button>span{flex:1}.portal-dashboard .portal-nav-button svg{width:22px;height:22px;flex-basis:22px;color:#173d2b}
 .portal-dashboard .portal-nav-button:hover{background:#eef1e5}
 .portal-dashboard .portal-nav-button.active{border-radius:6px;background:#e5ebdd;color:#173d2b;border-bottom-color:transparent;font-weight:650}
 .portal-dashboard .portal-nav-button.active::after{content:"✓";font-size:21px;flex:0 0 21px;text-align:center}
 .portal-dashboard .portal-sidebar-bottom{position:static;align-items:stretch;gap:0;margin-top:9px;padding:8px 0 0;border-top:1px solid #ded8c7}
 .portal-dashboard .portal-sidebar-bottom .portal-sidebar-link{display:flex!important;align-items:center;gap:14px;min-height:48px;padding:10px 15px;color:#254a37;text-shadow:none;font-size:13px}
 .portal-dashboard .portal-sidebar-link svg{display:block;width:21px;height:21px;flex-basis:21px}
 .portal-current-section{display:block;color:#7a6c4e;font-size:12px;margin:0 0 16px;line-height:1.4}.portal-current-section strong{font-weight:600;color:#36513d}
 .portal-dashboard .portal-corner{top:85px}
}
@media(max-width:560px){.portal-dashboard .portal-mobile-head{padding:14px 15px}.portal-dashboard .portal-brand{font-size:17px}.portal-menu-toggle{min-width:104px;min-height:46px}.portal-dashboard .portal-navigation{padding-left:10px;padding-right:10px}.portal-dashboard .portal-nav-button{font-size:15px!important;min-height:50px}.portal-current-section{font-size:11px;margin-bottom:13px}}


.portal-period-picker{margin:18px 0 4px;max-width:570px}.portal-period-picker label{font-family:inherit;font-size:11px;color:var(--muted);margin-bottom:7px}.portal-period-controls{display:flex;gap:8px}.portal-period-controls select{flex:1;min-width:0;min-height:44px;border:1px solid var(--line);border-radius:7px;padding:8px 10px;background:#fffcf3;color:var(--forest);font:inherit;font-size:12px}.portal-period-controls button{min-height:44px;border:1px solid var(--line);border-radius:7px;padding:8px 12px;background:#f0eddf;color:var(--forest);font-size:12px;cursor:pointer}.portal-period-picker input[type=hidden]{display:none}
.semester-card{margin-bottom:22px}.semester-top{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.semester-eyebrow{font-size:12px;color:var(--u)}.semester-badge{padding:8px 12px;border-radius:99px;background:#e8efde;color:#224d31;font-size:12px}.semester-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:18px;background:#f5f1e5;border-radius:8px;margin:20px 0}.semester-summary div{min-width:0}.semester-summary dt{font-size:12px;color:var(--u);margin-bottom:6px}.semester-summary dd{margin:0;font-size:14px;font-weight:650;overflow-wrap:anywhere}.semester-confirm{display:flex;align-items:center;gap:12px;font-size:13px;line-height:1.45;margin:20px 0}.semester-confirm input{width:20px;height:20px;flex:0 0 20px;accent-color:#173f32}.semester-warning{padding:12px 14px;border:1px solid #dfc787;background:#fff8dc;border-radius:8px;font-size:13px}.semester-card .button{min-height:48px;max-width:100%;white-space:normal;text-align:center}.semester-card .button:disabled{opacity:.45;cursor:not-allowed}.semester-archive-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.semester-archive-item{border:1px solid var(--l);border-radius:9px;padding:18px}.semester-archive-item h3{margin:0;font-family:Georgia,serif;color:var(--f);font-size:20px}.semester-archive-item p{font-size:13px}.semester-select{width:100%;min-height:48px;padding:9px 12px;font:inherit;background:#fffcf3;color:var(--f);border:1px solid var(--l);border-radius:7px}.semester-card .field{margin-bottom:17px}.semester-table-wrap{overflow:auto;max-height:none}.semester-table{border-collapse:collapse;min-width:700px;font-size:12px}.semester-table th,.semester-table td{padding:13px 10px;border-bottom:1px solid var(--l);white-space:nowrap;text-align:left}.semester-table th{color:#fff;background:var(--f)}.semester-table th small{display:block;font-size:10px;font-weight:400;margin-top:4px}.semester-table tbody tr:nth-child(even){background:#f5f3e9}
@media(max-width:600px){.semester-summary,.semester-archive-grid{grid-template-columns:1fr}.semester-top{flex-direction:column}.semester-card h2{font-size:27px}.semester-card .button{width:100%}.semester-summary{padding:15px}.portal-period-controls select{font-size:11px}.portal-period-controls{gap:6px}.portal-period-controls button{padding-left:10px;padding-right:10px}}
@media(max-width:560px){.portal-period-controls{flex-direction:column}.portal-period-controls select{width:100%;font-size:11px}.portal-period-controls button{align-self:flex-end;min-width:95px}}
/* Personal awards editor and readable reverse sides. */
.nav{flex-wrap:wrap;width:fit-content;max-width:100%}
.individual-intro,.individual-editor{margin-bottom:22px}.individual-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:22px}.individual-wide{grid-column:1/-1}.individual-editor input:not([type=checkbox]):not([type=hidden]),.individual-editor select,.individual-editor textarea{width:100%;min-height:44px;border:1px solid #cbd4ce;border-radius:9px;padding:10px 12px;background:#fff;color:#173f32;font:inherit}.individual-editor textarea{resize:vertical}.individual-preview{width:160px;height:160px;object-fit:contain;background:#f3f4ee;border:1px solid #dce3de;border-radius:12px}.individual-preview[hidden]{display:none}.individual-editor h3{margin-top:24px;color:#173f32}.individual-recipients{margin-top:12px;max-height:500px;overflow:auto;border:1px solid #dce3de;border-radius:12px}.individual-recipient{padding:12px 16px;border-bottom:1px solid #e6ebe7}.individual-recipient[hidden],.individual-grant-fields[hidden]{display:none}.individual-person{display:flex;align-items:center;gap:10px;margin:0;min-height:28px}.individual-person input{width:20px;height:20px;accent-color:#173f32;flex-shrink:0}.individual-grant-fields{display:grid;grid-template-columns:minmax(0,1fr) 165px;gap:14px;margin-top:12px}.individual-grant-fields label{font-size:12px}.individual-grant-fields textarea,.individual-grant-fields input{margin-top:6px}.individual-summary{display:flex;gap:22px;padding:24px 0;border-bottom:1px solid #dce3de}.individual-thumb{width:140px;height:140px;object-fit:contain;flex-shrink:0}.individual-summary-body{min-width:0;flex:1;overflow-wrap:anywhere}.individual-summary h3{margin:0;color:#173f32}.individual-summary p{white-space:pre-wrap}.individual-issued-list{padding:0;list-style:none}.individual-issued-list li{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 0;border-top:1px solid #e6ebe7}.individual-issued-list li>div{min-width:0}.individual-issued-list .button{font-size:12px;flex-shrink:0}.award-card-back{overflow-y:auto;overscroll-behavior:contain}.award-card-back>*{flex-shrink:0}.award-description,.award-personal-reason{white-space:pre-wrap;overflow-wrap:anywhere}.award-personal-reason{margin-top:14px;font-size:13px;color:var(--muted);line-height:1.55}.award-issued-date{margin-top:12px;font-size:12px;color:var(--forest)}.award-title{overflow-wrap:anywhere}.award-card-front .award-title{max-height:4.2em;overflow:auto;flex-shrink:0}
@media(max-width:600px){.individual-fields,.individual-grant-fields{grid-template-columns:1fr}.individual-summary{flex-direction:column;gap:12px}.individual-thumb{align-self:center}.individual-issued-list li{flex-direction:column}.individual-editor .actions>.button{width:100%}.nav{width:100%;overflow:visible}.nav a{white-space:normal;padding:10px 12px}}
.top>div{min-width:0;max-width:100%}.top h1{overflow-wrap:anywhere}@media(max-width:600px){.top h1{font-size:28px}}
.individual-editor h2,.individual-intro h2,.individual-library h2{overflow-wrap:anywhere}.portal-admin .top .logout button{color:#626d62}@media(max-width:600px){.individual-editor h2,.individual-intro h2,.individual-library h2{font-size:24px}}
/* Desktop content scrolls independently; switching sections never resizes the sidebar. */
@media(min-width:1001px){
 html.portal-results-document{height:100%;overflow:hidden}
 body.portal-dashboard{height:100vh;height:100dvh;min-height:0;overflow:hidden}
 .portal-dashboard .portal-main{height:100vh;height:100dvh;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable;overscroll-behavior-y:contain}
 .portal-dashboard .portal-sidebar{position:fixed;top:0;bottom:auto;height:100vh;height:100dvh;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}
 .portal-dashboard .portal-mobile-head,.portal-dashboard .portal-nav{flex-shrink:0}
 .portal-dashboard .portal-navigation{flex:0 0 auto;min-height:0}
 .portal-dashboard .portal-sidebar-bottom{flex-shrink:0;margin-top:24px;padding-top:0}
 .portal-dashboard .portal-nav-button{flex:0 0 auto}
}
