:root{--ac:#1448CE;--fg:#0B1526;--mu:#4C5F7B;--bd:#D6DEEC;--sub:#F1F5FB}
*{box-sizing:border-box}body{margin:0;font:15px/1.5 system-ui,sans-serif;color:var(--fg);background:var(--sub)}
header{background:#fff;border-bottom:1px solid var(--bd);padding:12px 24px;display:flex;gap:16px;align-items:center}
header b{font-size:18px}header a{color:var(--mu);text-decoration:none;font-size:14px}header .sp{flex:1}
main{max-width:980px;margin:0 auto;padding:20px 16px 60px}h1{font-size:22px;margin:6px 0 4px}h2{font-size:16px;margin:0 0 10px}
nav{display:flex;gap:6px;margin:12px 0 16px;flex-wrap:wrap}nav a{padding:7px 14px;border-radius:8px;background:#fff;border:1px solid var(--bd);color:var(--fg);text-decoration:none;font-size:14px}nav a.on{background:var(--ac);color:#fff;border-color:var(--ac)}
.card{background:#fff;border:1px solid var(--bd);border-radius:12px;padding:16px 18px;margin-bottom:16px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
label{display:block;font-size:13px;color:var(--mu);font-weight:600}input,select,textarea{width:100%;margin-top:4px;padding:8px 10px;border:1px solid var(--bd);border-radius:8px;font:inherit;background:#fff}
input[type=checkbox]{width:auto;margin-right:6px}.hint{font-size:12px;color:var(--mu);font-weight:400}
button,.btn{background:var(--ac);color:#fff;border:0;border-radius:8px;padding:9px 18px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;display:inline-block}
button.ghost{background:#fff;color:var(--ac);border:1px solid var(--ac)}button.danger{background:#fff;color:#A40E0E;border:1px solid #F09A9A}
table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;color:var(--mu);font-size:12px;padding:6px 8px;border-bottom:1px solid var(--bd)}td{padding:8px;border-bottom:1px solid var(--sub);vertical-align:top}
.msg{background:#E6EEFF;border:1px solid #9DBAF5;border-radius:8px;padding:10px 14px;margin:10px 0}
.badge{display:inline-block;border-radius:6px;padding:2px 8px;font-size:12px;font-weight:700}.ready{background:#DDF3E4;color:#14602E}.needs_attention{background:#FFDADA;color:#A40E0E}.skipped{background:#ECEFF4;color:#3B4A63}
.badge.submitted,.badge.delivered,.badge.accepted{background:#DCE8FF;color:#0B3AA8}.badge.withdrawn{background:#ECEFF4;color:#3B4A63}.badge.rejected{background:#FFE9C7;color:#8A5200}.issue{font-size:13px;margin:3px 0}.issue.error::before{content:"● ";color:#D62828}.issue.warning::before{content:"● ";color:#C77700}
.row{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}
.auth{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px}
.auth-brand{display:flex;align-items:center;gap:10px;font-size:22px;font-weight:800;letter-spacing:-.02em;margin-bottom:22px}
.auth-mark{width:36px;height:36px;border-radius:9px;background:var(--ac);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:24px;font-weight:700}
.auth-card{width:100%;max-width:400px;background:#fff;border:1px solid var(--bd);border-radius:16px;padding:28px 28px 26px;box-shadow:0 8px 30px rgba(20,72,206,.08)}
.auth-card h1{font-size:22px;margin:0 0 4px;text-align:center}.auth-card .intro{color:var(--mu);font-size:14px;text-align:center;margin:0 0 20px}
.auth-card label{margin-top:14px}.auth-card button{width:100%;margin-top:22px;padding:11px 18px}
.auth-err{background:#FFE3E3;border:1px solid #F09A9A;color:#8B1010;border-radius:8px;padding:10px 12px;font-size:14px;margin:0 0 6px}
.auth-foot{margin-top:18px;color:var(--mu);font-size:12px;text-align:center}
.msg.err{background:#FFE3E3;border-color:#F09A9A}.ghost-link{background:#fff;color:var(--ac);border:1px solid var(--ac)}.ok{color:#14602E}.bad{color:#A40E0E}
