:root{color-scheme:light;--bg: #f4f6f9;--surface: #ffffff;--border: #d8dee8;--text: #1a2332;--muted: #5c6b7e;--brand: #1e3a5f;--brand-2: #4a7ba7;--accent: #c45c26;--danger: #b42318;--success: #067647;--warning: #b54708;--shadow: 0 1px 3px rgba(26, 35, 50, .08), 0 8px 24px rgba(26, 35, 50, .06);--radius: 10px;--font: "Segoe UI", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;max-width:100%;overflow-x:clip}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.45}a{color:var(--brand-2);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{display:grid;grid-template-rows:auto 1fr;min-height:100%;max-width:100%;overflow-x:clip}.app-shell>main{min-width:0;max-width:100%;overflow-x:clip}.topbar{display:flex;align-items:center;gap:1rem;padding:.75rem 1.25rem;background:var(--brand);color:#fff;box-shadow:var(--shadow)}.topbar a{color:#fff}.topbar .brand{display:flex;align-items:center;line-height:0}.topbar .brand:hover{text-decoration:none;opacity:.92}.topbar .brand-logo{height:36px;width:auto;display:block;border-radius:6px}.topbar nav{display:flex;gap:.75rem;flex:1}.topbar .user{font-size:.875rem;opacity:.9}.btn{border:1px solid transparent;background:var(--brand-2);color:#fff;border-radius:8px;padding:.45rem .85rem;font-weight:600}.btn:hover{filter:brightness(1.05)}.btn.secondary{background:#fff;color:var(--brand);border-color:var(--border)}.btn.danger{background:var(--danger)}.btn.ghost{background:transparent;border-color:#ffffff59;color:#fff}.btn:disabled{opacity:.55;cursor:not-allowed}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.filters{display:flex;flex-wrap:wrap;gap:.75rem;padding:.75rem 1rem;background:var(--surface);border-bottom:1px solid var(--border)}.filters label{display:flex;flex-direction:column;gap:.2rem;font-size:.75rem;color:var(--muted);font-weight:600}.filters label{min-width:0;max-width:100%}.filters input,.filters select{min-width:140px;max-width:100%;padding:.35rem .5rem;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text);font-weight:400}.map-layout{display:grid;grid-template-columns:1fr minmax(280px,360px);gap:0;min-height:0;height:calc(100vh - 120px)}.map-layout.split{grid-template-columns:55% 0 1fr}.map-layout.table-only{grid-template-columns:1fr}.map-layout.resizing{cursor:col-resize}.map-pane,.detail-pane{min-width:0;min-height:0;overflow:auto;padding:1rem}.detail-pane{border-left:1px solid var(--border);background:var(--surface)}.map-layout.split .map-pane{min-width:200px}.map-layout.split .detail-pane{min-width:240px;border-left:0}.split-handle{position:relative;z-index:2;width:0;margin:0;padding:0;border:0;background:transparent;cursor:col-resize;touch-action:none}.split-handle:before{content:"";position:absolute;top:0;right:-5px;bottom:0;left:-5px;background:transparent}.split-handle:after{content:"";position:absolute;top:0;bottom:0;left:-1px;width:2px;background:var(--border);transition:background .12s ease,width .12s ease,left .12s ease}.split-handle:hover:after,.split-handle:focus-visible:after,.map-layout.resizing .split-handle:after{left:-2px;width:4px;background:var(--accent)}.split-handle:focus-visible{outline:none}.state-path{stroke:#fff;stroke-width:.8;cursor:pointer;transition:fill .12s ease,stroke-width .12s ease}.state-path:hover,.state-path:focus{stroke:var(--accent);stroke-width:1.6;outline:none}.state-path.selected{stroke:var(--accent);stroke-width:2}.legend{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin-top:.75rem;font-size:.8rem}.legend-item{display:flex;align-items:center;gap:.35rem}.swatch{width:14px;height:14px;border-radius:3px;border:1px solid rgba(0,0,0,.15)}.toast{position:fixed;right:1rem;bottom:1rem;background:var(--brand);color:#fff;padding:.75rem 1rem;border-radius:8px;box-shadow:var(--shadow);z-index:50;max-width:360px}.toast.error{background:var(--danger)}.toast.success{background:var(--success)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1a233273;display:grid;place-items:center;z-index:40;padding:1rem}.modal{background:#fff;border-radius:12px;width:min(640px,100%);max-height:90vh;overflow:auto;padding:1.25rem;box-shadow:var(--shadow)}.modal h2{margin:0 0 1rem}.form-grid{display:grid;gap:.75rem}.form-grid label{display:grid;gap:.3rem;font-size:.85rem;font-weight:600}.form-grid input,.form-grid select,.form-grid textarea{padding:.45rem .55rem;border:1px solid var(--border);border-radius:6px}.form-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1rem}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th,.data-table td{text-align:left;padding:.55rem .65rem;border-bottom:1px solid var(--border)}.data-table th{background:#eef2f7;font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}.badge{display:inline-block;padding:.15rem .45rem;border-radius:999px;background:#e8eef5;color:var(--brand);font-size:.75rem;font-weight:600}.view-toggle{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.view-toggle button{border:0;background:#fff;padding:.35rem .7rem;color:var(--muted)}.view-toggle button.active{background:var(--brand);color:#fff}.empty{color:var(--muted);padding:1.5rem;text-align:center}.login-page{min-height:100%;display:grid;place-items:center;background:linear-gradient(160deg,#1e3a5f,#4a7ba7)}.login-card{background:#fff;padding:2rem;border-radius:16px;width:min(420px,92vw);box-shadow:var(--shadow);text-align:center}.login-card .login-logo{display:block;width:96px;height:auto;margin:0 auto 1rem;border-radius:12px}.login-card p{color:var(--muted)}@media(max-width:900px){.topbar{padding:.75rem 1rem;gap:.75rem}.filters{padding:.75rem 1rem}.filters label{flex:1 1 100%}.filters input,.filters select{min-width:0;width:100%;box-sizing:border-box}.map-layout,.map-layout.split{grid-template-columns:1fr;height:auto}.split-handle{display:none}.map-pane,.detail-pane{padding:1rem}.detail-pane{border-left:0;border-top:1px solid var(--border)}}
