@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&family=Noto+Sans+JP:wght@400;500;700&display=swap");:root{--primary:#0017c1;--primary-light:#dce8ff;--text:#1a1a1c;--text2:#595959;--text3:#9d9d9d;--bg:#fff;--bg2:#f5f5f5;--border:#d9d9d9;--success:#0d8a00;--success-bg:#e8f5e9;--error:#c9190b;--error-bg:#fce8e6;--warning:#b06a00;--warning-bg:#fff8e1;--radius:8px;--radius-lg:12px;--sidebar:220px;--font:"Inter","Noto Sans JP","Hiragino Kaku Gothic ProN",Meiryo,sans-serif}*{box-sizing:border-box;margin:0;padding:0}body,html{font-family:var(--font);font-size:14px;color:var(--text);background:var(--bg2);line-height:1.6}a{color:inherit;text-decoration:none}button{cursor:pointer}button,input,select,textarea{font-family:var(--font)}.layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar);background:#1a1a1c;position:fixed;top:0;left:0;height:100vh;display:flex;flex-direction:column;z-index:100;overflow-y:auto}.sidebar-logo{display:flex;align-items:center;gap:10px;padding:18px 16px;border-bottom:1px solid hsla(0,0%,100%,.08)}.sidebar-logo-icon{width:30px;height:30px;background:var(--primary);border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-logo-text{font-size:13px;font-weight:700;color:#fff;line-height:1.3}.sidebar-nav{flex:1 1;padding:8px 0}.sidebar-section{padding:12px 16px 4px;font-size:10px;font-weight:700;color:hsla(0,0%,100%,.3);letter-spacing:.08em;text-transform:uppercase}.sidebar-link{display:flex;align-items:center;gap:10px;padding:9px 16px;color:hsla(0,0%,100%,.6);font-size:13px;border-left:2px solid transparent;transition:all .15s}.sidebar-link:hover{color:#fff;background:hsla(0,0%,100%,.06)}.sidebar-link.active{color:#fff;background:hsla(0,0%,100%,.1);border-left-color:var(--primary);font-weight:500}.sidebar-link svg{width:16px;height:16px;flex-shrink:0;opacity:.8}.main-content{margin-left:var(--sidebar);flex:1 1;min-height:100vh;width:calc(100vw - var(--sidebar))}.page{padding:24px 28px;width:100%}.card{border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px}.btn,.card{background:var(--bg)}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--radius);font-size:13px;font-weight:500;border:1px solid var(--border);color:var(--text);transition:all .15s;cursor:pointer}.btn:hover{background:var(--bg2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover:not(:disabled){background:#001499}.btn-danger{background:var(--error-bg);color:var(--error);border-color:#f09595}.btn-sm{padding:5px 12px;font-size:12px}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover{background:var(--bg2);border-color:var(--border)}.field{margin-bottom:14px}.field label{display:block;font-size:12px;font-weight:500;color:var(--text2);margin-bottom:4px}.field input,.field select{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:14px;background:var(--bg);color:var(--text);transition:border-color .15s}.field input:focus,.field select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-light)}.badge{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500}.badge-ok{background:var(--success-bg);color:#0a5200}.badge-ng{background:var(--error-bg);color:#7a1209}.badge-warn{background:var(--warning-bg);color:#7a4600}.badge-blue{background:var(--primary-light);color:var(--primary)}table{width:100%;border-collapse:collapse;font-size:13px}th{padding:8px 12px;background:var(--bg2);font-weight:500;font-size:12px;color:var(--text2);text-align:left;white-space:nowrap}td,th{border-bottom:1px solid var(--border)}td{padding:10px 12px;vertical-align:middle}tr:last-child td{border-bottom:none}.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.page-title{font-size:20px;font-weight:700;margin-bottom:4px}.page-sub{font-size:13px;color:var(--text2);margin-bottom:20px}@keyframes fadeIn{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .2s ease}