body{background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;padding:20px}.container{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin:0 auto;max-width:800px;padding:20px}.status{border-radius:4px;margin:10px 0;padding:10px}.status.connected{background-color:#d4edda;border:1px solid #c3e6cb;color:#155724}.status.disconnected{background-color:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.button-group{margin:20px 0}button:where(:not(.op-app *)){background-color:#007bff;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;margin:5px;padding:10px 15px}button:where(:not(.op-app *)):hover{background-color:#0056b3}button:where(:not(.op-app *)):disabled{background-color:#6c757d;cursor:not-allowed}.message-input{box-sizing:border-box;margin:10px 0;width:100%}.message-input,.messages{border:1px solid #ddd;border-radius:4px;padding:10px}.messages{background-color:#f8f9fa;height:300px;overflow-y:auto}.message{background-color:#fff;border-left:3px solid #007bff;border-radius:3px;margin:5px 0;padding:5px}*{box-sizing:border-box;margin:0;padding:0}body{background:#f5f7fa;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}.dashboard-header{background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 2px 10px #0000001a;color:#fff;padding:20px 0}.header-content{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1200px;padding:0 20px}.header-content h1{font-size:1.8rem;font-weight:300}.user-info{align-items:center;display:flex;gap:15px}.logout-btn{background:#fff3;border:1px solid #ffffff4d;border-radius:5px;color:#fff;cursor:pointer;padding:8px 15px;transition:background .3s}.logout-btn:hover{background:#ffffff4d}.dashboard-nav{background:#fff;box-shadow:0 2px 5px #0000001a}.dashboard-nav ul{display:flex;list-style:none;margin:0 auto;max-width:1200px;padding:0 20px}.dashboard-nav li{margin-right:30px}.dashboard-nav a{border-bottom:3px solid #0000;color:#666;display:block;font-weight:500;padding:15px 0;text-decoration:none;transition:color .3s}.dashboard-nav a:hover{color:#3498db}.dashboard-nav .active a{border-bottom-color:#3498db;color:#3498db}.dashboard-main{margin:0 auto;max-width:1200px;padding:30px 20px}.welcome-section{margin-bottom:40px;text-align:center}.welcome-section h2{color:#2c3e50;font-size:2rem;font-weight:300;margin-bottom:10px}.welcome-section p{color:#666;font-size:1.1rem}.sections-grid{grid-gap:25px;display:grid;gap:25px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-bottom:50px}.section-card{background:#fff;border-radius:15px;box-shadow:0 5px 15px #00000014;padding:30px;text-align:center;transition:transform .3s,box-shadow .3s}.section-card:hover{box-shadow:0 10px 25px #00000026;transform:translateY(-5px)}.card-icon{font-size:3rem;margin-bottom:20px}.section-card h3{color:#2c3e50;font-size:1.3rem;margin-bottom:15px}.section-card p{color:#666;line-height:1.5;margin-bottom:20px}.card-link{color:#3498db;font-weight:500;text-decoration:none;transition:color .3s}.card-link:hover{color:#2980b9}.robots-section h2{color:#2c3e50;font-size:1.8rem;font-weight:300;margin-bottom:25px}.robots-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.robot-card{background:#fff;border-radius:12px;box-shadow:0 3px 10px #00000014;padding:25px;transition:transform .3s}.robot-card:hover{transform:translateY(-3px)}.robot-card.online{border-left:5px solid #27ae60}.robot-card.offline{border-left:5px solid #e74c3c}.robot-card h3{align-items:center;color:#2c3e50;display:flex;gap:10px;margin-bottom:15px}.robot-card h3 .status-dot{border-radius:50%;display:inline-block;height:10px;width:10px}.robot-card.online .status-dot{background:#27ae60}.robot-card.offline .status-dot{background:#e74c3c}.robot-info{margin-bottom:20px}.robot-info-item{border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:8px 0}.robot-info-item:last-child{border-bottom:none}.label{color:#555;font-weight:500}.control-link{background:linear-gradient(45deg,#3498db,#2980b9);border-radius:6px;color:#fff;display:inline-block;font-weight:500;padding:10px 20px;text-decoration:none;transition:transform .2s}.control-link:hover{transform:translateY(-2px)}@media (max-width:768px){.header-content{flex-direction:column;gap:15px;text-align:center}.dashboard-nav ul{flex-wrap:wrap}.dashboard-nav li{margin-bottom:5px;margin-right:15px}.robots-grid,.sections-grid{grid-template-columns:1fr}}:root{--op-bg:#eef1f5;--op-surface:#fff;--op-surface-2:#f6f8fa;--op-line:#d9dee5;--op-text:#1f2933;--op-muted:#66727f;--op-accent:#2463c9;--op-ok:#1a8a4f;--op-warn:#b86e00;--op-error:#c62828;--op-off:#8a949e;--op-stop:#d32f2f;--op-map:#1e222c;--op-radius:8px;--op-shadow:0 6px 24px #0f172a29}body.op-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Ubuntu,Helvetica Neue,sans-serif;margin:0;padding:0}.op-app,body.op-body{background:#eef1f5;background:var(--op-bg);color:#1f2933;color:var(--op-text);overflow:hidden}.op-app{display:flex;flex-direction:column;font-size:14px;height:100vh;height:100dvh;line-height:1.35;position:relative;text-align:left}:where(.op-app) *,:where(.op-app) :after,:where(.op-app) :before{box-sizing:border-box}.op-app [hidden]{display:none!important}:where(.op-app) button{color:inherit;font:inherit}.op-app :focus-visible{outline:3px solid #5b9cff;outline-offset:2px}.op-app h2{font-size:1.1rem;font-weight:600;margin:0}.op-app h3{font-size:1rem;font-weight:600;margin:0 0 8px}.op-muted{color:#66727f;color:var(--op-muted);font-size:.86em}.op-spacer{flex:1 1}.op-row{align-items:center;display:flex;gap:6px}.op-row.wrap{flex-wrap:wrap}.op-row input[type=text]{flex:1 1;min-width:0}.op-app input[type=text],.op-app select{background:#fff;border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:6px;color:inherit;font:inherit;padding:6px 8px}.op-check{align-items:center;cursor:pointer;display:inline-flex;gap:6px}.op-dot{display:inline-block;font-size:.8em;line-height:1;text-align:center;width:1em}.op-dot.ok{color:#1a8a4f;color:var(--op-ok)}.op-dot.warn{color:#b86e00;color:var(--op-warn)}.op-dot.error{color:#c62828;color:var(--op-error)}.op-dot.off{color:#8a949e;color:var(--op-off)}.op-btn{align-items:center;background:#fff;background:var(--op-surface);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:6px;cursor:pointer;display:inline-flex;gap:6px;justify-content:center;min-height:34px;padding:5px 12px;white-space:nowrap}.op-btn:hover:not(:disabled){background:#f6f8fa;background:var(--op-surface-2)}.op-btn:disabled{cursor:default;opacity:.5}.op-btn.primary{background:#2463c9;background:var(--op-accent);border-color:#2463c9;border-color:var(--op-accent);color:#fff}.op-btn.primary:hover:not(:disabled){background:#1b4fa3}.op-btn.active{background:#fdecea;border-color:#c62828;border-color:var(--op-error);color:#c62828;color:var(--op-error)}.op-btn.big{font-size:1rem;min-height:44px;padding:8px 16px}.op-icon-btn{align-items:center;background:#0000;border:1px solid #0000;border-radius:8px;cursor:pointer;display:inline-flex;flex:0 0 auto;height:38px;justify-content:center;padding:0;width:38px}.op-icon-btn:hover{background:#f6f8fa;background:var(--op-surface-2)}.op-icon-btn.on{background:#e3ecfb;color:#2463c9;color:var(--op-accent)}.op-icon-btn.live{animation:op-pulse 1.2s infinite;background:#c62828;background:var(--op-error);color:#fff}.op-icon-btn.small{height:26px;width:26px}.op-mini{background:#fff;border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:5px;cursor:pointer;height:24px;line-height:1;padding:0;width:24px}@keyframes op-pulse{50%{box-shadow:0 0 0 6px #c6282840}}.op-stop{align-items:center;background:#d32f2f;background:var(--op-stop);border:2px solid #9a1b1b;border-radius:8px;color:#fff!important;cursor:pointer;display:inline-flex;flex:0 0 auto;font-size:15px;font-weight:800;gap:8px;justify-content:center;letter-spacing:.06em;min-height:40px;padding:0 20px}.op-stop:hover{background:#b71c1c}.op-stop:active{transform:scale(.97)}.op-stop.compact{min-height:40px;min-width:44px;padding:0 12px}.op-stop-icon{font-size:.85em}.op-seg{background:#fff;background:var(--op-surface);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:7px;display:inline-flex;flex:0 0 auto;overflow:hidden}.op-seg button{background:#0000;border:none;border-right:1px solid #d9dee5;border-right:1px solid var(--op-line);cursor:pointer;min-height:30px;padding:4px 11px;white-space:nowrap}.op-seg button:last-child{border-right:none}.op-seg button.on{background:#2b3440;color:#fff}.op-chip{align-items:center;background:#fff;background:var(--op-surface);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:15px;cursor:default;display:inline-flex;flex:0 0 auto;gap:6px;min-height:30px;padding:3px 10px;white-space:nowrap}button.op-chip{cursor:pointer}.op-chip.error{background:#fdecea;border-color:#f1b8b4;color:#8e1c1c}.op-chip.warn{background:#fff4e0;border-color:#f0cf94;color:#7a4a00}.op-batt{border:1.5px solid;border-radius:2px;height:11px;position:relative;width:22px}.op-batt:after{content:"";height:4px;right:-4px;top:2px;width:2px}.op-batt i,.op-batt:after{background:currentColor;position:absolute}.op-batt i{bottom:1px;left:1px;max-width:calc(100% - 2px);top:1px}.op-chip.ok .op-batt i{background:#1a8a4f;background:var(--op-ok)}.op-chip-btn{background:#fff;border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:15px;cursor:pointer;min-height:30px;padding:4px 10px}.op-chip-btn.on{background:#2b3440;border-color:#2b3440;color:#fff}.op-chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}.op-pop-wrap{flex:0 0 auto;position:relative}.op-popover{background:#fff;background:var(--op-surface);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:8px;border-radius:var(--op-radius);box-shadow:0 6px 24px #0f172a29;box-shadow:var(--op-shadow);color:#1f2933;color:var(--op-text);font-size:13px;left:0;max-width:min(380px,92vw);min-width:260px;padding:10px 12px;position:absolute;text-align:left;top:calc(100% + 6px);white-space:normal;z-index:60}.op-popover.up{bottom:calc(100% + 6px);top:auto}.op-popover.right{left:auto;right:0}.op-popover p{margin:4px 0}.op-popover .op-btn{margin-top:6px}.op-pop-title{font-weight:600;margin:2px 0 6px}.op-menu-item{background:#0000;border:none;border-radius:6px;cursor:pointer;display:block;min-height:34px;padding:6px 8px;text-align:left;width:100%}.op-menu-item:hover:not(:disabled){background:#f6f8fa;background:var(--op-surface-2)}.op-menu-item.on{background:#e3ecfb;color:#2463c9;color:var(--op-accent);font-weight:600}.op-menu-item.on:before{content:"● "}.op-menu-item.danger{color:#c62828;color:var(--op-error)}.op-menu-item:disabled{opacity:.45}.op-app .op-header{align-items:center;-webkit-backdrop-filter:none;backdrop-filter:none;background:#fff;background:var(--op-surface);border-bottom:1px solid #d9dee5;border-bottom:1px solid var(--op-line);border-radius:0;box-shadow:none;display:flex;flex:0 0 auto;gap:8px;margin:0;min-height:52px;padding:6px 12px;text-align:left;z-index:40}.op-robot{display:flex;flex-direction:column;margin-right:4px;min-width:64px}.op-robot-name{font-size:15px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.op-robot-state{font-size:12px;white-space:nowrap}.op-robot-state.ok{color:#1a8a4f;color:var(--op-ok)}.op-robot-state.warn{color:#b86e00;color:var(--op-warn)}.op-robot-state.error{color:#c62828;color:var(--op-error)}.op-robot-state.off{color:#8a949e;color:var(--op-off)}.op-tabs{background:#f6f8fa;background:var(--op-surface-2);border-radius:8px;display:flex;gap:2px;margin-left:8px;padding:2px}.op-tabs button{align-items:center;background:#0000;border:none;border-radius:6px;cursor:pointer;display:inline-flex;gap:6px;min-height:32px;padding:4px 10px;white-space:nowrap}.op-tabs button.on{background:#fff;background:var(--op-surface);box-shadow:0 1px 3px #0000001f;font-weight:600}.op-controlbar{border-bottom:1px solid #d9dee5;border-bottom:1px solid var(--op-line);display:flex;flex:0 0 auto;gap:10px;min-height:42px;padding:4px 12px;position:relative;z-index:30}.op-controlbar,.op-ctl-toggle{align-items:center;background:#fff;background:var(--op-surface)}.op-ctl-toggle{border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:7px;cursor:pointer;display:inline-flex;font-weight:600;gap:6px;min-height:32px;padding:4px 10px}.op-ctl-toggle.on{background:#2b3440;border-color:#2b3440;color:#fff}.op-sep{background:#d9dee5;background:var(--op-line);height:20px;width:1px}.op-ctl-hint{font-family:ui-monospace,Consolas,monospace;font-size:13px}.op-ctl-hint.off{color:#66727f;color:var(--op-muted)}.op-ctl-speed{align-items:center;display:inline-flex;gap:6px}.op-moving{font-weight:600}.op-flash,.op-moving{color:#1a8a4f;color:var(--op-ok)}.op-flash{background:#e6f4ec;border-radius:10px;padding:2px 8px}.op-ctl-panel{background:#fff;background:var(--op-surface);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:10px;box-shadow:0 6px 24px #0f172a29;box-shadow:var(--op-shadow);left:12px;max-height:calc(100dvh - 140px);overflow:auto;padding:12px;position:absolute;top:calc(100% + 6px);width:360px}.op-ctl-close{position:absolute;right:6px;top:6px}.op-pad{align-items:stretch;display:flex;flex-direction:column;gap:12px}.op-pad-top{display:flex;justify-content:flex-start}.op-pad-main{display:flex;justify-content:center;padding:4px 0}.op-dpad{grid-gap:6px;display:grid;gap:6px;grid-template-columns:repeat(3,64px);grid-template-rows:repeat(3,64px);touch-action:none;-webkit-user-select:none;user-select:none}.op-dpad .forward{grid-column:2;grid-row:1}.op-dpad .left{grid-column:1;grid-row:2}.op-dpad-center{align-items:center;color:#8a949e;color:var(--op-off);display:flex;grid-column:2;grid-row:2;justify-content:center}.op-dpad .right{grid-column:3;grid-row:2}.op-dpad .backward{grid-column:2;grid-row:3}.op-dir{background:#f6f8fa;background:var(--op-surface-2);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:12px;cursor:pointer;font-size:26px;touch-action:none}.op-dir.down,.op-dir:active{background:#2b3440;color:#fff}.op-joystick{background:radial-gradient(circle,#f6f8fa 0,#e3e8ee 100%);border:2px solid #d9dee5;border:2px solid var(--op-line);border-radius:50%;cursor:grab;position:relative;touch-action:none;-webkit-user-select:none;user-select:none}.op-joystick.active{border-color:#2463c9;border-color:var(--op-accent)}.op-joy-knob{background:#2b3440;border-radius:50%;box-shadow:0 3px 8px #0000004d;left:50%;top:50%}.op-joy-knob,.op-joy-mark{pointer-events:none;position:absolute}.op-joy-mark{color:#66727f;color:var(--op-muted);font-size:15px}.op-joy-mark.n{top:6px}.op-joy-mark.n,.op-joy-mark.s{left:50%;transform:translateX(-50%)}.op-joy-mark.s{bottom:6px}.op-joy-mark.w{left:8px}.op-joy-mark.e,.op-joy-mark.w{top:50%;transform:translateY(-50%)}.op-joy-mark.e{right:8px}.op-speed{grid-gap:10px;align-items:center;display:grid;gap:10px;grid-template-columns:auto 1fr auto}.op-speed input{min-height:28px;width:100%}.op-speed output{font-weight:700;min-width:72px;text-align:right}.op-pad-stop{align-items:center;display:flex;gap:10px}.op-pad-stop .op-stop{flex:1 1;min-height:48px}.op-stopped{color:#c62828;color:var(--op-error);font-weight:600}.op-kbd{border-top:1px solid #d9dee5;border-top:1px solid var(--op-line);font-size:13px;padding-top:8px}.op-kbd-keys{grid-gap:3px 10px;align-items:center;display:grid;gap:3px 10px;grid-template-columns:auto 1fr;margin-top:6px}.op-app kbd{background:#f8f9fa;border:solid #c8ccd6;border-radius:4px;border-width:1px 1px 2px;display:inline-block;font:12px ui-monospace,Consolas,monospace;min-width:1.6em;padding:1px 5px;text-align:center}.op-app kbd.down{background:#1a8a4f;background:var(--op-ok);border-color:#13693c;color:#fff}.op-sent{color:#66727f;color:var(--op-muted);font-size:12px;margin-top:6px;word-break:break-all}.op-sent.bad{color:#c62828;color:var(--op-error)}.op-app main.op-main{grid-gap:8px;display:grid;flex:1 1;gap:8px;grid-template-columns:3fr 1fr;margin:0;min-height:0;padding:8px}.op-app main.op-main.layout-split{grid-template-columns:1fr 1fr}.op-app main.op-main.layout-camera{grid-template-columns:3fr 7fr}.op-app main.op-main.layout-station{grid-template-columns:1fr}.op-map-pane{background:#1e222c;background:var(--op-map);border-radius:8px;border-radius:var(--op-radius);min-height:0;min-width:0;overflow:hidden;position:relative}.op-map{container-type:size}.op-map,.op-map-canvas{inset:0;position:absolute}.op-map-canvas canvas{display:block;height:100%;width:100%}.op-map-msg{align-items:center;background:#1e222c99;color:#c8ccd6;display:flex;justify-content:center;padding:16px;text-align:center}.op-map-lidar,.op-map-msg{inset:0;position:absolute}.op-map-note{background:#0009;border-radius:10px;bottom:8px;color:#fff;font-size:12px;left:50%;padding:3px 10px;position:absolute;transform:translateX(-50%)}.op-map-tools{display:flex;flex-wrap:wrap;gap:4px;left:8px;pointer-events:none;position:absolute;right:8px;top:8px}.op-map-tools>*{pointer-events:auto}.op-tool{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#141820c7;border:1px solid #ffffff2e;border-radius:7px;color:#e7ebf2!important;cursor:pointer;display:inline-flex;font-size:13px;gap:5px;min-height:30px;padding:4px 10px;white-space:nowrap}.op-tool:hover:not(:disabled){background:#282e3ceb}.op-tool.on{background:#e6ecf5f2;color:#1f2933!important}.op-tool.on.accent{background:#b36bff;border-color:#b36bff;color:#fff!important}.op-tool:disabled{cursor:default;opacity:.5}.op-map-banner{align-items:center;background:#fffffff2;border-radius:8px;box-shadow:0 6px 24px #0f172a29;box-shadow:var(--op-shadow);display:flex;font-size:13px;gap:8px;left:50%;max-width:calc(100% - 16px);padding:5px 8px 5px 12px;position:absolute;top:50px;transform:translateX(-50%)}.op-map-banner.map-goto{color:#6c3fa0;margin:0}.op-map-banner.bottom{bottom:10px;padding:5px 12px;top:auto}.op-map-banner.bad{color:#c62828;color:var(--op-error)}.op-map-drawer{border-radius:10px;bottom:8px;box-shadow:0 6px 24px #0f172a29;box-shadow:var(--op-shadow);overflow:auto;position:absolute;right:8px;top:50px;width:min(540px,calc(100% - 16px));z-index:5}.op-map-drawer .maps-panel{background:#fff!important;background:var(--op-surface)!important;margin:0!important;min-height:100%}.op-map-card{background:#fff;background:var(--op-surface);border-radius:8px;box-shadow:0 6px 24px #0f172a29;box-shadow:var(--op-shadow);font-size:13px;padding:8px 10px;position:absolute;transform:translate(12px,-50%);width:230px;z-index:6}.op-map-card p{margin:3px 0}.op-map-card .op-icon-btn{position:absolute;right:4px;top:4px}.map-tooltip.pinned{cursor:pointer;pointer-events:auto}.op-map .map-legend{align-items:flex-start;flex-direction:column;gap:4px;margin:0}.op-map.compact .op-map-msg{font-size:11px;padding:4px}.op-lidar{inset:0;margin:0;position:absolute}.op-lidar canvas{display:block;height:100%;width:100%}.op-lidar-caption{bottom:8px;color:#c8ccd6;font-size:12px;left:8px;position:absolute}.op-map.compact .op-lidar-caption{display:none}.op-lidar-box{background:#1e222c;background:var(--op-map);border-radius:8px;height:min(420px,60vh);overflow:hidden;position:relative}.op-cam-pane{display:flex;flex-direction:column;gap:8px;min-height:0;min-width:0}.op-cam-stage{grid-gap:6px;display:grid;flex:1 1;gap:6px;min-height:0}.op-cam-stage.split{grid-template-rows:1fr 1fr}.layout-camera .op-cam-stage.split,.layout-split .op-cam-stage.split,.layout-station .op-cam-stage.split{grid-template-columns:1fr 1fr;grid-template-rows:1fr}.op-cam{align-items:center;background:#0d0f13;border-radius:8px;border-radius:var(--op-radius);container-type:size;display:flex;height:100%;justify-content:center;min-height:0;min-width:0;overflow:hidden;position:relative;width:100%}.op-cam.clickable{cursor:zoom-in}.op-cam-frame{aspect-ratio:4/3;position:relative;width:min(100cqw,calc(100cqh*4/3))}.op-cam-frame img{display:block;height:100%;inset:0;object-fit:contain;position:absolute;width:100%}.op-cam-frame img.stale{filter:grayscale(.7);opacity:.45}.op-cam-msg{align-items:center;color:#c8ccd6;display:flex;font-size:13px;inset:0;justify-content:center;padding:8px;position:absolute;text-align:center}.op-cam-badge{background:#0009;border-radius:10px;color:#fff;font-size:12px;left:6px;padding:2px 8px;pointer-events:none;position:absolute;top:6px}.op-cam-badge.bad:before{color:#ff8a80;content:"■ "}.op-cam-tools{display:flex;flex:0 0 auto;flex-direction:column;gap:6px}.op-cam-tools .op-row{flex-wrap:wrap}.op-zones-row{display:flex;gap:4px}.op-zone{background:#c9ced6;border-radius:4px;color:#1f2933;flex:1 1;font-size:12px;padding:3px 0;text-align:center}.op-zone.clear{background:#2e9d61;color:#fff}.op-zone.near{background:#f1c40f;color:#3b2f00}.op-zone.blocked{background:#d63031;color:#fff}.op-zones-text{color:#66727f;color:var(--op-muted);font-size:12px;margin-top:2px;text-align:center}.op-zones-text.bad{color:#c62828;color:var(--op-error)}.op-status{align-items:center;background:#fff;background:var(--op-surface);border-top:1px solid #d9dee5;border-top:1px solid var(--op-line);display:flex;flex:0 0 auto;gap:2px;min-height:36px;padding:3px 10px;z-index:35}.op-status-item{align-items:center;background:#0000;border:none;border-radius:6px;cursor:pointer;display:inline-flex;font-size:13px;gap:5px;min-height:28px;padding:2px 8px;white-space:nowrap}.op-status-item:hover{background:#f6f8fa;background:var(--op-surface-2)}.op-status-item.error{color:#c62828;color:var(--op-error);font-weight:600}.op-status-item.warn{color:#b86e00;color:var(--op-warn);font-weight:600}.op-status-time{color:#66727f;color:var(--op-muted);font-size:12px;margin-left:auto;white-space:nowrap}.op-toasts{display:flex;flex-direction:column;gap:6px;pointer-events:none;position:fixed;right:12px;top:104px;width:min(380px,calc(100vw - 24px));z-index:200}.op-toast{align-items:flex-start;animation:op-toast-in .15s ease-out;background:#fff;background:var(--op-surface);border-left:4px solid #8a949e;border-left:4px solid var(--op-off);border-radius:8px;box-shadow:0 6px 24px #0f172a29;box-shadow:var(--op-shadow);display:flex;font-size:13px;gap:8px;padding:8px 8px 8px 10px;pointer-events:auto}.op-toast.ok{border-left-color:#1a8a4f;border-left-color:var(--op-ok)}.op-toast.warn{border-left-color:#b86e00;border-left-color:var(--op-warn)}.op-toast.alert{background:#fff6f5}.op-toast.alert,.op-toast.error{border-left-color:#c62828;border-left-color:var(--op-error)}.op-toast-mark{font-weight:700;text-align:center;width:1em}.op-toast.alert .op-toast-mark,.op-toast.error .op-toast-mark{color:#c62828;color:var(--op-error)}.op-toast.ok .op-toast-mark{color:#1a8a4f;color:var(--op-ok)}.op-toast.warn .op-toast-mark{color:#b86e00;color:var(--op-warn)}.op-toast-text{flex:1 1;min-width:0}.op-toast-text small{color:#66727f;color:var(--op-muted);display:block;font-size:11px}@keyframes op-toast-in{0%{opacity:0;transform:translateY(-6px)}}.op-voice-backdrop{align-items:center;background:#0f172a61;display:flex;inset:0;justify-content:center;padding:16px;position:fixed;z-index:150}.op-voice{background:#fff;background:var(--op-surface);border-radius:14px;box-shadow:0 6px 24px #0f172a29;box-shadow:var(--op-shadow);color:#1f2933;color:var(--op-text);font-size:14px;max-height:calc(100dvh - 32px);overflow:auto;padding:22px 18px 16px;position:relative;text-align:center;width:min(460px,100%)}.op-voice-close{position:absolute;right:8px;top:8px}.op-voice-wave{align-items:center;display:flex;gap:8px;height:46px;justify-content:center}.op-voice-wave i{background:#2463c9;background:var(--op-accent);border-radius:6px;height:44px;transition:transform .1s;width:12px}.op-voice.listening .op-voice-wave i{background:#c62828;background:var(--op-error)}.op-voice.success .op-voice-wave i{background:#1a8a4f;background:var(--op-ok)}.op-voice.error .op-voice-wave i{background:#b86e00;background:var(--op-warn)}.op-voice-phase{font-size:1.25rem;font-weight:600;margin-top:10px}.op-voice-heard{font-size:1.1rem;margin-top:8px}.op-voice-msg{color:#66727f;color:var(--op-muted);margin-top:6px}.op-voice-msg.error{color:#c62828;color:var(--op-error)}.op-voice-msg.success{color:#1a8a4f;color:var(--op-ok)}.op-voice-msg.confirm{color:#b86e00;color:var(--op-warn);font-weight:600}.op-voice-actions{flex-wrap:wrap;gap:8px;margin-top:14px}.op-voice-actions,.op-voice-stop{display:flex;justify-content:center}.op-voice-stop{margin-top:10px}.op-voice-text{margin-top:12px}.op-voice-hint{margin:10px 0 4px}.op-voice-examples{font-size:13px;text-align:left}.op-settings.desktop{display:grid;flex:1 1;grid-template-columns:250px 1fr;min-height:0}.op-settings aside{background:#fff;background:var(--op-surface);border-right:1px solid #d9dee5;border-right:1px solid var(--op-line);display:flex;flex-direction:column;min-height:0}.op-settings-title{align-items:center;border-bottom:1px solid #d9dee5;border-bottom:1px solid var(--op-line);display:flex;gap:8px;padding:10px 12px}.op-settings-title h2{flex:1 1}.op-settings-nav{display:flex;flex-direction:column;gap:1px;overflow:auto;padding:6px}.op-settings-nav button{align-items:flex-start;background:#0000;border:none;border-radius:6px;cursor:pointer;display:flex;flex-direction:column;min-height:34px;padding:6px 10px;text-align:left}.op-settings-nav button:hover{background:#f6f8fa;background:var(--op-surface-2)}.op-settings-nav button.on{background:#e3ecfb;color:#2463c9;color:var(--op-accent);font-weight:600}.op-settings-nav small{color:#66727f;color:var(--op-muted);font-weight:400}.op-settings-body{min-height:0;overflow:auto;padding:12px 16px 24px}.op-settings-body>*{max-width:920px}.op-section-title{margin-bottom:10px!important}.op-settings .feature-card{background:#fff;background:var(--op-surface);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:10px;box-shadow:none;margin-bottom:12px;padding:14px 16px}.op-settings .feature-card h3{font-size:1.02rem;font-weight:600}.btn-icon.link{color:#2463c9;color:var(--op-accent);padding:0 3px;text-decoration:underline}.op-raw summary{cursor:pointer;padding:4px 0}.op-raw pre{background:#0f1720;border-radius:6px;color:#d6e2f0;font-size:12px;margin:4px 0 8px;max-height:240px;overflow:auto;padding:8px;white-space:pre-wrap;word-break:break-all}.op-app .info-grid{grid-gap:4px 16px;display:grid;gap:4px 16px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin-bottom:8px}.op-app .info-item,.op-app .status-item{border-bottom:1px solid #edf0f3;display:flex;gap:8px;justify-content:space-between;padding:4px 0}.op-app .label{color:#66727f;color:var(--op-muted);font-weight:500}.op-app .status-info{grid-gap:4px 16px;display:grid;gap:4px 16px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));margin-bottom:8px}.op-app .zenoh-settings{background:#f6f8fa;background:var(--op-surface-2);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:8px;margin-top:10px;padding:12px}.op-app .form-group{margin-bottom:8px}.op-app .form-group label{color:#66727f;color:var(--op-muted);display:block;margin-bottom:3px}.op-app .form-group input{border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:6px;font:inherit;padding:6px 8px;width:100%}.op-app .zenoh-monitor{max-height:320px;overflow:auto}.op-app .zenoh-message{border-bottom:1px solid #edf0f3;color:#445;font:12px ui-monospace,Consolas,monospace;padding:3px 0;word-break:break-all}.op-app .status-connected{color:#1a8a4f;color:var(--op-ok)}.op-app .status-disconnected{color:#c62828;color:var(--op-error)}.op-nanny{flex:1 1;min-height:0;overflow:auto;padding:10px 12px 16px}.op-nanny-head{align-items:center;display:flex;flex-wrap:wrap;gap:12px;margin-bottom:10px}.op-nanny-grid{grid-gap:12px;align-items:start;display:grid;gap:12px;grid-template-columns:minmax(0,5fr) minmax(0,6fr)}.op-nanny-left{position:-webkit-sticky;position:sticky;top:0}.op-nanny-left,.op-nanny-right{display:flex;flex-direction:column;gap:10px}.op-card{background:#fff;background:var(--op-surface);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:10px;padding:12px 14px}.op-nanny-cam{aspect-ratio:4/3;height:auto;max-height:52vh}.op-person-head{align-items:center;display:flex;gap:12px}.op-person-avatar{align-items:center;background:#f6f8fa;background:var(--op-surface-2);border-radius:50%;display:flex;flex:0 0 auto;font-size:28px;height:52px;justify-content:center;width:52px}.op-person-select{display:flex;flex-direction:column;gap:2px}.op-person-name{font-size:1.25rem;font-weight:700;margin-top:4px}.op-track{align-items:center;display:flex;font-weight:600;gap:6px;margin-top:8px}.op-track.ok{color:#1a8a4f;color:var(--op-ok)}.op-track.warn{color:#b86e00;color:var(--op-warn)}.op-track.off{color:#8a949e;color:var(--op-off)}.op-nanny-state{align-items:center;border-radius:10px;display:flex;font-size:1.1rem;font-weight:700;gap:8px;padding:10px 14px}.op-nanny-state.ok{background:#e6f4ec;color:#1a8a4f;color:var(--op-ok)}.op-nanny-state.bad{color:#c62828;color:var(--op-error);padding:0}.op-nanny-alert{background:#fff6f5;border:2px solid #c62828;border:2px solid var(--op-error);border-radius:10px;padding:12px 14px}.op-nanny-reason{font-weight:600;margin:6px 0 2px}.op-nanny-alert .op-row{margin-top:10px}.op-kv{border-bottom:1px solid #edf0f3;display:flex;gap:12px;justify-content:space-between;padding:5px 0}.op-kv span{color:#66727f;color:var(--op-muted)}.op-kv b{font-weight:600;text-align:right}.op-kv b.bad{color:#c62828;color:var(--op-error)}.op-nanny .row{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}.op-speech .row input{flex:1 1;min-width:0}.op-timeline ul{list-style:none;margin:0;max-height:320px;overflow:auto;padding:0}.op-timeline li{align-items:baseline;border-bottom:1px solid #edf0f3;display:flex;gap:8px;padding:5px 0}.op-timeline li time{font-feature-settings:"tnum";color:#66727f;color:var(--op-muted);flex:0 0 auto;font-variant-numeric:tabular-nums}.op-timeline li .text{flex:1 1}.op-timeline li.alert .text,.op-timeline li.error .text{color:#c62828;color:var(--op-error);font-weight:600}.op-timeline li.warn .text{color:#b86e00;color:var(--op-warn)}.op-timeline details{margin-top:8px}.op-switch{align-items:center;background:#fff;background:var(--op-surface);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:16px;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:600;gap:6px;padding:4px 12px}.op-switch.on{background:#e6f4ec;border-color:#a8d8bc;color:#1a8a4f;color:var(--op-ok)}.op-app.mobile{font-size:15px}.op-app.mobile .op-header{gap:4px;min-height:54px;padding:4px 6px}.op-app.mobile .op-robot{flex:1 1}.op-app.mobile .op-icon-btn{height:44px;width:44px}.op-app.mobile .op-chip{border-color:#0000;padding:3px 6px}.op-app.mobile .op-header .op-stop{font-size:14px;gap:6px;padding:0 10px}.op-app.mobile .op-robot-name{font-size:14px}.op-m-body{display:flex;flex:1 1;flex-direction:column;min-height:0;position:relative}.op-m-map{background:#1e222c;background:var(--op-map);inset:0;position:absolute}.op-app.mobile .op-map-tools{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.op-app.mobile .op-tool{min-height:40px}.op-app.mobile .op-map-banner{top:58px}.op-app.mobile .op-map-drawer{left:6px;right:6px;top:56px;width:auto}.op-preview{bottom:128px;min-width:120px;position:absolute;right:8px;width:34%;z-index:4}.op-preview-body{aspect-ratio:4/3;border:2px solid #ffffffd9;border-radius:10px;box-shadow:0 4px 14px #00000073;cursor:pointer;overflow:hidden;touch-action:pan-y}.op-preview-swap{align-items:center;background:#141820d9;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;height:36px;justify-content:center;left:-14px;position:absolute;top:50%;transform:translateY(-50%);width:36px}.op-m-map-bottom{align-items:flex-start;bottom:8px;display:flex;flex-direction:column;gap:6px;left:6px;pointer-events:none;position:absolute;right:6px;z-index:5}.op-m-map-bottom>*{pointer-events:auto}.op-status.compact{background:#fffffff0;border:none;border-radius:10px;box-shadow:0 2px 10px #00000040;gap:4px;max-width:100%;overflow-x:auto;padding:4px;scrollbar-width:none}.op-status.compact .op-status-item{min-height:36px}.op-app.mobile .op-status .op-popover{bottom:140px;left:8px;max-width:none;position:fixed;right:8px;top:auto}.op-fab{align-items:center;background:#2b3440;border:none;border-radius:24px;box-shadow:0 4px 14px #00000059;color:#fff!important;cursor:pointer;display:inline-flex;font-weight:600;gap:8px;min-height:48px;padding:0 18px}.op-m-fab-wrap{bottom:8px;left:8px;position:absolute;z-index:6}.op-edge-swipe{bottom:0;height:14px;left:0;position:absolute;right:0;touch-action:none;z-index:7}.op-bottom-nav{background:#fff;background:var(--op-surface);border-top:1px solid #d9dee5;border-top:1px solid var(--op-line);display:grid;flex:0 0 auto;grid-template-columns:repeat(3,1fr);min-height:60px;padding-bottom:env(safe-area-inset-bottom)}.op-bottom-nav button{align-items:center;background:#0000;border:none;color:#66727f!important;color:var(--op-muted)!important;cursor:pointer;display:flex;flex-direction:column;font-size:12px;gap:2px;justify-content:center;min-height:56px}.op-bottom-nav button.on{color:#2463c9!important;color:var(--op-accent)!important;font-weight:700}.op-sheet-backdrop{align-items:flex-end;background:#0f172a40;display:flex;inset:0;position:fixed;z-index:120}.op-sheet{animation:op-sheet-in .18s ease-out;background:#fff;background:var(--op-surface);border-radius:16px 16px 0 0;box-shadow:0 -6px 24px #00000040;max-height:88dvh;overflow:auto;padding:0 16px calc(16px + env(safe-area-inset-bottom));width:100%}@keyframes op-sheet-in{0%{transform:translateY(40%)}}.op-sheet-head{align-items:center;cursor:grab;display:flex;justify-content:space-between;padding:14px 0 8px;position:relative;touch-action:none}.op-sheet-grip{background:#c5ccd5;border-radius:3px;height:5px;left:50%;margin-left:-22px;position:absolute;top:6px;width:44px}.op-sheet-title{font-size:1.05rem;font-weight:700}.op-pad.mobile .op-dpad{grid-template-columns:repeat(3,76px);grid-template-rows:repeat(3,76px)}.op-pad.mobile .op-seg button{min-height:40px;padding:6px 16px}.op-m-camera{background:#000;color:#fff;display:flex;flex-direction:column;inset:0;position:absolute}.op-m-camera-top{align-items:center;display:flex;gap:6px;padding:4px 6px}.op-m-camera-top .op-icon-btn{color:#fff}.op-m-camera-top .op-icon-btn:hover{background:#ffffff1a}.op-m-camera-title{flex:1 1;font-weight:600}.op-m-camera-stage{display:flex;flex:1 1;min-height:0;position:relative}.op-m-camera-stage .op-cam-stage{flex:1 1}.op-m-camera-stage .op-cam{border-radius:0}.op-m-mappreview{aspect-ratio:1;background:#1e222c;background:var(--op-map);border:2px solid #ffffffd9;border-radius:10px;box-shadow:0 4px 14px #00000080;overflow:hidden;position:absolute;right:8px;top:8px;width:34%;z-index:3}.op-m-camera-bottom{align-items:center;background:#0d0f13;display:flex;flex-wrap:wrap;gap:8px;padding:8px 8px 64px}.op-m-camera-bottom .op-seg{background:#1b2028;border-color:#39414d}.op-m-camera-bottom .op-seg button{border-color:#39414d;color:#e7ebf2;min-height:40px}.op-m-camera-bottom .op-seg button.on{background:#e7ebf2;color:#1f2933}.op-m-camera-bottom .op-zones{width:100%}.op-cam-state.ok{color:#7ee2a8}.op-cam-state.bad{color:#ff8a80}.op-nanny.mobile{padding:8px 10px 80px}.op-nanny.mobile>*+*{margin-top:10px}.op-nanny.mobile .op-nanny-cam{max-height:none}.op-nanny-talk{background:linear-gradient(#0000,#eef1f5 30%);background:linear-gradient(#0000,var(--op-bg) 30%);bottom:0;padding:8px 0;position:-webkit-sticky;position:sticky}.op-nanny-talk .op-btn{width:100%}.op-settings.mobile{background:#eef1f5;background:var(--op-bg);display:flex;flex:1 1;flex-direction:column;min-height:0}.op-settings.mobile .op-settings-title{background:#fff;background:var(--op-surface)}.op-settings.mobile .op-settings-nav{gap:4px;padding:8px}.op-settings.mobile .op-settings-nav button{background:#fff;background:var(--op-surface);border:1px solid #d9dee5;border:1px solid var(--op-line);min-height:56px}.op-settings.mobile .op-settings-body{flex:1 1;padding:10px 8px 24px}.op-app.mobile .btn-sm,.op-app.mobile .op-btn{min-height:44px}.op-app.mobile .btn-icon{min-height:44px;min-width:44px}.op-app.mobile .op-toasts{top:62px}@media (max-width:1100px){.op-tabs button{padding:4px 8px}.op-app main.op-main.layout-map{grid-template-columns:7fr 3fr}}@media (max-width:960px){.op-tab-label{display:none}.op-header .op-chip .op-chip-text{max-width:120px;overflow:hidden;text-overflow:ellipsis}.op-ctl-hint{display:none}.op-nanny-grid{grid-template-columns:1fr}.op-nanny-left{position:static}.op-settings.desktop{grid-template-columns:200px 1fr}}@media (max-height:520px){.op-app .op-header{min-height:44px;padding:3px 8px}.op-controlbar{min-height:36px}.op-status{min-height:30px}.op-cam-tools .op-row{display:none}.op-ctl-panel{max-height:calc(100dvh - 90px)}}.op-map-menu{align-items:stretch;display:flex;flex-direction:column;gap:8px;max-height:min(520px,calc(100cqh - 56px));max-width:calc(100cqw - 16px);min-width:0;overflow:auto;width:280px}.op-map-menu .op-btn{margin-top:0}.op-app.mobile .op-map-menu .op-check{min-height:40px}.op-people-layout{grid-gap:12px;align-items:start;display:grid;gap:12px;grid-template-areas:"panels cam";grid-template-columns:minmax(0,1fr) minmax(280px,400px)}.op-settings-body>.op-people-layout{max-width:1240px}.op-people-panels{grid-area:panels;min-width:0}.op-people-cam{grid-area:cam;position:-webkit-sticky;position:sticky;top:0;z-index:2}.op-people-cam-view{aspect-ratio:4/3;height:auto}.op-people-cam-note{color:#66727f;color:var(--op-muted);font-size:13px;margin:8px 0 0}@media (max-width:960px){.op-people-layout{grid-template-areas:"cam" "panels";grid-template-columns:1fr}.op-people-cam{padding:8px 10px!important;top:-10px}.op-people-cam h3{display:none!important}.op-people-cam-view{max-height:34vh}}.op-laser-svg{background:#f6f8fa;background:var(--op-surface-2);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:8px;border-radius:var(--op-radius);display:block;max-width:480px;width:100%}.op-laser-fig,.op-laser-svg{margin:10px 0 4px}.op-laser-fig .op-laser-svg{margin:0}.op-laser-pt{fill:#66727f;fill:var(--op-muted);opacity:.28}.op-laser-svg.pickable{cursor:crosshair}.op-laser-pick{fill:#2463c9;fill:var(--op-accent);stroke:#fff;stroke:var(--op-surface);stroke-width:1.5}.op-laser-pickbar{border:1px solid #2463c9;border:1px solid var(--op-accent);border-radius:8px;border-radius:var(--op-radius);font-size:13px;margin:6px 0;padding:8px 10px}.op-laser-sens input[type=range]{flex:1 1;min-width:120px}.op-laser-wall{stroke:#8a949e;stroke:var(--op-off);stroke-width:2;stroke-linecap:round}.op-laser-note-line{color:#66727f;color:var(--op-muted);font-size:12px;line-height:1.5;margin-top:4px}.op-laser-legend{display:block}.op-laser-legend i{display:inline-block;margin:0 4px 0 10px;vertical-align:middle}.op-laser-legend i:first-child{margin-left:0}.op-laser-legend i.pt{background:#66727f;background:var(--op-muted);border-radius:50%;height:5px;opacity:.6;width:5px}.op-laser-legend i.ln{background:#8a949e;background:var(--op-off);height:2px;width:14px}.op-laser-legend i.fr{background:#1f2933;background:var(--op-text);height:4px;width:14px}.op-laser-front{stroke:#1f2933;stroke:var(--op-text);stroke-width:4;stroke-linecap:round}.op-laser-corner{fill:#fff;fill:var(--op-surface);stroke:#66727f;stroke:var(--op-muted);stroke-width:2}.op-laser-corner.on{fill:#2463c9;fill:var(--op-accent)}.op-laser-corner.on,.op-laser-dim{stroke:#2463c9;stroke:var(--op-accent)}.op-laser-dim{stroke-width:1.5;stroke-dasharray:4 3}.op-laser-beam{stroke:#c62828;stroke:var(--op-error);stroke-width:1.5}.op-laser-target{fill:none;stroke:#c62828;stroke:var(--op-error);stroke-width:2;stroke-dasharray:3 2}.op-laser-target.on{stroke-dasharray:none}.op-laser-robot{fill:#2463c9;fill:var(--op-accent)}.op-laser-note{fill:#66727f;fill:var(--op-muted);font-size:11px}.op-laser-progress{background:#f6f8fa;background:var(--op-surface-2);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:11px;height:22px;margin:8px 0;overflow:hidden;position:relative}.op-laser-progress i{background:#2463c9;background:var(--op-accent);inset:0 auto 0 0;opacity:.25;position:absolute;transition:width .3s}.op-laser-progress span{display:block;font-size:12px;line-height:20px;position:relative;text-align:center}.op-laser-facts{font-size:13px;line-height:1.5;margin:8px 0 0;padding-left:18px}.op-laser-facts li.warn{color:#b86e00;color:var(--op-warn)}.op-laser-reading{font-size:15px;margin:8px 0}.op-laser-layer{inset:0;pointer-events:none;position:absolute;z-index:1}.op-laser-dot{background:#ff2a2a;border-radius:50%;box-shadow:0 0 6px 3px #ff1e1ebf,0 0 14px 6px #ff1e1e59;height:9px;margin:-4.5px 0 0 -4.5px;position:absolute;width:9px}.op-laser-page{display:flex;flex-direction:column;gap:12px;max-width:1240px}.op-walls-card .op-laser-fig{margin:8px 0 4px}.op-walls-svg{background:#f6f8fa;background:var(--op-surface-2);border:1px solid #d9dee5;border:1px solid var(--op-line);border-radius:8px;border-radius:var(--op-radius);cursor:crosshair;display:block;height:auto;max-height:68vh;touch-action:none;-webkit-user-select:none;user-select:none;width:100%}.op-walls-svg.empty{cursor:default}.op-walls-tools{align-items:center;gap:6px}.op-walls-tools .op-btn{min-width:36px}.op-walls-front{stroke:#1f2933;stroke:var(--op-text);stroke-width:9;stroke-opacity:.18;stroke-linecap:round}.op-walls-seg{stroke-width:4;stroke-linecap:butt}.op-walls-seg.ok{stroke:#1a8a4f}.op-walls-seg.short{stroke:#d97706}.op-walls-seg.bad{stroke:#c62828}.op-walls-seg.nocorner{stroke:#9aa3ad}.op-laser-legend i.seg{height:4px;width:14px}.op-laser-legend i.seg.ok{background:#1a8a4f}.op-laser-legend i.seg.short{background:#d97706}.op-laser-legend i.seg.bad{background:#c62828}.op-laser-legend i.seg.nocorner{background:#9aa3ad}.op-walls-pick .corridor{fill:#1a8a4f;fill-opacity:.12;stroke:#1a8a4f;stroke-dasharray:4 3}.op-walls-pick.short .corridor{fill:#d97706;stroke:#d97706}.op-walls-pick.bad .corridor{fill:#c62828;stroke:#c62828}.op-walls-pick.nocorner .corridor{fill:#9aa3ad;stroke:#9aa3ad}.op-walls-pick .blocker{fill:#c62828}.op-walls-pick .stand{fill:#2463c9;fill:var(--op-accent);fill-opacity:.85}.op-walls-pick .spot,.op-walls-pick .stand{stroke:#fff;stroke:var(--op-surface);stroke-width:1.5}.op-walls-pick .spot{fill:#2463c9;fill:var(--op-accent)}.op-laser-pickbar.ok{border-color:#1a8a4f}.op-laser-pickbar.short{border-color:#d97706}.op-laser-pickbar.bad{border-color:#c62828}.op-laser-pickbar.nocorner{border-color:#9aa3ad}.op-walls-svg.marking{cursor:cell}.op-walls-ignored{fill:#9aa3ad;fill-opacity:.18;stroke:#66727f;stroke-dasharray:3 2}.op-walls-pick .beam{stroke:#c62828;stroke-width:1.5;stroke-dasharray:5 3}.op-walls-pick .body{fill:#2463c9;fill:var(--op-accent);fill-opacity:.12;stroke:#2463c9;stroke:var(--op-accent);stroke-dasharray:3 2}.op-laser-legend i.ign{background:#9aa3ad40;border:1px dashed #66727f;border-radius:50%;height:10px;width:10px}.features-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));margin-top:20px}.feature-card{background:#fffffff2;border-radius:15px;box-shadow:0 8px 32px #0000001a;color:#2c3e50;font-size:.92rem;min-width:0;padding:20px}.feature-card h3{align-items:center;display:flex;font-size:1.25rem;font-weight:500;gap:8px;justify-content:space-between;margin:0 0 12px}.feature-card h4{color:#34495e;font-size:.95rem;font-weight:500;margin:14px 0 6px}.feature-card .row{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}.feature-card .row>input[type=text],.feature-card .row>select{flex:1 1;min-width:0}.feature-card input[type=text],.feature-card select{border:1px solid #ccd3dc;border-radius:6px;font:inherit;padding:5px 8px}.feature-card label{align-items:center;cursor:pointer;display:inline-flex;gap:5px}.feature-card .hint{color:#7f8c8d;font-size:.8rem}.feature-card .error-text{color:#c0392b;font-size:.85rem}.btn-sm{background:#fff;border:1px solid #3498db;border-radius:6px;color:#2980b9;cursor:pointer;font:inherit;font-size:.85rem;padding:5px 10px;white-space:nowrap}.btn-sm:hover:not(:disabled){background:#eaf4fc}.btn-sm:disabled{cursor:default;opacity:.45}.btn-sm.primary{background:#3498db;color:#fff}.btn-sm.primary:hover:not(:disabled){background:#2980b9}.btn-sm.danger{border-color:#e74c3c;color:#c0392b}.btn-sm.active{background:#27ae60;border-color:#27ae60;color:#fff}.btn-icon{background:none;border:none;border-radius:4px;color:#555;cursor:pointer;font:inherit;padding:2px 5px}.btn-icon:hover:not(:disabled){background:#eef1f5}.btn-icon:disabled{cursor:default;opacity:.3}.ptt-btn{background:linear-gradient(45deg,#9b59b6,#8e44ad);border:none;border-radius:12px;color:#fff;cursor:pointer;font:inherit;font-size:1rem;padding:14px;touch-action:none;-webkit-user-select:none;user-select:none;width:100%}.ptt-btn.recording{animation:pulse 1s infinite;background:linear-gradient(45deg,#e74c3c,#c0392b)}.ptt-btn:disabled{cursor:default;opacity:.5}.badge{background:#ecf0f1;border-radius:10px;color:#555;display:inline-block;font-size:.75rem;padding:1px 7px;white-space:nowrap}.badge.ok{background:#d5f5e3;color:#1e8449}.badge.warn{background:#fdebd0;color:#a04000}.badge.off{background:#f2f3f4;color:#95a5a6}.badge.alert{background:#fadbd8;color:#a93226}.device-list{list-style:none;margin:0;padding:0}.device-list li{align-items:center;border-bottom:1px solid #eee;display:flex;flex-wrap:wrap;gap:6px;padding:6px 0}.device-list li:last-child{border-bottom:none}.device-list .rank{color:#95a5a6;font-weight:500;text-align:center;width:1.6em}.device-list .name{flex:1 1;min-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-list .actions{align-items:center;display:flex;gap:4px}.event-list{font-size:.85rem;list-style:none;margin:0;max-height:220px;overflow-y:auto;padding:0}.event-list li{align-items:baseline;background:#f8f9fa;border-left:3px solid #3498db;border-radius:6px;display:flex;gap:6px;margin-bottom:4px;padding:5px 8px}.event-list li.alert{background:#fdf2f2;border-left-color:#e74c3c}.event-list li.warn{background:#fef9e7;border-left-color:#f39c12}.event-list li.ok{background:#f2fdf2;border-left-color:#27ae60}.event-list .time{font-feature-settings:"tnum";color:#95a5a6;flex-shrink:0;font-variant-numeric:tabular-nums}.event-list .text{flex:1 1;min-width:0;overflow-wrap:anywhere}.level-meter{background:#ecf0f1;border-radius:6px;flex:1 1;height:12px;min-width:120px;overflow:hidden;position:relative}.level-meter .fill{background:linear-gradient(90deg,#27ae60,#f1c40f 70%,#e74c3c);bottom:0;left:0;position:absolute;top:0;transition:width .2s}.level-meter .mark{bottom:-2px;position:absolute;top:-2px;width:2px}.slider-row{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:11em 1fr 4.5em;margin:4px 0}.slider-row input[type=range]{width:100%}.slider-row .value{font-feature-settings:"tnum";color:#555;font-variant-numeric:tabular-nums;text-align:right}.checks{display:flex;flex-wrap:wrap;gap:6px 14px;margin:6px 0}.class-grid{grid-gap:2px 10px;border:1px solid #eee;border-radius:6px;display:grid;font-size:.82rem;gap:2px 10px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));max-height:180px;overflow-y:auto;padding:6px}.feature-card audio{margin-top:6px;width:100%}.feature-card details summary{color:#2980b9;cursor:pointer;margin:8px 0 4px}.map-layers{align-items:center;display:flex;flex-wrap:wrap;font-size:13px;gap:6px 14px;justify-content:center;margin-top:6px}.map-layers label{align-items:center;cursor:pointer;display:inline-flex;gap:4px}.map-layers button{font:inherit;padding:3px 8px}.map-legend{color:#666;display:flex;flex-wrap:wrap;font-size:12px;gap:4px 12px;justify-content:center;margin-top:4px}.map-legend i{display:inline-block;height:3px;margin-right:3px;vertical-align:middle;width:16px}.map-legend i.dashed{background:none;border-top:3px dashed;height:0}.vision-overlay{inset:0;pointer-events:none;position:absolute}.vision-overlay .box{border:2px solid #2ee6a6;border-radius:3px;position:absolute}.vision-overlay .box.person{border-color:#ffdc50}.vision-overlay .box.face{border-color:#ff6bcb}.vision-overlay .box.sign{border-color:#4fc3f7}.vision-overlay .box span{background:#000000a6;border-radius:3px;color:#fff;font-size:11px;left:-2px;line-height:16px;padding:0 4px;position:absolute;top:-18px;white-space:nowrap}@media (max-width:768px){.features-grid{grid-template-columns:1fr}.slider-row{grid-template-columns:8em 1fr 4em}}.map-tooltip{background:#000c;border-radius:4px;color:#fff;font-size:12px;padding:3px 8px;pointer-events:none;position:absolute;transform:translate(-50%,-100%);white-space:nowrap}.keyboard-control{border:1px solid #e3e7ec;border-radius:10px;font-size:.88rem;margin:12px 0;padding:10px 12px}.keyboard-control.active{border-color:#27ae60}.keyboard-control kbd{background:#f8f9fa;border:solid #c8ccd6;border-radius:4px;border-width:1px 1px 2px;display:inline-block;font:.8rem monospace;min-width:1.6em;padding:1px 5px;text-align:center}.keyboard-control kbd.down{background:#27ae60;border-color:#1e8449;color:#fff}.keyboard-control .keys{grid-gap:3px 10px;align-items:center;display:grid;gap:3px 10px;grid-template-columns:auto 1fr;margin-top:6px}.map-goto{align-items:center;color:#6c3fa0;display:flex;font-size:13px;gap:8px;justify-content:center;margin-top:6px}.map-goto .ok{color:#1e8449}.map-goto .warn{color:#a04000}.map-goto button{font:inherit;padding:2px 10px}.feature-card.power-panel.asleep{background:#f4f1fb;border-color:#c9b8ea}.power-row{align-items:center;display:flex;flex-wrap:wrap;gap:6px 10px;margin:6px 0}.power-row .power-wake{background:#6c3fa0;border-color:#6c3fa0;color:#fff}.power-badge{background:#e8f6ee;border-radius:10px;color:#1e8449;font-size:.85rem;font-weight:400;padding:1px 8px}.power-badge.asleep{background:#e6ddf6;color:#6c3fa0}.op-num-grid{grid-gap:6px 12px;display:grid;gap:6px 12px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));margin:6px 0}.op-num{color:#555;display:flex;flex-direction:column;font-size:12px;gap:2px}.op-num input{font:inherit;font-size:14px;max-width:110px;padding:3px 6px;width:100%}.op-geo-views{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.op-geo-svg{background:#fbfbfa;border:1px solid #e3e3e3;border-radius:6px;height:auto;max-width:340px;width:100%}.op-geo-svg .op-geo-title{fill:#52514e;font-size:11px}.op-geo-svg .op-geo-note{fill:#52514e;font-size:10px}.op-geo-body{fill:#cfd5dc;stroke:#66727f;stroke-width:1.5}.op-geo-wheel{fill:#3b3f45}.op-geo-origin{fill:#1f2933}.op-geo-ground{stroke:#8a949e;stroke-width:2}.op-geo-swept{fill:none;stroke:#66727f;stroke-dasharray:5 4}.op-geo-margin{fill:#f2b8b8;fill-opacity:.18;stroke:none}.op-geo-bumper{fill:none;stroke:#8a949e;stroke-dasharray:3 3}.op-geo-bumper.on{fill:#1a8a4f;fill-opacity:.5;stroke:#1a8a4f;stroke-dasharray:none}.op-geo-facts{color:#444;font-size:13px;margin:8px 0;padding-left:18px}.op-geo-group{border:1px solid #e3e3e3;border-radius:6px;margin:0 0 10px;padding:6px 10px}.op-geo-group legend{font-weight:600;padding:0 4px}.op-geo-dot{border-radius:50%;display:inline-block;height:10px;vertical-align:middle;width:10px}.op-pantilt{grid-gap:2px;bottom:30px;display:grid;gap:2px;grid-template-areas:". up ." "left center right" ". down ." "angles angles angles";grid-template-columns:repeat(3,30px);grid-template-rows:repeat(3,30px) auto;opacity:.55;position:absolute;right:8px;touch-action:none;transition:opacity .15s;z-index:3}.op-pantilt:focus-within,.op-pantilt:hover{opacity:1}.op-pantilt button{background:#0f172ab3;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;padding:0}.op-pantilt button:active{background:#2463c9e6}.op-pantilt .up{grid-area:up}.op-pantilt .left{grid-area:left}.op-pantilt .center{grid-area:center}.op-pantilt .right{grid-area:right}.op-pantilt .down{grid-area:down}.op-pantilt .angles{color:#fff;font-size:11px;grid-area:angles;text-align:center;text-shadow:0 1px 2px #000}.op-chart{margin:4px 0 0}.op-chart figcaption{color:#52514e;font-size:12px;margin:6px 0 2px}.op-chart svg{display:block;touch-action:pan-y}.op-chart-grid{stroke:#e6e6e3}.op-chart-axis{stroke:#b9bcc0}.op-chart-ref{stroke:#d03b3b;stroke-dasharray:4 3;stroke-opacity:.6}.op-chart-cross{stroke:#52514e;stroke-width:1}.op-chart-tick{fill:#52514e;font-size:10px}.op-chart-x{color:#52514e;display:flex;font-size:10px;justify-content:space-between;padding-right:10px}.op-energy-readout{color:#52514e;display:flex;flex-wrap:wrap;font-size:13px;gap:4px 14px;margin:6px 0;min-height:20px}.op-energy-readout .when,.op-energy-readout b{color:#0b0b0b}.op-energy-dip{color:#b42318;font-weight:600}.op-table{border-collapse:collapse;font-size:12px;margin:6px 0;width:100%}.op-table td,.op-table th{border-bottom:1px solid #eee;padding:2px 6px;text-align:right}.op-table td:first-child,.op-table th:first-child{text-align:left}.op-btn.danger{border-color:#e9a6a0;color:#b42318}.op-btn.danger:not(:disabled):hover{background:#fdecea}.op-cam-corner{align-items:center;background:#0f172a73;border-radius:10px;display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end;max-width:calc(100% - 110px);opacity:.7;padding:3px;position:absolute;right:6px;top:6px;transition:opacity .15s,background .15s;z-index:4}.op-cam-corner:focus-within,.op-cam-corner:hover{background:#0f172ab3;opacity:1}.op-cam-modes{display:flex;gap:2px}.op-cam-chip{background:#0000;border:none;border-radius:7px;color:#fff;cursor:pointer;font:inherit;font-size:12px;line-height:18px;padding:3px 8px;white-space:nowrap}.op-cam-chip:hover:not(:disabled){background:#ffffff26}.op-cam-chip:disabled{cursor:default;opacity:.5}.op-cam-chip.on{background:#ffffff38;cursor:default}.op-cam-chip.primary{background:#2463c9}.op-cam-chip.primary:hover:not(:disabled){background:#2f74e0}.op-cam-chip.muted,span.op-cam-chip{cursor:default}.op-cam-chip.muted{color:#d6dae3}.op-cam-chip.track.tracking{color:#7ee2a8}.op-cam-chip.track.lost{color:#ffb74d}.op-cam-chip.rec .dot{color:#9aa0ab;margin-right:4px}.op-cam-chip.rec.on .dot{animation:op-rec-blink 1.2s steps(2) infinite;color:#ff5252}@keyframes op-rec-blink{50%{opacity:.2}}@media (prefers-reduced-motion:reduce){.op-cam-chip.rec.on .dot{animation:none}}.op-track-select{background:#0000001f;cursor:crosshair;inset:0;position:absolute;touch-action:none;z-index:3}.op-track-hint{background:#0009;border-radius:10px;bottom:10px;color:#fff;font-size:12px;left:50%;padding:3px 10px;transform:translateX(-50%)}.op-track-box,.op-track-hint{pointer-events:none;position:absolute}.op-track-box{border:2px solid #7ee2a8;border-radius:3px;box-shadow:0 0 0 1px #00000080;z-index:2}.op-track-box.draft{background:#ffffff14;border:2px dashed #fff}.op-track-box.starting{border-color:#64b5f6}.op-track-box.lost{border-color:#ffb74d;border-style:dashed}.op-track-box span{background:#7ee2a8;border-radius:3px 3px 0 0;bottom:100%;color:#0b0b0b;font-size:11px;left:-2px;line-height:16px;padding:0 5px;position:absolute;white-space:nowrap}.op-track-box.lost span{background:#ffb74d}.op-track-box.starting span{background:#64b5f6}.op-num-input{align-items:center;display:flex;gap:4px}.op-rec-screen{aspect-ratio:4/3;background:#0d0f13;border-radius:8px;margin:0 auto 8px;max-width:720px;overflow:hidden;position:relative;width:100%}.op-rec-screen img{height:100%;inset:0;object-fit:contain;position:absolute;width:100%}.op-rec-time{font-feature-settings:"tnum";background:#0009;border-radius:10px;color:#fff;font-size:12px;font-variant-numeric:tabular-nums;left:6px;padding:1px 8px;position:absolute;top:6px}.op-rec-time:empty{display:none}.op-rec-note{background:#000000a6;border-radius:10px;bottom:8px;color:#fff;font-size:12px;left:50%;padding:3px 10px;position:absolute;transform:translateX(-50%);white-space:nowrap}.op-rec-timeline{margin:6px 0}.op-rec-timeline .bar{background:#e9ebef;border-radius:5px;cursor:pointer;height:22px;position:relative;touch-action:manipulation}.op-rec-timeline .bar:focus-visible{outline:2px solid #2463c9;outline-offset:2px}.op-rec-timeline .span{background:#2463c9;border-radius:2px;bottom:3px;opacity:.75;position:absolute;top:3px}.op-rec-timeline .head{background:#d03b3b;bottom:-3px;margin-left:-1px;position:absolute;top:-3px;width:2px}.op-rec-timeline .hover{background:#00000059;bottom:0;pointer-events:none;position:absolute;top:0;width:1px}.op-rec-timeline .hover span{background:#000000bf;border-radius:3px;bottom:100%;color:#fff;font-size:11px;left:50%;padding:0 4px;position:absolute;transform:translateX(-50%);white-space:nowrap}.op-rec-timeline .ticks{font-feature-settings:"tnum";color:#52514e;display:flex;font-size:10px;font-variant-numeric:tabular-nums;justify-content:space-between}.op-rec-controls{align-items:center;display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.op-rec-controls a.op-btn{text-decoration:none}.op-rec-player h3 select{font:inherit;font-size:14px;padding:3px 6px}.op-shutter-wrap{inset:0;pointer-events:none;position:absolute;z-index:4}.op-shutter{align-items:center;background:#0f172a99;border:3px solid #ffffffe6;border-radius:50%;bottom:8px;box-shadow:0 2px 8px #0006;color:#fff;cursor:pointer;display:flex;height:44px;justify-content:center;left:8px;pointer-events:auto;position:absolute;transition:transform .1s,background .15s;width:44px}.op-shutter:hover:not(:disabled){background:#2463c9d9}.op-shutter:active:not(:disabled){transform:scale(.92)}.op-shutter:focus-visible{outline:3px solid #8ab4ff;outline-offset:2px}.op-shutter:disabled{cursor:not-allowed;opacity:.4}.op-shutter.busy{opacity:.75}.op-shutter.series,.op-shutter.series:hover:not(:disabled){background:#c62828d9;border-color:#fff}.op-shutter-count{font-size:11px;font-weight:700;line-height:1}.op-shutter-note{background:#000000b3;border-radius:10px;bottom:16px;color:#fff;font-size:12px;left:58px;max-width:calc(100% - 66px);overflow:hidden;padding:3px 8px;position:absolute;text-overflow:ellipsis;white-space:nowrap}.op-shutter-note.bad{color:#ffb4ab}.op-shutter-flash{animation:op-shutter-flash .35s ease-out;background:#fff;inset:0;opacity:0;position:absolute}@keyframes op-shutter-flash{0%{opacity:.7}to{opacity:0}}@media (prefers-reduced-motion:reduce){.op-shutter-flash{animation:none}}.op-shutter-wrap.preview .op-shutter{bottom:-10px;height:40px;left:-14px;width:40px}.op-shutter-wrap.preview .op-shutter-note{bottom:calc(100% + 6px);left:auto;max-width:70vw;right:0}.op-snap-actions,.op-snap-filters{flex-wrap:wrap;margin:6px 0}.op-snap-progress progress{flex:1 1 160px}.op-snap-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));margin:8px 0}.op-snap-tile{background:#0d0f13;border:2px solid #0000;border-radius:8px;overflow:hidden;position:relative}.op-snap-tile.on{border-color:#2463c9;border-color:var(--op-accent,#2463c9)}.op-snap-img{align-items:center;aspect-ratio:4/3;background:none;border:none;cursor:zoom-in;display:flex;justify-content:center;padding:0;width:100%}.op-snap-img img{display:block;height:100%;object-fit:cover;width:100%}.op-snap-check{background:#0000008c;border-radius:6px;left:4px;line-height:0;padding:4px;position:absolute;top:4px}.op-snap-check input{height:18px;margin:0;width:18px}.op-snap-caption{background:#000000bf;color:#e6e8ec;display:flex;font-size:11px;gap:4px;justify-content:space-between;padding:3px 6px}.op-snap-caption span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.op-snap-viewer{align-items:center;background:#000000bf;display:flex;inset:0;justify-content:center;padding:16px;position:fixed;z-index:50}.op-snap-viewer-body{background:#fff;background:var(--op-surface,#fff);border-radius:10px;color:#1f2933;color:var(--op-text,#1f2933);display:flex;flex-direction:column;gap:8px;max-height:100%;overflow:auto;padding:12px;width:min(960px,100%)}.op-snap-viewer-img{align-items:center;background:#0d0f13;border-radius:8px;display:flex;justify-content:center;min-height:200px;position:relative}.op-snap-viewer-img img{display:block;max-height:70vh;max-width:100%}.op-snap-viewer-info{display:flex;flex-wrap:wrap;font-size:13px;gap:4px 16px}.op-snap-viewer .op-row{flex-wrap:wrap}.op-trainer-badge{align-items:center;background:#0f172ab8;border:none;border-left:4px solid #7ee2a8;border-radius:10px;bottom:8px;color:#fff;cursor:pointer;display:flex;flex-direction:column;font:inherit;gap:1px;left:50%;max-width:calc(100% - 200px);min-width:120px;padding:4px 12px;position:absolute;text-align:center;transform:translateX(-50%);z-index:4}.op-trainer-badge.warn{border-left-color:#ffb74d}.op-trainer-badge.rest,.op-trainer-badge.waiting{border-left-color:#8ab4ff}.op-trainer-badge:focus-visible{outline:3px solid #8ab4ff;outline-offset:2px}.op-trainer-badge-top{color:#d6dae3;font-size:12px;white-space:nowrap}.op-trainer-badge-top b{color:#fff;font-size:18px}.op-trainer-badge-line{font-size:13px;line-height:1.25;max-width:100%;overflow:hidden;text-overflow:ellipsis}@media (max-width:520px){.op-trainer-badge{max-width:calc(100% - 120px);min-width:0;padding:3px 8px}}.op-trainer-title{font-weight:600;margin:0 0 6px}.op-trainer-counters{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 8px}.op-trainer-counters>div{background:#f6f8fa;background:var(--op-surface-2,#f6f8fa);border-radius:8px;flex:1 1 90px;padding:6px 10px}.op-trainer-counters small{color:#66727f;color:var(--op-muted,#66727f);display:block;font-size:12px}.op-trainer-counters b{font-feature-settings:"tnum";font-size:26px;font-variant-numeric:tabular-nums;line-height:1.1}.op-trainer-counters i{color:#66727f;color:var(--op-muted,#66727f);font-size:14px;font-style:normal;font-weight:400}.feature-card .op-trainer-field{align-items:stretch;display:flex;flex-direction:column;font-size:13px;gap:3px}.feature-card .op-trainer-field>span{color:#66727f;color:var(--op-muted,#66727f)}.op-trainer-field input,.op-trainer-field select{font:inherit;min-width:0;padding:5px 8px}.op-trainer-grid{grid-gap:10px;align-items:end;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));margin-bottom:10px}.op-trainer-faults{color:#b86e00;color:var(--op-warn,#b86e00);font-weight:600}.op-trainer-faults,.op-trainer-tips{margin:0 0 8px;padding-left:18px}.op-trainer-tips li{margin-bottom:4px}.op-trainer-table{border-collapse:collapse;font-size:13px;width:100%}.op-trainer-table td,.op-trainer-table th{border-bottom:1px solid #d9dee5;border-bottom:1px solid var(--op-line,#d9dee5);padding:5px 6px;text-align:left;vertical-align:top}.op-trainer-table th{color:#66727f;color:var(--op-muted,#66727f);font-weight:500}.op-trainer-table td:nth-child(-n+3){font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.op-trainer-total{background:#e8f5ee;border-radius:8px;color:#14532d;margin:0 0 8px;padding:8px 10px}.op-home-title{align-items:center;display:inline-flex;gap:8px;min-width:0}.op-home-dot{border:1px solid #d9dee5;border:1px solid var(--op-line,#d9dee5);border-radius:50%;flex:none;height:14px;width:14px}.op-home-swatches{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}.op-home-picker,.op-home-swatches button{border:1px solid #00000040;border-radius:50%;cursor:pointer;height:32px;padding:0;width:32px}.op-home-swatches button:disabled{cursor:default;opacity:.4}.op-home-swatches button:focus-visible{outline:3px solid #8ab4ff;outline-offset:2px}.op-home-picker{background:conic-gradient(red,#ff0,lime,cyan,blue,#f0f,red);display:inline-flex;overflow:hidden}.op-home-picker input{cursor:pointer;height:100%;opacity:0;width:100%}.op-home-names{margin-top:6px}.op-home-names summary{color:#66727f;color:var(--op-muted,#66727f);cursor:pointer;margin-bottom:8px}.op-home-list{list-style:none;margin:0 0 10px;padding:0}.op-home-list>li{align-items:center;border-bottom:1px solid #d9dee5;border-bottom:1px solid var(--op-line,#d9dee5);display:flex;flex-wrap:wrap;gap:6px 12px;justify-content:space-between;padding:8px 0}.op-home-list>li.off{opacity:.6}.op-home-list-main{display:flex;flex-direction:column;min-width:0}.op-home-list-main small{color:#66727f;color:var(--op-muted,#66727f)}.op-home-sched{align-items:center;display:flex;flex-wrap:wrap;gap:6px 10px}.op-home-sched input[type=time],.op-home-sched select{font:inherit;padding:4px 6px}.op-home-dot-sm{display:inline-block;height:10px;margin-right:3px;vertical-align:-1px;width:10px}.login-page{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;justify-content:center;min-height:100vh;padding:16px}.login-card{background:#fff;border-radius:10px;box-shadow:0 10px 30px #0003;display:flex;flex-direction:column;max-width:360px;padding:32px 28px;width:100%}.login-card h1{color:#333;font-size:1.6rem;font-weight:400;text-align:center}.login-subtitle{color:#777;font-size:.95rem;margin:6px 0 24px;text-align:center}.login-card label{color:#555;font-size:.85rem;margin-bottom:6px}.login-card input{border:1px solid #d0d5dd;border-radius:5px;font-size:1rem;margin-bottom:16px;padding:10px 12px}.login-card input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea33;outline:none}.login-error{background:#fdecea;border-radius:5px;color:#b42318;font-size:.9rem;margin-bottom:16px;padding:10px 12px}.login-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:1rem;margin:0;padding:11px}.login-btn:disabled{cursor:default;opacity:.6}.auth-loading{color:#777;padding:40px;text-align:center}
/*# sourceMappingURL=main.aa401528.css.map*/