:root{--base-font-size: 14px;--base-font-family: arial;--border-colour: #7e7d7d;--border-colour-hover: #000;--app-colour: #2c3e50}@media (max-width: 480px){:root{--base-font-size: 10px}}@media (min-width: 481px) and (max-width: 768px){:root{--base-font-size: 12px}}html,body{display:flex;flex-direction:column;height:100%;margin:0;font-size:var(--base-font-size);font-family:var(--base-font-family)}app{display:flex;flex-direction:column;height:100vh}app.hidden{display:none}.header,.footer{min-height:1.5em;font-size:1.5em;background:var(--app-colour);color:#fff;display:flex;flex-flow:row;justify-content:space-between;align-items:center;padding:.5em 1em;border-bottom:2px solid var(--border-colour)}.footer{font-size:.8em;border-top:2px solid var(--border-colour);border-bottom:none}.dialog-box .footer{font-size:1.5em}.body-panel{flex:1;display:flex;flex-direction:column;overflow:hidden}button{padding:6px 12px;margin:.3em;border:1px solid #999;border-radius:.3em;cursor:pointer;color:var(--app-colour)}button:hover{background-color:#e0e0e0}.left-section,.centre-section,.right-section{display:flex;gap:8px;align-items:center}.right-section{margin-left:auto}.centre-section{flex:1;justify-content:center}.panel{background:#f0f0f0;overflow:auto;padding:5px}canvas{display:block;width:100%;height:100%}.tab.panel{display:flex;flex-direction:column;height:100%}.tab-buttons{flex:0 0 auto;display:flex;height:4rem;border-bottom:2px solid #ccc;margin-bottom:8px;-webkit-user-select:none;user-select:none}.tab-btn{background:none;border:none;padding:10px 16px;cursor:pointer;font-size:14px}.tab-btn.active{border-bottom:2px solid #007bff;font-weight:700}.tab-content{flex:1 1 auto;overflow-y:auto;display:none;padding:8px;align-items:flex-start}.tab-content.active{display:block}.no-data{font-style:italic;color:#666;padding:10px;color:red}.unstyled-link{font-size:1.5em;color:inherit;text-decoration:none;cursor:pointer}.unstyled-link:hover{opacity:.8}#splash-screen{position:fixed;top:0;left:0;width:100%;height:100%;background:#1a1a1a;color:#fff;display:flex;justify-content:center;align-items:center;font-size:1.5rem;font-family:Arial,sans-serif;z-index:9999;opacity:0;transition:opacity .8s ease}#splash-screen.visible{opacity:1}#splash-content{text-align:center}#splash-content .message{margin-bottom:1rem}#splash-content .spinner{border:4px solid #ccc;border-top:4px solid #4cafef;border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite;margin:0 auto}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.grid.resizable{display:grid;height:100%;width:100%}.divider{background:var(--border-colour)}.resize-horizontal{cursor:row-resize}.resize-vertical{cursor:col-resize}.resize:hover{background:var(--border-colour-hover)}table{border-collapse:collapse;width:100%;font-size:.8rem}table thead th{background-color:#000;color:#fff;border:none;padding:4px 10px}table td{border:1px solid #ccc;padding:4px 10px}table tbody tr:nth-child(odd){background-color:#dadada}table tbody tr.highlight{background-color:#ff0}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;justify-content:center;align-items:center;background:#0000;opacity:0;pointer-events:none;transition:opacity .3s ease;z-index:9999}.dialog-overlay.open{background:#00000080;opacity:1;pointer-events:all}.dialog-box{transform:scale(.95);transition:transform .3s ease;display:flex;flex-direction:column;max-height:55%;max-width:75%;min-width:40%;border:1px solid #ccc;border-radius:8px;background:#fff;overflow:hidden;font-size:.8rem}.dialog-overlay.open .dialog-box{transform:scale(1)}.dialog-box .content{flex:1 1 auto;font-size:1rem;overflow-y:auto;padding:.5em 1em;white-space:pre-wrap}.dialog-copy{float:right}.dropdown{position:relative;display:inline-block}.dropdown-menu{display:none;position:absolute;top:100%;left:0;background:#fff;border:1px solid var(--border-colour);border-radius:6px;min-width:150px;width:max-content;max-width:50vw;list-style:none;padding:6px 0;margin:4px 0 0;box-shadow:0 2px 6px #00000026}.dropdown-menu.show{display:block}.dropdown-menu li a{font-size:1rem;display:block;padding:8px 12px;color:var(--app-colour);text-decoration:none}.dropdown-menu li a:hover{background:#eee}
