/* Ibis interface styles. Fonts: Inter and Bitter (SIL Open Font License), served locally. */
@font-face{font-family:Inter;font-weight:400;font-display:swap;src:url(fonts/inter-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:Inter;font-weight:600;font-display:swap;src:url(fonts/inter-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:Inter;font-weight:700;font-display:swap;src:url(fonts/inter-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:Bitter;font-weight:400;font-display:swap;src:url(fonts/bitter-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:Bitter;font-weight:600;font-display:swap;src:url(fonts/bitter-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:Bitter;font-weight:700;font-display:swap;src:url(fonts/bitter-latin-700-normal.woff2) format("woff2")}

:root{
  --navy:#001344; --navy-2:#0B2A6B; --gold:#9A8348; --gold-2:#B9832D; --gold-text:#7A6633;
  --ink:#14181F; --ink-2:#3B4250; --muted:#4A5260; --line:#D8DBE0; --line-2:#E6E8EC;
  --bg:#F2F3F5; --card:#FFFFFF;
  --ok:#1D5E45; --ok-bg:#E4F1EA; --bad:#8E1B1B; --bad-bg:#FBEAEA; --warn:#7A4100; --warn-bg:#FCF0DB;
  --info:#2D3A8C; --info-bg:#E9EBF7;
  --radius:2px;
}
*{box-sizing:border-box}
[hidden]{display:none !important}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 Inter,system-ui,-apple-system,"Segoe UI",sans-serif}
a{color:var(--navy);text-underline-offset:2px}
a:hover{color:var(--navy-2)}
:focus-visible{outline:3px solid var(--gold-2);outline-offset:2px}
h1,h2,h3{color:var(--navy);line-height:1.25}
h1{font-size:28px;margin:4px 0 6px;font-weight:700}
h2{font-size:18px;margin:28px 0 12px;font-weight:700}
.card h2:first-child,.card summary + * h2{margin-top:0}
code,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px}
.small{font-size:13px}.muted{color:var(--muted)}.right{text-align:right}
.lead{font-size:16px;color:var(--ink-2);max-width:760px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:-9999px;top:8px;background:#fff;padding:8px 12px;z-index:10}
.skip:focus{left:8px}

/* Header */
.top{background:var(--navy);border-bottom:3px solid var(--gold);color:#fff}
.top-in{max-width:1240px;margin:0 auto;padding:0 24px;min-height:56px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 28px}
.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font-weight:700;font-size:17px}
.brand:hover{color:#fff}
.brand img{display:block;height:38px;width:auto}
.top nav{display:flex;flex-wrap:wrap;gap:2px;flex:1}
.top nav a{color:#C9D1E3;text-decoration:none;font-size:14px;font-weight:600;padding:17px 12px 14px;border-bottom:3px solid transparent}
.top nav a:hover{color:#fff}
.top nav a[aria-current=page]{color:#fff;border-bottom-color:var(--gold-2)}
.who{display:flex;align-items:center;gap:12px;font-size:13px;color:#C9D1E3}
.who a{color:#C9D1E3}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--gold);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px}

.wrap{max-width:1120px;margin:0 auto;padding:28px 24px 48px}
.wrap.wide{max-width:1240px}
.foot{border-top:1px solid var(--line);color:var(--muted);font-size:12px}
.foot .wrap{padding:16px 24px}

/* Page furniture */
.crumbs{font-size:13px;color:var(--muted);margin-bottom:8px}
.crumbs span{color:#9AA1AC;margin:0 4px}
.page-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px}
.eyebrow{font-family:Bitter,Georgia,serif;font-size:13px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-text)}
.page-head > div:first-child{flex:1 1 280px;min-width:0}
h1,h2{overflow-wrap:anywhere}
.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.section-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px}
.section-head h2{margin:24px 0 12px}
.card{background:var(--card);border:1px solid var(--line);padding:18px 20px;margin-bottom:18px}
.card > summary{cursor:pointer;font-weight:600;color:var(--navy)}
.card[open] > summary{margin-bottom:12px}
.narrow{max-width:460px}
.two-col{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px;align-items:start}
.split{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}
.split-main{flex:999 1 560px;min-width:0}
.split-side{flex:1 1 300px;min-width:0}
.row{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.row.tight{gap:6px;align-items:center}
.grow{flex:1 1 160px}
.stack{display:flex;flex-direction:column;gap:12px}
.inline{display:inline}

/* Forms */
label{display:flex;flex-direction:column;gap:5px;font-size:14px;font-weight:600;color:var(--ink)}
label.check{flex-direction:row;align-items:flex-start;gap:9px;font-weight:400}
label.check input{margin-top:4px}
label.disabled{color:var(--muted)}
.hint{font-weight:400;color:var(--muted);font-size:12.5px}
p.hint{margin:-4px 0 0}
input,select,textarea{font:inherit;font-weight:400;color:var(--ink);background:#fff;border:1px solid #9AA1AC;border-radius:var(--radius);padding:8px 10px;min-height:40px;width:100%}
input[type=checkbox]{width:auto;min-height:0;accent-color:var(--navy)}
input[type=file]{padding:7px;background:var(--bg)}
textarea{line-height:1.5}
textarea.mono{font-size:13px}
fieldset{border:1px solid var(--line-2);padding:12px 14px;margin:0;display:flex;flex-direction:column;gap:12px}
legend{font-weight:600;color:var(--navy);padding:0 4px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 16px;border:1px solid var(--navy);background:#fff;color:var(--navy);font:600 14px Inter,sans-serif;border-radius:var(--radius);text-decoration:none;cursor:pointer;white-space:nowrap}
.btn:hover{background:#EEF1F7;color:var(--navy)}
.btn-primary{background:var(--navy);color:#fff}
.btn-primary:hover{background:var(--navy-2);color:#fff}
.btn-small{min-height:32px;padding:0 11px;font-size:13px}
.btn-quiet{border-color:var(--line);color:var(--ink-2)}
.btn-danger{border-color:var(--bad);color:var(--bad);margin-top:10px}
.btn-wide{width:100%}
.btn[disabled]{opacity:.5;cursor:not-allowed}
.linklike{background:none;border:0;padding:0;color:var(--navy);text-decoration:underline;cursor:pointer;font:inherit}

/* Messages and pills */
.flash{padding:11px 14px;margin-bottom:12px;background:#fff;border:1px solid var(--line);border-left:4px solid var(--navy);font-size:14px}
.flash-ok{border-left-color:var(--ok)}
.flash-bad{border-left-color:var(--bad);background:var(--bad-bg)}
.flash-warn{border-left-color:var(--gold-2);background:var(--warn-bg)}
.flash-info{border-left-color:var(--info);background:var(--info-bg)}
.pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:700;border:1px solid currentColor;line-height:1.5;white-space:nowrap}
.pill-ok{color:var(--ok);background:var(--ok-bg)}
.pill-bad{color:var(--bad);background:var(--bad-bg)}
.pill-warn{color:var(--warn);background:var(--warn-bg)}
.pill-info{color:var(--info);background:var(--info-bg)}
.pill-neutral{color:var(--ink-2);background:#F2F3F5}
.tone-ok{color:var(--ok)}.tone-bad{color:var(--bad)}.tone-warn{color:var(--warn)}

/* Stats */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));background:#fff;border:1px solid var(--line);margin-bottom:24px}
.stat{padding:14px 20px;border-right:1px solid var(--line-2)}
.stat:last-child{border-right:0}
.stat-label{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.stat-num{font-size:28px;font-weight:700;color:var(--navy);margin-top:2px}
.stat-of{font-size:15px;color:#6B7280;font-weight:500}

/* Tables and lists */
.table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line)}
.table th{text-align:left;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600;padding:10px 14px;border-bottom:1px solid var(--line);background:#FAFAFB}
.table td{padding:12px 14px;border-bottom:1px solid var(--line-2);vertical-align:top}
.table tr:last-child td{border-bottom:0}
.table.small td{padding:8px 12px}
.list,.picklist,.criteria,.history,.flags,.expect{list-style:none;margin:0;padding:0}
.list li{background:#fff;border:1px solid var(--line);padding:12px 16px;margin-bottom:-1px}
.list{margin-bottom:16px}
.picklist li{padding:10px 0;border-bottom:1px solid var(--line-2)}
.criteria li{padding:10px 0;border-bottom:1px solid var(--line-2);display:flex;flex-direction:column;gap:4px}
.history li{padding:8px 0;border-bottom:1px solid var(--line-2)}
.flags{display:flex;flex-wrap:wrap;gap:6px}
.steps li{margin-bottom:8px}
.expect li{display:flex;gap:12px;padding:8px 0;border-bottom:1px solid var(--line-2);font-size:14px}
.expect-state{font-weight:700;width:76px;flex-shrink:0}
.count{display:inline-block;min-width:24px;padding:0 7px;border-radius:999px;background:var(--line-2);color:var(--ink-2);font-size:13px;text-align:center;margin-left:4px;vertical-align:2px}
.upload-row{align-items:flex-end}

/* Readings page */
.panel{border-top:3px solid var(--gold)}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px 20px;align-items:end}
.form-grid .span-2{grid-column:1/-1}
.searchbar{display:flex;flex-wrap:wrap;gap:12px 14px;align-items:flex-end;background:#fff;border:1px solid var(--line);padding:14px 18px;margin-bottom:14px}
.searchbar .grow{flex:2 1 260px}
.searchbar label:not(.check):not(.grow){flex:0 1 160px}
.searchbar label.check{align-self:center;margin-top:18px}
.bulkbar{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;background:var(--navy);color:#fff;padding:10px 16px;margin-bottom:14px}
.bulkbar select{min-height:32px;padding:4px 8px;width:auto}
.bulkbar .btn{border-color:#fff}
.bulkbar .btn-primary{background:var(--gold-2);border-color:var(--gold-2);color:#fff}
.bulkbar .btn[disabled]{opacity:.55}
.bulkbar .small.muted{color:#C9D1E3}
.bulk-count{font-weight:700;min-width:84px}
.inline-label{flex-direction:row;align-items:center;gap:8px;color:#fff;font-weight:600;font-size:13px}
.bulk-sep{width:1px;height:24px;background:rgba(255,255,255,.3)}
details.group{background:#fff;border:1px solid var(--line);margin-bottom:12px}
details.group > summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;padding:14px 18px;cursor:pointer;list-style:none}
details.group > summary::-webkit-details-marker{display:none}
details.group > summary::before{content:"";width:0;height:0;border-left:7px solid var(--navy);border-top:5px solid transparent;border-bottom:5px solid transparent;margin-right:2px;align-self:center;transition:transform .15s}
details.group[open] > summary::before{transform:rotate(90deg)}
details.group[open] > summary{border-bottom:1px solid var(--line-2)}
.group-title{font-weight:700;color:var(--navy);font-size:16px}
.group-meta{color:var(--muted);flex:1 1 auto}
.group-link{margin-left:auto}
.group-empty{padding:12px 18px;margin:0}
.readings-table{border:0}
.readings-table select{min-height:34px;padding:4px 8px;min-width:150px;max-width:190px}
.col-check{width:40px}
.readings-table tr.is-dirty td{background:#FFF8E6}
.ai-toggle{white-space:nowrap;font-size:14px}
.snippet{margin-top:6px;padding:6px 8px;background:#F7F8FA;border-left:3px solid var(--line);font-family:Bitter,Georgia,serif;color:var(--ink-2)}
.snippet mark{background:#FFF1C2;color:var(--ink)}

/* OCR */
.card-callout{border-left:4px solid var(--gold-2)}
.ocr-progress{margin:14px 0 4px}
.bar{height:10px;background:var(--line-2);border-radius:999px;overflow:hidden}
.bar-fill{height:100%;width:0;background:var(--navy);transition:width .3s}

/* Sign-in */
.signin .wrap{max-width:460px}
.signin-card{background:#fff;border:1px solid var(--line);border-top:4px solid var(--gold);padding:32px 32px 24px;margin-top:24px;text-align:left}
.signin-badge{display:block;margin:0 auto 12px;height:96px;width:auto}
.signin-card h1{text-align:center;font-size:24px}
.signin-card > p.muted{text-align:center}

/* Report */
.report-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:28px;align-items:start}
.paper{background:#fff;border:1px solid var(--line);padding:28px 32px;font-family:Bitter,Georgia,serif;font-size:16px;line-height:1.75;white-space:pre-wrap;word-wrap:break-word}
.paper-col h2:first-child,.evidence-col h2:first-child{margin-top:0}
.hl{background:none;color:inherit;padding:1px 0;border-bottom:2px solid;box-decoration-break:clone;-webkit-box-decoration-break:clone;scroll-margin-top:90px}
.hl-ok{background:var(--ok-bg);border-color:var(--ok)}
.hl-bad{background:var(--bad-bg);border-color:var(--bad)}
.hl-warn{background:var(--warn-bg);border-color:var(--gold-2)}
.hl-info{background:var(--info-bg);border-color:var(--info)}
.hl.is-dismissed{background:none;border-bottom-style:dotted}
.tag{font-family:Inter,sans-serif;font-size:11px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;text-decoration:none;padding:1px 5px;margin-right:4px;border-radius:2px;vertical-align:1px;white-space:nowrap}
.tag-ok{color:#fff;background:var(--ok)}
.tag-bad{color:#fff;background:var(--bad)}
.tag-warn{color:#fff;background:var(--warn)}
.tag-info{color:#fff;background:var(--info)}
.tag:hover{color:#fff;text-decoration:underline}
.finding{background:#fff;border:1px solid var(--line);border-top:3px solid var(--line);padding:14px 18px;margin-bottom:14px;scroll-margin-top:90px}
.finding-bad{border-top-color:var(--bad)}
.finding-warn{border-top-color:var(--gold-2)}
.finding-ok{border-top-color:var(--ok)}
.finding-info{border-top-color:var(--info)}
.finding.is-dismissed{opacity:.7}
.finding:target{box-shadow:0 0 0 3px var(--gold-2)}
.finding header{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.finding p{margin:10px 0;font-size:14px}
blockquote.student{margin:10px 0 0;padding:2px 0 2px 12px;border-left:3px solid var(--line);font-family:Bitter,Georgia,serif;font-size:15px;color:var(--ink)}
.evidence{background:#F7F8FA;border:1px solid var(--line-2);padding:10px 12px}
.evidence-head{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline}
.evidence-head a{margin-left:auto}
.passage{font-family:Bitter,Georgia,serif;font-size:14px;line-height:1.6;margin:6px 0 0 !important;color:var(--ink-2)}
.passage mark{background:#FFF1C2;color:var(--ink);padding:0 1px}
.decide{border-top:1px solid var(--line-2);margin-top:10px;padding-top:10px;display:flex;flex-direction:column;gap:8px}
.respond summary{cursor:pointer;color:var(--navy)}
.response{background:#F7F8FA;padding:8px 10px;margin:8px 0}

@media (max-width:900px){
  .report-grid{grid-template-columns:minmax(0,1fr)}
  .table{display:block;overflow-x:auto;position:relative;-webkit-overflow-scrolling:touch}
  .paper{padding:20px}
  .top-in{padding:8px 16px}
  .wrap{padding:20px 16px 40px}
  .who-name{display:none}
  .who{margin-left:auto}
  .top nav{order:3;flex:1 1 100%;flex-wrap:nowrap;overflow-x:auto}
  .top nav a{padding:9px 10px 7px}
}
@media print{
  .top,.foot,.noprint,.decide form,.respond,.skip,.crumbs{display:none !important}
  body{background:#fff}
  .report-grid{grid-template-columns:1fr}
  .finding,.paper,.stats,.card{break-inside:avoid;border-color:#999}
  .tag{color:#000 !important;background:none !important;border:1px solid #000}
  a{color:#000}
}
