.layout{flex-direction:column;height:100vh}.layout,.main-content{display:flex;flex:1 1;overflow:hidden}.main-content{flex-direction:row}.main-content .sidebar{align-items:flex-start;border-right:var(--border);display:flex;overflow-x:hidden;overflow-y:auto;width:300px}@media(max-width:var(--mobile-breakpoint )){.main-content .sidebar{min-width:40px;width:40px}}.main-content .content-area{overflow-x:hidden;overflow-y:auto;width:100%}.error,.main-content .content-area{display:flex;justify-content:center}.error{flex:1 1;padding:var(--padding-main)}.system{overflow:auto;width:100%}.system,.system-list{display:flex;flex:1 1;flex-direction:column}.system-list{position:relative;transition:width .3s ease;width:300px}@media(max-width:500px){.system-list .collapse-toggle{align-items:center;display:flex;justify-content:center}.system-list.collapsed{width:40px}.system-list.collapsed .system-card{padding:10px 5px}.system-list.collapsed .system-card-content,.system-list.collapsed .system-card-header h3{display:none}.system-list.collapsed .system-card.offline,.system-list.collapsed .system-card.online{border-left-width:3px}}.system-list-empty{color:#666;padding:2rem;text-align:center}.system-list-error{color:#dc3545}.system-list .collapse-toggle{background:var(--colour-primary);border:var(--border);border-left:none;cursor:pointer;display:none;height:40px;position:absolute;right:-24px;top:20px;width:24px;z-index:2}.system-card{background-color:var(--colour-primary);cursor:pointer;display:flex;flex-direction:column;gap:var(--gap-main);padding:var(--padding-main)}.system-card:hover{background-color:var(--colour-secondary)}.system-card.online{border-left:6px solid var(--green)}.system-card.offline{border-left:6px solid var(--red)}.system-card.selected{background-color:var(--colour-secondary)}.system-card-header{align-items:center;display:flex;justify-content:space-between}.system-card-header h3{font-size:1.1rem;margin:0}.system-card .column{display:flex;flex-direction:column;justify-content:flex-end;padding:var(--padding-secondary)}.system-card-badge{border-radius:4px;font-size:.8rem;font-weight:500;padding:.25rem .5rem}.system-card-content{display:flex;flex-direction:row}.system-card .institution{background-color:var(--colour-primary);border:var(--border);border-radius:var(--border-radius);padding:var(--padding-secondary)}.system-card .details{display:flex;flex:1 1;flex-direction:column;gap:var(--gap-main);justify-content:space-between}.system-card .details .item{display:flex;flex-direction:column;justify-content:space-between}.system-card .details .item .label{color:#666;font-size:.9rem}.system-header{background-color:var(--colour-primary);border-bottom:var(--border);padding:var(--padding-main);position:sticky;top:0;z-index:99}.system .info-card{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:20px}.system .info-card h2{color:#333;font-size:1.2rem;margin:0 0 20px}.system .info-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.system .info-item label{color:#666;display:block;font-size:.8rem;margin-bottom:4px}.system .info-item span{color:#333;font-size:1rem}.system .info-item .status{border-radius:4px;font-weight:500;padding:4px 8px}.system .info-item .status.online{background:#e6f4ea;color:#1e7e34}.system .info-item .status.offline{background:#feeced;color:#dc3545}.system .devices-list{grid-gap:16px;display:grid;gap:16px}.system .devices-list .device-item{border:1px solid #eee;border-radius:6px;padding:16px}.system .devices-list .device-item h3{color:#333;font-size:1rem;margin:0 0 16px}.system .loading{color:#666;font-size:1.2rem;padding:40px;text-align:center}.system .error{color:#dc3545;padding:40px;text-align:center}.system .not-found{color:#666;padding:40px;text-align:center}.system .debug{display:flex;flex-direction:column;gap:var(--gap-main);padding:var(--padding-main)}.modal{background-color:rgba(0,0,0,.431);bottom:0;left:0;padding:50px;position:absolute;right:0;top:0;transition:opacity .1s ease-in-out,-webkit-backdrop-filter .1s ease-in-out;transition:backdrop-filter .1s ease-in-out,opacity .1s ease-in-out;transition:backdrop-filter .1s ease-in-out,opacity .1s ease-in-out,-webkit-backdrop-filter .1s ease-in-out;z-index:999}.modal,.modal-bracket{align-items:flex-start;display:flex;justify-content:center}.modal-bracket{height:100%;overflow:hidden;width:100%}.modal-bracket,.modal-padding{box-shadow:0 0 10px rgba(0,0,0,.016)}.modal-padding{display:flex;flex-direction:column;gap:var(--gap-main);padding:var(--padding-main);position:relative}.modal-padding .grid{grid-gap:var(--gap-main);display:grid;gap:var(--gap-main);grid-template-columns:repeat(auto-fill,minmax(150px,2fr))}.modal-content{background-color:var(--colour-primary);border-radius:7px;display:flex;flex:1 1;flex-direction:column;max-height:100%;max-width:800px;min-height:min(400px,100%);overflow:hidden;position:relative;z-index:11}.modal-content-header{align-items:center;background-color:var(--colour-secondary);border-bottom:var(--border);display:grid;grid-template-columns:1fr auto 1fr;justify-items:end;padding:10px;position:sticky;top:0}.modal-content-body{display:flex;flex:1 1;flex-direction:column;overflow:auto}.modal-content-close{cursor:pointer;font-size:16px}.status{background-color:var(--colour-secondary);display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--gap-main);justify-content:flex-start;padding:var(--padding-main)}.status-buttons{grid-gap:var(--gap-main);display:grid;grid-template-columns:1fr 1fr min-content}.status-buttons,.status-ip{align-items:center;flex-direction:row;gap:var(--gap-main)}.status-ip{border:var(--border);border-radius:5px;height:100%;justify-content:space-between;padding:10px 15px}.status-box,.status-ip{background-color:var(--colour-primary);display:flex}.status-box{align-items:center;border-radius:var(--border-radius);cursor:pointer;height:40px;justify-content:center;min-width:140px;overflow:hidden;position:relative;transition:filter .2s}.status-box:hover{filter:brightness(.8)}.status-box-connected{background-color:var(--red);height:100%;transition:background-color .2s;width:6px}.status-box-moon{height:20px;transition:opacity .1s}.status-box-content{align-items:center;display:flex;flex:1 1;flex-direction:row;gap:10px;justify-content:space-between;padding:0 10px;position:relative}.status-box-content-title{font-weight:700;line-height:100%}.status-box-content-children{color:#fff;display:flex;flex-direction:column;flex-grow:1;flex-wrap:wrap;font-size:16px;gap:5px;justify-content:flex-end;overflow:hidden}.status-box-content-children-container{align-items:flex-start;display:flex;gap:10px;justify-content:space-between}.status-box-content-arrow{align-items:center;aspect-ratio:1/1;display:flex;justify-content:center;position:absolute;right:10px;top:10px;width:30px}.status-box-content-arrow-image{filter:invert(1) brightness(1);object-fit:contain;width:50%}.status-box-devices{align-items:center;background-color:var(--green);border-radius:5px;color:var(--colour-primary);display:flex;flex-direction:column;font-size:16px;font-weight:700;gap:5px;justify-content:center;line-height:80%;padding:5px}.status .grid{display:flex;flex-wrap:nowrap;gap:var(--gap-main);grid-auto-flow:column;grid-template-columns:repeat(auto-fill,min-width)}.status-header{align-items:center;border-bottom:var(--border);display:flex;justify-content:space-between;padding:var(--padding-height) 0}.grid{grid-gap:var(--gap-main);display:grid;grid-auto-flow:row;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.grid,.interface{gap:var(--gap-main)}.interface{display:flex;flex-direction:column;padding:var(--padding-main)}.interface-logo{filter:invert(var(--invert));height:25px}.map-card{border-radius:var(--border-radius);box-shadow:var(--box-shadow);overflow:hidden;position:relative}.map-card-title{align-items:center;display:flex;font-weight:700;justify-content:space-between;padding:var(--padding-secondary);position:relative;text-shadow:var(--box-shadow);z-index:1}.map-card img{bottom:0;flex:1 1;height:100%;left:0;object-fit:cover;overflow:hidden;position:absolute;right:0;top:0;width:100%;z-index:0}.gridComponent{background-color:var(--colour-primary);border:1.6px solid var(--colour-border);border-radius:var(--border-radius);box-sizing:border-box;display:flex;flex-direction:column;font-family:inherit;gap:5px;padding:var(--padding-secondary);position:relative;transition:box-shadow .1s ease,transform .1s ease,filter .1s ease}.gridComponent-value{color:var(--colour-text-secondary);font-family:Courier New,Courier,monospace;font-weight:600}.logs-list-container{background-color:var(--colour-primary);border-radius:var(--border-radius);margin-bottom:20px;overflow:hidden;width:100%}.logs-list-container h2{border-bottom:var(--border);color:var(--colour-text-primary);font-family:var(--font-primary);margin:0;padding:var(--padding-main)}.logs-list-container .logs-list{max-height:500px;overflow-y:auto;padding:var(--padding-height) 0}.logs-list-container .logs-list.empty,.logs-list-container .logs-list.error,.logs-list-container .logs-list.loading{color:var(--colour-text-secondary);font-family:var(--font-secondary);padding:var(--padding-main);text-align:center}.logs-list-container .logs-list .log-item{border-bottom:1px solid var(--colour-divider);padding:calc(var(--padding-height)*.8) var(--padding-width);transition:background-color var(--transition)}.logs-list-container .logs-list .log-item:last-child{border-bottom:none}.logs-list-container .logs-list .log-item:hover{background-color:var(--colour-secondary)}.logs-list-container .logs-list .log-item.error .log-status-text{color:var(--red)}.logs-list-container .logs-list .log-item.warning .log-status-text{color:var(--orange)}.logs-list-container .logs-list .log-item.info .log-status-text{color:var(--blue)}.logs-list-container .logs-list .log-item.success .log-status-text{color:var(--green)}.logs-list-container .logs-list .log-item .log-header{align-items:center;display:flex;margin-bottom:8px}.logs-list-container .logs-list .log-item .log-header .log-status{align-items:center;display:flex;margin-right:10px}.logs-list-container .logs-list .log-item .log-header .log-status .log-status-indicator{border-radius:50%;height:8px;margin-right:6px;width:8px}.logs-list-container .logs-list .log-item .log-header .log-status .log-status-text{font-size:.8rem;font-weight:600;text-transform:uppercase}.logs-list-container .logs-list .log-item .log-header .log-type{color:var(--colour-text-primary);font-weight:600;margin-right:auto}.logs-list-container .logs-list .log-item .log-header .log-time{color:var(--colour-text-secondary);font-size:.85rem}.logs-list-container .logs-list .log-item .log-description{color:var(--colour-text-primary);line-height:1.4;margin-bottom:8px}.logs-list-container .logs-list .log-item .log-metadata{background-color:var(--colour-secondary);border-radius:var(--border-radius);font-size:.85rem;margin-top:8px;padding:8px}.logs-list-container .logs-list .log-item .log-metadata .metadata-fields{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.logs-list-container .logs-list .log-item .log-metadata .metadata-item{align-items:center;display:inline-flex}.logs-list-container .logs-list .log-item .log-metadata .metadata-item .metadata-key{color:var(--colour-text-secondary);font-weight:600;margin-right:4px}.logs-list-container .logs-list .log-item .log-metadata .metadata-item .metadata-value{color:var(--colour-text-primary)}.logs-list-container .logs-list .log-item .log-metadata .changes-container .changes-header{color:var(--colour-text-secondary);font-weight:600;margin-bottom:4px}.logs-list-container .logs-list .log-item .log-metadata .changes-container .changes-list{display:flex;flex-direction:column;gap:4px}.logs-list-container .logs-list .log-item .log-metadata .changes-container .change-item{align-items:flex-start;display:flex}.logs-list-container .logs-list .log-item .log-metadata .changes-container .change-item .change-key{color:var(--blue);flex-shrink:0;font-family:var(--font-secondary);font-weight:500;margin-right:8px;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logs-list-container .logs-list .log-item .log-metadata .changes-container .change-item .change-value{color:var(--colour-text-primary);font-family:var(--font-secondary);word-break:break-word}@media(max-width:var(--mobile-breakpoint )){.logs-list-container .logs-list .log-item .log-header{flex-wrap:wrap}.logs-list-container .logs-list .log-item .log-header .log-status{margin-right:8px}.logs-list-container .logs-list .log-item .log-header .log-type{margin-right:0;margin-top:4px;width:100%}.logs-list-container .logs-list .log-item .log-header .log-time{margin-left:auto}.logs-list-container .logs-list .log-item .log-metadata .metadata-fields{flex-direction:column;gap:4px}.logs-list-container .logs-list .log-item .log-metadata .metadata-item{display:flex}.logs-list-container .logs-list .log-item .log-metadata .change-item{flex-direction:column}.logs-list-container .logs-list .log-item .log-metadata .change-item .change-key{margin-bottom:2px;max-width:100%}}.auth-container{align-items:center;background-color:var(--colour-primary);display:flex;justify-content:center}.auth-container .auth-form{background:var(--colour-secondary);display:flex;flex-direction:column;gap:var(--gap-main);padding:var(--padding-main);width:400px}.auth-container .auth-form .logo{display:block;height:40px;margin:0 auto 20px}.auth-container .auth-form h2{margin-bottom:30px;text-align:center}.auth-container .auth-form .error{background:#ffebee;border-radius:var(--border-radius);color:var(--red);padding:var(--padding-main)}.auth-container .auth-form .success{background:#e8f5e9;border-radius:4px;color:#2e7d32;margin-bottom:20px;padding:10px}.auth-container .auth-form .form-group{margin-bottom:20px}.auth-container .auth-form .form-group label{display:block;font-weight:500;margin-bottom:8px}.auth-container .auth-form .form-group input{border:1px solid #ddd;border-radius:4px;font-size:16px;padding:10px;width:100%}.auth-container .auth-form .form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.auth-container .auth-form .auth-button{cursor:pointer;width:100%}.auth-container .auth-form .mode-toggle{margin-top:20px;text-align:center}.auth-container .auth-form .mode-toggle p{color:#666}.auth-container .auth-form .mode-toggle .text-button{background:none;border:none;color:#2196f3;cursor:pointer;font-size:inherit;font-weight:500;padding:0}.auth-container .auth-form .mode-toggle .text-button:hover:not(:disabled){text-decoration:underline}.auth-container .auth-form .mode-toggle .text-button:disabled{color:#90caf9;cursor:not-allowed}.auth-container .option-links{display:none;gap:var(--gap-main);justify-content:space-between}.header{background:var(--colour-secondary);border-bottom:var(--border);box-sizing:border-box;color:var(--colour-text-secondary);height:60px;justify-content:space-between;padding:var(--padding-main);position:relative;text-align:center}.header,.header .container{align-items:center;display:flex}.header .container{bottom:0;justify-content:center;left:0;position:absolute;right:0;top:0}.header .logo{filter:invert(var(--invert));height:40px}.header .user-controls{align-items:center;display:flex;gap:var(--gap-main);justify-content:center}:root{--colour-highlight:#00ada5;--colour-primary:#fff;--colour-element:#222529;--colour-secondary:#f7f7f7;--colour-transparent:rgba(0,0,0,.374);--colour-border:#cfcfcf;--colour-divider:#f2f2f2;--colour-nav:#364346;--background-gradient:linear-gradient(135deg,#00343f,#013f4e 50%,#00262e);--colour-text-primary:#1d1d1f;--colour-text-secondary:#8e8e92;--colour-text-inverse:#fff;--invert:0;--transition:0.2s ease;--blue:#007aff;--green:#3aba35;--indigo:#5856d6;--orange:#ff9500;--pink:#ff2d55;--purple:#af52de;--red:#ed3127;--teal:#5ac8fa;--yellow:#fc0;--colour-rp3:#3ac4e7;--gray:#8e8e93;--gray2:#636366;--gray3:#48484a;--gray4:#3a3a3c;--gray5:#2c2c2e;--gray6:#1c1c1e;--primary-background:#fff;--primary-text:#090909;--secondary-text:#6c6c70;--inverse-text:#fff;--font-primary:"Proxima Nova",sans-serif;--font-secondary:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI Variable Display","Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";--titlebar-height:50px;--padding-height:15px;--padding-width:17px;--padding-main:var(--padding-height) var(--padding-width);--padding-secondary:5px 8px;--gap-main:10px;--box-shadow:0px 3px 10px rgba(0,0,0,.141);--title-colour:#ffffffaf;--border:2px solid var(--colour-divider);--border-bold:3px solid var(--colour-divider);--border-radius:5px;--mobile-breakpoint:800px}@media(prefers-color-scheme:dark){:root{--colour-highlight:#00ada5;--colour-element:#e5e5ea;--colour-primary:#2c2c2e;--colour-secondary:#1c1c1e;--colour-border:#48484a;--colour-divider:#1c1c1c;--colour-nav:#e5e5ea;--background-gradient:linear-gradient(135deg,#00262e,#01303b 50%,#001c22);--colour-text-primary:#fff;--colour-text-secondary:#8e8e93;--colour-text-inverse:#1d1d1f;--invert:1;--blue:#0a84ff;--green:#32b82c;--indigo:#5e5ce6;--orange:#ff9f0a;--pink:#ff375f;--purple:#bf5af2;--red:#ff453a;--teal:#64d2ff;--yellow:#ffd60a;--gray:#98989d;--gray2:#aeaeb2;--gray3:#c7c7cc;--gray4:#d1d1d6;--gray5:#e5e5ea;--gray6:#f2f2f7;--primary-background:#1c1c1e;--primary-text:#e5e5ea;--secondary-text:#aeaeb2}}body{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI Variable Display,Segoe UI,Helvetica,Apple Color Emoji,Arial,sans-serif,Segoe UI Emoji,Segoe UI Symbol;font-family:var(--font-secondary);font-size:15px;font-weight:400;height:100%;margin:0;overflow-x:hidden;padding:0;width:100%}body,button{background-color:#fff;background-color:var(--colour-primary);color:#1d1d1f;color:var(--colour-text-primary);position:relative}button{align-items:center;border:1.6px solid #cfcfcf;border:1.6px solid var(--colour-border);border-radius:4px;box-sizing:border-box;display:flex;font-family:inherit;font-size:14px;font-weight:600;justify-content:center;min-height:35px;min-width:70px;padding:5px 8px;padding:var(--padding-secondary);transition:box-shadow .1s ease,transform .1s ease,filter .1s ease}button:hover{cursor:pointer;filter:brightness(.96)}button:active{transform:translateY(.5px)}li{list-style:none}a{border-radius:6px;color:inherit;font:ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI Variable Display,Segoe UI,Helvetica,Apple Color Emoji,Arial,sans-serif,Segoe UI Emoji,Segoe UI Symbol;font:var(--font-secondary);padding:5px;text-decoration:none;transition:background-color .2s ease}a:hover{background-color:#0000001a}textarea{border:1px solid gray;border-radius:8px;box-shadow:0 2px 4px #0003;font-size:16px;padding:10px;resize:vertical}label{display:flex;flex:1 1;flex-direction:row;justify-content:space-between}input,option,select{background-color:#fff;background-color:var(--colour-primary);border:1px solid #cfcfcf;border:1px solid var(--colour-border);border-radius:2px;box-sizing:border-box;color:#1d1d1f;color:var(--colour-text-primary);font-family:inherit;font-size:16px;padding:8px}input[type=color]{background-color:#0000;border:1px solid #fff;border:1px solid var(--colour-primary);border-radius:50%;cursor:pointer;margin:0;max-height:30px;max-width:30px;min-height:30px;min-width:30px;padding:0}input[type=prefChooser]{grid-gap:5px;background-color:#fff;background-color:var(--colour-primary);border-radius:3px;box-shadow:0 0 20px #18181833;display:grid;font-family:inherit;gap:5px;padding:15px}input[type=checkbox]{aspect-ratio:1/1;border:none;border-radius:50%;cursor:pointer}input[type=color]::-webkit-color-swatch-wrapper{padding:0}input[type=color]::-webkit-color-swatch{border:none;border-radius:50%}h1,h2,h3,p{margin:0}h1{font-family:Proxima Nova,sans-serif;font-family:var(--font-primary);font-size:27px;font-weight:900}h2{font-size:20px;font-weight:800}h3{font-size:16px;font-weight:600}pre{word-wrap:break-word;background:var(--secondary-background);border-left:5px solid #ff9500;border-left:5px solid var(--orange);border-radius:3px;display:block;font-size:15px;line-height:1.6;margin:0;max-width:100%;overflow:auto;padding:1em 1.5em;page-break-inside:avoid}code,pre{font-family:monospace}code{font-weight:700}@media(prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin 20s linear infinite}}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}
/*# sourceMappingURL=main.ae8fd2f4.css.map*/