:root{--ink:#172321;--muted:#66706d;--line:#d9e1dd;--paper:#f5f7f3;--surface:#fff;--green:#23644f;--green-dark:#174b3a;--mint:#e1efe8;--amber:#a56616;--amber-bg:#fff4dc;--red:#a63f35;--red-bg:#fff0ee;--shadow:0 20px 50px #17232114}.excel-workspace h3{margin:28px 0 12px;font-size:1.05rem}.excel-workspace input:not([type=checkbox]),.excel-workspace textarea{border:1px solid var(--line);width:100%;min-height:44px;color:var(--ink);font:inherit;background:#fff;border-radius:10px;padding:10px}.excel-workspace textarea{resize:vertical;font-size:.9rem}.excel-workspace input:focus-visible,.excel-workspace textarea:focus-visible{outline:2px solid var(--green);outline-offset:2px}.excel-file{background:var(--mint);overflow-wrap:anywhere;border-radius:14px;gap:10px;margin:18px 0;padding:16px;display:grid}.excel-file span{color:var(--muted);font-size:.85rem}.excel-settings,.excel-review{margin-top:16px}.excel-roster{max-height:260px;font-size:.85rem;line-height:1.6;overflow-y:auto}.excel-workspace summary{cursor:pointer;color:var(--green);margin-top:18px;font-weight:700}.excel-actions{flex-wrap:wrap;gap:10px;margin-top:16px;display:flex}.excel-actions .button{height:auto;min-height:48px;padding:12px 16px}.excel-match{border:1px solid var(--line);border-radius:14px;grid-template-columns:minmax(0,1fr) minmax(180px,.8fr);gap:12px;margin:10px 0;padding:16px;display:grid}.excel-match>div,.excel-match>p,.excel-match>.check-row{grid-column:1/-1}.excel-match label{min-width:0}.score-legend{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:20px 0;font-size:.82rem;display:grid}.score-legend span{border:1px solid var(--line);background:var(--paper);border-radius:10px;padding:10px 12px}.excel-workspace>label{margin-top:16px}.excel-match.needs-choice{background:var(--amber-bg);border-color:#edc87c}.excel-match .check-row{margin-top:0}.excel-maps{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:16px 0;display:grid}.excel-maps a{overflow-wrap:anywhere;font-size:.8rem}.excel-maps img{object-fit:contain;background:var(--paper);border:1px solid var(--line);border-radius:10px;width:100%;max-height:240px}*{box-sizing:border-box}html{background:var(--paper)}body{color:var(--ink);background:radial-gradient(circle at 85% -10%, #e1efe8 0, transparent 35rem), var(--paper);margin:0;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select{font:inherit}button{cursor:pointer}a{color:var(--green);font-weight:700}.shell{max-width:850px;margin:0 auto;padding:22px 18px 52px}.centered{align-content:center;justify-items:start;max-width:560px;min-height:100vh;display:grid}.brand-mark{color:#fff;background:var(--green);letter-spacing:-.08em;border-radius:12px;place-items:center;width:38px;height:38px;font-weight:900;display:grid;box-shadow:0 7px 18px #23644f38}.centered .brand-mark{margin-bottom:28px}.eyebrow{color:var(--green);letter-spacing:.14em;text-transform:uppercase;margin:0;font-size:.72rem;font-weight:800}h1,h2,p{margin-top:0}h1{letter-spacing:-.055em;max-width:680px;margin-bottom:12px;font-size:clamp(2.2rem,6vw,4.3rem);line-height:.98}h2{letter-spacing:-.02em;margin:4px 0 0;font-size:1.15rem}.muted{color:var(--muted);line-height:1.55}.small{margin:6px 0 0;font-size:.82rem}.topbar{justify-content:space-between;align-items:center;gap:16px;padding-bottom:52px;display:flex}.brand{align-items:center;gap:11px;display:flex}.topbar-title{margin:3px 0 0;font-size:.92rem;font-weight:800}.text-button{color:var(--muted);background:0 0;border:0;padding:8px 0;font-size:.78rem;font-weight:700}.hero{padding:0 0 30px}.lede{max-width:590px;color:var(--muted);font-size:1.08rem;line-height:1.55}.card{box-shadow:var(--shadow);background:#ffffffe3;border:1px solid #d9e1dde6;border-radius:24px;margin-top:18px;padding:clamp(20px,4vw,32px)}.section-heading{justify-content:space-between;gap:20px;margin-bottom:22px;display:flex}.step-number{color:#b4c0ba;letter-spacing:-.08em;font-size:1.8rem;font-weight:800}.field-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}label>span,label:not(.check-row){color:var(--muted);gap:7px;font-size:.78rem;font-weight:800;display:grid}input[type=date],select{border:1px solid var(--line);width:100%;min-height:48px;color:var(--ink);background:#fff;border-radius:12px;outline:none;padding:0 13px}input[type=date]:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 3px #23644f1f}.check-row{color:var(--muted);align-items:flex-start;gap:10px;margin-top:18px;font-size:.82rem;line-height:1.45;display:flex}.check-row input{width:18px;height:18px;accent-color:var(--green);flex:none;margin:0}.check-row strong{color:var(--ink)}.dropzone{width:100%;min-height:150px;color:var(--green-dark);text-align:center;background:#f5faf7;border:1.5px dashed #a9beb4;border-radius:18px;align-content:center;place-items:center;gap:6px;padding:24px;transition:border .2s,background .2s,transform .2s;display:grid}.dropzone:hover,.dropzone.has-file{border-color:var(--green);background:var(--mint)}.dropzone:active{transform:scale(.99)}.dropzone strong{font-size:.98rem}.dropzone span:not(.upload-icon){color:var(--muted);font-size:.78rem}.upload-icon{color:#fff;background:var(--green);border-radius:50%;place-items:center;width:33px;height:33px;margin-bottom:4px;font-size:1.3rem;font-weight:300;display:grid}.preview-wrap{align-items:center;gap:13px;margin-top:14px;display:flex}.preview-wrap img{object-fit:cover;border:1px solid var(--line);border-radius:10px;width:58px;height:58px}.preview-wrap div{gap:4px;font-size:.82rem;display:grid}.preview-wrap span{color:var(--muted);font-size:.75rem}.button{border:0;border-radius:12px;min-height:48px;padding:0 17px;font-weight:800;transition:opacity .2s,transform .2s}.button:disabled{cursor:not-allowed;opacity:.42}.button:not(:disabled):active{transform:translateY(1px)}.primary{color:#fff;background:var(--green);box-shadow:0 8px 18px #23644f2e}.secondary{color:var(--green-dark);background:var(--mint)}.danger{color:#fff;background:var(--red)}.wide{width:100%;margin-top:18px}.analysis-banner{background:#f4f8f5;border-radius:12px;align-items:center;gap:10px;margin:0 0 17px;padding:12px 14px;display:flex}.analysis-banner>div{gap:3px;display:grid}.analysis-banner span:last-child{color:var(--muted);font-size:.75rem}.status-dot{background:var(--green);border-radius:50%;flex:none;width:9px;height:9px;box-shadow:0 0 0 4px #23644f1a}.status-dot.warn{background:var(--amber);box-shadow:0 0 0 4px #a566161f}.review-list{gap:8px;display:grid}.review-row{border:1px solid #edf1ee;border-radius:12px;grid-template-columns:minmax(0,1fr) 170px 66px;align-items:center;gap:10px;padding:10px;display:grid}.review-row.needs-choice{background:#fffaf0;border-color:#edc87c}.student{gap:3px;min-width:0;display:grid}.student strong{text-overflow:ellipsis;white-space:nowrap;font-size:.84rem;overflow:hidden}.student span{text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:.7rem;overflow:hidden}.review-row select{min-height:39px;padding:0 8px;font-size:.74rem}.confidence{justify-items:end;gap:4px;display:grid}.confidence-bar{background:var(--green);border-radius:5px;width:100%;max-width:42px;height:5px;display:block}.confidence-bar.low{background:var(--amber)}.confidence small{color:var(--muted);font-size:.65rem}.review-check{padding-top:16px}.blocker-list{color:var(--amber);background:var(--amber-bg);border-radius:10px;gap:4px;margin-top:16px;padding:12px 14px;font-size:.78rem;line-height:1.4;display:grid}.overwrite-box{background:var(--amber-bg);border:1px solid #edc87c;border-radius:14px;gap:5px;margin-top:18px;padding:16px;font-size:.82rem;display:grid}.overwrite-box span{color:var(--muted);font-size:.76rem}.overwrite-box .button{margin-top:9px}.alert{border-radius:13px;gap:4px;margin:16px 0;padding:14px 16px;font-size:.82rem;line-height:1.4;display:grid}.alert.error{color:var(--red);background:var(--red-bg)}.alert.success{color:var(--green-dark);background:var(--mint)}.alert a{width:max-content;margin-top:3px;font-size:.78rem}.footer{color:var(--muted);justify-content:space-between;gap:16px;padding:26px 4px 0;font-size:.72rem;display:flex}.footer a{font-size:.72rem}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:600px){.excel-match,.score-legend{grid-template-columns:1fr}.shell{padding:17px 14px 38px}.topbar{padding-bottom:38px}.hero{padding-bottom:18px}h1{font-size:2.7rem}.lede{font-size:.98rem}.field-grid{grid-template-columns:1fr}.card{border-radius:18px;padding:19px 15px}.review-row{grid-template-columns:minmax(0,1fr) 145px}.confidence{display:none}.footer{gap:7px;display:grid}}
