:root{--bg: #2c3747;--panel: #28323f;--card: #2b3646;--card-2: #313d4e;--ink: #eef2f6;--muted: #8899aa;--line: #3a4658;--cyan: #07b1eb;--cyan-ink: #06212e;--ok: #2ec28a;--err: #ff6b5e;--hover: #313e50;--row-alt: #2a3442;--font-body: "Museo Sans 300", "Museo Sans", -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-head: "Museo Sans 900", "Museo Sans", -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:13px}.app{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;gap:16px;padding:12px 18px;background:var(--panel);border-bottom:1px solid var(--line);flex:0 0 auto}.brand{display:flex;align-items:center;gap:14px}.brand .logo{height:26px;width:auto;display:block}.brand .divider{width:1px;height:28px;background:var(--line)}.brand .titles strong{font-family:var(--font-head);font-size:15px;letter-spacing:.2px}.brand .titles .sub{display:block;color:var(--muted);font-size:11px;margin-top:2px}.actions{display:flex;align-items:center;gap:8px;margin-left:auto;flex-wrap:wrap}.actions .spacer{width:8px}button{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);padding:6px 12px;border-radius:7px;cursor:pointer;transition:background .12s,border-color .12s,color .12s}button:hover:not(:disabled){background:var(--hover);border-color:var(--cyan)}button:disabled{opacity:.4;cursor:not-allowed}.actions button.primary,.empty button{background:var(--cyan);border-color:var(--cyan);color:var(--cyan-ink);font-family:var(--font-head)}.actions button.primary:hover:not(:disabled),.empty button:hover{filter:brightness(1.08)}.example-select{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);padding:6px 10px;border-radius:7px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.example-select:hover{background:var(--hover);border-color:var(--cyan)}.example-select option{background:var(--card-2);color:var(--ink)}.account{display:flex;align-items:center;gap:8px;padding-left:4px;margin-left:2px;border-left:1px solid var(--line)}.account-name{color:var(--muted);font-size:12px;white-space:nowrap}.logout{font-size:12px;color:var(--cyan);text-decoration:none;border:1px solid var(--line);padding:5px 10px;border-radius:7px}.logout:hover{border-color:var(--cyan);background:var(--hover)}.status{font-family:var(--font-head)}.status.ok{color:var(--ok);border-color:#2ec28a80;background:#2ec28a1a}.status.err{color:var(--err);border-color:#ff6b5e80;background:#ff6b5e1a}.errorpanel{background:#ff6b5e14;border-bottom:1px solid rgba(255,107,94,.4);padding:10px 18px;max-height:30vh;overflow:auto;flex:0 0 auto}.errorpanel-head{display:flex;justify-content:space-between;font-family:var(--font-head);color:var(--err);margin-bottom:6px}.errorpanel ul{margin:0;padding-left:18px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--ink)}.intro-modal{max-width:860px;margin:auto;max-height:88vh}.intro-body{overflow-y:auto;padding:20px 28px 24px}.intro-label{font-family:var(--font-head);font-size:11px;letter-spacing:3px;color:var(--cyan)}.intro-head{font-family:var(--font-head);font-size:30px;font-weight:900;margin:6px 0 12px;line-height:1.1}.intro-head .hl{color:var(--cyan)}.intro-body p{max-width:70ch;line-height:1.55;color:var(--ink);margin:0 0 10px}.intro-body a{color:var(--cyan);text-decoration:none;border-bottom:1px solid rgba(7,177,235,.4)}.intro-body a:hover{border-bottom-color:var(--cyan)}.intro-cols{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:14px}.intro-cols h2{font-family:var(--font-head);font-size:13px;letter-spacing:.4px;color:var(--ink);margin:0 0 8px;padding-bottom:6px;border-bottom:1px solid var(--line)}.intro-cols ul{margin:0;padding-left:18px;line-height:1.55}.intro-cols li{margin-bottom:5px}.intro-note{color:var(--muted);font-size:12px;margin-top:10px}@media(max-width:900px){.intro-cols{grid-template-columns:1fr}}.docinfo{flex:0 0 auto;display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:8px 18px;background:var(--panel);border-bottom:1px solid var(--line)}.docinfo .di-field{display:flex;align-items:center;gap:7px}.docinfo label{color:var(--muted);font-size:10px;font-family:var(--font-head);letter-spacing:.6px;text-transform:uppercase}.docinfo input[type=text],.docinfo input[type=date]{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);padding:5px 8px;border-radius:6px;color-scheme:dark}.docinfo .di-name input{min-width:260px;font-family:var(--font-head)}.docinfo input:focus{outline:2px solid var(--cyan);outline-offset:-2px;background:#07b1eb14}.docinfo .di-spacer{margin-left:auto}.docinfo .di-rev{color:var(--cyan);font-family:var(--font-head)}.docinfo .di-ro{color:var(--ink)}.grid-wrap{flex:1 1 auto;overflow:auto;background:var(--bg)}.grid{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%}.grid th,.grid td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:0;text-align:left;vertical-align:middle}.grid thead th{position:sticky;z-index:3;background:var(--card-2);color:var(--ink);padding:7px 10px;font-family:var(--font-head);font-size:11px;letter-spacing:.3px;white-space:nowrap;vertical-align:bottom;text-align:left}.grid thead tr.group-row th{top:0;height:26px;text-align:center;font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:var(--cyan);background:var(--panel);border-bottom:1px solid var(--line)}.grid thead tr.group-row th.group-head{border-left:1px solid var(--line)}.grid thead tr:not(.group-row) th{top:26px;border-bottom:2px solid var(--cyan)}.th-label{font-size:11px}.th-hint{font-family:var(--font-body);font-weight:400;font-size:9.5px;letter-spacing:0;color:var(--muted);margin-top:2px;text-transform:none}.th-ex{color:var(--muted);opacity:.85}.grid .kref{color:var(--cyan);font-weight:400}.grid tbody tr{background:var(--card)}.grid tbody tr:nth-child(2n){background:var(--row-alt)}.grid tbody tr:hover{background:var(--hover)}.col-name{position:sticky;left:0;z-index:2;background:inherit;min-width:320px}.grid thead .col-name{z-index:4;background:var(--card-2)}.grid tbody tr .col-name{background:inherit}.tree-cell{display:flex;align-items:center;gap:6px;padding:3px 8px 3px 6px}.twisty{border:none;background:none;padding:0;width:16px;color:var(--cyan);font-size:10px;cursor:pointer}.twisty:hover{filter:brightness(1.3);background:none}.twisty-spacer{display:inline-block;width:16px}.name-input{flex:1 1 auto;font-family:var(--font-head)}.ref-badge{color:var(--muted);font-size:10px;font-family:ui-monospace,monospace;white-space:nowrap}.grid td input,.grid td select{width:100%;min-width:110px;border:none;background:transparent;padding:6px 8px;font:inherit;color:var(--ink)}.grid td select option{background:var(--card-2);color:var(--ink)}.grid td .name-input{min-width:0}.grid td input::placeholder{color:var(--muted)}.grid td input:focus,.grid td select:focus{outline:2px solid var(--cyan);outline-offset:-2px;background:#07b1eb14;border-radius:4px}.grid td select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.col-actions{position:sticky;right:0;z-index:2;white-space:nowrap;text-align:center;padding:4px 6px;background:inherit;border-left:1px solid var(--line)}.grid thead .col-actions{z-index:4;background:var(--card-2)}.grid thead tr.group-row .col-actions{background:var(--panel)}.grid tbody tr .col-actions{background:inherit}.mini{padding:3px 7px;font-size:11px;border-radius:5px;margin:0 2px}.mini.danger{color:var(--err);border-color:#ff6b5e66}.mini.danger:hover{border-color:var(--err)}.empty{flex:1 1 auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--muted)}.footer{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:8px 18px;background:var(--panel);border-top:1px solid var(--line);color:var(--muted)}.footer-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}.footer-sep{width:1px;height:22px;background:var(--line);margin:0 4px}.footer-info{font-size:11px;color:var(--muted)}.linklike{border:none;background:none;padding:0;color:var(--cyan);cursor:pointer;font:inherit;text-decoration:underline}.linklike:hover{background:none;filter:brightness(1.15)}.legal-modal{max-width:760px;margin:auto;max-height:88vh}.legal-body{overflow-y:auto;padding:20px 26px 26px;line-height:1.55}.legal-body h2{font-family:var(--font-head);font-size:18px;color:var(--cyan);margin:22px 0 6px}.legal-body h2:first-child{margin-top:0}.legal-body h3{font-family:var(--font-head);font-size:13px;margin:16px 0 4px}.legal-body p{margin:0 0 10px;max-width:70ch}.legal-body a{color:var(--cyan);text-decoration:none;border-bottom:1px solid rgba(7,177,235,.4)}.legal-body a:hover{border-bottom-color:var(--cyan)}.legal-body dl{display:grid;grid-template-columns:220px 1fr;gap:4px 16px;margin:0 0 8px}.legal-body dt{color:var(--muted)}.legal-body dd{margin:0}.legal-body ul{margin:4px 0 10px;padding-left:18px}.legal-note{margin-top:18px;padding-top:10px;border-top:1px solid var(--line);color:var(--muted);font-size:12px;font-style:italic}@media(max-width:640px){.legal-body dl{grid-template-columns:1fr;gap:2px 0}.legal-body dt{margin-top:8px}}.doku-modal{max-width:1500px;margin:auto;max-height:92vh}.doku-body{overflow-y:auto;padding:18px 26px 28px;line-height:1.5}.doku-body h2{font-family:var(--font-head);font-size:16px;color:var(--cyan);margin:26px 0 8px;padding-bottom:5px;border-bottom:1px solid var(--line)}.doku-body h2:first-child{margin-top:0}.doku-body p{margin:0 0 10px;max-width:95ch}.doku-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;background:var(--card-2);border:1px solid var(--line);border-radius:4px;padding:1px 5px;color:var(--ink)}.doku-list{margin:0 0 12px;padding-left:18px;max-width:95ch}.doku-list li{margin-bottom:7px}.doku-ext{color:var(--cyan);font-weight:700}.doku-table{border-collapse:separate;border-spacing:0;width:100%;margin:4px 0 8px;font-size:12px}.doku-table th,.doku-table td{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:6px 9px;text-align:left;vertical-align:top}.doku-table th{position:sticky;top:0;z-index:1;background:var(--card-2);color:var(--ink);font-family:var(--font-head);font-size:10.5px;letter-spacing:.3px;text-transform:uppercase;white-space:nowrap;border-bottom:2px solid var(--cyan)}.doku-table tbody tr:nth-child(2n){background:var(--row-alt)}.doku-table tbody tr:hover{background:var(--hover)}.doku-table .doku-id{font-family:ui-monospace,monospace;color:var(--muted);white-space:nowrap}.doku-table .doku-field{font-family:ui-monospace,monospace;color:var(--ink);white-space:nowrap}.doku-table .doku-sov{color:var(--cyan);font-family:var(--font-head);white-space:nowrap}.doku-table .doku-muted{color:var(--muted)}.doku-sov-table{max-width:720px}.doku-sources{margin-top:18px;padding-top:10px;border-top:1px solid var(--line);color:var(--muted);font-size:11.5px;font-style:italic}.vendor-hint{padding:12px 18px;color:var(--muted);font-size:12px}.empty-inline{padding:30px;text-align:center;color:var(--muted)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0c121a9e;display:flex;align-items:stretch;justify-content:center;padding:28px;z-index:50}.modal{background:var(--panel);border:1px solid var(--line);border-radius:10px;display:flex;flex-direction:column;width:100%;max-width:1500px;overflow:hidden;box-shadow:0 20px 60px #0006}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--line)}.modal-head strong{font-family:var(--font-head);font-size:15px}.modal-head .sub{color:var(--muted);font-size:12px}.modal-head-actions{display:flex;gap:8px}.vendor-grid-wrap{flex:1 1 auto;overflow:auto}.vendor-grid{width:max-content;min-width:100%}.vendor-grid thead th{top:0!important}.vendor-grid th:first-child,.vendor-grid td:first-child{position:sticky;left:0;z-index:2;background:var(--card)}.vendor-grid thead th:first-child{z-index:5}.vendor-boolentity{display:flex;flex-direction:column;gap:2px;padding:3px 4px}.vendor-boolentity select,.vendor-boolentity input{min-width:150px!important}.vendor-grid td{overflow:hidden}
