:root{--portal-space:.75rem;--portal-gap:1.25rem;--portal-pad:1.5rem;--portal-control:2.75rem;--portal-wide:71.25rem;--portal-auth:29rem;--portal-small:.875rem;--portal-heading:clamp(2rem,5vw,3.5rem);--portal-title:clamp(1.4rem,3vw,2rem);--portal-border:1px;--portal-disabled:.55}
.student-body{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);line-height:1.55}
.student-body *, .portal-modal *, .portal-review *{box-sizing:border-box}
.student-body [hidden]{display:none!important}
.student-body a{color:var(--forest)}.student-body button,.student-body input,.student-body textarea,.student-body select,.portal-modal input{font:inherit}
.student-header,.student-main,.student-footer{width:min(calc(100% - 2 * var(--portal-pad)),var(--portal-wide));margin-inline:auto}
.student-header{display:flex;justify-content:space-between;align-items:center;gap:var(--portal-space);padding-block:var(--portal-gap);border-bottom:var(--portal-border) solid var(--line)}
.student-brand{display:flex;align-items:center;gap:var(--portal-space);font-size:1.1rem;text-decoration:none}.student-brand small{display:block;font-size:var(--portal-small);color:var(--muted)}
.student-header #student-logout{flex-shrink:0;white-space:nowrap}.student-header .student-brand,.student-header .student-brand>span{min-width:0;overflow-wrap:normal}
.student-main{padding-block:calc(var(--portal-pad) * 2);min-height:70vh}
.student-heading{margin-bottom:calc(var(--portal-gap) * 2)}.student-heading h1{font-family:var(--font-display);font-size:var(--portal-heading);line-height:1.08;font-weight:400;margin:.3em 0}
.student-eyebrow{font-size:var(--portal-small);text-transform:uppercase;letter-spacing:.08em;color:var(--olive)}
.student-auth{max-width:var(--portal-auth);background:var(--white);padding:var(--portal-pad);border:var(--portal-border) solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.student-auth h2,.student-main h2{font-size:var(--portal-title);font-weight:400;line-height:1.2}.student-auth form{display:grid;gap:var(--portal-space)}
.portal-field{display:grid;gap:.45rem;min-width:0;margin-block:var(--portal-gap)}.portal-field label{font-weight:600}.portal-field input:not([type=checkbox]),.portal-field select,.portal-field textarea,.portal-field>input{display:block;width:100%;min-width:0;max-width:100%;min-height:var(--portal-control);padding:.65rem .8rem;border:var(--portal-border) solid var(--line);border-radius:var(--radius-sm);background:var(--white);color:var(--ink);font-family:var(--font-body);font-size:1rem;box-sizing:border-box}
.portal-field input[type=date]{appearance:none;min-inline-size:0}.portal-field input[type=date]::-webkit-date-and-time-value{text-align:left;min-height:1.3em}
.portal-field input[type=file]{padding:.5rem;font-size:var(--portal-small);overflow:hidden}.portal-field input::file-selector-button{max-width:100%;white-space:normal;font:inherit;background:var(--cream);color:var(--ink);border:0;border-radius:var(--radius-sm);padding:.5rem;margin-right:.5rem}
.portal-field input[type=checkbox]{width:1.4rem;height:1.4rem;accent-color:var(--forest)}.portal-field textarea{min-height:8rem;resize:vertical}
.portal-field small,.portal-muted{color:var(--muted)}.portal-field input[aria-invalid=true]{border-color:var(--danger)}
.portal-button,.portal-text-button{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:var(--portal-control);max-width:100%;padding:.6rem 1rem;border:var(--portal-border) solid var(--line);border-radius:var(--radius-sm);background:var(--white);color:var(--ink);font:inherit;line-height:1.3;text-decoration:none;cursor:pointer;white-space:normal;overflow-wrap:anywhere;text-align:center}
.portal-button:hover{background:var(--cream)}.portal-button:active{transform:translateY(1px)}.portal-button--primary{background:var(--forest);border-color:var(--forest);color:var(--white)!important}.portal-button--primary:hover{background:var(--forest-deep)}.portal-button--danger{color:var(--danger);border-color:var(--danger);background:var(--white)}.portal-button--danger:hover{background:var(--paper)}
.portal-text-button{border-color:transparent;background:transparent;padding-inline:0;text-decoration:underline;color:var(--forest)}
.portal-button:disabled,.portal-text-button:disabled{opacity:var(--portal-disabled);cursor:wait;transform:none}
.student-body :focus-visible,.portal-modal :focus-visible,.portal-review :focus-visible{outline:2px solid var(--olive);outline-offset:3px;box-shadow:var(--focus)}
.portal-error{color:var(--danger);overflow-wrap:anywhere}.portal-error:empty,.portal-notice:empty,#student-message:empty{display:none}.portal-notice{padding:var(--portal-space);border-left:3px solid var(--olive);background:var(--cream);overflow-wrap:anywhere}
.student-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr));gap:var(--portal-gap);margin-bottom:var(--portal-gap)}.student-card{display:flex;flex-direction:column;align-items:flex-start;padding:var(--portal-pad);background:var(--white);border:var(--portal-border) solid var(--line);border-radius:var(--radius);min-width:0}.student-card h3{font-size:1.5rem;line-height:1.2;margin:.5rem 0}.student-card .portal-button{margin-top:auto}
.student-reference{overflow-wrap:anywhere;color:var(--muted);user-select:all}.portal-badge{display:inline-block;max-width:100%;padding:.35rem .7rem;border-radius:var(--radius-sm);background:var(--cream);color:var(--forest);overflow-wrap:anywhere}
#student-detail{max-width:52rem}#student-detail h2,#student-detail h3,.student-card h3{overflow-wrap:anywhere}.student-original{border-block:var(--portal-border) solid var(--line);padding-block:var(--portal-gap);margin-block:var(--portal-gap)}.student-original summary{cursor:pointer;min-height:var(--portal-control);font-weight:600}
.student-data{display:grid;grid-template-columns:minmax(6rem,1fr) minmax(0,2fr);gap:var(--portal-space)}.student-data dt{color:var(--muted)}.student-data dd{margin:0;overflow-wrap:anywhere}
.student-fields>.portal-field{padding:var(--portal-pad);background:var(--white);border:var(--portal-border) solid var(--line);border-radius:var(--radius)}
.portal-document{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--portal-space);padding-block:var(--portal-space);border-bottom:var(--portal-border) solid var(--line);min-width:0}
.portal-document__copy{flex:1 1 12rem;min-width:0}.portal-document strong,.portal-document small{display:block;overflow-wrap:anywhere}.portal-document small{color:var(--muted)}.portal-actions{display:flex;flex-wrap:wrap;gap:.5rem;min-width:0}
.portal-review{border-top:var(--portal-border) solid var(--line);margin-block:var(--portal-pad);padding-top:var(--portal-gap)}.portal-review>button{margin:.25rem}.portal-review-field{min-width:0;overflow-wrap:anywhere}.portal-review-field h4{margin-bottom:.25rem}
.student-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--portal-gap);padding-block:var(--portal-pad);border-top:var(--portal-border) solid var(--line);color:var(--muted);font-size:var(--portal-small)}
@media(max-width:400px){:root{--portal-pad:1rem;--portal-gap:1rem}.student-main{padding-block:var(--portal-pad)}.student-data{grid-template-columns:1fr;gap:.25rem}.student-data dd{margin-bottom:var(--portal-space)}.portal-actions{width:100%}.portal-actions>*{flex:1 1 8rem}.student-heading{margin-bottom:var(--portal-pad)}}
@media(prefers-reduced-motion:reduce){.portal-button{transition:none;transform:none}}

.portal-archive .portal-actions{margin-top:var(--portal-space)}

/* Access composition uses the shared theme; authenticated sections keep their existing flow. */
.student-body{--student-access-gap:clamp(2rem,6vw,5rem);--student-panel-pad:clamp(1.25rem,3vw,2.5rem);--student-copy:34ch;--student-icon:1.35rem;--student-detail-gap:.5rem;--student-heading-mobile:1.75rem;--student-intro:1.125rem}
.student-main:has(>.student-auth:not([hidden])){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,var(--portal-auth));column-gap:var(--student-access-gap);align-items:start;align-content:center;padding-block:var(--student-access-gap)}
.student-main:has(>.student-auth:not([hidden]))>.student-heading{grid-column:1;grid-row:1 / span 3;margin:0;padding-block:var(--portal-pad)}
.student-main:has(>.student-auth:not([hidden]))>.student-auth{grid-column:2;grid-row:1 / span 3;width:100%;max-width:none}
.student-main:has(>.student-auth:not([hidden]))>#student-error,.student-main:has(>.student-auth:not([hidden]))>#student-message{grid-column:1}
.student-access-summary{max-width:var(--student-copy);font-size:var(--student-intro);color:var(--muted);margin-block-start:var(--portal-pad)}
.student-main:has(>.student-auth[hidden]) .student-access-summary{display:none}
.student-auth{padding:var(--student-panel-pad);box-shadow:none;min-width:0;overflow-wrap:anywhere}
.student-auth h2{margin:0 0 var(--portal-space)}
.student-auth>p{margin:0 0 var(--portal-pad)}
.student-auth form{gap:var(--portal-gap)}
.student-auth .portal-field{margin:0;gap:var(--student-detail-gap)}
.student-auth form small{font-size:var(--portal-small);line-height:1.5;color:var(--muted)}
.student-auth form>p{margin:0}
.student-auth>button{margin-block-start:var(--portal-space)}
.student-auth-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--student-detail-gap) var(--portal-space);margin-block-start:var(--portal-gap)}
.student-auth-actions>.portal-button,.student-auth-actions>.portal-text-button{font-size:var(--portal-small)}
.student-auth-actions>.portal-button{padding-inline:var(--portal-space);background:var(--paper)}
.student-auth-actions>.portal-button:hover{background:var(--cream);border-color:var(--olive)}
.student-auth .portal-notice{border:var(--portal-border) solid var(--line);border-radius:var(--radius-sm)}
.student-email-help{padding:var(--portal-space);background:var(--paper);border:var(--portal-border) solid var(--line);border-radius:var(--radius-sm);font-size:var(--portal-small);color:var(--muted)}
.student-password{position:relative;min-width:0}
.student-password input{padding-inline-end:calc(var(--portal-control) + var(--student-detail-gap))!important}
.student-password-toggle{position:absolute;inset-block:0;inset-inline-end:0;display:grid;place-items:center;width:var(--portal-control);min-height:var(--portal-control);border:var(--portal-border) solid transparent;border-radius:var(--radius-sm);padding:0;background:transparent;color:var(--muted);cursor:pointer;transition:background-color var(--motion) var(--ease),color var(--motion) var(--ease)}
.student-password-toggle svg{width:var(--student-icon);height:var(--student-icon);pointer-events:none}
.student-password-toggle:hover{background:var(--cream);color:var(--forest)}
.student-password-toggle:active{background:var(--line)}
.student-password-toggle:disabled{opacity:var(--portal-disabled);cursor:wait}
.student-password-slash{opacity:0;transition:opacity var(--motion) var(--ease)}
.student-password-toggle[aria-pressed=true] .student-password-slash{opacity:1}
.portal-review-actions{display:flex;flex-wrap:wrap;align-items:start;gap:var(--portal-space);margin-block-start:var(--portal-pad);padding-block-start:var(--portal-gap);border-block-start:var(--portal-border) solid var(--line)}
.portal-review-actions>.portal-button--danger{margin-inline-start:auto}
@media(max-width:800px){
 .student-main:has(>.student-auth:not([hidden])){display:block;padding-block:var(--portal-pad)}
 .student-main:has(>.student-auth:not([hidden]))>.student-heading{padding:0;margin-bottom:var(--portal-pad)}
 .student-main:has(>.student-auth:not([hidden])) .student-heading h1{font-size:var(--portal-title)}
 .student-main:has(>.student-auth:not([hidden])) .student-eyebrow,.student-access-summary{display:none}
 .student-main:has(>.student-auth:not([hidden]))>.student-auth{max-width:var(--portal-auth)}
 .student-heading #student-session-label{margin-block:var(--portal-space)}
 .portal-review-actions>.portal-button--danger{margin-inline-start:0}
}
@media(max-width:400px){.student-auth{padding:var(--portal-pad)}.student-auth h2{font-size:var(--student-heading-mobile)}.portal-review-actions{flex-direction:column;align-items:stretch}}
@media(prefers-reduced-motion:reduce){.student-password-toggle,.student-password-slash{transition:none}}

/* Cabinet only: the access layout remains owned by the direct-child auth section. */
.student-body{--student-card-min:21rem;--student-detail-aside:20rem;--student-card-title:1.5rem;--student-section-title:1.375rem;--student-cabinet-title:clamp(1.75rem,3vw,2.5rem);--student-text-measure:65ch;--student-count-size:2rem}
.student-main:has(>.student-auth[hidden]) .student-heading{margin-bottom:var(--portal-pad);padding-bottom:var(--portal-pad);border-bottom:var(--portal-border) solid var(--line)}
.student-main:has(>.student-auth[hidden]) .student-heading h1{font-size:var(--student-cabinet-title)}
.student-main:has(>.student-auth[hidden]) .student-eyebrow{display:none}
.student-main:has(>.student-auth[hidden]) #student-session-label{margin-bottom:0;overflow-wrap:anywhere}
.student-list-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--portal-space);margin-bottom:var(--portal-pad)}
.student-list-heading h2{display:flex;align-items:center;gap:var(--portal-space);margin:0}
.student-list-count{display:inline-grid;place-items:center;min-width:var(--student-count-size);min-height:var(--student-count-size);padding-inline:var(--student-detail-gap);font-size:var(--portal-small);background:var(--cream);color:var(--forest);border-radius:var(--radius-sm)}
.student-body .student-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--student-card-min)),1fr));align-items:stretch}
.student-body .student-card{align-items:stretch;gap:var(--portal-gap)}
.student-body .student-card h3{font-size:var(--student-card-title);margin:0;font-weight:400;line-height:1.3}
.student-card-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--student-detail-gap);color:var(--muted);font-size:var(--portal-small)}
.student-card-status{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--student-detail-gap) var(--portal-space);margin:0;padding-block:var(--portal-gap);border-block:var(--portal-border) solid var(--line)}
.student-card-status dt{color:var(--muted)}.student-card-status dd{margin:0;text-align:end;overflow-wrap:anywhere}
.student-next-step{min-width:0}.student-next-step p{margin:0;color:var(--muted);max-width:var(--student-text-measure)}
.student-card .portal-button{align-self:flex-start}
.student-empty,.student-loading,.student-load-error{padding:var(--student-panel-pad);border:var(--portal-border) solid var(--line);border-radius:var(--radius);background:var(--white)}
.student-empty h3,.student-loading h2,.student-load-error h2{margin-top:0}.student-empty p,.student-loading p,.student-load-error p{max-width:var(--student-text-measure)}
.student-body #student-detail{max-width:none}
.student-detail-overview{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,var(--student-detail-aside));gap:var(--portal-pad);margin-block:var(--portal-space) calc(var(--portal-pad) * 2)}
.student-detail-heading h2{margin-top:var(--portal-space);font-size:var(--student-cabinet-title);line-height:1.2}.student-detail-heading .student-reference{margin:0}
.student-detail-status{min-width:0;background:var(--cream);border-radius:var(--radius);padding:var(--portal-pad)}
.student-detail-status .student-primary-status{margin-top:0}.student-detail-status .portal-badge{padding:0;margin-top:0;background:transparent}
.student-detail-status .student-next-step{padding-top:var(--portal-space);border-top:var(--portal-border) solid var(--line)}
.student-detail-status h3{font-size:var(--student-section-title);font-weight:400;line-height:1.3;margin:0 0 var(--portal-space)}
.student-detail-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,var(--student-detail-aside));gap:var(--portal-pad);align-items:start}
.student-package{min-width:0}.student-package>h3{font-size:var(--student-section-title);font-weight:400;margin:0 0 var(--portal-space)}
.student-save-note{max-width:var(--student-text-measure);color:var(--muted);margin:0 0 var(--portal-pad)}
.student-body .student-original{min-width:0;margin:0;padding:var(--portal-pad);border:var(--portal-border) solid var(--line);border-radius:var(--radius);background:var(--white)}
.student-original summary{font-weight:400;line-height:1.5;overflow-wrap:anywhere}.student-original[open] summary{padding-bottom:var(--portal-space);border-bottom:var(--portal-border) solid var(--line)}
.student-original .student-data{grid-template-columns:minmax(0,1fr);gap:var(--student-detail-gap)}.student-original .student-data dd{margin-bottom:var(--portal-space)}
.student-body .student-fields{display:grid;gap:var(--portal-gap)}.student-body .student-fields>.portal-field{margin:0;gap:var(--portal-space)}
.student-file-formats{order:0}.student-file-field>.portal-text-button{justify-self:start;text-align:start}.student-file-field>.student-file-caption{margin:0;font-size:var(--portal-small)}
.student-fields .portal-field label{overflow-wrap:anywhere}.student-fields .portal-field small:empty{display:none}
.student-body .student-submit-panel{padding:var(--portal-pad);border:var(--portal-border) solid var(--line);border-radius:var(--radius);background:var(--white)}.student-submit-panel p{margin:0 0 var(--portal-gap)}
.student-main:has(>.student-auth[hidden]) #student-message:not(:empty){padding:var(--portal-space) var(--portal-pad);border:var(--portal-border) solid var(--line);border-radius:var(--radius-sm);background:var(--cream);overflow-wrap:anywhere}
@media(max-width:900px){.student-detail-overview,.student-detail-layout{grid-template-columns:minmax(0,1fr)}.student-detail-overview{gap:var(--portal-space);margin-bottom:var(--portal-pad)}.student-detail-heading h2{margin-bottom:var(--portal-space)}.student-detail-status{padding:var(--portal-gap)}.student-detail-status .student-primary-status{margin-bottom:var(--student-detail-gap)}.student-detail-layout{gap:var(--portal-pad)}}
@media(max-width:400px){.student-list-heading{align-items:flex-start}.student-list-heading>.portal-button{padding-inline:var(--portal-space)}.student-card-status{grid-template-columns:minmax(0,1fr)}.student-card-status dd{text-align:start;overflow-wrap:normal}.student-card .portal-button{align-self:stretch}.student-card-meta{flex-direction:column}.student-body .portal-document .portal-actions{display:grid;grid-template-columns:minmax(0,1fr)}.student-body .portal-document .portal-actions>.portal-button{white-space:nowrap;overflow-wrap:normal}}
