:root{font-family:DM Sans,sans-serif;color:#202a25;background:#f6f6f1;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #b4d85d;outline-offset:3px}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{background:#fff;border-bottom:1px solid #e3e7de}.topbar-inner{max-width:1320px;height:78px;margin:auto;padding:0 44px;display:flex;align-items:center;gap:76px}.brand{display:flex;align-items:center;gap:8px;background:none;border:0;padding:0;color:#202a25;font:700 25px Space Grotesk,sans-serif;letter-spacing:-1.5px;white-space:nowrap}.brand-mark{font-size:29px;color:#e8795c;line-height:1}.brand-dot{color:#e8795c}.main-nav{display:flex;align-items:stretch;gap:28px;height:100%;flex:1}.main-nav button{border:0;border-bottom:2px solid transparent;padding:2px 0 0;background:none;color:#7b867b;font-size:13px;font-weight:600}.main-nav button:hover,.main-nav button.active{color:#202a25;border-bottom-color:#202a25}.nav-current{display:flex;align-items:center;gap:7px;color:#657469;font-size:12px;font-weight:600}.nav-current i,.connection span,.eyebrow-dot,.status-dot{width:7px;height:7px;background:#91b965;border-radius:50%;display:inline-block}.connection{color:#a0947d;font-size:11px;font-weight:700;white-space:nowrap;display:flex;align-items:center;gap:8px}.connection span{background:#d8ad70}.connection.online{color:#638367}.connection.online span{background:#8cb86c}.page{width:min(1232px,calc(100% - 88px));margin:0 auto;flex:1}.home-intro{display:flex;justify-content:space-between;align-items:flex-end;padding:76px 0 66px;border-bottom:1px solid #dfe4db}.eyebrow,.section-kicker{display:inline-flex;align-items:center;gap:9px;color:#849285;font-size:10px;font-weight:700;letter-spacing:1.3px}.eyebrow-dot{background:#e7785a;width:8px;height:8px}h1,h2,h3,p{margin:0}h1,h2{font-family:Space Grotesk,sans-serif;letter-spacing:-2px}h1{font-size:clamp(43px,4.8vw,68px);line-height:1.06;margin:20px 0}.home-intro h1 span,.join-intro h1 span{color:#73867a}.home-intro p,.join-intro>p,.room-heading p{color:#758177;font-size:15px;line-height:1.75;max-width:475px}.intro-note{width:240px;border-left:1px solid #dce3d8;padding:4px 0 0 26px}.intro-note>span{font-size:10px;font-weight:700;letter-spacing:1px;color:#a1ada0}.intro-note strong{display:block;font:600 18px/1.45 Space Grotesk;margin:17px 0;color:#46564a}.intro-note strong span{color:#e8795c}.intro-marks{display:flex;gap:5px}.intro-marks i{width:24px;height:6px;background:#9bb894}.intro-marks i:nth-child(2){background:#d6e0b4}.intro-marks i:nth-child(3){background:#e9bd92}.intro-marks i:nth-child(4){background:#e48469}.games-section{padding:52px 0 54px}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:22px}.section-heading h2,.steps h2{font-size:30px;margin-top:10px;letter-spacing:-1px}.section-count{color:#9daa9d;font-size:10px;letter-spacing:1px;font-weight:700}.game-options{display:grid;grid-template-columns:1fr 1fr;gap:18px}.game-option{position:relative;display:flex;flex-direction:column;text-align:left;padding:20px;background:#fff;border:1px solid #e0e5dc;border-radius:8px;color:#202a25;min-width:0}.game-option:hover{border-color:#97ad95}.game-option.selected{border:2px solid #293c30;padding:19px}.option-top{display:flex;justify-content:space-between;align-items:center;width:100%}.game-number,.option-copy small,.side-heading,.stage-bottom,.join-card-heading,.results-title{font-size:10px;font-weight:700;letter-spacing:1.2px;color:#8b998c}.selection-indicator{height:19px;width:19px;border:1px solid #c8d1c6;border-radius:50%}.selected .selection-indicator{border:6px solid #293c30}.option-art{height:157px;background:#eef4e9;margin:18px 0 21px;position:relative;overflow:hidden;display:block;width:100%}.snake-art{background:#f8eee5}.option-copy{display:grid;gap:8px}.option-copy strong{font:700 22px Space Grotesk;letter-spacing:-.7px}.option-copy>span{font-size:13px;color:#849185}.option-copy small{border-top:1px solid #e9ede7;margin-top:11px;padding-top:15px;display:flex;justify-content:space-between;align-items:center}.option-copy b{color:#2b3a30;font-size:17px}.art-ground{position:absolute;left:12%;right:12%;height:2px;background:#b7cbb5;bottom:30%}.pixel-runner{position:absolute;left:34%;bottom:31%;width:51px;height:65px;background:#e98365;border-radius:12px 12px 6px 6px}.pixel-runner:before{content:"";position:absolute;width:5px;height:5px;background:#293d30;right:10px;top:14px;border-radius:50%}.pixel-runner:after,.pixel-runner i{content:"";position:absolute;bottom:-10px;left:7px;width:10px;height:12px;background:#e98365}.pixel-runner i{left:auto;right:7px}.pixel-obstacle{position:absolute;bottom:31%;right:32%;height:35px;width:24px;border-radius:7px 7px 0 0;background:#77967b}.snake-pixel{position:absolute;width:34px;height:34px;border-radius:7px;background:#85ad88;top:54%;left:37%}.snake-pixel.two{left:calc(37% + 35px)}.snake-pixel.three{left:calc(37% + 70px)}.snake-pixel.four{left:calc(37% + 70px);top:calc(54% - 35px);background:#5f8e6b}.snake-pixel.four:after{content:"••";position:absolute;top:4px;left:9px;color:#fff;letter-spacing:4px;font-size:9px}.snake-apple{position:absolute;top:36%;left:64%;background:#e77c5c;height:21px;width:21px;border-radius:50%}.create-bar{display:flex;justify-content:space-between;align-items:center;padding:20px 0 0}.create-bar>div{display:flex;align-items:center;gap:14px}.create-bar>div span{font-size:9px;color:#9ca89c;letter-spacing:1.1px;font-weight:700}.create-bar strong{font:700 14px Space Grotesk}.primary{display:flex;align-items:center;justify-content:space-between;gap:50px;border:0;border-radius:5px;background:#273b2e;color:#fff;padding:16px 18px;font-size:12px;font-weight:700;min-width:196px;text-align:left}.primary:hover:not(:disabled){background:#405d47}.primary span,.button-outline span{font-size:16px;line-height:12px}.wide{width:100%}.steps{border-top:1px solid #dfe4db;padding:45px 0 15px;display:grid;grid-template-columns:1.2fr repeat(3,1fr);gap:28px}.steps h2{line-height:1.2}.step>span{font:700 11px Space Grotesk;color:#e38364}.step strong{display:block;font:700 14px Space Grotesk;margin:14px 0 8px}.step p{color:#8a968b;font-size:12px;line-height:1.7;max-width:200px}footer{margin-top:60px;border-top:1px solid #e1e6dd}footer>div{max-width:1320px;padding:23px 44px;margin:auto;display:flex;justify-content:space-between;color:#a4aea3;font-size:9px;font-weight:700;letter-spacing:1px}footer b{color:#e57d5d;font-size:14px;margin-right:5px}.notice{display:flex;align-items:center;gap:10px;background:#fff1eb;color:#a84831;border:1px solid #f0d4c8;padding:12px 14px;border-radius:5px;margin:25px 0 0;font-size:13px}.notice>span{font-weight:700}.notice p{flex:1;line-height:1.5}.notice button{border:0;background:none;color:inherit;font-size:20px}.join-layout{display:grid;grid-template-columns:1fr 450px;gap:85px;align-items:center;min-height:630px;padding:75px 0}.join-intro h1{margin-bottom:18px}.join-note{display:flex;gap:14px;align-items:flex-start;border-top:1px solid #dfe6dc;margin-top:52px;padding-top:22px;max-width:395px}.join-note>span{font-size:23px;color:#e27d5e}.join-note p{font-size:12px;line-height:1.7;color:#96a397}.join-card,.stage-card,.room-card,.players-card,.game-settings,.controller-card{background:#fff;border:1px solid #e1e6dd;border-radius:8px}.join-card{padding:31px}.join-card-heading,.side-heading{display:flex;justify-content:space-between}.join-card h2{font-size:26px;letter-spacing:-1px;margin:32px 0 7px}.join-card>p{font-size:13px;color:#8d9a8d;line-height:1.6}.join-card label{display:grid;gap:9px;color:#7a8a7c;font-size:10px;font-weight:700;letter-spacing:1px;margin-top:24px}.join-card input,.game-settings select{width:100%;border:1px solid #dfe6db;border-radius:5px;background:#fafbf8;color:#273b2e;padding:15px;font-size:14px;outline:none}.join-card input::placeholder{color:#b4bfb2}.join-card .primary{margin-top:25px}.join-card .form-hint{text-align:center;font-size:12px;margin-top:22px}.form-hint button{padding:0;border:0;background:none;color:#426749;font-weight:700}.room-heading{display:flex;justify-content:space-between;align-items:flex-end;padding:55px 0 32px}.room-heading h1{font-size:40px;letter-spacing:-1.6px;margin:13px 0 8px}.room-heading p{font-size:13px}.button-outline{border:1px solid #cfd8cc;background:#fff;border-radius:5px;color:#3f5144;padding:14px 16px;font-size:12px;font-weight:700;display:flex;align-items:center;gap:22px;white-space:nowrap}.button-outline:hover{border-color:#819b81}.dashboard{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:18px;align-items:start}.stage-card{padding:25px;min-width:0}.stage-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.stage-top h2{font-size:27px;letter-spacing:-1px;margin-top:7px}.best{display:grid;gap:4px;text-align:right}.best span{font-size:9px;letter-spacing:1px;color:#9ca99b;font-weight:700}.best strong{font:700 24px Space Grotesk}.game-stage{background:#f5f7f1;border:1px solid #e8ede4;border-radius:5px;min-height:390px;display:flex;align-items:center;justify-content:center;overflow:hidden}.game-stage.is-playing{min-height:250px}.canvas-wrap{width:100%;min-height:175px}.canvas-wrap canvas{display:block;max-width:100%}.empty-stage{display:grid;justify-items:center;text-align:center;gap:10px;color:#89978b}.empty-stage strong{font:700 15px Space Grotesk;color:#4a5e4e}.empty-stage>span{font-size:12px}.stage-icon{display:grid;place-items:center;width:66px;height:66px;background:#e3eddf;color:#698e6b;font-size:31px;border-radius:12px;margin-bottom:10px}.stage-bottom{display:flex;justify-content:space-between;padding-top:17px;font-size:9px;color:#a2ada1}.sidebar{display:grid;gap:14px}.room-card,.players-card,.game-settings{padding:21px}.side-heading{color:#8b998c}.room-code{font:700 33px Space Grotesk;letter-spacing:4px;margin-top:15px}.room-card>p{font-size:12px;color:#879387;margin:4px 0 15px}.qr{display:flex;justify-content:center;padding:14px;background:#fff;border:1px solid #e8ede5;border-radius:5px}.qr-note{text-align:center;color:#a2aea0;font-size:9px;line-height:1.7;letter-spacing:.6px;margin-top:13px}.qr-note strong{color:#778878;overflow-wrap:anywhere}.players{margin:17px 0}.player-row{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:12px;font-weight:600}.avatar{width:29px;height:29px;flex:none;border-radius:6px;display:grid;place-items:center;color:#fff;font-size:11px}.avatar.empty{border:1px dashed #d3ddd1;color:#a9b7a7;background:#fafbf8}.empty-name{color:#aeb9ad;font-weight:400}.player-row small{margin-left:auto;font-size:8px;letter-spacing:.3px;color:#98a598}.game-settings label{display:block;color:#768779;font-size:12px;margin:17px 0 8px}.game-settings select{padding:11px;font-size:12px}.game-settings p{font-size:11px;line-height:1.6;color:#9ba99a;margin-top:10px}.stop-button{border:0;background:none;color:#ae6d55;font-size:11px;font-weight:700;width:100%;padding:14px 0 0}.results{width:min(420px,80%)}.results-title{margin-bottom:12px}.result-row{display:flex;align-items:center;gap:12px;border-bottom:1px solid #e3e9df;padding:13px 0}.rank{font:700 15px Space Grotesk;color:#aab5a7}.result-color{width:24px;height:24px;border-radius:6px}.result-row strong{font-size:13px}.result-row b{margin-left:auto;font:700 16px Space Grotesk}.result-row small{font:700 9px DM Sans;color:#a2aea0}.controller-page{width:min(520px,calc(100% - 48px))}.controller-layout{padding:52px 0}.controller-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.controller-heading h1{font-size:37px;letter-spacing:-1.4px;margin:12px 0 8px}.controller-heading h1>span{color:#e37d5c}.controller-heading p{font-size:13px;color:#8a988a}.dot-sep{margin:0 5px;color:#cbd1c7}.compact{padding:12px;gap:12px}.controller-status{display:flex;align-items:center;gap:9px;background:#e9f2e5;border:1px solid #dce9d9;color:#628264;border-radius:5px;padding:14px;font-size:12px;font-weight:700;margin:27px 0 14px}.controller-status.offline{background:#f8efe6;border-color:#efdfcd;color:#a47756}.controller-status.offline .status-dot{background:#d2a27b}.status-label{margin-left:auto;font-size:10px;letter-spacing:1px}.controller-card{padding:24px}.controller-card-heading{display:flex;justify-content:space-between;align-items:center}.controller-card-heading h2{font-size:23px;letter-spacing:-.8px;margin-top:7px}.controller-symbol{font-size:27px;color:#e58464}.controls{display:grid;gap:10px;margin-top:25px}.controls button{border:0;border-radius:6px;text-align:left;padding:20px;color:#fff;display:flex;flex-direction:column;align-items:flex-start;touch-action:none;user-select:none;-webkit-user-select:none}.jump{background:#e57d60;min-height:170px}.duck{background:#80a58a;min-height:145px}.jump:active,.duck.pressed{filter:brightness(.9)}.controls button>span:not(.control-icon){font:700 29px Space Grotesk;letter-spacing:-1px}.control-icon{align-self:flex-end;font-size:26px;line-height:1;margin-bottom:auto}.controls small,.snake-controls p{font-size:9px;font-weight:700;letter-spacing:1px;opacity:.8;margin-top:5px}.controller-foot{text-align:center;color:#a2aea1;margin:20px 0 0;font-size:11px}.snake-controls{padding:28px 0 5px}.snake-controls p{text-align:center;margin:0 0 15px;color:#95a493}.direction-pad{width:min(100%,285px);margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,75px);gap:8px}.direction{border:0;border-radius:6px;background:#80a58a;color:#fff;font:600 34px Space Grotesk;touch-action:none;user-select:none;-webkit-user-select:none}.direction:active:not(:disabled){background:#628b6c}.direction.up{grid-column:2;grid-row:1}.direction.left{grid-column:1;grid-row:2}.direction.down{grid-column:2;grid-row:2}.direction.right{grid-column:3;grid-row:2}@media(max-width:900px){.topbar-inner{gap:35px}.page{width:calc(100% - 56px)}.dashboard{grid-template-columns:1fr}.sidebar{grid-template-columns:1fr 1fr}.game-settings{grid-column:1/-1}.join-layout{grid-template-columns:1fr 1fr;gap:35px}.steps{grid-template-columns:repeat(3,1fr)}.steps-heading{grid-column:1/-1}.steps h2 br{display:none}}@media(max-width:600px){.topbar-inner{height:auto;min-height:68px;padding:0 20px;gap:0;flex-wrap:wrap}.brand{font-size:23px}.connection{margin-left:auto}.main-nav{order:3;flex-basis:100%;height:45px;gap:25px}.main-nav button{font-size:12px}.nav-current{margin-left:auto;font-size:10px}.page{width:calc(100% - 40px)}.home-intro{padding:44px 0 39px}.home-intro h1,.join-intro h1{font-size:43px}.home-intro p,.join-intro>p{font-size:13px}.intro-note{display:none}.games-section{padding:38px 0}.section-heading h2,.steps h2{font-size:25px}.section-count{font-size:9px}.game-options{grid-template-columns:1fr;gap:12px}.option-art{height:130px}.create-bar{gap:12px}.create-bar>div{display:grid;gap:6px}.create-bar .primary{min-width:170px;gap:15px}.steps{grid-template-columns:1fr;gap:20px;padding-top:30px}.steps-heading{grid-column:auto}.step{display:grid;grid-template-columns:28px 1fr;column-gap:10px}.step strong{margin:0 0 5px}.step p{grid-column:2;max-width:none}.join-layout{display:flex;flex-direction:column;align-items:stretch;gap:30px;padding:45px 0;min-height:0}.join-note{margin-top:25px;padding-top:16px}.join-card{padding:23px}.join-card h2{margin-top:24px}.room-heading{padding:36px 0 24px;align-items:flex-start;gap:15px}.room-heading h1{font-size:31px}.room-heading .button-outline{gap:8px;padding:11px;font-size:11px}.stage-card{padding:17px}.stage-top h2{font-size:23px}.game-stage{min-height:270px}.sidebar{grid-template-columns:1fr}.game-settings{grid-column:auto}.stage-bottom span:last-child{display:none}.controller-page{width:calc(100% - 40px)}.controller-layout{padding-top:35px}.controller-heading h1{font-size:31px}.controller-card{padding:18px}.controller-card-heading h2{font-size:21px}.direction-pad{grid-template-rows:repeat(3,70px)}footer{margin-top:35px}footer>div{padding:20px;gap:15px}footer span:last-child{display:none}}.snake-controls{padding:24px 0 5px}.snake-controls p{text-align:center;color:#839488;line-height:1.5}.joystick{position:relative;width:min(100%,340px);aspect-ratio:1;margin:0 auto;border:1px solid #d9e5d8;border-radius:50%;background:radial-gradient(circle,#e3eee0 0,#e3eee0 36%,#edf4e9 36%,#edf4e9 65%,#f4f8f1 65%);box-shadow:inset 0 2px 7px #486e5412,0 8px 25px #405f4910;touch-action:none;user-select:none;-webkit-user-select:none;outline-offset:5px}.joystick.is-disabled{opacity:.48}.joystick-track{position:absolute;top:25%;right:25%;bottom:25%;left:25%;border:1px dashed #a6bba7;border-radius:50%;pointer-events:none}.joystick-knob{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:30%;height:30%;border-radius:50%;display:grid;place-items:center;color:#eef6eb;background:linear-gradient(145deg,#89af91,#628c6e);border:4px solid #f7faf5;box-shadow:0 5px 15px #45674e45;pointer-events:none}.joystick-knob span{font-size:clamp(25px,8vw,38px);line-height:1}.joystick-arrow{position:absolute;color:#95ac97;font:700 28px Space Grotesk,sans-serif;line-height:1;pointer-events:none}.joystick-arrow.active{color:#436a4d}.joystick-arrow.up{top:5%;left:50%;transform:translate(-50%)}.joystick-arrow.down{bottom:5%;left:50%;transform:translate(-50%)}.joystick-arrow.left{left:6%;top:50%;transform:translateY(-50%)}.joystick-arrow.right{right:6%;top:50%;transform:translateY(-50%)}.snake-controls .joystick-hint{margin:15px 0 0;font-size:11px;font-weight:500;letter-spacing:0;text-transform:none}.controls .jump{min-height:210px}.controls .duck{min-height:180px}.controls button>span:not(.control-icon){font-size:34px}@media(max-width:600px){.is-controller .main-nav{display:none}.is-controller .topbar-inner{min-height:60px}.is-controller .controller-layout{padding:22px 0}.is-controller .controller-heading h1{font-size:27px;margin:7px 0 5px}.is-controller .controller-status{margin:16px 0 10px}.is-controller .controller-card{padding:16px}.is-controller .controller-card-heading h2{font-size:19px}.is-controller .snake-controls{padding-top:15px}.is-controller .joystick{width:min(100%,min(340px,46vh))}.is-controller .controller-foot{margin-top:12px}.is-controller footer{display:none}.is-controller .controls{margin-top:16px}.is-controller .controls .jump{min-height:max(155px,23vh)}.is-controller .controls .duck{min-height:max(145px,20vh)}}.swipe-controls{padding:20px 0 4px}.swipe-controls p{text-align:center;font-size:10px;font-weight:700;letter-spacing:1px;color:#839488}.swipe-pad{width:100%;min-height:260px;height:min(42vh,360px);margin:12px auto 0;border:1px solid #d8e5d6;border-radius:12px;background:#edf5e9;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);place-items:center;touch-action:none;user-select:none;-webkit-user-select:none;outline-offset:4px}.swipe-pad.is-disabled{opacity:.48}.swipe-arrow{font:700 30px Space Grotesk,sans-serif;color:#9bb59d}.swipe-arrow.active{color:#476f50}.swipe-arrow.up{grid-area:1/2}.swipe-arrow.left{grid-area:2/1}.swipe-arrow.right{grid-area:2/3}.swipe-arrow.down{grid-area:3/2}.swipe-centre{grid-area:2/2;font-size:40px;color:#719a79}.swipe-controls .swipe-hint{font-size:11px;letter-spacing:0;font-weight:500;margin-top:12px}.split-controls{grid-template-columns:1fr 1fr;gap:10px}.split-controls.swapped .jump{order:2}.split-controls.swapped .duck{order:1}.controls.split-controls button{min-width:0;min-height:260px;height:min(42vh,360px);padding:18px}.controls.split-controls button>span:not(.control-icon){font-size:clamp(22px,6vw,34px)}.controller-options{margin-top:18px;color:#65776a;font-size:12px}.controller-options summary{padding:10px 0;cursor:pointer;font-weight:700}.controller-options-body{display:grid;gap:14px;padding:5px 0 10px}.controller-options-body label{display:flex;align-items:center;gap:9px;flex-wrap:wrap;line-height:1.5}.controller-options-body input{width:18px;height:18px;accent-color:#628b6c}.controller-options-body select{padding:8px;border:1px solid #dce6da;border-radius:5px;background:#fff;color:#273b2e}.controller-options-body small{color:#96a397}.practice-preview{display:flex;align-items:center;justify-content:center;gap:25px;padding:25px}.practice-avatar{width:55px;height:68px;flex:none;display:grid;place-items:start end;padding:10px;border-radius:14px;color:#273b2e;font-size:10px;transition:transform .12s}.practice-avatar.jump,.practice-avatar.up{transform:translateY(-15px)}.practice-avatar.duck:not(.released),.practice-avatar.down{transform:scaleY(.6);transform-origin:bottom}.practice-avatar.left{transform:translate(-15px)}.practice-avatar.right{transform:translate(15px)}.practice-preview strong{display:block;margin:9px 0;font:700 18px Space Grotesk}.practice-preview p{font-size:12px;color:#819083}@media(max-width:600px){.is-controller .controls.split-controls .jump,.is-controller .controls.split-controls .duck{min-height:220px;height:min(42vh,340px)}.is-controller .swipe-pad{min-height:220px;height:min(40vh,340px)}.is-controller .swipe-controls{padding-top:15px}.is-controller .controller-options{margin-top:12px}}.ping-panel{display:flex;flex-wrap:wrap;gap:12px 20px;margin:12px 0 18px;padding:12px 16px;background:#f4f6ee;border:1px solid #e2e7da;border-radius:10px;color:#728075;font-size:10px;font-weight:700;letter-spacing:.06em}.ping-panel span{display:flex;align-items:center;gap:7px}.ping-panel strong{font-size:13px;color:#2d4b38;letter-spacing:0}.player-metrics{margin-left:auto;display:flex;align-items:flex-end;flex-direction:column;gap:3px;white-space:nowrap}.player-metrics small{margin-left:0}.ping-badge{color:#58775c;font-size:11px;font-weight:700}.ping-caption{margin:-7px 0 12px;color:#8d998d;font-size:9px;font-weight:700;letter-spacing:.04em;line-height:1.4}
