.shelf{max-width:1180px;margin:0 auto;padding:20px 16px 72px}
.shelf-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.shelf h2{margin:28px 0 8px}
.shelf-actions{display:flex;align-items:center;gap:12px;margin:12px 0;flex-wrap:wrap}
.camera-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.cam{border:2px solid var(--line);border-radius:10px;background:#fff;padding:0;text-align:left;cursor:pointer;overflow:hidden;color:var(--ink)}
.cam.selected{border-color:var(--green);box-shadow:0 0 0 3px var(--pale)}
.cam.best::after{content:"Mejor candidata";display:block;background:var(--green);color:#fff;font-size:12px;padding:3px 10px}
.cam img,.cam .noimg{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--pale)}
.cam .noimg{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:13px}
.cam .meta{padding:8px 10px;font-size:13px}
.cam .meta strong{display:block;font-size:14px}
.score{display:inline-block;padding:1px 8px;border-radius:99px;background:var(--pale);color:var(--green);font-weight:700;font-size:12px}
.score.low{background:#f4ead8;color:var(--amber)}
.start-box{margin-top:8px}
.live-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--line)}
.live-bar .spacer{flex:1}
.pill{display:inline-flex;align-items:center;gap:6px;padding:3px 12px;border-radius:99px;background:var(--pale);color:var(--green);font-weight:700;font-size:13px}
.pill::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--green);animation:pulse 1.6s infinite}
.pill.off{background:#eee;color:var(--muted)}.pill.off::before{background:var(--muted);animation:none}
.pill.bad{background:#f7e3df;color:#a33a2c}.pill.bad::before{background:#a33a2c;animation:none}
@keyframes pulse{50%{opacity:.25}}
.headline{margin:18px 0;padding:16px 20px;border-radius:12px;background:var(--pale);font-size:18px;line-height:1.5}
.headline p{margin:2px 0}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:8px}
.kpi{border:1px solid var(--line);border-radius:10px;background:#fff;padding:12px 14px}
.kpi strong{display:block;font-size:28px;line-height:1.1}.kpi span{font-size:12px;color:var(--muted)}
.kpi.warn strong{color:var(--amber)}
.shelf-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px;align-items:start}
.shelf-grid.two{grid-template-columns:1fr 1fr}

.bars .row{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr) auto;gap:10px;align-items:center;margin:6px 0;font-size:14px}
.bars .track{height:10px;border-radius:6px;background:var(--pale);overflow:hidden}
.bars .fill{display:block;height:100%;background:var(--green)}
.bars .fill.amber{background:var(--amber)}
.bars .num{font-variant-numeric:tabular-nums;font-weight:700}
.feed{display:grid;gap:12px}
.alert-card{border:1px solid var(--line);border-left:5px solid var(--green);border-radius:10px;background:#fff;padding:12px 14px}
.alert-card.warn{border-left-color:var(--amber)}
.alert-card h3{margin:0 0 4px;font-size:16px}
.alert-card .sub{font-size:12px;color:var(--muted)}
.ba{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.ba figure{margin:0}.ba img{width:100%;border-radius:6px;border:1px solid var(--line)}.ba figcaption{font-size:11px;color:var(--muted);text-align:center}
.chip{display:inline-block;padding:0 8px;border-radius:99px;background:#eee;font-size:11px;margin-left:6px}
.empty-note{color:var(--muted);padding:12px 0}
.shelf-watch{display:flex;gap:8px;align-items:center;padding:4px 0}
@media(max-width:820px){.shelf-grid,.shelf-grid.two{grid-template-columns:1fr}.bars .row{grid-template-columns:1fr 1fr auto}}
.waiting .shelf-grid,.waiting #kpis,.waiting #feed,.waiting #feed+*{display:none}.waiting .headline{opacity:.8}

.frame-wrap{position:relative;line-height:0}
.frame-wrap img{display:block;width:100%;height:auto;border-radius:10px;border:1px solid var(--line)}
.overlay{position:absolute;left:0;top:0;pointer-events:none;border-radius:10px}
.editor-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px;align-items:start}
.editor-canvas{width:100%;height:auto;border-radius:10px;border:1px solid var(--line);cursor:crosshair;touch-action:none;background:#000}
.cell-fields{display:grid;gap:6px;margin:12px 0;max-height:360px;overflow:auto}
.cell-row{display:grid;grid-template-columns:28px minmax(0,1.4fr) minmax(0,1fr);gap:6px;align-items:center}
.cell-idx{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:6px;background:#1c1c1c;color:#ffd700;font-weight:700;font-size:13px}
.recs{padding-left:20px;line-height:1.5}
.table-wrap{overflow:auto}
.table-wrap table{width:100%;border-collapse:collapse;font-size:14px}
.table-wrap th,.table-wrap td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:left}
.button-link{display:inline-block;padding:6px 12px;border:1px solid var(--line);border-radius:8px;color:var(--ink);text-decoration:none;font-size:14px;background:#fff}
label.inline{display:inline-flex;align-items:center;gap:6px;font-size:14px}
.shelf .spacer{flex:1}
@media(max-width:820px){.editor-grid{grid-template-columns:1fr}}

/* Store map */
.storemap-bar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:8px 0 12px}
.storemap-bar p{margin:0;flex:1;min-width:240px}
.floor-toggle{display:flex;gap:6px}.floor-toggle .on{background:var(--green);color:#fff;border-color:var(--green)}
.storemap-body{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start}
.storemap-body:has(.drawer:not([hidden])){grid-template-columns:minmax(0,1.5fr) minmax(320px,1fr)}
@media(max-width:900px){.storemap-body:has(.drawer:not([hidden])){grid-template-columns:minmax(0,1fr)}}
.plan-stage{border:1px solid var(--line);border-radius:12px;background:#fff;padding:8px}
.plan{display:block;width:100%;height:auto;touch-action:none;user-select:none}
.plan-floor{fill:#fbfcfb;stroke:#3b4a4c;stroke-width:.12}
.plan-room{fill:#f1f5f2;stroke:#9fb0aa;stroke-width:.06}
.plan-furniture{fill:#e8ede9;stroke:#9fb0aa;stroke-width:.05}
.plan-column{fill:#b9c2bd;stroke:#7f8b86;stroke-width:.04}
.plan-stairs{fill:#fff;stroke:#7f8b86;stroke-width:.06}.plan-step{stroke:#9fb0aa;stroke-width:.04}
.plan-rack{fill:#d9e3f4;stroke:#5b78a8;stroke-width:.05}
.plan-door{fill:none;stroke:#6aa84f;stroke-width:.06}
.plan-label{font-size:.42px;fill:var(--muted);pointer-events:none}
.cam-node{cursor:grab}.cam-node:active{cursor:grabbing}
.cam-dot{fill:#fff;stroke:#7b8a86;stroke-width:.1}
.cam-node.watched .cam-dot{fill:var(--pale);stroke:var(--green)}
.cam-node.offline .cam-dot{stroke:#a33a2c}
.cam-node.selected .cam-dot,.cam-node:focus .cam-dot{stroke:var(--ink);stroke-width:.16}
.cam-num{font-size:.46px;font-weight:700;fill:var(--ink);pointer-events:none}
.badge-alert{fill:var(--amber)}.badge-people{fill:var(--green)}.badge-text{font-size:.34px;font-weight:700;fill:#fff;pointer-events:none}
.drawer{border:1px solid var(--line);border-radius:12px;background:#fff;padding:14px;max-height:calc(100vh - 140px);overflow:auto}
.drawer-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.drawer-head h2{margin:0;font-size:18px}
.drawer-img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:8px;margin:10px 0 4px;background:var(--pale)}
.drawer .noimg{display:flex;align-items:center;justify-content:center;aspect-ratio:16/9;background:var(--pale);border-radius:8px;color:var(--muted);margin:10px 0 4px}
.status-list{margin:8px 0;padding-left:18px}
.drawer button.wide{width:100%;text-align:left;margin-top:8px}
.drawer-section{padding:4px 0 8px}.drawer-section .shelf{padding:0}
.layers{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.chip{color:var(--ink);display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--line);border-radius:99px;background:#fff;cursor:pointer;font-size:13px}.chip input{width:auto}
.layers select{width:auto;padding:4px 8px;border:1px solid var(--line);border-radius:8px;background:#fff}
.plan-heat{fill:#d9822b;pointer-events:none}
.plan-trail{fill:none;stroke:#146c50;stroke-width:.07;stroke-opacity:.35;stroke-linejoin:round;pointer-events:none}
.plan-fov{fill:#3b7dd8;fill-opacity:.12;stroke:#3b7dd8;stroke-opacity:.5;stroke-width:.05;pointer-events:none}
.plan.picking{cursor:crosshair}
.calib-marker circle{fill:#d9822b;stroke:#fff;stroke-width:.06}.calib-marker text{font-size:.3px;font-weight:700;fill:#fff;pointer-events:none}
.calib-photo{position:relative;cursor:crosshair;border-radius:8px;overflow:hidden;line-height:0}
.calib-photo img{width:100%;display:block;aspect-ratio:16/9;object-fit:cover;user-select:none;-webkit-user-drag:none}
.calib-dot{position:absolute;transform:translate(-50%,-50%);width:22px;height:22px;border-radius:50%;background:#d9822b;color:#fff;border:2px solid #fff;font-size:12px;font-weight:700;line-height:18px;text-align:center;pointer-events:none}
.calib-dot.pending{background:#3b7dd8}
.plan-column{display:grid;gap:12px;min-width:0}
.hotspot circle{fill:#e0b020;stroke:#fff;stroke-width:.07}.hotspot text{font-size:.4px;font-weight:700;fill:#3a2d00;pointer-events:none}
.shelf-frame{fill:#fff;stroke:#5a6b66;stroke-width:.05}.shelf-name{font-size:.3px;fill:var(--muted);pointer-events:none}
.shelf-obj{cursor:grab}.shelf-obj:active{cursor:grabbing}
.shelf-cell{fill:#d9822b;stroke:#b9c2bd;stroke-width:.02;cursor:pointer}.shelf-cell.empty{stroke:#a33a2c;stroke-width:.05}.shelf-cell.selected{stroke:var(--ink);stroke-width:.06}
.plan-trail.live{stroke-opacity:.8;stroke-width:.09}.replay-dot{fill:#c0392b;stroke:#fff;stroke-width:.05}
.replay-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.replay-bar input[type=range]{flex:1;min-width:160px}
.replay-bar[hidden]{display:none}
.cell-info{padding:10px 14px;border:1px solid var(--line);border-left:5px solid #d9822b;border-radius:10px;background:#fff}
.insights{border:1px solid var(--line);border-radius:12px;background:#fff;padding:4px 18px 12px}.insights h2{margin:14px 0 6px;font-size:17px}.insights ul{margin:0;padding-left:20px}.insights li{margin:4px 0}
.ask-row{display:flex;gap:8px;margin:10px 0}.ask-row input{flex:1;padding:9px 12px;border:1px solid var(--line);border-radius:8px}
.ask-answer{margin:6px 0 10px}.ask-answer p{margin:6px 0}.ask-answer ul{margin:4px 0;padding-left:20px}
.chip:disabled{opacity:.45;cursor:not-allowed}
