:root {
  /* Type scale: every text size comes from here; nothing below 12px. */
  --fs-xs: 12px; --fs-sm: 14px; --fs-md: 16px; --fs-lg: 18px; --fs-xl: 22px; --fs-2xl: 28px;
  --ink: #0b1f3b; --muted: #64748b; --line: #e5e7eb; --paper: #f5f8fc; --white: #fff;
  --blue: #2563eb; --blue-dark: #0f4fbe; --blue-soft: #eaf2ff; --gold: #f6b84b; --gold-soft: #fff5da;
  --green: #12a477; --green-soft: #e5f8f2; --red: #ef4444; --red-soft: #fff0f0; --navy: #0b1f3b; --navy-deep: #07162b;
  --violet: var(--blue); --violet-dark: var(--blue-dark); --violet-soft: var(--blue-soft); --coral: var(--gold); --coral-soft: var(--gold-soft);
  --mint: var(--green); --mint-soft: var(--green-soft); --amber: #e89919; --amber-soft: var(--gold-soft); --shadow: 0 8px 24px rgba(11,31,59,.07);
}
* { box-sizing: border-box; }
html { background: var(--paper); }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: "Inter", system-ui, sans-serif; font-size: var(--fs-md); line-height: 1.5; }
button, select, input, textarea { font: inherit; } button { cursor: pointer; }
.app-shell { min-height: 100vh; display: grid; grid-template-columns: 218px minmax(0,1fr); }
.sidebar { position: sticky; top: 0; height: 100vh; padding: 25px 15px 18px; background: linear-gradient(180deg,var(--navy),var(--navy-deep)); color: white; display: flex; flex-direction: column; z-index: 10; box-shadow: 5px 0 22px rgba(11,31,59,.12); }
.brand { display:flex; gap:9px; align-items:center; color:white; text-decoration:none; font-weight:600; font-size:var(--fs-2xl); line-height:1; padding:0 10px 27px; letter-spacing:-.04em; }
.brand-mark { width:24px; height:29px; position:relative; display:block; flex:none; }
.brand-mark::before,.brand-mark::after { content:""; position:absolute; bottom:0; width:5px; border-radius:4px; background:white; transform-origin:bottom; }
.brand-mark::before { height:26px; left:8px; transform:rotate(27deg); }
.brand-mark::after { height:20px; right:4px; transform:rotate(-27deg); background:linear-gradient(#fff 0 64%,var(--gold) 65%); }
.brand-mark i::before { content:"✦"; position:absolute; color:var(--gold); font-style:normal; font-size:var(--fs-md); right:-2px; top:-8px; z-index:2; }
.role-switcher { margin-bottom:19px; padding:10px 11px; border:1px solid rgba(255,255,255,.13); border-radius:8px; background:rgba(255,255,255,.07); }
.role-switcher > span { display:block; color:#9fb2cd; font-size:var(--fs-xs); font-weight:700; letter-spacing:.08em; text-transform:uppercase; margin-bottom:4px; }
.role-switcher select { width:100%; border:0; background:transparent; color:white; font-weight:600; font-size:var(--fs-sm); outline:none; } .role-switcher option { color:var(--ink); }
nav { display:grid; gap:4px; }
.nav-item { border:0; background:transparent; display:flex; align-items:center; gap:11px; padding:10px 12px; border-radius:7px; color:#e2e9f3; font-weight:500; font-size:var(--fs-sm); text-align:left; transition:.15s; }
.nav-item:hover { background:rgba(255,255,255,.08); color:white; }.nav-item span { width:18px; text-align:center; font-size:var(--fs-md); color:#d8e4f4; }
.nav-item.active { background:linear-gradient(90deg,#0c55c9,var(--blue)); color:white; box-shadow:0 5px 14px rgba(37,99,235,.34); }
.privacy-note { margin-top:auto; display:flex; gap:9px; padding:11px; border-radius:8px; border:1px solid rgba(255,255,255,.12); background:rgba(255,255,255,.06); color:#b9c9dc; font-size:var(--fs-xs); line-height:1.45; }
.privacy-note p { margin:0; }.privacy-note strong { color:white; }.privacy-note span { color:var(--gold); margin-top:1px; }
.profile-mini { margin-top:12px; display:grid; grid-template-columns:34px 1fr auto; gap:8px; align-items:center; border:0; background:transparent; text-align:left; color:white; padding:7px 5px; border-radius:8px; }
.profile-mini:hover { background:rgba(255,255,255,.07); }.profile-mini strong,.profile-mini small { display:block; }.profile-mini strong { font-size:var(--fs-xs); }.profile-mini small { color:#9fb2cd; margin-top:2px; font-size:var(--fs-xs); }
.avatar { width:34px; height:34px; border-radius:50%; display:grid; place-items:center; background:#dce9ff; color:var(--blue); border:2px solid rgba(255,255,255,.85); font-weight:800; font-size:var(--fs-xs); }
main { min-width:0; background:radial-gradient(circle at 80% 0%,#eaf3ff 0,transparent 32%),var(--paper); }
.topbar { min-height:130px; padding:20px clamp(24px,3.5vw,48px) 16px; display:flex; align-items:flex-start; justify-content:space-between; gap:20px; }
.topbar-copy { flex:1; min-width:0; }.global-search { width:min(500px,65%); height:36px; display:flex; align-items:center; gap:8px; padding:0 12px; border:1px solid #dbe4f0; border-radius:8px; background:rgba(255,255,255,.9); color:#7890ad; }
.global-search input { border:0; outline:0; background:transparent; width:100%; color:var(--ink); font-size:var(--fs-xs); }.global-search input::placeholder { color:#8da0b8; }.page-intro { margin-top:17px; }
.topbar small { color:var(--muted); font-size:var(--fs-xs); }.topbar h1 { margin:5px 0 0; font-size:clamp(22px,2.6vw,30px); line-height:1.15; font-weight:700; letter-spacing:-.035em; }
.top-actions { display:flex; gap:8px; padding-top:2px; }.icon-button { width:36px; height:36px; display:grid; place-items:center; border:1px solid #dbe4f0; border-radius:8px; background:white; color:var(--navy); font-size:var(--fs-lg); }
.notification { position:relative; }.notification::after { content:""; position:absolute; width:7px; height:7px; border-radius:50%; background:var(--red); right:7px; top:6px; border:2px solid white; }.mobile-menu { display:none; border:0; background:transparent; font-size:var(--fs-xl); }
.content { padding:2px clamp(24px,3.5vw,48px) 54px; max-width:1440px; }
.hero { min-height:190px; border-radius:12px; padding:29px 32px; display:flex; align-items:center; justify-content:space-between; overflow:hidden; position:relative; background:linear-gradient(125deg,#0b1f3b 0%,#123d7a 56%,#2563eb 100%); color:white; box-shadow:var(--shadow); border:1px solid rgba(255,255,255,.12); }
.hero::before { content:""; position:absolute; inset:0; background:radial-gradient(circle at 78% 25%,rgba(246,184,75,.3) 0 2px,transparent 3px),radial-gradient(circle at 90% 15%,rgba(255,255,255,.7) 0 1px,transparent 2px),linear-gradient(160deg,transparent 57%,rgba(255,255,255,.08) 57.3%,transparent 58%); background-size:170px 130px,210px 140px,100% 100%; }
.hero::after { content:""; position:absolute; width:270px; height:115px; right:-30px; bottom:-45px; border-radius:50% 50% 0 0; background:linear-gradient(160deg,#1f5ba2,#0b1f3b); opacity:.7; transform:rotate(-4deg); }
.hero.family-hero { background:linear-gradient(125deg,#dbeaff 0%,#edf5ff 58%,#c9ddfa); color:var(--navy); border-color:#ccdcf0; }.hero.family-hero p { color:#38577f; }.hero.family-hero::after { background:linear-gradient(160deg,#7aa4dc,#3165ac); opacity:.32; }
.hero-copy { max-width:570px; position:relative; z-index:1; }.eyebrow { font-size:var(--fs-xs); letter-spacing:.11em; text-transform:uppercase; font-weight:800; color:inherit; opacity:.8; }
.hero h2 { margin:9px 0; font-size:clamp(24px,3vw,36px); line-height:1.13; font-weight:700; letter-spacing:-.04em; }.hero p { margin:0; color:rgba(255,255,255,.82); max-width:500px; line-height:1.55; font-size:var(--fs-sm); }
.hero-orbit { width:135px; height:135px; border:1px solid rgba(255,255,255,.28); border-radius:50%; position:relative; margin-right:28px; z-index:1; }.hero-orbit::before { content:"✦"; position:absolute; inset:27px; border-radius:50%; display:grid; place-items:center; background:rgba(255,255,255,.13); font-size:38px; color:var(--gold); }
.hero-orbit i { position:absolute; width:14px; height:14px; background:var(--gold); border-radius:50%; top:8px; left:22px; box-shadow:90px 78px 0 #d7efff,97px 12px 0 white; }
.section-heading { display:flex; justify-content:space-between; align-items:end; margin:27px 0 11px; gap:18px; }.section-heading h2 { margin:0; font-size:var(--fs-md); line-height:1.2; font-weight:700; letter-spacing:-.02em; }.section-heading p { margin:4px 0 0; color:var(--muted); font-size:var(--fs-xs); }.text-button { border:0; background:transparent; color:var(--blue); font-weight:600; font-size:var(--fs-xs); }
.grid { display:grid; gap:13px; }.grid.two { grid-template-columns:repeat(2,minmax(0,1fr)); }.grid.three { grid-template-columns:repeat(3,minmax(0,1fr)); }.grid.four { grid-template-columns:repeat(4,minmax(0,1fr)); }
.card { background:rgba(255,255,255,.96); border:1px solid #dfe7f1; border-radius:10px; padding:17px; box-shadow:0 3px 12px rgba(11,31,59,.035); }
.metric-card { min-height:124px; position:relative; overflow:hidden; }.metric-card::before { content:""; position:absolute; left:0; top:0; bottom:0; width:3px; background:var(--blue); }.metric-card small { color:var(--muted); font-weight:500; font-size:var(--fs-xs); }.metric-card strong { display:block; font-size:var(--fs-2xl); line-height:1.2; font-weight:700; margin:10px 0 6px; }.metric-card span { color:var(--green); font-size:var(--fs-xs); font-weight:600; }
.task { display:grid; grid-template-columns:auto 1fr auto; gap:11px; align-items:center; padding:13px 0; border-bottom:1px solid var(--line); }.task:last-child { border-bottom:0; }.check { width:21px; height:21px; border:1.5px solid #bdc9d9; border-radius:5px; background:white; color:white; }.check.done { background:var(--green); border-color:var(--green); }
.task h3,.list-item h3 { margin:0 0 3px; font-size:var(--fs-sm); }.task p,.list-item p { margin:0; color:var(--muted); font-size:var(--fs-xs); }.duration { padding:5px 8px; background:#f1f5f9; border-radius:6px; color:var(--muted); font-size:var(--fs-xs); font-weight:600; }
.opportunity { min-height:155px; position:relative; overflow:hidden; display:flex; flex-direction:column; justify-content:space-between; }.opportunity::after { content:""; position:absolute; width:85px; height:85px; border-radius:50%; right:-28px; top:-25px; background:var(--accent-soft); opacity:.9; }.opportunity .tag { color:var(--accent); font-size:var(--fs-xs); font-weight:700; text-transform:uppercase; letter-spacing:.07em; }.opportunity h3 { margin:10px 0 4px; font-size:var(--fs-md); line-height:1.25; font-weight:700; max-width:88%; }.opportunity p { color:var(--muted); font-size:var(--fs-xs); margin:0; }.affinity { display:flex; align-items:center; justify-content:space-between; margin-top:16px; font-size:var(--fs-xs); color:var(--muted); }.affinity strong { color:var(--blue); }
.list-item { display:flex; align-items:center; gap:11px; padding:12px 0; border-bottom:1px solid var(--line); }.list-item:last-child { border-bottom:0; }.item-icon { width:34px; height:34px; border-radius:7px; background:var(--blue-soft); color:var(--blue); display:grid; place-items:center; font-weight:700; flex:none; }.list-item .grow { flex:1; }
.status { padding:4px 8px; border-radius:12px; font-size:var(--fs-xs); font-weight:700; text-transform:uppercase; letter-spacing:.04em; }.status.pending,.status.review { background:var(--gold-soft); color:#b86c00; }.status.approved,.status.published { background:var(--green-soft); color:#087b59; }.status.draft { background:var(--blue-soft); color:var(--blue); }
.button { border:1px solid transparent; border-radius:7px; padding:9px 14px; font-weight:600; font-size:var(--fs-xs); }.button.primary { background:var(--blue); color:white; box-shadow:0 4px 10px rgba(37,99,235,.18); }.button.primary:hover { background:var(--blue-dark); }.button.secondary { background:white; border-color:#cad8ea; color:var(--blue); }.button.small { padding:7px 10px; }.button:disabled { opacity:.5; cursor:not-allowed; }
.teacher-summary { display:grid; grid-template-columns:40px 1fr auto; gap:11px; align-items:start; padding:3px 0; }.teacher-summary + .teacher-summary { margin-top:10px; padding-top:13px; border-top:1px solid var(--line); }.summary-actions { display:flex; gap:6px; }.summary-preview { color:var(--muted); font-size:var(--fs-xs); line-height:1.5; margin:7px 0 0; max-width:650px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.progress-ring { width:108px; height:108px; border-radius:50%; display:grid; place-items:center; background:conic-gradient(var(--green) 0 68%,#e5eaf1 68%); position:relative; }.progress-ring::after { content:""; position:absolute; inset:10px; background:white; border-radius:50%; }.progress-ring span { position:relative; z-index:1; font-weight:800; font-size:var(--fs-xl); }.split-card { display:grid; grid-template-columns:1fr auto; gap:18px; align-items:center; }
.empty,.loading { padding:55px; text-align:center; color:var(--muted); }.toast { position:fixed; right:22px; bottom:22px; background:var(--navy); color:white; padding:12px 16px; border-radius:8px; box-shadow:var(--shadow); font-size:var(--fs-xs); opacity:0; transform:translateY(12px); pointer-events:none; transition:.2s; z-index:30; }.toast.show { opacity:1; transform:none; }
dialog { border:0; border-radius:12px; padding:0; box-shadow:0 25px 80px rgba(11,31,59,.24); width:min(680px,calc(100% - 30px)); color:var(--ink); } dialog::backdrop { background:rgba(7,22,43,.5); backdrop-filter:blur(3px); }.dialog-card { padding:26px; }.dialog-heading { display:flex; justify-content:space-between; align-items:start; }.dialog-heading h2 { margin:5px 0 20px; }.dialog-card label { display:block; font-size:var(--fs-xs); font-weight:700; margin:14px 0; }.dialog-card input,.dialog-card textarea { display:block; width:100%; margin-top:7px; border:1px solid #cad8ea; border-radius:7px; padding:11px; color:var(--ink); resize:vertical; }.helper { color:var(--muted); font-size:var(--fs-xs); line-height:1.5; }.dialog-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:18px; }
.dialog-card select{display:block;width:100%;margin-top:7px;border:1px solid #cad8ea;border-radius:9px;padding:11px;background:white;color:var(--ink)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}.form-grid label.wide{grid-column:1/-1}.button.danger{background:#fff1f1;border:1px solid #ffcaca;color:#c83a3a}.hidden{display:none!important}.crud-actions{display:flex;gap:6px;align-items:center}.crud-empty{text-align:center;padding:28px;color:var(--muted)}

/* Jornada infantil: mais cor, ritmo e elementos ilustrados sem sacrificar leitura. */
body[data-role="student"] main{background:radial-gradient(circle at 90% 4%,#eaf2ff 0 9%,transparent 23%),#f7f9ff}
body[data-role="student"] .card{border-radius:16px;border-color:#dce7f8;box-shadow:0 8px 24px rgba(37,99,235,.07)}
body[data-role="student"] .hero{min-height:215px;border-radius:18px}
body[data-role="student"] .hero-copy h2{max-width:610px}
body[data-role="student"] .metric-card strong{font-size:var(--fs-2xl)}
body[data-role="student"] .item-icon,body[data-role="student"] .opportunity-art{border-radius:14px}
body[data-role="student"] .topic-card:nth-child(1){background:linear-gradient(145deg,#fff,#e9f2ff)}
body[data-role="student"] .topic-card:nth-child(2){background:linear-gradient(145deg,#fff,#e7fbf4)}
body[data-role="student"] .topic-card:nth-child(3){background:linear-gradient(145deg,#fff,#fff1e8)}
body[data-role="student"] .topic-card:nth-child(4){background:linear-gradient(145deg,#fff,#f1eaff)}
body[data-role="student"] .screen-head h2{font-size:var(--fs-xl)}
body[data-role="student"] .button{border-radius:10px}
@media (max-width:1000px) { .grid.four{grid-template-columns:repeat(2,1fr)} .grid.three{grid-template-columns:1fr 1fr} .hero-orbit{display:none} .sidebar{width:218px;position:fixed;transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.app-shell{grid-template-columns:1fr}.mobile-menu{display:block;color:var(--navy)}.topbar{justify-content:flex-start}.top-actions{margin-left:auto}.global-search{width:min(520px,100%)} }
@media (max-width:680px) { .grid.two,.grid.three,.grid.four{grid-template-columns:1fr}.content{padding-inline:16px}.topbar{padding-inline:16px;min-height:125px}.hero{padding:25px 21px}.teacher-summary{grid-template-columns:36px 1fr}.summary-actions{grid-column:2;flex-wrap:wrap}.split-card{grid-template-columns:1fr}.progress-ring{margin:auto}.top-actions .icon-button:first-child{display:none}.global-search{display:none}.page-intro{margin-top:8px}.metric-card{min-height:105px} }

/* Complete application screens */
.screen-head { display:flex; justify-content:space-between; gap:18px; align-items:end; margin:4px 0 16px; }
.screen-head h2 { margin:0; font-size:var(--fs-xl); letter-spacing:-.035em; }.screen-head p { margin:5px 0 0; color:var(--muted); font-size:var(--fs-xs); }
.pills { display:flex; gap:6px; flex-wrap:wrap; margin:0 0 16px; }.pill { border:1px solid #dce5f1; background:white; color:var(--muted); padding:7px 12px; border-radius:20px; font-size:var(--fs-xs); font-weight:600; }.pill.active { background:var(--blue); border-color:var(--blue); color:white; }
.page-search { min-height:38px; margin-bottom:16px; padding:0 12px; display:flex; gap:8px; align-items:center; background:white; border:1px solid #dce5f1; border-radius:8px; color:#8da0b8; }.page-search input { flex:1; border:0; outline:0; font-size:var(--fs-xs); color:var(--ink); }
.opportunity-filters{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr)) auto;gap:9px;align-items:end;margin:-5px 0 18px}.opportunity-filters label{font-size:var(--fs-xs);font-weight:700;color:var(--muted)}.opportunity-filters select{display:block;width:100%;margin-top:6px;padding:9px 30px 9px 10px;border:1px solid #d5e0ee;border-radius:8px;background:white;color:var(--ink);font-size:var(--fs-xs)}.opportunity-filters .text-button{height:35px;white-space:nowrap}.opportunity-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.opportunity-meta span{padding:4px 7px;border-radius:10px;background:#f1f5fb;color:#536b89;font-size:var(--fs-xs)}.status.open{background:var(--green-soft);color:#087b59}.status.upcoming{background:var(--gold-soft);color:#a86600}.status.closed{background:#eef1f5;color:#68778a}
.school-banner { min-height:130px; display:flex; align-items:center; padding:26px 30px; margin-bottom:14px; border:1px solid #cedff5; border-radius:11px; background:linear-gradient(90deg,#e5f0ff,#f5f9ff); overflow:hidden; position:relative; }
.school-banner::after { content:""; position:absolute; right:0; inset-block:0; width:48%; background:linear-gradient(90deg,transparent,#bfdbfe); opacity:.65; }.school-banner>div{position:relative;z-index:1}.school-banner h2{margin:7px 0 4px;font-size:var(--fs-xl)}.school-banner p{margin:0;color:#476583;font-size:var(--fs-xs)}.teacher-banner{background:linear-gradient(90deg,#eaf3ff,#fff8e7)}
.featured-opportunity,.detail-hero { min-height:200px; padding:28px 30px; display:flex; align-items:center; border-radius:11px; overflow:hidden; position:relative; color:white; background:linear-gradient(110deg,#0b1f3b,#12488c 65%,#2563eb); margin-bottom:20px; }
.featured-opportunity::after,.detail-hero::after { content:"✦"; position:absolute; right:12%; font-size:76px; color:var(--gold); text-shadow:45px -30px 0 rgba(255,255,255,.6),80px 30px 0 rgba(246,184,75,.45); }.featured-opportunity>div,.detail-hero>div{position:relative;z-index:1;max-width:610px}.featured-opportunity h2,.detail-hero h2{font-size:var(--fs-xl);max-width:590px;margin:12px 0 7px}.featured-opportunity p,.detail-hero p{font-size:var(--fs-xs);color:#dbeafe;line-height:1.55}.detail-hero{min-height:245px}.back-button{border:0;background:transparent;color:var(--blue);font-size:var(--fs-xs);font-weight:600;margin:0 0 10px}.button-row{display:flex;gap:8px;margin-top:16px}.button-row.end{justify-content:space-between}.button-row.center{justify-content:center}.detail-grid{grid-template-columns:2fr 1fr}.prose h3{font-size:var(--fs-md);margin:2px 0 7px}.prose p,.muted-copy{color:var(--muted);font-size:var(--fs-xs);line-height:1.6}.big-copy{font-size:var(--fs-xl);margin:9px 0 7px}.tiny{font-size:var(--fs-xs);color:var(--muted)}
.visual-opportunity .opportunity-art { height:54px; margin:-17px -17px 13px; display:grid; place-items:center; font-size:var(--fs-2xl); color:var(--gold); background:linear-gradient(125deg,var(--navy),#1d5cb7); }.visual-opportunity::after{display:none}
.study-feature { min-height:230px; display:flex; flex-direction:column; align-items:flex-start; justify-content:center; position:relative; overflow:hidden; background:linear-gradient(110deg,#fff,#edf5ff); }.study-feature::after{content:"⚗";position:absolute;right:34px;font-size:75px;opacity:.18;color:var(--blue)}.study-feature h2{font-size:var(--fs-xl);margin:9px 0 22px}.study-feature .mini-progress{width:60%;margin-bottom:16px}.topic-card{display:grid;gap:8px}.topic-card b{font-size:var(--fs-sm)}.topic-card p{font-size:var(--fs-xs);color:var(--muted);margin:0}
.mini-progress{height:5px;background:#e7edf5;border-radius:6px;overflow:hidden}.mini-progress i{display:block;height:100%;background:linear-gradient(90deg,var(--blue),#6aa1ff);border-radius:6px}.compact-class{display:grid;gap:8px}.compact-class span{font-size:var(--fs-xs);color:var(--muted)}
.quiz-layout{grid-template-columns:minmax(0,2.4fr) minmax(210px,.7fr)}.quiz-card h2{font-size:var(--fs-md);margin:18px 0}.answer{width:100%;display:flex;align-items:center;gap:12px;padding:12px;margin:8px 0;border:1px solid #dbe3ef;border-radius:8px;background:white;text-align:left;color:var(--ink);font-size:var(--fs-sm)}.answer b{width:25px;height:25px;display:grid;place-items:center;background:#f0f4fa;border-radius:50%;color:var(--blue)}.answer.selected{border-color:var(--blue);background:#eff5ff}.timer{font-size:var(--fs-sm);font-weight:700}.question-dots{display:grid;grid-template-columns:repeat(5,15px);gap:9px;margin:18px 0}.question-dots i{width:15px;height:15px;border:1px solid #aebdd0;border-radius:50%}.question-dots i.done{background:var(--green);border-color:var(--green)}
.result-celebration{text-align:center;padding:15px 0 25px}.result-celebration span{font-size:42px}.result-celebration h2{font-size:var(--fs-xl);margin:8px 0}.result-celebration p{color:var(--muted);font-size:var(--fs-xs)}.result-score{font-size:40px;display:block;color:var(--green);margin:12px 0}.result-bar{display:grid;grid-template-columns:1fr 2fr 38px;gap:10px;align-items:center;padding:10px 0;font-size:var(--fs-xs)}.result-bar div{height:6px;background:#e8edf4;border-radius:5px;overflow:hidden}.result-bar i{display:block;height:100%;background:var(--blue)}
.calendar-layout{grid-template-columns:2fr 1fr}.calendar-title{text-align:center;padding:4px 0 18px;display:flex;justify-content:center;gap:22px}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.calendar-grid>*{min-height:38px;display:grid;place-items:center;font-size:var(--fs-xs)}.calendar-grid b{min-height:24px;color:var(--muted)}.calendar-grid span{border:1px solid #f0f3f7}.calendar-grid .calendar-day{border:1px solid #f0f3f7;background:#fff;color:var(--navy);border-radius:6px;cursor:pointer;font:inherit}.calendar-grid .calendar-day:hover{background:var(--blue-soft)}.calendar-grid .calendar-day.has-event{background:#eaf2ff;color:var(--blue);font-weight:700;border-color:#cfe0ff}.calendar-grid .calendar-day.selected{background:var(--blue);color:#fff;box-shadow:0 5px 14px #2563eb38}.calendar-controls{display:flex;align-items:center;gap:8px;margin-bottom:14px}.calendar-controls b{margin-left:auto;text-transform:capitalize}.calendar-events{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.calendar-events i{font-style:normal;padding:6px 9px;border-radius:5px;font-size:var(--fs-xs);background:var(--blue-soft);color:var(--blue)}.calendar-events .green{background:var(--green-soft);color:var(--green)}.calendar-events .gold{background:var(--gold-soft);color:#a86600}
.profile-grid{grid-template-columns:minmax(190px,.65fr) 2fr}.profile-card{text-align:center;padding:30px}.profile-avatar{width:82px;height:82px;border-radius:50%;margin:0 auto 14px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue);font-size:var(--fs-xl);font-weight:800;border:4px solid white;box-shadow:0 0 0 1px #d8e3f1}.profile-card h2{font-size:var(--fs-lg);margin:7px 0}.profile-card p{font-size:var(--fs-xs);color:var(--muted)}.settings-list>h3{font-size:var(--fs-md)}.help-card{text-align:center;min-height:135px}.help-card>span{font-size:var(--fs-2xl)}.help-card h3{font-size:var(--fs-sm);margin:10px 0 4px}.help-card p{font-size:var(--fs-xs);color:var(--muted)}
.family-card{text-align:center}.family-card>.avatar,.family-card>.item-icon{margin:0 auto 10px}.family-card h3{font-size:var(--fs-md)}.family-card p{font-size:var(--fs-xs);color:var(--muted)}.row-actions{display:flex;align-items:center;gap:7px}.admin-list .list-item{padding:14px 2px}.table-wrap{overflow:auto;padding:0}table{width:100%;border-collapse:collapse;font-size:var(--fs-xs)}th{text-align:left;color:var(--muted);font-weight:600;background:#f7f9fc}th,td{padding:12px;border-bottom:1px solid var(--line)}.table-avatar{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--blue-soft);color:var(--blue);font-weight:700;margin-right:7px}.class-hero{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.class-hero h2{font-size:var(--fs-xl);margin:7px 0 4px}.class-hero p{font-size:var(--fs-xs);color:var(--muted)}.class-hero>strong{font-size:var(--fs-2xl);color:var(--blue);text-align:right}.class-hero small{display:block;font-size:var(--fs-xs);color:var(--muted)}.summaries-list .teacher-summary h3{margin:0;font-size:var(--fs-sm)}.achievement-list .item-icon{background:var(--gold-soft);color:#b36c00}
.asset-student,.asset-family,.asset-school,.asset-teacher,.asset-space,.asset-material{background-size:cover;background-position:center}.asset-student{background-image:linear-gradient(90deg,rgba(11,31,59,.96),rgba(11,31,59,.56)),url('/assets/student-journey-hero.png')}.hero.asset-family{background-image:linear-gradient(90deg,rgba(234,243,255,.98),rgba(234,243,255,.42)),url('/assets/family-journey-hero.png');background-position:center right}.asset-school{background-image:linear-gradient(90deg,rgba(234,243,255,.98),rgba(234,243,255,.3)),url('/assets/school-campus-hero.png')}.asset-teacher{background-image:linear-gradient(90deg,rgba(234,243,255,.98),rgba(255,255,255,.25)),url('/assets/teacher-classroom-hero.png')}.asset-space{background-image:linear-gradient(90deg,rgba(11,31,59,.98),rgba(11,31,59,.35)),url('/assets/opportunity-space-hero.png')}.asset-material{background-image:linear-gradient(90deg,rgba(255,255,255,.98),rgba(255,255,255,.45)),url('/assets/science-materials-hero.png')}
@media(max-width:800px){.screen-head{align-items:start}.detail-grid,.quiz-layout,.calendar-layout,.profile-grid{grid-template-columns:1fr}.opportunity-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.featured-opportunity,.detail-hero{padding:24px 20px}.featured-opportunity::after,.detail-hero::after{opacity:.25}.table-wrap{margin-inline:-4px}.school-banner{padding:22px}.row-actions{flex-wrap:wrap;justify-content:flex-end}}
/* Comfortable, semantic reading surface; source text remains immutable. */
.material-reader{max-width:960px;margin:0 auto}.material-reader>label{display:block;font-size:var(--fs-md)}.material-reader input{width:100%;font-size:var(--fs-md)}.material-reader .material-reading-section{margin:24px 0;padding:clamp(20px,4vw,48px);scroll-margin-top:24px}.material-reading-section[hidden]{display:none}.material-reading-section>h2{font-size:var(--fs-2xl);line-height:1.3;margin:10px 0 24px;color:var(--navy,#0b1f3b)}.reading-body{font-size:var(--fs-lg);line-height:1.8;color:#253651;overflow-wrap:anywhere;max-width:76ch}.reading-body p{font-size:inherit;line-height:inherit;margin:0 0 1.2em}.reading-body h3{font-size:var(--fs-xl);line-height:1.4;margin:1.7em 0 .7em}.reading-body h4,.reading-body h5,.reading-body h6{font-size:var(--fs-xl);line-height:1.4;margin:1.5em 0 .6em}.reading-body li{margin:.4em 0}.reading-body ul,.reading-body ol{padding-left:1.8em}.reading-body blockquote{border-left:4px solid #2563eb;padding:12px 22px;background:#eff6ff;margin:1em 0}.reading-body pre,.reading-originals pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--fs-md);line-height:1.6}.reading-toc,.reading-originals{padding:18px;background:#f2f6ff;border-radius:14px;margin:16px 0}.reading-toc summary,.reading-originals summary{cursor:pointer;font-size:var(--fs-md)}.reading-toc nav{display:grid;gap:10px;max-height:320px;overflow:auto;margin-top:16px}.reading-toc a{color:#1d4ed8;font-size:var(--fs-md)}.reading-note{font-size:var(--fs-md);color:#52627b}.reading-table{overflow-x:auto}.reading-table table{border-collapse:collapse;width:100%;font-size:var(--fs-md)}.reading-table td,.reading-table th{border:1px solid #dce4f0;padding:10px;text-align:left}.reading-table th{background:#eff6ff}#summary-error{color:#b42318;font-size:var(--fs-md)}#summary-preview{padding:16px;border:1px solid #dce4f0;border-radius:12px;max-height:380px;overflow:auto}
/* Realms shell: context switcher, grouped nav, footer nav and session controls. */
[hidden]{display:none!important}
.nav-item{text-decoration:none}
.nav-group{display:block;margin:14px 12px 4px;color:#7f93b1;font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.footer-nav{margin-top:auto;padding-top:12px;border-top:1px solid rgba(255,255,255,.1)}
.sidebar-select{display:grid;gap:4px;margin:0 0 16px;padding:9px 11px;border:1px solid rgba(255,255,255,.13);border-radius:8px;background:rgba(255,255,255,.07);color:#9fb2cd;font-size:var(--fs-xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.sidebar-select select{border:0;background:transparent;color:#fff;font-weight:600;font-size:var(--fs-sm);letter-spacing:0;text-transform:none;outline:none}.sidebar-select option{color:var(--ink)}
.profile-mini{cursor:default}.profile-mini .sign-out{width:30px;height:30px;background:transparent;border:1px solid rgba(255,255,255,.18);color:#d8e4f4}.profile-mini .sign-out:hover{background:rgba(255,255,255,.1)}
.topbar{gap:16px}.context-chip{align-self:center;padding:6px 11px;border-radius:999px;background:var(--blue-soft);color:var(--blue-dark);font-size:var(--fs-sm);font-weight:600;white-space:nowrap}
.notification{position:relative}.notification .badge{position:absolute;top:-4px;right:-4px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--red);color:#fff;font-size:var(--fs-xs);font-style:normal;font-weight:700;display:grid;place-items:center}
.status-page{max-width:520px;margin:40px auto;text-align:center;display:grid;gap:10px;justify-items:center;padding:32px}
.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:8px 0 14px}.section-head p{margin:0;color:var(--muted)}
.child-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.chip{display:inline-flex;align-items:center;gap:7px;padding:6px 14px 6px 6px;border-radius:999px;border:1px solid var(--line);background:#fff;color:var(--ink);font-weight:600}.chip:first-child{padding-left:14px}.chip .avatar{width:26px;height:26px;font-size:var(--fs-xs);border:0}.chip.active{background:var(--blue);border-color:var(--blue);color:#fff}
.pending-card{background:linear-gradient(180deg,#fffaf0,#fff)}.next-card{display:grid;gap:6px;align-content:start}.next-card h3{font-size:var(--fs-xl);margin:0}
.explore-banner{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:22px;background:linear-gradient(90deg,var(--blue-soft),#fff)}.explore-banner h3{margin:0 0 4px}.explore-banner p{margin:0;color:var(--muted)}
.prompt-card{display:grid;gap:10px}.prompt-head{display:flex;justify-content:space-between;gap:12px;align-items:start}.prompt-head h3{margin:2px 0}.prompt-text{white-space:pre-wrap;font:12px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:12px;max-height:280px;overflow:auto}
#prompt-dialog textarea{font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace}
a.button{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
/* Login — brand mockup: form card + night illustration panel. */
.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(360px,520px) 1fr;background:var(--paper)}
.login-card{display:flex;flex-direction:column;gap:14px;padding:44px clamp(24px,5vw,64px);background:#fff;box-shadow:var(--shadow);overflow:auto}
.login-logo{display:flex;align-items:center;gap:10px;font-size:34px;font-weight:700;letter-spacing:-.04em;color:var(--navy)}.login-logo .brand-mark::before,.login-logo .brand-mark::after{background:var(--navy)}.login-logo .brand-mark::after{background:linear-gradient(var(--blue) 0 64%,var(--gold) 65%)}
.login-tagline{margin-top:-10px;color:var(--muted);font-size:var(--fs-xs);letter-spacing:.24em;text-transform:uppercase}
.login-card h1{margin:12px 0 0;font-size:var(--fs-2xl);letter-spacing:-.02em}.login-sub{margin:-6px 0 4px;color:var(--muted);font-size:var(--fs-md)}
.login-tabs{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:12px;padding:4px;gap:4px}.login-tabs button{border:0;background:transparent;padding:11px;border-radius:9px;font-weight:600;color:var(--muted);display:flex;gap:8px;justify-content:center}.login-tabs button.active{background:var(--blue-soft);color:var(--blue-dark);box-shadow:inset 0 -3px 0 var(--blue)}
#login-form{display:grid;gap:12px}#login-form label{display:grid;gap:6px;font-weight:600;font-size:var(--fs-md)}#login-form input:not([type=checkbox]){height:46px;border:1px solid var(--line);border-radius:10px;padding:0 14px;background:#fff;width:100%}#login-form input:focus{outline:2px solid var(--blue);outline-offset:1px}
.password-field{position:relative;display:block}.password-field button{position:absolute;right:8px;top:8px;border:0;background:transparent;color:var(--muted);height:30px;width:30px}
.login-row{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:var(--fs-md)}.login-row .remember{display:flex!important;align-items:center;gap:8px;font-weight:500!important}
.link{border:0;background:transparent;color:var(--blue);font-weight:600;padding:0;text-decoration:underline;text-underline-offset:2px}
.login-submit{height:48px;font-size:var(--fs-md)}.login-error{margin:0;min-height:18px;color:var(--red);font-size:var(--fs-md)}.login-notice{margin:0;padding:10px 12px;border-radius:10px;background:var(--blue-soft);color:var(--blue-dark);font-size:var(--fs-md)}
.login-divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:var(--fs-sm)}.login-divider::before,.login-divider::after{content:"";flex:1;height:1px;background:var(--line)}
.login-provider{height:46px;opacity:.75}.login-provider small{color:var(--muted);font-weight:500;margin-left:6px}
.login-code{display:grid;grid-template-columns:36px 1fr auto;gap:12px;align-items:center;text-align:left;padding:14px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink)}.login-code b,.login-code small{display:block}.login-code small{color:var(--muted);margin-top:2px}.login-code>span:first-child{font-size:var(--fs-xl);color:var(--blue)}
.login-simulator{margin-top:6px;padding:14px;border:1px dashed #c9a24a;border-radius:12px;background:var(--gold-soft)}.login-simulator h2{margin:0 0 4px;font-size:var(--fs-md)}.login-simulator h2 span{font-weight:500;color:#8a6414;font-size:var(--fs-sm);margin-left:6px}.login-simulator p{margin:0 0 10px;font-size:var(--fs-sm);color:#6b5320}
.sim-users{display:grid;gap:6px;max-height:240px;overflow:auto}.sim-user{display:grid;text-align:left;gap:2px;padding:9px 11px;border:1px solid #ecd9a8;border-radius:9px;background:#fff;color:var(--ink)}.sim-user small{color:var(--muted)}.sim-user.selected{border-color:var(--blue);box-shadow:0 0 0 2px var(--blue-soft)}
.login-footer{margin-top:auto;padding-top:10px;color:var(--muted);font-size:var(--fs-sm);text-align:center}
.login-art{position:relative;display:flex;align-items:flex-end;padding:56px;color:#fff;background:linear-gradient(180deg,rgba(7,22,43,.2),rgba(7,22,43,.85)),url(/assets/student-journey-hero.png) center/cover,var(--navy)}
.login-art h2{max-width:420px;font-size:clamp(28px,3.4vw,44px);line-height:1.1;margin:0 0 22px;font-weight:600}.login-art em{font-style:normal;color:var(--gold)}.login-art ul{list-style:none;margin:0;padding:0;display:grid;gap:10px;color:#dbe6f6}.login-art li::before{content:"✦ ";color:var(--gold)}
@media(max-width:860px){.login-page{grid-template-columns:1fr}.login-art{display:none}.login-card{padding:32px 16px}.context-chip{display:none}}
.topbar{min-height:auto!important}.hero,.school-banner{margin-bottom:20px}
/* Participation lifecycle */
.participation-list{display:grid;gap:14px}.participation-card{display:grid;gap:12px}.participation-card header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}.participation-card h3{margin:2px 0 8px}
.chips{display:flex;flex-wrap:wrap;gap:6px}.participation-card footer{justify-content:space-between;border-top:1px solid var(--line);padding-top:10px}
.stages{list-style:none;margin:0;padding:0;display:grid;gap:0}.stage{position:relative;display:flex;gap:12px;align-items:flex-start;padding:10px 0 10px 22px;border-left:2px solid var(--line);margin-left:6px}.stage p{margin:3px 0 6px;color:var(--muted);font-size:var(--fs-sm)}
.stage-dot{position:absolute;left:-7px;top:13px;width:12px;height:12px;border-radius:50%;background:#fff;border:2px solid var(--blue)}.stage-attended .stage-dot{background:var(--green);border-color:var(--green)}.stage-missed .stage-dot{background:var(--line);border-color:var(--muted)}
.check-field{display:flex!important;align-items:center;gap:8px;font-weight:600}
.status.draft{background:#eef2f7;color:#475569}
/* Chapter practice */
.subject-card{display:grid;gap:4px;margin-bottom:14px}.subject-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap;margin-bottom:6px}.subject-head h3{margin:2px 0}
details.subject-card summary{cursor:pointer;display:flex;gap:10px;align-items:center;padding:4px 0}
.family-study{margin-bottom:28px}.family-study>h2{margin:8px 0 12px}
.practice-question{display:grid;gap:8px;margin-bottom:12px}.practice-question h3{margin:2px 0 6px;font-size:var(--fs-md);line-height:1.45}.stimulus{margin:0;padding:12px;border-radius:10px;background:var(--paper);border:1px solid var(--line);line-height:1.5}
.practice-question .answer.correct{border-color:var(--green);background:var(--green-soft)}.practice-question .answer.wrong{border-color:var(--red);background:var(--red-soft)}
.practice-question.is-right{border-left:4px solid var(--green)}.practice-question.is-wrong{border-left:4px solid var(--red)}.feedback{border-top:1px solid var(--line);padding-top:8px}.feedback p{margin:4px 0}
.practice-progress{position:sticky;top:8px;z-index:3;display:grid;gap:6px;margin-bottom:12px}
/* Curadoria: organization strip, blocker banner, compact review table and review dialog. */
.cur-orgs{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;margin-bottom:16px}.cur-org{padding:14px 16px;display:flex;justify-content:space-between;align-items:start;gap:12px}.cur-org h3{font-size:var(--fs-sm);margin:0 0 4px}.cur-org p{font-size:var(--fs-xs);color:var(--muted);margin:0}.cur-org details{margin-top:6px;font-size:var(--fs-xs)}
.cur-banner{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;margin-bottom:16px;border:1px solid #f3d9a4;border-radius:10px;background:var(--gold-soft)}.cur-banner p{margin:2px 0 0;font-size:var(--fs-xs)}.cur-banner strong{font-size:var(--fs-xs)}
.cur-tabs{border-bottom:1px solid var(--line);padding-bottom:12px}.cur-toolbar{display:flex;justify-content:space-between;align-items:start;gap:12px;flex-wrap:wrap}.cur-toolbar .page-search{min-width:240px}
.cur-table td small{display:block;color:var(--muted);margin-top:2px}.cur-table td{vertical-align:middle}.cur-chips{display:flex;gap:4px;flex-wrap:wrap}
.cur-dialog{width:min(860px,calc(100% - 30px));max-height:90vh}.cur-dialog .dialog-card{max-height:90vh;overflow:auto}.cur-dialog h3{font-size:var(--fs-sm);margin:20px 0 8px}.cur-dialog .dialog-heading h2{margin:4px 0 8px}
.cur-facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px 16px;margin:0}.cur-facts dt{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.cur-facts dd{margin:2px 0 0;font-size:var(--fs-xs)}
.cur-dates{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.cur-dates label{margin:0!important;flex:1;min-width:180px}
.cur-sheet{margin-top:16px;padding:14px;border:1px solid var(--line);border-radius:10px}.cur-sheet-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.cur-sheet-head h4{margin:0;font-size:var(--fs-xs)}
.cur-occurrences{list-style:none;padding:0;margin:10px 0}.cur-occurrences li{padding:8px 0;border-top:1px solid var(--line);font-size:var(--fs-xs)}.cur-occurrences li.chosen{background:var(--green-soft)}.cur-occurrences label{display:flex!important;gap:8px;align-items:center;margin:0!important;font-weight:400!important}.cur-occurrences input{width:auto!important;display:inline!important;margin:0!important}.cur-occurrences small{display:block;color:var(--muted);margin:2px 0 0 22px}.cur-occurrences details{margin-left:22px;font-size:var(--fs-xs)}
.cur-reason{margin-right:auto;align-self:center}
.cur-lead{margin:0;font-size:var(--fs-sm);color:var(--ink)}.cur-step{display:grid;grid-template-columns:28px 1fr;gap:12px;padding:16px 0;border-top:1px solid var(--line)}.cur-step h3{margin:3px 0 6px!important}.cur-step p{font-size:var(--fs-xs);margin:0 0 8px}.cur-step-mark{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:white;font-size:var(--fs-sm);font-weight:700}.cur-step.done .cur-step-mark{background:var(--green-soft);color:#087b59}.cur-step.done h3{color:var(--muted)}
.cur-options{display:grid;grid-template-columns:1fr 1.4fr;gap:12px;margin:8px 0}.cur-option{padding:12px;border:1px solid var(--line);border-radius:10px}.cur-option h4{margin:0 0 6px;font-size:var(--fs-xs);display:flex;justify-content:space-between;gap:8px}.cur-manual{margin-top:8px;font-size:var(--fs-xs)}.cur-manual summary{cursor:pointer;color:var(--blue);font-weight:600}.cur-done p{margin:0 0 4px}
@media(max-width:700px){.cur-options{grid-template-columns:1fr}}
.cur-group{padding:0;margin-bottom:16px;overflow:hidden}.cur-group-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);font-size:var(--fs-xs)}.cur-group-toggle{display:flex;gap:10px;align-items:center;border:0;background:none;padding:0;text-align:left;color:var(--ink);cursor:pointer}.cur-group-toggle strong{display:block;font-size:var(--fs-sm)}.cur-group-toggle small{display:block;color:var(--muted);font-size:var(--fs-xs);margin-top:2px}.cur-group-meta{display:flex;gap:12px;align-items:center;color:var(--muted)}.cur-group-meta b{color:#087b59}
.cur-group .cur-banner{margin:12px 16px}.cur-group .cur-warnings{margin:10px 16px;font-size:var(--fs-xs)}.cur-group .table-wrap{margin:0}.cur-group .crud-empty{padding:20px}.cur-group>.list-item,.cur-group>.row{padding-inline:16px}
.cur-group-toggle>span[aria-hidden]{font-size:var(--fs-md);width:14px;color:var(--muted)}
.cur-pages{list-style:none;padding:0;margin:6px 0;font-size:var(--fs-xs)}.cur-pages li{padding:3px 0;word-break:break-all}.cur-pages small{color:#b86c00}
.cur-found{margin:0 0 6px;font-size:var(--fs-xs);color:var(--muted);word-break:break-all}
.cur-quiet{padding:12px 16px}.cur-quiet summary{cursor:pointer;font-size:var(--fs-xs);font-weight:600}.cur-quiet ul{list-style:none;padding:0;margin:8px 0 0}.cur-quiet li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-top:1px solid var(--line)}.cur-quiet li strong{display:block;font-size:var(--fs-xs)}.cur-quiet li small{color:var(--muted);font-size:var(--fs-xs)}
.org-inactive{opacity:.6}.org-inactive:hover{opacity:1}
.org-group{margin-bottom:24px}.org-group-head{display:flex;justify-content:space-between;align-items:center;margin:8px 0 4px}.org-group-head h3{margin:0;font-size:var(--fs-md)}.org-group-head h3 span{color:var(--muted);font-weight:500}.org-card{padding:16px 20px;margin-bottom:12px}.org-card-head{display:flex;gap:10px;align-items:center}.org-card-head h3{margin:0}.org-select{width:16px;height:16px}.org-select-spacer{width:16px}
.org-bulk{position:sticky;top:8px;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;margin-bottom:16px;border:1px solid #cad8ea;border-radius:10px;background:#eef4ff;font-size:var(--fs-xs);font-weight:600}.org-bulk.idle{background:white;color:var(--muted);font-weight:400}
.org-filters{display:flex;gap:12px;align-items:end;flex-wrap:wrap;margin-bottom:12px}.org-filters .page-search{flex:1;min-width:240px;margin:0}.org-filters label:not(.page-search){font-size:var(--fs-xs);color:var(--muted);display:flex;flex-direction:column;gap:4px}.org-filters select{border:1px solid #dce5f1;border-radius:8px;padding:8px;background:white;font-size:var(--fs-xs);color:var(--ink)}
.org-table td{vertical-align:middle}.org-table td small{display:block;color:var(--muted);margin-top:2px}.org-table th:first-child,.org-table td:first-child{width:28px}.org-detail td{background:#f7f9fc}.org-detail .button-row{margin:8px 0}
.org-filters select{min-width:170px}
/* Material library: subjects, apostila items, chapter reader and school organization. */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.lib-subjects{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px}
.lib-subject{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px 14px;text-align:center;color:var(--ink);text-decoration:none;transition:.15s}
.lib-subject:hover,.lib-subject:focus-visible{border-color:var(--tone);background:var(--soft);transform:translateY(-1px)}
.lib-subject-icon{font-size:38px;line-height:1;margin-bottom:8px}
.lib-subject h3{margin:0;font-size:var(--fs-md)}.lib-subject p{margin:0;color:var(--muted);font-size:var(--fs-sm)}.lib-subject small{color:var(--tone);font-size:var(--fs-sm);font-weight:600}
.lib-continue{margin-bottom:16px}
.lib-breadcrumb{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:var(--fs-sm);color:var(--muted);margin-bottom:12px}
.lib-breadcrumb a{color:var(--muted);text-decoration:none}.lib-breadcrumb a:hover{color:var(--blue)}.lib-breadcrumb b{color:var(--ink);font-weight:600}
.lib-hero{display:flex;align-items:center;gap:18px;min-height:120px;padding:20px 24px;border-radius:12px;background:linear-gradient(90deg,var(--soft) 0 45%,transparent),var(--hero,linear-gradient(120deg,var(--soft),#fff)) right center/cover no-repeat;border:1px solid #dfe7f1}
.lib-hero-icon{display:grid;place-items:center;width:72px;height:72px;border-radius:16px;background:var(--tone);font-size:38px;box-shadow:0 8px 20px rgba(11,31,59,.14)}
.lib-hero div span{display:block;color:var(--tone);font-weight:800;text-transform:uppercase;letter-spacing:.06em;font-size:var(--fs-md)}.lib-hero strong{font-size:var(--fs-2xl);letter-spacing:-.02em}
.lib-tabs{display:flex;gap:22px;border-bottom:1px solid var(--line);margin:16px 0;overflow-x:auto}
.lib-tabs.small{gap:18px;margin:10px 0 16px}
.lib-tab{padding:10px 2px;color:var(--muted);text-decoration:none;font-weight:600;font-size:var(--fs-sm);border-bottom:2px solid transparent;white-space:nowrap}
.lib-tab.active{color:var(--blue);border-color:var(--blue)}
.lib-sort select{border:1px solid var(--line);border-radius:8px;padding:6px 10px;background:white;font-size:var(--fs-sm)}
.lib-unit{display:flex;align-items:center;gap:16px;margin-bottom:10px;color:var(--ink);text-decoration:none}
.lib-unit:hover{border-color:var(--blue)}.lib-unit h3{margin:0 0 3px;font-size:var(--fs-md)}.lib-unit p{margin:0;color:var(--muted);font-size:var(--fs-sm)}
.lib-topics{margin-top:4px!important}
.lib-thumb{position:relative;flex:none;display:grid;place-items:center;width:64px;height:64px;border-radius:10px;background:var(--soft);border:1px solid color-mix(in srgb,var(--tone) 18%,transparent)}
.lib-thumb b{font-size:var(--fs-2xl)}.lib-thumb i{position:absolute;right:-6px;bottom:-6px;min-width:22px;height:22px;display:grid;place-items:center;border-radius:11px;background:var(--tone);color:white;font-style:normal;font-weight:700;font-size:var(--fs-sm);border:2px solid white}
.lib-progress{display:grid;grid-template-columns:auto;justify-items:end;gap:6px;min-width:130px}
.lib-progress .mini-progress{width:120px;margin:0}.lib-progress b{font-size:var(--fs-sm);color:var(--muted)}
.lib-progress.compact{grid-template-columns:auto auto;align-items:center}.lib-progress.compact .status{grid-column:1/-1}
.lib-chevron{font-size:var(--fs-xl);color:var(--muted)}
.lib-next{display:block;margin-bottom:12px;color:var(--ink);text-decoration:none}.lib-next h3{margin:4px 0 0}
.lib-summary summary{cursor:pointer;display:grid;gap:4px}.lib-summary summary small,.lib-reference{color:var(--muted);font-size:var(--fs-sm)}
.lib-reference{padding:8px 10px;border-left:3px solid var(--blue);background:var(--blue-soft);border-radius:4px}
.lib-reader{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;align-items:start}
.lib-reader-side{position:sticky;top:12px;display:grid;gap:12px}
.lib-unit-head{display:flex;gap:12px;align-items:center}.lib-unit-head h3{margin:0;font-size:var(--fs-md)}.lib-unit-head p{margin:2px 0 0;color:var(--muted);font-size:var(--fs-sm)}
.lib-reader-side .lib-progress{justify-items:start}.lib-reader-side .lib-progress .mini-progress{width:150px}
.lib-chapters{display:grid;gap:6px}
.lib-chapter{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:9px;color:var(--ink);text-decoration:none}
.lib-chapter b{display:block;font-size:var(--fs-sm)}.lib-chapter small{color:var(--muted);font-size:var(--fs-sm)}
.lib-chapter.active{border-color:var(--blue);background:var(--blue-soft)}
.lib-number{flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#eef2f7;font-weight:700;font-size:var(--fs-sm)}
.lib-chapter.active .lib-number{background:var(--blue);color:white}.lib-chapter.done .lib-number{background:var(--green);color:white}
.lib-reader-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin-bottom:12px}
.lib-modes{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.lib-mode{padding:7px 12px;font-size:var(--fs-sm);font-weight:600;color:var(--muted);text-decoration:none;border-right:1px solid var(--line)}
.lib-mode:last-child{border-right:0}.lib-mode.active{background:var(--blue-soft);color:var(--blue)}.lib-mode.disabled{opacity:.45;cursor:not-allowed}
.lib-title{margin:4px 0 0;font-size:var(--fs-xl);letter-spacing:-.02em}
.lib-study{font-size:var(--fs-md);line-height:1.65}
.lib-notice{display:flex;gap:12px;padding:12px 14px;border-radius:9px;background:var(--blue-soft);margin-bottom:14px}
.lib-notice span{font-size:var(--fs-xl);color:var(--blue)}.lib-notice p{margin:4px 0 0;color:var(--muted);font-size:var(--fs-sm)}
.lib-page{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}.lib-page small{color:var(--muted);font-weight:600;font-size:var(--fs-sm)}
.lib-reader-foot{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:20px;padding-top:14px;border-top:1px solid var(--line)}
.lib-reader-foot small{color:var(--muted);font-size:var(--fs-sm)}
.lib-organization{display:grid;gap:18px}.lib-organization h2{margin:0;font-size:var(--fs-lg)}
.lib-organization fieldset{border:0;padding:0;margin:0;display:grid;gap:10px}.lib-organization legend{font-weight:700;margin-bottom:8px}
.lib-radios{display:flex;flex-wrap:wrap;gap:10px}
.lib-radio{display:flex;gap:6px;align-items:center;padding:7px 14px;border:1px solid var(--line);border-radius:20px;font-size:var(--fs-sm);cursor:pointer}
.lib-radio.active{border-color:var(--blue);background:var(--blue-soft);color:var(--blue);font-weight:600}
.lib-layouts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.lib-layout{position:relative;display:grid;justify-items:center;gap:6px;padding:20px 14px;border:1px solid var(--line);border-radius:10px;text-align:center;cursor:pointer}
.lib-layout input{position:absolute;opacity:0}.lib-layout span{font-size:var(--fs-2xl);color:var(--blue)}.lib-layout small{color:var(--muted)}
.lib-layout.active,.lib-layout:has(input:focus-visible){border:2px solid var(--blue);background:var(--blue-soft)}
.lib-files{display:grid;gap:8px}
.lib-file{display:grid;grid-template-columns:minmax(0,1fr) 170px auto;gap:12px;align-items:end;padding:10px 12px;border:1px solid var(--line);border-radius:9px}
.lib-file label{display:grid;gap:4px;font-size:var(--fs-sm);font-weight:600;color:var(--muted)}.lib-file input:not([type]),.lib-file select{border:1px solid var(--line);border-radius:7px;padding:7px 9px;background:white;color:var(--ink)}
.lib-file small{display:block;margin-top:4px;color:var(--muted);font-size:var(--fs-sm);overflow-wrap:anywhere}.lib-file.is-hidden{opacity:.55}
.lib-check{display:flex!important;align-items:center;gap:6px;padding-bottom:8px}
.lib-preview{padding:16px;border-radius:10px;background:var(--green-soft);display:grid;gap:14px}
.lib-preview-head{display:flex;gap:12px;align-items:center}.lib-preview-head h3{margin:0}.lib-preview-head p{margin:2px 0 0;color:var(--muted);font-size:var(--fs-sm)}
.lib-preview-units{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.lib-preview-unit{display:grid;gap:3px;padding:12px;border-radius:9px;background:white}.lib-preview-unit small{color:var(--muted);font-size:var(--fs-sm)}
.lib-preview-unit.warn{outline:1px dashed var(--amber)}
@media(max-width:860px){.lib-reader{grid-template-columns:1fr}.lib-reader-side{position:static}.lib-layouts{grid-template-columns:1fr}.lib-file{grid-template-columns:1fr}.lib-unit{flex-wrap:wrap}.lib-progress.compact{justify-items:start}}
.lib-unit>.grow,.lib-chapter>.grow{flex:1;min-width:0}
.lib-file input::placeholder{color:#a3afbf}
.lib-file{grid-template-columns:minmax(0,1fr) 170px auto auto}.lib-file .lib-delete{margin-bottom:4px}
@media(max-width:860px){.lib-file{grid-template-columns:1fr}}
/* PDF pages linked to the searchable text: upload with OCR progress, search hits, original pages. */
.lib-upload{position:relative;display:inline-flex;cursor:pointer}.lib-upload input{position:absolute;inset:0;opacity:0;cursor:pointer}
.lib-uploads{display:grid;gap:8px;margin-top:10px}.lib-uploads:empty{display:none}
.lib-upload-row{display:flex;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:9px}.lib-upload-row small{display:block;color:var(--muted);font-size:var(--fs-sm);margin:3px 0 6px}.lib-upload-row .grow{flex:1;min-width:0}.lib-upload-row b{overflow-wrap:anywhere}
.lib-search{display:flex;gap:8px;align-items:center;margin:14px 0}.lib-search label{flex:1}.lib-search input{width:100%;padding:10px 12px;border:1px solid #d5e0ee;border-radius:9px;color:var(--ink)}
.lib-hit{margin-bottom:10px}.lib-hit small{color:var(--muted);font-weight:600;font-size:var(--fs-sm)}.lib-hit p{line-height:1.55;margin:6px 0 0}.lib-hit mark{background:var(--gold-soft);color:inherit;border-radius:3px;padding:0 2px}.lib-hit .button-row{margin-top:10px}.lib-hit .button-row:empty{display:none}
.lib-hit-page summary{cursor:pointer;color:var(--blue);font-weight:600;font-size:var(--fs-sm);margin-top:10px}
.lib-search-note{font-size:var(--fs-sm);color:var(--muted)}
.lib-pdf-pages{display:grid;gap:18px}
.lib-pdf-page{margin:12px 0 0}.lib-pdf-frame{position:relative;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#fff;min-height:200px}.lib-pdf-frame img{display:block;width:100%;height:auto}
.lib-pdf-page.focus .lib-pdf-frame{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
.lib-pdf-page.failed .lib-pdf-frame::after{content:"Não foi possível carregar esta página.";position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font-size:var(--fs-sm)}
.lib-pdf-hit{position:absolute;background:rgba(246,184,75,.38);border-radius:2px;mix-blend-mode:multiply;pointer-events:none}
.lib-pdf-page figcaption{font-size:var(--fs-sm);color:var(--muted);margin-top:6px}
@media(max-width:640px){.lib-search{flex-wrap:wrap}.lib-upload-row{flex-wrap:wrap}}
@media (prefers-color-scheme:dark){.lib-pdf-hit{mix-blend-mode:normal}}
/* Automatic sequence after upload: one step tracker per file. */
.lib-consent{display:flex;gap:8px;align-items:flex-start;font-weight:500;font-size:var(--fs-sm);margin:8px 0 10px;line-height:1.45}.lib-consent input{margin-top:3px}
.lib-steps{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;list-style:none;padding:0;margin:8px 0}
.lib-step{padding:7px 8px;border-radius:7px;background:#f1f5f9;border:1px solid transparent}.lib-step b{display:block;font-size:var(--fs-sm)}.lib-step small{display:block;margin:2px 0 0;font-size:var(--fs-xs);color:var(--muted)}
.lib-step.done{background:var(--green-soft,#e5f8f2)}.lib-step.done b::before{content:"✓ "}
.lib-step.doing{background:var(--blue-soft);border-color:#bcd3fb}.lib-step.doing b::before{content:"● ";color:var(--blue)}
.lib-step.failed{background:#fff1f1;border-color:#ffcaca}.lib-step.failed b::before{content:"! ";color:#c83a3a}
.lib-release-classes{display:flex;flex-wrap:wrap;gap:6px 14px;margin:6px 0 8px}
@media(max-width:640px){.lib-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Conteúdos: apostilas of a material with stage and AI cost. */
.content-files{display:grid;gap:6px;margin:-4px 0 12px 45px}.content-files>small{color:var(--muted);font-size:var(--fs-sm);font-weight:600}
.content-file{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:8px;color:inherit;text-decoration:none}
.content-file:hover{border-color:var(--blue);background:var(--blue-soft)}.content-file b{font-size:var(--fs-sm);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content-file small{color:var(--muted);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}
.lib-cost{font-size:var(--fs-sm);color:var(--muted);margin:2px 0 8px;line-height:1.5}.lib-cost b{color:var(--ink)}
.lib-upload-row.focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft)}
@media(max-width:640px){.content-files{margin-left:0}.content-file{grid-template-columns:1fr auto}.content-file small{grid-column:1/-1}}
/* Módulos and their temas. */
.lib-modules{margin:2px 0 6px;font-size:var(--fs-sm)}.lib-modules summary{cursor:pointer;color:var(--blue);font-weight:600}.lib-modules ol{margin:6px 0 0;padding-left:20px}.lib-modules ul{margin:3px 0 6px;padding-left:16px;color:var(--muted)}
.lib-themes{display:grid;gap:2px;margin-top:6px}.lib-themes i{font-style:normal;font-size:var(--fs-sm);color:var(--muted);padding-left:8px;border-left:2px solid var(--line)}
.lib-pending{color:#a86600}.lib-short{margin:4px 0 8px;padding:8px 10px;border-radius:8px;background:var(--gold-soft);font-size:var(--fs-sm)}.lib-short p{margin:2px 0}
/* Processing queue. */
.queue-summary{display:flex;gap:28px;flex-wrap:wrap;margin-bottom:14px}.queue-summary small{display:block;color:var(--muted);font-size:var(--fs-sm)}.queue-summary b{font-size:var(--fs-md)}
.queue-group h3{font-size:var(--fs-md);margin:18px 0 8px}.queue-group h3 small{color:var(--muted);font-weight:500}
.queue-row{margin-bottom:10px}.queue-row.processing{border-left:3px solid var(--blue)}.queue-row.failed{border-left:3px solid #c83a3a}.queue-row.paused{opacity:.75}
.queue-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.queue-head .grow{flex:1;min-width:200px}.queue-head small{display:block;color:var(--muted);font-size:var(--fs-sm)}
.queue-pos{width:26px;height:26px;border-radius:50%;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-weight:700;font-size:var(--fs-sm);flex:none}
.queue-ai{font-size:var(--fs-sm);color:var(--muted);padding:3px 8px;border-radius:10px;background:#f1f5f9}
.queue-now{margin:4px 0 6px;padding-left:18px;font-size:var(--fs-sm)}.queue-now li{margin:2px 0}
.queue-foot{display:flex;justify-content:space-between;align-items:center;gap:10px}.queue-foot small{color:var(--muted);font-size:var(--fs-sm)}
.queue-block{margin:6px 0;font-size:var(--fs-sm)}.queue-block p{margin:2px 0 0;color:var(--muted)}.queue-block i{font-style:normal;font-weight:600}
.q-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;background:#cbd5e1;vertical-align:middle}.q-dot.run{background:#12a477;box-shadow:0 0 0 3px rgba(18,164,119,.18)}.q-dot.wait{background:#f6b84b}.q-dot.idle{background:#cbd5e1}
.lib-module-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.lib-module-head small{color:var(--muted)}.lib-more{display:inline-flex;gap:4px;margin-left:auto}.lib-more .button.small{padding:3px 8px;font-size:var(--fs-sm)}.lib-more i{font-size:var(--fs-sm);color:var(--muted)}
.lib-release-all{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:0 0 10px;padding:12px 14px;border:1px solid #bcd3fb;background:var(--blue-soft)}.lib-release-all .grow{flex:1;min-width:220px}.lib-release-all small{display:block;color:var(--muted);font-size:var(--fs-sm);margin-top:2px}.lib-release-all .lib-release-classes{margin:0}
/* Breadcrumbs: one trail on every inner screen; on a phone only the way back. */
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 12px;font-size:var(--fs-sm);color:var(--muted)}
.crumbs a{color:var(--blue);text-decoration:none;font-weight:600}.crumbs a:hover{text-decoration:underline}.crumbs b{color:var(--ink);font-weight:600}.crumbs span{color:#9fb0c7}
@media(max-width:640px){.crumbs>*{display:none}.crumbs .crumb-back{display:inline}.crumbs .crumb-back::before{content:"‹ "}}
