:root{--ink:#080710;--panel:#151426;--paper:#fffaf0;--purple:#a76dff;--pink:#ff4f9d;--yellow:#ffe45e;--cyan:#43e7f4;--green:#50e38b;--muted:#b7b4cf;color:var(--paper);background:var(--ink);font-family:Trebuchet MS,system-ui,sans-serif}*{box-sizing:border-box}html,body{min-height:100%;margin:0}button,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}body{background:radial-gradient(circle at 20% 5%, #a76dff2e, transparent 31rem), radial-gradient(circle at 85% 80%, #43e7f41f, transparent 28rem), var(--ink);min-height:100vh}h1,h2,p{margin-top:0}h1,h2,.primary-button,.action-tile>span{font-family:Arial Rounded MT Bold,Trebuchet MS,system-ui,sans-serif}.eyebrow{color:var(--cyan);letter-spacing:.18em;text-transform:uppercase;font-size:.8rem;font-weight:900}.primary-button,.secondary-button,.delete-button{cursor:pointer;border:0;border-radius:1rem;justify-content:center;align-items:center;min-height:3.5rem;padding:.85rem 1.35rem;font-weight:900;text-decoration:none;display:inline-flex}.primary-button{color:#150c26;background:var(--yellow);box-shadow:0 .45rem #b99200,0 .8rem 2rem #ffe45e33}.primary-button:hover{transform:translateY(-2px)}.primary-button:active{transform:translateY(3px);box-shadow:0 .15rem #b99200}.primary-button:disabled{opacity:.5;cursor:wait}.secondary-button{color:#fff;background:#34314d}.delete-button{color:#24050f;background:#ff6c88;width:100%;margin-top:1rem}.delete-button:disabled{opacity:.4;cursor:not-allowed}.setup-shell{grid-template-columns:1.05fr .95fr;place-items:center;min-height:100vh;padding:clamp(2rem,6vw,7rem);display:grid;overflow:hidden}.brand-lockup{z-index:2;max-width:44rem}.brand-lockup h1,.splash-copy h1{letter-spacing:-.06em;margin-bottom:2rem;font-size:clamp(4rem,9vw,9rem);line-height:.8}.brand-lockup h1 span,.splash-copy h1 span{color:var(--yellow);text-shadow:.08em .08em 0 var(--pink)}.lede{color:var(--muted);max-width:31rem;font-size:clamp(1.1rem,2vw,1.5rem)}.sparkle-button{min-width:14rem;margin-top:1rem;font-size:1.25rem}.status-line{color:var(--muted);min-height:1.5rem;margin-top:1.5rem}.orbit-art{aspect-ratio:1;width:min(42vw,36rem);position:relative}.orbit-line{border:2px solid #ffffff21;border-radius:50%;position:absolute;inset:12%;transform:rotate(-18deg)skew(8deg)}.shape{filter:drop-shadow(0 1rem 2rem #00000059);animation:5s ease-in-out infinite float;display:block;position:absolute}.shape-ball{aspect-ratio:1;background:radial-gradient(circle at 30% 24%,#fff,#43e7f4 13%,#167ccd 70%);border-radius:50%;width:34%;top:2%;right:5%}.shape-box{aspect-ratio:1;background:linear-gradient(135deg,#ff9f45,#ff4f6f);border-radius:14%;width:32%;animation-delay:-2s;bottom:7%;left:6%;transform:rotate(16deg)}.shape-pipe{border:2.2rem solid var(--purple);border-left-width:3rem;border-right-width:3rem;border-radius:50%;width:39%;height:20%;animation-delay:-1s;top:43%;left:31%;transform:rotate(-19deg)}@keyframes float{50%{translate:0 -1.2rem;rotate:5deg}}.presentation-shell{height:100vh;position:relative;overflow:hidden}.splash-view{grid-template-columns:1.15fr .85fr;align-items:center;height:100%;padding:5vw 7vw;display:grid}.thing-name{color:var(--purple);font-family:Arial Rounded MT Bold,Trebuchet MS,system-ui,sans-serif;font-size:clamp(1.8rem,3vw,3rem);font-weight:800}.qr-card{color:#171222;text-align:center;background:#fffaf0f7;border-radius:2rem;box-shadow:0 1.5rem 5rem #00000073,0 0 0 .3rem #ffffff14}.qr-card canvas{border-radius:.7rem;max-width:100%;margin:auto;display:block;height:auto!important}.qr-card p{margin:.8rem 0 .2rem;font-family:Arial Rounded MT Bold,Trebuchet MS,system-ui,sans-serif;font-weight:800}.qr-card.is-full{background:var(--yellow)}.qr-card strong{color:#6643aa}.qr-url{color:#625d70;overflow-wrap:anywhere;margin-top:.45rem;font-family:ui-monospace,Cascadia Mono,monospace;font-size:.68rem;line-height:1.25;display:block}.qr-card-large{justify-self:center;width:min(31vw,28rem);padding:2rem;font-size:1.4rem}.stage-view,.stage-canvas{width:100%;height:100%}.stage-view:after{content:"";pointer-events:none;border:1px solid #ffffff1f;border-radius:1.5rem;position:absolute;inset:.85rem;box-shadow:inset 0 0 5rem #05030e59}.stage-canvas canvas{width:100%;height:100%;display:block}.stage-title{text-shadow:0 .25rem 1rem #000;pointer-events:none;backdrop-filter:blur(8px);background:#0a0717ad;border:1px solid #ffffff17;border-radius:1rem;padding:.75rem 1rem;position:absolute;top:1.7rem;left:2rem}.stage-title p{color:var(--yellow);letter-spacing:.14em;margin-bottom:.22rem;font-size:.72rem;font-weight:900}.stage-title h1{margin-bottom:0;font-size:clamp(1.7rem,3vw,3rem);line-height:1}.qr-card-small{width:12rem;padding:.8rem;font-size:.85rem;position:absolute;top:1.7rem;right:1.7rem}.qr-card-small canvas{width:7.5rem!important}.qr-card-small .qr-url{font-size:.55rem}.stage-guide{pointer-events:none;backdrop-filter:blur(8px);background:#0d091bbd;border:1px solid #ffffff1f;border-radius:100px;justify-items:center;gap:.12rem;min-width:15rem;padding:.65rem 1.2rem;display:grid;position:absolute;bottom:1.55rem;left:50%;transform:translate(-50%);box-shadow:0 .8rem 2.5rem #0000004d}.stage-guide span{color:var(--cyan);letter-spacing:.14em;font-size:.65rem;font-weight:900}.stage-guide strong{font-family:Arial Rounded MT Bold,Trebuchet MS,system-ui,sans-serif;font-size:.98rem}.full-message{z-index:5;text-align:center;place-content:center;padding:2rem;display:grid;position:absolute;inset:0}.full-message h1{font-size:clamp(2.5rem,6vw,5rem)}.connection-banner{z-index:10;background:var(--yellow);color:#171222;border-radius:100px;padding:.8rem 1.4rem;font-weight:900;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}.controller-body{background:linear-gradient(#100d1f,#080710)}.controller-shell{width:min(100%,32rem);min-height:100dvh;padding:max(.8rem, env(safe-area-inset-top)) .75rem max(1.25rem, env(safe-area-inset-bottom));margin:auto;position:relative}.controller-header{padding:.55rem .35rem 1rem}.controller-header>p{color:var(--yellow);letter-spacing:.16em;margin-bottom:.4rem;font-size:.7rem;font-weight:900}.controller-header h1{margin-bottom:.55rem;font-size:clamp(1.75rem,7vw,2.5rem);line-height:1}.builder-pill{color:var(--cyan);background:#2b2742;border-radius:100px;padding:.4rem .8rem;font-weight:900;display:inline-flex}.phone-panel{background:#19172ae6;border:1px solid #ffffff17;border-radius:1.5rem;padding:1rem;box-shadow:0 1rem 3rem #00000040}.control-grid{gap:1rem;display:grid}.builder-controls{gap:.85rem;padding:1rem;display:grid}.mobile-control-heading .eyebrow{margin-bottom:.3rem}.mobile-control-heading h2{margin-bottom:0;font-size:1.65rem;line-height:1.05}.part-picker{color:var(--muted);gap:.4rem;font-weight:900;display:grid}.part-picker select{color:#fff;background:#28243c;border:2px solid #5a527b;border-radius:1rem;width:100%;min-height:3.6rem;padding:0 .9rem;font-size:1.05rem;font-weight:800}.part-picker select:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}.selected-controls{gap:.65rem;display:grid}.moving-label{color:var(--muted);justify-content:space-between;align-items:baseline;gap:.75rem;margin:.1rem 0 0;font-size:.9rem;display:flex}.moving-label strong{color:var(--paper);text-align:right}.move-pad{grid-template-rows:repeat(3,minmax(3.9rem,4.8rem));grid-template-columns:repeat(3,minmax(3.9rem,4.8rem));justify-content:center;gap:.45rem;display:grid}.move-key{color:#151020;touch-action:none;-webkit-user-select:none;user-select:none;background:linear-gradient(145deg,#70eff8,#a98aff);border:0;border-radius:1.15rem;font-size:2rem;font-weight:900;box-shadow:inset 0 -5px #140c2a38,0 .4rem 1rem #0003}.move-key:active,.move-key.is-held{filter:brightness(1.1);transform:translateY(3px);box-shadow:inset 0 -2px #140c2a38}.move-up{grid-area:1/2}.move-left{grid-area:2/1}.move-centre{color:#817b9b;letter-spacing:.12em;border:1px dashed #5b5477;border-radius:50%;grid-area:2/2;place-items:center;font-size:.65rem;font-weight:900;display:grid}.move-right{grid-area:2/3}.move-down{grid-area:3/2}.move-hint{color:var(--muted);text-align:center;margin:-.1rem 0 .15rem;font-size:.78rem}.rotator-controls{background:#ff4f9d14;border:1px solid #ff4f9d4d;border-radius:1rem;grid-template-columns:1fr auto;align-items:center;gap:.7rem;padding:.75rem .85rem;display:grid}.rotator-controls p{gap:.15rem;margin:0;display:grid}.rotator-controls p strong{color:#ff8fc1}.rotator-controls p span{color:var(--muted);font-size:.75rem}.rotate-buttons{grid-template-columns:repeat(2,3.2rem);gap:.45rem;display:grid}.rotate-key{color:#211020;background:#ff4f9d;border:0;border-radius:.85rem;min-height:3.2rem;font-size:1.75rem;font-weight:900;box-shadow:inset 0 -4px #0003}.rotate-key:active,.rotate-key.is-held{transform:translateY(2px);box-shadow:inset 0 -2px #0003}.empty-parts{color:var(--muted);text-align:center;margin:0;padding:1.25rem .5rem}.mobile-action-row{grid-template-columns:1fr 1fr;gap:.65rem;display:grid}.mobile-action{border:0;border-radius:1rem;min-height:3.5rem;padding:.6rem .75rem;font-weight:900}.mobile-action>span{margin-right:.25rem;font-size:1.25rem}.mobile-action small{opacity:.7;font-size:.62rem;display:block}.create-action{color:#201220;background:var(--yellow)}.connect-action{color:#112025;background:var(--cyan)}.connect-action:disabled{color:#827d98;background:#2b2740}.builder-controls .delete-button{min-height:3.35rem;margin-top:0}.connection-first{color:var(--muted);background:#242038;border-radius:.85rem;padding:.75rem .9rem}.connection-first strong{color:var(--paper)}.connection-preview-copy{color:var(--cyan);overflow-wrap:anywhere;background:#43e7f412;border:1px solid #43e7f438;border-radius:.85rem;padding:.75rem .9rem;font-size:.85rem;line-height:1.35}.connection-manager{border-top:1px solid #ffffff1a;gap:.7rem;margin-top:.15rem;padding-top:1rem;display:grid}.connection-manager-heading{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.connection-manager-heading .eyebrow,.connection-manager-heading h3{margin:0}.connection-manager-heading h3{font-size:1.05rem}.empty-connections{color:var(--muted);text-align:center;margin:0;padding:.4rem .25rem;font-size:.82rem}.selected-connection-controls{gap:.65rem;display:grid}.connection-summary{background:#242038;border:1px solid #43e7f42e;border-radius:1rem;gap:.4rem;padding:.8rem .9rem;display:grid}.connection-summary strong{font-size:.9rem;line-height:1.35}.connection-kind-pill{color:#171222;background:var(--cyan);text-transform:uppercase;letter-spacing:.08em;border-radius:100px;justify-self:start;padding:.24rem .55rem;font-size:.68rem;font-weight:900}.selected-connection-controls .delete-button{min-height:3.35rem;margin-top:0}.action-tile{color:#160d22;text-align:left;cursor:pointer;border:0;border-radius:1.25rem;grid-template-columns:auto 1fr;align-items:center;gap:0 1rem;min-height:10rem;padding:1.25rem 1.4rem;display:grid;box-shadow:inset 0 -5px #0000002b}.action-tile .tile-icon{grid-row:1/3;font-size:2.8rem;line-height:1}.action-tile>span:not(.tile-icon){font-size:2rem;font-weight:800;line-height:1}.action-tile small{opacity:.7;font-weight:800}.create-tile{background:linear-gradient(135deg, var(--yellow), #ffac4f)}.select-tile{background:linear-gradient(135deg, var(--cyan), var(--purple))}.action-tile:disabled{filter:grayscale(.8);opacity:.5}.limit-message{color:var(--yellow);text-align:center;margin:.5rem 0;font-weight:900}.phone-message{text-align:center;padding:3rem 1.5rem}.phone-message h2{font-size:2rem;line-height:1.1}.phone-message p:not(.eyebrow){color:var(--muted)}.loader-shape{aspect-ratio:1;background:var(--cyan);border-radius:33%;width:4rem;margin:0 auto 1.5rem;animation:1.7s ease-in-out infinite loader;box-shadow:0 0 2rem #43e7f466}@keyframes loader{50%{background:var(--purple);border-radius:50%;transform:rotate(135deg)scale(.75)}}.control-dialog{color:#fff;background:#171426;border:1px solid #ffffff24;border-radius:1.5rem;width:min(100% - 1.5rem,34rem);max-height:calc(100dvh - 1.5rem);padding:1.3rem;overflow:auto;box-shadow:0 2rem 6rem #000}.control-dialog::backdrop{backdrop-filter:blur(5px);background:#030209cc}.dialog-heading h2{margin-bottom:.8rem;font-size:2.1rem}.control-dialog label{color:var(--muted);grid-template-columns:6rem 1fr;align-items:center;gap:1rem;margin:.8rem 0;font-weight:900;display:grid}.control-dialog select{color:#fff;background:#28243c;border:1px solid #49445f;border-radius:.8rem;width:100%;min-height:3.25rem;padding:0 .8rem;font-size:1rem}.dialog-actions{grid-template-columns:1fr 1.4fr;gap:.8rem;margin-top:1.3rem;display:grid}.future-actions{gap:.6rem;margin-top:1rem;display:grid}.future-actions button{color:#817d96;background:#242137;border:0;border-radius:.8rem;justify-content:space-between;align-items:center;min-height:3.2rem;padding:0 1rem;font-weight:900;display:flex}.future-actions small{font-weight:700}.full-width{width:100%;margin-top:.7rem}.phone-overlay{z-index:20;text-align:center;background:#080710f2;place-content:center;padding:2rem;display:grid;position:fixed;inset:0}.toast{bottom:max(1rem, env(safe-area-inset-bottom));background:var(--paper);color:#171222;z-index:30;border-radius:100px;width:max-content;max-width:calc(100% - 2rem);padding:.75rem 1rem;font-weight:900;position:fixed;left:50%;transform:translate(-50%)}.controller-body{background-color:#0000;background-image:radial-gradient(circle at 8% 8%,#ffe45e33 0 .45rem,#0000 .5rem),radial-gradient(circle at 93% 17%,#43e7f42e 0 .65rem,#0000 .7rem),linear-gradient(#211547,#0d0a1d 48%,#080710);background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:auto,auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box}.controller-shell{width:min(100%,34rem);padding-inline:.65rem}.controller-header{grid-template-columns:1fr auto auto;align-items:end;gap:.15rem .55rem;padding:.65rem .45rem .9rem;display:grid}.controller-header>p{grid-column:1/-1;margin-bottom:.1rem}.controller-header h1{text-shadow:0 .2rem #00000038;margin:0}.builder-pill{border:2px solid #43e7f438;align-self:center;box-shadow:inset 0 -3px #0000002e}.controller-settings-button{z-index:46;aspect-ratio:1;color:#fff;background:#302953;border:2px solid #ffffff47;border-radius:.9rem;align-self:center;width:2.85rem;font-size:1.25rem;box-shadow:0 .3rem #00000040}.phone-panel{background:#181334f5;border:2px solid #ffffff1a;box-shadow:0 .8rem #0003,0 1.5rem 4rem #00000047}.builder-controls{gap:1rem}.mobile-control-heading{padding:.2rem .2rem 0}.mobile-control-heading h2{font-size:clamp(1.7rem,7vw,2.2rem)}.mobile-control-heading>p:last-child{color:var(--muted);margin:.3rem 0 0;font-size:.9rem}.object-picker{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.object-card{--piece-colour:var(--cyan);color:#fff;text-align:left;cursor:pointer;background:#302953;border:3px solid #0000;border-radius:1.25rem;grid-template-rows:1fr auto;grid-template-columns:3.4rem 1fr;align-items:center;gap:.25rem .65rem;min-width:0;min-height:6.5rem;padding:.7rem;display:grid;position:relative;box-shadow:inset 0 -5px #0003}.object-card.is-selected{border-color:var(--yellow);background:#463871;transform:translateY(-2px);box-shadow:inset 0 -4px #0000002e,0 .45rem #ffe45e38}.object-card.is-selected:after{content:"✓";aspect-ratio:1;background:var(--yellow);color:#251533;border:3px solid #201743;border-radius:50%;place-items:center;width:1.7rem;font-weight:1000;display:grid;position:absolute;top:-.45rem;right:-.35rem}.object-card:focus-visible,.connection-card:focus-visible,.picture-choice:has(input:focus-visible),.colour-choice:has(input:focus-visible),.size-choice:has(input:focus-visible),.weight-choice:has(input:focus-visible),.connector-choice:has(input:focus-visible){outline:4px solid var(--cyan);outline-offset:2px}.object-picture{aspect-ratio:1;background:#ffffff17;border-radius:1rem;grid-row:1/3;place-items:center;width:3.35rem;display:grid}.piece-icon{--piece-size:2.35rem;width:var(--piece-size);height:var(--piece-size);background:var(--piece-colour,#ff5575);filter:drop-shadow(0 .25rem #0003);display:block}.piece-box{border-radius:.45rem;transform:rotate(-7deg)}.piece-ball{background:radial-gradient(circle at 30% 24%, #ffffffe6, var(--piece-colour) 22% 68%, color-mix(in srgb, var(--piece-colour), #000 25%));border-radius:50%}.piece-pipe{background:linear-gradient(180deg, color-mix(in srgb, var(--piece-colour), white 25%), var(--piece-colour) 52%, color-mix(in srgb, var(--piece-colour), black 24%));border:0;border-radius:.3rem;width:2.5rem;height:1.35rem;position:relative;transform:rotate(-10deg)}.piece-pipe:before,.piece-pipe:after{content:"";border-radius:50%;width:.62rem;height:100%;position:absolute;top:0}.piece-pipe:before{background:color-mix(in srgb, var(--piece-colour), black 18%);left:-.25rem}.piece-pipe:after{background:radial-gradient(ellipse at 35% 32%, color-mix(in srgb, var(--piece-colour), white 42%), var(--piece-colour) 54%, color-mix(in srgb, var(--piece-colour), black 22%) 100%);right:-.28rem}.object-words{min-width:0;display:grid}.object-words strong{text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;overflow:hidden}.object-words small{color:#c7c1df;text-transform:capitalize;font-size:.7rem}.object-weight{color:var(--yellow);letter-spacing:.05em;align-self:end;font-size:.45rem}.object-card.is-compact{grid-template-columns:2.8rem 1fr;min-height:5.2rem}.object-card.is-compact .object-picture{width:2.7rem}.object-card.is-compact .piece-icon{--piece-size:1.9rem}.moving-label{background:#302953;border-radius:100px;padding:.6rem .85rem}.move-pad{grid-template-rows:repeat(3,minmax(4.2rem,5.25rem));grid-template-columns:repeat(3,minmax(4.2rem,5.25rem));gap:.5rem}.move-key{background:linear-gradient(145deg,#68edf8,#a985ff);border:3px solid #ffffff57;border-radius:1.5rem;font-size:2.2rem;box-shadow:inset 0 -7px #140c2a3d,0 .4rem #17112d}.move-centre{color:#bdb5dd;background:#302953;border:0;align-content:center;gap:.05rem;display:grid}.move-centre .move-face{color:var(--yellow);letter-spacing:.08em;font-size:1.1rem}.move-centre small{letter-spacing:.12em;font-size:.55rem;font-weight:900}.move-hint{font-size:.8rem}.rotator-controls{border-width:2px}.rotate-key{border-radius:1rem;min-height:3.7rem}.mobile-action{border:3px solid #ffffff40;border-radius:1.25rem;grid-template-columns:auto 1fr;place-items:center;gap:.35rem;min-height:4.5rem;font-size:1rem;display:grid;box-shadow:inset 0 -6px #0003}.mobile-action>span{margin:0;font-size:1.7rem}.mobile-action:active{transform:translateY(3px);box-shadow:inset 0 -3px #0003}.connection-manager{margin-top:.25rem;padding:1rem .15rem .15rem}.connection-manager-heading{align-items:center}.connection-manager-heading>div{gap:.08rem;display:grid}.connection-manager-heading>span{font-size:1.7rem}.connection-picker{gap:.55rem;display:grid}.connection-card{color:#fff;text-align:left;background:#302953;border:3px solid #0000;border-radius:1.1rem;grid-template-columns:3.2rem 1fr;align-items:center;gap:.7rem;min-height:4.8rem;padding:.65rem .8rem;display:grid;box-shadow:inset 0 -4px #0000002e}.connection-card.is-selected{border-color:var(--cyan);background:#3d3567}.connection-card>span:last-child{gap:.1rem;min-width:0;display:grid}.connection-card small{color:#c7c1df;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.control-dialog{background:#1d173d;border:3px solid #ffffff29;padding:1rem;overflow-x:hidden}.control-dialog form{gap:1rem;display:grid}.dialog-heading h2{margin-bottom:0}.choice-group{border:0;min-width:0;margin:0;padding:0}.choice-group legend{color:#fff;width:100%;margin-bottom:.55rem;font-size:1rem;font-weight:900}.control-dialog .picture-choice,.control-dialog .colour-choice,.control-dialog .size-choice,.control-dialog .weight-choice,.control-dialog .connector-choice{min-width:0;margin:0}.control-dialog .picture-choice,.control-dialog .size-choice,.control-dialog .weight-choice{grid-template-columns:1fr;gap:.35rem;display:grid}.control-dialog .colour-choice{grid-template-columns:1fr;gap:.25rem;display:grid}.control-dialog .connector-choice{grid-template-columns:2.8rem 1fr;gap:0 .55rem;display:grid}.choice-group input[type=radio]{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.shape-choices,.size-choices{grid-template-columns:repeat(3,1fr);gap:.55rem;display:grid}.picture-choice,.size-choice{color:#fff;cursor:pointer;background:#302953;border:3px solid #0000;border-radius:1rem;grid-template-columns:1fr;justify-items:center;gap:.35rem;min-width:0;padding:.65rem .35rem;display:grid;position:relative}.picture-choice:has(input:checked),.size-choice:has(input:checked),.weight-choice:has(input:checked),.connector-choice:has(input:checked){border-color:var(--yellow);background:#473970;box-shadow:0 .25rem #ffe45e33}.choice-picture{place-items:center;height:3.2rem;display:grid}.picture-choice .piece-icon{--piece-colour:#ff718c}.colour-choices{grid-template-columns:repeat(6,1fr);gap:.35rem;display:grid}.colour-choice{color:#cbc4e5;cursor:pointer;justify-items:center;gap:.25rem;min-width:0;font-size:.58rem;display:grid;position:relative}.colour-choice>span{aspect-ratio:1;background:var(--swatch);border:4px solid #302953;border-radius:50%;width:2.65rem;max-width:100%;box-shadow:inset 0 -.3rem #00000024}.colour-choice:has(input:checked)>span{outline:3px solid var(--yellow);border-color:#fff;transform:translateY(-2px)}.colour-choice strong{text-overflow:ellipsis;max-width:100%;overflow:hidden}.colour-red{--swatch:#ff5575}.colour-orange{--swatch:#ff9d45}.colour-yellow{--swatch:#ffe45e}.colour-green{--swatch:#50e38b}.colour-blue{--swatch:#43b8f4}.colour-purple{--swatch:#a76dff}.size-choice{align-content:end;min-height:5.2rem}.size-dot{background:var(--cyan);border-radius:.4rem;display:block;box-shadow:inset 0 -.3rem #00000026}.size-small .size-dot{width:1.5rem;height:1.5rem}.size-medium .size-dot{width:2.2rem;height:2.2rem}.size-large .size-dot{width:3rem;height:3rem}.weight-choices{grid-template-columns:repeat(5,1fr);gap:.35rem;display:grid}.weight-choice{color:#fff;cursor:pointer;background:#302953;border:3px solid #0000;border-radius:.9rem;grid-template-columns:1fr;align-content:center;justify-items:center;min-height:4.25rem;padding:.35rem;display:grid;position:relative}.weight-choice>span{color:var(--yellow);letter-spacing:.02em;text-align:center;font-size:.45rem;line-height:.8}.weight-choice strong{font-size:.75rem}.connector-choices{grid-template-columns:repeat(2,1fr);gap:.55rem;display:grid}.connector-choice{color:#fff;cursor:pointer;background:#302953;border:3px solid #0000;border-radius:1rem;grid-template-rows:1fr 1fr;grid-template-columns:2.8rem 1fr;align-items:center;gap:0 .55rem;min-height:5.4rem;padding:.55rem;display:grid;position:relative}.connector-choice .connector-icon{grid-row:1/3}.connector-choice strong{align-self:end}.connector-choice small{color:#c7c1df;align-self:start}.connector-icon{width:2.8rem;height:2.8rem;color:var(--yellow);background:#ffffff12;border-radius:.8rem;place-items:center;font-size:2.2rem;font-weight:900;display:grid;position:relative}.icon-stick:before{content:"";background:var(--cyan);border-radius:100px;width:2.1rem;height:.5rem;transform:rotate(-18deg)}.icon-joint:before{content:"";background:var(--cyan);width:2rem;height:.35rem}.icon-joint:after{content:"";aspect-ratio:1;background:var(--yellow);border:.28rem solid #44396b;border-radius:50%;width:.85rem;position:absolute}.icon-hinge:before{content:"⌄";color:var(--cyan);font-size:2.7rem;line-height:.7;transform:translateY(-.3rem)}.icon-rotator:before{content:"";background:var(--cyan);width:2.1rem;height:.3rem}.icon-rotator:after{content:"↻";color:var(--yellow);font-size:1.8rem;position:absolute}.icon-spring{line-height:1;transform:rotate(-12deg)}.connection-first{grid-template-columns:auto 1fr;align-items:center;gap:.6rem;margin:0;display:grid}.connection-first span{color:var(--muted);text-transform:uppercase;font-size:.75rem;font-weight:900}.connection-first strong{text-align:right}.connection-preview-copy{margin:0}.picker-pagination{grid-template-columns:2.6rem 1fr 2.6rem;align-items:center;gap:.4rem;margin-top:.35rem;display:grid}.picker-pagination button{color:#fff;background:#3b3262;border:0;border-radius:.7rem;min-height:2.2rem;font-size:1.4rem;font-weight:900}.picker-pagination button:disabled{opacity:.35}.picker-pagination span{color:var(--muted);text-align:center;font-size:.72rem;font-weight:900}.dialog-actions{z-index:2;background:linear-gradient(#0000,#1d173d 20%);padding-top:.25rem;position:sticky;bottom:-.1rem}.piece-tray,.control-deck{min-width:0}.piece-tray{gap:.9rem;display:grid}.control-deck{background:#120e28;border:2px solid #a76dff2e;border-radius:1.25rem;min-height:19rem;padding:.8rem;display:grid}.choose-piece-prompt{color:var(--muted);text-align:center;align-self:center;justify-items:center;gap:.3rem;display:grid}.choose-piece-prompt>span{font-size:3rem}.choose-piece-prompt strong{color:var(--paper);font-size:1.35rem}.choose-piece-prompt small{font-size:.82rem}.control-deck:has(.selected-controls:not([hidden])) .choose-piece-prompt{display:none}.deck-controls{gap:.65rem;display:grid}.deck-side-actions{align-content:start;gap:.65rem;display:grid}.deck-side-actions .delete-button{margin:0}.movement-surface{place-items:center;min-width:0;min-height:0;display:grid}.joystick-panel,.incremental-panel{justify-items:center;gap:.45rem;width:100%;display:grid}.movement-joystick{aspect-ratio:1;touch-action:none;-webkit-user-select:none;user-select:none;background:radial-gradient(circle,#201a42 0 30%,#17122f 31% 58%,#26204a 59% 100%);border:.45rem solid #41376c;border-radius:50%;place-items:center;width:min(15rem,36vh,90%);display:grid;position:relative;box-shadow:inset 0 0 0 .25rem #43e7f41f,0 .7rem #00000047}.movement-joystick:before,.movement-joystick:after{content:"";pointer-events:none;background:#43e7f421;position:absolute}.movement-joystick:before{width:76%;height:.15rem}.movement-joystick:after{width:.15rem;height:76%}.movement-joystick:focus-visible{outline:4px solid var(--yellow);outline-offset:3px}.movement-joystick.is-active{border-color:var(--cyan);box-shadow:inset 0 0 2rem #43e7f429,0 .45rem #00000047}.joystick-arrows{color:#ffffff59;word-spacing:1.6rem;pointer-events:none;place-items:center;font-size:.8rem;display:grid;position:absolute;inset:.65rem;transform:rotate(45deg)}.joystick-knob{z-index:2;aspect-ratio:1;color:#241543;pointer-events:none;background:linear-gradient(145deg,#72eff8,#a985ff);border:.25rem solid #ffffff73;border-radius:50%;place-items:center;width:43%;transition:transform 70ms linear;display:grid;position:relative;box-shadow:inset 0 -.5rem #25144b33,0 .45rem .8rem #00000059}.movement-joystick.is-active .joystick-knob{transition:none}.joystick-knob span{letter-spacing:.08em;font-size:1.05rem;font-weight:900}.screen-rotate-controls{background:#282044;border:2px solid #43e7f429;border-radius:1rem;gap:.5rem;padding:.65rem;display:grid}.screen-rotate-controls p{gap:.05rem;margin:0;display:grid}.screen-rotate-controls p strong{color:var(--cyan)}.screen-rotate-controls p span{color:var(--muted);font-size:.7rem}.screen-rotate-controls .rotate-buttons{grid-template-columns:repeat(2,minmax(3.2rem,1fr))}.turn-key{background:linear-gradient(145deg, var(--yellow), #ffad52);color:#25152e;touch-action:none;border:2px solid #ffffff4d;border-radius:.9rem;min-height:3.5rem;font-size:1.8rem;font-weight:900;box-shadow:inset 0 -4px #0000002e}.turn-key:active,.turn-key.is-held{transform:translateY(2px);box-shadow:inset 0 -2px #0000002e}.settings-dialog{width:min(100% - 1rem,34rem);height:auto}.settings-dialog form{grid-template-columns:1fr;gap:1rem;height:auto;display:grid}.settings-dialog .dialog-heading,.settings-dialog .movement-mode-choices,.settings-dialog .settings-done{grid-column:1}.settings-dialog .settings-done{width:100%;min-height:3.4rem}.movement-mode-choices{grid-template-columns:repeat(2,1fr);gap:.7rem;display:grid}.movement-mode-choice{color:#fff;text-align:left;background:#302953;border:3px solid #0000;border-radius:1.15rem;grid-template-rows:1fr 1fr;grid-template-columns:3.4rem 1fr;align-items:center;gap:0 .65rem;min-height:8rem;padding:.75rem;display:grid}.movement-mode-choice.is-selected{border-color:var(--yellow);background:#463970}.movement-mode-choice>span{aspect-ratio:1;width:3.4rem;color:var(--cyan);background:#18132f;border-radius:50%;grid-row:1/3;place-items:center;font-size:2rem;display:grid}.movement-mode-choice strong{align-self:end}.movement-mode-choice small{color:var(--muted);align-self:start}.mode-joystick-icon i{background:var(--cyan);border-radius:100px 100px .3rem .3rem;width:1.15rem;height:1.6rem;display:block;transform:translateY(-.4rem);box-shadow:0 1rem 0 .6rem #7758d0}.controller-mode-overlay{z-index:60;padding:max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));text-align:center;background:radial-gradient(circle at 50% 30%,#35246c,#0b0819 67%);place-content:center;justify-items:center;gap:.75rem;display:grid;position:fixed;inset:0}.controller-mode-overlay h2{max-width:28rem;margin:0;font-size:clamp(2rem,8vw,3.5rem);line-height:.95}.controller-mode-overlay>p:not(.eyebrow){max-width:24rem;color:var(--muted);margin:0 0 .35rem}.ios-fullscreen-help{color:#f8f5ff;text-align:left;background:#43e7f41a;border:2px solid #43e7f480;border-radius:1rem;gap:.25rem;width:min(100%,27rem);padding:.8rem 1rem;display:grid}.ios-fullscreen-help strong{color:var(--cyan)}.ios-fullscreen-help span{color:#d8d2ec;font-size:.9rem;line-height:1.35}.controller-mode-overlay .primary-button{min-width:14rem;font-size:1.05rem}.text-button{color:#c8c1e2;text-underline-offset:.25rem;background:0 0;border:0;min-height:2.75rem;padding:.5rem .8rem;font-weight:900;text-decoration:underline}.turn-phone-picture{border:.35rem solid var(--cyan);width:8rem;height:4.2rem;color:var(--yellow);background:#211846;border-radius:1rem;place-items:center;display:grid;position:relative;transform:rotate(-8deg);box-shadow:0 .65rem #00000040}.turn-phone-picture:after{content:"";background:#ffffff6b;border-radius:100px;width:.25rem;height:1.1rem;position:absolute;right:.25rem}.turn-phone-picture>span{font-size:1.8rem}.turn-phone-picture.is-turning{animation:1.8s ease-in-out infinite turn-phone}@keyframes turn-phone{0%,18%{transform:rotate(82deg)scale(.8)}70%,to{transform:rotate(-8deg)scale(1)}}.fullscreen-controller{z-index:45;top:max(.55rem, env(safe-area-inset-top));right:calc(max(.55rem, env(safe-area-inset-right)) + 3.5rem);aspect-ratio:1;color:#fff;background:#302953;border:2px solid #ffffff40;border-radius:.8rem;width:2.75rem;font-size:1.25rem;position:fixed;box-shadow:0 .3rem #00000040}@media (orientation:landscape){.controller-body{overflow:hidden}.controller-shell{width:100%;max-width:none;height:100dvh;min-height:0;padding:max(.35rem, env(safe-area-inset-top)) max(.55rem, env(safe-area-inset-right)) max(.4rem, env(safe-area-inset-bottom)) max(.55rem, env(safe-area-inset-left));grid-template-rows:auto minmax(0,1fr);display:grid}.controller-header{align-items:center;gap:.55rem;padding:.1rem .35rem .4rem;display:flex}.controller-header>p{display:none}.controller-header h1{margin-right:auto;font-size:clamp(1.25rem,3.3vw,1.8rem)}.builder-pill{padding:.25rem .6rem;font-size:.75rem}.controller-settings-button{border-radius:.75rem;width:2.5rem;font-size:1.05rem}.phone-panel{border-radius:1rem}.builder-controls{grid-template-columns:minmax(20rem,1.15fr) minmax(17rem,.85fr);gap:.7rem;min-height:0;padding:.6rem;display:grid;overflow:hidden}.control-deck{grid-area:1/1}.piece-tray{scrollbar-width:thin;grid-area:1/2;grid-template-rows:auto auto auto auto;align-content:start;gap:.55rem;min-height:0;padding:.15rem .35rem .2rem .1rem;overflow-y:auto}.mobile-control-heading{grid-template-columns:1fr auto;align-items:end;gap:0 .5rem;padding:0;display:grid}.mobile-control-heading .eyebrow{grid-column:1/-1;margin:0;font-size:.62rem}.mobile-control-heading h2{font-size:1.3rem}.mobile-control-heading>p:last-child{margin:0;font-size:.7rem}.object-picker{grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem}.object-card{border-width:2px;border-radius:.9rem;grid-template-columns:2.75rem 1fr;min-height:4.65rem;padding:.45rem}.object-picture{border-radius:.75rem;width:2.65rem}.piece-icon{--piece-size:1.85rem}.object-words strong{font-size:.75rem}.object-words small{font-size:.58rem}.mobile-action-row{gap:.45rem}.mobile-action{border-width:2px;border-radius:.9rem;min-height:3.15rem;padding:.3rem .55rem;font-size:.78rem}.mobile-action>span{font-size:1.25rem}.connection-manager{gap:.45rem;padding-top:.55rem}.connection-manager-heading h3{font-size:.88rem}.connection-manager-heading>span{font-size:1.2rem}.connection-card{border-width:2px;grid-template-columns:2.5rem 1fr;min-height:3.6rem;padding:.4rem}.connection-card .connector-icon{width:2.3rem;height:2.3rem}.control-deck{border-radius:.9rem;height:100%;min-height:0;padding:.55rem}.selected-controls{grid-template-rows:auto minmax(0,1fr);gap:.4rem;height:100%;min-height:0}.moving-label{margin:0;padding:.4rem .7rem;font-size:.75rem}.deck-controls{grid-template-columns:minmax(13rem,1.12fr) minmax(7.5rem,.68fr);align-items:center;gap:.65rem;min-height:0}.move-pad{grid-template-rows:repeat(3,minmax(3.15rem,4rem));grid-template-columns:repeat(3,minmax(3.15rem,4rem));gap:.35rem}.move-key{border-width:2px;border-radius:1rem;font-size:1.65rem;box-shadow:inset 0 -5px #140c2a3d,0 .25rem #17112d}.move-centre .move-face{font-size:.85rem}.deck-side-actions{align-content:center}.move-hint{margin:0;font-size:.68rem}.rotator-controls{grid-template-columns:1fr;gap:.35rem;padding:.45rem}.rotate-buttons{grid-template-columns:repeat(2,1fr)}.rotate-key{min-height:2.9rem}.deck-side-actions .delete-button{min-height:2.9rem;padding:.4rem;font-size:.72rem}.movement-joystick{border-width:.3rem;width:min(12.5rem,48vh,92%)}.joystick-panel .move-hint,.incremental-panel .move-hint{margin:0;font-size:.62rem}.screen-rotate-controls{gap:.3rem;padding:.4rem}.screen-rotate-controls p span{display:none}.screen-rotate-controls .turn-key{min-height:2.8rem;font-size:1.45rem}.choose-piece-prompt>span{font-size:2.3rem}.choose-piece-prompt strong{font-size:1.05rem}.control-dialog{border-radius:1rem;width:min(100% - 1rem,58rem);height:calc(100dvh - 1rem);max-height:none;padding:.7rem}.control-dialog form{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem .8rem;height:100%;min-height:0}.settings-dialog{width:min(100% - 1rem,36rem);height:auto}.settings-dialog form{grid-template-columns:1fr;gap:.65rem;height:auto}.settings-dialog .dialog-heading{grid-column:1}.settings-dialog .dialog-heading .eyebrow{display:block}.settings-dialog .movement-mode-choice{min-height:5.4rem}.settings-dialog .settings-done{min-height:2.8rem}.control-dialog .dialog-heading{grid-column:1/-1}.dialog-heading .eyebrow{display:none}.dialog-heading h2{margin:0;font-size:1.35rem}.choice-group{min-height:0}.choice-group legend{margin-bottom:.3rem;font-size:.8rem}.shape-choices,.size-choices{gap:.35rem}.picture-choice,.size-choice{min-height:3.7rem;padding:.3rem;font-size:.7rem}.choice-picture{height:2rem}.picture-choice .piece-icon{--piece-size:1.65rem}.colour-choice>span{border-width:3px;width:1.85rem}.colour-choice strong{font-size:.5rem}.size-choice{min-height:3.7rem}.size-small .size-dot{width:1rem;height:1rem}.size-medium .size-dot{width:1.5rem;height:1.5rem}.size-large .size-dot{width:2rem;height:2rem}.weight-choice{min-height:3.35rem}#create-form .dialog-actions{grid-column:1/-1}#connect-dialog{overflow:hidden}#connect-form{grid-template:"heading heading""first first""targets kinds"minmax(0,1fr)"preview preview""actions actions"/minmax(0,1fr) minmax(0,1fr);display:grid;overflow:hidden}#connect-form .dialog-heading{grid-area:heading}#connect-form .connection-first{grid-area:first;padding:.45rem .65rem}#connect-form .connect-targets{grid-area:targets}#connect-form .connect-kinds{grid-area:kinds}#connect-form .connection-preview-copy{grid-area:preview;padding:.45rem .65rem;font-size:.7rem;line-height:1.2}#connect-form .dialog-actions{grid-area:actions}#connect-form .connect-targets,#connect-form .connect-kinds{grid-template-rows:auto minmax(0,1fr) auto;align-content:stretch;min-height:0;display:grid;overflow:hidden}#connect-form .connector-choices,#connect-form .compact-picker{grid-template-columns:repeat(3,1fr)}#connect-form .compact-picker,#connect-form .connector-choices{align-content:center;gap:.35rem;min-height:0}#connect-form .object-card.is-compact{border-radius:.75rem;grid-template-columns:2.25rem 1fr;min-height:3.9rem;padding:.35rem}#connect-form .object-card.is-compact .object-picture{border-radius:.6rem;width:2.15rem}#connect-form .object-card.is-compact .piece-icon{--piece-size:1.45rem}#connect-form .object-card.is-compact .object-words strong{font-size:.62rem}#connect-form .object-card.is-compact .object-words small{font-size:.5rem}#connect-form .connector-choice{border-radius:.75rem;grid-template-columns:2.2rem 1fr;gap:0 .35rem;min-height:3.9rem;padding:.35rem}#connect-form .connector-choice .connector-icon{border-radius:.55rem;width:2.1rem;height:2.1rem;font-size:1.55rem}#connect-form .connector-choice strong{font-size:.7rem}#connect-form .connector-choice small{font-size:.56rem}#connect-form .picker-pagination{margin-top:.2rem}#connect-form .picker-pagination button{min-height:1.8rem}.dialog-actions{background:0 0;align-self:end;margin:0;padding:0;position:static}.dialog-actions button{min-height:2.75rem;padding-block:.4rem}.controller-mode-overlay{text-align:left;grid-template-rows:repeat(5,auto);grid-template-columns:auto minmax(15rem,27rem);justify-items:start;column-gap:2rem}.controller-mode-overlay .turn-phone-picture{grid-row:1/-1}.controller-mode-overlay .eyebrow,.controller-mode-overlay h2,.controller-mode-overlay>p,.controller-mode-overlay>button,.controller-mode-overlay>.ios-fullscreen-help{grid-column:2}.controller-mode-overlay h2{font-size:clamp(2rem,6vw,3.4rem)}}@media (orientation:landscape) and (height<=430px){#connect-form{grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"heading first""targets kinds""actions actions";gap:.35rem .55rem}#connect-form .dialog-heading,#connect-form .connection-first{align-self:center}#connect-form .connection-preview-copy{display:none}#connect-form .choice-group legend{margin-bottom:.18rem;font-size:.68rem}#connect-form .object-card.is-compact,#connect-form .connector-choice{min-height:3.45rem}#connect-form .dialog-actions button{min-height:2.45rem}#connect-form .picker-pagination{grid-template-columns:2.2rem 1fr 2.2rem}#connect-form .picker-pagination button{min-height:1.55rem;font-size:1rem}}@media (orientation:landscape) and (height>=601px){.controller-shell{width:min(100%,92rem);padding:clamp(.75rem,2vh,1.4rem) clamp(1rem,2vw,2rem)}.controller-header{padding-bottom:.75rem}.controller-header h1{font-size:clamp(1.7rem,2.6vw,2.5rem)}.builder-pill{padding:.4rem .85rem;font-size:.9rem}.builder-controls{grid-template-columns:minmax(30rem,1.15fr) minmax(24rem,.85fr);gap:1rem;padding:1rem}.piece-tray{gap:.85rem;padding-right:.6rem}.mobile-control-heading h2{font-size:1.8rem}.mobile-control-heading>p:last-child{font-size:.85rem}.object-picker{gap:.65rem}.object-card{border-radius:1.1rem;grid-template-columns:3.4rem 1fr;min-height:5.8rem;padding:.65rem}.object-picture{width:3.3rem}.piece-icon{--piece-size:2.3rem}.object-words strong{font-size:.9rem}.object-words small{font-size:.7rem}.mobile-action{min-height:4rem;font-size:.95rem}.control-deck{border-radius:1.2rem;padding:1rem}.moving-label{padding:.6rem .9rem;font-size:.9rem}.move-pad{grid-template-rows:repeat(3,minmax(4.5rem,5.8rem));grid-template-columns:repeat(3,minmax(4.5rem,5.8rem));gap:.55rem}.move-key{border-radius:1.35rem;font-size:2.2rem}.move-centre .move-face{font-size:1.15rem}.movement-joystick{width:min(17rem,34vh,92%)}.move-hint{font-size:.85rem}.rotate-key,.deck-side-actions .delete-button{min-height:3.6rem;font-size:.9rem}.screen-rotate-controls .turn-key{min-height:3.6rem}.control-dialog{width:min(100% - 2rem,64rem);height:auto;max-height:calc(100dvh - 2rem);padding:1rem}.dialog-heading h2{font-size:1.8rem}.choice-group legend{font-size:.95rem}.picture-choice,.size-choice{min-height:5rem;font-size:.85rem}.choice-picture{height:2.9rem}.picture-choice .piece-icon{--piece-size:2.25rem}.colour-choice>span{width:2.5rem}.colour-choice strong{font-size:.62rem}.weight-choice{min-height:4.25rem}}@media (width<=760px){.setup-shell{text-align:center;grid-template-columns:1fr;align-content:center}.orbit-art{opacity:.32;width:80vw;position:absolute}.brand-lockup h1{font-size:clamp(4rem,22vw,7rem)}.splash-view{text-align:center;grid-template-columns:1fr;align-content:center;gap:2rem}.qr-card-large{width:min(70vw,25rem)}}@media (width<=380px){.controller-shell{padding-inline:.5rem}.phone-panel{border-radius:1.2rem}.move-pad{grid-template-rows:repeat(3,3.85rem);grid-template-columns:repeat(3,3.85rem)}.mobile-control-heading h2{font-size:1.45rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
