/* Learning entrances only. Keep the critical block in the seven portal heads in sync. */
/* BEGIN PORTAL CRITICAL */
body.portal-page{margin:0;font-family:var(--font-body);line-height:1.6;background:var(--bg);color:var(--text)}
body.portal-page main.portal{width:min(1120px,calc(100% - 32px));margin:0 auto;padding:24px 0 56px}
.portal *, .portal *::before,.portal *::after{box-sizing:border-box}
.portal [hidden]{display:none!important}
.portal section{margin:0 0 36px}
.portal .portal-hero{margin:0 0 20px;padding:8px 0 0}
.portal .portal-kicker{margin:0 0 8px;font-size:13px;font-weight:700;color:var(--muted)}
.portal h1{margin:0 0 12px;font-size:clamp(28px,3.5vw,40px);line-height:1.35;letter-spacing:0}
.portal h2{margin:0 0 16px;font-size:22px;line-height:1.45;letter-spacing:0}
.portal h3{margin:0 0 8px;font-size:18px;line-height:1.5;letter-spacing:0}
.portal p{margin:0 0 12px}
.portal .portal-intro{max-width:48em;color:var(--muted);font-size:16px}
.portal .portal-breadcrumb{width:100%;margin:0 0 20px;font-size:14px}
.portal-breadcrumb li::after{content:none}
.portal-breadcrumb ol{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.portal-breadcrumb li+li::before{content:"›";margin-right:8px;color:var(--muted)}
.portal .portal-return-slot{display:flex;align-items:center;min-height:48px;margin-top:4px;font-size:14px}
.portal-return-slot p{margin:0;color:var(--muted)}
.portal .portal-course-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.portal .portal-course{display:grid;grid-template-columns:44px minmax(0,1fr);column-gap:16px;row-gap:6px;padding:20px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);text-decoration:none;min-width:0}
.portal-course .portal-course-mark{grid-row:1/4;display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:8px;background:var(--surface-3);color:var(--accent);font-size:22px;font-weight:800}
.portal-course strong{font-size:21px;line-height:1.45}
.portal-course .portal-course-desc{font-size:14px;color:var(--muted)}
.portal-course .portal-course-link{font-size:14px;color:var(--accent);font-weight:700}
.portal .portal-action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.portal .portal-action{padding:20px;border:1px solid var(--border);border-radius:12px;background:var(--surface);display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-width:0}
.portal-action p{font-size:14px;color:var(--muted);margin:0 0 12px}
.portal .portal-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:9px 16px;border:1px solid var(--accent);border-radius:7px;background:var(--surface);color:var(--accent);font-family:var(--font-ui);font-size:15px;font-weight:700;text-decoration:none;line-height:1.6;text-align:center;cursor:pointer}
.portal .portal-button--primary{background:#1d4ed8;color:#fff;border-color:#1d4ed8}
.portal-action .portal-button{margin-top:auto}
.portal .portal-secondary{margin-top:6px;font-size:14px}
@media(max-width:640px){
 body.portal-page main.portal{padding-top:16px}
 .portal section{margin-bottom:28px}
 .portal h2{font-size:20px}
 .portal .portal-course-grid{gap:12px}
 .portal .portal-course{display:flex;flex-direction:column;gap:6px;padding:16px}
 .portal-course .portal-course-mark{width:36px;height:36px;font-size:18px}
 .portal-course strong{font-size:19px}
 .portal .portal-action-grid{grid-template-columns:1fr;gap:12px}
 .portal .portal-action{display:grid;grid-template-columns:1fr auto;gap:6px 12px;padding:16px;align-items:center}
 .portal-action h3{grid-column:1;font-size:17px;margin:0}
 .portal-action p{grid-column:1;font-size:13px;margin:0}
 .portal-action .portal-button{grid-column:2;grid-row:1/3;padding:9px 12px;font-size:14px;margin:0;max-width:144px}
 .portal-action .portal-secondary{grid-column:1/-1;margin:4px 0 0}
}
.portal .portal-step-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;list-style:none;margin:0;padding:20px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);counter-reset:steps}
.portal-step-list li{position:relative;padding-left:36px;counter-increment:steps}
.portal-step-list li::before{content:counter(steps,decimal-leading-zero);position:absolute;left:0;top:1px;font-size:14px;font-weight:700;color:var(--accent)}
.portal-step-list strong{display:block;margin-bottom:6px}
.portal-step-list p{font-size:14px;color:var(--muted);margin:0 0 8px}
.portal .portal-topic-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--border)}
.portal-topic-list li{display:flex;align-items:baseline;justify-content:space-between;gap:12px 24px;flex-wrap:wrap;padding:16px 0;border-bottom:1px solid var(--border)}
.portal-topic-list strong{font-size:16px}
.portal-topic-list small{display:block;font-size:13px;color:var(--muted);margin-top:3px}
.portal-topic-links{display:flex;flex-wrap:wrap;gap:8px 18px;flex-shrink:0;font-size:14px}
.portal-topic-links a{padding:4px 0}
.portal .portal-section-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 16px;margin-bottom:12px}
.portal-section-head h2{margin:0}.portal-section-head>a{font-size:14px}
@media(max-width:640px){.portal .portal-step-list{grid-template-columns:1fr;gap:20px}.portal .portal-topic-list li{gap:8px;align-items:flex-start}.portal-topic-links{flex-shrink:1}}
/* END PORTAL CRITICAL */
.portal a{color:var(--accent);text-underline-offset:3px}
.portal a:focus-visible,.portal button:focus-visible,.portal input:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
.portal .portal-course:hover{border-color:var(--accent);background:var(--surface-3)}
.portal .portal-button:hover{background:var(--surface-3);color:var(--accent)}
.portal .portal-button--primary:hover{background:#1e40af;color:#fff}
.portal .portal-quiet{color:var(--muted);font-size:14px}
.portal .portal-search{padding:24px;background:var(--surface-3);border-radius:12px}
.portal-search label{display:block;font-weight:700;margin-bottom:10px}
.portal-search .portal-search-controls{display:flex;gap:10px}
.portal-search input{min-width:0;flex:1;min-height:46px;padding:10px 12px;border:1px solid var(--border-strong,var(--border));border-radius:7px;background:var(--surface);color:var(--text);font:inherit}
.portal-search .portal-search-note{font-size:13px;margin:8px 0 0;color:var(--muted)}
.portal .portal-support{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 28px;list-style:none;margin:0;padding:0}
.portal-support li{padding:12px 0;border-bottom:1px solid var(--border)}
.portal-support a{font-weight:700}.portal-support p{margin:5px 0 0;font-size:14px;color:var(--muted)}
.portal .portal-learning-panel{padding:24px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.portal-learning-panel>h2{font-size:18px;margin-bottom:8px}
.portal-learning-empty{display:none;margin:0;color:var(--muted);font-size:14px}
.boki-learning-state-ready .portal-learning-empty:not([hidden]){display:block}
.portal .learning-resume,.portal .learning-progress,.portal .learning-streak{min-height:0;padding:16px;margin:16px 0 0;background:var(--bg);border:1px solid var(--border);border-radius:8px;box-shadow:none}
.portal .learning-resume__title,.portal .learning-progress__title,.portal .learning-streak__title{font-size:16px}
.portal .learning-resume__meta,.portal .learning-progress__meta,.portal .learning-streak__meta{font-size:14px}
.portal .portal-resume-link{font-weight:700;padding:8px 0}
.portal .portal-details{border-top:1px solid var(--border);padding:14px 0}
.portal-details summary{cursor:pointer;font-weight:700;padding:6px 0}
.portal-details p{margin:10px 0 0;font-size:14px}
.portal .portal-next{border-left:3px solid var(--accent);padding-left:20px}
.portal .portal-next p{color:var(--muted);font-size:14px}
.portal .portal-anchor{display:block;scroll-margin-top:140px}
.portal [id]{scroll-margin-top:140px}
.portal>aside.card{box-shadow:none;border-radius:12px;margin-top:28px}
@media(max-width:640px){
 .portal .portal-support{grid-template-columns:1fr}
 .portal .portal-search,.portal .portal-learning-panel{padding:18px}
}
