:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#102130;background:#edf2f4;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{background:#edf2f4}body{margin:0;min-width:320px;min-height:100vh;background:#edf2f4}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}#root{min-height:100vh}.app-shell{min-height:100vh;background:#edf2f4;color:#102130}button,input,select{font:inherit}button{cursor:pointer}.topbar{display:flex;align-items:center;justify-content:space-between;background:linear-gradient(180deg,#132b3e,#0b1d2d);color:#f7fbff;padding:1rem 2rem;border-bottom:1px solid rgba(255,255,255,.08)}.brand-wrap{display:flex;align-items:center;gap:.8rem}.brand-mark{width:2.1rem;height:2.1rem;border-radius:.7rem;background:#72c2a133;display:grid;place-items:center;font-weight:700;border:1px solid rgba(117,214,176,.4)}.brand-mark.large{width:3.2rem;height:3.2rem;font-size:1.4rem}.brand-name{font-weight:700;letter-spacing:.02em}.main-nav{display:flex;align-items:center;gap:1rem}.nav-link,.link-button,.secondary-button,.primary-button,.close-button{border:none;border-radius:.75rem;transition:opacity .15s ease}.nav-link,.link-button{background:transparent;color:#f7fbff;opacity:.9;padding:.55rem .8rem}.topbar-actions{display:flex;align-items:center;gap:.8rem}.status-pill{display:inline-flex;align-items:center;border-radius:999px;font-size:.76rem;padding:.4rem .6rem;border:1px solid rgba(255,255,255,.08)}.status-pill.online{background:#52aa762e;color:#d7f8e5}.page-shell{max-width:1280px;margin:0 auto;padding:2rem 1.25rem 3rem}.narrow-shell{max-width:1060px}.page-header-row,.program-header,.person-header,.section-title-row,.modal-header,.monitor-header,.card-header-row,.program-name-row,.panel-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.breadcrumb{color:#4c6578;font-size:.82rem;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.35rem}.page-shell h2,.page-shell h3,.page-shell h4,.login-card h1{margin:0}.search-box{margin:1.2rem 0 1.5rem}.search-box input,.table-controls input,.table-controls select,.field-group input,.login-form input,.field-group select{width:100%;padding:.8rem .95rem;border-radius:.8rem;border:1px solid #ced9e1;background:#fff;color:#102130}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.2rem}.card-grid.compact{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.school-card,.program-card{width:100%;text-align:left;background:#fff;border:1px solid #d7e1e8;border-radius:1rem;padding:1.2rem;box-shadow:0 6px 20px #08131e0a}.card-header-row{align-items:flex-start;margin-bottom:1rem}.eyebrow{color:#4c6578;text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;margin-bottom:.35rem}.meta-list,.stat-row,.source-meta,.result-grid,.summary-row,.detail-grid{display:grid;gap:.85rem}.meta-list{grid-template-columns:repeat(2,minmax(0,1fr))}.meta-list div,.stat-row div,.source-meta div,.result-grid div{display:flex;flex-direction:column;gap:.25rem;color:#4f6677;font-size:.77rem}.meta-list strong,.stat-row strong,.source-meta strong,.result-grid strong{color:#102130;font-size:.96rem}.pill{display:inline-flex;align-items:center;border-radius:999px;padding:.35rem .62rem;font-size:.72rem;font-weight:600}.pill.neutral{background:#edf2f4;color:#314a5f}.panel-block,.table-panel,.detail-section{background:#fff;border:1px solid #dfe8ed;border-radius:1rem;padding:1.2rem;box-shadow:0 4px 16px #08131e0a;margin-top:1.4rem}.summary-row{grid-template-columns:repeat(5,minmax(0,1fr));margin-top:1.25rem}.summary-card{background:#fff;border:1px solid #dfe8ed;border-radius:.9rem;padding:1rem}.summary-label{color:#4c6578;font-size:.78rem;margin-bottom:.45rem}.summary-value{font-size:2rem;font-weight:700;color:#102130}.table-controls{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 1fr;gap:.8rem;margin-bottom:1rem}.table-wrap{overflow-x:auto;border:1px solid #dfe8ed;border-radius:.9rem}table{width:100%;border-collapse:collapse;min-width:980px}thead{background:#f4f7f9}th,td{padding:.8rem .9rem;border-bottom:1px solid #edf2f4;text-align:left;font-size:.85rem;color:#20364a}.clickable-row{cursor:pointer}.clickable-row:hover{background:#f6fafb}.pagination-row{display:flex;justify-content:space-between;align-items:center;color:#425a6d;padding-top:1rem}.primary-button,.secondary-button{padding:.8rem 1.2rem;font-weight:600}.primary-button{background:#12324a;color:#fff}.primary-button.small-button{padding:.6rem .9rem;font-size:.78rem}.secondary-button{background:#edf2f4;color:#10314a}.primary-button:disabled,.secondary-button:disabled{opacity:.45;cursor:not-allowed}.back-button{margin-top:1rem}.modal-backdrop{position:fixed;inset:0;background:#0b141a91;display:grid;place-items:center;z-index:40}.modal-card{width:min(780px,calc(100vw - 2rem));background:#fff;border-radius:1.2rem;padding:1.5rem;border:1px solid #dfe8ed;box-shadow:0 24px 60px #0a121938}.modal-header{margin-bottom:1.2rem}.close-button{width:2.3rem;height:2.3rem;background:#edf2f4;color:#20364a;font-size:1.4rem}.wizard-step{font-size:1.15rem;font-weight:700;margin-bottom:1rem}.run-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem}.option-card{background:#f8fafb;border:1px solid #dfe8ed;border-radius:1rem;padding:1rem;display:flex;flex-direction:column;gap:.5rem;text-align:left;color:#102130}.option-card.selected{border-color:#12324a;background:#eef8f4}.option-card strong{font-size:.9rem}.option-card span{color:#456179;line-height:1.45;font-size:.82rem}.field-group{margin-top:1.2rem;display:flex;flex-direction:column;gap:.55rem}.input-label{font-size:.8rem;font-weight:700;color:#35506a;text-transform:uppercase;letter-spacing:.08em}.field-group small,.form-error{color:#5d6f7c;font-size:.76rem}.form-error{color:#af3d3d;margin-top:.2rem}.radio-set{display:flex;flex-direction:column;gap:.6rem}.radio-set label{display:flex;align-items:center;gap:.6rem;color:#112d40}.modal-actions{display:flex;justify-content:flex-end;gap:.8rem;margin-top:1.4rem}.review-box{display:grid;gap:.9rem;background:#f7fafb;border-radius:.9rem;padding:1rem;border:1px solid #dfe8ed}.review-row{display:flex;justify-content:space-between;gap:1rem;color:#4a6173}.review-row strong{color:#112d40;max-width:70%;text-align:right}.monitor-header{align-items:flex-start}.monitor-actions{display:flex;gap:.8rem}.progress-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.8rem;margin-top:1.3rem}.progress-strip>div{background:#fff;border:1px solid #dfe8ed;border-radius:.9rem;padding:.9rem .8rem;display:flex;flex-direction:column;gap:.3rem;color:#537081;font-size:.75rem}.progress-strip strong{color:#102130;font-size:1rem}.stage-bar{display:flex;gap:.7rem;margin-top:1.2rem}.stage-chip{flex:1;background:#edf2f4;border:1px solid #d7e1e8;border-radius:999px;padding:.7rem .9rem;text-align:center;color:#4d6374}.stage-chip.active{background:#dff4ec;border-color:#86d2b0;color:#114d3d}.success-panel{margin-top:1.4rem;background:#f3fbf9;border:1px solid #bfe3d5;border-radius:1rem;padding:1.2rem}.success-header{font-size:1.2rem;font-weight:700;color:#113d32}.result-grid{grid-template-columns:repeat(5,minmax(0,1fr));margin-top:1rem}.mini-game-shell{margin-top:1.5rem;background:#fff;border:1px solid #dfe8ed;border-radius:1.1rem;padding:1rem;box-shadow:0 8px 18px #0a131914}.mini-game-header{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin-bottom:.8rem}.mini-status-strip{display:flex;flex-wrap:wrap;gap:.8rem;font-size:.76rem;color:#406177}.directory-dash-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:.9rem 0 .7rem}.directory-dash-title{font-size:.82rem;letter-spacing:.12em;font-weight:800;color:#10314b}.directory-dash-controls{display:flex;align-items:center;gap:.6rem}.crawl-complete-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 1rem;margin-bottom:.8rem;background:#1248341a;border:1px solid rgba(36,125,87,.28);border-radius:.9rem;color:#103b2f}.crawl-banner-title{font-weight:800;letter-spacing:.08em;font-size:.8rem}.crawl-banner-meta{font-size:.76rem;color:#315c51}.crawl-banner-actions{display:flex;gap:.6rem;flex-wrap:wrap}.game-board{position:relative;width:100%;aspect-ratio:900 / 550;border-radius:1rem;background:linear-gradient(180deg,#0c1d2c,#102f3d);border:1px solid #1a4662;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff0d}.game-board.good{animation:greenFlash .22s ease}.game-board.bad{animation:redFlash .22s ease}.game-board.danger{animation:dangerFlash .26s ease}@keyframes greenFlash{0%{box-shadow:inset 0 0 #5ce37c99}50%{box-shadow:inset 0 0 0 8px #5ce37c33}to{box-shadow:inset 0 0 #5ce37c00}}@keyframes redFlash{0%{box-shadow:inset 0 0 #f0636399}50%{box-shadow:inset 0 0 0 8px #f063633d}to{box-shadow:inset 0 0 #f0636300}}@keyframes dangerFlash{0%{box-shadow:inset 0 0 #ff4646b3}50%{box-shadow:inset 0 0 0 10px #ff464647}to{box-shadow:inset 0 0 #ff464600}}.brick{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.18rem;background:linear-gradient(180deg,#2dad68,#1a8a52);border:2px solid rgba(10,95,58,.95);border-radius:.55rem;box-shadow:inset 0 1px #fff3,0 8px 18px #0c181b14;color:#fff;text-align:center;padding:.25rem .2rem;overflow:hidden;-webkit-user-select:none;user-select:none}.brick-hazard{box-shadow:inset 0 1px #fff3,0 8px 18px #0c181b14,0 0 0 1px #ffd354cc}.brick-label{font-size:clamp(.46rem,.75vw,.72rem);font-weight:700;letter-spacing:.04em;line-height:1.1;text-transform:uppercase;white-space:normal;word-break:break-word;overflow-wrap:anywhere}.brick-points{font-size:clamp(.46rem,.7vw,.72rem);font-weight:800}.brick-warning{position:absolute;right:.3rem;bottom:.2rem;font-size:.7rem;line-height:1}.paddle{position:absolute;background:linear-gradient(180deg,#dfe7ec,#b5c4ce);border:1px solid rgba(64,86,96,.65);border-radius:999px;box-shadow:0 8px 18px #0000001f}.ball{position:absolute;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fefefe,#eaeef2 20%,#fff);border:1px solid rgba(0,0,0,.18);box-shadow:0 3px 12px #ffffff26}.spike{position:absolute;background:linear-gradient(180deg,#ff6b6b,#cf2d2d);clip-path:polygon(50% 0%,100% 100%,0% 100%);border:2px solid rgba(103,14,14,.9);box-shadow:0 0 0 2px #ff727233,0 0 14px #ff505059;animation:pulseSpike .9s ease-in-out infinite alternate}@keyframes pulseSpike{0%{filter:brightness(1)}to{filter:brightness(1.18)}}.game-overlay-card{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.8rem;min-width:min(78%,420px);padding:1.2rem 1.1rem;text-align:center;border-radius:1rem;background:#071015bd;border:1px solid rgba(255,255,255,.1);color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.game-overlay-card.small{min-width:220px}.game-overlay-title{font-size:clamp(1.4rem,2vw,2.2rem);font-weight:800;letter-spacing:.08em}.game-overlay-subtitle{font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;font-weight:800;color:#d8f8e8}.game-overlay-card p{margin:0;line-height:1.6;font-size:.92rem;color:#ffffffd1}.overlay-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:.7rem;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:#dfe9ee}.game-stats-bar{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.7rem;margin-top:.85rem}.game-stats-bar>div{background:#f4f7f9;border:1px solid #dfe8ed;border-radius:.85rem;padding:.7rem .8rem;display:flex;flex-direction:column;gap:.24rem;color:#4f6677;font-size:.72rem}.game-stats-bar strong{color:#102130;font-size:1rem}.login-screen{min-height:100vh;display:grid;place-items:center;background:linear-gradient(180deg,#edf2f4,#dfe8ee)}.login-card{width:min(420px,calc(100vw - 2rem));background:#fff;border-radius:1.3rem;border:1px solid #dfe8ed;padding:2rem 1.5rem;box-shadow:0 18px 36px #07121914}.login-brand{display:flex;flex-direction:column;align-items:center;gap:.8rem;margin-bottom:1.6rem}.login-form{display:flex;flex-direction:column;gap:.75rem}.full-width{width:100%}.status-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;min-width:5.5rem;padding:.35rem .6rem;text-transform:capitalize;font-size:.7rem;font-weight:700}.status-badge.new{background:#eaf9f0;color:#1b6d4f}.status-badge.active{background:#e9f3ff;color:#214d75}.status-badge.stale{background:#edf1f3;color:#5d6771}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-item{display:flex;flex-direction:column;gap:.35rem;padding:.9rem;background:#f8fafb;border:1px solid #e2ebf0;border-radius:.8rem}.detail-item span,.source-meta div span,.subheader-meta,.history-link{color:#4d6476;font-size:.75rem}.detail-item strong,.source-meta strong{color:#102130;font-size:.98rem;word-break:break-word}.subheader-meta{display:flex;align-items:center;gap:.7rem;margin-top:.5rem;flex-wrap:wrap}.source-screenshot{margin-top:1rem;border:1px solid #dfe8ed;border-radius:1rem;overflow:hidden;background:#f7fafb}.browser-bar{display:flex;align-items:center;gap:.55rem;background:#edf2f4;border-bottom:1px solid #dfe8ed;padding:.7rem .9rem}.dot{width:.7rem;height:.7rem;display:inline-block;border-radius:50%}.dot.red{background:#d66b68}.dot.amber{background:#dfab47}.dot.green{background:#78b57d}.address-bar{flex:1;background:#fff;border-radius:999px;border:1px solid #dfe8ed;padding:.35rem .7rem;font-size:.74rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.screenshot-body{position:relative;height:240px;background:linear-gradient(180deg,#fff,#f0f5f7)}.screenshot-header-box{position:absolute;top:20px;left:18%;right:18%;height:40px;background:#eef5f7;border-radius:.8rem;border:1px solid #dfe8ed;display:flex;align-items:center;justify-content:center;color:#2c3f50;font-size:.85rem}.field-highlight{position:absolute;height:18px;background:#aed4ff99;border:1px solid rgba(80,149,214,.7);border-radius:.4rem}.source-meta{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:1rem}.extracted-panel{margin-top:1rem;padding:1rem;background:#f8fafb;border:1px solid #e2ebf0;border-radius:.95rem;color:#2b3e50;line-height:1.6}.timeline{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.timeline-item{display:grid;grid-template-columns:120px 1fr;gap:1rem;align-items:flex-start;padding:.8rem 0;border-bottom:1px solid #ecf1f4}.timeline-date{font-weight:700;color:#46627a}.timeline-content{display:flex;flex-direction:column;gap:.45rem;color:#112d40}.history-values{display:flex;align-items:center;gap:.6rem;color:#304d63}.arrow{color:#6e8798}.empty-state{background:#f7fafb;border:1px dashed #ccd9e2;border-radius:.9rem;padding:1rem;color:#4e6578}.empty-state.compact{margin-top:1rem}@media (max-width: 900px){.summary-row,.progress-strip,.result-grid,.detail-grid,.source-meta,.run-options,.table-controls{grid-template-columns:1fr 1fr}}@media (max-width: 600px){.topbar,.page-header-row,.program-header,.person-header,.section-title-row,.monitor-header,.modal-actions,.monitor-actions,.main-nav,.topbar-actions,.mini-game-header{flex-direction:column;align-items:flex-start}.summary-row,.progress-strip,.result-grid,.detail-grid,.source-meta,.run-options,.table-controls,.meta-list{grid-template-columns:1fr}.main-nav{width:100%}.page-shell{padding:1.2rem .8rem 2rem}}.upload-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:16px}.upload-row input[type=text],.upload-row input[type=number]{flex:1 1 200px;min-width:0}.budget-field{display:inline-flex;align-items:center;gap:6px}.budget-field input{width:110px}.error-banner{margin-top:16px;padding:12px 14px;border-radius:8px;background:#fdecea;color:#8a1c13;border:1px solid #f5c2bd}.muted{color:#6b7280}.static-card{cursor:default;text-align:left}.row-missing{opacity:.55}.row-missing td:first-child:after{content:" · no longer listed";font-size:11px;color:#9ca3af}.skip-notice{border-left:3px solid #2563eb}.capitalise{text-transform:capitalize}.provenance-shot{position:relative;overflow:auto;max-height:520px;border:1px solid #e5e7eb;border-radius:8px}.provenance-shot img{display:block;width:100%;height:auto}.provenance-shot .field-box{position:absolute;border:2px solid #f59e0b;background:#f59e0b29;border-radius:3px;pointer-events:none}.login-api-field{margin-top:12px;text-align:left}.login-api-field input{width:100%}.login-card .link-button{margin-top:14px;color:#2563eb;font-size:13px;text-decoration:underline}.login-card .link-button:hover{color:#1d4ed8}
