/* Shared, scoped portal UI. Existing lesson and administration styles stay intact. */
.portal-card,.portal-stat{background:#fff;border:1px solid #e6e6e0;border-radius:24px;padding:28px;box-shadow:0 4px 18px #1c302b04;color:#20342d}
.portal-page-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:12px 0 30px}
.portal-page-head h1,.portal-page-head h2{font-size:clamp(28px,3vw,40px);line-height:1.25;letter-spacing:-1.3px;margin:7px 0 12px;color:#17251f;font-weight:850}
.portal-page-head p:not(.portal-eyebrow),.portal-muted{color:#68736d;font-size:14px;line-height:1.75}
.portal-eyebrow{font-size:11px;font-weight:800;letter-spacing:2px;color:#648375;margin:0 0 12px}
.portal-card h2{font-size:23px;margin:0 0 14px}.portal-card h3{font-size:18px;margin:0 0 12px}
.portal-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.portal-section-title h3{margin:0}.portal-section-title>span{font-size:12px;color:#738079}
.portal-primary,.portal-secondary,.portal-tabs button{min-height:46px;padding:12px 20px;border-radius:12px;font:inherit;font-size:14px;font-weight:750;cursor:pointer}
.portal-primary{background:#244c3a;color:#fff;border:1px solid #244c3a}.portal-primary:hover{background:#173a29}.portal-secondary{background:#fff;color:#344c40;border:1px solid #dce3dc}.portal-secondary:hover{background:#f2f6f1}
.portal-text-button{background:transparent;border:0;color:#476c59;font:inherit;font-size:13px;cursor:pointer;padding:8px 0;font-weight:700;text-align:left}
.portal-primary:disabled,.portal-secondary:disabled,.portal-text-button:disabled{opacity:.5;cursor:not-allowed}
.portal-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.portal-feedback{min-height:20px;font-size:13px;color:#286448;line-height:1.65;margin:12px 0}.portal-feedback.is-error{color:#ac362f}
.portal-tag{display:inline-flex;padding:6px 10px;border-radius:8px;background:#f0f4ef;color:#476153;font-size:12px;font-weight:700;white-space:nowrap}.portal-tag.draft{background:#fff3db;color:#866227}.portal-tag.archived{background:#eee;color:#777}
.portal-form{display:grid;gap:20px}.portal-form label{display:grid;gap:9px;font-size:14px;font-weight:700;color:#3c4c43}.portal-form small{font-size:12px;font-weight:400;color:#737f77;line-height:1.6}
.portal-form input:not([type=checkbox]),.portal-form select,.portal-form textarea,.portal-board-search input,.portal-board-search select{width:100%;box-sizing:border-box;padding:13px 15px;border:1px solid #d9dfd8;border-radius:11px;background:#fcfdfb;color:#253b30;font:inherit;min-width:0}
.portal-form textarea{resize:vertical;min-height:160px}.portal-inline-label{display:flex!important;align-items:center}.portal-form input[type=checkbox]{width:18px;height:18px;accent-color:#2c6348}
.portal-managed-avatar{border:1px solid #e0e7d9;border-radius:15px;background:#fbfcf8;padding:17px;margin:18px 0}.portal-managed-avatar>summary{cursor:pointer;font-size:14px;font-weight:750;color:#37573e}.portal-managed-avatar>summary small{display:block;color:#7c8976;font-weight:400;font-size:12px;margin:8px 0 0 20px}
.portal-form :focus-visible,.portal-card button:focus-visible,.portal-dialog button:focus-visible,.portal-avatar-button:focus-visible{outline:3px solid #d5a853;outline-offset:3px}
.portal-account-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:24px;align-items:start}
.portal-profile-identity{display:grid;gap:6px;padding-bottom:22px;margin-bottom:24px;border-bottom:1px solid #edf0e9}.portal-profile-identity strong{font-size:24px}.portal-profile-identity>span{font-size:13px;color:#748177}
.portal-avatar{display:inline-flex;align-items:center;justify-content:center;flex:none;width:84px;height:84px;border-radius:50%;background:#fffaf0;border:1px solid #eee7d7;overflow:hidden;vertical-align:middle}
/* Per-image aspect ratios use more of the circle while keeping all corners inside. */
.portal-avatar img{width:var(--avatar-fit,74%);height:var(--avatar-fit,74%);object-fit:contain;display:block}.portal-avatar.large{width:132px;height:132px}
.portal-avatar-button{display:flex;justify-content:center;align-items:center;padding:0!important;border:0;background:none;cursor:pointer;border-radius:50%;flex-shrink:0}.portal-avatar-button .portal-avatar{width:46px;height:46px;border:2px solid #d7e1d5}
.portal-profile-summary{display:flex;align-items:center;gap:22px;margin:8px 0 25px}.portal-profile-summary p{color:#738079;font-size:13px}
.portal-avatar-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(108px,1fr));gap:12px}.portal-avatar-choice{position:relative;display:flex;align-items:center;flex-direction:column;gap:10px;padding:12px 5px;border:2px solid transparent;border-radius:17px;background:#f7f8f4;cursor:pointer;color:#526157;font:inherit;font-size:12px}.portal-avatar-choice:hover{background:#edf3e9}.portal-avatar-choice[aria-pressed=true]{border-color:#507b51;background:#edf4e6;color:#285532;font-weight:800}.portal-avatar-choice i{display:none;position:absolute;right:4px;top:4px;border-radius:50%;background:#477345;color:white;width:21px;height:21px;line-height:21px;font-style:normal}.portal-avatar-choice[aria-pressed=true] i{display:block}
.portal-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:26px}.portal-stat{padding:24px}.portal-stat>span{font-size:14px;font-weight:700}.portal-stat>strong{display:block;font-size:44px;line-height:1.25;margin:16px 0 10px;letter-spacing:-1.5px}.portal-stat strong small{font-size:16px;margin-left:7px;font-weight:500}.portal-stat p{font-size:12px;color:#718175;line-height:1.7;margin:0}.portal-stat.warm{background:#fff8ea;border-color:#f0d1a1}.portal-stat.green{background:#edf4e8;border-color:#d3e2c7}
.portal-quota{margin-bottom:32px;border-color:#dbe5d9;background:linear-gradient(115deg,#fff 55%,#f2f6ed)}
.portal-quota>header{display:flex;align-items:center;justify-content:space-between;gap:16px}.portal-quota>header h3{font-size:23px;margin:0;line-height:1.45}.portal-quota .portal-eyebrow{margin-bottom:8px}
.portal-quota-badge{padding:9px 14px;border-radius:24px;background:#e3efdd;color:#355e34;font-size:13px;font-weight:800;white-space:nowrap}
.portal-quota-numbers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:28px 0 24px}.portal-quota-numbers>div{padding:10px 20px;border-left:1px solid #e3e8df}.portal-quota-numbers>div:first-child{padding-left:0;border:0}.portal-quota-numbers dt{color:#617465;font-size:14px;font-weight:700}.portal-quota-numbers dd{margin:8px 0 6px;font-size:clamp(34px,3.6vw,52px);font-weight:850;letter-spacing:-1.7px;line-height:1.2;overflow-wrap:anywhere}.portal-quota-numbers dd small{font-size:16px;letter-spacing:0;margin-left:8px;font-weight:500}.portal-quota-numbers>div>span{font-size:12px;color:#718175}.portal-quota-remaining dd{color:#2a693d}
.portal-quota-track>span{display:flex;justify-content:space-between;color:#748371;font-size:12px;margin-bottom:9px}.portal-quota-track progress{width:100%;height:9px;display:block;accent-color:#52855e;border:0;border-radius:10px;background:#e8eee4}.portal-quota-track progress::-webkit-progress-bar{background:#e8eee4;border-radius:10px}.portal-quota-track progress::-webkit-progress-value{background:#52855e;border-radius:10px}
.portal-quota>footer{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:20px}.portal-quota>footer p{font-size:13px;line-height:1.7;margin:0 0 4px;color:#465e48}.portal-quota>footer small{font-size:12px;color:#7b877a}.portal-quota>footer button{flex-shrink:0}
.portal-quota[data-quota-state=near] .portal-quota-badge{background:#fff0ce;color:#865d10}.portal-quota:is([data-quota-state=full],[data-quota-state=over]) .portal-quota-badge{background:#fce4dc;color:#9c4030}.portal-quota[data-quota-state=unknown] .portal-quota-badge{background:#edf0eb;color:#657161}
@media(max-width:700px){.portal-quota>header{align-items:flex-start}.portal-quota>header h3{font-size:19px}.portal-quota-numbers{gap:10px;margin:22px 0}.portal-quota-numbers>div{padding:8px 10px}.portal-quota-numbers dt{font-size:12px}.portal-quota-numbers dd{font-size:32px}.portal-quota-numbers dd small{font-size:12px;margin-left:4px}.portal-quota-numbers>div>span{font-size:10px}.portal-quota>footer{align-items:stretch;flex-direction:column;gap:14px}.portal-quota-badge{font-size:11px;padding:7px 9px}}
@media(prefers-reduced-motion:no-preference){.portal-quota>footer button{transition:background .15s ease}}
.portal-enrollment-caption{margin:-8px 0 0}.portal-enrollment-states{display:flex;flex-wrap:wrap;gap:10px;margin:-8px 0 24px}.portal-enrollment-states>span{padding:10px 14px;background:#edf0e9;border-radius:12px;color:#697866;font-size:13px}.portal-enrollment-states b{margin-left:10px;color:#314c35}
.portal-course-overview progress{appearance:none;border:0;border-radius:8px;background:#e9eee4;display:block}.portal-course-overview progress::-webkit-progress-bar{background:#e9eee4;border-radius:8px}.portal-course-overview progress::-webkit-progress-value{background:#749861;border-radius:8px}
.portal-enrollment-columns{display:grid;grid-template-columns:1.15fr 1fr;gap:22px;margin-bottom:22px;align-items:start}.portal-enrollment-queue>button{display:flex;align-items:center;gap:14px;width:100%;border:0;border-bottom:1px solid #e8eee4;background:transparent;padding:20px 0;text-align:left;cursor:pointer;color:#2d4735;font:inherit}.portal-enrollment-queue>button:hover{background:#f6f8f1}.portal-enrollment-queue>button>span:nth-child(2){display:grid;gap:8px;flex:1;min-width:0}.portal-enrollment-queue strong{font-size:17px}.portal-enrollment-queue small{font-size:12px;line-height:1.6;color:#788373;overflow-wrap:anywhere}.portal-run-status{font-size:11px;font-weight:750;padding:8px 10px;border-radius:10px;white-space:nowrap}.portal-run-status.ready{background:#e7f0df;color:#476b32}.portal-run-status.due{background:#fff0d7;color:#926719}
.portal-course-overview article+article{border-top:1px solid #e9eee5;padding-top:18px;margin-top:18px}.portal-course-overview h4{font-size:18px;margin:0 0 8px}.portal-course-overview p{font-size:12px;color:#718169;margin:0 0 16px}.portal-course-overview article>div{display:flex;justify-content:space-between;font-size:12px;margin-bottom:8px}.portal-course-overview progress{width:100%;height:8px;accent-color:#749861}.portal-course-overview small{display:block;margin-top:10px;color:#73866d;font-size:12px}.portal-assignment-review{margin-bottom:24px}.portal-assignment-review h3>span{display:inline-block;margin-left:8px;color:#567b41}.portal-assignment-chips{display:flex;flex-wrap:wrap;gap:10px}.portal-assignment-chips button{min-height:54px}.portal-assignment-chips button span{margin-left:22px}
@media(max-width:1100px){.portal-enrollment-columns{grid-template-columns:1fr}}@media(max-width:600px){.portal-enrollment-queue>button{gap:9px}.portal-run-status{white-space:normal;max-width:65px;line-height:1.5}.portal-enrollment-states{gap:7px}.portal-enrollment-states>span{font-size:12px;padding:9px}}
.portal-board-peeks{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-bottom:30px}.portal-peek-row{width:100%;display:flex;justify-content:space-between;align-items:center;gap:15px;padding:14px 0;border:0;border-bottom:1px solid #f0f1ed;text-align:left;background:none;color:#34483c;cursor:pointer;font:inherit}.portal-peek-row strong{font-size:14px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-peek-row>span{font-size:12px;white-space:nowrap;color:#829084}.portal-peek-row:last-child{border:0}.portal-empty-small{padding:24px 0;color:#8a948c;font-size:14px;line-height:1.7}
.portal-dashboard-bottom{display:grid;grid-template-columns:1.5fr 1fr;gap:22px}.portal-quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.portal-quick-grid button{display:grid;gap:18px;border:1px solid #e4e9df;background:#f7f9f3;padding:24px 16px;border-radius:18px;text-align:left;font:inherit;cursor:pointer}.portal-quick-grid button:hover{border-color:#86a074;background:#edf3e7}.portal-quick-grid span{font-size:30px}.portal-quick-grid strong{font-size:16px;color:#2a4735}.portal-quick-grid small{font-size:11px;color:#6f7b70;line-height:1.5}
.portal-class-bars>div{display:grid;grid-template-columns:1fr auto;gap:10px;margin:18px 0;font-size:13px}.portal-class-bars progress{grid-column:1/-1;width:100%;height:7px;accent-color:#779664}.portal-class-bars progress::-webkit-progress-bar{border-radius:8px;background:#eef1e8}.portal-class-bars progress::-webkit-progress-value{background:#7d9a66;border-radius:8px}
.portal-table-wrap{overflow:auto}.portal-table{width:100%;border-collapse:collapse;font-size:14px}.portal-table th,.portal-table td{text-align:left;padding:18px 15px;border-bottom:1px solid #e9ece5;white-space:nowrap}.portal-table thead{background:#f4f6ef;color:#66785f;font-size:12px}
.portal-board-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.portal-tabs{display:flex;background:#f2f5ed;padding:5px;border-radius:14px;gap:3px}.portal-tabs button{background:transparent;border:0;color:#71816a}.portal-tabs button[aria-selected=true]{background:white;color:#2d5136;box-shadow:0 2px 6px #283b2410}.portal-board-search{display:flex;gap:10px;margin:24px 0}.portal-board-search input{flex:1}.portal-board-search select{width:auto}.portal-board-search button{flex-shrink:0}
.portal-post-row{display:flex;align-items:center;width:100%;gap:18px;padding:22px 5px;border:0;border-bottom:1px solid #e9eee4;text-align:left;background:white;color:#2b4132;font:inherit;cursor:pointer}.portal-post-row:hover{background:#f8faf4}.portal-post-row>span:nth-child(2){display:grid;gap:9px;flex:1;min-width:0}.portal-post-row strong{font-size:16px;overflow-wrap:anywhere}.portal-post-row small{font-size:12px;color:#7b8a78}.portal-post-icon{font-size:23px}.portal-pagination{display:flex;justify-content:center;align-items:center;gap:18px;margin-top:24px;font-size:13px;color:#7a8877}
.portal-dialog{box-sizing:border-box;width:min(800px,calc(100vw - 32px));max-height:90dvh;padding:0;border:1px solid #dce4d8;border-radius:23px;background:#fff;box-shadow:0 30px 100px #10200b44;color:#2a402f}.portal-dialog::backdrop{background:#15261570;backdrop-filter:blur(4px)}.portal-dialog>header{position:sticky;top:0;z-index:1;background:white;display:flex;justify-content:space-between;align-items:center;padding:20px 28px;border-bottom:1px solid #e5ecdf}.portal-dialog>header h2{font-size:19px;margin:0}.portal-close{font-size:26px;background:#f2f5ef;border:0;border-radius:50%;width:38px;height:38px;cursor:pointer}.portal-dialog-body{padding:28px}.portal-post-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.9;font-size:15px;margin:25px 0 35px}.portal-files{border-top:1px solid #e4ebde;padding-top:15px}.portal-file{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;font-size:13px;overflow-wrap:anywhere}.portal-file small{color:#9ba794;margin-left:8px}.portal-upload{border:1px dashed #cfdcc5;border-radius:13px;padding:20px}.portal-upload h3{margin:0}.portal-editor-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.admin-nav .portal-nav-group{display:grid;gap:5px;margin-top:16px}.portal-nav-label{font-size:10px;letter-spacing:1px;font-weight:800;color:#a6b2a2;padding:0 14px;margin:0 0 6px}.admin-nav .portal-nav-group button{font-size:13px;padding:12px 14px}.admin-nav .nav-actions{gap:6px}.admin-nav .portal-nav-home{font-weight:800!important}.portal-admin-panel{background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important}.portal-admin-panel[hidden],.portal-nav-group[hidden]{display:none!important}
#accountArea{padding:8px 0 36px}#studentAvatarSettings{margin:24px 0;padding-top:24px;border-top:1px solid #e5e8df}#studentAvatarSettings .portal-avatar-grid{grid-template-columns:repeat(auto-fit,minmax(95px,1fr))}#studentAvatarSettings .portal-avatar{width:76px;height:76px}#studentAvatarSettings .portal-avatar.large{width:112px;height:112px}
.home-community .portal-board-peeks{margin:0}.home-community .portal-card{padding:22px 25px}.portal-community-dialog{width:min(960px,calc(100vw - 32px))}.portal-community-dialog .portal-page-head{margin-top:0}.portal-community-dialog .portal-page-head h2{font-size:27px}
@media(max-width:700px){.portal-avatar-choice .portal-avatar,#studentAvatarSettings .portal-avatar-choice .portal-avatar{width:min(84px,100%);height:auto;aspect-ratio:1}}
@media(max-width:1150px){.portal-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-dashboard-bottom{grid-template-columns:1fr}.portal-account-layout{grid-template-columns:minmax(0,1fr)}.portal-board-peeks{gap:16px}.portal-card{padding:22px}}
@media(max-width:700px){.portal-board-peeks{grid-template-columns:1fr}.portal-page-head{margin:10px 0 22px}.portal-card{padding:20px;border-radius:19px}.portal-stat{padding:18px}.portal-stat>strong{font-size:36px}.portal-metrics{gap:12px}.portal-stat>span{font-size:12px}.portal-quick-grid{grid-template-columns:1fr}.portal-quick-grid button{grid-template-columns:40px 1fr;gap:8px 14px;padding:16px}.portal-quick-grid span{grid-row:1/3}.portal-quick-grid small{grid-column:2}.portal-board-search{flex-wrap:wrap}.portal-board-search input{flex-basis:100%}.portal-board-search select{flex:1}.portal-dialog-body{padding:20px}.portal-avatar-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.portal-profile-summary{gap:15px}.portal-avatar.large{width:95px;height:95px}.portal-post-row{gap:10px}.portal-post-row strong{font-size:14px}}
