:root{color:#1f2933;background:#fafbf7;font-family:Arial,Helvetica,sans-serif}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}a:focus-visible,button:focus-visible,input:focus-visible{outline-offset:3px;outline:3px solid #f2b84b}.skip-link{z-index:10;color:#03451f;background:#fff;border-radius:8px;padding:.75rem 1rem;font-weight:700;position:fixed;top:-5rem;left:1rem}.skip-link:focus{top:1rem}button,input{font:inherit}button{color:#fff;cursor:pointer;background:#086b32;border:0;border-radius:8px;padding:.75rem 1rem;font-weight:700}button:disabled{opacity:.65;cursor:wait}.auth-page{background:linear-gradient(135deg,#eaf6ee,#fafbf7 55%,#dff0e4);place-items:center;min-height:100vh;padding:1.5rem;display:grid}.error-page{background:#fafbf7;place-items:center;min-height:100vh;padding:1.5rem;display:grid}.button-link{color:#fff;background:#086b32;border-radius:8px;padding:.75rem 1rem;font-weight:700;display:inline-block}.auth-card{background:#fff;border-radius:20px;width:min(100%,440px);padding:2rem;box-shadow:0 20px 60px #03451f20}.auth-card form{gap:1rem;margin:1.5rem 0;display:grid}label{gap:.45rem;font-weight:700;display:grid}input{border:1px solid #d1d5db;border-radius:8px;padding:.75rem}.eyebrow,.role{color:#086b32;text-transform:uppercase;letter-spacing:.09em;font-size:.75rem;font-weight:800}.muted{color:#6b7280;line-height:1.5}.error{color:#b42318;margin:0}.success{color:#086b32;margin:0}.notice-inline{color:#614700;background:#fff7df;border-left:4px solid #f2b84b;border-radius:4px;margin:1rem 0 0;padding:.75rem 1rem}.app-shell{grid-template-columns:240px minmax(0,1fr);min-height:100vh;display:grid}aside{color:#fff;background:#03451f;padding:1.5rem}.brand{letter-spacing:.12em;margin:0;font-size:1.5rem;font-weight:900}aside .role{color:#b7e3c4;margin:.5rem 0 2rem}nav{gap:.35rem;display:grid}nav a{border-radius:7px;padding:.7rem}nav a:hover,nav a.active{background:#086b32}nav a.active{box-shadow:inset 3px 0 #b7e3c4}.content>header{background:#fff;border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 2rem;display:flex}header div{gap:.15rem;min-width:0;display:grid}header strong,header span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}header span{color:#6b7280;font-size:.85rem}.secondary{color:#03451f;background:#fff;border:1px solid #03451f}.content main{max-width:1280px;padding:2.25rem}.grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;margin-top:2rem;display:grid}.panel,.notice{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:1.25rem}.panel h2,.notice h2{text-transform:capitalize;margin-top:0;font-size:1rem}.metric{color:#086b32;font-size:2rem;font-weight:800}.details{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-top:2rem;display:grid}.details div{gap:.35rem;display:grid}.details span{color:#6b7280;font-size:.85rem}.records{gap:.75rem;margin-top:2rem;display:grid}.records .panel{justify-content:space-between;gap:1rem;display:flex}.records h2{margin-bottom:.35rem}.records p,.records span{color:#6b7280}.status{color:#086b32;text-transform:capitalize}.notice{border-left:5px solid #ff9800;margin-top:2rem}.action-panel{transition:border-color .15s,transform .15s}.action-panel:hover{border-color:#086b32;transform:translateY(-2px)}.loading{color:#6b7280;place-items:center;min-height:240px;display:grid}.spinner{border:3px solid #eaf6ee;border-top-color:#086b32;border-radius:50%;width:2rem;height:2rem;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:720px){.app-shell{grid-template-columns:1fr}aside{padding:1rem}nav{scrollbar-width:thin;gap:.5rem;padding-bottom:.25rem;display:flex;overflow-x:auto}nav a{white-space:nowrap;flex:none;font-size:.875rem}nav a.active{box-shadow:inset 0 -3px #b7e3c4}aside .role{margin:.25rem 0 .75rem}.content>header,.content main{padding:1rem}.records .panel{flex-direction:column;align-items:flex-start}}@media (max-width:420px){.auth-page{padding:1rem}.auth-card{border-radius:14px;padding:1.5rem}.content>header{align-items:flex-start}.secondary{flex:none}}
