/* Устройства заполняют высоту окна, не обрезая рабочий экран. */
.device-scene,.device-scene.laptop-scene{height:100dvh;min-height:0;padding:0 20px;gap:4vw}.phone-device{height:100dvh;max-height:none;min-height:0;width:min(420px,47dvh,calc(100vw - 12px));border-radius:32px;padding:8px}.laptop-device{height:calc(100dvh - 20px);min-height:0;max-height:none;width:min(1400px,calc(100vw - 30px));padding:10px 10px 16px;align-self:flex-start}.laptop-keyboard{height:20px;bottom:-20px;left:0;width:100%}.device-scene .back-room{z-index:20;top:8px;left:8px}.hand{pointer-events:none}.laptop-device .game-v3{max-width:none}.device-display{min-height:0}.game-v3 .play-surface{min-height:0}.back-room{box-shadow:2px 3px #0005}
.drag-ghost{transform:translate(-8px,-8px);padding:6px;display:grid;place-items:center;box-sizing:border-box;font-size:11px;border:2px solid #fff4ce;color:#182e42;background-color:#efc477c9;background-image:linear-gradient(to right,#26394b70 1px,transparent 1px),linear-gradient(to bottom,#26394b70 1px,transparent 1px);background-size:var(--ghost-cell-x) var(--ghost-cell-y);border-radius:3px;box-shadow:5px 6px 0 #192f4350}.design-cell.drop-preview{background:#7be4ba;box-shadow:inset 0 0 0 2px #1c735c}.design-cell.drop-invalid{background:#ee8a9b;box-shadow:inset 0 0 0 2px #9e3750}
.game-coder .play-surface{background:radial-gradient(ellipse at top,#417080,#172b40);padding:8px;overflow:auto}.circuit-wrap{width:100%;min-height:0;flex:1;display:flex;justify-content:center;align-items:center}.circuit-board{width:100%;height:100%;max-height:100%;aspect-ratio:1;touch-action:none;user-select:none;overflow:visible}.circuit-board [role=button]:focus{outline:none;filter:drop-shadow(0 0 4px white)}.circuit-tools{display:flex;align-items:center;gap:12px;flex-shrink:0;color:#f8e4bc;font-size:10px}.circuit-tools button{padding:7px}.server-caption{flex-shrink:0;color:#fff0cb;font-size:12px}.server-caption small{display:block;font-size:10px;margin:5px 0 8px;line-height:1.5}.circuit-hint{animation:hint-flow 1s linear infinite}@keyframes hint-flow{to{stroke-dashoffset:-16}}
.office-tutorial{position:absolute;inset:10% 6% auto;z-index:5;background:#fff1ce;border:3px solid #263b50;padding:22px;box-shadow:7px 8px #172d4d66;transform:rotate(-1deg);font-size:13px;color:#253c50}.office-tutorial b{font-size:18px}.office-tutorial p{line-height:1.7}.office-tutorial button{background:#86d6c4;color:#20374c;border:2px solid #20374c;padding:12px;font-weight:800}.game-manager .play-surface{position:relative}.tutorial-highlight{outline:4px solid #ffd878;outline-offset:3px;animation:tutorial-pulse 1s infinite alternate}@keyframes tutorial-pulse{to{outline-color:#fff6d8;box-shadow:0 0 20px #ffdc79}}
.copy-tap-mode{grid-column:1/-1;min-height:120px;background:#f6d48d;border:3px solid #263c50;padding:18px;display:grid;gap:12px;text-align:center;pointer-events:none}.copy-tap-mode span{font-size:12px}.copy-tap-mode strong{font-size:26px;letter-spacing:8px}
/* Опорная поза всегда стоя: отдых не создаёт невидимого стула. */
.room-character{transform:none;transition:transform 2.5s ease-in-out;filter:drop-shadow(3px 4px 2px #12233766)}.room-character[data-idle=window]{transform:translate(48%,-6%) scale(.94)}.room-character[data-idle=desk]{transform:translate(22%,-2%) scale(.98)}.room-character[data-idle=rest]{transform:translate(0,0)}.room-character[data-idle=rest]>.avatar{transform:rotate(-2deg);transform-origin:50% 95%}.room-character[data-idle=stretch]>.avatar,.room-character[data-idle=wave]>.avatar{animation:none}.character-eyes{transform-box:fill-box;transform-origin:center;animation:character-blink 5.8s infinite}@keyframes character-blink{0%,44%,48%,100%{transform:scaleY(1)}46%{transform:scaleY(.08)}}.character-toast{display:flex!important;align-items:center;gap:14px;max-width:min(520px,92vw);text-align:left;padding:12px 20px!important;background:#fff1d3!important;color:#25374a!important;border:3px solid #26394b!important}.toast-avatar{width:68px;height:70px;overflow:hidden;flex-shrink:0;background:#9dcdbd;border:2px solid #26394b;border-radius:12px}.toast-avatar .avatar{width:68px;height:75px}.character-toast b,.character-toast span{display:block}.character-toast b{font-size:12px;margin-bottom:5px;color:#416e68}.character-toast span{line-height:1.5}
@media(max-width:720px){.device-scene,.device-scene.laptop-scene{padding:0}.phone-device{width:calc(100vw - 8px);height:100dvh;max-height:none;min-height:0;border-radius:25px}.laptop-device{width:calc(100vw - 8px);height:calc(100dvh - 17px);min-height:0}.device-scene .back-room{top:3px;left:12px;padding:5px 8px;font-size:9px}.phone-device .device-status{padding-left:110px}.laptop-device .device-status{padding-left:110px}.game-coder .play-surface{padding:4px}.room-character[data-idle=window]{transform:translate(34%,-5%) scale(.94)}.room-character[data-idle=rest]{transform:none}.design-layout{gap:8px}.drag-piece{padding:6px}.game-designer .play-surface{overflow:auto}}
@media(prefers-reduced-motion:reduce){.character-eyes,.tutorial-highlight,.circuit-hint{animation:none}.room-character{transition:none}}
.device-scene.laptop-scene{justify-content:flex-start}.laptop-device .device-status{padding-left:130px}
