:root{--ink:#203b32;--text:#253d34;--muted:#65736b;--green:#2f7759;--mint:#c8ecd6;--paper:#f7f9f6;--line:#dfe6de;--white:#fff;--live:#3c8a62;--live-ring:#dfeee3;--warn:#b7791f;--error:#b3261e;--focus:#2e8666;--glass:#ffffffeb;--outline:#bacbbc;--hover:#edf3ed;--selected:#eaf2e5;--field:#dce4d8;--well:#13211b;--shadow:0 20px 70px -30px #203b322b;--shadow-float:0 16px 38px -18px #46674a56;--backdrop:#142c2280;color:var(--text);font-synthesis:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body{background:var(--well);height:100%;margin:0;overflow:hidden}#stage{cursor:grab;touch-action:none;position:fixed;inset:0}#stage:active{cursor:grabbing}#stage canvas{display:block}.status{background:var(--glass);border:1px solid var(--white);box-shadow:var(--shadow-float);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink);border-radius:13px;align-items:center;gap:10px;max-width:calc(100vw - 372px);padding:10px 14px;font-size:13px;font-weight:550;display:flex;position:fixed;top:16px;left:16px}.status .dot{background:#9aa89e;border-radius:50%;flex:none;width:7px;height:7px}.status[data-kind=live] .dot{background:var(--live);box-shadow:0 0 0 4px var(--live-ring)}.status[data-kind=busy] .dot{background:var(--warn);box-shadow:0 0 0 4px #f6ebd6}.status[data-kind=error] .dot{background:var(--error);box-shadow:0 0 0 4px #f6dcda}.status .info{color:var(--muted);font-size:12px;font-weight:400}.hint{color:var(--white);text-shadow:0 1px 3px #000c;font-size:13px;position:fixed;top:64px;left:16px}.panel{background:var(--glass);border:1px solid var(--white);width:320px;box-shadow:var(--shadow-float);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:18px;padding:20px;position:fixed;top:16px;bottom:16px;right:16px;overflow-y:auto}.panel h2{letter-spacing:.155em;text-transform:uppercase;color:var(--ink);align-items:center;gap:9px;margin:0 0 12px;font-size:10px;font-weight:650;display:flex}.panel h2:before{content:"";background:var(--live);width:7px;height:7px;box-shadow:0 0 0 4px var(--live-ring);border-radius:50%;flex:none}.panel section+section{border-top:1px solid var(--line);margin-top:22px;padding-top:18px}.panel p{color:var(--muted);margin:0 0 10px;font-size:13px;line-height:1.7}button,.file{font:inherit;color:var(--ink);border:1px solid var(--outline);cursor:pointer;text-align:left;background:0 0;border-radius:9px;width:100%;padding:10px 12px;font-size:13px;font-weight:550;transition:background .22s,transform .22s,box-shadow .22s}button:hover,.file:hover{background:var(--hover)}button:focus-visible,input:focus-visible,select:focus-visible,.file:focus-within,a:focus-visible{outline:3px solid var(--focus);outline-offset:3px}button:disabled{opacity:.45;cursor:default}.primary,.card .primary,.pane-head .primary,.sign-in-box .primary{background:var(--ink);color:var(--white);border-color:var(--ink);font-weight:550}.primary:hover,.card .primary:hover,.pane-head .primary:hover,.sign-in-box .primary:hover{background:#355d49;transform:translateY(-2px);box-shadow:0 8px 24px -14px #203b3270}.cams{gap:6px;display:grid}.cams button[aria-pressed=true]{border-color:var(--green);background:var(--selected)}.cams .id{color:var(--muted);float:right;font-size:12px}.file input{display:none}.field{color:var(--text);grid-template-columns:88px 1fr 48px;align-items:center;gap:8px;margin-bottom:8px;font-size:13px;display:grid}.field output{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.field input[type=range]{width:100%;accent-color:var(--green)}select,input[type=text]{font:inherit;color:var(--text);background:var(--white);border:1px solid var(--field);border-radius:7px;width:100%;padding:7px 9px;font-size:13px}.row{gap:8px;margin-top:10px;display:flex}.row button{text-align:center}#raw{aspect-ratio:16/9;background:var(--well);border-radius:10px;width:100%;margin-bottom:12px;display:block}textarea{width:100%;height:70px;color:var(--muted);background:var(--paper);border:1px solid var(--line);resize:vertical;border-radius:7px;margin-top:8px;padding:8px;font:12px/1.4 ui-monospace,monospace}#enter-vr{text-align:center;background:var(--ink);width:auto;color:var(--white);box-shadow:var(--shadow-float);border:none;border-radius:9px;padding:15px 28px;font-size:14px;font-weight:550;position:fixed;bottom:20px;left:50%;transform:translate(calc(-50% - 170px))}#enter-vr:hover{background:#355d49}#enter-vr:disabled{background:var(--glass);color:var(--muted)}.scan{background:var(--backdrop);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:5;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.scan[hidden]{display:none}.scan-box{background:var(--paper);width:min(1100px,100%);max-height:100%;color:var(--ink);border:1px solid #e0e7da;border-radius:21px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 30px 100px #14261d55}.scan-head{border-bottom:1px solid var(--line);background:var(--white);align-items:center;gap:12px;padding:18px 22px;display:flex}.scan-head>div{flex:1}.scan-head h2{letter-spacing:-.035em;margin:0;font-size:21px;font-weight:550}.scan-head p{color:var(--muted);margin:2px 0 0;font-size:13px}.scan-head button{width:auto}.scan-filter{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:flex}.scan-filter input{accent-color:var(--green)}.scan-box{height:min(820px,100%)}.browse-body{flex:1;grid-template-columns:300px 1fr;min-height:0;display:grid}.browse-sites{border-right:1px solid var(--line);flex-direction:column;gap:10px;min-height:0;padding:14px;display:flex}.station-list{align-content:start;gap:4px;display:grid;overflow-y:auto}.station{border-color:#0000;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.station:hover{background:#e2eade}.station[aria-pressed=true]{background:var(--white);border-color:#dee7da;box-shadow:0 6px 18px -14px #294c3750}.station-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.browse-cams{min-height:0;padding:18px 22px;overflow-y:auto}.browse-cams>.streams{margin-top:8px}.pane-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.pane-head h3{letter-spacing:-.035em;margin:0;font-size:21px;font-weight:550}.pane-head button{width:auto}.scan-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;display:grid}@media (width<=760px){.browse-body{grid-template-rows:40% 60%;grid-template-columns:1fr}.browse-sites{border-right:none;border-bottom:1px solid var(--line)}}.card{border:1px solid var(--line);background:#fcfdfb;border-radius:18px;flex-direction:column;transition:transform .25s,box-shadow .25s;display:flex;overflow:hidden}.card:hover{box-shadow:var(--shadow);transform:translateY(-5px)}.card.added{border-color:var(--green)}.card img,.card .noimg{aspect-ratio:4/3;object-fit:cover;background:var(--well);width:100%;display:block}.card .noimg{color:#c9d6cc;place-items:center;font-size:13px;display:grid}.card-body{gap:8px;padding:12px 14px 14px;font-size:13px;display:grid}.card-title{color:var(--ink);justify-content:space-between;align-items:baseline;font-size:14px;font-weight:600;display:flex}.tag{color:var(--muted);font-size:11px;font-weight:600}.tag.fish{color:var(--green)}.streams{color:var(--muted);gap:2px;margin:0;padding:0;list-style:none;display:grid}.card label{color:var(--muted);gap:3px;font-size:12px;display:grid}.card .actions{gap:8px;display:flex}.card .actions button{text-align:center;padding:8px}#holder{opacity:.01;pointer-events:none;z-index:-1;width:64px;height:36px;position:fixed;bottom:0;right:0;overflow:hidden}#holder video,#holder canvas{width:64px;height:36px}@media (width<=760px){.panel{width:auto;max-height:45vh;inset:auto 12px 12px}.status{max-width:calc(100vw - 32px)}.hint{display:none}#enter-vr{top:70px;bottom:auto;left:16px;transform:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.brand{border-bottom:1px solid var(--line);color:var(--ink);align-items:center;gap:12px;margin-bottom:20px;padding-bottom:16px;display:flex}.brand-mark{flex:none;width:40px;height:33px}.brand-full{letter-spacing:.16em;border-left:1px solid var(--outline);color:var(--ink);padding-left:12px;font-size:7.3px;font-weight:650;line-height:1.5}.brand-product{color:var(--muted);text-align:right;margin-left:auto;font-size:11px;line-height:1.3}.serif-accent{letter-spacing:-.03em;color:#478565;font-family:Georgia,Times New Roman,serif;font-style:italic;font-weight:400}@media (width<=760px){.brand{margin-bottom:12px;padding-bottom:10px}}.account{color:var(--muted);align-items:center;gap:10px;margin:-8px 0 18px;font-size:12px;display:flex}.account[hidden],.account a[hidden]{display:none}.account strong{color:var(--ink);font-weight:600}.account a{color:var(--green);text-underline-offset:3px;margin-left:auto;text-decoration:underline}.account button{width:auto;padding:6px 10px;font-size:12px}.account a[hidden]+button,.account span+button{margin-left:auto}.account a:not([hidden])+button{margin-left:0}.sign-in{z-index:10}.sign-in-box{background:var(--paper);width:min(430px,100%);color:var(--ink);border:1px solid #e0e7da;border-radius:21px;gap:10px;padding:35px;display:grid;box-shadow:0 30px 100px #14261d55}.sign-in-brand{align-items:center;gap:12px;margin-bottom:8px;display:flex}.sign-in-box h2{letter-spacing:-.053em;margin:6px 0 0;font-size:30px;font-weight:550;line-height:1.1}.sign-in-box p{color:var(--muted);margin:0 0 6px;font-size:13px;line-height:1.8}.sign-in-box label{letter-spacing:.155em;text-transform:uppercase;color:var(--ink);margin-top:6px;font-size:10px;font-weight:650}.sign-in-box .sign-in-org{letter-spacing:.155em;text-transform:uppercase;color:var(--ink);align-items:center;gap:9px;margin:0;font-size:10px;font-weight:650;line-height:1.4;display:flex}.sign-in-box .sign-in-org:before{content:"";background:var(--live);width:7px;height:7px;box-shadow:0 0 0 4px var(--live-ring);border-radius:50%;flex:none}.sign-in-box [hidden]{display:none}.sign-in-box select,.sign-in-box input{font:inherit;color:var(--text);background:var(--white);border:1px solid var(--field);border-radius:9px;width:100%;padding:11px 12px;font-size:15px}.sign-in-box .primary{text-align:center;margin-top:10px;padding:15px}.sign-in-error{min-height:1.5em;color:var(--error)!important}
