:root{--bg:#f6f7f9;--card:#fff;--border:#e2e5ea;--text:#1f2430;--muted:#8a91a0;--primary:#2563eb;--danger:#dc2626;--warn:#d97706;--ok:#16a34a;color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Hiragino Sans,Meiryo,sans-serif}*{box-sizing:border-box}body{background:var(--bg);margin:0}.app{max-width:960px;margin:0 auto;padding:0 16px 48px}.app-header{border-bottom:1px solid var(--border);margin-bottom:20px;padding:20px 0 12px}.app-header h1{margin:0 0 12px;font-size:20px}.tabs{gap:4px;display:flex}.tab{border:1px solid var(--border);background:var(--card);cursor:pointer;color:var(--muted);border-radius:8px;padding:8px 16px;font-size:14px}.tab.active{color:var(--text);border-color:var(--primary);font-weight:600}.stack{flex-direction:column;gap:16px;display:flex}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px 20px}.card h2{margin:0 0 12px;font-size:15px}.table{border-collapse:collapse;width:100%;font-size:14px}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 10px}.table th{color:var(--muted);font-size:12px;font-weight:600}.table .num{text-align:right}.row-danger{background:#fef2f2}.row-warn{background:#fffbeb}.row-inactive{color:var(--muted)}.badge{border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.badge.ok{color:var(--ok);background:#dcfce7}.badge.warn{color:var(--warn);background:#fef3c7}.badge.danger{color:var(--danger);background:#fee2e2}.badge.muted-badge{color:var(--muted);background:#eef0f3}.danger-text{color:var(--danger)}.muted{color:var(--muted);font-size:14px}.form{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.form label{color:var(--muted);flex-direction:column;gap:4px;font-size:13px;display:flex}.form input,.form select,select{border:1px solid var(--border);color:var(--text);background:#fff;border-radius:8px;padding:8px 10px;font-size:14px}button{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:9px 18px;font-size:14px}button:disabled{opacity:.5;cursor:default}button.link{color:var(--primary);background:0 0;padding:4px 8px}.error-banner{color:var(--danger);background:#fef2f2;border:1px solid #fecaca;border-radius:8px;margin:8px 0 0;padding:8px 12px;font-size:14px}.result{margin-top:12px;font-size:14px}.result ul{margin:8px 0 0;padding-left:20px}.result li{margin:4px 0}
