:root{--text:#4d4941;--text-h:#142423;--bg:#f3efe7;--panel:#fffcf7d6;--border:#1424231f;--code-bg:#ece3d2;--accent:#1d6353;--shadow:0 18px 50px #302e2814;--sans:"Avenir Next", "Segoe UI", sans-serif;--heading:Georgia, "Times New Roman", serif;--mono:"SFMono-Regular", "SF Mono", Consolas, monospace;font:17px/1.55 var(--sans);letter-spacing:.01em;color:var(--text);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(circle at top,#287a5e14,#0000 28%),linear-gradient(#f8f3ea 0%,#efe8dd 100%)}*{box-sizing:border-box}html,body,#root{min-height:100svh}body{margin:0}#root{width:min(1200px,100%);margin:0 auto}h1,h2{color:var(--text-h);font-family:var(--heading);margin:0;font-weight:700;line-height:1.05}h1{margin-bottom:.85rem;font-size:clamp(2.8rem,6vw,4.6rem)}h2{font-size:1.55rem}p,ul{margin:0}code{background:var(--code-bg);color:var(--text-h);font-family:var(--mono);border-radius:.35rem;padding:.12rem .38rem;font-size:.92em}.portal-shell{gap:1.5rem;max-width:960px;margin:0 auto;padding:1.5rem;display:grid}.state-screen{text-align:center;background:var(--panel);border:1px solid var(--border);max-width:720px;box-shadow:var(--shadow);border-radius:24px;margin:6rem auto;padding:2.5rem}.state-screen h1{margin-top:0}.state-screen code{background:#12544614;border-radius:6px;padding:.15rem .4rem;font-size:.9em}.spinner{color:var(--text-mute,#666);padding:2.5rem 0;font-size:1rem}.portal-header{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:24px;padding:2rem 2rem 1.6rem}.portal-titles .eyebrow{letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin:0 0 .5rem;font-size:.78rem;font-weight:700}.portal-titles h1{margin:0 0 .3rem;font-size:1.9rem}.portal-greeting{color:#555;margin:0}.portal-progress{align-items:center;gap:1rem;margin-top:1.4rem;display:flex}.progress-bar{background:#1254461a;border-radius:999px;flex:1;height:10px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#2f796b,#0b6623);height:100%;transition:width .4s}.progress-label{color:#17624b;font-variant-numeric:tabular-nums;font-weight:600}.critical-banner{color:#8b4c1d;background:#c46b2b1f;border:1px solid #c46b2b40;border-radius:14px;margin-top:1.25rem;padding:1rem 1.2rem}.critical-banner strong{margin-bottom:.3rem;display:block}.critical-banner ul{margin:0;padding-left:1.1rem}.checklist{gap:1.5rem;display:grid}.checklist-empty{text-align:center;color:#666;background:var(--panel);border:1px dashed var(--border);border-radius:20px;padding:2rem}.checklist-section{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:20px;padding:1.5rem}.checklist-section h2{color:var(--accent);letter-spacing:.02em;margin:0 0 1rem;font-size:1.1rem}.section-rows{gap:.9rem;display:grid}.row{background:#f7f2e780;border:1px solid #1254461a;border-radius:14px;grid-template-columns:1fr auto;align-items:center;gap:1rem;padding:1rem 1.15rem;transition:background-color .25s;display:grid}.row.status-complete{background:#187a5f14;border-color:#187a5f38}.row.status-not-applicable{color:#7a7a7a;background:#7878780f}.row-main{flex-direction:column;gap:.4rem;display:flex}.row-title{align-items:center;gap:.5rem;font-size:1rem;display:flex}.critical-dot{color:#c46b2b;font-size:.7rem}.row-notes{color:#666;margin:0;font-size:.88rem}.row-action{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.6rem;display:flex}.row-action input[type=text],.row-action input[type=number]{font:inherit;border:1px solid #12544633;border-radius:10px;min-width:10rem;padding:.5rem .7rem}.row-action input[type=file]{font:inherit;max-width:16rem}.row-action button{color:#fff;font:inherit;cursor:pointer;background:#0b6623;border:1px solid #0b6623;border-radius:10px;padding:.5rem .9rem;font-weight:600}.row-action button:disabled{opacity:.55;cursor:wait}.row-action button.ghost{color:#0b6623;background:0 0}.row-message{color:#0b6623;grid-column:1/-1;font-size:.85rem}.file-link{color:#0b6623;white-space:nowrap;text-overflow:ellipsis;max-width:12rem;font-weight:600;text-decoration:none;overflow:hidden}.file-link:hover{text-decoration:underline}.badge{text-transform:uppercase;letter-spacing:.05em;border-radius:999px;align-items:center;width:fit-content;padding:.2rem .6rem;font-size:.72rem;font-weight:700;display:inline-flex}.badge.missing,.badge.pending{color:#8b4c1d;background:#c46b2b26}.badge.complete{color:#17624b;background:#187a5f2e}.badge.not-applicable,.badge.na{color:#6b6b6b;background:#78787826}.gate{place-items:center;min-height:100vh;padding:2rem;display:grid}.gate-card{background:var(--panel);border:1px solid var(--border);width:min(420px,100%);box-shadow:var(--shadow);border-radius:20px;gap:.9rem;padding:2.2rem 2rem;display:grid}.gate-card h1{margin:0;font-size:1.5rem}.gate-card p{color:#666;margin:0}.gate-card label{letter-spacing:.05em;text-transform:uppercase;color:#555;font-size:.85rem;font-weight:600}.gate-card input{font:inherit;border:1px solid #12544640;border-radius:10px;padding:.75rem .9rem}.gate-card button{color:#fff;font:inherit;cursor:pointer;background:#0b6623;border:none;border-radius:10px;padding:.8rem 1rem;font-weight:600}.gate-card button:disabled{opacity:.55;cursor:wait}.gate-error{color:#a5321a;font-size:.9rem}@media (width<=720px){.row{grid-template-columns:1fr}.row-action{justify-content:flex-start}.portal-header{padding:1.4rem}}
