:root{--bg:#f6f7f9;--fg:#1e2430;--muted:#6b7280;--line:#dde1e7;--acc:#1f5fbf;--ok:#1a7f37;--warn:#b7791f;--err:#c0392b;--card:#fff}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Hiragino Sans","Noto Sans JP","Yu Gothic",sans-serif;font-size:14px;color:var(--fg);background:var(--bg)}
a{color:var(--acc);text-decoration:none}a:hover{text-decoration:underline}
header.top{display:flex;align-items:center;gap:18px;padding:8px 16px;background:#1e2a3a;color:#fff;position:sticky;top:0;z-index:5}
header.top a{color:#dbe4f0}header.top .brand{font-weight:700;color:#fff;font-size:15px}
header.top nav{display:flex;gap:12px;flex-wrap:wrap}header.top .me{margin-left:auto;display:flex;gap:10px;align-items:center}
main{padding:16px 20px;max-width:1400px;margin:0 auto}main.wide{max-width:none}
h1{font-size:20px;margin:0 0 12px}h2{font-size:16px;margin:18px 0 8px}h3{font-size:14px;margin:12px 0 6px}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:14px 16px;margin-bottom:14px}
.row{display:flex;gap:14px;flex-wrap:wrap}.row>.card{flex:1 1 320px}
table{border-collapse:collapse;width:100%;background:#fff}
th,td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}
th{background:#f0f2f5;font-weight:600;white-space:nowrap}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
table.sheet td{border:1px solid var(--line);font-size:12px;white-space:nowrap}
button,.btn{background:var(--acc);color:#fff;border:0;border-radius:6px;padding:6px 12px;cursor:pointer;font-size:13px;text-decoration:none;display:inline-block}
button.secondary,.btn.secondary{background:#e5e9f0;color:var(--fg)}button.danger,.btn.danger{background:var(--err)}
button.link{background:none;color:#dbe4f0;padding:0;text-decoration:underline}
form.inline{display:inline}
input[type=text],input[type=email],input[type=password],input[type=date],input[type=number],select,textarea{border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:13px;width:100%;background:#fff}
label{display:block;font-size:12px;color:var(--muted);margin:8px 0 2px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.muted{color:var(--muted)}.small{font-size:12px}
.flash{background:#e8f4ea;border:1px solid #b7dfc1;padding:8px 12px;border-radius:6px;margin-bottom:12px}.flash.error{background:#fdecea;border-color:#f5b5ae}
.badge{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;background:#e5e9f0}
.badge.error{background:#fdecea;color:var(--err)}.badge.warn{background:#fff4dc;color:var(--warn)}.badge.ok{background:#e8f4ea;color:var(--ok)}.badge.info{background:#e6eefc;color:var(--acc)}
.crumbs{margin-bottom:10px;font-size:13px}.crumbs a{margin-right:4px}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:8px 0}
.login{max-width:380px;margin:60px auto}
.ico{display:inline-block;width:18px;text-align:center;margin-right:4px}
.split{display:grid;grid-template-columns:320px 1fr;gap:12px;height:calc(100vh - 120px)}
.split .side{overflow:auto;border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px}
.split .side a{display:block;padding:3px 6px;border-radius:4px;font-size:12px;word-break:break-all}.split .side a:hover{background:#eef2f8}.split .side a.active{background:#dbe6f6;font-weight:600}
.split iframe{width:100%;height:100%;border:1px solid var(--line);border-radius:8px;background:#555}
.viewer{height:calc(100vh - 170px)}.viewer iframe,.viewer img{width:100%;height:100%;border:1px solid var(--line);border-radius:8px;background:#555;object-fit:contain}
details summary{cursor:pointer;color:var(--acc)}
pre{background:#f0f2f5;padding:8px;border-radius:6px;overflow:auto;font-size:12px}
.sev-error td:first-child{border-left:4px solid var(--err)}.sev-warn td:first-child{border-left:4px solid var(--warn)}.sev-ok td:first-child{border-left:4px solid var(--ok)}.sev-info td:first-child{border-left:4px solid var(--acc)}
.dropzone{border:2px dashed var(--line);border-radius:8px;padding:14px;text-align:center;color:var(--muted)}
.dropzone.over{border-color:var(--acc);background:#eef2f8}

/* forms / data pages */
.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem .9rem;align-items:end}
.form-grid label{display:flex;flex-direction:column;font-size:.85rem;color:#444;gap:.2rem}
.form-grid label.wide{grid-column:1/-1}
.form-grid input,.form-grid select,.form-grid textarea{font:inherit;padding:.35rem .5rem;border:1px solid #bbb;border-radius:4px}
.form-grid textarea{min-height:4.5em}
.check{flex-direction:row!important;align-items:center;gap:.4rem!important}
.sev-warn{color:#8a5a00;font-weight:600}
.sev-info{color:#245}
.sev-ok{color:#1a7f37}
.badge.error{background:#fde2e2;color:#a40000}
.badge.warn{background:#fff3cd;color:#7a5200}
.badge.info{background:#e3ecf7;color:#245}
.badge.ok{background:#dcf5e3;color:#1a7f37}
.tabs{display:flex;gap:.5rem;flex-wrap:wrap;margin:.5rem 0 1rem}
.tabs a{padding:.3rem .7rem;border:1px solid #ccc;border-radius:999px;text-decoration:none;color:#333}
.tabs a.on{background:#333;color:#fff;border-color:#333}
details.card summary{cursor:pointer;font-weight:600}
table.compact td,table.compact th{padding:.25rem .45rem;font-size:.88rem}
.exp-rows tr td{padding:.15rem .3rem}
.exp-rows input,.exp-rows select{width:100%;box-sizing:border-box}
.nowrap{white-space:nowrap}
small.mono{font-family:ui-monospace,monospace;color:#666}
