@font-face{font-family:WServerRemote;src:url("/waversa_p2p/v2/nvr-assets/fonts/wserver-sans-kr.woff2") format("woff2");font-weight:100 900;font-display:swap}
:root{color-scheme:dark;--bg:#11171d;--panel:#1b242e;--field:#111922;--line:#34404d;--text:#e5ebf0;--muted:#a8b3bf;--accent:#549bd1;--error:#ffb6b6;font-family:WServerRemote,Arial,"Noto Sans KR",sans-serif;font-size:15px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}header{height:72px;border-bottom:1px solid var(--line);padding:0 32px;display:flex;align-items:center;justify-content:space-between}.brand{color:var(--text);font-size:25px;font-weight:700;text-decoration:none}.brand span{font-size:11px;letter-spacing:.16em;color:var(--muted);margin-left:8px}.pilot,.path{font-size:12px;background:#243341;border:1px solid #415369;border-radius:4px;padding:6px 9px;white-space:nowrap}main{max-width:1440px;margin:28px auto;padding:0 28px;display:grid;grid-template-columns:minmax(300px,360px) minmax(0,1fr);gap:22px}.card{background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:24px;min-width:0}h1{font-size:26px;margin:5px 0 14px}h2{font-size:20px;margin:0}.eyebrow{font-size:11px;letter-spacing:.12em;color:var(--accent);margin:0 0 8px}.muted,.field-note,footer{color:var(--muted);line-height:1.65}.muted{font-size:13px}.field-note{font-size:12px;margin:8px 0 20px}label{display:block;font-size:13px;margin:18px 0 8px}input,select,textarea{width:100%;min-width:0;font:inherit;color:var(--text);background:var(--field);border:1px solid #455361;border-radius:4px;padding:10px 11px;outline-offset:3px}textarea{font:12px/1.6 monospace;resize:vertical;min-height:104px;max-height:260px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);border-color:var(--accent)}button{font:inherit;font-size:13px;background:#28618f;color:#fff;border:1px solid #477da7;border-radius:4px;padding:10px 14px;cursor:pointer;white-space:nowrap}button:hover{background:#3477ab}button.secondary{background:#28333f;border-color:#4b5967}button:focus-visible{outline:2px solid #a8d9ff;outline-offset:3px}button:disabled,input:disabled,select:disabled{opacity:.5;cursor:default}.actions,.input-row{display:flex;gap:8px;flex-wrap:wrap}.input-row input{flex:1 1 130px}.input-row button{flex:1 0 auto}.viewer-heading{display:flex;gap:12px;align-items:center;justify-content:space-between;margin-bottom:18px}.viewer-tools{display:flex;gap:9px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.viewer-tools label{margin:0}.viewer-tools select{width:auto;flex:1;max-width:260px;min-width:100px}.video-frame{position:relative;background:#080c10;aspect-ratio:16/9;border:1px solid var(--line);border-radius:4px;overflow:hidden}.video-frame video{width:100%;height:100%;object-fit:contain}.video-frame>span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:13px;pointer-events:none;padding:15px;text-align:center}.video-frame>span[hidden]{display:none}.status{font-size:13px;padding-top:12px;border-top:1px solid var(--line);overflow-wrap:anywhere}.notice,.error{font-size:13px;line-height:1.6;padding:12px;border-radius:4px;overflow-wrap:anywhere}.notice{background:#342c1e;color:#e9ce96;border:1px solid #605034}.error{background:#38232a;color:var(--error);border:1px solid #70444b}.diagnostics{grid-column:1/-1}.diagnostics pre{max-height:270px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--field);border:1px solid var(--line);padding:15px;border-radius:4px;font:12px/1.55 monospace;margin:0}footer{max-width:1440px;margin:0 auto;padding:0 28px 24px;font-size:12px}[hidden]{display:none!important}@media(max-width:850px){main{grid-template-columns:1fr}.connection{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.connection>div{grid-column:1/-1}#devices-form{align-self:start}#connect-form label:first-child{margin-top:18px}.diagnostics{grid-column:auto}}@media(max-width:540px){header{padding:0 16px;height:64px}main{margin:16px auto;padding:0 12px;gap:14px}.card{padding:18px}.connection{display:block}.viewer-heading{align-items:flex-start;flex-wrap:wrap}.viewer-heading .actions{width:100%}.viewer-tools{gap:7px}.viewer-tools button{padding:10px 12px}.path{font-size:11px}footer{padding:0 16px 20px}.brand{font-size:23px}}
.portal-main{display:block}.portal-main>.card{margin-bottom:20px}.login-panel{max-width:440px;margin:50px auto!important}.login-panel .actions{margin-top:22px}.device-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(265px,1fr));gap:16px}.device-card{border:1px solid var(--line);border-radius:5px;padding:18px;background:var(--field)}.device-card h3{margin:18px 0 6px}.device-uid{font:11px/1.6 monospace;color:var(--muted);overflow-wrap:anywhere}.device-frame{display:block;border:0;width:100%;height:max(680px,calc(100vh - 200px));background:var(--bg)}.service-panel{padding:16px}.service-panel .viewer-heading{margin-bottom:8px}#device-tabs{margin-top:12px}dialog{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:7px;padding:24px;width:min(560px,calc(100vw - 28px));max-height:90vh;overflow:auto}dialog::backdrop{background:#000a}dialog .actions{margin-top:18px}dialog input[readonly]{font-family:monospace;font-size:12px}#operator{font-size:13px;align-self:center}.member-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid var(--line)}@media(max-width:540px){.device-grid{grid-template-columns:1fr}.service-panel{padding:10px}.device-frame{height:80vh;min-height:650px}dialog{padding:18px}.portal-main>.card{margin-bottom:14px}}

/* Resolve the link mode before painting portal controls. */
.portal-pending{visibility:hidden}
.guest-mode{height:100vh;height:100dvh;overflow:hidden}
.guest-mode>header,.guest-mode>footer,.guest-mode #service-panel>.viewer-heading,
.guest-mode #device-tabs,.guest-mode #policy,.guest-mode #status,.guest-mode #notice{display:none!important}
.guest-mode .portal-main{max-width:none;margin:0;padding:0}
.guest-mode #service-panel{position:fixed;inset:0;margin:0;padding:0;border:0;border-radius:0}
.guest-mode #frames,.guest-mode .device-frame{width:100%;height:100%;min-height:0}
.guest-mode #guest-panel{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;margin:0;padding:24px;border:0;border-radius:0;background:var(--bg);text-align:center}
.guest-mode #error{position:fixed;z-index:10;left:16px;right:16px;bottom:16px;width:fit-content;max-width:calc(100% - 32px);margin:0 auto}
