/* Constructor scene. The controls stay on a flat coordinate plane for real dragging. */
.constructor-scene .ds-model{position:absolute;width:480px;height:480px;left:50%;top:50%;margin:-240px;transform:scale(var(--scene-scale,1));transform-origin:center;isolation:isolate}
.constructor-scene .ds-board-shadow{position:absolute;left:96px;top:346px;width:305px;height:38px;border-radius:50%;background:#604d8f2b;filter:blur(18px);transform:rotate(-5deg);pointer-events:none}
.constructor-scene .ds-board{position:absolute;left:69px;top:92px;width:340px;height:294px;border-radius:16px;background:linear-gradient(145deg,#fff,#fdfcff);border:1px solid #fff;box-shadow:0 2px 0 #dfd8ec,0 5px 0 #d9d0e8,0 8px 0 #cec4dd,0 24px 46px #50376620;overflow:hidden;pointer-events:none}
.constructor-scene .ds-board-head{height:40px;padding:14px 19px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.5px;font-weight:750;color:#95869f;border-bottom:1px solid #f0ebf7}
.constructor-scene .ds-grid{position:absolute;inset:56px 14px 30px 25px;background-image:radial-gradient(#c8bbdb 1px,transparent 1px);background-size:15px 15px;opacity:.43;mask-image:linear-gradient(#000,transparent)}
.constructor-scene .ds-ruler{position:absolute;opacity:.65}
.constructor-scene .ds-ruler-top{top:41px;left:24px;right:0;height:8px;background:repeating-linear-gradient(90deg,#beaed2 0 1px,transparent 1px 15px)}
.constructor-scene .ds-ruler-left{top:55px;bottom:29px;left:12px;width:8px;background:repeating-linear-gradient(0deg,#beaed2 0 1px,transparent 1px 15px)}
.constructor-scene .ds-baseline{position:absolute;top:71px;bottom:34px;left:49px;border-left:1px dashed #ab91d15c}
.constructor-scene .ds-board-foot{position:absolute;left:21px;right:20px;bottom:13px;display:flex;justify-content:space-between;font-size:8px;font-weight:700;letter-spacing:1.6px;color:#b3a8c0}
.constructor-scene .design-piece{appearance:none;position:absolute;padding:0;border:0;background:none;transform:translate(var(--drag-x,0px),var(--drag-y,0px));cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;z-index:3;text-align:left;font:inherit;color:#272136;border-radius:5px;outline-offset:8px}
.constructor-scene .design-piece:active,.constructor-scene .design-piece.is-dragging{cursor:grabbing;z-index:6}
.constructor-scene .design-piece:focus-visible{outline:2px solid #7150c5;z-index:6}
.constructor-scene .design-piece-face{position:relative;display:flex;flex-direction:column;box-sizing:border-box;border:1.5px solid #a48bd7;background:#fff;box-shadow:0 3px 0 #e3d9f0,0 11px 24px #6b468524;border-radius:3px;transition:box-shadow .2s,border-color .2s;pointer-events:none}
.constructor-scene .design-piece:hover .design-piece-face,.constructor-scene .design-piece:focus-visible .design-piece-face,.constructor-scene .design-piece.is-dragging .design-piece-face{border-color:#805ac7;box-shadow:0 4px 0 #ded0ee,0 15px 30px #6b468535}
.constructor-scene .ds-piece-caption{position:absolute;left:-1px;top:-17px;background:#a48bd7;border-radius:3px 3px 0 0;padding:3px 7px 2px;font-size:8px;letter-spacing:.8px;font-weight:750;color:white;line-height:11px;white-space:nowrap}
.constructor-scene .ds-text-piece{left:118px;top:167px;width:247px;height:61px}
.constructor-scene .ds-text-face{height:61px;padding:11px 15px}
.constructor-scene .ds-text-face strong{font-size:31px;letter-spacing:-1.2px;line-height:36px;font-weight:750}
.constructor-scene .ds-barcode-piece{left:117px;top:272px;width:180px;height:69px}
.constructor-scene .ds-barcode-face{height:69px;padding:10px 12px 7px;align-items:center}
.constructor-scene .ds-barcode-face canvas.barcode{display:block;width:151px;height:35px;object-fit:fill;max-width:100%;margin:0}
.constructor-scene .ds-code-text{font-size:7px;letter-spacing:2.2px;line-height:14px;color:#655b73}
.constructor-scene .ds-size-piece{left:324px;top:277px;width:55px;height:61px}
.constructor-scene .ds-size-face{height:61px;align-items:center;justify-content:center;background:#f9f5ff}
.constructor-scene .ds-size-face strong{font-size:30px;line-height:1;font-weight:650}
.constructor-scene .ds-handle{position:absolute;width:6px;height:6px;background:#fff;border:1px solid #9771d0}
.constructor-scene .ds-handle-tl{left:-4px;top:-4px}.constructor-scene .ds-handle-tr{right:-4px;top:-4px}.constructor-scene .ds-handle-bl{left:-4px;bottom:-4px}.constructor-scene .ds-handle-br{right:-4px;bottom:-4px}
.constructor-scene .ds-tool{position:absolute;top:55px;left:26px;display:flex;align-items:center;gap:15px;padding:13px 18px;border:1px solid #fff;border-radius:14px;background:linear-gradient(130deg,#fff,#ede5fa);box-shadow:0 4px 0 #d7c7e7,0 16px 25px #644e811a;transform:rotate(-9deg);color:#8260b6;font-size:21px;font-weight:700;pointer-events:none;z-index:4}
.constructor-scene .ds-tool i{height:17px;width:1px;background:#daceea}
.constructor-scene .ds-cursor{position:absolute;left:370px;top:212px;display:flex;align-items:flex-end;filter:drop-shadow(0 5px 5px #68499926);pointer-events:none;z-index:5;transform:translateZ(15px)}
.constructor-scene .ds-cursor span{padding:6px 10px;margin:0 0 -5px -9px;border-radius:5px;background:#7861d9;color:white;font-size:11px;font-weight:700}
.constructor-scene .ds-hint{position:absolute;left:0;right:0;top:426px;display:flex;justify-content:center;align-items:center;gap:9px;color:#877394;font-size:12px;letter-spacing:.1px;pointer-events:none}
.constructor-scene .ds-hint>span{font-size:18px;color:#9c80b9}
.constructor-scene.is-active .ds-board{animation:ds-board-entry .8s cubic-bezier(.16,1,.3,1) both}
.constructor-scene.is-active .ds-text-face{animation:ds-text-entry .95s .07s cubic-bezier(.16,1,.3,1) both}
.constructor-scene.is-active .ds-barcode-face{animation:ds-code-entry 1s .15s cubic-bezier(.16,1,.3,1) both}
.constructor-scene.is-active .ds-size-face{animation:ds-size-entry 1s .22s cubic-bezier(.16,1,.3,1) both}
.constructor-scene.is-active .ds-tool{animation:ds-tool-entry .95s .1s cubic-bezier(.16,1,.3,1) both}
.constructor-scene.is-active .ds-cursor{animation:ds-cursor-entry 1.1s .25s cubic-bezier(.16,1,.3,1) both}
@keyframes ds-board-entry{from{opacity:0;transform:translate(20px,75px) rotate(8deg) scale(.85)}to{opacity:1;transform:translate(0,0) rotate(0) scale(1)}}
@keyframes ds-text-entry{from{opacity:0;transform:translate(-160px,-110px) rotate(-24deg)}to{opacity:1;transform:translate(0,0) rotate(0)}}
@keyframes ds-code-entry{from{opacity:0;transform:translate(180px,90px) rotate(26deg)}to{opacity:1;transform:translate(0,0) rotate(0)}}
@keyframes ds-size-entry{from{opacity:0;transform:translate(120px,-100px) rotate(32deg) scale(.6)}to{opacity:1;transform:translate(0,0) rotate(0) scale(1)}}
@keyframes ds-tool-entry{from{opacity:0;transform:translate(-65px,-75px) rotate(-35deg)}to{opacity:1;transform:translate(0,0) rotate(-9deg)}}
@keyframes ds-cursor-entry{from{opacity:0;transform:translate(90px,65px) rotate(15deg)}to{opacity:1;transform:translate(0,0) rotate(0)}}
@media(prefers-reduced-motion:reduce){.constructor-scene .flight-item{animation:none!important;transition:none!important}}
