:root{--bg: #f5f7f8;--surface: #ffffff;--surface-alt: #ecf0f2;--border: #dce3e7;--text: #1b2429;--text-muted: #647079;--text-faint: #94a0a7;--accent: #1f6f8b;--accent-strong: #155a72;--accent-soft: #e3eff3;--success: #2e8b57;--success-soft: #e4f3ea;--warning: #a9711b;--warning-soft: #f7edcd;--danger: #c0392b;--danger-soft: #fbe7e4;--shadow: 0 1px 2px rgba(20, 30, 35, .04), 0 4px 12px rgba(20, 30, 35, .05);--radius: 8px;--sans: -apple-system, "Segoe UI", "Hiragino Sans", "Yu Gothic UI", "Noto Sans JP", sans-serif;--mono: ui-monospace, "Cascadia Mono", "SF Mono", "Consolas", "Sarasa Mono J", monospace}@media (prefers-color-scheme: dark){:root{--bg: #0f1417;--surface: #161d22;--surface-alt: #1c242a;--border: #2a343b;--text: #e6ecef;--text-muted: #8fa0a8;--text-faint: #5e6d75;--accent: #59b3d1;--accent-strong: #7fc5de;--accent-soft: #173139;--success: #4fb27f;--success-soft: #163326;--warning: #d9a845;--warning-soft: #332714;--danger: #e3776a;--danger-soft: #331b18}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:14px;line-height:1.55}button,input,select,textarea{font-family:inherit;font-size:inherit}.app{display:flex;min-height:100vh}.sidebar{width:236px;flex:none;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;padding:18px;border-bottom:1px solid var(--border)}.brand-mark{width:28px;height:28px;border-radius:7px;background:linear-gradient(155deg,var(--accent),var(--accent-strong));display:flex;align-items:center;justify-content:center;flex:none;color:#fff;font-weight:700}.brand-name{font-weight:700;font-size:14.5px}.brand-sub{font-size:11px;color:var(--text-faint);font-family:var(--mono)}.nav{flex:1;overflow-y:auto;padding:14px 10px}.nav-label{font-size:10.5px;font-weight:700;letter-spacing:.09em;color:var(--text-faint);text-transform:uppercase;padding:12px 10px 6px}.nav-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 10px;border-radius:7px;border:none;background:none;color:var(--text-muted);cursor:pointer;font-size:13.5px;font-weight:500;margin-bottom:1px;text-decoration:none}.nav-item:hover{background:var(--surface-alt);color:var(--text)}.nav-item.active{background:var(--accent-soft);color:var(--accent-strong);font-weight:700}.sidebar-foot{border-top:1px solid var(--border);padding:8px}.foot-btn{display:flex;align-items:center;gap:9px;width:100%;padding:8px;border:none;background:none;border-radius:8px;cursor:pointer;text-align:left}.foot-btn:hover{background:var(--surface-alt)}.avatar{width:28px;height:28px;border-radius:50%;background:var(--accent-soft);color:var(--accent-strong);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:11.5px;flex:none}.who{font-size:12.5px;font-weight:600}.role{font-size:11px;color:var(--text-faint)}.main{flex:1;min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 26px;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:5}.crumb{font-size:12px;color:var(--text-faint)}.crumb b{color:var(--text);font-weight:700}.page-title{font-size:19px;font-weight:700;margin-top:2px}.topbar-right{display:flex;align-items:center;gap:10px}.content{padding:22px 26px 60px;max-width:1280px}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:7px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-weight:600;font-size:12.5px;cursor:pointer}.btn:hover{background:var(--surface-alt)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-strong)}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.small{padding:5px 10px;font-size:11.5px}.btn:disabled{opacity:.5;cursor:not-allowed}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:18px;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);gap:12px;flex-wrap:wrap}.panel-head h3{margin:0;font-size:14.5px;font-weight:700}.hint{font-size:12px;color:var(--text-faint);margin-top:2px}.panel-body{padding:16px 18px}.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.search{display:flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid var(--border);border-radius:7px;background:var(--surface-alt);font-size:12.5px;min-width:220px}.search input{border:none;background:none;outline:none;color:var(--text);font-size:12.5px;width:100%}table{width:100%;border-collapse:collapse;font-size:13px}.table-scroll{overflow-x:auto}th{text-align:left;padding:9px 14px;font-size:11px;font-weight:700;color:var(--text-faint);letter-spacing:.03em;text-transform:uppercase;border-bottom:1px solid var(--border);white-space:nowrap;background:var(--surface-alt)}td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-alt)}.mono{font-family:var(--mono);font-size:12.5px}.num{font-variant-numeric:tabular-nums;text-align:right}.cell-main{font-weight:600}.cell-sub{color:var(--text-faint);font-size:11.5px;margin-top:1px}.empty-row td{text-align:center;color:var(--text-faint);padding:22px}.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:700}.pill:before{content:"";width:6px;height:6px;border-radius:50%}.pill.on{background:var(--success-soft);color:var(--success)}.pill.on:before{background:var(--success)}.pill.off{background:var(--danger-soft);color:var(--danger)}.pill.off:before{background:var(--danger)}.pill.warn{background:var(--warning-soft);color:var(--warning)}.pill.warn:before{background:var(--warning)}.pill.neutral{background:var(--surface-alt);color:var(--text-muted);border:1px solid var(--border)}.pill.neutral:before{display:none}.pill.clickable{cursor:pointer;border:none;font-family:inherit}.type-badge{font-family:var(--mono);font-size:11px;padding:2px 7px;border-radius:5px;background:var(--surface-alt);color:var(--text-muted);border:1px solid var(--border)}.icon-btn{width:28px;height:28px;border-radius:6px;border:1px solid var(--border);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-muted);flex:none}.icon-btn:hover{background:var(--surface-alt);color:var(--text)}.icon-btn.danger-hover:hover{background:var(--danger-soft);color:var(--danger)}.row-actions{display:flex;gap:6px;justify-content:flex-end}.two-col{display:grid;grid-template-columns:1.3fr .9fr;gap:16px;align-items:start}.chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:20px;font-size:11.5px;font-weight:700;background:var(--surface-alt);color:var(--text-muted);border:1px solid var(--border);cursor:pointer}.chip.on{background:var(--accent-soft);color:var(--accent-strong);border-color:transparent}.toggle{width:32px;height:18px;border-radius:20px;background:var(--border);position:relative;flex:none;border:none;cursor:pointer;padding:0}.toggle.on{background:var(--accent)}.toggle:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--surface);transition:left .15s}.toggle.on:after{left:16px;background:#fff}.bulk-bar{display:flex;align-items:center;justify-content:space-between;padding:10px 18px;background:var(--accent-soft);border-bottom:1px solid var(--border);font-size:12.5px;font-weight:600;color:var(--accent-strong)}.login-screen{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);z-index:500;display:flex;align-items:center;justify-content:center}.login-card{width:368px;max-width:90vw;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:34px 30px;box-shadow:var(--shadow)}.login-mark{display:flex;align-items:center;gap:10px;margin-bottom:22px}.login-card h1{font-size:16.5px;margin:0 0 4px}.login-card .sub{font-size:12.5px;color:var(--text-faint);margin-bottom:22px}.login-card .btn.primary{width:100%;justify-content:center;padding:10px;margin-top:6px}.error-text{color:var(--danger);font-size:12.5px;margin-top:4px}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field label{font-size:12px;font-weight:600;color:var(--text-muted)}.field input,.field select,.field textarea{padding:8px 10px;border:1px solid var(--border);border-radius:7px;background:var(--surface-alt);color:var(--text);font-family:inherit;font-size:13px;width:100%;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}.field-row{display:flex;align-items:center;gap:8px}.select-trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border:none;border-radius:8px;background:var(--surface-alt);color:var(--text);font-family:inherit;font-size:13px;text-align:left;cursor:pointer;outline:none;transition:background-color .16s ease,box-shadow .16s ease,color .16s ease}.select-trigger:hover:not(:disabled){background:var(--accent-soft)}.select-trigger:focus-visible{box-shadow:0 0 0 3px var(--accent-soft),0 0 0 1.5px var(--accent)}.select-trigger[data-open=true]{background:var(--accent-soft);color:var(--accent-strong);box-shadow:0 0 0 1.5px var(--accent)}.select-trigger:disabled{opacity:.5;cursor:not-allowed}.select-trigger-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.select-chevron{flex:none;color:var(--text-faint);transition:transform .2s cubic-bezier(.16,1,.3,1),color .16s ease}.select-trigger[data-open=true] .select-chevron{transform:rotate(180deg);color:var(--accent)}.field .select-trigger,.col-builder-row .select-trigger{width:100%}.col-builder-row .select-trigger{padding:6px 8px;font-size:12.5px;border-radius:6px}.select-panel{position:fixed;z-index:500;min-width:160px;max-height:280px;overflow-y:auto;background:var(--surface);border-radius:10px;padding:5px;box-shadow:0 10px 28px #141e2329,0 2px 8px #141e2314;opacity:0;transform:translateY(-6px) scale(.97);transform-origin:top center;transition:opacity .16s cubic-bezier(.16,1,.3,1),transform .16s cubic-bezier(.16,1,.3,1);pointer-events:none}.select-panel.select-panel-up{transform:translateY(6px) scale(.97);transform-origin:bottom center}.select-panel.select-panel-visible{opacity:1;transform:translateY(0) scale(1);pointer-events:auto}.select-option{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 10px;border-radius:6px;font-size:13px;color:var(--text);cursor:pointer;transition:background-color .12s ease}.select-option-highlighted{background:var(--accent-soft)}.select-option-selected{color:var(--accent-strong);font-weight:600}.select-option svg{flex:none;color:var(--accent)}@media (prefers-reduced-motion: reduce){.select-panel,.select-chevron,.select-trigger{transition:none}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0e106b;z-index:400;display:flex;align-items:center;justify-content:center;padding:20px}.modal{width:480px;max-width:100%;max-height:88vh;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow);display:flex;flex-direction:column}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:15px 18px;border-bottom:1px solid var(--border)}.modal-head h3{margin:0;font-size:15px}.modal-body{padding:18px;overflow-y:auto}.modal-foot{padding:14px 18px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}.col-builder-row{display:grid;grid-template-columns:1.3fr .9fr auto auto auto;gap:6px;align-items:center;margin-bottom:8px}.col-builder-row input,.col-builder-row select{padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface-alt);font-size:12.5px;width:100%}.mini-label{font-size:10.5px;color:var(--text-faint);display:flex;flex-direction:column;align-items:center;gap:2px}.toast-container{position:fixed;bottom:22px;right:22px;display:flex;flex-direction:column;gap:8px;z-index:600}.toast{background:var(--text);color:var(--bg);padding:10px 16px;border-radius:8px;font-size:12.5px;font-weight:600;box-shadow:var(--shadow)}.toast.success{background:var(--success);color:#fff}.toast.error{background:var(--danger);color:#fff}.loading-note,.empty-note{color:var(--text-faint);font-size:12.5px;padding:20px;text-align:center}
