:root{--ink:#10231f;--green:#0d3b34;--mint:#d9f36b;--paper:#f3f1e9;--line:#d7d4ca;--muted:#6d746f;--orange:#f27a3d;--blue:#5e8dd7;--purple:#9a75c7;--shadow:0 22px 60px rgba(18,38,33,.11)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif}.page-shell{max-width:1480px;margin:auto;min-height:100vh;padding:0 48px}.topbar{height:96px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none}.brand-mark{width:42px;height:42px;display:grid;place-items:center;background:var(--green);color:var(--mint);font:700 22px Georgia;border-radius:50%}.brand strong,.brand small{display:block}.brand strong{font-size:14px;letter-spacing:.08em}.brand small{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.12em;margin-top:2px}.semester-pill{font:500 11px DM Mono,monospace;text-transform:uppercase;letter-spacing:.08em;border:1px solid #c8c6bc;padding:10px 14px;border-radius:99px}.semester-pill span{display:inline-block;width:7px;height:7px;background:#72a44a;border-radius:50%;margin-right:8px}.hero{min-height:490px;display:grid;grid-template-columns:1.15fr .85fr;align-items:center;gap:70px;padding:70px 0}.eyebrow{font:500 11px DM Mono,monospace;letter-spacing:.17em;color:#64736e;margin:0 0 20px}.hero h1{font-size:clamp(52px,6.5vw,94px);line-height:.96;letter-spacing:-.065em;max-width:760px;margin:0}.hero h1 em{font-family:Georgia,serif;font-weight:400;color:#315b4f}.intro{font-size:17px;line-height:1.7;max-width:590px;color:#5c6864;margin:32px 0}.hero-meta{display:flex;gap:13px;align-items:center;font:500 12px DM Mono,monospace;text-transform:uppercase}.hero-meta i{width:4px;height:4px;border-radius:50%;background:#9ba39f}.next-card{background:var(--green);color:white;border-radius:5px;padding:30px;box-shadow:var(--shadow);position:relative;overflow:hidden}.next-card:after{content:"";position:absolute;width:220px;height:220px;border:1px solid rgba(217,243,107,.18);border-radius:50%;right:-80px;bottom:-130px}.next-head{display:flex;justify-content:space-between;font:500 10px DM Mono,monospace;letter-spacing:.15em;color:#b8c9c4}.live-dot{color:var(--mint)}.live-dot:before{content:"";display:inline-block;width:6px;height:6px;background:var(--mint);border-radius:50%;margin-right:7px}.next-date{font:400 48px Georgia,serif;color:var(--mint);margin:28px 0 5px}.next-day{font:500 11px DM Mono,monospace;color:#aebfba;text-transform:uppercase}.next-course{margin:34px 0 8px;font-size:20px;font-weight:700}.next-code{font:500 11px DM Mono,monospace;color:#b9c8c4}.next-time{display:flex;align-items:end;justify-content:space-between;border-top:1px solid rgba(255,255,255,.14);padding-top:22px;margin-top:25px}.next-time strong{font-size:28px}.next-time span{font-size:11px;color:#b7c5c1}.stats{display:grid;grid-template-columns:repeat(4,1fr);background:#ebe8de;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:0 -48px;padding:0 48px}.stats>div{padding:27px 0;display:flex;align-items:center;gap:15px;border-right:1px solid var(--line)}.stats>div+div{padding-left:30px}.stats>div:last-child{border:0}.stat-icon{width:36px;height:36px;display:grid;place-items:center;border:1px solid #c9c8c0;border-radius:50%;color:#4f655e}.stats p{margin:0;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.stats strong{display:block;color:var(--ink);font-size:24px;margin-top:3px;letter-spacing:-.04em}.schedule-section,.course-section{padding:90px 0}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:45px}.section-heading h2{margin:0;font:400 clamp(38px,5vw,62px) Georgia,serif;letter-spacing:-.035em}.filters{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.filter{border:1px solid #c8c6bc;background:transparent;padding:9px 12px;border-radius:99px;font:500 10px DM Mono,monospace;cursor:pointer;color:#56625e}.filter.active,.filter:hover{background:var(--green);color:white;border-color:var(--green)}.schedule-layout{display:grid;grid-template-columns:270px 1fr;gap:45px}.course-rail{display:flex;flex-direction:column;gap:10px}.rail-item{padding:17px;border-left:3px solid var(--course);background:#ebe9e0}.rail-item strong{display:block;font:600 12px DM Mono,monospace}.rail-item span{display:block;color:var(--muted);font-size:11px;margin-top:5px}.timeline{min-width:0}.month{display:grid;grid-template-columns:110px 1fr;border-top:1px solid #c4c2b9;padding:25px 0}.month:last-child{border-bottom:1px solid #c4c2b9}.month-name{font:500 12px DM Mono,monospace;text-transform:uppercase;letter-spacing:.1em}.sessions{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.session{background:#e8e6dc;border-top:3px solid var(--course);padding:16px;min-height:112px;cursor:pointer;transition:.2s;border-radius:0 0 3px 3px;position:relative}.session:hover{transform:translateY(-3px);box-shadow:0 12px 25px rgba(20,36,32,.08)}.session.done{opacity:.45}.session.done:after{content:"✓";position:absolute;top:11px;right:12px;font-weight:800}.session .date{font:400 27px Georgia,serif}.session .code{font:600 10px DM Mono,monospace;margin:12px 0 4px}.session .time{font-size:10px;color:var(--muted)}.session.hidden{display:none}.course-section{border-top:1px solid var(--line)}.course-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.course-card{background:#ebe8de;padding:28px;border-top:4px solid var(--course);min-height:220px;display:flex;flex-direction:column}.course-card .code{font:600 11px DM Mono,monospace;color:var(--course);letter-spacing:.08em}.course-card h3{font:400 29px Georgia,serif;line-height:1.1;margin:25px 0}.faculty{margin-top:auto;border-top:1px solid #d1cec3;padding-top:16px;font-size:12px;color:var(--muted)}.faculty strong{color:var(--ink)}footer{height:110px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;font:500 10px DM Mono,monospace;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}
.session{min-height:196px}.session-detail{margin-top:13px}.session-detail .detail-label{display:block;font:500 8px DM Mono,monospace;letter-spacing:.12em;text-transform:uppercase;color:#89908c;margin-bottom:3px}.session-detail strong{display:block;font-size:10px;line-height:1.35;font-weight:600}.session-detail.professor{border-top:1px solid #d2d0c7;padding-top:10px}.course-card{min-height:420px}.course-info{display:grid;grid-template-columns:1fr 1fr;gap:20px;border-top:1px solid #d1cec3;border-bottom:1px solid #d1cec3;padding:16px 0;margin-bottom:22px}.course-info span{display:block;font:500 9px DM Mono,monospace;color:var(--muted);text-transform:uppercase;letter-spacing:.09em;margin-bottom:5px}.course-info strong{display:block;font-size:12px;line-height:1.45}.notes-label{display:flex;justify-content:space-between;align-items:center;font:600 10px DM Mono,monospace;text-transform:uppercase;letter-spacing:.08em;margin-bottom:9px}.save-state{font-size:8px;color:var(--muted);font-weight:500}.subject-notes{width:100%;min-height:116px;resize:vertical;border:1px solid #cbc8bd;background:#f4f2ea;color:var(--ink);padding:14px;font:500 13px/1.55 Manrope,Arial,sans-serif;border-radius:3px;outline:none}.subject-notes:focus{border-color:var(--course);box-shadow:0 0 0 3px color-mix(in srgb,var(--course) 12%,transparent)}.subject-notes::placeholder{color:#969b97}
@media(max-width:900px){.page-shell{padding:0 22px}.hero{grid-template-columns:1fr;padding:55px 0;gap:40px}.stats{margin:0 -22px;padding:0 22px;grid-template-columns:repeat(2,1fr)}.stats>div:nth-child(2){border-right:0}.stats>div:nth-child(3){padding-left:0}.schedule-layout{grid-template-columns:1fr}.course-rail{display:grid;grid-template-columns:repeat(2,1fr)}.sessions{grid-template-columns:repeat(2,1fr)}.section-heading{align-items:flex-start;flex-direction:column;gap:25px}.filters{justify-content:flex-start}.course-grid{grid-template-columns:1fr}}
@media(max-width:560px){.page-shell{padding:0 16px}.topbar{height:80px}.semester-pill{font-size:9px;padding:8px}.hero h1{font-size:50px}.hero-meta{align-items:flex-start;flex-direction:column}.hero-meta i{display:none}.next-card{padding:23px}.next-date{font-size:40px}.stats{margin:0 -16px;padding:0 16px}.stats>div,.stats>div+div{padding:20px 8px}.stat-icon{display:none}.month{grid-template-columns:1fr;gap:15px}.sessions{grid-template-columns:1fr;gap:8px}.session{padding:15px;min-height:180px}.course-info{grid-template-columns:1fr}.course-rail{grid-template-columns:1fr}.schedule-section,.course-section{padding:65px 0}footer{align-items:flex-start;flex-direction:column;justify-content:center;gap:10px}}
.top-actions{display:flex;align-items:center;gap:18px}.live-clock{text-align:right;border-right:1px solid var(--line);padding-right:18px}.live-clock strong,.live-clock span{display:block}.live-clock strong{font:600 15px DM Mono,monospace}.live-clock span{font:500 9px DM Mono,monospace;color:var(--muted);text-transform:uppercase;margin-top:3px}.user-menu{display:flex;align-items:center;gap:9px}.user-menu[hidden]{display:none}.user-avatar{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:var(--green);color:var(--mint);font-weight:800;font-size:12px}.user-name{font-size:11px;font-weight:700;max-width:110px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-menu button{border:0;background:transparent;color:var(--muted);font:600 9px DM Mono,monospace;text-transform:uppercase;cursor:pointer;padding:7px}.user-menu button:hover{color:var(--ink)}.auth-screen{position:fixed;inset:0;z-index:100;background:var(--green);display:grid;place-items:center;padding:22px;transition:opacity .25s}.auth-screen.closed{opacity:0;pointer-events:none}.auth-panel{width:min(460px,100%);background:var(--paper);padding:42px;box-shadow:0 28px 80px rgba(0,0,0,.28);border-radius:5px}.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:45px}.auth-brand strong,.auth-brand small{display:block}.auth-brand strong{font-size:13px;letter-spacing:.08em}.auth-brand small{font-size:10px;color:var(--muted);margin-top:3px}.auth-panel h2{font:400 37px/1.05 Georgia,serif;letter-spacing:-.035em;margin:0}.auth-copy{color:var(--muted);font-size:13px;line-height:1.55;margin:14px 0 27px}.auth-panel form label{display:block;font:600 9px DM Mono,monospace;text-transform:uppercase;letter-spacing:.08em;margin-bottom:16px}.auth-panel form label[hidden]{display:none}.auth-panel input{display:block;width:100%;border:1px solid #c8c6bc;background:white;padding:13px;margin-top:7px;border-radius:3px;font:500 14px Manrope,Arial,sans-serif;outline:none}.auth-panel input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(13,59,52,.1)}.auth-error{min-height:18px;color:#a43c2c;font-size:11px;margin:0 0 8px}.auth-submit{width:100%;border:0;background:var(--green);color:white;padding:14px;border-radius:3px;font-weight:700;cursor:pointer}.auth-submit:hover{background:#145247}.auth-submit:disabled{opacity:.65}.auth-switch{width:100%;border:0;background:transparent;color:#48645c;padding:16px 8px 0;font-size:11px;font-weight:700;cursor:pointer}
@media(max-width:900px){.user-name{display:none}.semester-pill{display:none}.top-actions{gap:10px}.live-clock{padding-right:10px}}
@media(max-width:560px){.live-clock strong{font-size:12px}.live-clock span{font-size:7px}.user-menu button{font-size:8px}.auth-panel{padding:30px 24px}.auth-panel h2{font-size:32px}.auth-brand{margin-bottom:34px}}
.next-session-list{margin-top:28px;border-top:1px solid rgba(255,255,255,.14)}.next-session-row{display:grid;grid-template-columns:8px 1fr;gap:12px;padding:16px 0;border-bottom:1px solid rgba(255,255,255,.12)}.next-session-dot{width:7px;height:7px;border-radius:50%;background:var(--course);margin-top:5px}.next-session-row strong,.next-session-row span,.next-session-row small{display:block}.next-session-row strong{font-size:12px;line-height:1.4}.next-session-row span{font:500 11px DM Mono,monospace;color:var(--mint);margin-top:5px}.next-session-row small{font-size:10px;color:#b9c8c4;margin-top:4px}.admin-section{padding:85px 0;border-bottom:1px solid var(--line)}.admin-section[hidden]{display:none}.admin-intro{color:var(--muted);font-size:13px;margin:12px 0 0}.refresh-users{border:1px solid #c8c6bc;background:transparent;padding:10px 14px;border-radius:3px;font:600 10px DM Mono,monospace;cursor:pointer}.admin-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:25px}.admin-summary div{background:#e8e6dc;padding:20px}.admin-summary span{font:500 9px DM Mono,monospace;text-transform:uppercase;color:var(--muted)}.admin-summary strong{display:block;font:400 33px Georgia,serif;margin-top:6px}.user-table-wrap{overflow:auto;border:1px solid var(--line);background:#ebe9e0}.user-table{width:100%;border-collapse:collapse;min-width:760px}.user-table th{text-align:left;padding:13px 16px;border-bottom:1px solid var(--line);font:600 9px DM Mono,monospace;text-transform:uppercase;color:var(--muted)}.user-table td{padding:16px;border-bottom:1px solid var(--line);font-size:12px;vertical-align:middle}.user-table tbody tr:last-child td{border-bottom:0}.user-table td:first-child strong,.user-table td:first-child span{display:block}.user-table td:first-child span{color:var(--muted);font-size:10px;margin-top:3px}.status{display:inline-block;border-radius:99px;padding:5px 8px;font:600 8px DM Mono,monospace;text-transform:uppercase}.status-approved{background:#dce9d1;color:#3d642d}.status-pending{background:#f2e1b9;color:#795a0a}.status-disabled{background:#e0deda;color:#73706a}.admin-tag{display:block;color:#48645c;margin-top:5px;font-size:9px}.admin-actions{display:flex;gap:6px;flex-wrap:wrap}.admin-actions button{border:1px solid #bbb9b0;background:#f5f3ec;padding:6px 8px;border-radius:2px;font-size:9px;font-weight:700;cursor:pointer}.admin-actions button:hover{border-color:var(--green)}.admin-actions button.danger{color:#a43c2c}.admin-actions span{color:var(--muted);font-size:10px}.dialog-backdrop{position:fixed;inset:0;z-index:150;background:rgba(6,27,24,.78);display:grid;place-items:center;padding:20px}.dialog-backdrop[hidden]{display:none}.reset-dialog{width:min(420px,100%);background:var(--paper);padding:32px;border-radius:4px}.reset-dialog h3{font:400 28px Georgia,serif;margin:0}.reset-dialog>p:not(.eyebrow):not(.auth-error){color:var(--muted);font-size:12px;line-height:1.5}.reset-dialog label{display:block;font:600 9px DM Mono,monospace;text-transform:uppercase}.reset-dialog input{width:100%;padding:12px;margin-top:7px;border:1px solid #c8c6bc}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.dialog-actions button{padding:10px 14px;border:1px solid #bbb9b0;background:transparent;cursor:pointer}.dialog-actions button[type=submit]{background:var(--green);color:white;border-color:var(--green)}.auth-error.auth-success{color:#35692d;background:#e1edd8;padding:9px;min-height:auto;border-radius:2px}
@media(max-width:700px){.admin-summary{grid-template-columns:1fr}.admin-section{padding:60px 0}.user-menu #adminJump{display:none}.next-session-row strong{font-size:11px}}
.skip-link{position:fixed;top:8px;left:8px;z-index:300;background:white;color:var(--green);padding:10px;transform:translateY(-160%)}.skip-link:focus{transform:none}.brand-mark{overflow:hidden}.rail-item small{display:block;font-size:9px;color:var(--muted);margin-top:5px;line-height:1.35}.plan-class{margin-top:12px;width:100%;border:1px solid #c9c6bc;background:transparent;padding:7px;font:600 8px DM Mono,monospace;cursor:pointer}.plan-class:hover,.plan-class:focus{background:var(--green);color:white}.planner-section,.calendar-section{padding:90px 0;border-top:1px solid var(--line)}.planner-layout{display:grid;grid-template-columns:330px 1fr;gap:35px}.class-date-list{max-height:690px;overflow:auto;display:flex;flex-direction:column;gap:7px;padding-right:8px}.class-date-button{display:grid;grid-template-columns:58px 65px 1fr;align-items:center;text-align:left;border:0;border-left:3px solid var(--course);background:#e8e6dc;padding:13px;color:var(--ink);cursor:pointer}.class-date-button:hover,.class-date-button.active{background:var(--green);color:white}.class-date-button span{font:500 10px DM Mono,monospace}.class-date-button strong{font:600 10px DM Mono,monospace}.class-date-button small{font-size:10px;line-height:1.3}.planner-panel{background:#ebe9e0;padding:30px}.planner-panel h3{font:400 31px Georgia,serif;margin:0 0 12px}.planner-meta{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:25px}.planner-meta span{border:1px solid #c7c5bc;padding:7px 9px;font-size:10px}.planner-label{display:block;font:600 9px DM Mono,monospace;text-transform:uppercase;margin-bottom:8px}.item-form{display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:8px;border-top:1px solid var(--line);padding-top:22px;margin-top:22px}.item-form input,.item-form select,.item-form textarea,.appointment-form input,.appointment-form textarea,.admin-tools input,.admin-tools select{width:100%;border:1px solid #c7c5bc;background:#f7f5ef;padding:11px;font:500 12px Manrope,Arial,sans-serif}.item-form textarea{grid-column:1/4;min-height:50px;resize:vertical}.item-form button,.appointment-form button{border:0;background:var(--green);color:white;padding:11px 15px;font-weight:700;cursor:pointer}.work-list{margin-top:20px}.work-item{display:grid;grid-template-columns:70px 1fr auto auto;gap:12px;align-items:center;padding:13px 0;border-top:1px solid var(--line)}.work-item.completed{opacity:.5}.work-item.completed strong{text-decoration:line-through}.work-type{font:600 8px DM Mono,monospace;text-transform:uppercase;color:var(--green)}.work-item strong,.work-item small{display:block}.work-item small{color:var(--muted);font-size:10px;margin-top:3px}.work-item button{border:1px solid #c7c5bc;background:transparent;padding:6px 8px;font-size:9px;cursor:pointer}.empty-state{color:var(--muted);font-size:11px}.calendar-layout{display:grid;grid-template-columns:1fr 360px;gap:28px}.calendar-months{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.mini-calendar{background:#ebe9e0;padding:18px}.mini-calendar h3{font:400 21px Georgia,serif;margin:0 0 15px}.weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.weekdays span{text-align:center;font:600 8px DM Mono,monospace;color:var(--muted);padding:4px}.calendar-day{min-height:52px;border:0;background:#f3f1e9;padding:5px;position:relative;cursor:pointer;text-align:left}.calendar-day:hover,.calendar-day:focus{outline:2px solid var(--green)}.calendar-day span{font:600 10px DM Mono,monospace}.calendar-day i{display:block;font-style:normal;font-size:7px;color:var(--green);margin-top:8px}.calendar-day.has-class{border-top:3px solid var(--green)}.calendar-day.has-work:after,.calendar-day.has-meeting:before{content:"";position:absolute;width:5px;height:5px;border-radius:50%;right:5px;bottom:5px}.calendar-day.has-work:after{background:var(--orange)}.calendar-day.has-meeting:before{background:var(--purple);right:13px}.appointment-panel{background:var(--green);color:white;padding:25px}.appointment-panel h3{font:400 25px Georgia,serif;margin:0 0 20px}.appointment-form label{display:block;font:600 8px DM Mono,monospace;text-transform:uppercase;margin-bottom:12px}.appointment-form>div{display:grid;grid-template-columns:1fr 1fr;gap:8px}.appointment-form textarea{min-height:70px;resize:vertical}.appointment-form button{background:var(--mint);color:var(--green);width:100%}.appointment-list{margin-top:20px;max-height:300px;overflow:auto}.appointment-item{display:grid;grid-template-columns:55px 1fr auto;gap:10px;align-items:center;border-top:1px solid rgba(255,255,255,.14);padding:11px 0}.appointment-item time{font:600 9px DM Mono,monospace;color:var(--mint)}.appointment-item time small,.appointment-item strong,.appointment-item span{display:block}.appointment-item time small{color:white;margin-top:3px}.appointment-item strong{font-size:11px}.appointment-item span{font-size:9px;color:#b8c8c3;margin-top:3px}.appointment-item button{background:transparent;border:0;color:white;font-size:18px;cursor:pointer}.admin-tools{display:flex;gap:12px;margin-bottom:18px}.admin-tools label{font:600 8px DM Mono,monospace;text-transform:uppercase}.admin-tools input,.admin-tools select{display:block;margin-top:6px;min-width:220px}.auth-links{display:flex;justify-content:space-between;margin-top:12px}.auth-links button{border:0;background:transparent;color:#48645c;font-size:10px;font-weight:700;cursor:pointer}.profile-dialog label{display:block;font:600 9px DM Mono,monospace;text-transform:uppercase;margin-top:13px}.profile-dialog label small{display:block;color:var(--muted);text-transform:none;margin-top:3px}.profile-dialog input{font:500 13px Manrope,Arial,sans-serif}.toast{position:fixed;right:20px;bottom:20px;z-index:250;background:var(--green);color:white;padding:12px 16px;box-shadow:var(--shadow);font-size:11px;transform:translateY(140%);transition:.2s}.toast.show{transform:none}footer a{color:var(--green);font-weight:800;text-decoration:none}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid #e5a72f;outline-offset:2px}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
@media(max-width:1050px){.planner-layout,.calendar-layout{grid-template-columns:1fr}.class-date-list{max-height:310px}.calendar-months{grid-template-columns:1fr 1fr}.appointment-panel{max-width:none}}
@media(max-width:700px){.planner-section,.calendar-section{padding:60px 0}.planner-panel{padding:20px}.item-form{grid-template-columns:1fr}.item-form textarea{grid-column:auto}.calendar-months{grid-template-columns:1fr}.class-date-button{grid-template-columns:50px 58px 1fr}.admin-tools{flex-direction:column}.admin-tools input,.admin-tools select{min-width:0}.work-item{grid-template-columns:60px 1fr}.work-item button{grid-row:2}.auth-links{flex-direction:column;gap:8px}.topbar .brand small{display:none}}
.user-avatar{overflow:hidden}.user-avatar img{width:100%;height:100%;object-fit:cover}.profile-dialog{width:min(720px,100%);max-height:90vh;overflow:auto}.photo-editor{display:flex;align-items:center;gap:18px;background:#e8e6dc;padding:15px;margin:18px 0}.profile-photo-preview{width:78px;height:78px;flex:0 0 auto;border-radius:50%;display:grid;place-items:center;overflow:hidden;background:var(--green);color:var(--mint);font:700 25px Georgia}.profile-photo-preview img{width:100%;height:100%;object-fit:cover}.photo-editor label{margin:0}.photo-editor input[type=file]{background:transparent;border:0;padding:8px 0}.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.profile-wide{grid-column:1/-1}.profile-dialog textarea{display:block;width:100%;min-height:85px;margin-top:7px;border:1px solid #c8c6bc;padding:11px;resize:vertical}.account-meta{border-top:1px solid var(--line);padding-top:13px;margin-top:13px;color:var(--muted);font-size:10px}.admin-user-cell{display:grid;grid-template-columns:35px 1fr;gap:9px;align-items:center}.admin-user-cell>img,.admin-user-cell>span{width:35px;height:35px;border-radius:50%;object-fit:cover;display:grid;place-items:center;background:var(--green);color:var(--mint);font-weight:800}.admin-user-cell small{display:block;color:var(--muted);font-size:8px;margin-top:2px}.role{display:inline-block;border-radius:99px;padding:5px 8px;font:600 8px DM Mono,monospace;text-transform:uppercase}.role-superadmin{background:var(--green);color:var(--mint)}.role-admin{background:#d9e2f2;color:#315a8d}.role-user{background:#e3e1da;color:#65625c}.user-details{margin-bottom:7px}.user-details summary{font-size:9px;font-weight:700;cursor:pointer;color:#385d52}.user-details>div{position:absolute;z-index:10;width:260px;background:white;border:1px solid var(--line);padding:12px;box-shadow:var(--shadow)}.user-details p{font-size:9px;margin:5px 0;line-height:1.4}.audit-panel{margin-top:28px;border-top:1px solid var(--line);padding-top:22px}.audit-panel h3{font:400 25px Georgia,serif;margin:0 0 12px}.audit-item{display:grid;grid-template-columns:175px 1fr;gap:12px;padding:9px 0;border-top:1px solid var(--line);font-size:10px}.audit-item time{font:500 9px DM Mono,monospace;color:var(--muted)}
@media(max-width:700px){.profile-grid{grid-template-columns:1fr}.profile-wide{grid-column:auto}.profile-dialog{padding:24px 18px}.photo-editor{align-items:flex-start;flex-direction:column}.audit-item{grid-template-columns:1fr}.admin-tools label{width:100%}}
.profile-dialog{position:relative;padding-bottom:0;scroll-behavior:smooth}.scroll-actions-button{position:sticky;top:0;float:right;z-index:5;border:0;border-radius:99px;background:var(--green);color:white;padding:9px 13px;font:600 9px DM Mono,monospace;cursor:pointer;box-shadow:0 8px 20px rgba(13,59,52,.18)}.photo-status{display:block;margin-top:8px;color:#48645c;font:600 9px/1.4 Manrope,Arial,sans-serif;text-transform:none}.profile-actions{position:sticky;bottom:0;z-index:6;background:var(--paper);border-top:1px solid var(--line);margin:18px -32px 0;padding:15px 32px;box-shadow:0 -12px 24px rgba(16,35,31,.08)}.profile-actions button{min-width:120px}.profile-actions button[type=submit]:disabled{opacity:.65;cursor:wait}
@media(max-width:700px){.profile-actions{margin-left:-18px;margin-right:-18px;padding:13px 18px}.profile-actions button{min-width:0;flex:1}.scroll-actions-button{top:4px}}
.topbar{position:sticky;top:0;z-index:80;background:rgba(243,241,233,.96);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 1px 0 var(--line),0 10px 24px rgba(16,35,31,.06)}main section{scroll-margin-top:112px}.session{min-height:238px}.session-subject{min-height:34px;margin:5px 0 11px;font:700 11px/1.4 Manrope,Arial,sans-serif;color:#31453f}
@media(max-width:560px){main section{scroll-margin-top:92px}.session{min-height:225px}.session-subject{min-height:auto;font-size:12px}}
.header-download,.personal-export{color:var(--muted);font:600 9px DM Mono,monospace;text-transform:uppercase;text-decoration:none;padding:7px}.header-download:hover,.personal-export:hover{color:var(--ink)}.approval-badge{display:inline-grid;place-items:center;min-width:18px;height:18px;margin-left:3px;padding:0 5px;border-radius:99px;background:#b54834;color:white;font-size:9px}.upcoming-section{padding:55px 0;border-bottom:1px solid var(--line)}.upcoming-section .section-heading{margin-bottom:24px}.upcoming-section h2{font-size:clamp(34px,4vw,50px)}.upcoming-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.agenda-card{border-top:3px solid var(--agenda);background:#e8e6dc;padding:18px;min-height:150px}.agenda-card time,.agenda-card span,.agenda-card strong,.agenda-card small{display:block}.agenda-card time{font:600 10px DM Mono,monospace;color:var(--muted)}.agenda-card span{margin:14px 0 6px;font:600 8px DM Mono,monospace;text-transform:uppercase;color:var(--agenda)}.agenda-card strong{font-size:13px;line-height:1.4}.agenda-card small{margin-top:10px;color:var(--muted);font-size:10px;line-height:1.4}.today-target{animation:todayPulse 1.6s ease;box-shadow:0 0 0 5px rgba(217,243,107,.85)}@keyframes todayPulse{50%{transform:translateY(-5px)}}.admin-header-actions{display:flex;gap:8px}.refresh-users,.personal-export{text-decoration:none;color:var(--ink);display:inline-flex;align-items:center}.personal-export{margin-top:15px;border:1px solid #c8c6bc;justify-content:center}.profile-dialog .personal-export{font-size:9px}
@media(max-width:900px){.upcoming-grid{grid-template-columns:repeat(2,1fr)}.header-download{display:none}}
@media(max-width:560px){.upcoming-grid{grid-template-columns:1fr}.upcoming-section{padding:45px 0}.admin-header-actions{width:100%;flex-wrap:wrap}.user-menu{gap:2px}}
.topbar{background:var(--paper);box-shadow:none;isolation:isolate}.topbar:before{content:"";position:absolute;z-index:-1;top:0;bottom:0;left:calc(50% - 50vw);right:calc(50% - 50vw);background:var(--paper);box-shadow:0 8px 18px rgba(16,35,31,.07),0 1px 0 var(--line)}.password-wrap{display:block;position:relative;margin-top:7px}.password-wrap input{margin-top:0!important;padding-right:62px!important}.password-toggle{position:absolute;right:7px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:#315b4f;padding:7px;font:700 9px DM Mono,monospace;text-transform:uppercase;cursor:pointer}.password-toggle:hover{color:var(--ink)}
.note-tools{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-top:9px}.note-links{display:flex;flex:1;min-width:0;flex-direction:column;gap:5px}.note-links span{font:600 8px DM Mono,monospace;text-transform:uppercase;color:var(--muted)}.note-links a{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#245f91;font-size:10px}.note-download{flex:0 0 auto;border:1px solid #bbb9b0;background:transparent;color:var(--ink);padding:8px 10px;font:700 8px DM Mono,monospace;text-transform:uppercase;cursor:pointer}.note-download:hover{background:var(--green);border-color:var(--green);color:white}.course-card{min-height:455px}
@media(max-width:560px){.note-tools{align-items:stretch;flex-direction:column}.note-download{align-self:flex-start}}
.auth-brand .brand-mark{display:none}.auth-brand{margin-bottom:38px}
body{font-size:15px}.brand strong{font-size:15px}.brand small,.semester-pill{font-size:12px}.user-name{font-size:13px}.user-menu button,.header-download{font-size:12px}.eyebrow{font-size:12px}.intro{font-size:17px}.admin-intro,.auth-copy{font-size:14px}.filter,.refresh-users,.plan-class,.note-download{font-size:11px}.rail-item strong,.month-name{font-size:12px}.rail-item span,.rail-item small{font-size:11px}.session .code,.session-detail strong,.next-session-row small,.work-item small,.appointment-item span{font-size:11px}.session-subject,.next-session-row strong,.course-info strong{font-size:13px}.detail-label,.planner-label,.notes-label,.work-type,.admin-tools label,.auth-panel form label,.profile-dialog label{font-size:11px}.subject-notes,.class-note-title,.item-form input,.item-form select,.item-form textarea,.appointment-form input,.appointment-form textarea,.admin-tools input,.admin-tools select{font-size:14px}.user-table td{font-size:13px}.user-table th{font-size:10px}.empty-state{font-size:13px}
.class-note-title{display:block;width:100%;margin:0 0 10px;border:1px solid #c7c5bc;background:#f7f5ef;padding:13px;font-weight:700}.class-note-composer-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}.class-note-composer-actions button,.saved-note-actions button,.note-viewer footer button{border:1px solid #bbb9b0;background:transparent;padding:9px 12px;font-size:12px;font-weight:700;cursor:pointer}.class-note-composer-actions #saveClassNote,.note-viewer footer button:last-child{background:var(--green);border-color:var(--green);color:white}.saved-notes-heading{display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:24px;margin-top:25px}.saved-notes-heading span{font-weight:800}.saved-notes-heading small{color:var(--muted)}.class-notes-list{display:grid;gap:10px;margin-top:12px}.saved-note-card{display:grid;grid-template-columns:1fr auto;gap:18px;background:#f5f3ec;border-left:4px solid var(--green);padding:18px}.saved-note-card time{font:600 10px DM Mono,monospace;color:var(--muted)}.saved-note-card h4{font:700 17px Manrope,Arial,sans-serif;margin:7px 0}.saved-note-preview{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;color:#53615c;font-size:14px;line-height:1.55}.saved-note-preview a,.note-viewer-content a,.note-links a{color:#5b4bb7;text-decoration:underline;text-underline-offset:2px}.saved-note-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.saved-note-actions .danger{color:#a43c2c}.note-viewer{width:min(760px,100%);max-height:88vh;display:flex;flex-direction:column;background:var(--paper);border-radius:6px;box-shadow:0 30px 90px rgba(4,23,20,.35);padding:30px}.note-viewer header{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding-bottom:18px}.note-viewer h3{font:400 34px Georgia,serif;margin:0 0 7px}.note-viewer header small{color:var(--muted)}.note-viewer header>button{width:38px;height:38px;border:1px solid var(--line);background:transparent;border-radius:50%;font-size:22px;cursor:pointer}.note-viewer-content{min-height:180px;max-height:55vh;overflow-y:auto;padding:24px 8px 24px 0;font-size:16px;line-height:1.75;overflow-wrap:anywhere}.note-viewer footer{height:auto;display:flex;align-items:center;justify-content:flex-end;gap:8px;border-top:1px solid var(--line);padding-top:16px}.note-links{font-size:13px}
@media(max-width:700px){body{font-size:15px}.auth-panel input,.reset-dialog input,.subject-notes,.class-note-title,.item-form input,.item-form select,.item-form textarea,.appointment-form input,.appointment-form textarea{font-size:16px}.saved-note-card{grid-template-columns:1fr}.saved-note-actions{justify-content:flex-start}.note-viewer{padding:22px 18px}.note-viewer h3{font-size:28px}.note-viewer-content{font-size:16px}.user-menu button{font-size:11px}}
.subject-note-card{min-height:620px}.subject-notes-list{max-height:430px;overflow-y:auto;padding-right:4px}.subject-saved-note{grid-template-columns:1fr}.subject-saved-note .saved-note-actions{justify-content:flex-start}.note-links>span{display:none}
.planner-panel .class-notes-list{max-height:520px;overflow-y:auto;padding-right:7px}.notification-badge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;margin-left:3px;border-radius:99px;background:#b54834;color:white;font-size:9px}.notification-panel{position:fixed;z-index:140;top:88px;right:7vw;width:min(390px,90vw);max-height:65vh;overflow:auto;background:var(--paper);border:1px solid var(--line);box-shadow:var(--shadow);padding:18px}.notification-panel[hidden]{display:none}.notification-panel header{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:12px}.notification-item,.search-result,.day-item{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:13px;cursor:pointer;color:var(--ink)}.notification-item:hover,.search-result:hover,.day-item:hover{background:#e8e6dc}.notification-item span,.notification-item strong,.notification-item small,.search-result span,.search-result strong,.search-result small,.day-item span,.day-item strong,.day-item small{display:block}.notification-item span,.search-result span,.day-item span{font:600 10px DM Mono,monospace;color:var(--muted);text-transform:uppercase}.notification-item strong,.search-result strong,.day-item strong{font-size:14px;margin:5px 0}.utility-dialog{width:min(720px,100%);max-height:88vh;overflow:auto;background:var(--paper);padding:28px;border-radius:5px;box-shadow:var(--shadow)}.utility-dialog header{display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:15px;margin-bottom:15px}.utility-dialog h3{font:400 31px Georgia,serif;margin:0}.utility-dialog header>button{border:0;background:transparent;font-size:24px;cursor:pointer}.utility-dialog>input{width:100%;padding:14px;border:1px solid #bbb9b0;font-size:16px}.search-results{max-height:55vh;overflow:auto;margin-top:10px}.search-result p{margin:6px 0 0;color:var(--muted);font-size:12px}.primary-utility{margin-top:16px;border:0;background:var(--green);color:white;padding:12px 15px;font-weight:700}.calendar-count{position:absolute;right:4px;top:4px;display:grid;place-items:center;min-width:16px;height:16px;border-radius:50%;background:var(--purple);color:white;font-size:8px}.appointment-form>div{grid-template-columns:repeat(3,1fr)}.appointment-list{max-height:430px}.appointment-card{display:grid;grid-template-columns:78px 1fr;gap:12px;border-top:1px solid rgba(255,255,255,.18);padding:16px 0}.appointment-card time,.appointment-card time small,.appointment-card strong,.appointment-card span{display:block}.appointment-card time{color:var(--mint);font-weight:700}.appointment-card time small{color:white;font-size:11px;margin-top:5px}.appointment-card strong{font-size:14px}.appointment-card span{font-size:12px;color:#c7d4d0;margin-top:5px}.appointment-actions{grid-column:1/-1;display:flex;gap:7px}.appointment-actions button,.utility-dialog footer button{border:1px solid rgba(255,255,255,.35);background:transparent;color:inherit;padding:8px 11px;font-weight:700;cursor:pointer}.appointment-viewer-content{max-height:48vh;overflow:auto;font-size:16px;line-height:1.7;padding:15px 0}.utility-dialog footer{height:auto;display:flex;justify-content:flex-end;gap:8px;border-top:1px solid var(--line);padding-top:15px}.utility-dialog footer button{color:var(--ink);border-color:var(--line)}.appointment-cancel{margin-bottom:8px!important;background:transparent!important;color:white!important;border:1px solid rgba(255,255,255,.4)!important}
@media(max-width:700px){.planner-panel .class-notes-list,.subject-notes-list{max-height:580px}.appointment-form>div{grid-template-columns:1fr}.notification-panel{top:78px;right:10px}.utility-dialog{padding:22px 16px}.appointment-card{grid-template-columns:1fr}.user-menu #dashboardSearchButton{display:inline-block}}
.appointment-panel{align-self:start}.appointment-form>div{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(0,1fr);align-items:end}.appointment-form>div label,.appointment-form>div input{min-width:0}.appointment-form input[type=date],.appointment-form input[type=time]{padding-left:9px;padding-right:6px}.appointment-list{display:none!important}.day-appointment{display:grid;grid-template-columns:1fr auto;gap:15px;align-items:center;border-bottom:1px solid var(--line);padding:14px}.day-appointment span,.day-appointment strong,.day-appointment small{display:block}.day-appointment span{font:600 10px DM Mono,monospace;color:var(--purple);text-transform:uppercase}.day-appointment strong{font-size:15px;margin:5px 0}.day-appointment small{color:var(--muted)}.day-appointment>div:last-child{display:flex;gap:6px}.day-appointment button{border:1px solid var(--line);background:transparent;padding:8px 10px;font-weight:700;cursor:pointer}.day-appointment button:hover{background:var(--green);color:white}
@media(max-width:700px){.appointment-form>div{grid-template-columns:1fr}.day-appointment{grid-template-columns:1fr}.day-appointment>div:last-child{flex-wrap:wrap}}
.utility-dialog{overflow-x:hidden}.utility-dialog>*,#dayDialogList,.day-appointment,.day-appointment-copy{min-width:0;max-width:100%}#dayDialogList{max-height:58vh;overflow-x:hidden;overflow-y:auto;padding-right:5px}.day-appointment{align-items:start}.day-appointment-copy{overflow-wrap:anywhere;word-break:break-word}.day-appointment-copy small{white-space:normal;line-height:1.55}.day-appointment-actions{position:sticky;right:0;flex:0 0 auto;background:var(--paper);padding-left:8px}.appointment-viewer-content{overflow-x:hidden;overflow-wrap:anywhere;word-break:break-word}.day-appointment-editor{border:2px solid var(--green);background:#ebe9e0;padding:18px;margin-bottom:12px}.day-appointment-editor label{display:block;font:700 10px DM Mono,monospace;text-transform:uppercase;margin-bottom:12px}.day-appointment-editor input,.day-appointment-editor textarea{display:block;width:100%;min-width:0;margin-top:6px;border:1px solid #bbb9b0;background:white;padding:12px;font:500 14px Manrope,Arial,sans-serif}.day-appointment-editor textarea{min-height:120px;resize:vertical}.day-appointment-editor>div{display:grid;grid-template-columns:1fr 1fr;gap:10px}.day-appointment-editor footer{height:auto;display:flex;justify-content:flex-end;gap:8px;border:0;padding:4px 0 0}.day-appointment-editor button{border:1px solid var(--line);background:transparent;padding:10px 13px;font-weight:700;cursor:pointer}.day-appointment-editor button[type=submit]{background:var(--green);color:white;border-color:var(--green)}
@media(max-width:700px){#dayDialogList{max-height:62vh}.day-appointment-actions{position:static;padding-left:0}.day-appointment-editor>div{grid-template-columns:1fr}.day-appointment-editor input,.day-appointment-editor textarea{font-size:16px}}
.attendance-panel{background:#f5f3ec;border:1px solid var(--line);border-left:4px solid var(--green);padding:16px;margin:18px 0 22px}.attendance-panel-head{display:flex;justify-content:space-between;gap:12px}.attendance-panel-head span,.attendance-panel-head strong{display:block}.attendance-panel-head span{font:700 10px DM Mono,monospace;text-transform:uppercase}.attendance-status{display:inline-block;width:max-content;margin-top:5px;border-radius:99px;padding:5px 9px;font:700 10px DM Mono,monospace;text-transform:uppercase}.attendance-status.present{background:#dce9d1;color:#315f28}.attendance-status.late{background:#f1dfae;color:#765600}.attendance-status.absent{background:#efd4ce;color:#8a3327}.attendance-status.excused{background:#d9e2f2;color:#315a8d}.attendance-status.pending{background:#e4d8ef;color:#644381}.attendance-status.upcoming{background:#e4e2dc;color:#68645f}.attendance-times{display:flex;gap:20px;margin-top:13px}.attendance-times span,.attendance-times strong{display:block}.attendance-times span{color:var(--muted);font-size:11px}.attendance-times strong{color:var(--ink);font-size:13px;margin-top:3px}.attendance-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.attendance-actions button,.attendance-admin-row button{border:1px solid #bbb9b0;background:transparent;padding:8px 11px;font-size:11px;font-weight:700;cursor:pointer}.attendance-actions button:first-child{background:var(--green);color:white}.attendance-actions button:disabled{opacity:.4;cursor:not-allowed}.attendance-request-form label{display:block;font-weight:700;margin:12px 0}.attendance-request-form select,.attendance-request-form input,.attendance-request-form textarea{display:block;width:100%;margin-top:6px;padding:12px;border:1px solid var(--line);font-size:14px}.attendance-request-form>div{display:grid;grid-template-columns:1fr 1fr;gap:10px}.attendance-request-form textarea{min-height:120px}.attendance-admin{border-top:1px solid var(--line);margin-top:55px;padding-top:35px}.attendance-admin-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:20px}.attendance-admin-head h3{font:400 34px Georgia,serif;margin:0}.attendance-admin-row{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center;border-top:1px solid var(--line);padding:15px}.attendance-admin-row strong,.attendance-admin-row small{display:block}.attendance-admin-row strong{margin:8px 0 3px}.attendance-admin-row p{color:var(--muted);margin:9px 0 0}.attendance-admin-row>div:last-child{display:flex;gap:7px}.attendance-admin-row button[data-review=approve]{background:var(--green);color:white}
.attendance-summary{background:var(--green);color:#fff;padding:20px;margin:18px 0}.attendance-summary-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.attendance-summary-head h3{font:400 28px Georgia,serif;margin:4px 0 0}.attendance-summary-head>strong{color:var(--lime);font:400 34px Georgia,serif;text-align:right}.attendance-summary-head>strong small{color:#fff;display:block;font:400 10px DM Mono,monospace;text-transform:uppercase}.attendance-summary-grid{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid #ffffff38;border-bottom:1px solid #ffffff38;margin-top:16px}.attendance-summary-grid span{padding:12px;border-right:1px solid #ffffff38;font-size:11px}.attendance-summary-grid span:last-child{border-right:0}.attendance-summary-grid strong{display:block;color:var(--lime);font:400 24px Georgia,serif}.attendance-history summary{cursor:pointer;font-weight:700;padding:14px 0}.attendance-history>div{max-height:300px;overflow-y:auto;padding-right:6px}.attendance-history-row{display:grid;grid-template-columns:minmax(0,1fr) auto 135px;align-items:center;gap:14px;background:#fff;color:var(--ink);border-bottom:1px solid var(--line);padding:12px}.attendance-history-row strong,.attendance-history-row small{display:block}.attendance-history-row small{color:var(--muted);margin-top:4px}.attendance-history-row .attendance-status{margin:0}
.attendance-summary{display:grid;grid-template-columns:220px 1fr auto;align-items:center;gap:24px;background:#ebe8de;color:var(--ink);padding:18px 48px;margin:0 -48px;border-bottom:1px solid var(--line)}.attendance-summary .eyebrow{margin:0 0 3px}.attendance-summary>div:first-child>strong{font:400 28px Georgia,serif;color:var(--green)}.attendance-summary>div:first-child>small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase}.attendance-summary-grid{display:grid;grid-template-columns:repeat(5,1fr);border:0;margin:0}.attendance-summary-grid span{padding:5px 14px;border-right:1px solid var(--line);font-size:10px;color:var(--muted);text-transform:uppercase}.attendance-summary-grid strong{display:block;color:var(--ink);font:400 20px Georgia,serif}.attendance-summary button{border:1px solid #aaa89f;background:transparent;color:var(--ink);padding:10px 13px;font:700 10px DM Mono,monospace;cursor:pointer}.attendance-summary button:hover{background:var(--green);border-color:var(--green);color:#fff}.attendance-history-dialog{width:min(820px,calc(100vw - 32px))}.attendance-history-dialog>header{margin-bottom:12px}.attendance-history-dialog>header h3{font:400 34px Georgia,serif;margin:0}.attendance-history-dialog>header button{border:0;background:transparent;font-size:26px;cursor:pointer}.attendance-history-dialog #attendanceHistoryTotals{display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:13px 0;margin-bottom:12px}.attendance-history-dialog #attendanceHistoryTotals span{color:var(--muted);font-size:11px}.attendance-history-list{max-height:min(55vh,480px);overflow-y:auto;padding-right:5px}.attendance-history-row{display:grid;grid-template-columns:minmax(0,1fr) auto 135px;align-items:center;gap:14px;background:#fff;color:var(--ink);border-bottom:1px solid var(--line);padding:12px}.attendance-history-row strong,.attendance-history-row small{display:block}.attendance-history-row small{color:var(--muted);margin-top:4px}.attendance-history-row .attendance-status{margin:0}
@media(max-width:900px){.attendance-summary{margin:0 -22px;padding:16px 22px;grid-template-columns:1fr auto}.attendance-summary-grid{grid-column:1/-1;grid-row:2}.attendance-summary-grid span:first-child{padding-left:0}}
@media(max-width:700px){.attendance-panel-head,.attendance-admin-head{align-items:flex-start;flex-direction:column}.attendance-summary{grid-template-columns:1fr}.attendance-summary-grid{grid-column:auto;grid-row:auto;grid-template-columns:repeat(5,minmax(55px,1fr));overflow-x:auto}.attendance-summary-grid span{padding:7px}.attendance-summary button{width:100%}.attendance-history-dialog #attendanceHistoryTotals{align-items:flex-start;flex-direction:column}.attendance-history-row{grid-template-columns:1fr auto}.attendance-history-row>small{grid-column:1/-1}.attendance-request-form>div,.attendance-admin-row{grid-template-columns:1fr}.attendance-request-form select,.attendance-request-form input,.attendance-request-form textarea{font-size:16px}}
@media(max-width:560px){.attendance-summary{margin:0 -16px;padding:15px 16px}}
.class-notes-list.has-note-scroll,.subject-notes-list.has-note-scroll{max-height:285px;overflow-y:auto;overscroll-behavior:contain;padding-right:5px;scrollbar-gutter:stable}.subject-notes-list:not(.has-note-scroll){max-height:none;overflow:visible}.day-appointment-copy small{display:-webkit-box;white-space:normal;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-height:1.55;max-height:4.65em}.day-appointment-copy small a{display:inline}
@media(max-width:700px){.class-notes-list.has-note-scroll,.subject-notes-list.has-note-scroll{max-height:330px}}
.announcements-section{padding:42px 0;border-bottom:1px solid var(--line)}.announcements-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:20px}.announcements-head h2{font:400 38px Georgia,serif;margin:0}.announcements-head button,.announcement-admin button,.announcement-form button{border:1px solid #aaa89f;background:transparent;color:var(--ink);padding:10px 13px;font:700 10px DM Mono,monospace;cursor:pointer}.announcement-preview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.announcement-card,.announcement-list-item{position:relative;text-align:left;border:1px solid var(--line);border-top:3px solid var(--green);background:#ebe9e0;color:var(--ink);padding:18px;cursor:pointer}.announcement-card.unread:after,.announcement-list-item.unread:after{content:"";position:absolute;right:13px;top:13px;width:8px;height:8px;border-radius:50%;background:var(--orange)}.announcement-card.read,.announcement-list-item.read{opacity:.78}.announcement-card strong,.announcement-card small,.announcement-card p,.announcement-list-item strong,.announcement-list-item small,.announcement-list-item p{display:block}.announcement-card strong,.announcement-list-item strong{font-size:16px;margin:10px 0 5px}.announcement-card small,.announcement-list-item small{color:var(--muted);font-size:10px}.announcement-card p,.announcement-list-item p{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;color:#53615c;font-size:12px;line-height:1.55;margin:12px 0 0}.announcement-priority{display:inline-block;border-radius:99px;padding:4px 8px;font:700 9px DM Mono,monospace;text-transform:uppercase}.announcement-priority.general{background:#d9e2f2;color:#315a8d}.announcement-priority.important{background:#f1dfae;color:#765600}.announcement-priority.urgent{background:#efd4ce;color:#8a3327}.announcement-alert{border-left:3px solid var(--orange)}.announcement-viewer-content{max-height:55vh;overflow-y:auto;white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px;line-height:1.75;padding:12px 2px}.announcement-viewer>a{display:inline-block;margin-top:14px;color:#5b4bb7;font-weight:700}.announcements-dialog>input{width:100%;padding:13px;border:1px solid var(--line);font-size:15px;margin-bottom:10px}.announcements-dialog #allAnnouncementsList{max-height:55vh;overflow-y:auto}.announcement-list-item{display:block;width:100%;border-top-width:1px;margin-bottom:8px}.announcement-admin{border-top:1px solid var(--line);margin-top:55px;padding-top:35px}.announcement-form{background:#ebe9e0;padding:20px;margin-bottom:18px}.announcement-form>input,.announcement-form textarea,.announcement-form select{width:100%;border:1px solid #c7c5bc;background:#f7f5ef;padding:12px;font:500 13px Manrope,Arial,sans-serif;margin-bottom:9px}.announcement-form>div{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px}.announcement-form textarea{min-height:140px;resize:vertical}.announcement-form footer{height:auto;display:flex;justify-content:flex-end;gap:8px;border:0;padding:0}.announcement-form button[type=submit]{background:var(--green);border-color:var(--green);color:#fff}.admin-announcement-row{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center;border-top:1px solid var(--line);padding:14px}.admin-announcement-row strong,.admin-announcement-row small{display:block}.admin-announcement-row strong{margin:8px 0 4px}.admin-announcement-row small{color:var(--muted)}.admin-announcement-row>div:last-child{display:flex;gap:6px}.admin-announcement-row button:last-child{color:#a43c2c}
@media(max-width:800px){.announcement-preview-grid{grid-template-columns:1fr}.announcements-head{align-items:flex-start;flex-direction:column}.announcement-form>div,.admin-announcement-row{grid-template-columns:1fr}.admin-announcement-row>div:last-child{flex-wrap:wrap}}
.calendar-browser{min-width:0}.calendar-toolbar{display:flex;align-items:end;justify-content:space-between;gap:16px;background:#e1ded4;border-bottom:1px solid var(--line);padding:12px}.calendar-toolbar>div{display:flex;gap:7px}.calendar-toolbar button{border:1px solid #aaa89f;background:#f5f3ec;color:var(--ink);padding:9px 11px;font:700 10px DM Mono,monospace;cursor:pointer}.calendar-toolbar button:hover,.calendar-toolbar button:focus{background:var(--green);color:#fff}.calendar-toolbar label{display:flex;align-items:center;gap:7px;font:700 9px DM Mono,monospace;text-transform:uppercase}.calendar-toolbar input{border:1px solid #aaa89f;background:#f5f3ec;padding:8px;font:500 12px Manrope,Arial,sans-serif}.calendar-months{grid-template-columns:1fr}.single-calendar{padding:24px}.single-calendar h3{font-size:30px}.single-calendar .calendar-day{min-height:86px;padding:9px}.single-calendar .calendar-day span{font-size:12px}.single-calendar .calendar-day i{font-size:9px;margin-top:15px}.calendar-day.is-today{box-shadow:inset 0 0 0 2px var(--green)}.calendar-day.is-today span:after{content:" Today";color:var(--green);font-size:8px}.calendar-day.is-selected{background:#e0e9d3}.calendar-hint{color:var(--muted);font-size:10px;margin:9px 3px 0}.calendar-blank{min-height:86px}
@media(max-width:700px){.calendar-toolbar{align-items:stretch;flex-direction:column}.calendar-toolbar>div{display:grid;grid-template-columns:1fr 1fr 1fr}.calendar-toolbar label{display:grid;grid-template-columns:auto 1fr auto}.calendar-toolbar input{min-width:0;width:100%;font-size:16px}.single-calendar{padding:14px}.single-calendar h3{font-size:25px}.single-calendar .calendar-day,.calendar-blank{min-height:62px}.single-calendar .calendar-day{padding:6px}.single-calendar .calendar-day i{font-size:7px;margin-top:10px}.calendar-day.is-today span:after{content:""}}

/* Readability layer: Facebook-inspired desktop sizing and stronger contrast. */
:root{--ink:#111814;--muted:#4b514e}body{font-size:16px;line-height:1.55}button,input,select,textarea{font-family:Manrope,Arial,sans-serif}button{font-size:14px;line-height:1.25;min-height:38px}input,select,textarea{font-size:16px;line-height:1.5;color:#111814}::placeholder{color:#656b68!important;opacity:1}.brand strong{font-size:16px}.brand small,.semester-pill{font-size:13px}.eyebrow{font-size:13px;color:#4b514e}.intro,.admin-intro,.auth-copy{color:#4b514e}.hero-meta{font-size:14px}.next-head,.next-day,.next-code{font-size:13px}.next-session-row strong{font-size:16px}.next-session-row span,.next-session-row small,.next-time span{font-size:14px}.stats p{font-size:13px;color:#4b514e}.filter,.refresh-users,.plan-class,.note-download,.header-download,.user-menu button{font-size:13px}.rail-item strong,.month-name{font-size:14px}.rail-item span,.rail-item small{font-size:13px;color:#4b514e}.session .code{font-size:13px}.session-subject{font-size:16px}.session-detail .detail-label,.detail-label{font-size:12px;color:#4b514e}.session-detail strong{font-size:14px;line-height:1.45}.course-card .code{font-size:13px}.course-info span,.notes-label,.planner-label,.work-type{font-size:13px;color:#4b514e}.course-info strong,.faculty,.faculty strong{font-size:15px}.subject-notes,.class-note-title,.item-form input,.item-form select,.item-form textarea,.appointment-form input,.appointment-form textarea,.admin-tools input,.admin-tools select{font-size:16px}.class-date-button span,.class-date-button strong{font-size:13px}.class-date-button small{font-size:13px}.planner-meta span{font-size:13px}.saved-notes-heading small,.saved-note-card time{font-size:13px;color:#4b514e}.saved-note-preview{font-size:15px}.saved-note-actions button,.class-note-composer-actions button,.note-viewer footer button{font-size:14px}.work-item strong{font-size:15px}.work-item small,.empty-state{font-size:14px}.work-type{font-size:12px}.calendar-toolbar button{font-size:13px}.calendar-toolbar label{font-size:13px}.calendar-toolbar input{font-size:16px}.weekdays span{font-size:12px;color:#4b514e}.single-calendar .calendar-day span{font-size:14px}.single-calendar .calendar-day i{font-size:12px}.calendar-count{font-size:11px;min-width:20px;height:20px}.calendar-hint{font-size:13px;color:#4b514e}.appointment-form label{font-size:13px}.day-appointment span,.notification-item span,.search-result span,.day-item span{font-size:12px}.day-appointment strong,.notification-item strong,.search-result strong,.day-item strong{font-size:16px}.day-appointment small,.notification-item small,.search-result small,.day-item small{font-size:14px;color:#4b514e}.day-appointment button,.appointment-actions button,.utility-dialog footer button{font-size:14px}.appointment-viewer-content{font-size:16px}.announcement-card strong,.announcement-list-item strong{font-size:17px}.announcement-card small,.announcement-list-item small{font-size:13px;color:#4b514e}.announcement-card p,.announcement-list-item p{font-size:15px;color:#4b514e}.announcement-priority{font-size:12px}.announcement-viewer-content{font-size:16px}.announcement-form>input,.announcement-form textarea,.announcement-form select{font-size:16px}.admin-announcement-row strong{font-size:16px}.admin-announcement-row small{font-size:14px;color:#4b514e}.admin-tools label,.auth-panel form label,.profile-dialog label{font-size:13px}.user-table th{font-size:12px}.user-table td{font-size:15px}.audit-item time,.audit-item span{font-size:14px}.attendance-panel-head span{font-size:12px}.attendance-status{font-size:12px}.attendance-times span{font-size:13px;color:#4b514e}.attendance-times strong{font-size:15px}.attendance-actions button,.attendance-admin-row button{font-size:14px}.attendance-summary>div:first-child>small,.attendance-summary-grid span{font-size:12px}.attendance-summary button{font-size:13px}.attendance-history-row small,.attendance-admin-row small{font-size:14px;color:#4b514e}.attendance-admin-row strong{font-size:16px}.auth-brand strong{font-size:16px}.auth-brand small{font-size:14px}.auth-panel input{font-size:16px}.auth-error,.auth-switch,.auth-links button{font-size:14px}.profile-dialog input,.profile-dialog textarea{font-size:16px}.user-name{font-size:14px}.live-clock strong{font-size:16px}.live-clock span{font-size:12px;color:#4b514e}footer{font-size:13px;color:#4b514e}
.note-viewer-editor{display:grid;gap:16px;padding:24px 0;min-height:180px;max-height:55vh;overflow-y:auto}.note-viewer-editor[hidden]{display:none}.note-viewer-editor label{display:grid;gap:7px;font-size:13px;font-weight:800;text-transform:uppercase}.note-viewer-editor input,.note-viewer-editor textarea{width:100%;border:1px solid #bbb9b0;background:#fff;padding:13px;font-size:16px;color:var(--ink)}.note-viewer-editor textarea{min-height:280px;resize:vertical;line-height:1.65}.note-viewer #viewerSaveNote{background:var(--green);border-color:var(--green);color:#fff}
.search-filters{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:8px;align-items:center;margin:10px 0 14px}.search-filters select{min-width:0;padding:10px;border:1px solid var(--line);background:#fff}.search-filters strong{white-space:nowrap;font-size:13px}.search-results{max-height:58vh;overflow-y:auto;overscroll-behavior:contain}.search-result-rich{position:relative;border-top:1px solid var(--line);padding:16px 90px 16px 12px}.search-result-heading{display:grid;gap:3px}.search-result-heading span{font:700 12px DM Mono,monospace;text-transform:uppercase;color:var(--muted)}.search-result-heading strong{font-size:17px}.search-result-rich dl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 18px;margin:10px 0}.search-result-rich dl div{display:grid;grid-template-columns:90px 1fr;gap:7px}.search-result-rich dt{color:var(--muted);font-size:12px}.search-result-rich dd{margin:0;font-size:13px}.search-result-rich p{margin:8px 0 0;color:var(--muted);font-size:14px;line-height:1.5}.search-result-rich>button{position:absolute;right:10px;top:18px;border:1px solid var(--line);background:var(--green);color:#fff;padding:9px 13px;font-weight:700}.search-result-rich mark{background:#e9f7a8;color:inherit;padding:0 1px}@media(max-width:700px){.search-filters{grid-template-columns:1fr 1fr}.search-filters strong{grid-column:1/-1}.search-result-rich{padding:16px 12px}.search-result-rich>button{position:static;margin-top:12px}.search-result-rich dl{grid-template-columns:1fr}.search-result-rich dl div{grid-template-columns:82px 1fr}}
.announcement-control-grid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}.announcement-control-grid label{display:grid;gap:6px;font-size:12px;font-weight:800;text-transform:uppercase}.announcement-control-grid label[hidden]{display:none}.announcement-control-grid label small{font-weight:500;text-transform:none;color:var(--muted)}.announcement-control-grid input,.announcement-control-grid select{width:100%;padding:12px;border:1px solid var(--line);background:#fff}.admin-announcement-row{display:flex;align-items:center;justify-content:space-between;gap:18px}.admin-announcement-row>div{display:grid;gap:5px}.admin-announcement-row>button{border:1px solid var(--line);background:transparent;padding:9px 12px}.admin-announcement-viewer .announcement-viewer-content{max-height:32vh;overflow-y:auto;padding:20px 0}.announcement-viewer-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;border-top:1px solid var(--line);padding-top:16px}.announcement-viewer-details div{display:grid;grid-template-columns:92px 1fr;gap:8px}.announcement-viewer-details dt{color:var(--muted);font-size:12px}.announcement-viewer-details dd{margin:0;font-size:13px}.announcement-modal-editor{display:grid;gap:12px;padding:20px 0;max-height:55vh;overflow-y:auto}.announcement-modal-editor[hidden],.announcement-viewer-details[hidden]{display:none}.announcement-modal-editor>input,.announcement-modal-editor>textarea{width:100%;padding:13px;border:1px solid var(--line);font-size:16px}.announcement-modal-editor>textarea{min-height:220px;resize:vertical}.admin-announcement-viewer footer .danger{color:#a43c2c}.admin-announcement-viewer #adminAnnouncementSave{background:var(--green);border-color:var(--green);color:#fff}@media(max-width:700px){.announcement-control-grid,.announcement-viewer-details{grid-template-columns:1fr!important}.admin-announcement-row{align-items:flex-start}.announcement-viewer-details div{grid-template-columns:82px 1fr}}
@media(max-width:700px){body{font-size:16px}.single-calendar .calendar-day i{font-size:10px}.user-menu button{font-size:13px}.live-clock strong{font-size:14px}.live-clock span{font-size:11px}}

/* v11 compact administration and expanded profiles */
.profile-dialog{position:relative}.profile-close{position:absolute;right:22px;top:18px;width:42px;height:42px;border:0;background:transparent;color:var(--ink);font-size:32px;line-height:1;cursor:pointer}.profile-close:hover,.profile-close:focus{background:#e4e1d7}.profile-photo-preview{width:132px;height:132px;font-size:40px}.photo-editor{align-items:center}.inline-choice{display:flex!important;align-items:center;gap:8px;margin-top:8px;font-weight:500;text-transform:none}.inline-choice input{width:auto!important;margin:0}.profile-dialog select{width:100%;padding:12px;border:1px solid #c8c6bc;background:#fff;font-size:16px}.profile-dialog input[readonly]{background:#e8e6dc;color:#4b514e}.user-avatar{width:64px;height:64px;flex:0 0 64px}.user-menu{gap:11px}
#attendanceAdminList{max-height:540px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding-right:6px}.attendance-admin-row{display:block}.attendance-admin-row>summary{display:grid;grid-template-columns:auto minmax(140px,1fr) minmax(180px,1fr) auto;gap:14px;align-items:center;cursor:pointer;list-style:none;padding:4px}.attendance-admin-row>summary::-webkit-details-marker{display:none}.attendance-admin-row>summary>small{color:var(--muted)}.attendance-admin-detail{padding:12px 8px 3px 112px}.attendance-admin-detail>div{display:flex;gap:8px;flex-wrap:wrap}.attendance-admin-detail button{border:1px solid #aaa89f;background:transparent;padding:8px 11px;font-weight:700;cursor:pointer}.attendance-admin-detail .danger{color:#a43c2c}
.announcement-filter{display:flex;align-items:center;gap:10px;margin:0 0 10px;font-weight:700}.announcement-filter select{padding:10px;border:1px solid #aaa89f;background:#fff;font-size:15px}#adminAnnouncementList{max-height:500px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding-right:6px}.admin-announcement-row{display:block}.admin-announcement-row>summary{display:flex;justify-content:space-between;gap:16px;align-items:center;cursor:pointer;list-style:none}.admin-announcement-row>summary::-webkit-details-marker{display:none}.admin-announcement-row>summary span:first-child{min-width:0}.admin-announcement-row>p{padding:12px 0;white-space:pre-wrap;overflow-wrap:anywhere}.admin-announcement-actions{display:flex;gap:8px;flex-wrap:wrap;padding-bottom:6px}
.audit-heading{display:flex;justify-content:space-between;align-items:center;gap:16px}.audit-tools{display:grid;grid-template-columns:2fr 1fr 1fr;gap:9px;margin-bottom:8px}.audit-tools input,.audit-tools select{padding:11px;border:1px solid #aaa89f;background:#fff;font-size:15px}#auditList{max-height:265px;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding-right:6px}.audit-item span small{display:block;color:var(--muted);margin-top:3px}
@media(max-width:800px){.profile-photo-preview{width:112px;height:112px}.user-avatar{width:48px;height:48px;flex-basis:48px}.attendance-admin-row>summary{grid-template-columns:auto 1fr auto}.attendance-admin-row>summary>small{grid-column:2/-1}.attendance-admin-detail{padding-left:8px}.audit-tools{grid-template-columns:1fr}.audit-item{grid-template-columns:1fr}.admin-announcement-row>summary{align-items:flex-start;flex-direction:column}}

.user-table-wrap{max-height:470px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.user-table thead th{position:sticky;top:0;z-index:3;background:#e9e7df;box-shadow:0 1px 0 var(--line)}
@media(max-width:700px){.user-table-wrap{max-height:520px}}

/* Allow the main page to continue scrolling when a nested list reaches its edge. */
.user-table-wrap,#attendanceAdminList,#adminAnnouncementList,#auditList,.class-notes-list.has-note-scroll,.subject-notes-list.has-note-scroll,.notification-panel{overscroll-behavior:auto}

.startup-screen{position:fixed;inset:0;z-index:120;display:grid;place-items:center;background:#0d3b34;color:#fff;padding:24px;transition:opacity .28s ease,visibility .28s ease}.startup-card{text-align:center;max-width:520px}.startup-card h1{font:400 clamp(32px,5vw,52px) Georgia,serif;margin:24px 0 10px}.startup-card p{color:#d9e4df;font-size:16px;margin:0}.startup-spinner{display:block;width:42px;height:42px;margin:auto;border:3px solid #ffffff40;border-top-color:#d6f65a;border-radius:50%;animation:startup-spin .8s linear infinite}body:not(.auth-pending) .startup-screen{opacity:0;visibility:hidden;pointer-events:none}@keyframes startup-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.startup-screen{transition:none}.startup-spinner{animation:none;border-color:#d6f65a}}
.email-preferences{grid-column:1/-1;border:1px solid var(--line);padding:18px;margin:4px 0}.email-preferences legend{font-weight:800;padding:0 7px}.email-preference-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.email-preference-grid label,.reminder-options label{display:flex;align-items:center;gap:9px;font-weight:600;text-transform:none}.email-preference-grid input,.reminder-options input{width:auto!important;margin:0}.reminder-options{display:flex;gap:18px;flex-wrap:wrap;border-top:1px solid var(--line);margin-top:14px;padding-top:14px}.email-preferences small{display:block;color:var(--muted);margin-top:12px}@media(max-width:600px){.email-preference-grid{grid-template-columns:1fr}}
.planner-layout{grid-template-columns:390px minmax(0,1fr);gap:40px}.class-date-list{padding-right:14px;gap:9px;scrollbar-gutter:stable}.class-date-button{grid-template-columns:64px 72px minmax(0,1fr);gap:10px;align-items:center;min-height:78px;padding:13px 15px}.class-date-button span,.class-date-button strong{white-space:nowrap}.class-date-button small{font-size:14px;line-height:1.4;overflow-wrap:anywhere}
@media(max-width:1050px){.planner-layout{grid-template-columns:1fr}.class-date-list{max-height:360px}.class-date-button{grid-template-columns:72px 78px minmax(0,1fr)}}
@media(max-width:700px){.class-date-list{padding-right:10px}.class-date-button{grid-template-columns:auto 1fr;align-items:start;min-height:92px;padding:14px 16px}.class-date-button span{grid-column:1}.class-date-button strong{grid-column:2}.class-date-button small{grid-column:1/-1;margin-top:2px;font-size:15px;line-height:1.45}}
.notification-settings{position:sticky;bottom:-18px;background:var(--paper);border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:7px;padding:12px 0 2px;margin-top:8px}.notification-settings button{border:1px solid #aaa89f;background:transparent;color:var(--ink);padding:8px 10px;font-size:12px;font-weight:700;cursor:pointer}.notification-settings button:hover:not(:disabled){background:var(--green);color:#fff}.notification-settings button:disabled{opacity:.65}.notification-settings small{flex-basis:100%;color:var(--muted);font-size:12px}.notification-panel{overscroll-behavior:contain}
.notification-panel header{align-items:center}.notification-close{display:grid;place-items:center;width:34px;height:34px;min-height:34px;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--ink);font-size:21px;line-height:1;cursor:pointer}.notification-close:hover,.notification-close:focus-visible{background:var(--green);border-color:var(--green);color:#fff}
.mobile-navigation{display:none}#adminJump[hidden],#mobileAdminButton[hidden],.mobile-navigation[hidden]{display:none!important}
.schedule-actions{display:grid;justify-items:end;gap:12px}.schedule-toggle{border:1px solid #aaa89f;background:transparent;color:var(--ink);padding:10px 14px;font-weight:700;cursor:pointer}.schedule-toggle:hover,.schedule-toggle:focus-visible{background:var(--green);border-color:var(--green);color:#fff}.schedule-section.is-collapsed{padding-bottom:48px}.schedule-section.is-collapsed .filters,.schedule-section.is-collapsed .schedule-layout{display:none}.schedule-section.is-collapsed .section-heading{margin-bottom:0}@media(max-width:700px){.schedule-section .section-heading{align-items:flex-start;gap:22px}.schedule-actions{width:100%;justify-items:stretch}.schedule-toggle{width:100%}.schedule-actions .filters{justify-content:flex-start}}
.user-menu{position:relative}.admin-panel-menu{position:absolute;right:84px;top:calc(100% + 15px);z-index:45;width:250px;padding:8px;background:var(--paper);border:1px solid var(--line);box-shadow:0 16px 36px #0b2c2530}.admin-panel-menu[hidden]{display:none}.admin-panel-menu button,.admin-panel-menu>a{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;border:0;background:transparent;color:var(--ink);padding:13px 14px;text-align:left;font-size:14px;font-weight:700;cursor:pointer;text-decoration:none}.admin-panel-menu>a{border-top:1px solid var(--line);margin-top:5px}.admin-panel-menu button:hover,.admin-panel-menu button:focus-visible,.admin-panel-menu button.active,.admin-panel-menu>a:hover,.admin-panel-menu>a:focus-visible{background:#e4e1d7;color:var(--green)}.admin-menu-badge{display:grid;place-items:center;min-width:23px;height:23px;padding:0 6px;border-radius:999px;background:#a54432;color:#fff;font-size:11px}.admin-view[hidden],#announcementAdmin[hidden],#attendanceAdmin[hidden],#auditPanel[hidden]{display:none!important}.admin-section>.admin-view,.admin-section>#announcementAdmin,.admin-section>#attendanceAdmin,.admin-section>#auditPanel{margin:0}.admin-section>#auditPanel{padding-top:0;border-top:0}.admin-page-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-bottom:26px;margin-bottom:34px;border-bottom:1px solid var(--line)}.admin-page-header>a{border:1px solid var(--line);padding:11px 15px;color:var(--ink);font-weight:700;text-decoration:none}.admin-page-header>a:hover,.admin-page-header>a:focus-visible{background:var(--green);border-color:var(--green);color:#fff}.admin-page-header>div{text-align:right}.admin-page-header p{margin:0 0 4px}.admin-page-header strong{font:400 30px Georgia,serif}body.admin-route main>:not(#adminSection){display:none!important}body.admin-route #adminSection{display:block;min-height:calc(100vh - 190px);padding:54px 0 90px;border-bottom:0}body.admin-route .page-shell>footer{margin-top:0}
@media(max-width:700px){.user-menu #adminJump{display:inline-flex}.admin-panel-menu{position:fixed;left:14px;right:14px;top:82px;width:auto}.admin-panel-menu button,.admin-panel-menu>a{min-height:48px;font-size:15px}.admin-page-header{align-items:flex-start;flex-direction:column}.admin-page-header>div{text-align:left}.admin-page-header strong{font-size:27px}}

/* v13 responsive application shell */
@media (min-width:761px) and (max-width:1100px){.page-shell{padding:0 30px}.topbar{height:88px}.hero{grid-template-columns:1fr 1fr;gap:34px;min-height:430px}.hero h1{font-size:clamp(54px,7vw,72px)}.stats{margin:0 -30px;padding:0 30px}.schedule-layout{grid-template-columns:210px 1fr;gap:24px}.sessions{grid-template-columns:repeat(2,minmax(0,1fr))}.planner-layout{grid-template-columns:290px minmax(0,1fr);gap:24px}.calendar-layout{grid-template-columns:1fr}.calendar-months{grid-template-columns:repeat(2,1fr)}.course-grid{grid-template-columns:repeat(2,1fr)}.user-menu{gap:5px}.user-menu button{padding:8px 5px}.live-clock{display:none}.admin-panel-menu{right:58px}}
@media (max-width:760px){.mobile-navigation{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}}
@media (max-width:760px){html{scroll-padding-bottom:82px}body{padding-bottom:74px;overflow-x:hidden}.page-shell{padding:0 16px;width:100%}.topbar{height:72px;position:sticky;top:0;z-index:40;margin:0 -16px;padding:0 16px;background:var(--paper);box-shadow:0 5px 18px rgba(13,59,52,.08)}.brand strong{font-size:14px}.brand small{font-size:10px}.top-actions{gap:8px}.live-clock,.semester-pill,.user-name,.user-menu>#dashboardSearchButton,.user-menu>#notificationButton,.user-menu>#profileButton,.user-menu>#adminJump{display:none!important}.user-avatar{width:38px;height:38px;flex-basis:38px}.user-menu #logoutButton{display:inline-flex;align-items:center;min-height:42px;padding:8px 4px;font-size:10px}.mobile-navigation{position:fixed;display:grid;grid-template-columns:repeat(5,1fr);left:0;right:0;bottom:0;z-index:95;min-height:70px;padding:6px max(6px,env(safe-area-inset-right)) calc(6px + env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left));background:#f6f4ed;border-top:1px solid var(--line);box-shadow:0 -8px 24px rgba(13,59,52,.12)}.mobile-navigation button{position:relative;display:grid;place-items:center;align-content:center;gap:2px;min-width:0;min-height:54px;padding:3px;border:0;background:transparent;color:#4b514e;font-size:10px;font-weight:700}.mobile-navigation button:active,.mobile-navigation button:focus-visible{background:#e3e7dd;color:var(--green);border-radius:10px}.mobile-navigation button>span{font-size:22px;line-height:1}.mobile-navigation i{position:absolute;top:3px;left:55%;display:grid;place-items:center;min-width:18px;height:18px;padding:0 4px;border-radius:99px;background:#b54834;color:#fff;font:700 9px Manrope,Arial,sans-serif}.hero{min-height:auto;display:block;padding:38px 0}.hero-copy{margin-bottom:30px}.hero h1{font-size:clamp(48px,15vw,66px);line-height:.97}.intro{font-size:16px;margin:22px 0}.hero-meta{font-size:12px}.next-card{padding:24px;border-radius:12px}.next-date{font-size:42px}.next-session-row strong{font-size:15px}.stats{grid-template-columns:repeat(2,1fr);margin:0 -16px;padding:0 16px}.stats>div,.stats>div+div{min-width:0;padding:18px 8px;border-bottom:1px solid var(--line)}.stats strong{font-size:22px}.attendance-summary{margin:0 -16px;padding-left:16px;padding-right:16px;overflow-x:auto}.announcements-section,.schedule-section,.planner-section,.calendar-section,.course-section{padding:56px 0}.section-heading{display:grid;gap:20px;margin-bottom:28px}.section-heading h2{font-size:clamp(38px,11vw,50px);line-height:1}.eyebrow{font-size:11px}.schedule-actions{justify-items:stretch}.schedule-toggle{min-height:48px;border-radius:8px}.filters{flex-wrap:nowrap;overflow-x:auto;padding-bottom:5px}.filter{flex:0 0 auto;min-height:42px;font-size:12px}.schedule-layout{display:block}.course-rail{display:grid;grid-template-columns:1fr;max-height:260px;overflow-y:auto;margin-bottom:22px}.rail-item{padding:15px}.month{grid-template-columns:1fr;gap:12px}.sessions{grid-template-columns:1fr}.session{min-height:0;padding:18px;border-radius:8px}.session .date{font-size:30px}.session-subject{font-size:17px}.plan-class{min-height:44px;font-size:12px}.planner-layout{display:block}.class-date-list{max-height:300px;margin-bottom:18px}.class-date-button{min-height:86px;border-radius:7px}.planner-panel{padding:20px 16px;margin:0 -4px;border-radius:10px}.planner-panel h3{font-size:29px}.item-form{grid-template-columns:1fr}.item-form textarea,.item-form button{grid-column:auto}.item-form input,.item-form select,.item-form textarea,.item-form button{min-height:48px;font-size:16px}.work-item{grid-template-columns:1fr;gap:8px;padding:17px 0}.work-item button{min-height:42px}.calendar-layout{display:block}.calendar-toolbar>div{grid-template-columns:repeat(3,1fr)}.calendar-toolbar button{min-height:44px}.calendar-months{grid-template-columns:1fr}.single-calendar{border-radius:10px}.single-calendar .calendar-day,.calendar-blank{min-height:58px}.appointment-panel{margin-top:22px;padding:22px 16px;border-radius:12px}.appointment-form>div{grid-template-columns:1fr}.appointment-form input,.appointment-form textarea,.appointment-form button{min-height:48px;font-size:16px}.course-grid,.announcement-preview-grid,.upcoming-grid{grid-template-columns:1fr}.course-card{min-height:0;padding:22px;border-radius:9px}.course-card h3{font-size:27px}.dialog-backdrop{align-items:end;padding:0}.utility-dialog,.reset-dialog,.note-viewer{width:100%;max-width:none;max-height:92dvh;border-radius:18px 18px 0 0;padding:22px 18px;padding-bottom:calc(22px + env(safe-area-inset-bottom));overflow-y:auto}.utility-dialog header,.note-viewer header{position:sticky;top:-22px;z-index:4;background:var(--paper);padding:14px 0}.utility-dialog header button,.note-viewer header button,.profile-close{min-width:44px;min-height:44px}.profile-dialog{width:100%;max-height:94dvh;border-radius:18px 18px 0 0;padding:22px 18px 0}.profile-grid{grid-template-columns:1fr}.profile-photo-preview{width:104px;height:104px}.photo-editor{padding:16px;border-radius:10px}.profile-actions{margin-left:-18px;margin-right:-18px;padding:12px 18px calc(12px + env(safe-area-inset-bottom))}.profile-actions button{min-height:46px;min-width:0;flex:1}.notification-panel{position:fixed;left:10px;right:10px;top:78px;width:auto;max-height:calc(100dvh - 160px);border-radius:12px;box-shadow:0 18px 45px rgba(13,59,52,.24)}.admin-panel-menu{position:fixed;left:10px;right:10px;top:auto;bottom:78px;width:auto;border-radius:12px}.admin-section{padding:38px 0}.admin-page-header{gap:14px;margin-bottom:24px}.admin-page-header>a{min-height:44px}.admin-tools{display:grid;grid-template-columns:1fr}.admin-tools input,.admin-tools select{min-width:0;width:100%;min-height:48px}.admin-summary{grid-template-columns:1fr 1fr}.admin-summary div{padding:16px}.admin-header-actions{display:grid;grid-template-columns:1fr;gap:8px;width:100%}.refresh-users{display:grid;place-items:center;min-height:44px}.user-table-wrap{max-height:65dvh;border:0;background:transparent}.user-table{min-width:0;display:block}.user-table thead{display:none}.user-table tbody,.user-table tr,.user-table td{display:block;width:100%}.user-table tr{margin-bottom:12px;padding:16px;background:#ebe9e0;border:1px solid var(--line);border-radius:10px}.user-table td{padding:7px 0;border:0}.user-table td:nth-child(2):before{content:'Role: ';font-weight:700}.user-table td:nth-child(3):before{content:'Status: ';font-weight:700}.user-table td:nth-child(4):before{content:'Last login: ';font-weight:700}.admin-actions button{min-height:42px;padding:9px 12px;font-size:12px}.attendance-admin-row>summary{grid-template-columns:auto 1fr;gap:9px}.attendance-admin-row>summary>span:last-child{grid-column:1/-1}.attendance-admin-detail{padding-left:0}.admin-announcement-row{padding:16px 0}.admin-announcement-row>button{width:100%;min-height:44px}.audit-tools{grid-template-columns:1fr}.auth-panel{padding:28px 22px;border-radius:12px}.auth-panel h2{font-size:36px}.auth-panel input,.auth-submit{min-height:50px;font-size:16px}footer{height:auto;padding:32px 0;gap:14px;padding-bottom:88px}}
.attendance-status.approved{background:#dce9d1;color:#315f28}.attendance-status.rejected{background:#efd4ce;color:#8a3327}.attendance-request-alert{border-left:3px solid var(--purple)}.request-history-row{background:#f5f3ec}.attendance-history-dialog>h4{font:700 16px Manrope,Arial,sans-serif;margin:22px 0 10px}.attendance-request-history{max-height:320px;overflow-y:auto;padding-right:5px}.attendance-request-card{border-left:4px solid var(--purple);background:#fff;border-bottom:1px solid var(--line);padding:14px;margin-bottom:8px}.attendance-request-card strong,.attendance-request-card small{display:block}.attendance-request-card strong{font-size:15px;margin:8px 0 3px}.attendance-request-card small{font-size:13px;color:var(--muted)}.attendance-request-card p{font-size:14px;line-height:1.6;margin:10px 0}.attendance-summary-grid .attendance-pending-link{display:block;width:100%;min-height:0;margin:0;border:0;border-right:1px solid var(--line);background:transparent;color:var(--muted);padding:5px 14px;text-align:left;font:500 12px Manrope,Arial,sans-serif;text-transform:uppercase}.attendance-summary-grid .attendance-pending-link strong{display:block;color:var(--ink);font:400 20px Georgia,serif}.attendance-summary-grid .attendance-pending-link:hover,.attendance-summary-grid .attendance-pending-link:focus{background:#dedbd1;color:var(--ink)}
@media(max-width:760px){.mobile-navigation{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}}
@media(max-width:760px) and (orientation:portrait){.notification-panel{display:flex;flex-direction:column;left:10px;right:10px;top:auto;bottom:78px;width:auto;max-height:calc(100dvh - 100px);padding:0;overflow:hidden;z-index:145;border-radius:16px 16px 10px 10px;box-shadow:0 -14px 42px rgba(13,59,52,.28)}.notification-panel[hidden]{display:none}.notification-panel header{position:sticky;top:0;z-index:2;flex:0 0 auto;margin:0;padding:16px 18px;background:var(--paper)}.notification-panel #notificationList{min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:0 14px 14px}.notification-panel .notification-item{min-height:72px;padding:14px 10px}.notification-panel .notification-settings{bottom:0;margin:0;padding:12px 4px;background:var(--paper)}}

/* v14 community */
.members-dialog{width:min(820px,calc(100vw - 32px))}.members-dialog>input{width:100%;min-height:50px;border:1px solid #aaa89f;background:#fff;padding:12px 14px;font-size:16px}.member-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-height:58vh;overflow-y:auto;scrollbar-gutter:stable;margin-top:16px;padding-right:6px}.member-card{display:grid;grid-template-columns:58px minmax(0,1fr);gap:14px;align-items:start;border:1px solid var(--line);background:#ebe9e0;padding:16px}.member-avatar{display:grid;place-items:center;width:58px;height:58px;border-radius:50%;overflow:hidden;background:var(--green);color:#d6f65a;font-size:20px}.member-avatar img{width:100%;height:100%;object-fit:cover}.member-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin:0;padding:0;border:0}.member-card header strong{font-size:16px}.member-card header span{border-radius:999px;background:#dce9d1;padding:4px 7px;color:#315f28;font-size:10px;font-weight:800;text-transform:uppercase}.member-card p,.member-card small{display:block;margin:7px 0 0;color:var(--muted);font-size:13px;line-height:1.45}.directory-sharing{border:1px solid var(--line);padding:16px}.directory-sharing>span{display:flex;align-items:center;gap:10px;font-weight:700}.directory-sharing input{width:auto!important;margin:0}.directory-sharing small{display:block;margin:8px 0 0 26px;color:var(--muted);font-weight:400;text-transform:none;line-height:1.45}
.announcement-viewer{width:min(760px,calc(100vw - 32px))}.announcement-comments{border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.announcement-comments>header{display:flex;justify-content:space-between;align-items:center;position:static!important;padding:0 0 12px!important}.announcement-comments h4{margin:0;font-size:18px}.announcement-comments>header span{color:var(--muted);font-size:13px}.announcement-comments>form{display:grid;grid-template-columns:1fr auto;gap:8px}.announcement-comments textarea,.inline-comment-form textarea{width:100%;min-height:78px;resize:vertical;border:1px solid #aaa89f;background:#fff;padding:11px;font:inherit}.announcement-comments button{border:1px solid #aaa89f;background:transparent;color:var(--ink);padding:9px 12px;font-weight:700;cursor:pointer}.announcement-comments>form button,.inline-comment-form button[type=submit]{background:var(--green);border-color:var(--green);color:#fff}.announcement-comment-list{max-height:480px;overflow-y:auto;scrollbar-gutter:stable;margin-top:16px;padding-right:6px}.announcement-comment{border-left:3px solid var(--green);background:#ebe9e0;margin-bottom:9px;padding:13px}.announcement-comment.reply{margin-left:40px;border-left-color:var(--purple);background:#f1efe7}.announcement-comment>header{display:flex;align-items:center;gap:10px;position:static!important;margin:0;padding:0!important;border:0!important}.announcement-comment>header>img,.announcement-comment>header>span{display:grid;place-items:center;width:36px;height:36px;flex:0 0 36px;border-radius:50%;object-fit:cover;background:var(--green);color:#d6f65a;font-weight:800}.announcement-comment header strong,.announcement-comment header small{display:block}.announcement-comment header small{color:var(--muted);font-size:11px;margin-top:2px}.announcement-comment>p{margin:12px 0;overflow-wrap:anywhere;line-height:1.55}.announcement-comment>footer{display:flex;justify-content:flex-end;gap:6px}.announcement-comment .danger{color:#a43c2c}.announcement-comment.is-deleted{border-left-color:#aaa89f;background:#f3f1ea}.deleted-comment{color:var(--muted);font-style:italic}.inline-comment-form{margin-top:12px}.inline-comment-form>div{display:flex;justify-content:flex-end;gap:7px;margin-top:7px}.comment-alert{border-left:3px solid var(--purple)}
@media(max-width:760px){.user-menu>#membersButton{display:none!important}.member-list{grid-template-columns:1fr;max-height:64dvh}.member-card{grid-template-columns:52px minmax(0,1fr);padding:14px}.member-avatar{width:52px;height:52px}.announcement-comments>form{grid-template-columns:1fr}.announcement-comments>form button{min-height:44px}.announcement-comment-list{max-height:52dvh}.announcement-comment.reply{margin-left:18px}.announcement-comment>footer{justify-content:flex-start;flex-wrap:wrap}}

/* v14.1 cleaner discussion experience */
.announcement-viewer{width:min(940px,calc(100vw - 36px));max-height:92vh;padding:0 30px 30px;overflow-y:auto;scrollbar-width:none}.announcement-viewer::-webkit-scrollbar,.announcement-viewer-content::-webkit-scrollbar,.announcement-comment-list::-webkit-scrollbar{width:0;height:0}.announcement-viewer>header{position:sticky!important;top:0;z-index:12;margin:0 -30px 18px!important;padding:24px 30px 18px!important;background:var(--paper);box-shadow:0 5px 14px rgba(13,59,52,.07)}.announcement-viewer-content{max-height:none;overflow:visible;padding:8px 2px 18px}.announcement-comment-list{max-height:none;overflow:visible;scrollbar-gutter:auto;padding-right:0}.announcement-comments>form,.inline-comment-form{position:relative}.announcement-comment{padding:16px 18px}.announcement-comment>header{justify-content:flex-start!important;align-items:center!important}.commenter-details{min-width:0;text-align:left}.commenter-details strong,.commenter-details small{display:block!important}.comment-copy{margin:13px 0 5px;line-height:1.65;overflow-wrap:anywhere}.comment-copy.is-clamped{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:4}.comment-expand,.reply-toggle{min-height:0!important;border:0!important;background:transparent!important;color:#5744ae!important;padding:5px 0!important;font-size:13px!important;text-decoration:underline}.reply-toggle{display:block;margin:8px 0 4px;font-weight:800!important}.comment-replies{margin-top:7px}.mention-suggestions{position:absolute;left:0;right:0;z-index:18;max-height:250px;overflow-y:auto;border:1px solid var(--line);background:#fff;box-shadow:0 12px 28px rgba(13,59,52,.2)}.mention-suggestions[hidden]{display:none}.mention-suggestions button{display:flex!important;justify-content:space-between;width:100%;border:0!important;border-bottom:1px solid var(--line)!important;background:#fff!important;color:var(--ink)!important;text-align:left}.mention-suggestions button:hover,.mention-suggestions button:focus{background:#e8e6dc!important}.mention-suggestions small{color:var(--muted)}.notification-item{position:relative;padding-right:44px}.notification-dismiss{position:absolute;right:8px;top:50%;display:grid!important;place-items:center;width:28px;height:28px;transform:translateY(-50%);border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--ink);font:700 18px/1 Arial,sans-serif!important;text-transform:none!important;cursor:pointer}.notification-dismiss:hover,.notification-dismiss:focus{background:#a43c2c;color:#fff}.comment-reports-panel{border-top:1px solid var(--line);margin-top:42px;padding-top:32px}.comment-report{border-left:4px solid #a43c2c;background:#ebe9e0;margin-bottom:10px;padding:16px}.comment-report>strong,.comment-report>small{display:block}.comment-report>strong{margin:9px 0 4px}.comment-report>small{color:var(--muted)}.comment-report>p{max-height:84px;overflow:hidden;margin:14px 0;line-height:1.55}.comment-report blockquote{border-left:3px solid var(--orange);margin:10px 0;padding:8px 12px;background:#f7f5ef}.comment-report>div{display:flex;justify-content:flex-end;gap:8px}.comment-report button{border:1px solid var(--line);background:transparent;padding:9px 12px;font-weight:700}.comment-report .danger{color:#a43c2c}
@media(max-width:760px){.announcement-viewer{width:100%;max-height:94dvh;padding:0 18px calc(24px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0}.announcement-viewer>header{top:0;margin:0 -18px 14px!important;padding:16px 18px 13px!important}.announcement-comment{padding:14px}.announcement-comment.reply{margin-left:14px}.commenter-details small{font-size:10px}.mention-suggestions button{min-height:48px}.comment-report>div{justify-content:stretch;flex-direction:column}.comment-report button{width:100%;min-height:44px}}

/* v14.2 reactions */
.reaction-bar{position:relative;display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:11px 0}.announcement-reaction-bar{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0;margin:18px 0 4px}.reaction-chip,.reaction-add{min-height:32px!important;border:1px solid #bbb9b0!important;border-radius:999px;background:#f7f5ef!important;color:var(--ink)!important;padding:5px 10px!important;font-size:13px!important}.reaction-chip.mine{border-color:var(--green)!important;background:#dce9d1!important;color:#315f28!important}.reaction-chip span{font-weight:800}.reaction-add{font-weight:700}.reaction-picker{position:absolute;left:0;top:calc(100% + 5px);z-index:22;display:flex;gap:3px;border:1px solid var(--line);border-radius:12px;background:#fff;padding:7px;box-shadow:0 12px 26px rgba(13,59,52,.2)}.reaction-picker[hidden],.reaction-people[hidden]{display:none}.reaction-picker button{display:grid;place-items:center;width:42px;height:42px;min-height:42px!important;border:0!important;border-radius:8px;background:transparent!important;padding:0!important;font-size:22px!important}.reaction-picker button:hover,.reaction-picker button:focus{background:#e8e6dc!important;transform:translateY(-1px)}.reaction-people{flex-basis:100%;display:grid;gap:3px;border-left:3px solid var(--purple);background:#f7f5ef;padding:9px 11px;font-size:12px}.reaction-people strong{font-size:12px}.reaction-people span{color:var(--muted);line-height:1.45}.reaction-alert{border-left:3px solid #d25f75}.reaction-highlight{animation:reaction-highlight 1.8s ease}@keyframes reaction-highlight{0%,100%{box-shadow:none}30%{box-shadow:0 0 0 4px rgba(214,246,90,.75)}}
@media(max-width:760px){.reaction-bar{gap:5px}.reaction-chip,.reaction-add{min-height:36px!important}.reaction-picker{position:fixed;left:50%;top:auto;bottom:86px;transform:translateX(-50%);z-index:170;padding:9px}.reaction-picker button{width:46px;height:46px}}
.reaction-alert small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* v14.3 announcement header and social-style composer */
.announcement-viewer>header{position:sticky!important;top:0;min-height:128px;margin:0 -30px 22px!important;padding:24px 78px 20px 30px!important;border:0!important;background:linear-gradient(135deg,#0d3b34,#145247)!important;color:#fff;box-shadow:0 8px 22px rgba(13,59,52,.2)}.announcement-viewer>header h3{max-width:780px;color:#fff;font-size:clamp(30px,3.2vw,43px);line-height:1.08}.announcement-viewer>header small{color:#d8e6e1;font-size:13px}.announcement-viewer>header>button{position:absolute;top:18px;right:18px;display:grid;place-items:center;width:42px;height:42px;min-height:42px;border:1px solid rgba(255,255,255,.4);border-radius:50%;color:#fff;font-size:25px}.announcement-viewer>header>button:hover,.announcement-viewer>header>button:focus-visible{background:#fff;color:var(--green);border-color:#fff}.announcement-viewer>header .announcement-priority{margin-bottom:8px}.social-comment-composer{display:grid!important;grid-template-columns:46px minmax(0,1fr)!important;align-items:center!important;gap:10px!important}.social-comment-avatar{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;overflow:hidden;background:var(--green);color:#d6f65a;font-weight:800}.social-comment-avatar img{width:100%;height:100%;object-fit:cover}.social-comment-field{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;min-height:52px;border:1px solid #d6d8dc;border-radius:28px;background:#f0f2f5;padding:4px 5px 4px 16px}.social-comment-field textarea{min-height:42px!important;max-height:130px;border:0!important;background:transparent!important;padding:9px 4px!important;resize:none!important;outline:0}.social-comment-field>button[type=submit]{min-height:42px!important;border:0!important;border-radius:22px!important;padding:8px 16px!important}.social-reaction-bar{min-height:42px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:12px 0 8px;padding:5px 0}.announcement-reaction-bar.social-reaction-bar{margin:18px 0 6px}.reaction-summary{display:flex;align-items:center;gap:6px;min-height:32px!important;border:0!important;background:transparent!important;color:var(--muted)!important;padding:4px 8px 4px 2px!important}.reaction-summary b{font-size:13px}.reaction-stack{display:flex}.reaction-stack i{display:grid;place-items:center;width:24px;height:24px;margin-left:-5px;border:2px solid var(--paper);border-radius:50%;background:#fff;font-style:normal;font-size:14px}.reaction-stack i:first-child{margin-left:0}.social-reaction-bar .reaction-add{margin-left:auto;min-width:96px;border:0!important;border-radius:7px!important;background:transparent!important;font-weight:800}.social-reaction-bar .reaction-add:hover,.social-reaction-bar .reaction-add:focus-visible{background:#e8e6dc!important}.social-reaction-bar .reaction-add.mine{color:#315f28!important}.reaction-people>div{display:grid;grid-template-columns:120px 1fr;gap:10px;padding:4px 0}.reaction-picker{left:auto;right:0;border-radius:24px;padding:6px 9px}.announcement-comment .social-reaction-bar{margin-top:12px}
@media(max-width:760px){.announcement-viewer>header{min-height:108px;margin:0 -18px 16px!important;padding:18px 62px 16px 18px!important}.announcement-viewer>header h3{font-size:clamp(25px,7.7vw,34px)}.announcement-viewer>header>button{top:12px;right:12px}.social-comment-composer{grid-template-columns:40px minmax(0,1fr)!important}.social-comment-avatar{width:40px;height:40px}.social-comment-field{padding-left:12px}.social-comment-field>button[type=submit]{padding:7px 12px!important;font-size:12px!important}.reaction-people>div{grid-template-columns:1fr}.social-reaction-bar .reaction-add{min-width:82px}}

/* v14.4 — consistent deep-green context headers for notes, utilities and calendar. */
.note-viewer:not(.announcement-viewer)>header,
#searchDialog .utility-dialog>header,
#dayDialog .utility-dialog>header,
#appointmentViewer .utility-dialog>header,
.members-dialog>header,
.attendance-history-dialog>header,
.profile-color-header{
  position:sticky;top:0;z-index:12;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;
  margin:-30px -30px 22px!important;padding:22px 72px 19px 30px!important;border:0!important;
  background:linear-gradient(135deg,#0b3d34 0%,#125247 100%);color:#fff;
  box-shadow:0 10px 24px rgba(6,31,27,.18)
}
#searchDialog .utility-dialog>header,#dayDialog .utility-dialog>header,#appointmentViewer .utility-dialog>header,.members-dialog>header,.attendance-history-dialog>header{margin:-28px -28px 20px!important;padding-left:28px!important}
.profile-color-header{margin:-32px -32px 24px!important;padding-left:32px!important}
.note-viewer:not(.announcement-viewer)>header h3,
#searchDialog .utility-dialog>header h3,#dayDialog .utility-dialog>header h3,#appointmentViewer .utility-dialog>header h3,.members-dialog>header h3,.attendance-history-dialog>header h3,.profile-color-header h3{color:#fff}
.note-viewer:not(.announcement-viewer)>header .eyebrow,
#searchDialog .utility-dialog>header .eyebrow,#dayDialog .utility-dialog>header .eyebrow,#appointmentViewer .utility-dialog>header .eyebrow,.members-dialog>header .eyebrow,.attendance-history-dialog>header .eyebrow,.profile-color-header .eyebrow{color:#d6f65a}
.note-viewer:not(.announcement-viewer)>header small,
#searchDialog .utility-dialog>header small,#dayDialog .utility-dialog>header small,#appointmentViewer .utility-dialog>header small,.members-dialog>header small,.attendance-history-dialog>header small,.profile-color-header small{color:#d6e4df}
.note-viewer:not(.announcement-viewer)>header>button,
#searchDialog .utility-dialog>header>button,#dayDialog .utility-dialog>header>button,#appointmentViewer .utility-dialog>header>button,.members-dialog>header>button,.attendance-history-dialog>header>button,.profile-color-header>.profile-close{
  position:absolute;top:16px;right:18px;display:grid;place-items:center;width:40px;height:40px;min-height:40px;
  padding:0;border:1px solid rgba(255,255,255,.42);border-radius:50%;background:rgba(255,255,255,.08);color:#fff;font-size:24px;line-height:1;cursor:pointer
}
.note-viewer:not(.announcement-viewer)>header>button:hover,
#searchDialog .utility-dialog>header>button:hover,#dayDialog .utility-dialog>header>button:hover,#appointmentViewer .utility-dialog>header>button:hover,.members-dialog>header>button:hover,.attendance-history-dialog>header>button:hover,.profile-color-header>.profile-close:hover{background:#fff;color:#0b3d34}
.calendar-toolbar{padding:14px 16px;border:0;border-radius:5px 5px 0 0;background:linear-gradient(135deg,#0b3d34,#125247);color:#fff;box-shadow:0 9px 22px rgba(6,31,27,.14)}
.calendar-toolbar label{color:#fff}.calendar-toolbar button{border-color:rgba(255,255,255,.42);background:rgba(255,255,255,.08);color:#fff}.calendar-toolbar button:hover,.calendar-toolbar button:focus{background:#fff;color:#0b3d34}.calendar-toolbar input{border-color:rgba(255,255,255,.5);background:#fff;color:var(--ink)}
.single-calendar{overflow:hidden}.single-calendar h3{margin:-24px -24px 20px;padding:18px 24px;background:#0b3d34;color:#fff;font-size:28px}.calendar-day.is-selected{background:#0b3d34;color:#fff;box-shadow:inset 0 0 0 2px #d6f65a}.calendar-day.is-selected span,.calendar-day.is-selected i{color:#fff}.calendar-day.is-selected .calendar-count{background:#d6f65a;color:#0b3d34}.calendar-day.is-selected.is-today span:after{color:#d6f65a}
@media(max-width:700px){
  .note-viewer:not(.announcement-viewer)>header{margin:-22px -18px 18px!important;padding:18px 60px 16px 18px!important}
  #searchDialog .utility-dialog>header,#dayDialog .utility-dialog>header,#appointmentViewer .utility-dialog>header,.members-dialog>header,.attendance-history-dialog>header{margin:-22px -16px 18px!important;padding:18px 60px 16px 16px!important}
  .profile-color-header{margin:-32px -32px 22px!important;padding:18px 60px 16px 20px!important}
  .note-viewer:not(.announcement-viewer)>header>button,#searchDialog .utility-dialog>header>button,#dayDialog .utility-dialog>header>button,#appointmentViewer .utility-dialog>header>button,.members-dialog>header>button,.attendance-history-dialog>header>button,.profile-color-header>.profile-close{top:12px;right:12px}
  .single-calendar h3{margin:-14px -14px 15px;padding:15px 14px;font-size:24px}
}

/* v15.1 — balanced Evergreen surfaces: green as an accent, not a canvas. */
.topbar{
  color:var(--ink);background:rgba(246,244,238,.97);box-shadow:0 1px 0 var(--line),0 10px 28px rgba(14,75,66,.08)
}
.topbar:before{background:rgba(246,244,238,.97);box-shadow:0 1px 0 var(--line),0 10px 28px rgba(14,75,66,.08)}
.brand,.brand strong,.topbar .live-clock strong,.topbar .user-name{color:var(--ink)}
.brand small,.topbar .live-clock span{color:var(--muted)}
.topbar .live-clock{border-color:var(--line)}
.topbar .user-menu button{color:#4b514e}
.topbar .user-menu button:hover,.topbar .user-menu button:focus-visible{background:var(--sage);color:var(--green)}
.topbar .semester-pill{border-color:#d4d5d1;color:var(--ink);background:#fff}
.topbar .semester-pill span{background:var(--accent)}
.topbar .user-avatar{background:var(--green);color:#d6f65a}
.attendance-summary{
  background:#fff;color:var(--ink);border:1px solid var(--line);border-left:4px solid var(--green);border-radius:14px;box-shadow:var(--card-shadow)
}
.attendance-summary .eyebrow,.attendance-summary>div:first-child>small,.attendance-summary-grid span{color:var(--muted)}
.attendance-summary>div:first-child>strong,.attendance-summary-grid strong{color:var(--green)}
.attendance-summary-grid span{border-color:var(--line)}
.attendance-summary button{border-color:#d9d9d9;background:#fff;color:var(--ink)}
.attendance-summary button:hover,.attendance-summary button:focus-visible{background:var(--sage);border-color:#c8d6c0;color:var(--green)}
.calendar-toolbar{
  background:#fff;background-image:none;color:var(--ink);border:1px solid var(--line);border-top:4px solid var(--green);border-radius:14px 14px 0 0;box-shadow:0 4px 16px rgba(0,0,0,.05)
}
.calendar-toolbar label{color:var(--ink)}
.calendar-toolbar button{border-color:#d9d9d9;background:#fff;color:var(--ink)}
.calendar-toolbar button:hover,.calendar-toolbar button:focus{background:var(--sage);border-color:#c8d6c0;color:var(--green)}
.single-calendar{border:1px solid var(--line);border-top:4px solid var(--green);box-shadow:0 4px 16px rgba(0,0,0,.05)}
.single-calendar h3{
  background:#fff;background-image:none;color:var(--ink);border-bottom:1px solid var(--line);box-shadow:0 5px 14px rgba(14,75,66,.05)
}
.calendar-day.is-selected{background:var(--green);color:#fff;box-shadow:inset 0 0 0 2px #8fc3a3,0 4px 12px rgba(14,75,66,.14)}
.mobile-navigation{background:#fff;border-top:1px solid var(--line);box-shadow:0 -8px 24px rgba(14,75,66,.1)}
.mobile-navigation button{color:#4b514e}
.mobile-navigation button:active,.mobile-navigation button:focus-visible{background:var(--sage);color:var(--green)}
@media(max-width:760px){.topbar{background:rgba(246,244,238,.98)!important}.topbar:before{background:rgba(246,244,238,.98)!important}}

/* v17.9 Semester Workspace refinement. */
.legacy-schedule{display:none!important}
.workspace-heading{align-items:flex-end;gap:24px}.workspace-filters{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.workspace-filters .filter{white-space:nowrap}
.planner-layout{align-items:stretch;grid-template-columns:minmax(270px,330px) minmax(0,1fr)}
.class-date-list,.planner-panel{height:760px;max-height:760px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none}
.class-date-list::-webkit-scrollbar,.planner-panel::-webkit-scrollbar,.class-notes-list::-webkit-scrollbar{width:0;height:0;display:none}
.class-date-button{display:grid;grid-template-columns:62px 72px minmax(0,1fr);grid-template-areas:'date code title' 'time time time';align-items:center;gap:4px 8px;min-height:82px;padding:12px 14px;text-align:left}
.class-date-button .workspace-date{grid-area:date}.class-date-button strong{grid-area:code}.class-date-button small{grid-area:title;line-height:1.25}.class-date-button time{grid-area:time;color:var(--muted);font-size:12px;padding-top:5px}.class-date-button.active time{color:rgba(255,255,255,.78)}
.planner-panel{padding:28px}.class-notes-list{height:250px;max-height:250px;overflow-y:auto;overscroll-behavior:contain}
.compact-note-card{display:block;min-height:118px;padding:16px 18px;cursor:pointer;background:#fff;border:1px solid var(--line);border-left:4px solid var(--green);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.compact-note-card:hover,.compact-note-card:focus-visible{transform:translateY(-1px);box-shadow:0 8px 22px rgba(14,75,66,.09);border-color:#c8d6c0;outline:none}
.compact-note-card h4{color:var(--green);margin:6px 0 8px;font-size:17px}.compact-note-card time{color:var(--muted);font-size:12px}.compact-note-card .saved-note-preview{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;max-height:3.2em;line-height:1.6;color:#4b514e}
#viewerDeleteNote{color:var(--danger);margin-left:auto}
.attendance-panel{padding:16px 18px}.attendance-times{min-height:auto}.attendance-times>span{padding:8px 0;color:var(--muted)}
#checkInButton:disabled{opacity:.55}.attendance-summary-grid.simplified{grid-template-columns:repeat(4,minmax(80px,1fr))}
@media(max-width:900px){.workspace-heading{align-items:flex-start;flex-direction:column}.workspace-filters{justify-content:flex-start;flex-wrap:nowrap;max-width:100%;overflow-x:auto;scrollbar-width:none}.workspace-filters::-webkit-scrollbar{display:none}.planner-layout{grid-template-columns:1fr}.class-date-list{height:330px;max-height:330px}.planner-panel{height:min(760px,78dvh);max-height:min(760px,78dvh)}}
@media(max-width:600px){.planner-panel{padding:20px 16px}.class-date-button{grid-template-columns:58px 68px minmax(0,1fr)}.hero-meta{flex-wrap:wrap;row-gap:8px}.class-notes-list{height:230px;max-height:230px}}

/* v17.9.1 smoother workspace scrolling and compact notes. */
.workspace-heading{display:block}.workspace-navigation{min-width:0}
.workspace-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:0 0 10px;overflow:visible;max-width:none}
.workspace-filters .filter{width:100%;min-width:0;padding:9px 7px;text-align:center}
.class-date-list{height:760px;max-height:760px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#8a928e #edf0ed;padding-right:7px}
.class-date-list::-webkit-scrollbar{display:block;width:8px}.class-date-list::-webkit-scrollbar-track{background:#edf0ed;border-radius:99px}.class-date-list::-webkit-scrollbar-thumb{background:#8a928e;border-radius:99px;border:2px solid #edf0ed}.class-date-list::-webkit-scrollbar-thumb:hover{background:var(--green)}
.planner-panel{height:auto;max-height:none;overflow:visible;overscroll-behavior:auto}
.class-date-button{min-height:96px;height:auto;padding:12px 14px 13px;grid-template-areas:'date code title' 'time time time';align-content:center}
.class-date-button time{display:block;line-height:1.35;white-space:normal;overflow:visible;padding-top:8px}
.attendance-panel{margin-top:18px;padding:14px 18px}.attendance-panel-head{margin-bottom:4px}.attendance-times{margin:0}.attendance-actions{margin-top:6px}
.class-notes-list{height:auto;max-height:none;overflow:visible}
.class-notes-list.has-note-scroll{height:188px;max-height:188px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#8a928e #edf0ed;padding-right:6px}
.class-notes-list.has-note-scroll::-webkit-scrollbar{display:block;width:7px}.class-notes-list.has-note-scroll::-webkit-scrollbar-track{background:#edf0ed;border-radius:99px}.class-notes-list.has-note-scroll::-webkit-scrollbar-thumb{background:#8a928e;border-radius:99px}
.compact-note-card{min-height:82px;padding:12px 15px;margin-bottom:7px;display:grid;grid-template-columns:minmax(0,1fr);align-content:center}
.compact-note-card time{font-size:11px}.compact-note-card h4{margin:3px 0 3px;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compact-note-card .saved-note-preview{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-height:none;line-height:1.35;font-size:14px}
@media(max-width:900px){.workspace-filters{display:flex;overflow-x:auto;scrollbar-width:none;margin-bottom:10px}.workspace-filters .filter{width:auto;min-width:82px}.class-date-list{height:340px;max-height:340px}.planner-panel{height:auto;max-height:none;overflow:visible}.class-notes-list.has-note-scroll{height:180px;max-height:180px}}
@media(max-width:600px){.class-date-button{min-height:100px;padding-bottom:14px}.class-date-list{height:320px;max-height:320px}.compact-note-card{min-height:78px}.attendance-panel{padding:13px 14px}}

/* v17.9.2 restore note text and tighten the class composer. */
.compact-note-card{
  display:grid!important;grid-template-columns:minmax(0,1fr)!important;grid-template-rows:auto auto auto!important;
  gap:0!important;height:auto!important;min-height:84px!important;overflow:visible!important;padding:11px 14px!important
}
.compact-note-card time{display:block!important;position:static!important;visibility:visible!important;opacity:1!important;line-height:1.2!important}
.compact-note-card h4{display:block!important;position:static!important;visibility:visible!important;opacity:1!important;color:var(--green)!important;line-height:1.25!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;margin:4px 0 3px!important}
.compact-note-card .saved-note-preview{display:block!important;position:static!important;visibility:visible!important;opacity:1!important;color:#4b514e!important;line-height:1.3!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;max-height:1.3em!important}
.planner-panel #plannerHeading h3{margin-bottom:10px}.planner-panel .planner-meta{margin-bottom:12px}
.planner-panel .attendance-panel{margin:12px 0 15px!important;padding:11px 14px!important}.planner-panel .attendance-panel-head{margin:0!important}.planner-panel .attendance-status{margin-top:3px;padding:4px 8px}.planner-panel .attendance-times>span{padding:5px 0!important;line-height:1.35}.planner-panel .attendance-actions{margin-top:3px!important}.planner-panel .attendance-actions button{min-height:36px;padding:7px 10px}
.planner-panel .planner-label{margin-bottom:5px}.planner-panel .class-note-title{min-height:42px!important;padding:10px 12px!important;margin-bottom:7px!important}.planner-panel #sessionNote{min-height:76px!important;height:76px!important;padding:10px 12px!important}.planner-panel .class-note-composer-actions{margin-top:7px!important}.planner-panel .saved-notes-heading{margin-top:15px!important;padding-top:14px!important}.planner-panel .class-notes-list{margin-top:8px!important}
@media(max-width:600px){.compact-note-card{min-height:80px!important}.planner-panel #sessionNote{min-height:72px!important;height:72px!important}.planner-panel .attendance-panel{padding:10px 12px!important}}

/* v17.9.3 formatted one-line previews must not inherit paragraph spacing. */
.compact-note-card .saved-note-preview p,
.compact-note-card .saved-note-preview div,
.compact-note-card .saved-note-preview ul,
.compact-note-card .saved-note-preview ol,
.compact-note-card .saved-note-preview li{
  display:inline!important;margin:0!important;padding:0!important;line-height:1.3!important
}
.compact-note-card .saved-note-preview br{display:none!important}
.compact-note-card .saved-note-preview:empty:after{content:'No preview available';color:#8a928e;font-style:italic}

/* v16.1 — clearer lesson selection, deliberate uploads, sticky admin context */
.class-date-button:not(.active){background:#fff;border-top:1px solid #e6e9e7;border-right:1px solid #e6e9e7;border-bottom:1px solid #e6e9e7;border-radius:10px;box-shadow:0 3px 12px rgba(14,75,66,.045)}
.class-date-button:not(.active):hover,.class-date-button:not(.active):focus-visible{background:#eef4ef;color:var(--ink);transform:translateY(-1px);box-shadow:0 7px 18px rgba(14,75,66,.08)}
.class-date-button.active{border-radius:10px;box-shadow:0 7px 18px rgba(14,75,66,.14)}
.visually-hidden-file{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.file-picker-row{display:flex;align-items:center;gap:12px;max-width:100%;margin-top:9px;padding:8px;border:1px solid #cfd7d2;border-radius:12px;background:#fff;cursor:default}
.file-picker-button{flex:0 0 auto;min-height:42px;padding:9px 16px;border:1px solid #cfd7d2;border-radius:10px;background:#fff;color:var(--green);font-weight:750;cursor:pointer;box-shadow:0 2px 7px rgba(14,75,66,.05)}
.file-picker-button:hover,.file-picker-button:focus-visible{background:#eef4ef;border-color:#2e7d5b;box-shadow:0 0 0 4px rgba(46,125,91,.12)}
.file-picker-filename{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:14px;text-transform:none;pointer-events:none}.file-picker-label{cursor:default!important}
.photo-editor>label,.profile-photo-controls{flex:1;min-width:0;margin:0!important}
.profile-photo-controls>strong,.profile-photo-controls>small{display:block}.profile-photo-controls>strong{font:700 13px DM Mono,monospace;text-transform:uppercase}.profile-photo-controls>small{margin-top:4px;color:var(--muted);font-size:12px}
body.admin-route .topbar{position:sticky;top:0;z-index:70;background:rgba(255,255,255,.97);backdrop-filter:blur(12px)}
body.admin-route .admin-page-header{position:sticky;top:96px;z-index:60;min-height:112px;margin:0 -48px 34px;padding:18px 48px;background:rgba(242,244,241,.97);backdrop-filter:blur(12px);border-bottom:1px solid #dfe5e1;box-shadow:0 8px 20px rgba(14,75,66,.08)}
.admin-page-header>div{display:grid;justify-items:end}.admin-page-sections{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:5px;margin-top:8px}.admin-page-sections button{min-height:32px;padding:6px 10px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:12px;font-weight:700;cursor:pointer}.admin-page-sections button:hover,.admin-page-sections button:focus-visible,.admin-page-sections button.active{background:#dde8dd;color:var(--green)}
@media(max-width:760px){.file-picker-row{align-items:flex-start;flex-direction:column;gap:7px}.file-picker-filename{width:100%}body.admin-route .admin-page-header{top:72px;min-height:0;margin:0 -16px 24px;padding:11px 16px;align-items:center;flex-direction:row}.admin-page-header>a{flex:0 0 auto;padding:8px 10px;font-size:12px}.admin-page-header>div{min-width:0;justify-items:end}.admin-page-header p{display:none}.admin-page-header strong{font-size:22px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:54vw}.admin-page-sections{display:none}}

/* v16.3 — announcement review tools and simplified attendance */
.selected-announcement-files{display:grid;gap:7px;margin-top:9px}.selected-announcement-files>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:#fff}.selected-announcement-files span,.selected-announcement-files strong,.selected-announcement-files small{display:block;min-width:0}.selected-announcement-files strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.selected-announcement-files small{color:var(--muted);font-size:11px}.selected-announcement-files button{flex:0 0 32px;width:32px;height:32px;min-height:32px;border:1px solid #e2cbc6;border-radius:50%;background:#fff;color:#a54432;font-size:19px;cursor:pointer}.selected-announcement-files button:hover,.selected-announcement-files button:focus-visible{background:#fff0ed;border-color:#a54432}.announcement-form>footer{display:flex;justify-content:flex-end;gap:9px}.secondary-announcement-action{border:1px solid #cfd7d2!important;background:#fff!important;color:var(--green)!important}.secondary-announcement-action:hover,.secondary-announcement-action:focus-visible{background:#eef4ef!important}.announcement-preview-dialog{width:min(900px,94vw)}.preview-attachments{display:grid;gap:7px;margin:18px 0;padding:15px;border:1px solid var(--line);border-radius:12px;background:#f7faf7}.preview-attachments>div{display:flex;justify-content:space-between;gap:15px;padding-top:7px;border-top:1px solid var(--line)}.preview-attachments small{color:var(--muted)}.attendance-summary-grid.simplified{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:760px){.announcement-form>footer{display:grid;grid-template-columns:1fr}.announcement-form>footer button{width:100%}.attendance-summary-grid.simplified{grid-template-columns:repeat(4,minmax(92px,1fr))}}

/* v16.4 — keep reaction controls visible and attachment removal compact */
.announcement-comment{position:relative}.announcement-comment .reaction-picker{left:0;right:auto;z-index:40;max-width:min(300px,calc(100vw - 72px));flex-wrap:nowrap}.announcement-comments,.announcement-comment-list{overflow-x:visible!important}.announcement-viewer{overflow-x:hidden}
.selected-announcement-files{justify-items:start}.selected-announcement-files>div{display:inline-flex;width:auto;max-width:100%;justify-content:flex-start;padding:7px 8px 7px 12px}.selected-announcement-files>div>span{display:flex;align-items:center;gap:8px;max-width:min(560px,calc(100vw - 190px))}.selected-announcement-files strong{max-width:430px}.selected-announcement-files small{flex:0 0 auto}.selected-announcement-files button{margin-left:3px}
@media(max-width:760px){.announcement-comment .reaction-picker{position:fixed;left:50%;right:auto;max-width:calc(100vw - 24px);transform:translateX(-50%)}.selected-announcement-files>div{width:100%}.selected-announcement-files>div>span{max-width:calc(100% - 44px)}.selected-announcement-files strong{max-width:calc(100vw - 180px)}}

/* v16.5 — refined queued attachment rows */
.announcement-attachment-field .file-picker-row.has-files{display:inline-flex;width:auto;min-width:0}.selected-announcement-files{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.selected-announcement-files>div{display:inline-flex;align-items:center;gap:7px;width:auto;max-width:100%;min-height:38px;padding:7px 8px 7px 10px;border:1px solid #dfe5e1;border-radius:9px;background:#fff;box-shadow:0 2px 7px rgba(14,75,66,.04)}.selected-announcement-files .attachment-paperclip{flex:0 0 auto;font-size:15px;line-height:1}.selected-announcement-files strong{max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.selected-announcement-files small{flex:0 0 auto;color:var(--muted);font-size:11px}.selected-announcement-files button{display:grid;place-items:center;flex:0 0 28px;width:28px;height:28px;min-height:28px;margin-left:2px;padding:0;border:0;border-radius:6px;background:transparent;color:#7b817e;font:700 19px/1 Arial,sans-serif;cursor:pointer}.selected-announcement-files button:hover,.selected-announcement-files button:focus-visible{border:0;background:#fff0ed;color:#b33f2d;box-shadow:none}@media(max-width:760px){.selected-announcement-files{display:grid}.selected-announcement-files>div{width:100%}.selected-announcement-files strong{max-width:calc(100vw - 190px)}}

/* v16.0 final cascade. */
body{background:#f2f4f1}
.planner-panel,.course-card,.session,.announcement-card,.single-calendar,.attendance-panel,.member-card,.user-table-wrap,.announcement-form{background:#fff}
.calendar-browser{overflow:visible}.single-calendar{position:relative;overflow:visible;margin-top:24px;border:1px solid var(--line);border-top:5px solid var(--green);border-radius:18px 18px 20px 20px;box-shadow:0 14px 28px rgba(20,40,34,.1)}
.single-calendar:before,.single-calendar:after{content:"";position:absolute;z-index:3;top:-24px;width:24px;height:43px;border:6px solid #fff;border-radius:14px;background:var(--green);box-shadow:0 5px 8px rgba(20,40,34,.16)}.single-calendar:before{left:18%}.single-calendar:after{right:18%}
.single-calendar h3{display:flex;align-items:center;justify-content:space-between;min-height:88px;margin:-24px -24px 18px;padding:28px 30px 18px;border-radius:14px 14px 0 0;background:#fff;background-image:none;color:var(--ink);border-bottom:1px solid var(--line);box-shadow:0 5px 14px rgba(14,75,66,.05)}.single-calendar h3 span{font:700 27px Merriweather,Georgia,serif}.single-calendar h3 strong{font:700 27px Inter,Arial,sans-serif;color:var(--green)}
@media(max-width:760px){.single-calendar:before,.single-calendar:after{width:18px;height:35px;top:-20px;border-width:4px}.single-calendar h3{min-height:72px;margin:-14px -14px 14px;padding:23px 17px 14px}.single-calendar h3 span,.single-calendar h3 strong{font-size:21px}}

/* v16.0 — compact discussions, planner calendar and announcement publishing. */
body{background:#f2f4f1}.topbar,.topbar:before{background:rgba(255,255,255,.97)!important}
.planner-panel,.course-card,.session,.announcement-card,.single-calendar,.attendance-panel,.member-card,.user-table-wrap,.announcement-form{background:#fff}
.announcement-comment{margin:0;padding:13px 14px;border:0;border-left:2px solid var(--green);border-bottom:1px solid #ececec;border-radius:0;background:#fff;box-shadow:none}
.announcement-comment.reply{margin-left:28px;padding:11px 12px;border-left:2px solid #a9c8b4;background:#fff}
.announcement-comment>header>img,.announcement-comment>header>span{width:34px;height:34px;flex-basis:34px}
.announcement-comment>header{gap:9px}.commenter-details strong{font-size:14px}.commenter-details small{font-size:10px}
.comment-copy{margin:9px 0 3px;font-size:14px;line-height:1.5}.comment-copy.is-clamped{-webkit-line-clamp:3}
.announcement-comment>.social-reaction-bar{float:left;width:auto;min-height:34px;margin:3px 0 0;padding:0;border:0}.announcement-comment>footer{min-height:36px;align-items:center;padding:3px 0;border:0;gap:3px}
.announcement-comment>footer button,.announcement-comment .reaction-add{min-height:32px;padding:5px 8px;border:0;background:transparent;font-size:12px}.announcement-comment>footer button:hover,.announcement-comment .reaction-add:hover{background:var(--sage)!important}
.announcement-comment [data-v141-action=report],.comment-reports-panel{display:none!important}.comment-replies{clear:both;margin-top:4px}.reply-toggle{clear:both;margin:5px 0!important}
.announcement-comment-list{margin-top:10px}.announcement-comments>header{margin-bottom:7px}.social-comment-composer{margin-bottom:8px}
.announcement-control-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.announcement-message-field,.announcement-attachment-field{display:block;margin-bottom:10px}.announcement-message-field>small,.announcement-attachment-field>small,.announcement-attachment-field>span{display:block;margin:5px 0;color:var(--muted);font-size:12px;text-transform:none}.announcement-attachment-field input{margin-top:7px;padding:9px}.announcement-subject-badge,.announcement-context span{display:inline-flex;margin-left:7px;border-radius:999px;background:#eaf7ea;color:#2e7d32;padding:4px 8px;font-size:11px;font-weight:700;text-transform:uppercase}.announcement-context{display:flex;gap:6px;margin:0 0 10px}.announcement-context span{margin:0}.announcement-attachments{display:grid;gap:7px;margin:12px 0 18px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#f7f8f6}.announcement-attachments>strong{font-size:13px}.announcement-attachments>div{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}.announcement-attachments a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.announcement-attachments small{color:var(--muted)}.announcement-attachments button{width:32px;height:32px;min-height:32px;border:0;border-radius:50%;background:#fff;color:var(--danger)}
.calendar-browser{overflow:visible}.single-calendar{position:relative;overflow:visible;margin-top:24px;border:1px solid var(--line);border-top:5px solid var(--green);border-radius:18px 18px 20px 20px;box-shadow:0 14px 28px rgba(20,40,34,.1)}
.single-calendar:before,.single-calendar:after{content:"";position:absolute;z-index:3;top:-24px;width:24px;height:43px;border:6px solid #fff;border-radius:14px;background:var(--green);box-shadow:0 5px 8px rgba(20,40,34,.16)}.single-calendar:before{left:18%}.single-calendar:after{right:18%}
.single-calendar h3{display:flex;align-items:center;justify-content:space-between;min-height:88px;margin:-24px -24px 18px;padding:28px 30px 18px;border-radius:14px 14px 0 0;background:#fff;color:var(--ink);box-shadow:0 5px 14px rgba(14,75,66,.05)}.single-calendar h3 span{font:700 27px Merriweather,Georgia,serif}.single-calendar h3 strong{font:700 27px Inter,Arial,sans-serif;color:var(--green)}
.weekdays span:first-child{color:var(--danger)}.calendar-grid>.calendar-day:nth-child(7n+1) span{color:var(--danger)}.calendar-grid>.calendar-day.is-selected:nth-child(7n+1) span{color:#fff}
@media(max-width:760px){.announcement-control-grid{grid-template-columns:1fr!important}.announcement-comment.reply{margin-left:12px}.single-calendar:before,.single-calendar:after{width:18px;height:35px;top:-20px;border-width:4px}.single-calendar h3{min-height:72px;margin:-14px -14px 14px;padding:23px 17px 14px}.single-calendar h3 span,.single-calendar h3 strong{font-size:21px}.announcement-attachments>div{grid-template-columns:1fr auto}.announcement-attachments small{grid-column:1/2}}

/* v15.0 — Evergreen MBA Portal, Soft Green Premium design system. */
:root{
  --ink:#222222;--green:#0e4b42;--mint:#dde8dd;--paper:#f6f4ee;--line:#e6e6e6;--muted:#666666;
  --accent:#2e7d5b;--sage:#dde8dd;--orange:#a36a16;--blue:#2156a8;--purple:#6a3fc5;
  --danger:#b5473c;--warning:#a36a16;--success:#2e7d5b;--info:#2156a8;
  --shadow:0 12px 40px rgba(0,0,0,.12);--card-shadow:0 4px 16px rgba(0,0,0,.05)
}
html{background:var(--paper)}
body,button,input,select,textarea{font-family:Inter,Arial,sans-serif}
body{background:var(--paper);color:var(--ink)}
h1,h2,h3,.auth-panel h2,.next-date,.session .date,.course-card h3,.single-calendar h3,.stats strong,.admin-summary strong{font-family:Merriweather,Georgia,serif}
a{color:var(--accent)}
.page-shell{max-width:1480px}
.topbar{height:92px;color:#fff;border:0;background:var(--green);box-shadow:0 5px 18px rgba(14,75,66,.14)}
.topbar:before{background:var(--green);box-shadow:0 5px 18px rgba(14,75,66,.14)}
.brand,.brand strong,.topbar .live-clock strong,.topbar .user-name{color:#fff}
.brand small,.topbar .live-clock span{color:#cbdcd6}
.topbar .live-clock{border-color:rgba(255,255,255,.22)}
.topbar .user-menu button{color:#e5efec;border-radius:8px}
.topbar .user-menu button:hover,.topbar .user-menu button:focus-visible{background:rgba(255,255,255,.12);color:#fff}
.topbar .semester-pill{border-color:rgba(255,255,255,.36);color:#fff}
.topbar .semester-pill span{background:#9bcaa8}
.topbar .user-avatar{background:#fff;color:var(--green)}
.hero h1{letter-spacing:-.045em}.hero h1 em{color:var(--accent)}
.intro,.admin-intro,.auth-copy{color:var(--muted)}
.next-card,.appointment-panel,.attendance-summary{background:var(--green);border-radius:14px;box-shadow:var(--card-shadow)}
.next-card:after{display:none}.next-date,.live-dot{color:#d7f0df}
.stats{background:transparent;border-color:var(--line)}
.stats>div{border-color:var(--line)}
.stat-icon{border-color:#d8ddd9;background:#fff;color:var(--accent)}
.session,.course-card,.rail-item,.saved-note-card,.announcement-card,.announcement-list-item,.agenda-card,.planner-panel,.single-calendar,.admin-summary div,.user-table-wrap,.attendance-panel,.member-card,.comment-report{
  background:#fff;border-color:var(--line);border-radius:14px;box-shadow:var(--card-shadow);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease
}
.session:hover,.course-card:hover,.announcement-card:hover,.agenda-card:hover,.member-card:hover{
  transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.08)
}
.session,.course-card,.announcement-card,.agenda-card{overflow:hidden}
.rail-item{border-left:3px solid var(--course)}
.course-card,.session{border-top-color:var(--course)}
.filters{gap:10px}.filter{min-height:42px;border-color:#d9d9d9;background:#fff;color:var(--muted);border-radius:10px}
.filter.active,.filter:hover{background:var(--sage);border-color:#c8d6c0;color:var(--green)}
button,.refresh-users,.personal-export,.header-download{border-radius:10px;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .15s ease}
.primary-utility,.auth-submit,.appointment-form button[type=submit],.class-note-composer-actions #saveClassNote,.dialog-actions button[type=submit],.announcement-form button[type=submit]{min-height:44px;background:var(--green);border-color:var(--green);color:#fff;border-radius:10px}
.primary-utility:hover,.auth-submit:hover,.appointment-form button[type=submit]:hover,.class-note-composer-actions #saveClassNote:hover,.dialog-actions button[type=submit]:hover{background:#136154;border-color:#136154}
input,select,textarea,.auth-panel input,.profile-dialog input,.profile-dialog textarea,.profile-dialog select,.utility-dialog>input,.members-dialog>input,.subject-notes,.class-note-title,.item-form input,.item-form select,.item-form textarea,.appointment-form input,.appointment-form textarea,.admin-tools input,.admin-tools select{
  min-height:52px;border:1px solid #d6d6d6!important;border-radius:14px!important;background:#fff;color:var(--ink);outline:0;transition:border-color .2s ease,box-shadow .2s ease
}
textarea{min-height:108px}
input::placeholder,textarea::placeholder{color:#9a9a9a!important}
input:hover,select:hover,textarea:hover{border-color:#c8d6c0!important}
input:focus,select:focus,textarea:focus{border-color:var(--accent)!important;box-shadow:0 0 0 4px rgba(46,125,91,.12)!important}
.dialog-backdrop{background:rgba(8,32,28,.7)}
.utility-dialog,.reset-dialog,.note-viewer{border-radius:14px;background:#fff;box-shadow:0 12px 40px rgba(0,0,0,.12)}
.note-viewer:not(.announcement-viewer)>header,#searchDialog .utility-dialog>header,#dayDialog .utility-dialog>header,#appointmentViewer .utility-dialog>header,.members-dialog>header,.attendance-history-dialog>header,.profile-color-header,.announcement-viewer>header{
  min-height:120px;background:var(--green)!important;background-image:none!important;box-shadow:0 8px 22px rgba(14,75,66,.16)
}
.note-viewer:not(.announcement-viewer)>header .eyebrow,#searchDialog .utility-dialog>header .eyebrow,#dayDialog .utility-dialog>header .eyebrow,#appointmentViewer .utility-dialog>header .eyebrow,.members-dialog>header .eyebrow,.attendance-history-dialog>header .eyebrow,.profile-color-header .eyebrow{color:#cce5d5}
.note-viewer:not(.announcement-viewer)>header>button,#searchDialog .utility-dialog>header>button,#dayDialog .utility-dialog>header>button,#appointmentViewer .utility-dialog>header>button,.members-dialog>header>button,.attendance-history-dialog>header>button,.profile-color-header>.profile-close,.announcement-viewer>header>button{border-color:rgba(255,255,255,.42);background:transparent;color:#fff}
.note-viewer:not(.announcement-viewer)>header>button:hover,#searchDialog .utility-dialog>header>button:hover,#dayDialog .utility-dialog>header>button:hover,#appointmentViewer .utility-dialog>header>button:hover,.members-dialog>header>button:hover,.attendance-history-dialog>header>button:hover,.profile-color-header>.profile-close:hover,.announcement-viewer>header>button:hover{background:#fff;color:var(--green)}
.calendar-toolbar,.single-calendar h3{background:var(--green);background-image:none;color:#fff}
.calendar-toolbar{border-radius:14px 14px 0 0}.single-calendar{border-radius:14px}.calendar-day{border-color:#ececec;background:#fff;transition:background .15s ease,transform .15s ease}.calendar-day:hover{background:var(--sage);transform:translateY(-1px)}
.calendar-day.is-selected{background:var(--green);box-shadow:inset 0 0 0 2px #8fc3a3}
.calendar-day.is-selected .calendar-count{background:#fff;color:var(--green)}
.calendar-count{background:var(--accent)}
.user-table-wrap{overflow:auto}.user-table th{background:#f7f7f7;color:var(--muted)}.user-table tbody tr:nth-child(even){background:#fcfcfc}.user-table tbody tr:hover{background:#fafcfa}
.status-approved,.attendance-status.present{background:#eaf7ea;color:#2e7d32}.role-user{background:#eaf7ea;color:#2e7d32}.role-admin{background:#fff3d8;color:#996a00}.role-superadmin{background:#f1eafe;color:#6a3fc5}.status-pending,.attendance-status.late{background:#fff3d8;color:#996a00}.status-disabled,.attendance-status.absent{background:#f8e7e4;color:var(--danger)}
.announcement-priority.general{background:#e9f2ff;color:#2156a8}.announcement-priority.important{background:#fff3d8;color:#996a00}.announcement-priority.urgent{background:#f8e7e4;color:var(--danger)}
.photo-editor,.announcement-form,.day-appointment-editor{background:#f7faf7;border-radius:14px;border-color:var(--line)}
.notification-panel,.admin-panel-menu{border-radius:14px;background:#fff;box-shadow:0 12px 40px rgba(0,0,0,.12)}
.notification-item:hover,.search-result:hover,.day-item:hover{background:var(--sage)}
.mobile-navigation{background:var(--green);border:0;color:#fff}.mobile-navigation button{color:#dce9e5}.mobile-navigation button:active,.mobile-navigation button:focus-visible{background:rgba(255,255,255,.12);color:#fff}
@media(max-width:900px){.topbar{height:82px}.session,.course-card,.announcement-card,.agenda-card{border-radius:12px}}
@media(max-width:760px){
  .topbar{background:var(--green)!important}.topbar:before{background:var(--green)!important}
  .utility-dialog,.reset-dialog,.note-viewer{border-radius:18px 18px 0 0}
  .note-viewer:not(.announcement-viewer)>header,#searchDialog .utility-dialog>header,#dayDialog .utility-dialog>header,#appointmentViewer .utility-dialog>header,.members-dialog>header,.attendance-history-dialog>header,.profile-color-header,.announcement-viewer>header{min-height:104px}
  .session,.course-card,.announcement-card,.agenda-card,.planner-panel,.single-calendar,.member-card{border-radius:12px}
  .calendar-toolbar{border-radius:12px 12px 0 0}
}

/* v19.2 unified modal chrome: fixed header/footer, scrolling content only. */
.note-composer-dialog{display:flex!important;flex-direction:column;padding:0!important;overflow:hidden!important;border:1px solid rgba(255,255,255,.85)!important;border-radius:18px!important}
.note-composer-dialog>header{position:relative!important;top:auto!important;flex:0 0 auto;width:100%!important;margin:0!important;padding:24px 28px!important;border-radius:17px 17px 0 0!important}
.note-composer-body{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:26px 28px 8px}
.note-composer-body>label{display:grid;gap:8px;margin:0 0 18px;color:#222;font-weight:800}.note-composer-body input,.note-composer-body textarea{width:100%;box-sizing:border-box;font-size:16px}.note-composer-body textarea{min-height:280px;resize:vertical;line-height:1.6}
.note-composer-dialog>footer{position:relative!important;bottom:auto!important;flex:0 0 auto;margin:0!important;padding:16px 28px 20px!important;background:#fff;border-top:1px solid var(--line);box-shadow:0 -8px 22px rgba(14,60,52,.05)}

#noteViewer .note-viewer{display:flex;flex-direction:column;width:min(760px,calc(100vw - 48px));max-height:calc(100dvh - 48px);padding:0!important;overflow:hidden!important;border:1px solid rgba(255,255,255,.85);border-radius:18px!important}
#noteViewer .note-viewer>header{position:relative!important;flex:0 0 auto;width:100%!important;margin:0!important;padding:24px 78px 22px 30px!important;border:0!important;border-radius:17px 17px 0 0!important;background:linear-gradient(135deg,#0d3b34,#145247)!important;color:#fff;box-shadow:0 8px 22px rgba(13,59,52,.18)}
#noteViewer .note-viewer>header h3{color:#fff}#noteViewer .note-viewer>header small{color:#d8e6e1}#noteViewer .note-viewer>header>button{position:absolute;top:18px;right:20px;color:#fff;border-color:rgba(255,255,255,.42)}
#noteViewer .note-viewer-content,#noteViewer .note-viewer-editor{flex:1 1 auto;min-height:0;max-height:none!important;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;margin:0;padding:26px 30px}
#noteViewer .note-viewer-editor{display:grid;gap:16px}#noteViewer .note-viewer-editor[hidden]{display:none!important}#noteViewer .note-viewer-editor label{display:grid;gap:8px;font-weight:800}#noteViewer .note-viewer-editor input,#noteViewer .note-viewer-editor textarea{width:100%;box-sizing:border-box;padding:13px 14px;border:1px solid #cbd4cf;border-radius:10px}#noteViewer .note-viewer-editor textarea{min-height:300px;resize:vertical}
#noteViewer .note-viewer>footer{flex:0 0 auto;margin:0!important;padding:14px 30px 18px!important;background:#fff;border-top:1px solid var(--line);box-shadow:0 -8px 22px rgba(14,60,52,.05)}

#dayDialog .utility-dialog,#appointmentViewer .utility-dialog{display:flex!important;flex-direction:column;width:min(760px,calc(100vw - 48px));max-height:calc(100dvh - 48px);padding:0!important;overflow:hidden!important;border:1px solid rgba(255,255,255,.85);border-radius:18px!important}
#dayDialog .utility-dialog>header,#appointmentViewer .utility-dialog>header{position:relative!important;top:auto!important;flex:0 0 auto;width:100%!important;margin:0!important;padding:24px 78px 22px 28px!important;border:0!important;border-radius:17px 17px 0 0!important;background:linear-gradient(135deg,#0d3b34,#145247)!important;color:#fff;box-shadow:0 8px 22px rgba(13,59,52,.18)}
#dayDialog .utility-dialog>header h3,#appointmentViewer .utility-dialog>header h3{color:#fff}#dayDialog .utility-dialog>header small,#appointmentViewer .utility-dialog>header small{color:#d8e6e1}#dayDialog .utility-dialog>header>button,#appointmentViewer .utility-dialog>header>button{position:absolute;top:18px;right:20px}
#dayDialogList,.appointment-viewer-content{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:24px 28px}
#dayDialog .primary-utility{flex:0 0 auto;align-self:stretch;margin:0;padding:15px 28px 19px;border-radius:0;background:#fff;color:var(--green);text-align:left;border-top:1px solid var(--line);box-shadow:0 -8px 22px rgba(14,60,52,.05)}#dayDialog .primary-utility:before{content:'+';display:inline-grid;place-items:center;width:30px;height:30px;margin-right:9px;border-radius:50%;background:var(--green);color:#fff}
#appointmentViewer .utility-dialog>footer{flex:0 0 auto;margin:0!important;padding:14px 28px 18px!important;background:#fff;border-top:1px solid var(--line);box-shadow:0 -8px 22px rgba(14,60,52,.05)}
#dayDialog .day-appointment-editor{margin:0!important}.clickable-work-item{cursor:pointer;transition:background .16s ease,box-shadow .16s ease,transform .16s ease}.clickable-work-item:hover{background:#f7faf8;box-shadow:0 6px 18px rgba(14,75,66,.08);transform:translateY(-1px)}.clickable-work-item:focus-visible{outline:3px solid rgba(23,124,106,.25);outline-offset:2px}.clickable-work-item button{cursor:pointer}
@media(max-width:760px){
  .note-composer-dialog,#noteViewer .note-viewer,#dayDialog .utility-dialog,#appointmentViewer .utility-dialog{width:100%;max-height:94dvh;border-radius:20px 20px 0 0!important}
  .note-composer-dialog>header,#noteViewer .note-viewer>header,#dayDialog .utility-dialog>header,#appointmentViewer .utility-dialog>header{padding:20px 70px 18px 16px!important;border-radius:19px 19px 0 0!important}
  .note-composer-body,#noteViewer .note-viewer-content,#noteViewer .note-viewer-editor,#dayDialogList,.appointment-viewer-content{padding:20px 16px}
  .note-composer-dialog>footer,#noteViewer .note-viewer>footer,#appointmentViewer .utility-dialog>footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom))!important}
  #dayDialog .primary-utility{padding:12px 16px calc(12px + env(safe-area-inset-bottom))}.note-composer-body textarea{min-height:230px}.clickable-work-item:hover{transform:none;box-shadow:none}
}

/* v19.1 fixed modal chrome and read-only coursework viewer. */
.coursework-dialog{padding:0!important;overflow:hidden!important}
.coursework-dialog>header{
  position:relative!important;flex:0 0 auto;width:100%!important;margin:0!important;padding:26px 28px 24px!important;
  border-radius:18px 18px 0 0!important
}
.coursework-dialog-body{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:26px 28px 8px}
.coursework-dialog-body>label,.coursework-dialog-body .coursework-fields>label{display:grid;gap:8px;margin:0;color:#252a28;font-size:13px;font-weight:800;letter-spacing:.01em}
.coursework-dialog-body>label{margin-bottom:18px}
.coursework-dialog>footer{flex:0 0 auto;margin:0!important;padding:16px 28px 20px!important;background:#fff;box-shadow:0 -8px 22px rgba(14,60,52,.05)}
.coursework-viewer{display:flex;flex-direction:column;width:min(760px,calc(100vw - 48px));max-height:calc(100dvh - 48px);padding:0!important;overflow:hidden!important;border-radius:18px!important;box-shadow:0 28px 80px rgba(4,34,29,.24)}
.coursework-viewer>header{position:relative;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex:0 0 auto;margin:0!important;padding:26px 80px 24px 28px!important;border:0!important;background:linear-gradient(135deg,#0b5146,#0d5d50);color:#fff;border-radius:18px 18px 0 0;box-shadow:0 10px 25px rgba(11,81,70,.15)}
.coursework-viewer>header .eyebrow{margin:0 0 7px;color:#cce5d5;letter-spacing:.2em}.coursework-viewer>header h3{margin:0 0 6px;color:#fff;font-size:clamp(28px,4vw,39px);line-height:1.12}.coursework-viewer>header small{display:block;color:#dcebe6;line-height:1.45}
.coursework-viewer>header>button{position:absolute;top:24px;right:28px;display:grid;place-items:center;width:42px;height:42px;padding:0;border:1px solid rgba(255,255,255,.42);border-radius:50%;background:transparent;color:#fff;font-size:23px;cursor:pointer}.coursework-viewer>header>button:hover{background:#fff;color:#0b5146}
.coursework-viewer-body{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;padding:26px 28px}
.coursework-view-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:24px}.coursework-view-facts>div{padding:14px;border:1px solid #dce4df;border-radius:11px;background:#f7faf8}.coursework-view-facts span,.coursework-view-facts strong{display:block}.coursework-view-facts span{margin-bottom:6px;color:#69736f;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.coursework-view-facts strong{color:#202724;font-size:14px;line-height:1.4}.coursework-status{display:inline-flex!important;width:max-content;padding:4px 8px;border-radius:999px}.coursework-status.pending{background:#fff2d6;color:#805b08}.coursework-status.completed{background:#e1f2e7;color:#23653d}
.coursework-view-details,.coursework-view-files{margin-top:18px;padding-top:18px;border-top:1px solid #e0e6e2}.coursework-view-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.coursework-view-section-title strong{font-size:15px}.coursework-view-section-title small{color:#69736f}.coursework-view-details>div:last-child{color:#424b47;font-size:15px;line-height:1.7;overflow-wrap:anywhere}.coursework-view-details a{color:#5544b7;text-decoration:underline;text-underline-offset:2px}
.coursework-view-file{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 13px;border:1px solid #dfe6e2;border-radius:10px;background:#f8faf9;color:#0b5146;text-decoration:none}.coursework-view-file+.coursework-view-file{margin-top:8px}.coursework-view-file span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:800}.coursework-view-file small{color:#69736f}.coursework-view-file:hover{border-color:#9db9ae;background:#eef5f1}
.coursework-viewer>footer{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex:0 0 auto;margin:0!important;padding:16px 28px 20px!important;border-top:1px solid #e1e6e3;background:#fff;box-shadow:0 -8px 22px rgba(14,60,52,.05)}.coursework-viewer>footer button{min-height:44px;padding:10px 18px;border-radius:9px;font-weight:800}.coursework-viewer>footer #editCourseworkFromViewer{border-color:#0b5146;background:#0b5146;color:#fff}
@media(max-width:760px){
  .coursework-dialog>header{position:relative!important;top:auto!important;width:100%!important;margin:0!important;padding:20px 16px!important}
  .coursework-dialog-body{padding:20px 16px 8px}.coursework-dialog>footer{position:relative!important;bottom:auto!important;margin:0!important;padding:12px 16px calc(12px + env(safe-area-inset-bottom))!important}
  .coursework-viewer{width:100%;max-height:94dvh;border-radius:20px 20px 0 0!important}.coursework-viewer>header{padding:20px 70px 18px 16px!important;border-radius:20px 20px 0 0}.coursework-viewer>header>button{top:16px;right:16px}.coursework-viewer-body{padding:20px 16px}.coursework-view-facts{grid-template-columns:1fr}.coursework-view-file{grid-template-columns:1fr}.coursework-viewer>footer{padding:12px 16px calc(12px + env(safe-area-inset-bottom))!important}.coursework-viewer>footer button{flex:1}
}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* v14.5 — true edge-to-edge modal headers and clean profile scrolling. */
.note-viewer:not(.announcement-viewer)>header{
  top:-30px;width:calc(100% + 60px);max-width:none
}
#searchDialog .utility-dialog>header,
#dayDialog .utility-dialog>header,
#appointmentViewer .utility-dialog>header,
.members-dialog>header,
.attendance-history-dialog>header{
  top:-28px;width:calc(100% + 56px);max-width:none;margin-bottom:24px!important
}
.profile-color-header{
  top:-32px;width:calc(100% + 64px);max-width:none;margin-bottom:24px!important
}
.announcement-viewer>header{
  width:calc(100% + 60px);max-width:none
}
.profile-dialog{
  scrollbar-width:none;-ms-overflow-style:none
}
.profile-dialog::-webkit-scrollbar{width:0;height:0;display:none}
@media(max-width:700px){
  .note-viewer:not(.announcement-viewer)>header{top:-22px;width:calc(100% + 36px)}
  #searchDialog .utility-dialog>header,#dayDialog .utility-dialog>header,#appointmentViewer .utility-dialog>header,.members-dialog>header,.attendance-history-dialog>header{top:-22px;width:calc(100% + 32px)}
  .profile-color-header{top:-22px;width:calc(100% + 36px);margin-left:-18px!important;margin-right:-18px!important}
  .announcement-viewer>header{width:calc(100% + 36px)}
}

/* v15.1 final cascade — restore calm light surfaces after the core v15 theme. */
.topbar{color:var(--ink);background:rgba(246,244,238,.97);box-shadow:0 1px 0 var(--line),0 10px 28px rgba(14,75,66,.08)}
.topbar:before{background:rgba(246,244,238,.97);box-shadow:0 1px 0 var(--line),0 10px 28px rgba(14,75,66,.08)}
.brand,.brand strong,.topbar .live-clock strong,.topbar .user-name{color:var(--ink)}
.brand small,.topbar .live-clock span{color:var(--muted)}.topbar .live-clock{border-color:var(--line)}
.topbar .user-menu button{color:#4b514e}.topbar .user-menu button:hover,.topbar .user-menu button:focus-visible{background:var(--sage);color:var(--green)}
.topbar .semester-pill{border-color:#d4d5d1;color:var(--ink);background:#fff}.topbar .semester-pill span{background:var(--accent)}.topbar .user-avatar{background:var(--green);color:#d6f65a}
.attendance-summary{background:#fff;color:var(--ink);border:1px solid var(--line);border-left:4px solid var(--green);border-radius:14px;box-shadow:var(--card-shadow)}
.attendance-summary .eyebrow,.attendance-summary>div:first-child>small,.attendance-summary-grid span{color:var(--muted)}
.attendance-summary>div:first-child>strong,.attendance-summary-grid strong{color:var(--green)}.attendance-summary-grid span{border-color:var(--line)}
.attendance-summary button{border-color:#d9d9d9;background:#fff;color:var(--ink)}.attendance-summary button:hover,.attendance-summary button:focus-visible{background:var(--sage);border-color:#c8d6c0;color:var(--green)}
.calendar-toolbar{background:#fff;background-image:none;color:var(--ink);border:1px solid var(--line);border-top:4px solid var(--green);border-radius:14px 14px 0 0;box-shadow:0 4px 16px rgba(0,0,0,.05)}
.calendar-toolbar label{color:var(--ink)}.calendar-toolbar button{border-color:#d9d9d9;background:#fff;color:var(--ink)}.calendar-toolbar button:hover,.calendar-toolbar button:focus{background:var(--sage);border-color:#c8d6c0;color:var(--green)}
.single-calendar{border:1px solid var(--line);border-top:4px solid var(--green);box-shadow:0 4px 16px rgba(0,0,0,.05)}
.single-calendar h3{background:#fff;background-image:none;color:var(--ink);border-bottom:1px solid var(--line);box-shadow:0 5px 14px rgba(14,75,66,.05)}
.calendar-day.is-selected{background:var(--green);color:#fff;box-shadow:inset 0 0 0 2px #8fc3a3,0 4px 12px rgba(14,75,66,.14)}
.mobile-navigation{background:#fff;border-top:1px solid var(--line);box-shadow:0 -8px 24px rgba(14,75,66,.1)}.mobile-navigation button{color:#4b514e}.mobile-navigation button:active,.mobile-navigation button:focus-visible{background:var(--sage);color:var(--green)}
@media(max-width:760px){.topbar{background:rgba(246,244,238,.98)!important}.topbar:before{background:rgba(246,244,238,.98)!important}}
/* v17.0 lightweight rich-text controls and formatted content. */
.formatting-toolbar{display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px;background:#f2f4f3;border:1px solid #d7dfda;border-bottom:0;border-radius:12px 12px 0 0}.formatting-toolbar+textarea{border-radius:0 0 12px 12px!important}.formatting-toolbar button{min-height:34px;padding:5px 11px;border:1px solid #cfd8d2;border-radius:7px;background:#fff;color:#222;font:600 13px Inter,Arial,sans-serif}.formatting-toolbar button:hover{background:#dde8dd;border-color:#2e7d5b}.announcement-viewer-content p,.comment-copy p{margin:0 0 1em}.announcement-viewer-content p:last-child,.comment-copy p:last-child{margin-bottom:0}.announcement-viewer-content h3,.announcement-viewer-content h4,.announcement-viewer-content h5,.comment-copy h3,.comment-copy h4,.comment-copy h5{margin:1em 0 .45em;line-height:1.25}.announcement-viewer-content ul,.announcement-viewer-content ol,.comment-copy ul,.comment-copy ol{margin:.6em 0 1em;padding-left:1.5em}.announcement-viewer-content a,.comment-copy a,.work-item a{color:#5f3dc4;text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}.work-item small p{display:inline;margin:0}.work-item small br{display:none}
/* v17.1 visual rich-text editor. */
.visual-editor-source{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;clip-path:inset(50%)!important;white-space:nowrap!important}.visual-editor-shell{margin:0}.visual-editor-shell .formatting-toolbar{position:relative;z-index:1}.toolbar-divider{width:1px;margin:3px 2px;background:#cfd8d2}.visual-announcement-editor{min-height:190px;max-height:480px;overflow:auto;padding:16px;background:#fff;border:1px solid #d7dfda;border-radius:0 0 12px 12px;color:#222;font:400 16px/1.55 Inter,Arial,sans-serif;outline:none}.visual-announcement-editor:focus{border-color:#2e7d5b;box-shadow:0 0 0 4px rgba(46,125,91,.12)}.visual-announcement-editor:empty:before{content:attr(data-placeholder);color:#9a9a9a;pointer-events:none}.visual-announcement-editor p{margin:0 0 .85em}.visual-announcement-editor h3{margin:.8em 0 .45em;font-family:Merriweather,Georgia,serif;font-size:1.35em}.visual-announcement-editor ul,.visual-announcement-editor ol{margin:.5em 0 1em;padding-left:1.5em}.visual-announcement-editor a{color:#5f3dc4;text-decoration:underline}.visual-announcement-editor u,.announcement-viewer-content u,.comment-copy u{text-underline-offset:2px}@media(max-width:640px){.formatting-toolbar{gap:4px;padding:7px}.formatting-toolbar button{padding:5px 9px}.visual-announcement-editor{min-height:170px;padding:14px}}
/* v17.2 mobile navigation, appointment inputs, and editor interaction. */
.announcement-form input[hidden],.announcement-modal-editor input[hidden]{display:none!important}.formatting-toolbar button.active,.formatting-toolbar button[aria-pressed=true]{border-color:#2e7d5b;background:#dde8dd;color:#0e4b42;box-shadow:inset 0 0 0 1px #2e7d5b}.appointment-form,.appointment-form label,.appointment-form>div{min-width:0}.appointment-form input,.appointment-form textarea{display:block;min-width:0;max-width:100%;width:100%;color:#222;background:#fff;color-scheme:light}.appointment-form input[type=date],.appointment-form input[type=time]{-webkit-appearance:none;appearance:none}.appointment-form input::-webkit-date-and-time-value{text-align:left}.appointment-form input::-webkit-calendar-picker-indicator{display:block;opacity:.8}
@media(max-width:760px){.appointment-panel{width:100%;max-width:100%;overflow:hidden}.appointment-form{display:grid;gap:14px;width:100%}.appointment-form>div{display:grid!important;grid-template-columns:1fr!important;gap:14px!important;width:100%}.appointment-form label{display:block;width:100%;margin:0}.appointment-form input,.appointment-form textarea{min-height:52px!important;padding:13px 14px!important;border-radius:10px!important;font-size:16px!important}.appointment-form textarea{min-height:92px!important}.appointment-form button{min-height:50px}.admin-panel-menu.opened-from-mobile{position:fixed!important;left:10px!important;right:10px!important;top:auto!important;bottom:78px!important;z-index:170!important;width:auto!important;max-height:calc(100dvh - 98px);overflow-y:auto;border-radius:14px}}
@media(max-width:1100px) and (max-height:620px) and (orientation:landscape){.admin-panel-menu{position:fixed!important;left:12px!important;right:12px!important;top:74px!important;bottom:auto!important;z-index:170!important;width:auto!important;max-height:calc(100dvh - 86px);overflow-y:auto;border-radius:14px}.admin-panel-menu button,.admin-panel-menu>a{min-height:46px}}
/* v17.3 separate links live only inside content; mobile Admin uses a body-level drawer. */
#announcementViewerLink,#adminAnnouncementViewerLink,#announcementPreviewLink{display:none!important}.mobile-admin-drawer-backdrop{position:fixed;inset:0;z-index:260;display:flex;align-items:flex-end;justify-content:center;padding:16px;background:rgba(6,27,24,.68)}.mobile-admin-drawer-backdrop[hidden]{display:none!important}.mobile-admin-drawer{width:min(520px,100%);overflow:hidden;border-radius:18px;background:#fff;box-shadow:0 18px 60px rgba(0,0,0,.28)}.mobile-admin-drawer>header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:19px 20px;background:#0e4b42;color:#fff}.mobile-admin-drawer>header small{display:block;margin-bottom:3px;color:#cfe0db;font:600 10px DM Mono,monospace;letter-spacing:.14em}.mobile-admin-drawer>header h3{margin:0;color:#fff;font:400 27px Merriweather,Georgia,serif}.mobile-admin-drawer>header button{display:grid;place-items:center;width:42px;height:42px;border:1px solid rgba(255,255,255,.4);border-radius:50%;background:transparent;color:#fff;font-size:24px}.mobile-admin-drawer nav{display:grid;padding:8px}.mobile-admin-drawer nav button{min-height:52px;border:0;border-bottom:1px solid #e6e6e6;background:#fff;color:#222;padding:13px 15px;text-align:left;font-size:15px;font-weight:750}.mobile-admin-drawer nav button:hover,.mobile-admin-drawer nav button:focus-visible{background:#dde8dd;color:#0e4b42}.mobile-admin-drawer nav .mobile-admin-dashboard{margin-top:6px;border:0;border-radius:9px;background:#f2f4f1}.mobile-admin-open{overflow:hidden}@media(min-width:1101px) and (min-height:621px){.mobile-admin-drawer-backdrop{display:none!important}}

/* v17.4 keep the dashboard stationary while any modal surface is open. */
html.modal-scroll-locked{overflow:hidden;overscroll-behavior:none}
body.modal-scroll-locked{position:fixed;left:0;right:0;width:100%;overflow:hidden;overscroll-behavior:none}
.dialog-backdrop,.mobile-admin-drawer-backdrop{overscroll-behavior:contain}
.utility-dialog,.reset-dialog,.note-viewer,.profile-dialog,.mobile-admin-drawer{overscroll-behavior:contain}

/* v17.7 permission-aware global search */
.global-search-hints{display:flex;align-items:center;flex-wrap:wrap;gap:7px;min-height:16px;margin:10px 0 2px;color:#666;font-size:13px}.global-search-hints:empty{display:none}.global-search-hints span{font-weight:700}.global-search-hints button{min-height:32px;padding:5px 11px;border:1px solid #d7dfda;border-radius:17px;background:#fff;color:#0e4b42;font-size:13px;font-weight:700}.global-search-hints button:hover,.global-search-hints button:focus-visible{border-color:#2e7d5b;background:#dde8dd}.search-result-rich{content-visibility:auto;contain-intrinsic-size:180px}.search-result-rich mark{border-radius:3px;background:#dff2b6;color:#17211e;padding:0 1px}@media(max-width:700px){.global-search-hints{flex-wrap:nowrap;overflow-x:auto;padding-bottom:3px;scrollbar-width:none}.global-search-hints::-webkit-scrollbar{display:none}.global-search-hints button{flex:0 0 auto}}

/* v17.8 stable search modal; only the invisible-scrollbar results viewport moves. */
#searchDialog .utility-dialog{display:flex;flex-direction:column;width:min(780px,calc(100vw - 40px));height:min(800px,calc(100dvh - 64px));max-height:none;overflow:hidden;scrollbar-width:none;-ms-overflow-style:none}

/* v17.10 — shared popup note composer and compact saved-note shelves */
.planner-panel>.planner-label,.planner-panel>#classNoteTitle,.planner-panel>#sessionNote,.planner-panel>.class-note-composer-actions{display:none!important}
.open-note-composer{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 18px;border:1px solid var(--green);border-radius:10px;background:var(--green);color:#fff;font-weight:800;cursor:pointer;transition:background .15s ease,transform .15s ease}
.open-note-composer:hover{background:#136154;transform:translateY(-1px)}
#openClassNoteComposer{margin:12px 0 16px}
.note-composer-dialog{width:min(760px,calc(100vw - 40px));max-height:calc(100dvh - 48px);padding:28px;overflow:auto}
.note-composer-dialog>header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:-28px -28px 24px;padding:24px 28px;background:var(--green);color:#fff;border-radius:14px 14px 0 0;box-shadow:0 8px 20px rgba(14,75,66,.14)}
.note-composer-dialog>header h3{margin:4px 0;color:#fff;font-size:clamp(28px,4vw,38px)}
.note-composer-dialog>header small{display:block;color:#d6e4df;line-height:1.45}
.note-composer-dialog>header button{flex:0 0 44px;width:44px;height:44px;border:1px solid rgba(255,255,255,.45);border-radius:50%;background:transparent;color:#fff;font-size:24px;cursor:pointer}
.note-composer-dialog>label{display:grid;gap:8px;margin:0 0 18px;color:#222;font-weight:800}
.note-composer-dialog input,.note-composer-dialog textarea{width:100%;font-size:16px}
.note-composer-dialog textarea{min-height:300px;resize:vertical;line-height:1.6}
.note-draft-status{margin:0;color:#666;font-size:13px}
.note-composer-dialog>footer{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.note-composer-dialog>footer button{min-height:44px;padding:10px 18px;border-radius:10px;font-weight:800}
#savePopupNote{background:var(--green);border-color:var(--green);color:#fff}
.subject-note-card{min-height:420px!important}
.subject-note-compose-button{margin:18px 0 16px}
.compact-note-card{display:block;min-height:76px;padding:12px 14px;cursor:pointer;overflow:hidden;transition:background .15s ease,border-color .15s ease,transform .15s ease}
.compact-note-card:hover,.compact-note-card:focus-visible{background:#f7faf7;border-color:#bdd3c5;transform:translateY(-1px);outline:none}
.compact-note-card time{display:block;margin-bottom:3px}
.compact-note-card h4{margin:0 0 3px;color:var(--green);font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.compact-note-card .saved-note-preview{display:block;max-width:100%;height:1.45em;overflow:hidden;color:#666;white-space:nowrap;text-overflow:ellipsis;line-height:1.45}
.compact-note-card .saved-note-preview>*{display:inline!important;margin:0!important;padding:0!important}
.compact-note-card .saved-note-preview br{display:none!important}
.class-notes-list.has-note-scroll,.subject-notes-list.has-note-scroll{height:352px!important;max-height:352px!important;overflow-y:auto!important;padding-right:7px;scrollbar-width:thin;scrollbar-color:#8a928e #edf0ed}
.class-notes-list.has-note-scroll::-webkit-scrollbar,.subject-notes-list.has-note-scroll::-webkit-scrollbar{display:block;width:7px}
.class-notes-list.has-note-scroll::-webkit-scrollbar-track,.subject-notes-list.has-note-scroll::-webkit-scrollbar-track{background:#edf0ed;border-radius:99px}
.class-notes-list.has-note-scroll::-webkit-scrollbar-thumb,.subject-notes-list.has-note-scroll::-webkit-scrollbar-thumb{background:#8a928e;border-radius:99px}
@media(max-width:760px){.note-composer-dialog{width:100%;max-height:94dvh;padding:20px 16px 16px;border-radius:18px 18px 0 0}.note-composer-dialog>header{position:sticky;top:-20px;z-index:3;margin:-20px -16px 20px;padding:20px 16px;border-radius:18px 18px 0 0}.note-composer-dialog textarea{min-height:240px}.note-composer-dialog>footer{position:sticky;bottom:-16px;margin:20px -16px -16px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:#fff}.class-notes-list.has-note-scroll,.subject-notes-list.has-note-scroll{height:336px!important;max-height:336px!important}.subject-note-card{min-height:0!important}}

/* v18 — complete note headers and restrained desktop interaction feedback */
.note-composer-dialog>header{align-self:stretch;width:calc(100% + 56px)!important;max-width:none!important;box-sizing:border-box!important}
@media (hover:hover) and (pointer:fine) and (min-width:761px){
  .class-date-button,.compact-note-card{will-change:transform;transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease,border-color .18s ease}
  .class-date-button:not(.active):hover,.compact-note-card:hover{transform:translateY(-2px);box-shadow:0 9px 24px rgba(14,75,66,.11)}
  .class-date-button:active,.compact-note-card:active{transform:translateY(1px);transition-duration:.08s}
  .class-date-button:focus-visible,.compact-note-card:focus-visible{outline:3px solid rgba(46,125,91,.28);outline-offset:2px}
}
@media(max-width:760px){
  .note-composer-dialog>header{width:calc(100% + 32px)!important;max-width:none!important}
  .class-date-button:hover,.class-date-button:active,.compact-note-card:hover,.compact-note-card:active{transform:none!important}
}
@media(prefers-reduced-motion:reduce){.class-date-button,.compact-note-card{transform:none!important}}
#searchDialog .utility-dialog::-webkit-scrollbar,#searchDialog .search-results::-webkit-scrollbar,#searchDialog .global-search-hints::-webkit-scrollbar{display:none;width:0;height:0}
#searchDialog .utility-dialog>header,#searchDialog .utility-dialog>#dashboardSearchInput,#searchDialog .search-filters,#searchDialog .global-search-hints{flex:0 0 auto}
#searchDialog .global-search-hints{min-height:39px;max-height:39px;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding:3px 0 4px;margin:7px 0 0;scrollbar-width:none;-ms-overflow-style:none}
#searchDialog .global-search-hints:empty{display:flex;visibility:hidden}
#searchDialog .global-search-hints>span,#searchDialog .global-search-hints>button{flex:0 0 auto}
#searchDialog .search-results{flex:1 1 auto;min-height:0;max-height:none;margin-top:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;-ms-overflow-style:none}
@media(max-width:700px){#searchDialog{align-items:flex-end}#searchDialog .utility-dialog{width:100%;height:min(86dvh,760px);max-height:none;border-radius:18px 18px 0 0;padding:22px 16px calc(16px + env(safe-area-inset-bottom))}#searchDialog .search-filters{flex:0 0 auto}#searchDialog .global-search-hints{min-height:38px;max-height:38px}}

/* v17.6 scalable reaction viewer */
.reaction-details-dialog{width:min(620px,100%);max-height:min(720px,88dvh);overflow:hidden!important}.reaction-detail-tabs{display:flex;gap:7px;overflow-x:auto;padding:3px 0 12px;scrollbar-width:none}.reaction-detail-tabs::-webkit-scrollbar{display:none}.reaction-detail-tabs button{flex:0 0 auto;min-height:38px;border:1px solid #d9d9d9;border-radius:20px;background:#fff;padding:7px 13px;color:#4b514e;font-weight:700}.reaction-detail-tabs button.active{border-color:#0e4b42;background:#dde8dd;color:#0e4b42}.reaction-details-dialog>input{width:100%;min-height:48px;margin-bottom:12px;border:1px solid #d6d6d6;border-radius:12px;padding:10px 14px;font-size:15px}.reaction-detail-list{max-height:390px;overflow-y:auto;overscroll-behavior:contain}.reaction-detail-list article{display:grid;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:11px;padding:10px 4px;border-bottom:1px solid #ececec}.reaction-detail-list article>span:last-child{color:#666;font-size:13px}.reaction-detail-avatar{display:grid;place-items:center;width:42px;height:42px;overflow:hidden;border-radius:50%;background:#dde8dd;color:#0e4b42}.reaction-detail-avatar img{width:100%;height:100%;object-fit:cover}@media(max-width:760px){.reaction-details-dialog{max-height:82dvh}.reaction-detail-list{max-height:48dvh}.reaction-detail-list article{grid-template-columns:42px minmax(0,1fr) auto}}

/* v19 resource and coursework controls */
.composer-files{display:grid;gap:.45rem}.composer-files small{font-weight:400;color:#6b716e}.composer-files input[type=file]{padding:.75rem;border:1px dashed #b9c5bf;border-radius:10px;background:#f8faf8}.resource-files{margin-top:1.25rem;padding-top:1rem;border-top:1px solid #dce2de}.resource-files-head{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.7rem}.resource-files-head small{color:#6b716e}.resource-file{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:.75rem;align-items:center;padding:.65rem 0;border-top:1px solid #edf0ee}.resource-file a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#07594d}.resource-file button{padding:.4rem .65rem;color:#a2382f}.resource-add{display:inline-flex!important;align-items:center;gap:.5rem;margin-top:.65rem;padding:.6rem .8rem;border:1px solid #b9c5bf;border-radius:8px;font-weight:700;cursor:pointer}.resource-add input{position:absolute;inline-size:1px;block-size:1px;opacity:0}.coursework-dialog{max-width:650px}.coursework-fields{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.related-subject-appointments{display:grid;gap:.45rem;margin:1rem 0;padding:1rem;border:1px solid #dce2de;border-radius:10px}.related-subject-appointments button{text-align:left;padding:.65rem;border:0;border-radius:7px;background:#f4f7f5}.work-item{grid-template-columns:auto minmax(0,1fr) auto auto auto auto}.work-item button{white-space:nowrap}
@media(max-width:760px){.coursework-fields{grid-template-columns:1fr}.resource-files-head{display:grid}.resource-file{grid-template-columns:minmax(0,1fr) auto}.resource-file button{grid-column:1/-1;justify-self:start}.work-item{grid-template-columns:1fr 1fr}.work-item>div{grid-column:1/-1}}

/* v19.0.1 polished coursework editor — visual-only refinement. */
#courseworkDialog{padding:24px;align-items:center;justify-content:center}
.coursework-dialog{
  display:flex;flex-direction:column;width:min(680px,calc(100vw - 48px));max-width:none;
  max-height:calc(100dvh - 48px);padding:28px;overflow:auto;border:1px solid rgba(17,78,67,.08);
  border-radius:18px;box-shadow:0 28px 80px rgba(4,34,29,.24)
}
.coursework-dialog>header{
  position:relative;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;
  width:calc(100% + 56px);margin:-28px -28px 26px;padding:26px 28px 24px;
  box-sizing:border-box;background:linear-gradient(135deg,#0b5146,#0d5d50);color:#fff;
  border-radius:18px 18px 0 0;box-shadow:0 10px 25px rgba(11,81,70,.15)
}
.coursework-dialog>header .eyebrow{margin:0 0 7px;color:#cce5d5;letter-spacing:.2em}
.coursework-dialog>header h3{margin:0 0 5px;color:#fff;font-size:clamp(29px,4vw,38px);line-height:1.1}
.coursework-dialog>header small{display:block;color:#dcebe6;font-size:13px;line-height:1.45}
.coursework-dialog>header>button{
  flex:0 0 42px;width:42px;height:42px;padding:0;border:1px solid rgba(255,255,255,.42);
  border-radius:50%;background:transparent;color:#fff;font-size:23px;line-height:1;cursor:pointer
}
.coursework-dialog>header>button:hover{background:#fff;color:#0b5146;transform:rotate(4deg)}
.coursework-dialog>label,.coursework-fields>label{
  display:grid;gap:8px;margin:0;color:#252a28;font-size:13px;font-weight:800;letter-spacing:.01em
}
.coursework-dialog>label{margin-bottom:18px}
.coursework-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-bottom:18px}
.coursework-dialog input:not([type=file]),.coursework-dialog select,.coursework-dialog textarea{
  display:block;width:100%;min-width:0;box-sizing:border-box;margin:0;padding:13px 14px;
  border:1px solid #cbd4cf;border-radius:11px;background:#fff;color:#1d2421;font:inherit;font-size:15px;
  font-weight:500;line-height:1.35;box-shadow:0 1px 2px rgba(9,42,36,.03);transition:border-color .18s,box-shadow .18s
}
.coursework-dialog input:not([type=file]),.coursework-dialog select{min-height:48px}
.coursework-dialog textarea{min-height:112px;resize:vertical}
.coursework-dialog input:focus,.coursework-dialog select:focus,.coursework-dialog textarea:focus{
  outline:0;border-color:#177c6a;box-shadow:0 0 0 3px rgba(23,124,106,.14)
}
.coursework-dialog .composer-files{margin:0;padding:16px;border:1px dashed #b9c9c2;border-radius:12px;background:#f7faf8}
.coursework-dialog .composer-files small{margin-top:-3px;color:#69736f;font-weight:500}
.coursework-dialog .composer-files input[type=file]{width:100%;box-sizing:border-box;margin-top:3px;padding:10px;border:1px solid #d5ddd9;border-radius:9px;background:#fff;color:#505955;font-size:14px}
.coursework-dialog .composer-files input[type=file]::file-selector-button{
  margin-right:12px;padding:8px 12px;border:0;border-radius:7px;background:#e5f0eb;color:#0b5146;font-weight:800;cursor:pointer
}
.coursework-dialog #courseworkExistingFiles:empty{display:none}
.coursework-dialog .resource-files{margin:0 0 18px;padding:14px;border:1px solid #dfe6e2;border-radius:12px;background:#fbfcfb}
.coursework-dialog>footer{
  display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:2px;padding-top:18px;border-top:1px solid #e1e6e3
}
.coursework-dialog>footer button{min-height:44px;padding:10px 18px;border-radius:9px;font-weight:800}
.coursework-dialog>footer button[type=submit]{border-color:#0b5146;background:#0b5146;color:#fff}
.coursework-dialog>footer button[type=submit]:hover{background:#073f37;transform:translateY(-1px);box-shadow:0 7px 16px rgba(11,81,70,.18)}
@media(max-width:760px){
  #courseworkDialog{align-items:flex-end;padding:0}
  .coursework-dialog{width:100%;max-height:94dvh;padding:20px 16px calc(16px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0}
  .coursework-dialog>header{position:sticky;top:-20px;z-index:3;width:calc(100% + 32px);margin:-20px -16px 20px;padding:20px 16px;border-radius:20px 20px 0 0}
  .coursework-dialog>header h3{font-size:28px}.coursework-fields{grid-template-columns:1fr;gap:18px}
  .coursework-dialog textarea{min-height:100px}.coursework-dialog>footer{position:sticky;bottom:calc(-16px - env(safe-area-inset-bottom));margin:4px -16px calc(-16px - env(safe-area-inset-bottom));padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:#fff}
}

/* v19.2 final modal precedence overrides. */
.note-composer-dialog{display:flex!important;flex-direction:column!important;padding:0!important;overflow:hidden!important;border-radius:18px!important}
.note-composer-dialog>header{position:relative!important;top:auto!important;flex:0 0 auto!important;width:100%!important;margin:0!important;padding:24px 28px!important;border-radius:18px 18px 0 0!important}
.note-composer-body{flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;padding:26px 28px 8px!important;overscroll-behavior:contain}
.note-composer-body>label{display:grid;gap:8px;margin:0 0 18px;font-weight:800}.note-composer-body textarea{min-height:280px;resize:vertical}
.note-composer-dialog>footer{position:relative!important;bottom:auto!important;flex:0 0 auto!important;margin:0!important;padding:16px 28px 20px!important;background:#fff!important;box-shadow:0 -8px 22px rgba(14,60,52,.05)}
#noteViewer .note-viewer,#dayDialog .utility-dialog,#appointmentViewer .utility-dialog{display:flex!important;flex-direction:column!important;max-height:calc(100dvh - 48px)!important;padding:0!important;overflow:hidden!important;border-radius:18px!important}
#noteViewer .note-viewer>header,#dayDialog .utility-dialog>header,#appointmentViewer .utility-dialog>header{position:relative!important;top:auto!important;flex:0 0 auto!important;width:100%!important;margin:0!important;padding:24px 78px 22px 28px!important;border:0!important;border-radius:18px 18px 0 0!important}
#noteViewer .note-viewer-content,#noteViewer .note-viewer-editor,#dayDialogList,.appointment-viewer-content{flex:1 1 auto!important;min-height:0!important;max-height:none!important;overflow-y:auto!important;overscroll-behavior:contain}
#noteViewer .note-viewer>footer,#appointmentViewer .utility-dialog>footer{position:relative!important;flex:0 0 auto!important;margin:0!important;padding:14px 28px 18px!important;background:#fff!important;box-shadow:0 -8px 22px rgba(14,60,52,.05)}
#dayDialog .primary-utility{flex:0 0 auto!important;margin:0!important;border-radius:0!important}
@media(max-width:760px){.note-composer-dialog,#noteViewer .note-viewer,#dayDialog .utility-dialog,#appointmentViewer .utility-dialog{width:100%!important;max-height:94dvh!important;border-radius:20px 20px 0 0!important}.note-composer-dialog>header,#noteViewer .note-viewer>header,#dayDialog .utility-dialog>header,#appointmentViewer .utility-dialog>header{width:100%!important;margin:0!important;padding:20px 70px 18px 16px!important}.note-composer-body,#noteViewer .note-viewer-content,#noteViewer .note-viewer-editor,#dayDialogList,.appointment-viewer-content{padding:20px 16px!important}.note-composer-dialog>footer,#noteViewer .note-viewer>footer,#appointmentViewer .utility-dialog>footer{margin:0!important;padding:12px 16px calc(12px + env(safe-area-inset-bottom))!important}}

/* v19.2.1 coursework viewer outline and calendar appointment affordance. */
#courseworkViewer .coursework-viewer{border:3px solid #fff!important;outline:1px solid rgba(255,255,255,.62);outline-offset:-1px;background:#fff;background-clip:padding-box}
#courseworkViewer .coursework-viewer-body{padding-right:22px!important;scrollbar-gutter:stable both-edges}
#courseworkViewer .coursework-viewer-body::-webkit-scrollbar{width:11px}
#courseworkViewer .coursework-viewer-body::-webkit-scrollbar-track{margin:8px 3px;background:transparent}
#courseworkViewer .coursework-viewer-body::-webkit-scrollbar-thumb{border:3px solid #fff;border-radius:999px;background:#8c918f}
#dayDialog .day-appointment{cursor:pointer;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease,transform .16s ease}
#dayDialog .day-appointment:hover{border-color:#a8bdb5;background:#f6faf8;box-shadow:0 5px 16px rgba(14,75,66,.08);transform:translateY(-1px)}
#dayDialog .day-appointment:focus-visible{outline:3px solid rgba(23,124,106,.25);outline-offset:2px}
@media(max-width:760px){#courseworkViewer .coursework-viewer-body{padding-right:12px!important}#dayDialog .day-appointment:hover{transform:none;box-shadow:none}}

/* v19.2.2 hide only the redundant permanent appointment form. */
.calendar-section .calendar-layout{grid-template-columns:minmax(0,1fr)!important}
.calendar-section .appointment-panel{display:none!important}
