*{box-sizing:border-box}
body{margin:0;background:#f3f5f7;color:#1f2937;font-family:Arial,"Noto Sans JP",sans-serif}
a{color:#0f5fa8;text-decoration:none}
.shell{min-height:100vh;display:flex}
.sidebar{width:240px;background:#182433;color:#fff;padding:22px 16px}
.brand{font-size:19px;font-weight:700;margin-bottom:26px}
.menu-title{font-size:12px;color:#9fb0c3;margin:20px 10px 8px}
.menu a{display:block;color:#eaf1f8;padding:10px;border-radius:6px}
.menu a:hover{background:#26384d}
.main{flex:1;padding:28px}
.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}
.card{background:#fff;border:1px solid #dce2e8;border-radius:10px;padding:24px;box-shadow:0 3px 12px rgba(0,0,0,.04)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px}
.stat{padding:18px;border:1px solid #e3e7eb;border-radius:8px;background:#fafbfc}
.status-ok{display:inline-block;padding:7px 12px;border-radius:6px;background:#eaf7ec;border:1px solid #a7d8af;color:#176b2c;font-weight:700}
.status-warn{display:inline-block;padding:7px 12px;border-radius:6px;background:#fff7df;border:1px solid #e4c467;color:#7a5900;font-weight:700}
table{width:100%;border-collapse:collapse}
th,td{padding:11px;border-bottom:1px solid #e4e8ec;text-align:left;vertical-align:top}
th{background:#f8fafb;width:210px}
.form-card{max-width:620px;margin:50px auto;background:#fff;border:1px solid #dce2e8;border-radius:10px;padding:28px}
label{display:block;font-weight:700;margin:15px 0 6px}
input{width:100%;padding:11px;border:1px solid #cbd3da;border-radius:6px;font-size:16px}
button,.button{display:inline-block;border:0;border-radius:6px;background:#145f9b;color:#fff;padding:11px 18px;font-weight:700;cursor:pointer}
.alert{padding:12px;border-radius:6px;margin:14px 0}
.alert-error{background:#fff0f0;border:1px solid #e6aaaa;color:#8b1e1e}
.alert-ok{background:#edf8ef;border:1px solid #a9d6b0;color:#176b2c}
.small{font-size:13px;color:#65717d}
code{background:#f0f2f4;padding:2px 5px;border-radius:4px}
