:root{--g:#5f9f77;--gd:#3f7a57;--gl:#eaf4ed;--gx:#f6faf7;--t:#26352b;--m:#6b7c70;--b:#dbe7de}
*{box-sizing:border-box}
body{margin:0;font-family:'Noto Sans JP','Hiragino Sans','Yu Gothic',system-ui,sans-serif;background:var(--gx);color:var(--t);font-size:15px;line-height:1.55}
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 28px;background:#fff;border-bottom:1px solid var(--b);position:sticky;top:0;z-index:5;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--gd);font-weight:700;font-size:18px}.brand img{height:40px;width:40px}
.top nav{display:flex;gap:10px;flex-wrap:wrap}
.top nav a{padding:9px 18px;border-radius:999px;color:var(--m);text-decoration:none;font-weight:500;transition:.2s}
.top nav a:hover{background:var(--gl);color:var(--gd)}.top nav a.active{background:var(--g);color:#fff}
main{max-width:1100px;margin:30px auto;padding:0 18px}
h1{font-size:24px;font-weight:700;margin:0 0 20px;color:var(--gd)}h2{font-size:18px;margin:28px 0 12px;color:var(--gd)}h3{margin:18px 0 6px}
.card{background:#fff;border:1px solid var(--b);border-radius:18px;padding:22px;margin-bottom:22px;box-shadow:0 4px 18px rgba(63,122,87,.06)}
.wrap{overflow-x:auto;border-radius:14px}
table{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border:1px solid var(--b);border-radius:14px;overflow:hidden}
th{background:var(--gl);color:var(--gd);text-align:left;font-weight:600;padding:12px;font-size:13px;white-space:nowrap}td{padding:11px 12px;border-top:1px solid #edf3ef}
tr.low td{background:#fff6f5}
label{display:block;margin:12px 0 5px;font-size:13px;color:var(--m);font-weight:500}
input,textarea,select{width:100%;padding:11px 14px;border:1px solid var(--b);border-radius:12px;font:inherit;background:#fff;color:var(--t)}
input:focus{outline:0;border-color:var(--g);box-shadow:0 0 0 3px rgba(95,159,119,.18)}
input[type=checkbox]{width:auto}
button,.btn{background:var(--g);color:#fff;border:0;padding:10px 20px;border-radius:999px;cursor:pointer;text-decoration:none;display:inline-block;font:inherit;font-weight:500;transition:.2s}
button:hover,.btn:hover{background:var(--gd)}
.red{background:#fff;color:#c0392b;border:1px solid #ecc9c5}.red:hover{background:#fdeceb}
.light{background:var(--gl);color:var(--gd)}.light:hover{background:#dcecdf}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:4px 16px}@media(max-width:640px){.grid{grid-template-columns:1fr}.top{padding:10px 14px}}
.msg{padding:12px 16px;border-radius:12px;font-weight:500}.msg.ok,p.ok{color:#2e7d4f}.msg.ok{background:var(--gl)}.msg.err,p.err,.err{color:#b3392f}.msg.err{background:#fdeceb}
.badge{display:inline-block;padding:3px 11px;border-radius:999px;font-size:12px;font-weight:500;background:var(--gl);color:var(--gd)}
.badge.warn{background:#fdeceb;color:#b3392f}.badge.mute{background:#eef0ee;color:var(--m)}.badge.info{background:#fff4dc;color:#8a6410}
.search{position:relative}.search input{padding-left:44px}
.search .x{position:absolute;left:8px;top:50%;transform:translateY(-50%);width:30px;height:30px;padding:0;border-radius:50%;background:var(--gl);color:var(--gd);display:none;align-items:center;justify-content:center}
.tag{display:inline-block;background:var(--gl);padding:6px 14px;border-radius:999px;margin:4px 4px 0 0}.tag a{color:#b3392f;text-decoration:none;margin-left:8px}
body.auth{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background-image:linear-gradient(rgba(246,250,247,.25),rgba(40,90,60,.45)),url(login-bg.jpg),url(login-bg.svg);background-size:cover;background-position:center}
.login{width:min(410px,100%);background:rgba(255,255,255,.9);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:26px;padding:38px 34px;box-shadow:0 20px 60px rgba(30,70,45,.28)}
.login .lg{width:60px;height:60px;display:block;margin:0 auto 14px}.login h1{text-align:center;margin:0}.login .sub{text-align:center;color:var(--m);margin:4px 0 14px}.login button{width:100%;margin-top:20px;padding:13px}
@media print{.top,.noprint{display:none}body{background:#fff}}
