:root { --bg:#f4f6fa; --card:#fff; --ink:#1b2333; --muted:#667085; --line:#e3e8f0; --brand:#2f5bea; --danger:#c0392b; --ok:#1f8a5b; }
* { box-sizing: border-box; }
body { margin:0; font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; background:var(--bg); color:var(--ink); }
.shell { display:flex; min-height:100vh; }
.side { width:220px; background:#16203a; color:#cfd7ea; padding:20px 14px; display:flex; flex-direction:column; gap:4px; flex:none; }
.side .logo { font-weight:700; font-size:17px; color:#fff; padding:4px 10px 18px; }
.side a { color:#cfd7ea; text-decoration:none; padding:9px 12px; border-radius:8px; }
.side a:hover { background:#222f52; }
.side a.on { background:var(--brand); color:#fff; }
.side .sp { flex:1; }
.side button { background:none; border:0; color:#cfd7ea; text-align:left; padding:9px 12px; border-radius:8px; cursor:pointer; font:inherit; }
.side button:hover { background:#222f52; }
.main { flex:1; padding:28px; min-width:0; }
h1 { margin:0 0 6px; font-size:24px; }
.sub { color:var(--muted); margin:0 0 22px; }
.card { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:22px; max-width:760px; }
.card.wide { max-width:none; }
.empty { color:var(--muted); text-align:center; padding:36px 10px; }
label { display:block; font-weight:600; margin:14px 0 6px; }
input[type=password], input[type=text] { width:100%; padding:10px 12px; border:1px solid #c9d1e0; border-radius:8px; font:inherit; }
input:focus { outline:2px solid var(--brand); outline-offset:1px; }
.btn { background:var(--brand); color:#fff; border:0; border-radius:8px; padding:10px 18px; font:inherit; font-weight:600; cursor:pointer; margin-top:18px; }
.btn:disabled { opacity:.6; cursor:wait; }
.msg { margin-top:14px; min-height:1.2em; }
.msg.err { color:var(--danger); }
.msg.ok { color:var(--ok); }
.login { max-width:380px; margin:12vh auto; padding:0 16px; }
.login .card { max-width:none; }
.login h1 { text-align:center; }
@media (max-width:720px) { .shell { flex-direction:column; } .side { width:auto; flex-direction:row; flex-wrap:wrap; align-items:center; padding:10px; } .side .logo { padding:4px 8px; } .side .sp { display:none; } .main { padding:16px; } }
table.t { width:100%; border-collapse:collapse; font-size:14px; }
table.t th, table.t td { text-align:left; padding:8px 10px; border-bottom:1px solid var(--line); white-space:nowrap; }
table.t th { color:var(--muted); font-weight:600; }
table.t td.n, table.t th.n { text-align:right; }
.scroll { overflow-x:auto; }
.row { display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end; margin-bottom:14px; }
.row > div { min-width:130px; }
.row label { margin:0 0 4px; font-size:13px; }
select, input[type=number], input[type=date], input.num { padding:8px 10px; border:1px solid #c9d1e0; border-radius:8px; font:inherit; background:#fff; }
input.num { width:110px; }
.btn.sec { background:#e8edf8; color:var(--ink); }
.row .btn { margin-top:0; }
h2 { font-size:17px; margin:26px 0 8px; }
