/* Agentic Engineering portal components only. Shared layout, typography, nav, buttons and footer come from /assets/css/site.css. */
.portal-hero{padding:88px 0 70px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--paper-2),var(--paper))}
.portal-title{font-family:var(--cond);font-weight:700;text-transform:uppercase;font-size:clamp(56px,8vw,132px);line-height:.9;letter-spacing:-.012em;margin:0 0 26px;max-width:980px}
.progress-panel{display:grid;grid-template-columns:280px 1fr;gap:28px;align-items:center;border:1px solid var(--line-2);border-radius:8px;background:var(--paper-2);padding:24px;margin-top:38px}
.progress-copy strong{display:block;font-family:var(--cond);font-size:42px;line-height:1;margin:8px 0 6px}
.progress-copy p{margin:0;color:var(--muted);font-size:14px}
.portal-account{margin-top:10px}
.portal-signin{display:grid;gap:8px;margin-top:10px;max-width:440px}
.portal-signin-label,.portal-account-state{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.portal-signin-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.portal-signin input{min-width:220px;flex:1;border:1px solid var(--line-2);border-radius:4px;background:var(--paper);color:var(--ink);padding:10px 12px;font:14px/1.2 var(--sans)}
.portal-signin button,.portal-signout{border:1px solid var(--ink);border-radius:4px;background:var(--ink);color:var(--paper);padding:10px 12px;font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;transition:background .18s,border-color .18s,transform .18s}
.portal-signin button:hover,.portal-signout:hover{background:var(--cobalt);border-color:var(--cobalt);transform:translateY(-1px)}
.portal-signin button:disabled,.portal-signout:disabled{cursor:wait;opacity:.6;transform:none}
.portal-signed-in{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;color:var(--muted);font-size:14px}
.portal-signed-in b{color:var(--ink);font-weight:700}
.portal-account-state{margin-top:0;min-height:1.2em}
.progress-segments{display:grid;grid-template-columns:repeat(12,1fr);gap:6px}
.progress-segment{min-height:46px;border:1px solid var(--line-2);border-radius:4px;background:var(--paper);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:11px;color:var(--muted);transition:background .18s,border-color .18s,color .18s,transform .18s}
.progress-segment.is-done{background:var(--cobalt);border-color:var(--cobalt);color:#fff;transform:translateY(-2px)}
.week-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.week-card{background:var(--paper-2);border:1px solid var(--line-2);border-radius:8px;padding:24px 22px 26px;display:flex;flex-direction:column;gap:12px}
.week-card.is-complete{border-color:var(--cobalt);box-shadow:0 12px 26px -22px rgba(35,66,224,.8)}
.week-kicker{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.week-card h2{font-family:var(--cond);text-transform:uppercase;font-weight:700;font-size:34px;line-height:.95;margin:0}
.week-card p{margin:0;color:#3c3a33;font-size:14.5px;line-height:1.55}
.portal-day-list{list-style:none;margin:10px 0 0;padding:0;border-top:1px solid var(--line)}
.portal-day-list li{border-bottom:1px solid var(--line)}
.day-link{display:flex;align-items:center;gap:10px;padding:11px 0;color:#3c3a33;font-size:14px;line-height:1.35}
.day-link:hover{color:var(--cobalt)}
.day-link b{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-right:6px}
.day-state{width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line-2);border-radius:50%;font-family:var(--mono);font-size:12px;color:var(--muted);flex:0 0 auto}
.day-link.is-done .day-state{background:var(--cobalt);border-color:var(--cobalt);color:#fff}
.portal-breadcrumb{display:flex;gap:9px;align-items:center;flex-wrap:wrap;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:28px}
.portal-breadcrumb a{border-bottom:1px solid transparent;color:var(--muted)}
.portal-breadcrumb a:hover{border-color:var(--cobalt);color:var(--ink)}
.day-wrap{max-width:980px}
.outline-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}
.outline-card,.materials-card,.homework-card{background:var(--paper-2);border:1px solid var(--line-2);border-radius:8px;padding:24px}
.outline-card ul,.materials-list{list-style:none;margin:14px 0 0;padding:0}
.outline-card li,.materials-list li{position:relative;padding:10px 0 10px 22px;border-top:1px solid var(--line);color:#3c3a33;line-height:1.55}
.outline-card li:first-child,.materials-list li:first-child{border-top:0}
.outline-card li::before,.materials-list li::before{content:"—";position:absolute;left:0;color:var(--cobalt);font-family:var(--mono)}
.materials-card{margin-bottom:20px}
.materials-list a{border-bottom:2px solid var(--hl)}
.materials-list a:hover{color:var(--cobalt)}
.muted-line{margin:14px 0 0;color:var(--muted)}
.homework-card{display:flex;align-items:center;justify-content:space-between;gap:24px;border-left:4px solid var(--cobalt)}
.homework-card h2{font-family:var(--cond);font-size:34px;line-height:.98;text-transform:uppercase;margin:12px 0 10px}
.homework-card p{margin:0;color:var(--muted);font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase}
.homework-card.is-done{background:linear-gradient(0deg,rgba(35,66,224,.08),rgba(35,66,224,.08)),var(--paper-2)}
.done-check{display:inline-flex;align-items:center;gap:10px;border:1px solid var(--line-2);border-radius:999px;padding:10px 14px;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;cursor:pointer;background:var(--paper)}
.done-check input{width:18px;height:18px;accent-color:var(--cobalt)}
.day-pager{display:flex;justify-content:space-between;gap:16px;margin-top:26px}
.pager-link{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--ink);background:var(--ink);color:var(--paper);border-radius:4px;padding:13px 18px;font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;transition:transform .18s,background .18s,border-color .18s}
.pager-link:hover{background:var(--cobalt);border-color:var(--cobalt);transform:translateY(-2px)}
.pager-link.ghost{background:transparent;color:var(--ink);border-color:var(--line-2)}
.pager-link.ghost:hover{background:transparent;border-color:var(--ink)}
@media(max-width:980px){.week-grid{grid-template-columns:1fr 1fr}.progress-panel{grid-template-columns:1fr}.progress-segments{grid-template-columns:repeat(6,1fr)}}
@media(max-width:680px){.portal-hero{padding:62px 0 52px}.week-grid,.outline-grid{grid-template-columns:1fr}.homework-card{align-items:flex-start;flex-direction:column}.day-pager{flex-direction:column}.progress-segments{grid-template-columns:repeat(4,1fr)}}
html[data-theme="dark"] .portal-hero{background:linear-gradient(180deg,#161512,#0f0e0c)}
html[data-theme="dark"] .week-card p,html[data-theme="dark"] .day-link,html[data-theme="dark"] .outline-card li{color:#c9c3b3}
html[data-theme="dark"] .progress-panel,html[data-theme="dark"] .week-card,html[data-theme="dark"] .outline-card,html[data-theme="dark"] .materials-card,html[data-theme="dark"] .homework-card{background:#1a1814}
html[data-theme="dark"] .progress-segment,html[data-theme="dark"] .done-check,html[data-theme="dark"] .portal-signin input{background:#11100e}

/* Lesson-page component library. Prefix: ls- (lesson). */
.ls-label,.ls-hook-kicker,.ls-slot-label,.ls-prompt-label,.ls-map-time,.ls-time,.ls-recap-title{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.ls-hook{border:1px solid var(--line-2);border-radius:10px;background:linear-gradient(135deg,rgba(35,66,224,.08),transparent 42%),var(--paper-2);padding:26px;margin:0 0 22px}
.ls-hook-kicker{display:block;color:var(--cobalt);margin-bottom:16px}
.ls-hook-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ls-slot{border:1px solid var(--line);border-radius:8px;background:var(--paper);padding:18px 20px;min-height:112px}
.ls-slot-label{display:block;margin-bottom:8px}
.ls-slot strong{display:block;font-family:var(--cond);font-size:clamp(30px,4vw,48px);line-height:.95;text-transform:uppercase;letter-spacing:-.005em;color:var(--ink)}
.ls-map{display:grid;grid-template-columns:1fr .55fr 1fr;gap:8px;margin:24px 0 32px;padding:8px;border:1px solid var(--line-2);border-radius:999px;background:var(--paper-2)}
.ls-map-link,.ls-map-break{display:flex;align-items:center;justify-content:center;gap:10px;min-height:46px;border:1px solid var(--line);border-radius:999px;background:var(--paper);text-align:center;transition:transform .18s,border-color .18s,background .18s,color .18s}
.ls-map-link:hover{border-color:var(--cobalt);color:var(--cobalt);transform:translateY(-1px)}
.ls-map-break{color:var(--muted);background:transparent}
.ls-map-title{font-weight:600;color:var(--ink)}
.ls-map-time{font-size:10px;color:var(--muted)}
.ls-map-link:focus-visible,.ls-copy:focus-visible{outline:2px solid var(--hl);outline-offset:2px}
.ls-prompt{border:1px solid #34322d;border-radius:10px;background:#101114;color:#eee8dc;overflow:hidden;box-shadow:0 18px 34px -30px rgba(0,0,0,.8)}
.ls-prompt-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 12px 10px 16px;border-bottom:1px solid #302f2b;background:#18191d}
.ls-prompt-label{color:#9fb0ff}
.ls-copy{border:1px solid #555b78;border-radius:999px;background:transparent;color:#eee8dc;padding:8px 11px;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;transition:background .18s,border-color .18s,color .18s,transform .18s}
.ls-copy:hover,.ls-copy.is-copied{background:#eef0ff;border-color:#eef0ff;color:#101114;transform:translateY(-1px)}
.ls-prompt pre{margin:0;padding:18px 20px;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;overflow-x:auto;font:13px/1.65 var(--mono);color:#f7f2e8;background:transparent}
.ls-try{border:1px solid var(--line-2);border-left:5px solid var(--cobalt);border-radius:10px;background:var(--paper-2);padding:22px;margin:28px 0}
.ls-try>.ls-label{display:block;color:var(--cobalt);margin-bottom:12px}
.ls-try .ls-prompt{margin:14px 0}
.ls-see{border:1px solid var(--line);border-radius:8px;background:var(--paper);padding:16px 18px;margin-top:14px;color:var(--muted)}
.ls-see b{display:block;color:var(--ink);margin-bottom:4px}
.ls-see p{margin:0}
.ls-aha{margin:16px 0 0;color:var(--cobalt);font-size:18px;line-height:1.45;font-weight:600}
.ls-term{border:1px solid #30333a;border-radius:10px;background:#0d0f14;color:#e6e1d7;margin:24px 0;overflow:hidden;box-shadow:0 18px 34px -30px rgba(0,0,0,.9)}
.ls-term-bar{display:flex;align-items:center;gap:7px;height:34px;padding:0 13px;border-bottom:1px solid #252832;background:#171a21}
.ls-dot{width:10px;height:10px;border-radius:50%;background:#ff5f56;box-shadow:17px 0 0 #ffbd2e,34px 0 0 #27c93f;flex:0 0 auto}
.ls-term-body{margin:0;padding:18px 20px;font:13px/1.7 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere}
.ls-term .cmd,.ls-term .out{display:block}
.ls-term .cmd{color:#f7f2e8}
.ls-term .cmd::before{content:"$ ";color:#8fa2ff}
.ls-term .out{color:#8f948f}
.ls-chat{display:flex;flex-direction:column;gap:12px;border:1px solid var(--line-2);border-radius:10px;background:var(--paper-2);padding:18px;margin:24px 0}
.ls-chat-meta{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}
.ls-chat .you,.ls-chat .agent{max-width:82%;border-radius:16px;padding:13px 15px;line-height:1.55}
.ls-chat .you{align-self:flex-end;background:var(--cobalt);color:#fff;border-bottom-right-radius:4px}
.ls-chat .agent{align-self:flex-start;background:var(--paper);border:1px solid var(--line);color:var(--ink);border-bottom-left-radius:4px}
.ls-chat .agent.code{font-family:var(--mono);font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere}
details.ls-trouble,details.ls-os,details.ls-quiz{border-radius:10px;margin:16px 0;overflow:hidden;background:var(--paper-2)}
details.ls-trouble{border:1px solid rgba(194,90,28,.32);border-left:4px solid #c25a1c}
details.ls-os{border:1px solid rgba(141,141,150,.32);border-left:4px solid #8d8d96}
details.ls-quiz{border:1px solid rgba(160,120,32,.32);border-left:4px solid #a07820}
details.ls-trouble summary,details.ls-os summary,details.ls-quiz summary{position:relative;list-style:none;cursor:pointer;padding:16px 48px 16px 20px;font-weight:600;line-height:1.45}
details.ls-trouble summary::-webkit-details-marker,details.ls-os summary::-webkit-details-marker,details.ls-quiz summary::-webkit-details-marker{display:none}
details.ls-trouble summary::after,details.ls-os summary::after,details.ls-quiz summary::after{content:"+";position:absolute;right:20px;top:13px;font:700 22px/1 var(--mono);color:var(--muted)}
details.ls-trouble[open] summary::after,details.ls-os[open] summary::after,details.ls-quiz[open] summary::after{content:"–"}
details.ls-trouble summary{background:rgba(194,90,28,.1);color:#8f3d12}
details.ls-trouble summary::after{color:#c25a1c}
details.ls-os summary{background:rgba(141,141,150,.09);color:var(--muted)}
details.ls-quiz summary{background:rgba(160,120,32,.1)}
details.ls-quiz summary::after{color:#a07820}
.ls-fix,.ls-os-body,.ls-answer{padding:0 20px 18px;color:var(--muted)}
.ls-fix ol,.ls-answer p,.ls-os-body p{margin:0}
.ls-fix ol{padding-left:20px}
.ls-fix li+li{margin-top:7px}
.ls-answer b{color:#2e6b4f}
.ls-hw{border:1px solid var(--line-2);border-left:5px solid var(--cobalt);border-radius:10px;background:var(--paper-2);padding:24px;margin:30px 0}
.ls-hw.is-complete{background:linear-gradient(0deg,rgba(35,66,224,.08),rgba(35,66,224,.08)),var(--paper-2)}
.ls-hw-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}
.ls-hw-goal{font-size:18px;line-height:1.5;margin:6px 0 0;max-width:680px}
.ls-time{display:inline-flex;align-items:center;white-space:nowrap;border:1px solid var(--line-2);border-radius:999px;padding:8px 12px;background:var(--paper);color:var(--cobalt)}
.ls-hw-steps{counter-reset:hw;list-style:none;margin:18px 0;padding:0;border-top:1px solid var(--line)}
.ls-hw-steps li{counter-increment:hw;border-bottom:1px solid var(--line);padding:13px 0}
.ls-hw-steps label{display:grid;grid-template-columns:24px 34px 1fr;gap:10px;align-items:start;cursor:pointer;color:var(--ink)}
.ls-hw-steps label::before{content:counter(hw);display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--ink);color:var(--paper);font:12px/1 var(--mono);grid-column:2}
.ls-hw-steps input{grid-column:1;grid-row:1;width:18px;height:18px;margin-top:3px;accent-color:var(--cobalt)}
.ls-hw-steps span{grid-column:3}
.ls-hw-done{margin:18px 0 0;padding:16px 18px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}
.ls-hw-done b{display:block;margin-bottom:6px}
.ls-hw-done ul{margin:0;padding-left:20px;color:var(--muted)}
.ls-escape{margin-top:14px;border:1px dashed var(--line-2);border-radius:8px;padding:14px 16px;background:rgba(255,232,0,.12);color:var(--ink)}
.ls-escape b{display:block;margin-bottom:3px}
.ls-hw-nudge{margin:16px 0 0;border-radius:8px;background:var(--cobalt);color:#fff;padding:12px 14px;font-weight:600}
.ls-hw-nudge[hidden]{display:none}
.ls-recap{border:1px solid var(--line-2);border-radius:10px;background:linear-gradient(135deg,rgba(255,232,0,.18),transparent 42%),var(--paper-2);padding:24px;margin:30px 0 0}
.ls-recap-grid{display:grid;grid-template-columns:1fr minmax(220px,.55fr);gap:22px;align-items:start}
.ls-recap-title{display:block;color:var(--cobalt);margin-bottom:10px}
.ls-recap ul{margin:0;padding-left:20px;color:var(--ink)}
.ls-recap li+li{margin-top:7px}
.ls-next{border-left:3px solid var(--cobalt);padding-left:16px;color:var(--muted)}
.ls-next b{display:block;color:var(--ink);margin-bottom:4px}
@media(max-width:780px){.ls-hook-grid,.ls-recap-grid{grid-template-columns:1fr}.ls-map{grid-template-columns:1fr;border-radius:12px}.ls-map-link,.ls-map-break{border-radius:8px}.ls-hw-head{align-items:flex-start;flex-direction:column}.ls-chat .you,.ls-chat .agent{max-width:100%}}
@media(max-width:560px){.ls-hook,.ls-try,.ls-hw,.ls-recap{padding:18px}.ls-hw-steps label{grid-template-columns:24px 1fr}.ls-hw-steps label::before{display:none}.ls-hw-steps span{grid-column:2}.ls-prompt pre,.ls-term-body{font-size:12px;padding:15px}}
html[data-theme="dark"] .ls-hook,html[data-theme="dark"] .ls-slot,html[data-theme="dark"] .ls-map,html[data-theme="dark"] .ls-map-link,html[data-theme="dark"] .ls-try,html[data-theme="dark"] .ls-see,html[data-theme="dark"] .ls-chat,html[data-theme="dark"] .ls-chat .agent,html[data-theme="dark"] details.ls-trouble,html[data-theme="dark"] details.ls-os,html[data-theme="dark"] details.ls-quiz,html[data-theme="dark"] .ls-hw,html[data-theme="dark"] .ls-time,html[data-theme="dark"] .ls-hw-done,html[data-theme="dark"] .ls-recap{background:#1a1814}
html[data-theme="dark"] .ls-slot,html[data-theme="dark"] .ls-map-link,html[data-theme="dark"] .ls-see,html[data-theme="dark"] .ls-chat .agent,html[data-theme="dark"] .ls-time,html[data-theme="dark"] .ls-hw-done{border-color:#3b372d}
html[data-theme="dark"] .ls-map-break{background:transparent}
html[data-theme="dark"] details.ls-trouble summary{color:#ffb078;background:rgba(194,90,28,.16)}
html[data-theme="dark"] details.ls-os summary{background:rgba(141,141,150,.13)}
html[data-theme="dark"] details.ls-quiz summary{background:rgba(160,120,32,.16)}
html[data-theme="dark"] .ls-answer b{color:#8bd4a8}
html[data-theme="dark"] .ls-escape{background:rgba(255,232,0,.1)}
html[data-theme="dark"] .ls-hw.is-complete{background:linear-gradient(0deg,rgba(85,113,255,.12),rgba(85,113,255,.12)),#1a1814}
