/* Изометрическая сцена и пины устройств (общие для редактора и панели) */
.iso-wrap{position:relative;overflow:hidden;--ease:cubic-bezier(.22,.8,.26,1)}
.iso-plan{position:absolute;left:50%;top:50%;transform-style:preserve-3d}
.iso-plan *{transform-style:preserve-3d}
.iso-shadow{position:absolute;left:0;top:0;transform:translateZ(-20px);box-shadow:30px 30px 70px 30px rgba(0,0,0,.55);border-radius:20px}
.iso-slab{position:absolute;border-radius:6px;background:#1A202A;transform:translateZ(-2px);box-shadow:0 0 0 1px rgba(255,255,255,.03)}
.iso-room{position:absolute}
.iso-floor{position:absolute;inset:0;overflow:hidden;cursor:pointer;background:#161C25;transition:filter .4s}
.iso-floor.wood{background:#1A1F27 repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0 1px,transparent 1px 22px)}
.iso-floor.tile{background-color:#171C24;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:20px 20px}
.iso-floor.concrete{background:#191D23 radial-gradient(rgba(255,255,255,.03) 1px,transparent 1.5px) 0 0/9px 9px}
.iso-floor:hover{filter:brightness(1.25)}
.iso-tint{position:absolute;inset:0;opacity:0;transition:opacity .8s var(--ease),background-color 2s}
.iso-glow{position:absolute;border-radius:50%;pointer-events:none;opacity:0;mix-blend-mode:screen;transform:scale(.6);transition:opacity 1.4s var(--ease),background 1.2s,transform 1.4s var(--ease)}
.iso-glow.on{transform:scale(1)}
.iso-sel{position:absolute;inset:0;box-shadow:inset 0 0 0 2px rgba(127,184,255,0);transition:box-shadow .4s}
.iso-room.selected .iso-sel{box-shadow:inset 0 0 0 3px rgba(127,184,255,.85),inset 0 0 50px rgba(79,143,224,.25)}
.iso-alarm{position:absolute;inset:0;pointer-events:none}
.iso-room.alarm .iso-alarm{animation:isoAlarm 1.1s infinite}
@keyframes isoAlarm{0%,100%{background:rgba(255,90,95,.05)}50%{background:rgba(255,90,95,.32)}}
.iso-flabel{position:absolute;transform:translate(-50%,-50%);font:800 12px/1 var(--font,system-ui);letter-spacing:1.4px;text-transform:uppercase;color:rgba(232,236,242,.36);pointer-events:none;white-space:nowrap}
.iso-wall,.iso-cap,.iso-furn,.iso-door,.iso-leaf,.iso-glass,.iso-win{pointer-events:none}
.iso-wall{position:absolute;transform-origin:0 0;background:linear-gradient(180deg,#232A35,#2E3645)}
.iso-wall.lit{background:linear-gradient(180deg,#29303D,#384254)}
.iso-wall.ext{background:linear-gradient(180deg,#262D39,#343D4E)}
.iso-wall.ext.lit{background:linear-gradient(180deg,#2C3442,#3F4A5E)}
.iso-cap{position:absolute;background:#56627A}
.iso-furn{position:absolute}
.iso-furn i{position:absolute;display:block}
.iso-door,.iso-win{position:absolute;width:0;height:0;transform-origin:0 0;transition:transform 1.3s var(--ease)}
.iso-leaf{position:absolute;left:1px;top:0;transform-origin:0 0;transform:rotateX(90deg);background:linear-gradient(180deg,#3C4659,#4C5870);border:1px solid #5d6a85}
.iso-glass{position:absolute;left:0;top:0;transform-origin:0 0;background:linear-gradient(180deg,rgba(127,184,255,.2),rgba(127,184,255,.45));border:1px solid rgba(160,205,255,.6);transition:transform 1.2s var(--ease)}

.iso-pins{position:absolute;inset:0;pointer-events:none;z-index:3}
.pinw{position:absolute;width:0;height:0;transition:opacity .45s var(--ease)}
.pinw.dim{opacity:.12}
.pinw.dim .chip{pointer-events:none}
.pinw .dot{position:absolute;left:-6px;top:-3px;width:12px;height:6px;border-radius:50%;background:rgba(0,0,0,.45)}
.pinw .stem{position:absolute;left:-1px;bottom:0;width:2px;height:var(--L);background:linear-gradient(rgba(255,255,255,.55),rgba(255,255,255,.08))}
.chip{position:absolute;left:0;bottom:var(--L);transform:translate(-50%,0);pointer-events:auto;display:flex;align-items:center;gap:7px;cursor:pointer;color:#E8ECF2;font:inherit;
  height:36px;padding:3px;border-radius:18px;background:rgba(17,21,28,.86);border:1px solid rgba(255,255,255,.1);
  backdrop-filter:blur(6px);box-shadow:0 6px 16px rgba(0,0,0,.45);transition:transform .3s var(--ease),border-color .3s,box-shadow .5s,background .4s;white-space:nowrap}
.chip:hover{transform:translate(-50%,-3px)}
.chip .ic{position:relative;width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:var(--c,#9AA3B5);background:color-mix(in srgb,var(--c,#9AA3B5) 16%,transparent);transition:color .6s,background .6s}
.chip .ic svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.chip .ic::after{content:"";position:absolute;inset:-10px;border-radius:50%;background:radial-gradient(circle,var(--glow,transparent) 0%,transparent 70%);opacity:0;transition:opacity 1.2s}
.chip.lit .ic::after{opacity:1}
.chip.lit{border-color:color-mix(in srgb,#F5B544 45%,transparent)}
.chip .tx{display:flex;align-items:baseline;gap:6px;padding-right:9px;font-variant-numeric:tabular-nums}
.chip .tx b{font-size:15px;font-weight:800}
.chip .tx small{font-size:11px;color:#909AAC;font-weight:600}
.chip.selected{border-color:#7FB8FF;box-shadow:0 0 0 3px rgba(127,184,255,.25),0 8px 20px rgba(0,0,0,.5)}
.chip.alert{border-color:#FF5A5F;animation:pinAlarm 1s infinite}
@keyframes pinAlarm{0%,100%{box-shadow:0 0 0 0 rgba(255,90,95,.6)}50%{box-shadow:0 0 0 10px rgba(255,90,95,0)}}
.chip .badge{position:absolute;top:-3px;right:-3px;width:10px;height:10px;border-radius:50%;background:#FF8A4C;border:2px solid #11151c;opacity:0;transition:opacity .5s}
.chip.heating .badge{opacity:1;animation:isoBlink 1.6s infinite}
.chip.cooling .badge{opacity:1;background:#5AA9FF}
@keyframes isoBlink{50%{opacity:.35}}
@media (prefers-reduced-motion:reduce){.iso-wrap *{animation-duration:.01ms!important;transition-duration:.01ms!important}}
.iso-cap.bld{background:#64718A}
.iso-wall.bld{background:linear-gradient(180deg,#2B3341,#3E485C)}
.iso-wall.bld.lit{background:linear-gradient(180deg,#323B4B,#4A566D)}
