:root{--fg:#16181d;--muted:#6b7280;--line:#e5e7eb;--bg:#fff;--soft:#f7f8fa;--accent:#2563eb;--accent-soft:#eef2ff;--green:#047857;--green-soft:#ecfdf5;--red:#b91c1c;--red-soft:#fef2f2;--amber:#b45309;--amber-soft:#fffbeb;--radius:10px}*{box-sizing:border-box}body,html{margin:0}body{background:var(--soft);color:var(--fg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:1.5rem;margin:0 0 1rem}h2{font-size:1.15rem;margin:1.5rem 0 .75rem}.muted{color:var(--muted)}.small{font-size:.85rem}.page{margin:0 auto;max-width:960px;padding:1.5rem 1rem 4rem}.topbar{background:var(--bg);border-bottom:1px solid var(--line)}.topbar-inner{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;margin:0 auto;max-width:960px;padding:.8rem 1rem}.brand{color:var(--fg);font-weight:800;letter-spacing:-.01em}.nav{display:flex;flex-wrap:wrap;gap:.25rem}.nav a{border-radius:8px;color:var(--muted);font-weight:500;padding:.35rem .6rem}.nav a:hover{background:var(--soft);text-decoration:none}.nav a.router-link-active{background:var(--accent-soft);color:var(--accent)}.spacer{flex:1}.grid{display:grid;gap:1rem}.grid.cols-2{grid-template-columns:repeat(2,1fr)}.grid.cols-3{grid-template-columns:repeat(3,1fr)}.grid.cols-4{grid-template-columns:repeat(4,1fr)}@media(max-width:720px){.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}}.card{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.1rem}.card-link{color:inherit;display:block}.card-link:hover{border-color:var(--accent);text-decoration:none}.stat .label{color:var(--muted);font-size:.85rem}.stat .value{font-size:1.6rem;font-weight:700;margin-top:.15rem}.stat .sub{color:var(--muted);font-size:.8rem}.badge{background:var(--accent-soft);border-radius:999px;color:var(--accent);display:inline-block;font-size:.78rem;font-weight:600;padding:.12rem .6rem}.badge.green{background:var(--green-soft);color:var(--green)}.badge.red{background:var(--red-soft);color:var(--red)}.badge.amber{background:var(--amber-soft);color:var(--amber)}.badge.gray{background:var(--soft);color:var(--muted)}.tbl{background:var(--bg);border-collapse:collapse;width:100%}.tbl td,.tbl th{border-bottom:1px solid var(--line);padding:.55rem .7rem;text-align:left;vertical-align:top}.tbl th{color:var(--muted);font-size:.8rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase}.tbl tr:last-child td{border-bottom:none}.tbl .num{font-variant-numeric:tabular-nums;text-align:right}.btn{background:var(--accent);border:none;border-radius:8px;color:#fff;cursor:pointer;display:inline-block;font-size:.95rem;font-weight:600;padding:.55rem 1rem}.btn:hover{filter:brightness(.96);text-decoration:none}.btn:disabled{cursor:default;opacity:.6}.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--accent)}.field{display:block;margin-bottom:.9rem}.field label{color:var(--muted);display:block;font-size:.85rem;margin-bottom:.25rem}.field input,.field select,select.sel{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--fg);font-size:1rem;padding:.55rem .7rem;width:100%}.field.inline{display:inline-block;margin-right:.5rem}.notice{border-radius:var(--radius);padding:.9rem 1rem}.notice.err{background:var(--red-soft);color:var(--red)}.notice.ok{background:var(--green-soft);color:var(--green)}.notice.key{background:var(--amber-soft);color:var(--fg);word-break:break-all}.field textarea,textarea.ta{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--fg);font:inherit;font-size:1rem;padding:.55rem .7rem;resize:vertical;width:100%}.btn.sm{font-size:.8rem;padding:.25rem .55rem}@media print{.btn,.no-print,.topbar{display:none!important}body{background:#fff}.page{max-width:none;padding:0}.card{border-color:#ccc}}.row{align-items:center;display:flex;flex-wrap:wrap;gap:.6rem}.bar{background:var(--line);border-radius:999px;height:8px;overflow:hidden}.bar>span{background:var(--accent);display:block;height:100%}
