:root{--green:#266447;--deep:#173d2d;--mint:#eaf4ee;--cream:#f7f7f2;--text:#1d2923;--muted:#68756e;--line:#dbe3de;--warn:#fff3d6;--white:#fff}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--text);font:15px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif}header{min-height:76px;background:var(--deep);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:14px clamp(18px,4vw,58px);gap:24px}.brand{color:#fff;text-decoration:none;display:flex;flex-direction:column;line-height:1}.brand span{font-weight:800;font-size:24px;letter-spacing:.12em}.brand small{margin-top:7px;color:#cde0d5}nav{display:flex;align-items:center;gap:20px;flex-wrap:wrap}nav a,.link{color:#e9f2ed;text-decoration:none;background:none;border:0;padding:0;font:inherit;cursor:pointer}nav form{margin:0}main{max-width:1240px;margin:0 auto;padding:38px 24px 60px}h1{font-size:30px;margin:0 0 6px}h2{font-size:20px;margin:0 0 18px}.heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.heading p{margin:0;color:var(--muted)}.button,button{display:inline-block;background:var(--green);color:#fff;border:0;border-radius:8px;padding:10px 16px;text-decoration:none;font-weight:650;cursor:pointer}.button.secondary{background:var(--mint);color:var(--deep)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px}.stats article,.card{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:22px;box-shadow:0 3px 14px #173d2d0a}.stats article{display:flex;flex-direction:column}.stats span{color:var(--muted)}.stats strong{font-size:27px;margin-top:7px}.stats small{color:var(--muted)}.stats .warn{background:var(--warn)}.table-wrap{overflow:auto}.card.table-wrap{padding:0}table{width:100%;border-collapse:collapse;background:#fff}th,td{text-align:left;padding:13px 15px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:#f5f8f6}th.sortable{cursor:pointer;user-select:none;padding-right:25px;position:relative}th.sortable::after{content:"⇅";position:absolute;right:8px;opacity:.35}th.sortable[data-direction="asc"]::after{content:"↑";opacity:1}th.sortable[data-direction="desc"]::after{content:"↓";opacity:1}td a{color:var(--green);font-weight:650;text-decoration:none}.empty{text-align:center;color:var(--muted);padding:34px}.badge{display:inline-block;background:var(--mint);color:var(--deep);border-radius:999px;padding:3px 9px;font-size:12px}.badge.muted{background:#eee;color:#666}.due{color:#a13c26;font-weight:700}.search{display:flex;gap:8px;margin-bottom:18px}.search input{flex:1;max-width:480px}.form-card{max-width:760px}.form-card form p{display:grid;gap:6px;margin:0 0 16px}.form-card input,.form-card textarea,.form-card select,.search input{width:100%;border:1px solid #bac8c0;border-radius:7px;padding:10px 11px;background:#fff;font:inherit}.form-card textarea{min-height:90px}.form-card .helptext{display:block;font-size:12px;color:var(--muted);margin:6px 0 12px}.errorlist{color:#ad2f1c}.actions{display:flex;gap:10px}.plot-search-row{display:flex;gap:8px;margin-top:6px}.plot-search-row input{flex:1}.plot-search-row .button{width:auto;white-space:nowrap}.plot-select{margin-top:8px!important}.plot-select select{min-height:290px}.detail-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:18px;margin-bottom:18px}dl{display:grid;grid-template-columns:170px 1fr;gap:10px;margin:0}dt{color:var(--muted)}dd{margin:0;font-weight:550}.message{background:var(--mint);border:1px solid #b9d5c5;color:var(--deep);padding:12px 16px;border-radius:8px;margin-bottom:18px}.login{max-width:430px;margin:50px auto}.login p{color:var(--muted)}@media(max-width:850px){header{align-items:flex-start;flex-direction:column}nav{gap:13px}.stats{grid-template-columns:repeat(2,1fr)}.detail-grid{grid-template-columns:1fr}}@media(max-width:520px){main{padding:24px 12px}.stats{grid-template-columns:1fr}.heading{align-items:flex-start;flex-direction:column}.plot-search-row{align-items:stretch;flex-direction:column}.plot-search-row .button{width:100%}dl{grid-template-columns:1fr;gap:3px}dd{margin-bottom:12px}}
