/* Application shell. Projection and presenter views keep their own layout. */
body.portal{--paper:#f4f7fa;--sunk:#edf2f6;--ink:#172c40;--ink-2:#3e5163;--muted:#5c6f80;--faint:#657788;--line:#dce4eb;--line-2:#eaf0f4;--accent:#086e69;--accent-ink:#04534f;--accent-soft:#e5f4f1;background:var(--paper)}
.portal h1,.portal h2,.portal h3{font-family:var(--sans);font-weight:700;letter-spacing:-.025em}
.portal > header.bar{position:fixed;inset:0 auto 0 0;width:248px;display:flex;flex-direction:column;align-items:stretch;flex-wrap:nowrap;background:#132c40;color:#fff;padding:36px 22px 24px;border:0;gap:28px;backdrop-filter:none}
.portal .brand{display:flex;gap:12px;align-items:center;color:#fff;font-family:var(--sans);font-size:14px;line-height:1.6;letter-spacing:0}
.brand-mark{display:grid;place-items:center;background:#75d6bd;color:#132c40;border-radius:10px;width:38px;height:42px;font-size:26px;font-weight:800;flex-shrink:0}
.brand-sub{display:block;color:#b1c3d1;font-size:13px}
.portal > header.bar nav{display:flex;flex-direction:column;width:100%;gap:8px;margin:20px 0 auto}
.portal > header.bar nav a{color:#c2d0dc;padding:12px 16px;font-size:15px;border-radius:8px}
.portal > header.bar nav a:hover{background:#213e54;color:white}
.portal > header.bar nav a[aria-current]{background:#25475a;color:#fff;box-shadow:inset 3px 0 #75d6bd}
.portal .who{border-top:1px solid #365064;padding-top:22px;align-items:flex-start;flex-direction:column;gap:8px}
.portal .role{background:#254155;border:0;color:#d9e5ec;font-size:13px}
.portal .out{color:#b1c3d1;padding:8px 0;font-size:14px}
.portal main{max-width:1400px;margin-left:248px;padding:0 48px 64px;min-width:0}
.page-topline{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding:22px 0;margin-bottom:36px;color:var(--muted);font-size:13px}
.page-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:28px}
.eyebrow{font-size:12px;letter-spacing:.12em;font-weight:700;color:var(--accent);margin:0 0 8px}
.page-heading h1{font-size:32px;margin:0 0 10px}.page-heading p:last-child{margin:0;font-size:14px}
.course-label{white-space:nowrap;font-size:13px;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:5px 12px;background:white}
.learning-summary{display:grid;grid-template-columns:1.6fr 1fr;gap:24px;margin-bottom:40px}
.continue-card{padding:28px 32px;border-radius:14px;background:#163f4c;color:#fff;position:relative}
.continue-card .eyebrow{color:#a8d8cf}.week-tag{font-size:13px;color:#c2d9df}
.continue-card h2{font-size:23px;line-height:1.6;margin:6px 0 24px;color:#fff}
.continue-card .btn.primary{background:#91e0c9;color:#143c3a;border:0;font-weight:700;padding:10px 20px}.continue-card .btn.primary:hover{background:#b3efdd}.continue-card .btn span{margin-left:26px}
.progress-card{padding:28px;border:1px solid var(--line);border-radius:14px;background:#fff}
.progress-card .eyebrow{color:var(--muted)}.progress-count{display:flex;align-items:baseline;gap:12px;margin:14px 0}.progress-count strong{font-size:44px;font-weight:650;line-height:1.3}.progress-count span{font-size:14px;color:var(--muted)}
progress{display:block;width:100%;height:8px;border:0;border-radius:10px;overflow:hidden;background:var(--sunk);accent-color:var(--accent)}progress::-webkit-progress-bar{background:var(--sunk)}progress::-webkit-progress-value{background:var(--accent);border-radius:10px}progress::-moz-progress-bar{background:var(--accent)}
.progress-meta{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--muted);margin-top:12px}
.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.section-heading h2{font-size:22px;margin:0}
.portal .months{border-bottom:1px solid var(--line);gap:8px;margin:0 0 24px;padding-bottom:12px}.portal .chip{border:0;border-radius:6px;background:transparent;padding:9px 20px}.portal .chip.on{background:var(--accent);color:white}.portal .chip:hover{background:var(--accent-soft);color:var(--accent)}
.month-caption{font-weight:700;font-size:16px;margin-bottom:16px}.month-caption span{font-size:13px;font-weight:400;color:var(--muted);margin-left:12px}
.portal .cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.portal .card{border-radius:12px;padding:24px;display:flex;flex-direction:column}.portal .card:hover{border-color:#92b7b8;transform:translateY(-2px)}
.portal .card .wk{display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--muted);margin-bottom:14px}.portal .card .wk span:last-child{font-size:20px;color:var(--accent)}
.portal .card h2{font-family:var(--sans);font-size:18px;margin:0 0 16px;flex:1}.portal .card .links{margin-top:20px;padding-top:16px;flex-wrap:wrap}.portal .pill{font-size:13px}.portal .pill.none{color:var(--muted)}
.portal .weekhead{background:white;border:1px solid var(--line);border-radius:12px;padding:28px;margin-bottom:32px}.portal .weekhead h1{font-size:28px}.portal .doc{max-width:780px}.portal .submit{max-width:780px}.portal .btn{min-height:44px;padding:9px 16px}.portal input,.portal textarea{background:white}.portal .tablewrap{background:white;border:1px solid var(--line);border-radius:10px}.portal .grid th{background:#edf2f6;font-size:13px}.portal .grid td{padding:16px}.portal .hint{font-size:14px}
.skip-link{position:fixed;top:8px;left:12px;transform:translateY(-150%);z-index:100;background:white;padding:10px 20px;border-radius:6px}.skip-link:focus{transform:none}
.portal.signed-out > header.bar{position:relative;width:auto;padding:24px 40px}.portal.signed-out main{margin:auto;padding:0 24px;max-width:540px}.portal .login{margin:56px auto;background:white;border:1px solid var(--line);padding:32px;border-radius:16px;max-width:480px;box-shadow:0 12px 40px #17394b08}.portal .login h1{font-size:28px}.portal .login .muted{font-size:14px}.portal .login form{margin-top:28px}.portal .demo{margin-top:28px;padding:12px}.portal .demo .tablewrap{border:0}.portal .demo td{white-space:nowrap}
@media(min-width:1700px){.portal main{margin-right:auto;margin-left:calc(248px + (100vw - 1648px)/2)}}
@media(max-width:1100px){.portal > header.bar{width:212px;padding:28px 16px}.portal main{margin-left:212px;padding:0 28px 48px}.learning-summary{grid-template-columns:1.3fr 1fr;gap:16px}.continue-card,.progress-card{padding:24px}.course-label{display:none}}
@media(max-width:760px){.portal > header.bar{position:relative;width:auto;display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;padding:16px 20px;gap:14px}.portal .brand{margin-right:auto}.portal .who{border:0;padding:0;font-size:13px;gap:2px}.portal .who .role{font-size:12px}.portal .out{font-size:12px;padding:0}.portal > header.bar nav{order:3;flex-direction:row;width:100%;margin:0;gap:4px;overflow-x:auto}.portal > header.bar nav a{white-space:nowrap;padding:9px 14px;font-size:14px}.portal > header.bar nav a[aria-current]{box-shadow:inset 0 -2px #75d6bd}.portal main{margin:0;padding:0 20px 40px}.page-topline{padding:14px 0;margin-bottom:24px}.page-topline span:last-child{display:none}.page-heading h1{font-size:26px}.learning-summary{grid-template-columns:1fr;gap:14px;margin-bottom:28px}.continue-card h2{font-size:21px}.progress-card{padding:20px 24px}.progress-count{margin:8px 0}.progress-count strong{font-size:36px}.portal .cards{grid-template-columns:1fr}.portal .months{flex-wrap:nowrap;overflow-x:auto;gap:4px}.portal .chip{white-space:nowrap;padding:9px 15px;flex-shrink:0}.section-heading .small{font-size:12px}.portal .weekhead{padding:20px}.portal .weekhead h1{font-size:23px}.portal .submit{padding:20px}.portal.signed-out > header.bar{padding:20px}.portal .login{margin:28px auto;padding:24px}.portal .doc{overflow-wrap:anywhere}.portal .grid{min-width:540px}}
@media(prefers-reduced-motion:reduce){.portal .card:hover{transform:none}}

.portal > header.bar{overflow-y:auto}
.portal .stat .num{font-family:var(--sans)}

.portal .logout-form{margin:0}.portal .logout-form button.out{background:transparent;border:0;box-shadow:none;text-align:left;font-weight:400;width:100%;min-height:44px}.portal .logout-form button.out:hover{color:#fff}
/* Learning, feedback, and administration share the portal's existing surfaces. */
.feature-panel{background:#fff;border:1px solid var(--line);border-radius:12px;padding:24px;margin:24px 0}.feature-panel h2{margin:0 0 12px;font-size:21px}.feature-panel p:last-child{margin-bottom:0}
.lesson-checks label{display:flex;align-items:center;gap:12px;margin:12px 0;font-weight:500}.portal input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent);flex-shrink:0}
.draft-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:24px;font-size:14px}.draft-toolbar span{max-width:70%;overflow-wrap:anywhere}
.portal select{font:inherit;min-height:44px;width:100%;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);padding:8px 12px}
.filterbar{display:flex;gap:16px;align-items:end;background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;margin:24px 0}.filterbar label{flex:1}.filterbar button{min-height:46px}
.notice{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#fff;border:1px solid var(--line);padding:24px;border-radius:12px;margin:16px 0}.notice.unread{border-left:4px solid var(--accent)}.notice h2{font-size:18px;margin:8px 0}.notice-count{display:inline-block;background:#91e0c9;color:#143c3a;border-radius:20px;padding:0 8px;margin-left:8px;font-weight:700}
.account-fields{display:grid;grid-template-columns:1fr 1fr;gap:20px}.account-actions{display:flex;gap:8px;flex-wrap:wrap}.account-actions .btn{white-space:nowrap}.portal .flash.success{background:var(--ok-soft);color:var(--ok);border-left:3px solid var(--ok)}
@media(max-width:760px){.filterbar,.notice{align-items:stretch;flex-direction:column}.account-fields{grid-template-columns:1fr}.draft-toolbar{align-items:flex-start;flex-direction:column}.draft-toolbar span{max-width:100%}.feature-panel{padding:20px}}

@media(max-width:760px){.portal > header.bar nav{flex-wrap:wrap;overflow:visible}.portal .account-table{min-width:0;display:block}.account-table thead{display:none}.account-table tbody,.account-table tr{display:block}.portal .account-table tr{border-bottom:1px solid var(--line);padding:12px}.portal .account-table td{display:block;padding:8px;border:0;overflow-wrap:anywhere}.account-table td::before{content:attr(data-label);display:block;font-size:12px;font-weight:700;color:var(--muted);margin-bottom:4px}.account-actions{gap:10px}}
/* Private student workspace */
.student-shortcuts,.record-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:16px 0}.record-actions form{margin:0}.editor-form{display:grid;gap:22px;max-width:900px}.editor-form label{display:grid;gap:8px}.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px}.preserve{white-space:pre-wrap;overflow-wrap:anywhere}.journal-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.journal-card{padding:0;overflow:hidden;margin:0}.journal-content{padding:24px}.journal-content h3{font-family:var(--sans);font-size:14px;color:var(--muted);margin:20px 0 8px}.journal-photo{width:100%;max-height:320px;object-fit:contain;background:#eaf0f4;display:block}.editor-photo{max-width:100%;max-height:300px;object-fit:contain;justify-self:start}.saved-quote{border-left:3px solid var(--accent);background:var(--accent-soft);padding:16px 20px;margin:20px 0}.week-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden;margin:24px 0}.calendar-day{min-height:180px;padding:14px 10px;border-right:1px solid var(--line)}.calendar-day:last-child{border:0}.calendar-day h3{font-family:var(--sans);font-size:14px;margin:0 0 14px}.calendar-day h3 span{display:block;color:var(--muted);font-size:12px}.calendar-item{display:grid;gap:6px;background:var(--accent-soft);color:var(--accent);text-decoration:none;border-radius:8px;padding:10px;margin-bottom:10px;overflow-wrap:anywhere;font-size:13px}.calendar-item time,.calendar-item span{font-size:12px}.calendar-item.completed{background:var(--sunk);color:var(--muted)}.planning-columns{display:grid;grid-template-columns:1.2fr 1fr;gap:28px}.planning-columns h2{font-size:22px}.agenda-item{background:#fff;border:1px solid var(--line);border-radius:10px;margin:16px 0;padding:20px}.agenda-item h3{font-family:var(--sans);font-size:18px;margin:0 0 8px}.agenda-item p:last-child{margin:0}.overdue{color:#92551b;font-size:14px}.privacy-callout{background:var(--accent-soft);border-left:3px solid var(--accent);border-radius:8px;padding:20px 24px;margin:24px 0}.privacy-callout p{font-size:14px;margin:8px 0 0}.portfolio-choice{border:1px solid var(--line);border-radius:10px;padding:18px}.portfolio-choice label{display:flex;align-items:center;gap:10px}.portfolio-choice p{margin:12px 0}.portal #plan-form{scroll-margin-top:24px}
@media(max-width:1000px){.week-calendar{grid-template-columns:repeat(4,minmax(0,1fr))}.calendar-day{border-bottom:1px solid var(--line)}.journal-grid{grid-template-columns:1fr}}
@media(max-width:760px){.field-pair,.planning-columns{grid-template-columns:1fr}.week-calendar{grid-template-columns:1fr}.calendar-day{min-height:0;border-right:0;padding:16px}.calendar-day h3 span{display:inline;margin-left:8px}.calendar-item{font-size:15px}.section-heading{align-items:flex-start;flex-direction:column}.journal-content{padding:20px}.page-heading{align-items:flex-start;flex-direction:column}.student-shortcuts .btn{flex:1;text-align:center}.editor-form{gap:20px}}
/* Daily priorities and student support. */
.today-focus{background:#173e49;color:#fff;padding:clamp(24px,4vw,48px);border-radius:18px;margin:24px 0}.today-focus .eyebrow{color:#9ae0d1}.today-focus h2{font-size:clamp(25px,3vw,36px);margin:12px 0}.today-focus p{max-width:640px;line-height:1.8}.today-focus .btn{margin-top:12px;background:#a5e5d8;color:#163b43;border-color:#a5e5d8}.today-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0 36px}.today-stats>div{background:#fff;border:1px solid var(--line);border-radius:12px;padding:22px}.today-stats b,.today-stats span{display:block}.today-stats b{font-size:30px}.today-stats small{font-size:16px;font-weight:400}.today-stats span{font-size:13px;color:var(--muted);margin-top:6px}.support-filters{margin:24px 0}.support-list h2{font-size:21px}.support-list .feature-panel{margin:14px 0}.support-check{display:flex;align-items:flex-start;gap:12px;margin:18px 0;line-height:1.8}.support-check input{width:20px;flex:none;margin-top:6px}.teacher-reply{border-left:4px solid #168478;background:#eef8f5}.revision-row{display:flex;justify-content:space-between;align-items:center;gap:18px;border-bottom:1px solid var(--line);padding:12px 0}.revision-row p{flex:1;min-width:0}.revision-row form{flex:none}.guide-search{padding:24px;background:#fff;border:1px solid var(--line);border-radius:12px;margin:28px 0}.guide-search label{display:block;margin-bottom:8px}.guide-search input{flex:1;min-width:150px}.guide-list summary{font-size:19px;font-weight:650;line-height:1.6}.guide-steps{padding-left:24px}.guide-steps li{padding:8px 0 16px 6px;line-height:1.9}.guide-success{background:#eef8f5;border-left:3px solid #168478;padding:12px 18px;border-radius:4px}.guide-success p{margin:5px 0}.guide-success b{font-size:13px}.portal .bar nav{overflow-y:auto;min-height:0}.portal .bar .who{flex-shrink:0}
@media(max-width:720px){.today-stats{gap:8px}.today-stats>div{padding:14px 10px}.today-stats b{font-size:25px}.today-stats small{font-size:12px}.today-stats span{font-size:11px}.revision-row{align-items:flex-start;flex-direction:column}.guide-search{padding:18px}.portal .bar nav{overflow-y:visible}.support-list .section-heading{align-items:flex-start;gap:12px}.today-focus{border-radius:12px}}
.sso-login{padding:22px;background:#edf8f5;border:1px solid #c8e6df;border-radius:12px;margin:24px 0}.sso-login h2,.login h2{font-size:18px}.sso-login form{margin:12px 0}.login-divider{display:flex;align-items:center;gap:16px;color:#69808d;font-size:12px;margin:24px 0}.login-divider::before,.login-divider::after{content:'';height:1px;background:#d8e2e9;flex:1}.login-settings-link{font-size:12px;color:#b7cbd6;padding:12px 0;flex:none}
