.portal-body { min-height:100dvh; display:flex; flex-direction:column; }
.portal-nav,.portal-footer { width:min(1120px,calc(100% - 48px)); margin-inline:auto; display:flex; align-items:center; justify-content:space-between; gap:16px; }
.portal-nav { padding:30px 0; }
.portal-brand { display:flex; align-items:center; gap:14px; color:var(--text); font-weight:600; font-size:.95rem; }
.portal-brand:hover { text-decoration:none; }
.edition { font-size:.65rem; letter-spacing:.16em; color:var(--text-3); }
.portal-main { flex:1; display:grid; grid-template-columns:1.15fr 1fr; gap:80px; align-items:center; width:min(1040px,calc(100% - 48px)); margin:40px auto 64px; }
.portal-intro h1 { font-size:clamp(2.2rem,4vw,3.3rem); line-height:1.35; font-weight:650; letter-spacing:-.04em; margin:20px 0; }
.portal-intro h1 span { color:#b9acee; }
.portal-description { font-size:1rem; line-height:1.9; color:var(--text-2); }
.portal-languages { display:flex; flex-wrap:wrap; gap:16px; color:var(--text-3); font-size:.75rem; margin-top:26px; }
.portal-example { margin-top:36px; padding:20px 24px; border-left:2px solid var(--brand); background:#191c26; border-radius:0 12px 12px 0; }
.example-label { font-size:.7rem; color:var(--text-3); display:flex; align-items:center; gap:8px; }
.example-label .dot { width:6px; height:6px; }
.portal-example p { font-size:1.12rem; margin:14px 0 8px; }
.portal-example>span { font-size:.84rem; color:var(--text-2); }
.portal-entry { border:1px solid var(--border); padding:32px; border-radius:24px; background:var(--surface); }
.entry-step { font-size:.72rem; color:var(--brand); letter-spacing:.08em; }
.portal-entry h2 { font-size:1.3rem; margin:14px 0 8px; }
.portal-entry>.muted { font-size:.88rem; margin:0 0 26px; line-height:1.8; }
.portal-entry form label { font-size:.85rem; }
.portal-entry form label>span { margin-left:8px; font-size:.75rem; }
.portal-code { font-size:1.25rem; letter-spacing:.08em; min-height:60px; background:#11141d; }
.portal-entry .btn-primary { justify-content:space-between; width:100%; }
.entry-help { font-size:.75rem; color:var(--text-3); margin:16px 0 32px; }
.teacher-entry { border-top:1px solid var(--border); padding-top:26px; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px; }
.teacher-entry h3 { font-size:.94rem; margin-top:8px; font-weight:500; }
.teacher-entry .btn { font-size:.84rem; }
.portal-footer { border-top:1px solid var(--border); padding:24px 0 calc(24px + env(safe-area-inset-bottom,0px)); font-size:.75rem; color:var(--text-3); }
.portal-footer a { color:var(--text-3); min-height:44px; display:flex; align-items:center; }
@media(max-width:800px) {
 .portal-main { grid-template-columns:1fr; gap:28px; width:min(520px,calc(100% - 40px)); margin:16px auto 32px; }
 .portal-nav { width:calc(100% - 40px); padding:20px 0; }
 .portal-intro h1 { margin:12px 0; font-size:2rem; line-height:1.4; }
 .portal-intro .eyebrow { margin:8px 0; }
 .portal-description { font-size:.92rem; margin:12px 0; }
 .portal-example,.portal-languages { display:none; }
 .portal-entry { padding:24px; border-radius:20px; }
 .portal-entry h2 { font-size:1.16rem; }
 .portal-footer { width:calc(100% - 40px); font-size:.68rem; }
 .edition { font-size:.55rem; letter-spacing:.08em; }
 .portal-brand { font-size:.85rem; gap:8px; }
}
