:root{--ink: #17251C;--green: #24513A;--green-deep: #16351F;--gold: #B98A22;--paper: #FAF9F4;--card: #FFFFFF;--line: #E4E0D4;--sage: #6E7F70;--danger: #A23B2E;--radius: 10px;--shadow: 0 1px 2px rgba(23,37,28,.06), 0 8px 24px rgba(23,37,28,.05);--sans: "Gotham", "Helvetica Neue", Helvetica, Arial, sans-serif;--serif: "Gotham", "Helvetica Neue", Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--sans);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}.wordmark{font-family:var(--serif);font-weight:600;letter-spacing:-.01em;line-height:1;color:var(--green-deep);margin:0}.wordmark span{color:var(--gold);margin-left:.4ch}.wordmark.small{font-size:1.15rem}h1.wordmark{font-size:2rem}.splash,.centered-field{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:1.5rem;background:radial-gradient(1200px 500px at 50% -10%,rgba(36,81,58,.1),transparent 60%),var(--paper)}.splash-mark{font-family:var(--serif);font-size:2rem;color:var(--green-deep)}.splash-mark span{color:var(--gold);margin-left:.4ch}.splash p{color:var(--sage)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:2rem;width:100%;max-width:26rem}.card .tagline{font-family:var(--serif);color:var(--sage);margin:.35rem 0 1.5rem;font-size:1.02rem}.card.notice p{line-height:1.55}.field{display:block;margin-bottom:1rem}.field span{display:block;font-size:.82rem;font-weight:500;color:var(--sage);margin-bottom:.35rem}.field input{width:100%;padding:.7rem .8rem;font-size:1rem;font-family:inherit;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}.field input:focus{outline:2px solid var(--green);outline-offset:1px;border-color:var(--green)}.btn{display:inline-flex;align-items:center;justify-content:center;font:inherit;font-weight:500;cursor:pointer;padding:.7rem 1rem;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink);width:100%}.btn:hover{border-color:var(--sage)}.btn-primary{background:var(--green);border-color:var(--green);color:#fff}.btn-primary:hover{background:var(--green-deep);border-color:var(--green-deep)}.btn-primary:disabled{opacity:.6;cursor:default}.btn.ghost{background:transparent;border-color:transparent;color:var(--sage);width:auto}.btn.ghost:hover{color:var(--ink);border-color:var(--line)}.btn.sm{padding:.4rem .7rem;font-size:.88rem}.error{color:var(--danger);font-size:.9rem;margin:0 0 1rem}.muted{color:var(--sage)}.chapter-select .chapter-list{list-style:none;padding:0;margin:1rem 0;display:flex;flex-direction:column;gap:.5rem}.chapter-row{width:100%;text-align:left;cursor:pointer;font:inherit;background:#fff;border:1px solid var(--line);border-radius:8px;padding:.85rem 1rem;display:flex;flex-direction:column;gap:.15rem}.chapter-row:hover{border-color:var(--green);background:#fcfcfa}.chapter-name{font-weight:600;color:var(--green-deep)}.chapter-meta{font-size:.85rem;color:var(--sage)}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem 1.25rem;background:var(--green-deep);color:#eaf0ea;padding-top:calc(.8rem + env(safe-area-inset-top))}.topbar .wordmark{color:#fff}.topbar .wordmark span{color:var(--gold)}.topbar-left{display:flex;align-items:center;gap:.85rem;flex-wrap:wrap}.chapter-pill{font-size:.82rem;color:#cbd8cc;border:1px solid rgba(255,255,255,.18);padding:.2rem .55rem;border-radius:999px;display:inline-flex;gap:.5rem;align-items:center}.chapter-pill .link{background:none;border:none;color:var(--gold);cursor:pointer;font:inherit;padding:0;text-decoration:underline}.topbar-right{display:flex;align-items:center;gap:.75rem}.who{font-size:.82rem;color:#cbd8cc}.topbar .btn.ghost{color:#cbd8cc}.topbar .btn.ghost:hover{color:#fff;border-color:#ffffff40}.tabs{display:flex;gap:.25rem;padding:0 1.25rem;background:#fff;border-bottom:1px solid var(--line)}.tabs a{padding:.85rem .4rem;margin-right:1rem;text-decoration:none;color:var(--sage);font-weight:500;font-size:.95rem;border-bottom:2px solid transparent}.tabs a.active{color:var(--green-deep);border-bottom-color:var(--gold)}.content{flex:1;width:100%;max-width:60rem;margin:0 auto;padding:1.75rem 1.25rem 3rem}.creed{margin:1rem 0 2.5rem}.creed-eyebrow{font-family:var(--serif);color:var(--gold);font-size:1rem}.creed blockquote{font-family:var(--serif);font-weight:400;color:var(--green-deep);font-size:clamp(1.35rem,2.6vw,2rem);line-height:1.4;margin:.5rem 0 0;max-width:34ch;border-left:3px solid var(--gold);padding-left:1.1rem}.chapter-head h2{font-family:var(--serif);font-weight:600;margin:0 0 .2rem;font-size:1.5rem}.stat-row{display:flex;gap:1rem;margin-top:1.75rem;flex-wrap:wrap}.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.3rem;min-width:9rem}.stat-value{font-family:var(--serif);font-size:1.9rem;color:var(--green-deep);line-height:1}.stat-label{color:var(--sage);font-size:.85rem;margin-top:.35rem}.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.1rem}.page-head h2{font-family:var(--serif);font-weight:600;margin:0;font-size:1.5rem}.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}.seg button{font:inherit;font-size:.85rem;padding:.4rem .8rem;border:none;background:#fff;color:var(--sage);cursor:pointer}.seg button.on{background:var(--green);color:#fff}.roster{list-style:none;padding:0;margin:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#fff}.roster-item{border-bottom:1px solid var(--line)}.roster-item:last-child{border-bottom:none}.roster-row{width:100%;font:inherit;text-align:left;cursor:pointer;background:#fff;border:none;display:grid;grid-template-columns:auto 1fr auto auto;grid-template-areas:"avatar name chip chev" "avatar lead chip chev" "avatar meta chip chev";gap:.1rem 1rem;padding:.85rem 1.1rem;align-items:center}.roster-row:hover{background:#fcfcfa}.roster-name{grid-area:name;font-weight:600;color:var(--ink)}.roster-meta{grid-area:meta;font-size:.85rem;color:var(--sage)}.chip{grid-area:chip;font-size:.74rem;font-weight:500;padding:.2rem .6rem;border-radius:999px;background:#eef1ec;color:var(--sage);white-space:nowrap}.chip-Active{background:#e4efe6;color:#2c6b45}.chip-NewMember{background:#f4ead2;color:#8a6516}.chip-Alumni{background:#e7ecf3;color:#3c5a86}.chev{grid-area:chev;color:var(--sage);font-size:.8rem;transition:transform .15s ease}.chev.up{transform:rotate(180deg)}.roster-detail{padding:.25rem 1.1rem 1.1rem;background:#fcfcfa;border-top:1px solid var(--line)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7rem 1.5rem;margin:.85rem 0 .6rem}.detail-item dt{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--sage)}.detail-item dd{margin:.15rem 0 0;color:var(--ink)}.detail-item a{color:var(--green);text-decoration:none}.detail-item a:hover{text-decoration:underline}.detail-sub{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--sage)}.deg-list{margin:.4rem 0 0;padding-left:1.1rem}.deg-list li{margin:.15rem 0}.small{font-size:.85rem}.acting-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:var(--gold);color:#241a00;padding:.5rem 1.25rem;font-size:.88rem}.acting-banner .link{background:none;border:none;color:#241a00;font:inherit;font-weight:600;text-decoration:underline;cursor:pointer;padding:0;white-space:nowrap}.act-as-btn{margin-top:.7rem;border:1px solid var(--line);color:var(--green-deep);width:auto;font-weight:500}.act-as-btn:hover{border-color:var(--green);background:#fcfcfa}.brand-logo{display:block;width:auto;max-width:240px;height:auto;margin:0 auto .3rem}.brand-logo.sm{max-width:180px}.app-name{font-family:var(--serif);font-weight:600;color:var(--gold);text-align:center;font-size:1.35rem;letter-spacing:.04em;margin:.1rem 0 .4rem}.card .tagline{text-align:center}.splash .app-name{margin-bottom:.1rem}.identity-card{display:flex;align-items:center;gap:1.1rem;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem 1.25rem;margin-bottom:1.75rem}.identity-text{flex:1 1 12rem}.identity-text h2{font-family:var(--serif);font-weight:600;margin:0 0 .2rem;font-size:1.4rem;color:var(--green-deep)}.badge{flex:0 0 auto;background:#fff;border:1px solid var(--line);border-radius:10px;padding:.5rem .6rem;display:flex;align-items:center;justify-content:center}.badge img{display:block}.badge.school img{height:62px;width:auto}.badge.fh img{height:26px;width:auto}@media (max-width: 520px){.content{padding:1.25rem 1rem 2.5rem}.who{display:none}.identity-card{gap:.8rem}.badge.school img{height:52px}.badge.fh img{height:22px}.detail-grid{grid-template-columns:1fr}}.back-link{display:inline-block;color:var(--sage);text-decoration:none;font-size:.9rem;margin-bottom:1rem}.back-link:hover{color:var(--ink)}.profile-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;border-bottom:1px solid var(--line);padding-bottom:1.1rem;margin-bottom:.3rem}.profile-head h2{font-family:var(--serif);font-weight:600;margin:0 0 .3rem;font-size:1.6rem;color:var(--green-deep)}.profile-contact{display:flex;gap:1.1rem;margin:.55rem 0 0;flex-wrap:wrap}.profile-contact a{color:var(--green);text-decoration:none;font-size:.9rem}.profile-contact a:hover{text-decoration:underline}.cv-section{padding:1.05rem 0;border-bottom:1px solid var(--line)}.cv-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.4rem}.cv-section-head h3{font-family:var(--serif);font-weight:600;font-size:1.12rem;margin:0;color:var(--ink)}.btn.ghost.sm.add{color:var(--green);width:auto;padding:.25rem .55rem}.cv-item{display:flex;justify-content:space-between;gap:1rem;padding:.45rem 0;align-items:baseline}.cv-item-title{font-weight:500}.cv-item-sub{margin-top:.1rem}.cv-item-actions{display:flex;gap:.8rem;flex:0 0 auto}.link{background:none;border:none;padding:0;font:inherit;color:var(--green);text-decoration:underline;cursor:pointer}.link:hover{color:var(--green-deep)}.link.danger{color:var(--danger)}.detail-links{margin-top:.55rem}.cv-form{background:#fcfcfa;border:1px solid var(--line);border-radius:8px;padding:.9rem;margin:.5rem 0}.cv-form .field{margin-bottom:.7rem}.cv-form-actions{display:flex;gap:.5rem;justify-content:flex-end}.btn.sm{padding:.4rem .85rem;width:auto}.field textarea,.field select{width:100%;padding:.6rem .7rem;font:inherit;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}.field textarea:focus,.field select:focus{outline:2px solid var(--green);outline-offset:1px;border-color:var(--green)}.cv-group{margin-bottom:.7rem}.cv-group-label{font-size:.8rem;font-weight:600;color:var(--gold);margin-bottom:.2rem}.cv-plain{margin:.2rem 0;padding-left:1.1rem}.cv-plain li{margin:.18rem 0}.drop-tag{color:var(--danger);font-size:.8rem}.cv-table{width:100%;border-collapse:collapse;font-size:.92rem}.cv-table th{text-align:left;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--sage);font-weight:600;padding:.3rem .6rem .3rem 0}.cv-table td{padding:.35rem .6rem;border-top:1px solid var(--line)}.cv-table td:first-child{padding-left:0}.privacy-note{margin-top:1rem;font-style:italic}.sem-select{font:inherit;padding:.35rem .6rem;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}.add-class{margin-top:.8rem;position:relative}.add-class input{width:100%;padding:.6rem .8rem;font:inherit;border:1px solid var(--line);border-radius:8px;background:#fff}.add-class input:focus{outline:2px solid var(--green);outline-offset:1px;border-color:var(--green)}.search-results{list-style:none;margin:.35rem 0 0;padding:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}.search-row{display:flex;align-items:baseline;gap:.6rem;width:100%;text-align:left;background:#fff;border:none;border-bottom:1px solid var(--line);padding:.55rem .8rem;cursor:pointer;font:inherit}.search-results li:last-child .search-row{border-bottom:none}.search-row:hover{background:#fcfcfa}.sr-code{font-weight:600;color:var(--green-deep);flex:0 0 auto}.sr-title{flex:1;color:var(--ink)}.sr-add{color:var(--green);font-size:.85rem;flex:0 0 auto}.dropped-line{margin-top:.5rem}.period-tabs{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-bottom:.8rem}.period-tabs button{font:inherit;font-size:.88rem;padding:.4rem .9rem;border:none;border-right:1px solid var(--line);background:#fff;color:var(--sage);cursor:pointer}.period-tabs button:last-child{border-right:none}.period-tabs button.on{background:var(--green);color:#fff}.grade-table{width:100%;border-collapse:collapse}.grade-table th{text-align:left;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--sage);font-weight:600;padding:.3rem .6rem .3rem 0}.grade-table td{padding:.45rem .6rem .45rem 0;border-top:1px solid var(--line);vertical-align:middle}.grade-table td:first-child{max-width:60%}.pct{width:6.5rem;padding:.4rem .5rem;font:inherit;border:1px solid var(--line);border-radius:6px}.pct:focus{outline:2px solid var(--green);outline-offset:1px;border-color:var(--green)}.est{font-weight:600;color:var(--green-deep);white-space:nowrap}.flag-note{color:var(--danger);font-size:.8rem;margin-top:.2rem}.grade-actions{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:.9rem;flex-wrap:wrap}.est-gpa{color:var(--ink)}.est-gpa strong{font-family:var(--serif);font-size:1.15rem;color:var(--green-deep)}.shot{margin-top:1.1rem}.shot-row{display:flex;align-items:center;gap:1rem;margin-top:.35rem}.file-btn{width:auto;cursor:pointer}.save-msg{color:var(--green);margin-top:.6rem}.trend-row{display:flex;align-items:center;gap:1rem;padding:.35rem 0}.trend-label{flex:0 0 5rem;font-weight:600;color:var(--green-deep);font-size:.9rem}.miniline{flex:0 0 auto}.trend-last{color:var(--sage);font-size:.9rem}.field.inline{display:flex;align-items:center;gap:.6rem;margin-bottom:1rem}.field.inline span{margin:0}.field.inline select{width:auto;padding:.4rem .6rem;font:inherit;border:1px solid var(--line);border-radius:8px;background:#fff}.lb-controls{margin-bottom:.5rem}.leaderboard{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#fff;counter-reset:lb}.lb-row{display:flex;align-items:center;gap:1rem;padding:.7rem 1rem;border-bottom:1px solid var(--line)}.lb-row:last-child{border-bottom:none}.lb-row:nth-child(1) .lb-rank{background:var(--gold);color:#241a00}.lb-row:nth-child(2) .lb-rank,.lb-row:nth-child(3) .lb-rank{background:var(--green);color:#fff}.lb-rank{flex:0 0 auto;width:1.7rem;height:1.7rem;border-radius:50%;display:grid;place-items:center;font-size:.82rem;font-weight:600;background:#eef1ec;color:var(--sage)}.lb-name{flex:1;font-weight:500}.lb-value{font-family:var(--serif);font-size:1.05rem;color:var(--green-deep)}.ov-item{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:.5rem;background:#fff;overflow:hidden}.ov-row{width:100%;display:flex;align-items:center;gap:.8rem;padding:.75rem 1rem;background:#fff;border:none;cursor:pointer;font:inherit;text-align:left}.ov-row:hover{background:#fcfcfa}.ov-name{flex:1;font-weight:600}.ov-gpa{color:var(--green-deep);font-size:.9rem}.ov-flags{color:var(--danger);font-size:.85rem}.ov-detail{border-top:1px solid var(--line);background:#fcfcfa;padding:.5rem 1rem 1rem}.ov-class{padding:.55rem 0;border-bottom:1px solid var(--line)}.ov-class:last-child{border-bottom:none}.ov-class-head{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;align-items:baseline}.ov-class-code{font-weight:600;color:var(--green-deep)}.ov-grades{display:flex;gap:.9rem;flex-wrap:wrap;align-items:baseline;font-size:.9rem;color:var(--sage)}.ov-est{color:var(--green-deep);font-weight:600}.ov-flag{margin-top:.4rem;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.flag-edit{display:flex;gap:.5rem;flex:1;flex-wrap:wrap}.flag-edit input{flex:1;min-width:12rem;padding:.4rem .6rem;font:inherit;border:1px solid var(--line);border-radius:6px}.flag-edit input:focus{outline:2px solid var(--green);outline-offset:1px;border-color:var(--green)}.ov-drill{display:inline-block;margin:.2rem 0 .7rem;font-weight:500}.standing{background:#eef3ec;border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:8px;padding:.7rem 1rem;margin:1rem 0 .5rem;color:var(--ink)}.standing strong{color:var(--green-deep);font-family:var(--serif)}.week-progress{margin-bottom:1rem}.week-nums{margin-bottom:.4rem}.week-nums strong{font-family:var(--serif);font-size:1.5rem;color:var(--green-deep)}.bar{height:10px;background:#eef1ec;border-radius:999px;overflow:hidden}.bar-fill{height:100%;border-radius:999px;transition:width .3s ease}.checkin-box{background:#fcfcfa;border:1px solid var(--line);border-radius:8px;padding:.9rem;margin-top:1rem}.checkin-form{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.checkin-form select,.checkin-form input{padding:.55rem .7rem;font:inherit;border:1px solid var(--line);border-radius:8px;background:#fff}.checkin-form input{flex:1;min-width:12rem}.live{color:var(--green-deep);font-weight:600;margin-bottom:.6rem}.live:before{color:#2c6b45}.live-tag{color:var(--gold);font-size:.8rem}.study-item{align-items:flex-start}.study-table{width:100%;border-collapse:collapse;font-size:.92rem}.study-table th{text-align:left;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--sage);font-weight:600;padding:.35rem .7rem .35rem 0}.study-table td{padding:.45rem .7rem .45rem 0;border-top:1px solid var(--line);vertical-align:middle}.study-table td.ok{color:#2c6b45;font-weight:600}.study-table td.under{color:var(--gold);font-weight:600}.req-input{width:4rem;padding:.3rem .4rem;font:inherit;border:1px solid var(--line);border-radius:6px}.saved{color:#2c6b45;margin-left:.3rem}.loc-manager{margin-top:.5rem}.loc-row{display:flex;align-items:center;gap:.8rem;padding:.4rem 0;border-bottom:1px solid var(--line)}.loc-name{flex:1}.loc-row input{flex:1;padding:.4rem .6rem;font:inherit;border:1px solid var(--line);border-radius:6px}.loc-add{display:flex;gap:.5rem;margin-top:.7rem}.loc-add input{flex:1;padding:.5rem .7rem;font:inherit;border:1px solid var(--line);border-radius:8px}.head-controls{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.member-form{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem;margin-bottom:1.25rem}.mf-grid{display:grid;grid-template-columns:1fr 1fr;gap:.7rem 1rem;margin-bottom:.8rem}.mf-grid .field{margin-bottom:0}.profile-head-right{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem;flex:0 0 auto}.profile-head-right .btn{width:auto}.danger-btn{color:var(--danger)}.danger-btn:hover{border-color:var(--danger)}@media (max-width: 520px){.mf-grid{grid-template-columns:1fr}}.event-row{display:flex;align-items:center;gap:1rem;padding:.7rem 0;border-bottom:1px solid var(--line)}.event-row:last-child{border-bottom:none}.event-main{flex:1;text-decoration:none;color:inherit}.event-name{font-weight:600;color:var(--ink)}.event-meta{margin-top:.15rem;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.type-badge{background:#e4efe6;color:#2c6b45;font-size:.7rem;font-weight:600;padding:.1rem .5rem;border-radius:999px;margin-right:.3rem}.cal-link{white-space:nowrap;flex:0 0 auto}.event-desc{margin:.5rem 0;color:var(--ink)}.checkin-event{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.checkin-big{width:auto;padding:.8rem 1.6rem;font-size:1.05rem}.checked-in{font-weight:600;color:#2c6b45;font-size:1.05rem}.checked-in.excused-in{color:var(--gold)}.rollcall-add{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin-bottom:.8rem}.grp-add{display:inline-flex;gap:.4rem;align-items:center}.grp-add select{padding:.35rem .6rem;font:inherit;border:1px solid var(--line);border-radius:8px;background:#fff}.rc-row{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-bottom:1px solid var(--line);align-items:flex-start;flex-wrap:wrap}.rc-main{flex:1;min-width:12rem}.rc-name{font-weight:600;margin-right:.6rem}.rc-status{font-size:.8rem;font-weight:600;padding:.1rem .5rem;border-radius:999px}.rc-status.present{background:#e4efe6;color:#2c6b45}.rc-status.excused{background:#f4ead2;color:#8a6516}.rc-status.absent{background:#eef1ec;color:var(--sage)}.rc-actions{display:flex;gap:.7rem;flex-wrap:wrap;flex:0 0 auto}.my-events{margin-top:2rem}.me-block{margin-bottom:1rem}.me-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--gold);font-weight:600;margin-bottom:.35rem}.me-event{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem .8rem;border:1px solid var(--line);border-radius:8px;background:#fff;text-decoration:none;color:inherit;margin-bottom:.4rem}.me-event:hover{border-color:var(--green)}.me-event-main{display:flex;flex-direction:column;gap:.1rem}.me-event-name{font-weight:600;color:var(--ink)}.rc-status.today{background:#e7ecf3;color:#3c5a86}.groups-layout{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-top:1rem}.group-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .6rem;border:1px solid var(--line);border-radius:8px;margin-bottom:.4rem;background:#fff}.group-item.on{border-color:var(--green);background:#fcfcfa}.group-pick{background:none;border:none;font:inherit;font-weight:600;color:var(--green-deep);cursor:pointer;text-align:left;flex:1}.group-acts{display:flex;gap:.6rem;flex:0 0 auto}.group-members h3{font-family:var(--serif);font-weight:600;margin:0 0 .6rem}.gm-row{display:flex;justify-content:space-between;align-items:center;padding:.4rem 0;border-bottom:1px solid var(--line)}.gm-row:last-of-type{border-bottom:none}.group-members select{padding:.5rem .6rem;font:inherit;border:1px solid var(--line);border-radius:8px;flex:1}@media (max-width: 620px){.groups-layout{grid-template-columns:1fr}}.sem-header{background:#ffffff1f;color:#fff;border:1px solid rgba(255,255,255,.25);border-radius:8px;padding:.3rem .5rem;font:inherit;font-size:.82rem;max-width:11rem}.sem-header option{color:#17251c}.count{color:#cbd8cc;font-weight:400;font-size:1rem}.members-page .count{color:var(--sage)}.delete-line{margin-top:.7rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#17251c8c;display:grid;place-items:center;padding:1.5rem;z-index:50}.modal{background:#fff;border-radius:12px;padding:1.5rem;max-width:27rem;width:100%;box-shadow:0 20px 60px #0000004d}.danger-modal{border-top:5px solid var(--danger)}.danger-modal h3{color:var(--danger);margin:0 0 .7rem;font-family:var(--serif);font-size:1.3rem}.danger-modal p{line-height:1.5;margin:.4rem 0}.danger-strong{color:var(--danger);font-weight:700}.modal-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1.3rem}.modal-actions .btn{width:auto}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover{background:#8a2f24;border-color:#8a2f24}.ev-counts{display:block;margin-top:.3rem;font-size:.8rem;color:var(--sage)}.ev-counts b{color:var(--ink)}.ev-counts .ok{color:#2c6b45}.ev-counts .exc{color:#8a6516}.ev-counts .abs{color:var(--danger)}.ev-counts .sep{margin:0 .3rem;color:var(--line)}.admin-nav{display:flex;flex-wrap:wrap;gap:.4rem;border-bottom:1px solid var(--line);margin-bottom:1.2rem}.admin-nav button{font:inherit;font-size:.9rem;padding:.5rem .75rem;border:none;background:none;color:var(--sage);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.admin-nav button.on{color:var(--green-deep);border-bottom-color:var(--gold);font-weight:600}.admin-list .cv-item{border-bottom:1px solid var(--line)}.admin-list>.add{margin-bottom:.6rem}.chapter-awards{margin-top:2rem}.award-line{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-bottom:1px solid var(--line);align-items:baseline}.award-line:last-child{border-bottom:none}.award-name{font-weight:600;color:var(--ink)}.bell{position:relative;text-decoration:none;font-size:1.1rem;line-height:1;padding:.2rem}.bell-badge{position:absolute;top:-4px;right:-6px;background:var(--gold);color:#241a00;font-size:.62rem;font-weight:700;min-width:1.05rem;height:1.05rem;padding:0 .2rem;border-radius:999px;display:grid;place-items:center}.notif-row{width:100%;text-align:left;display:flex;gap:.7rem;align-items:flex-start;padding:.8rem .2rem;background:none;border:none;border-bottom:1px solid var(--line);cursor:pointer;font:inherit}.notif-row:hover{background:#fcfcfa}.notif-dot{flex:0 0 auto;width:.55rem;height:.55rem;border-radius:50%;margin-top:.4rem;background:transparent}.notif-row.unread .notif-dot{background:var(--gold)}.notif-row.unread .notif-msg{font-weight:600}.notif-main{display:flex;flex-direction:column;gap:.15rem}.notif-msg{color:var(--ink)}.prospect-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1rem 1.1rem;margin-bottom:.7rem}.prospect-head{display:flex;align-items:center;gap:.7rem}.prospect-name{font-weight:600;font-size:1.05rem;color:var(--green-deep)}.prospect-meta{margin-top:.2rem}.prospect-contact{display:flex;gap:1rem;flex-wrap:wrap;margin-top:.4rem}.prospect-contact a{color:var(--green);text-decoration:none;font-size:.9rem}.prospect-notes{margin:.5rem 0 0;color:var(--ink)}.prospect-actions{display:flex;gap:.9rem;margin-top:.7rem}.closed-block{margin-top:1rem}.brand-chip{background:#fff;border-radius:6px;padding:3px 6px;display:inline-flex;align-items:center}.brand-chip img{height:16px;width:auto;display:block}.sort-row{margin:-.4rem 0 1rem}.minutes-box{width:100%;padding:.7rem;font:inherit;border:1px solid var(--line);border-radius:8px}.minutes-view{white-space:pre-wrap;line-height:1.55;color:var(--ink)}.gpa-entry{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.gpa-entry .field{margin-bottom:0}.gpa-scroll{overflow-x:auto}.gpa-table{width:100%;border-collapse:collapse;font-size:.9rem}.gpa-table th{text-align:left;font-size:.66rem;text-transform:uppercase;letter-spacing:.03em;color:var(--sage);font-weight:600;padding:.45rem .6rem;border-bottom:1px solid var(--line);white-space:nowrap}.gpa-table td{padding:.45rem .6rem;border-bottom:1px solid var(--line);white-space:nowrap}.gpa-table tbody tr.r-green{background:#e8f3ea}.gpa-table tbody tr.r-yellow{background:#fbf3d6}.gpa-table td.c-blue{background:#d6e4f5;font-weight:700}.gpa-table td.c-orange{background:#f6d6c2;font-weight:700;color:#8a3b12}.gpa-foot td{font-weight:700;border-top:2px solid var(--ink);background:#fcfcfa}.gpa-legend{display:flex;gap:.5rem;margin-top:.7rem;flex-wrap:wrap}.gpa-legend .lg{padding:.12rem .55rem;border-radius:6px;color:var(--ink)}.gpa-legend .lg.r-green{background:#e8f3ea}.gpa-legend .lg.r-yellow{background:#fbf3d6}.gpa-legend .lg.c-blue{background:#d6e4f5}.gpa-legend .lg.c-orange{background:#f6d6c2}.gpa-legend .lg.c-red{background:#f3c7c7;color:#b02a2a}.gpa-legend .lg.r-red{background:#f7dede}td.num,th.num,input.num{text-align:right}.perm-table{width:100%;border-collapse:collapse;font-size:.85rem}.perm-table th{text-align:left;font-size:.64rem;text-transform:uppercase;letter-spacing:.03em;color:var(--sage);font-weight:600;padding:.45rem .5rem;border-bottom:1px solid var(--line);white-space:nowrap}.perm-table td{padding:.35rem .5rem;border-bottom:1px solid var(--line)}.perm-mod{font-weight:600;color:var(--green-deep);white-space:nowrap}.perm-fn{color:var(--ink);white-space:nowrap}.perm-table th.perm-ut,.perm-cell{text-align:center}.perm-cell input{width:16px;height:16px}.roster-lead{grid-area:lead;display:flex;flex-wrap:wrap;gap:.35rem;margin:.1rem 0}.lead-chip{font-size:.76rem;font-weight:600;padding:.12rem .55rem;border-radius:999px;background:#e4efe6;color:#2c6b45}.lead-item{flex-direction:row}.lead-title{color:var(--green-deep);font-weight:600}.lead-sems{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.35rem;align-items:center}.sem-chip{font-size:.76rem;padding:.12rem .5rem;border-radius:999px;background:#eef1ec;color:var(--sage);display:inline-flex;align-items:center;gap:.25rem}.chip-x{border:none;background:none;cursor:pointer;color:var(--sage);font-size:.95rem;line-height:1;padding:0}.chip-x:hover{color:#b02a2a}.add-sem{display:inline-flex;align-items:center;gap:.4rem}.add-sem select{font:inherit;padding:.15rem .3rem}.scale-pick{display:flex;align-items:center;gap:.4rem;margin-top:.3rem}.scale-pick select{font:inherit;padding:.1rem .3rem}@page{size:landscape;margin:.4in}@media print{.topbar,.tabs,.hamburger,.no-print,.cv-item-actions,.acting-banner,.ov-toggle,.ov-filters{display:none!important}.content{padding:0!important;max-width:none!important;margin:0!important}.app{display:block!important}body,html{background:#fff!important}.cv-section,.identity-card,.profile-head,.card{box-shadow:none!important;border:1px solid #ddd!important;break-inside:avoid;margin-bottom:10pt}a{color:inherit;text-decoration:none}.gpa-scroll{overflow:visible!important}.gpa-table{font-size:7.5pt!important;width:100%!important;table-layout:auto}.gpa-table th,.gpa-table td{padding:2px 4px!important}.gpa-table tr{break-inside:avoid}.gpa-table thead{display:table-header-group}.gpa-table tfoot{display:table-footer-group}.gpa-table,.gpa-table *,.gpa-legend,.gpa-legend *,.strip,.strip-cell,.wk-bar,.wk-bar.sm,.wk-fill,.cal-cell{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.gpa-legend{margin-top:8pt}}.gpa-box{display:flex;flex-direction:column;align-items:flex-start;gap:.3rem;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:.7rem 1rem;margin-bottom:1rem}.gpa-box-title{font-family:var(--serif, serif);font-weight:600;color:var(--green-deep);font-size:1.02rem}.gpa-box-line{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.gpa-box-label{color:var(--sage);font-size:.8rem;text-transform:uppercase;letter-spacing:.03em;margin-right:.25rem}.gpa-box-part{font-weight:600;color:var(--green-deep)}.gpa-box-sep{color:var(--line)}.final-tag{color:var(--green);font-weight:600}.creed{margin-top:2rem}.hamburger{display:none;background:none;border:none;color:#fff;font-size:1.4rem;line-height:1;cursor:pointer;padding:.2rem .45rem}@media (max-width: 720px){.hamburger{display:inline-block;order:-1}.tabs{display:none;flex-direction:column;align-items:stretch}.tabs.open{display:flex}.tabs.open a{padding:.7rem 1rem;border-bottom:1px solid rgba(255,255,255,.12)}.who{display:none}.chapter-pill{font-size:.8rem}}.viz-buttons{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:1rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#141e188c;display:grid;place-items:center;z-index:100;padding:1rem}.modal-box{background:var(--card);border-radius:var(--radius);box-shadow:0 12px 40px #0000004d;padding:1.2rem;max-width:480px;width:100%;max-height:90vh;overflow:auto}.modal-box.wide{max-width:760px}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}.modal-head h3{margin:0}.pie-wrap{display:flex;gap:1.2rem;align-items:center;flex-wrap:wrap}.pie-svg{width:220px;height:220px;flex:0 0 auto}.pie-legend{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.35rem;font-size:.9rem}.pie-legend li{display:flex;align-items:center;gap:.5rem}.pie-dot{width:.8rem;height:.8rem;border-radius:3px;display:inline-block}.map-canvas{width:100%;height:60vh;min-height:320px;border-radius:8px}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable:hover{color:var(--green)}.instr-row{margin-top:.25rem}.instr-input{font:inherit;padding:.15rem .4rem;border:1px solid var(--line);border-radius:6px;max-width:12rem;width:100%}.login-alt{display:block;margin:.8rem auto 0;background:none;border:none;cursor:pointer}.event-row.today{border-left:3px solid var(--gold);background:#fcf7e6}.today-pill{margin-left:.5rem;font-size:.68rem;font-weight:700;background:var(--gold);color:#241a00;padding:.1rem .45rem;border-radius:999px}.rc-stats{font-size:.82rem;font-weight:600}.rc-stat.present{color:#2c6b45}.rc-stat.excused{color:#8a6516}.rc-stat.absent{color:#b02a2a}.search-more{padding:.4rem .2rem}.ov-toggle{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;margin-bottom:.8rem}.ov-toggle button{border:none;background:#fff;padding:.4rem 1rem;font:inherit;cursor:pointer;color:var(--sage)}.ov-toggle button.on{background:var(--green);color:#fff}.ov-filters{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:1rem}.ov-mrow{cursor:pointer}.ov-mrow:hover{background:#fcfcfa}.ov-mrow.open{background:#f1f5ef}.ov-drill-row>td{background:#fafaf7;padding:.6rem .8rem}.ov-drill{display:flex;flex-direction:column;gap:.5rem}.ov-drill-course{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:.4rem}.ov-drill-code{font-weight:500}.ov-drill .flag-edit{display:flex;gap:.4rem;flex:1;min-width:12rem;max-width:26rem}.ov-drill .flag-edit input{flex:1;font:inherit;padding:.25rem .5rem;border:1px solid var(--line);border-radius:6px}.gpa-table tbody tr.r-red{background:#f7dede}.gpa-table td.c-red{background:#f3c7c7;color:#b02a2a;font-weight:700}.wk-row{display:grid;grid-template-columns:6.5rem 1fr 6.5rem 1.4rem;gap:.6rem;align-items:center;padding:.3rem 0;border-bottom:1px solid var(--line)}.wk-label{font-size:.82rem;color:var(--sage)}.wk-bar{height:.7rem;background:#eef1ec;border-radius:999px;overflow:hidden;display:block}.wk-bar.sm{width:7rem;height:.55rem}.wk-fill{display:block;height:100%}.wk-nums{font-size:.82rem;text-align:right;white-space:nowrap}.wk-flag{text-align:center;font-weight:700}.wk-flag.met{color:#2c6b45}.wk-flag.miss{color:#b02a2a}.strip{display:inline-flex;gap:2px}.strip-cell{width:11px;height:16px;border-radius:2px;display:inline-block;background:#e1e5de}.strip-cell.met{background:#2c6b45}.strip-cell.miss{background:#c9463b}.strip-cell.none{background:#e1e5de}.req-edit{margin-left:.4rem;font-size:.72rem}.req-edit-form{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.9rem}.req-edit-form input[type=number]{width:4rem}.counters{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.7rem;margin-bottom:1rem}.counter-box{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:.7rem .9rem}.counter-title{font-family:var(--serif, serif);font-weight:600;color:var(--green-deep);font-size:.95rem;margin-bottom:.35rem}.counter-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem}.ct-part{font-weight:600;color:var(--green-deep)}.ct-label{color:var(--sage);font-weight:500;font-size:.78rem;text-transform:uppercase;letter-spacing:.02em;margin-right:.2rem}.ct-sep{color:var(--line)}.ct-big{font-size:1.7rem;font-weight:700;color:var(--green-deep)}.viz-box{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:.7rem .9rem;margin-bottom:1rem}.viz-box .viz-buttons{margin:0}.btn-ico{vertical-align:-2px;margin-right:.35rem}.chapter-history{margin-top:1.5rem}.history-eyebrow{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--sage);font-weight:600;margin-bottom:.3rem}.history-text{white-space:pre-wrap;line-height:1.6;color:var(--ink)}.cal-months{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1rem}.cal-title{font-weight:600;color:var(--green-deep);margin-bottom:.35rem}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.cal-dow{text-align:center;font-size:.66rem;color:var(--sage);font-weight:600}.cal-cell{text-align:center;padding:.35rem 0;font-size:.82rem;border-radius:6px;background:#f4f6f2;color:var(--ink)}.cal-cell.empty{background:transparent}.cal-cell.has-event{background:#2c6b45;color:#fff;cursor:pointer;font-weight:600}.cal-cell.past{opacity:.5}.cal-cell.today{outline:2px solid var(--gold);outline-offset:-2px}.cal-legend{display:flex;align-items:center;gap:.4rem;margin-top:.6rem}.lg-swatch{width:.9rem;height:.9rem;border-radius:3px;display:inline-block}.lg-swatch.has-event{background:#2c6b45}.lg-swatch.today{background:#f4f6f2;outline:2px solid var(--gold);outline-offset:-2px}.lg-swatch.past{background:#2c6b45;opacity:.5}@media print{.gpa-table,.gpa-table th,.gpa-table td,.gpa-table tr{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}}.upload-btn{font-weight:600}.upload-btn .btn-ico{vertical-align:-2px;margin-right:.4rem}@keyframes flashHighlight{0%{background:#fbf3d6;box-shadow:0 0 0 2px var(--gold)}to{background:transparent;box-shadow:none}}.event-row.flash{animation:flashHighlight 2.2s ease-out;border-radius:8px}.awards-scroll{max-height:7.6rem;overflow-y:auto;padding-right:.3rem}.bar-scroll{overflow-x:auto;padding-bottom:.3rem}.bar-svg{display:block;max-width:none}.bar-legend{list-style:none;padding:0;margin:.6rem 0 0;display:flex;flex-wrap:wrap;gap:.8rem;font-size:.85rem}.bar-legend li{display:flex;align-items:center;gap:.4rem}.me-swatch{background:#fbf3d6;border:2px solid #C9A227}.head-tools{display:flex;align-items:center;gap:.5rem}.chart-tools{display:inline-flex;gap:.4rem}.chart-svg{display:block;max-width:100%;height:auto;margin:0 auto}.chapter-awards{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:.8rem 1rem;margin-bottom:1rem}.v-green{color:#2c6b45;font-weight:700}.v-yellow{color:#b8901e;font-weight:700}.v-none{color:#b8bdb2}.box-title{color:#b8901e;font-family:var(--serif, Georgia, serif);font-weight:600;font-size:1.05rem;text-align:left;margin:0 0 .4rem;display:flex;align-items:center;gap:.6rem}.title-edit{font-family:var(--sans, inherit)}.titled-section{margin-bottom:1.2rem}.master-wrap{margin-bottom:1.3rem}.master-box{border:2px solid var(--green);border-radius:var(--radius);padding:.8rem}.master-box .counters{margin-bottom:0}.history-box{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:.8rem 1rem}.my-events .me-label{color:var(--green);font-weight:600}.info-btn{width:1.35rem;height:1.35rem;border-radius:50%;border:1.5px solid var(--green);color:var(--green);background:#fff;font-style:italic;font-weight:700;cursor:pointer;line-height:1;font-size:.82rem}.info-btn:hover{background:var(--green);color:#fff}.desc-text{white-space:pre-wrap;line-height:1.6;color:var(--ink)}.instr-row{display:flex;gap:.4rem;margin-top:.25rem;flex-wrap:wrap}.instr-row .instr-input{max-width:10rem}.req-class{margin-top:.6rem}.req-form{margin-top:.5rem;padding:.6rem;border:1px solid var(--line);border-radius:8px;background:#fcfcfa}.req-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;margin-bottom:.5rem}.req-grid input{font:inherit;padding:.3rem .5rem;border:1px solid var(--line);border-radius:6px}.course-requests{border:1px solid var(--gold);background:#fcf7e6;border-radius:var(--radius);padding:.5rem .9rem;margin-bottom:1rem}.req-badge{background:var(--gold);color:#241a00;font-size:.7rem;font-weight:700;padding:.05rem .45rem;border-radius:999px;margin-left:.4rem}.tab-badge{background:#c2453b;color:#fff;font-size:.62rem;font-weight:700;padding:0 .35rem;border-radius:999px;margin-left:.3rem;vertical-align:super}.master-wrap,.my-events,.titled-section,.creed{margin-top:2.2rem!important;margin-bottom:0!important}.box-title,.creed-eyebrow{color:#b8901e;font-family:var(--serif, Georgia, serif);font-weight:600;font-size:1.05rem;text-align:left;margin:0 0 .5rem!important;display:flex;align-items:center;gap:.6rem}.chapter-awards,.viz-box,.history-box{margin-top:0!important;margin-bottom:0!important}.master-box{border:2px solid var(--gold)!important}.detail-actions{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem;margin-top:.7rem}.detail-actions .act-link{text-decoration:underline;background:none;border:none;cursor:pointer;font:inherit;padding:0}.detail-actions .act-yellow{color:#b8901e}.detail-actions .act-red{color:#b02a2a}.viz-buttons{justify-content:center}.chip-present{background:#e4efe6;color:#2c6b45}.chip-excused{background:#e7ecf3;color:#3c5a86}.chip-absent{background:#f6e4e2;color:#b02a2a}.chip-today{background:#e7ecf3;color:#3c5a86}.sem-select{font-size:.82rem;padding:.25rem .5rem}.row-good>td{background:#eef6f0}.row-warn>td{background:#fbf4e2}.cell-red{background:#f6e4e2!important;color:#b02a2a;font-weight:700}.cell-blue{background:#e7ecf3!important;color:#2f5fa8;font-weight:700}.cell-orange{background:#fbeede!important;color:#b5701a;font-weight:700}.foot-row>td{border-top:2px solid var(--line);font-weight:700;background:#faf8f2}.legend{margin-top:.5rem}.ov-table th,.ov-table td{white-space:nowrap}.week-strip{display:inline-flex;gap:2px}.ws{width:10px;height:14px;border-radius:2px;display:inline-block;background:#e5e5e5}.ws-ok{background:#2c6b45}.ws-miss{background:#c9a227}.req-edit{display:inline-flex;gap:.3rem;align-items:center}.modal-box.xwide{max-width:1160px}.chart-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.chart-scroll .bar-svg{display:block}.subtle-link{color:var(--ink);text-decoration:none}.subtle-link:hover{text-decoration:underline}.detail-actions .act-row{display:flex;align-items:center;width:100%;gap:2rem}.detail-actions .act-right{margin-left:auto}.cbs-sem{color:#b8901e;font-family:var(--serif, Georgia, serif);font-weight:600;font-size:1.15rem;margin:1.7rem 0 .5rem}.cbs-block:first-child .cbs-sem{margin-top:.6rem}.cbs-table{margin-bottom:.2rem}.sem-checks{display:flex;flex-direction:column;gap:.35rem;margin-top:.3rem}.sem-check{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.sem-check input{margin:0;flex:0 0 auto}.gpa-board tr.gpa-good>td{background:#d0e7d9}.gpa-board .cell-top{background:#a9c4ef!important;color:#000!important;font-weight:700}.gpa-board .cell-red{background:#f2cfca!important;color:#9e1e12;font-weight:600}.gpa-board .cell-prevflag{background:#f6ddc2!important;color:#8a4b12}.gpa-legend{display:flex;flex-wrap:wrap;gap:.5rem 1.2rem;margin-top:.7rem;align-items:center}.gpa-legend .lg-item{display:inline-flex;align-items:center;gap:.4rem}.gpa-legend .lg-sw{width:14px;height:14px;border-radius:3px;display:inline-block;border:1px solid rgba(0,0,0,.12)}.gpa-legend .sw-green{background:#d0e7d9}.gpa-legend .sw-top{background:#a9c4ef}.gpa-legend .sw-red{background:#f2cfca}.gpa-legend .sw-prev{background:#f6ddc2}.gpa-board tr.gpa-warn>td{background:#fbf3d6}.gpa-board th,.gpa-board td{white-space:nowrap}.gpa-board tr.gpa-good>td,.gpa-board tr.gpa-warn>td,.gpa-board .cell-top,.gpa-board .cell-red,.gpa-board .cell-prevflag{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.gpa-legend .sw-warn{background:#fbf3d6}@media print{.gpa-board th,.gpa-board td{white-space:normal}}.ph-left{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.ov-switch{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden}.ov-switch button{border:none;background:#fff;padding:.35rem .9rem;font:inherit;cursor:pointer;color:var(--sage)}.ov-switch button.on{background:var(--green);color:#fff}.cell-green{background:#d0e7d9!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.cell-ylw{background:#fbf3d6!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.week-strip .ws{width:11px;height:15px;border-radius:2px}.ws-green{background:#2c6b45}.ws-yellow{background:#c9a227}.ws-red{background:#c0392b}.ws-none{background:#e5e5e5}.tw-met{color:#2c6b45;font-weight:600}.tw-prog{color:#b5701a;font-weight:600}.admin-tabs{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1.3rem;padding-bottom:.8rem;border-bottom:1px solid var(--line)}.admin-tabs button{border:1px solid var(--line);background:#fff;color:var(--sage);padding:.35rem .85rem;border-radius:999px;font:inherit;cursor:pointer}.admin-tabs button:hover{border-color:var(--green);color:var(--green)}.admin-tabs button.on{background:var(--green);color:#fff;border-color:var(--green);font-weight:600}.cal-cell.has-event-past{background:#cfe6d6;color:#1e2a22;cursor:pointer;font-weight:600;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.minutes-text{white-space:pre-wrap;max-height:340px;overflow:auto;line-height:1.5}.rc-present{color:#2c6b45}.rc-excused{color:#3c5a86}.rc-absent{color:#b02a2a}.rollcall-list{margin-top:.4rem}.rc-row{display:flex;align-items:center;gap:.8rem;padding:.5rem 0;border-bottom:1px solid var(--line)}.rc-row:last-child{border-bottom:none}.rc-name{font-weight:600}.rc-actions{margin-left:auto;display:inline-flex;gap:.9rem}.chip-notin{background:#eef1ec;color:var(--sage)}.row-links{display:flex;gap:.9rem;margin-top:.3rem}.course-roster-panel{background:#f7f6f0;border-radius:8px;padding:.6rem .85rem}.roster-expand>td{background:#f7f6f0}.cr-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.28rem 0;border-bottom:1px solid #ece9dd}.cr-row:last-child{border-bottom:none}.cr-high .cr-name{font-weight:700;color:#2c6b45}.perm-table th,.perm-table td{white-space:nowrap}.perm-table tr.perm-module-start>td{border-top:2px solid var(--line)}.classmates-none{color:#b8bdb2;cursor:default;text-decoration:none}.ct-desc{color:var(--sage);font-weight:400}.ct-small,.ct-small .ct-desc,.ct-small .v-green{font-size:.78rem}.instr-row .comments-input{max-width:22rem;flex:1 1 14rem}.ov-table .truncate{max-width:9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.my-events-stats{margin-top:.6rem;padding-left:.85rem}.sem-add-row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.sem-chips{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}.sem-chip{background:#eef1ec;border-radius:999px;padding:.2rem .6rem;font-size:.82rem;display:inline-flex;align-items:center;gap:.3rem}.add-type-link{display:inline-block;margin-top:.4rem}.grp-toggle{font-weight:700;padding:0 .4rem;text-decoration:none}.rc-stats{display:flex;flex-wrap:wrap;gap:1.6rem;font-size:.92rem;margin-bottom:.7rem}.rc-present{color:#2c6b45;font-weight:600}.rc-absent{color:#b02a2a;font-weight:600}.rc-excused-y{color:#9a7d1a;font-weight:600}.chip-excused-y{background:#fbf3d6;color:#8a6d16}.rc-row-excused>td{background:#fcf7e6}td.rc-actions{white-space:nowrap}td.rc-actions .link{margin-right:.7rem}.event-today{background:#fcf7e6;outline:2px solid var(--gold);outline-offset:-2px;border-radius:8px;padding-left:.5rem;padding-right:.5rem}.event-photos{display:flex;flex-wrap:wrap;gap:1.8rem .6rem;margin-top:.5rem}.event-photo{position:relative;width:150px;display:flex;flex-direction:column}.event-photo .archive-img-btn{width:100%;height:140px;border-radius:8px;overflow:hidden;border:1px solid var(--line)}.event-photo img{width:100%;height:140px;object-fit:cover;display:block}.photo-del{position:absolute;top:3px;right:3px;background:#0000008c;color:#fff;border:none;border-radius:50%;width:22px;height:22px;cursor:pointer;font-size:1rem;line-height:1}.snap-icons{display:flex;gap:.5rem;margin-top:.45rem}.snap-icon{border:1px solid var(--line);background:#fff;color:var(--green);border-radius:6px;width:30px;height:24px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.snap-icon:hover{border-color:var(--green);background:#f0f6f2}.photo-ico{margin-left:.35rem;vertical-align:middle;color:var(--sage)}.settings-wrap{position:relative;display:inline-block}.gear-btn{background:none;border:none;color:#fff;font-size:1.15rem;cursor:pointer;position:relative;padding:.2rem .3rem}.settings-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}.settings-menu{position:absolute;right:0;top:2rem;z-index:41;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);min-width:180px;padding:.3rem;display:flex;flex-direction:column}.settings-who{font-size:.78rem;color:var(--sage);padding:.4rem .6rem;border-bottom:1px solid var(--line);margin-bottom:.2rem}.settings-item{background:none;border:none;text-align:left;padding:.5rem .6rem;font:inherit;color:var(--ink);cursor:pointer;border-radius:6px;display:flex;justify-content:space-between;align-items:center;gap:.6rem}.settings-item:hover{background:#f0f6f2}.svc-row>td{background:#f7faf8;padding:.4rem .6rem}.svc-editor{display:flex;flex-direction:column;gap:.4rem;padding:.2rem 0}.svc-entry{display:flex;justify-content:space-between;align-items:flex-start;gap:.8rem;padding:.35rem .5rem;background:#fff;border:1px solid var(--line);border-radius:8px}.svc-entry-main{display:flex;flex-direction:column;gap:.15rem}.svc-entry-actions{display:flex;gap:.6rem;white-space:nowrap}.svc-form{background:#fff;border:1px solid var(--line);border-radius:8px;padding:.6rem .7rem}.svc-form .mf-grid{margin-bottom:.2rem}.map-pop strong{color:var(--green-deep)}.map-pop-names{margin-top:.35rem;display:flex;flex-direction:column;gap:.1rem;max-height:180px;overflow-y:auto;font-size:.9rem}.task-list{display:flex;flex-direction:column;gap:.4rem;margin-top:.5rem}.task-item{display:flex;justify-content:space-between;align-items:flex-start;gap:.8rem;padding:.5rem .65rem;background:#fff;border:1px solid var(--line);border-radius:8px}.task-item.done{background:#f3f8f4}.task-check{display:flex;align-items:flex-start;gap:.55rem;cursor:pointer;flex:1}.task-check input{margin-top:.2rem}.task-body{display:flex;flex-direction:column;gap:.12rem}.task-name{font-weight:500}.task-item.done .task-name{text-decoration:line-through;color:var(--sage)}.task-item{flex-direction:column}.task-top{display:flex;justify-content:space-between;align-items:flex-start;gap:.8rem;width:100%}.task-doers{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;margin:.4rem 0 0 1.75rem}.doer-chip{display:inline-flex;align-items:center;gap:.2rem;background:#eef4f0;border:1px solid var(--line);border-radius:999px;padding:.1rem .5rem;font-size:.82rem}.doer-x{background:none;border:none;cursor:pointer;font-size:.95rem;line-height:1;color:var(--sage);padding:0 0 0 .1rem}.doer-x:hover{color:var(--danger)}.doer-add{padding:.2rem .4rem;font-size:.82rem;height:auto}.photo-ribbon{display:flex;gap:.6rem;overflow-x:auto;padding:.2rem .1rem .5rem;margin-bottom:.3rem;-webkit-overflow-scrolling:touch}.ribbon-thumb{flex:0 0 auto;width:128px;background:none;border:none;padding:0;cursor:pointer;text-align:left}.ribbon-thumb img{width:128px;height:86px;object-fit:cover;border-radius:8px;border:1px solid var(--line);display:block}.ribbon-thumb:hover img{outline:2px solid var(--green);outline-offset:1px}.ribbon-cap{display:block;font-size:.78rem;color:var(--sage);margin-top:.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail-top{margin-bottom:.8rem}.member-photo-wrap{display:flex;align-items:center;gap:.8rem}.member-photo{width:138px;height:138px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#fff}.member-photo.placeholder{display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:2.2rem;color:var(--sage);background:#f0f6f2}.member-photo-tools{display:flex;flex-direction:column;gap:.3rem;align-items:flex-start}.ov-table tr.me-row td{background:#fcf7e8}.ov-table tr.me-row td:first-child{box-shadow:inset 3px 0 0 var(--gold)}.privacy-note{color:var(--sage);margin-top:1rem;padding-top:.8rem;border-top:1px solid var(--line);line-height:1.45}.consent-check{display:flex;align-items:flex-start;gap:.5rem;margin:1rem 0;cursor:pointer;text-align:left}.consent-check input{margin-top:.15rem}.photo-cap{margin-top:.3rem;display:flex;flex-direction:column;gap:.15rem;font-size:.82rem}.photo-cap-edit{margin-top:.3rem;display:flex;flex-direction:column;gap:.25rem}.photo-cap-edit input{width:100%;padding:.35rem .5rem;border:1px solid var(--line);border-radius:6px;font:inherit;font-size:.85rem}.archive-head{font-family:var(--serif);color:var(--green-deep);font-style:italic}.archive-year{margin-top:1.4rem}.archive-year>h3{border-bottom:2px solid var(--gold);padding-bottom:.2rem}.archive-type-group{margin:.8rem 0}.archive-type-label{font-weight:600;color:var(--green);margin-bottom:.4rem}.archive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.9rem}.archive-card{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff;display:flex;flex-direction:column}.archive-card img{width:100%;height:150px;object-fit:cover;display:block;background:#f0f6f2}.archive-card-body{padding:.5rem .6rem;display:flex;flex-direction:column;gap:.2rem;font-size:.85rem}.archive-people{color:var(--sage)}.archive-card-actions{display:flex;gap:.6rem;margin-top:.2rem}.archive-card-ph{width:100%;height:150px;background:#f0f6f2}.roster-avatar{grid-area:avatar;align-self:center;width:60px;height:60px;border-radius:50%;object-fit:cover;flex:0 0 auto;border:1px solid var(--line);background:#fff}.roster-avatar.placeholder{display:flex;align-items:center;justify-content:center;font-size:.9rem;font-weight:600;color:var(--sage);background:#f0f6f2}.photo-cap-actions{display:flex;gap:.7rem;flex-wrap:wrap}.mention-slot{min-height:13rem;border:1px dashed var(--line);border-radius:8px;padding:.3rem;display:flex;align-items:flex-start}.mention-hint{padding:.5rem .4rem}.mention-menu{width:100%;max-height:12.4rem;overflow-y:auto;background:#fff;border-radius:6px}.mention-item{min-height:2.4rem}.archive-draft-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:.9rem}.archive-card.draft{overflow:visible}.archive-card.draft .mention-item{padding:.5rem .6rem}.mention-group-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--sage);padding:.35rem .6rem .2rem}.mention-item{display:block;width:100%;text-align:left;background:none;border:none;font:inherit;padding:.4rem .6rem;cursor:pointer;color:var(--ink)}.mention-item:hover{background:#f0f6f2}.mention-tag{color:var(--green);font-weight:600}.tagged-ribbon-wrap{margin-top:1rem}.tagged-ribbon-wrap .photo-ribbon{margin-top:.4rem}.archive-img-btn{display:block;width:100%;padding:0;border:none;background:none;cursor:pointer}.archive-img-btn img{width:100%;height:150px;object-fit:cover;display:block;background:#f0f6f2}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0a100cdb;display:flex;align-items:center;justify-content:center;padding:2vmin}.lightbox{position:relative;width:96vw;height:92vh;background:var(--card);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}.lightbox-close{position:absolute;top:.5rem;right:.6rem;z-index:2;background:#ffffffe6;border:1px solid var(--line);border-radius:50%;width:2rem;height:2rem;font-size:1rem;cursor:pointer}.lightbox-body{position:relative;flex:1;min-height:0;display:flex;align-items:stretch;touch-action:pan-y}.lightbox-stage{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;background:#0a100c}.lightbox-stage img{max-width:100%;max-height:100%;object-fit:contain;-webkit-user-select:none;user-select:none}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:3rem;height:3rem;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.35);background:#00000080;color:#fff;font-size:1.9rem;line-height:1;cursor:pointer;-webkit-tap-highlight-color:transparent}.lightbox-nav.prev{left:.6rem}.lightbox-nav.next{right:.6rem}.lightbox-nav:active:not(:disabled){background:#000000b8}.lightbox-nav:disabled{opacity:.3;cursor:default}@media (max-width: 640px){.lightbox-nav{width:3.4rem;height:3.4rem;font-size:2.1rem}}.lightbox-info{padding:.7rem 1rem;border-top:1px solid var(--line);background:var(--card)}.lightbox-type{color:var(--green);font-weight:600}.lightbox-desc{margin:.3rem 0}@media (max-width: 640px){.lightbox{width:100vw;height:100vh;border-radius:0}}.archive-mark{white-space:nowrap}.photo-icons{display:inline-flex;gap:.25rem;align-items:center}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--sage);cursor:pointer;padding:0}.icon-btn:hover{color:var(--green);border-color:var(--green);background:#f0f6f2}.lightbox-meta .photo-icons{margin-left:.6rem}.lightbox-info .icon-btn{background:var(--card)}.rc-actions{display:flex;flex-wrap:wrap;white-space:normal;gap:.3rem .7rem;margin-left:0}.rc-actions .link{margin-right:0}.rc-row-excused td,.grade-table td{word-break:normal}.archive-mark-done{color:var(--green);font-weight:600;font-size:.82rem}.archive-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.archive-grid .archive-img-btn img,.archive-grid .archive-card-ph{height:300px}.archive-card-actions{flex-wrap:wrap;align-items:center}@media (max-width: 760px){.archive-grid,.archive-draft-grid{grid-template-columns:1fr}}
