:root{--bg:#fafbfc;--surface:#fff;--surface-2:#f4f6f8;--surface-3:#eef1f4;--border:#e4e8ec;--border-strong:#d0d6dc;--text:#1a1f24;--text-2:#5b6672;--text-3:#8c96a1;--text-mute:#b0b8c1;--blue:#2563eb;--blue-2:#1d4ed8;--blue-soft:#eff4fe;--blue-border:#c9daf8;--green:#10a86b;--green-soft:#e6f7ef;--amber:#d97706;--amber-soft:#fef3e2;--red:#dc2626;--red-soft:#fdecec;--purple:#7c3aed;--purple-soft:#f3edfe;--font-sans:"Inter", "Noto Sans JP", -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic ProN", "Yu Gothic Medium", sans-serif;--font-mono:"JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;--radius-sm:4px;--radius:6px;--radius-lg:8px;--shadow-sm:0 1px 2px #0f172a0a;--shadow-pop:0 8px 24px #0f172a1a;--sidebar-w:224px;--topbar-h:48px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font-sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:13px;line-height:1.5}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}input,select,textarea{color:inherit;font-family:inherit}a{color:var(--blue);text-decoration:none}a:hover{color:var(--blue-2)}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.app{grid-template-columns:var(--sidebar-w) 1fr;grid-template-rows:var(--topbar-h) 1fr;grid-template-areas:"topbar topbar""sidebar main";height:100vh;min-height:100vh;display:grid}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;grid-area:topbar;justify-content:space-between;align-items:center;padding:0 20px;display:flex}.brand{align-items:center;gap:10px;display:flex}.brand__mark{border-radius:var(--radius-sm);background:var(--blue);color:#fff;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:flex}.brand__name{letter-spacing:-.01em;font-size:14px;font-weight:600}.brand__sub{color:var(--text-3);border-left:1px solid var(--border);margin-left:10px;padding-left:10px;font-size:11px}.topbar__right{color:var(--text-2);align-items:center;gap:16px;font-size:12px;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;grid-area:sidebar;display:flex;overflow-y:auto}.sidebar__section{padding:16px 12px 8px}.sidebar__label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);padding:0 8px 8px;font-size:10.5px;font-weight:600}.nav-list{flex-direction:column;gap:1px;display:flex}.nav-item{border-radius:var(--radius-sm);cursor:pointer;color:var(--text);text-align:left;border:1px solid #0000;align-items:center;gap:10px;width:100%;padding:8px 10px;font-size:13px;text-decoration:none;transition:background .1s,border-color .1s;display:flex}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item.active{background:var(--blue-soft);border-color:var(--blue-border);color:var(--blue-2)}.nav-item__dot{background:var(--text-mute);border-radius:50%;flex-shrink:0;width:8px;height:8px}.nav-item.active .nav-item__dot{background:var(--blue)}.nav-item__body{flex:1;min-width:0}.nav-item__name{white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.nav-item__sub{color:var(--text-3);white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:11px;overflow:hidden}.nav-item.active .nav-item__sub{color:var(--blue-2);opacity:.7}.sidebar__footer{border-top:1px solid var(--border);color:var(--text-3);margin-top:auto;padding:12px;font-size:11px}.main{background:var(--bg);grid-area:main;overflow-y:auto}.page{padding:18px 24px 40px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.page-head__title{letter-spacing:-.02em;margin-bottom:4px;font-size:22px;font-weight:700;line-height:1.25}.page-head__sub{color:var(--text-2);font-size:12.5px}.page-head__actions{align-items:center;gap:8px;display:flex}.grid{gap:12px;display:grid}.grid.g-2{grid-template-columns:repeat(2,1fr)}.grid.g-3{grid-template-columns:repeat(3,1fr)}.grid.g-4{grid-template-columns:repeat(4,1fr)}.grid.g-5{grid-template-columns:repeat(5,1fr)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;display:flex}.card__head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:11px 14px;display:flex}.card__title{letter-spacing:-.005em;font-size:12.5px;font-weight:600}.card__sub{color:var(--text-3);margin-top:2px;font-size:11px}.card__body{padding:14px}.card--flush .card__body{padding:0}.kpi{flex-direction:column;gap:6px;padding:14px;display:flex}.kpi__label{color:var(--text-3);text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:500}.kpi__value{letter-spacing:-.02em;color:var(--text);font-size:22px;font-weight:600}.kpi__delta{font-size:11.5px;font-weight:500}.delta-up{color:var(--green)}.delta-down{color:var(--red)}.delta-flat{color:var(--text-3)}.btn{border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);height:28px;color:var(--text);white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:12px;font-weight:500;text-decoration:none;transition:background .1s,border-color .1s;display:inline-flex}.btn:hover{background:var(--surface-2);border-color:var(--border-strong);color:var(--text)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{width:13px;height:13px}.btn--primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn--primary:hover{background:var(--blue-2);border-color:var(--blue-2);color:#fff}.btn--ghost{color:var(--text-2);background:0 0;border-color:#0000}.btn--ghost:hover{background:var(--surface-2);color:var(--text)}.btn--danger{background:var(--surface);border-color:var(--red);color:var(--red)}.btn--danger:hover{background:var(--red-soft)}.btn--sm{height:24px;padding:0 8px;font-size:11.5px}.btn--icon{width:28px;padding:0}.btn--icon.btn--sm{width:24px}.badge{background:var(--surface-3);height:20px;color:var(--text-2);border-radius:10px;align-items:center;gap:4px;padding:0 8px;font-size:11px;font-weight:500;display:inline-flex}.badge--blue{background:var(--blue-soft);color:var(--blue-2)}.badge--green{background:var(--green-soft);color:var(--green)}.badge--amber{background:var(--amber-soft);color:var(--amber)}.badge--red{background:var(--red-soft);color:var(--red)}.badge--purple{background:var(--purple-soft);color:var(--purple)}.badge--gray{background:var(--surface-3);color:var(--text-2)}.dot{background:currentColor;border-radius:50%;width:6px;height:6px;display:inline-block}.input,.select{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);height:30px;color:var(--text);outline:none;padding:0 10px;font-size:12.5px;transition:border-color .1s}.input:focus,.select:focus{border-color:var(--blue-border);box-shadow:0 0 0 3px var(--blue-soft)}.input::placeholder{color:var(--text-mute)}.select{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'><path d='M3 5l3 3 3-3' stroke='%238C96A1' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-position:right 8px center;background-repeat:no-repeat;padding-right:24px}.field{flex-direction:column;gap:4px;display:flex}.field__label{color:var(--text-2);font-size:11px;font-weight:500}.tbl-wrap{overflow-x:auto}.tbl{border-collapse:collapse;width:100%;font-size:12.5px}.tbl th{background:var(--surface-2);text-align:left;color:var(--text-2);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;padding:8px 12px;font-size:11.5px;font-weight:600;position:sticky;top:0}.tbl td{border-bottom:1px solid var(--border);vertical-align:middle;padding:9px 12px}.tbl tbody tr:hover td{background:var(--surface-2)}.tbl td.right,.tbl th.right{text-align:right}.tbl td.center,.tbl th.center{text-align:center}.tbl tbody tr:last-child td{border-bottom:none}.tbl--compact td{padding:6px 12px}.tabs{border-bottom:1px solid var(--border);gap:2px;margin-bottom:16px;display:flex}.tab{color:var(--text-2);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px;font-size:12.5px;font-weight:500}.tab:hover{color:var(--text)}.tab.active{color:var(--blue);border-bottom-color:var(--blue)}.empty{text-align:center;color:var(--text-3);padding:40px 20px;font-size:12.5px}.empty__title{color:var(--text-2);margin-bottom:4px;font-size:14px;font-weight:600}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius);text-align:center;background:var(--surface);cursor:pointer;padding:32px;transition:border-color .15s,background .15s}.dropzone:hover{border-color:var(--blue-border);background:var(--blue-soft)}.dropzone.is-dragover{border-color:var(--blue);background:var(--blue-soft)}.dropzone__title{margin-bottom:4px;font-size:14px;font-weight:600}.dropzone__sub{color:var(--text-3);font-size:12px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row--end{justify-content:flex-end}.row--between{justify-content:space-between}.stack{flex-direction:column;gap:8px;display:flex}.stack--lg{gap:16px}.muted{color:var(--text-3)}.text-2{color:var(--text-2)}.right{text-align:right}.nowrap{white-space:nowrap}.full-width{width:100%}.sidebar::-webkit-scrollbar{width:6px;height:6px}.main::-webkit-scrollbar{width:6px;height:6px}.tbl-wrap::-webkit-scrollbar{width:6px;height:6px}.sidebar::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.main::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.tbl-wrap::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.sidebar::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}.main::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}.tbl-wrap::-webkit-scrollbar-thumb:hover{background:var(--border-strong)}.integrity-matrix-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);max-height:70vh;overflow:auto}.integrity-matrix{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:12px}.integrity-matrix thead th{z-index:2;background:var(--surface-2);color:var(--text-2);text-align:center;border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 6px;font-weight:500;position:sticky;top:0}.integrity-matrix thead th.ym-col{min-width:60px}.integrity-matrix th.sticky-col,.integrity-matrix td.sticky-col{background:var(--surface);z-index:1;text-align:left;border-right:1px solid var(--border);min-width:180px;padding:6px 12px;position:sticky;left:0}.integrity-matrix thead th.sticky-col{background:var(--surface-2);z-index:3}.integrity-matrix tbody tr:hover td.sticky-col{background:var(--surface-2)}.integrity-matrix tbody td{border-bottom:1px solid var(--border);text-align:center;padding:6px 0;font-size:13px}.integrity-matrix tbody tr:last-child td{border-bottom:none}.integrity-matrix tbody tr:hover td{background:var(--surface-2)}.cell.exists{color:var(--green);font-weight:600}.cell.missing{color:var(--red);background:var(--red-soft);font-weight:600}.cell.out{color:var(--text-mute)}.cell--clickable{cursor:pointer}.cell--clickable:hover{background:var(--green-soft)}.cell-dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:4px;display:inline-block}.cell-dot.exists{background:var(--green)}.cell-dot.missing{background:var(--red)}.cell-dot.out{background:var(--text-mute)}@media (max-width:820px){.app{grid-template-columns:1fr;grid-template-areas:"topbar""main"}.sidebar{display:none}.grid.g-3,.grid.g-4,.grid.g-5{grid-template-columns:repeat(2,1fr)}.grid.g-2{grid-template-columns:1fr}}
