:root{font-family:DM Sans,system-ui,sans-serif;color:#173d35;background:#f1eee6;font-synthesis:none;--ink: #173d35;--muted: #697d76;--paper: #f7f4ed;--cream: #e9e3d5;--coral: #e5674f;--yellow: #edbd55;--green: #1c5c4d;--shadow: 0 22px 60px rgba(39, 61, 53, .14)}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0}body{overflow:hidden}button,label{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit}button:focus-visible,label:focus-within{outline:4px solid rgba(229,103,79,.35);outline-offset:3px}.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(24px,4vw,76px);position:relative;z-index:20;background:#f1eee6eb;border-bottom:1px solid rgba(23,61,53,.09);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.brand{border:0;background:none;padding:0;display:flex;align-items:center;gap:11px;cursor:pointer;font-weight:700;font-size:19px}.brand em{font-family:"DM Serif Display";font-weight:400;color:var(--coral)}.brand-mark{width:34px;height:34px;display:grid;grid-template-columns:1fr 1fr;gap:2px;transform:rotate(8deg)}.brand-mark i{background:var(--ink);border-radius:4px;position:relative}.brand-mark i:nth-child(2),.brand-mark i:nth-child(3){background:var(--coral)}.top-actions{display:flex;gap:12px;align-items:center}.icon-button,.pill-button,.upload-button,.back-button,.secondary-button,.install-link{min-height:46px;border:1px solid rgba(23,61,53,.15);background:#ffffff8c;border-radius:28px;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:0 22px;font-weight:700;cursor:pointer}.install-link{color:var(--ink);text-decoration:none}.icon-button{width:46px;padding:0}svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.pill-button{background:var(--ink);color:#fff;border-color:var(--ink)}.view{height:calc(100vh - 72px);min-height:0;overflow:hidden}.hidden{display:none!important}.eyebrow{margin:0 0 14px;text-transform:uppercase;letter-spacing:.18em;font-size:12px;font-weight:700;color:var(--coral)}.gallery-view{display:flex;flex-direction:column;overflow-y:auto;padding:0 clamp(16px,4vw,42px) 28px;background:radial-gradient(circle at 76% 9%,rgba(237,189,85,.22),transparent 24%),var(--paper)}.hero{text-align:center;padding:clamp(20px,3vh,38px) 24px clamp(14px,2vh,24px);position:relative}h1,h2{font-family:"DM Serif Display",Georgia,serif;font-weight:400;margin:0}h1{font-size:clamp(40px,5vw,68px);line-height:.9;letter-spacing:-.045em}h1 span{color:var(--coral);font-style:italic}.hero-copy{margin:14px auto 0;max-width:600px;color:var(--muted);font-size:clamp(14px,1.2vw,17px)}.quick-start{width:min(720px,100%);margin:0 auto 12px;display:flex;gap:12px;flex-wrap:wrap}.quick-start .upload-button{flex:1 1 240px;min-height:52px;justify-content:center;border:1px solid rgba(23,61,53,.18);background:#fff}.quick-start .join-room-form{flex:1 1 240px;margin:0}.gallery-wrap{width:min(1500px,100%);margin:10px auto 0;display:flex;flex-direction:column}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:12px;margin-bottom:14px;flex-wrap:wrap}.section-heading .eyebrow{margin-bottom:5px}.section-heading h2{font-size:clamp(29px,2.6vw,42px)}.gallery-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.source-toggle{display:inline-flex;height:48px;border:1px solid rgba(23,61,53,.18);border-radius:26px;background:#fff;overflow:hidden}.source-option{border:0;background:transparent;padding:0 16px;color:var(--muted);font-weight:600;font-size:13px;cursor:pointer}.source-option.active{background:var(--ink);color:#fff}.unsplash-search{width:clamp(250px,25vw,390px);height:48px;display:flex;border:1px solid rgba(23,61,53,.18);border-radius:26px;background:#fff;overflow:hidden}.unsplash-search input{min-width:0;flex:1;border:0;outline:0;padding:0 5px 0 18px;background:transparent;color:var(--ink);font:inherit;font-size:14px}.unsplash-search button{width:52px;border:0;background:transparent;color:var(--ink);cursor:pointer}.refresh-photos-button{min-height:48px;padding:0 16px;border:1px solid rgba(23,61,53,.15);border-radius:25px;background:#ffffffa6;display:flex;align-items:center;gap:8px;color:var(--ink);font-weight:700;cursor:pointer}.refresh-photos-button svg{width:19px}.refresh-photos-button:disabled,.unsplash-search button:disabled{opacity:.45;cursor:wait}.upload-button input{display:none}.gallery-status{min-height:18px;margin:0 0 10px;color:var(--muted);font-size:12px}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.gallery-card{position:relative;aspect-ratio:3 / 2;overflow:hidden;border-radius:9px;background:#d8d7ce;box-shadow:0 1px #173d351a}.gallery-card-button{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0;background:transparent;cursor:pointer;text-align:left}.gallery-card img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease;pointer-events:none}.gallery-card:hover img{transform:scale(1.035)}.gallery-card:after{content:"";position:absolute;inset:42% 0 0;background:linear-gradient(transparent,#091f1ae0);pointer-events:none}.card-info{position:absolute;z-index:2;left:26px;bottom:24px;color:#fff}.card-info strong{display:block;max-width:34ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:"DM Serif Display";font-size:25px;font-weight:400}.card-info span{font-size:13px;opacity:.8}.photo-credit{position:absolute;z-index:4;right:13px;bottom:11px;max-width:52%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fffc;font-size:9px}.photo-credit a{color:inherit}.card-number{position:absolute;z-index:2;right:20px;top:20px;color:#fff;background:#0a221d59;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:7px 10px;border-radius:20px;font-size:11px;letter-spacing:.12em}.feature-strip{display:none}.feature-strip div{display:flex;flex-direction:column;border-right:1px solid rgba(23,61,53,.12)}.feature-strip div:last-child{border:0}.feature-strip strong{font-family:"DM Serif Display";font-size:43px;color:var(--coral)}.feature-strip span{color:var(--muted);font-size:13px;text-transform:uppercase;letter-spacing:.12em}.setup-view{background:var(--paper);padding:20px clamp(24px,4vw,64px) 24px}.back-button{border:0;background:transparent;padding-left:0}.setup-card{max-width:1330px;height:calc(100% - 66px);min-height:0;margin:14px auto 0;display:grid;grid-template-columns:1.08fr .92fr;background:#fff;box-shadow:var(--shadow)}.setup-preview,.setup-controls{min-width:0}.setup-preview{min-height:0;position:relative;overflow:hidden;background:#ddd}.setup-preview img{width:100%;height:100%;object-fit:cover;position:absolute}.preview-badge{position:absolute;top:25px;left:25px;background:#ffffffe0;padding:9px 15px;font-size:12px;font-weight:700;border-radius:30px}.setup-photo-credit{position:absolute;left:18px;bottom:16px;max-width:calc(100% - 36px);padding:7px 10px;border-radius:18px;background:#0a18139e;color:#fff;font-size:10px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.setup-photo-credit a{color:inherit}.setup-controls{padding:clamp(28px,3.2vw,50px);align-self:center}.setup-controls h2{font-size:clamp(38px,3.4vw,54px);line-height:1;overflow-wrap:anywhere}.setup-controls>p:not(.eyebrow){color:var(--muted);margin:13px 0 22px;font-size:15px}.piece-options{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.piece-options button{min-height:68px;border:1px solid #dfe2dc;background:#fafaf7;cursor:pointer;display:flex;flex-direction:column;justify-content:center;align-items:center}.piece-options strong{font-family:"DM Serif Display";font-size:25px;font-weight:400}.piece-options span{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.piece-options button.selected{background:var(--ink);color:#fff;border-color:var(--ink);transform:translateY(-4px);box-shadow:0 8px 0 var(--yellow)}.piece-options button.selected span{color:#ffffffa6}.toggle-row{margin:22px 0;display:flex;align-items:center;justify-content:space-between;cursor:pointer}.toggle-row span{display:flex;flex-direction:column;gap:4px}.toggle-row small{color:var(--muted)}.toggle-row input{display:none}.toggle-row i{width:58px;height:32px;background:#ccd3cf;border-radius:30px;position:relative;transition:.2s}.toggle-row i:after{content:"";width:24px;height:24px;background:#fff;border-radius:50%;position:absolute;left:4px;top:4px;transition:.2s;box-shadow:0 2px 5px #899}.toggle-row input:checked+i{background:var(--coral)}.toggle-row input:checked+i:after{transform:translate(26px)}.start-button{width:100%;min-height:54px;border:0;background:var(--coral);color:#fff;font-weight:700;font-size:15px;padding:0 22px;display:flex;justify-content:space-between;align-items:center;cursor:pointer}.start-button:disabled,.secondary-button:disabled{opacity:.5;cursor:not-allowed}.start-button span{font-size:25px}.continue-card{grid-row:2;width:100%;min-height:64px;margin:0 0 12px;border:0;background:var(--ink);color:#fff;padding:9px 16px;display:flex;align-items:center;gap:13px;text-align:left;cursor:pointer}.continue-icon{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;flex:0 0 auto;background:var(--coral)}.continue-card>span:nth-child(2){display:flex;flex-direction:column;gap:3px}.continue-card small{color:#ffffff9e;text-transform:uppercase;letter-spacing:.12em;font-size:9px}.continue-card strong{font-family:"DM Serif Display";font-size:20px;font-weight:400}.continue-meta{margin-left:auto;color:#ffffffb3;font-size:13px;min-width:0;overflow-wrap:anywhere;text-align:right}.game-active .topbar{display:none}.game-active{overflow:hidden}.game-view{height:100vh;min-height:600px;position:relative;overflow:hidden;background:#777c70;touch-action:none}#puzzleCanvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}#puzzleCanvas:active{cursor:grabbing}.table-menu-button{position:absolute;z-index:8;right:22px;bottom:22px;width:58px;height:58px;border:1px solid rgba(255,255,255,.22);border-radius:50%;background:#1d272173;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;opacity:.38;transition:opacity .2s,background .2s}.table-menu-button:hover,.table-menu-button:focus-visible{opacity:1;background:#1d2721cc}.table-menu-button span{width:4px;height:4px;border-radius:50%;background:#fff}.table-menu{position:absolute;z-index:10;right:18px;bottom:92px;width:min(390px,calc(100vw - 36px));max-height:calc(100vh - 110px);overflow:auto;padding:18px;background:#f7f4edf7;box-shadow:0 25px 80px #0b181359;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);touch-action:manipulation}.table-menu-head{display:flex;justify-content:space-between;align-items:start;padding-bottom:16px;border-bottom:1px solid rgba(23,61,53,.11)}.table-menu-head>div{min-width:0;flex:1;display:flex;flex-direction:column}.table-menu-head small{text-transform:uppercase;letter-spacing:.13em;color:var(--muted);font-size:9px}.table-menu-head strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:"DM Serif Display";font-size:25px;font-weight:400}.table-menu-head button{width:42px;height:42px;flex:0 0 auto;border:0;border-radius:50%;background:#e7e4dc;font-size:26px;cursor:pointer}.save-indicator{display:flex;align-items:center;gap:8px;padding:13px 3px;color:var(--muted);font-size:11px}.save-indicator i{width:7px;height:7px;border-radius:50%;background:#51a47d;box-shadow:0 0 0 3px #51a47d24}.table-photo-credit{position:absolute;z-index:6;left:14px;bottom:12px;max-width:min(52vw,540px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 9px;border-radius:16px;background:#141d1975;color:#ffffffc2;font-size:9px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.table-photo-credit a{color:inherit}.table-menu>button{width:100%;min-height:60px;border:0;border-top:1px solid rgba(23,61,53,.09);background:transparent;padding:8px 5px;display:flex;align-items:center;gap:13px;text-align:left;cursor:pointer;touch-action:manipulation}.table-menu>button:hover,.table-menu>button.active{background:#173d350f}.table-menu>button svg{width:27px;height:27px}.table-menu>button span{display:flex;flex-direction:column;gap:2px}.table-menu>button small{color:var(--muted)}.background-panel{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px 0 12px}.background-color-option,.background-texture-option{min-width:0;min-height:72px;border:2px solid transparent;border-radius:10px;background:#ebe8e0;padding:8px;display:flex;align-items:center;gap:9px;color:var(--ink);text-align:left;cursor:pointer;touch-action:manipulation}.background-color-option.active,.background-texture-option.active{border-color:var(--coral);background:#fff}.background-color-option input{width:42px;height:42px;flex:0 0 auto;padding:2px;border:0;border-radius:8px;background:transparent;cursor:pointer}.background-color-option>span,.background-texture-option>span:last-child{min-width:0;display:flex;flex-direction:column;gap:2px}.background-panel strong{font-size:12px}.background-panel small{color:var(--muted);font-size:9px;line-height:1.25}.background-texture-preview{width:42px;height:42px;flex:0 0 auto;border-radius:8px;box-shadow:inset 0 0 0 1px #fff3;background-size:cover;background-position:center}.wood-preview{background-image:linear-gradient(#00000014,#00000014),url(/assets/wooden-texture-table-0pMkseBX.jpg)}.oak-preview{background-image:linear-gradient(#0000000f,#0000000f),url(/assets/white_oak-7SJ3bnyL.jpg)}.walnut-preview{background-image:linear-gradient(#00000014,#00000014),url(/assets/table_top2-1FAZF0lO.jpg)}.dev-mode-panel{padding:9px;border-radius:10px;background:#e9e4da;display:grid;gap:9px}.dev-mode-panel>button,.completion-control button{min-height:48px;border:0;border-radius:8px;background:var(--ink);color:#fff;padding:9px 12px;text-align:left;cursor:pointer;touch-action:manipulation}.dev-mode-panel>button{display:flex;flex-direction:column;justify-content:center;gap:2px}.dev-mode-panel button small{color:#ffffffb3}.grid-tiles-control{padding:10px;border-radius:8px;background:#ffffffb8;display:grid;gap:9px}.grid-tiles-control label{min-height:42px;display:flex;align-items:center;gap:9px;cursor:pointer}.grid-tiles-control label>span{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.grid-tiles-control label small{color:var(--muted)}.grid-tiles-control input{position:absolute;opacity:0;pointer-events:none}.grid-tiles-control i{width:48px;height:28px;flex:0 0 auto;border-radius:20px;background:#bbc2bd;position:relative;transition:.18s}.grid-tiles-control i:after{content:"";position:absolute;width:20px;height:20px;left:4px;top:4px;border-radius:50%;background:#fff;box-shadow:0 2px 5px #0003;transition:.18s}.grid-tiles-control input:checked+i{background:var(--coral)}.grid-tiles-control input:checked+i:after{transform:translate(20px)}.grid-tiles-control button{min-height:48px;border:0;border-radius:8px;padding:8px 11px;background:var(--ink);color:#fff;display:flex;flex-direction:column;justify-content:center;gap:2px;text-align:left;cursor:pointer;touch-action:manipulation}.completion-control{padding:11px;border-radius:8px;background:#ffffffb8;display:grid;gap:10px}.completion-control>div{display:flex;align-items:center;justify-content:space-between}.completion-control output{min-width:48px;padding:5px 8px;border-radius:20px;background:var(--coral);color:#fff;text-align:center;font-weight:700;font-size:12px}.completion-control input[type=range]{width:100%;height:34px;margin:0;accent-color:var(--coral);cursor:pointer;touch-action:pan-x}.completion-control button{text-align:center;font-weight:700}.dev-mode-note{padding:0 3px 2px;color:var(--muted);line-height:1.35}.table-menu-footer{display:grid;grid-template-columns:.7fr 1.3fr;gap:8px;padding-top:18px}.table-menu-footer button{min-height:47px;border:1px solid rgba(23,61,53,.16);background:transparent;cursor:pointer;font-weight:700;font-size:12px}.table-menu-footer button:last-child{background:var(--ink);color:#fff}.reference-photo{--photo-scale: 1;--photo-rotation: -2deg;position:absolute;z-index:7;left:0;top:0;width:clamp(230px,22vw,430px);padding:10px 10px 30px;background:#f8f4e9;box-shadow:0 13px 32px #121e1861,0 2px 4px #121e1840;transform:translate3d(var(--photo-x, 50px),var(--photo-y, 50px),0) rotate(var(--photo-rotation)) scale(var(--photo-scale));transform-origin:center;touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab}.reference-photo:active{cursor:grabbing}.reference-photo.remote-glide{transition:transform .15s linear}.reference-photo img{display:block;width:100%;aspect-ratio:1.6;object-fit:cover;pointer-events:none}.reference-caption{position:absolute;left:15px;bottom:8px;color:#6c6a63;font-family:"DM Serif Display";font-size:13px;font-style:italic;pointer-events:none}.reference-photo button{position:absolute;right:-15px;top:-15px;width:38px;height:38px;border:2px solid rgba(255,255,255,.7);border-radius:50%;background:#1d2721d1;color:#fff;font-size:24px;line-height:1;cursor:pointer}.spotify-card{--spotify-x: 50px;--spotify-y: 50px;position:absolute;z-index:9;left:0;top:0;width:min(390px,calc(100vw - 32px));padding:8px;border-radius:16px;background:#171717;box-shadow:0 18px 48px #09141073;transform:translate3d(var(--spotify-x),var(--spotify-y),0)}.spotify-handle{height:48px;padding:0 4px 0 12px;display:flex;align-items:center;gap:12px;color:#fff;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.spotify-handle:active{cursor:grabbing}.spotify-playlist-button{width:38px;height:38px;padding:0;border:0;border-radius:50%;background:#ffffff14;display:flex;align-items:center;justify-content:center;gap:3px;cursor:pointer}.spotify-playlist-button i{width:4px;height:4px;border-radius:50%;background:#ffffffb8}.spotify-handle strong{flex:1;font-size:13px}.spotify-handle button{width:38px;height:38px;border:0;border-radius:50%;background:#ffffff1f;color:#fff;font-size:25px;cursor:pointer}.spotify-handle .spotify-playlist-button{font-size:inherit}.spotify-playlist-menu{position:absolute;z-index:2;left:8px;right:8px;top:54px;padding:7px;border-radius:12px;background:#f7f4ed;box-shadow:0 14px 38px #00000059}.spotify-playlist-menu button{width:100%;min-height:58px;padding:8px 11px;border:0;border-bottom:1px solid rgba(23,61,53,.1);background:transparent;color:#173d35;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;text-align:left;cursor:pointer}.spotify-playlist-menu button:last-child{border:0}.spotify-playlist-menu button.active{border-radius:8px;background:#173d351a}.spotify-playlist-menu strong{font-size:13px}.spotify-playlist-menu small{color:#697d76;font-size:10px}.spotify-card iframe{display:block;width:100%;height:min(352px,calc(100vh - 96px));border:0;border-radius:12px;background:#282828}.touch-tip{position:absolute;z-index:3;left:50%;bottom:20px;transform:translate(-50%);color:#ffffffa8;font-size:11px;letter-spacing:.02em;pointer-events:none;opacity:0;animation:tip-in-out 5s ease .5s both}@keyframes tip-in-out{15%,70%{opacity:1}to{opacity:0}}.modal{position:fixed;inset:0;z-index:100;background:#0e2922ad;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);display:grid;place-items:center;padding:30px}.modal-card{width:min(600px,94vw);max-height:calc(100vh - 40px);overflow:hidden;padding:30px;background:var(--paper);text-align:center;position:relative;box-shadow:0 30px 100px #0000004d}.modal-card h2{font-size:52px;color:var(--coral)}.modal-card>p:not(.eyebrow){color:var(--muted);overflow-wrap:anywhere}.finished-image{height:min(250px,32vh);margin:16px 0;padding:9px;background:#fff;box-shadow:0 5px 20px #0000001f;transform:rotate(-1.5deg)}.finished-image img{width:100%;height:100%;object-fit:cover}.finish-photo-credit{display:block;margin:-7px 0 13px;color:var(--muted);font-size:10px}.finish-photo-credit a{color:inherit}.modal-actions{display:grid;grid-template-columns:1fr 1.3fr;gap:10px}.secondary-button{border-radius:0;background:transparent}.confetti{position:fixed;inset:0;pointer-events:none;background-image:radial-gradient(circle,var(--yellow) 0 3px,transparent 4px),radial-gradient(circle,var(--coral) 0 4px,transparent 5px);background-size:90px 100px,130px 120px;animation:confetti 8s linear infinite;opacity:.65}@keyframes confetti{to{background-position:180px 400px,-260px 480px}}@media(max-width:900px){.hero{padding:20px 18px 16px}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}.gallery-actions{gap:6px}.unsplash-search{width:clamp(160px,40vw,300px)}.refresh-photos-button span{display:none}.refresh-photos-button{width:48px;padding:0;justify-content:center}.card-info{left:14px;bottom:13px}.card-info strong{font-size:22px}.card-info span{display:none}.photo-credit{right:8px;bottom:7px;max-width:62%;font-size:8px}.setup-view{padding-inline:20px}.setup-card{grid-template-columns:.9fr 1.1fr}.setup-controls{padding:24px}.setup-controls>p:not(.eyebrow){display:none}.piece-options button{min-height:58px}.touch-tip{display:none}}@media(max-width:560px){.topbar{height:62px;padding:0 12px}.view{height:calc(100vh - 62px)}.brand{font-size:17px}.brand-mark{width:32px;height:32px}.pill-button{padding:0 15px;min-height:45px}.hero{padding-block:16px 10px}.hero-copy{display:none}h1{font-size:38px}.section-heading{align-items:start;gap:10px}.section-heading .eyebrow{display:none}.section-heading h2{font-size:24px}.upload-button{padding:0 14px;min-height:48px;font-size:13px}.continue-card{min-height:54px}.continue-icon{width:36px;height:36px}.continue-card strong{font-size:17px}.gallery-grid{gap:6px}.card-number{display:none}.card-info{left:8px;bottom:8px}.card-info strong{font-size:15px}.setup-view{padding:8px 10px 14px;overflow-y:auto}.back-button{min-height:38px}.setup-card{height:auto;min-height:0;margin-top:6px;grid-template-columns:1fr;grid-template-rows:30vh auto}.setup-preview{min-height:0}.setup-controls{padding:18px 16px 22px;align-self:stretch}.setup-controls .eyebrow,.setup-controls>p:not(.eyebrow){display:none}.setup-controls h2{font-size:24px;margin-bottom:16px}.piece-options{grid-template-columns:repeat(3,1fr)}.piece-options button{min-height:52px}.piece-options strong{font-size:20px}.toggle-row{margin:14px 0;font-size:13px}.toggle-row small{display:none}.start-button{min-height:50px}.game-view{height:100vh}.continue-meta{display:none}.modal{padding:12px}.modal-card{padding:20px 16px}.modal-card h2{font-size:42px}.finished-image{height:28vh;margin:10px 0}}.join-room-form{display:flex;align-items:center;gap:8px;margin:0 0 12px}.join-room-form input{flex:1;min-width:0;height:52px;border:1px solid rgba(23,61,53,.18);border-radius:26px;background:#fff;color:var(--ink);font:inherit;font-size:14px;padding:0 18px;text-transform:uppercase;letter-spacing:.12em;outline:0}.join-room-form input::placeholder{text-transform:none;letter-spacing:0}.join-room-form input:focus{border-color:var(--coral)}.join-room-form button{height:52px;display:flex;align-items:center;gap:8px;border:0;border-radius:26px;background:var(--green);color:#fff;font-weight:600;font-size:14px;padding:0 20px;cursor:pointer;flex:0 0 auto}.join-room-form button svg{width:19px}.join-room-error{display:block;width:min(720px,100%);margin:-4px auto 8px;color:var(--coral);font-size:13px;min-height:1em;text-align:center}.continue-card{width:min(720px,100%);margin-left:auto;margin-right:auto}.rejoin-card{background:var(--green)}.rejoin-card .continue-icon{background:var(--yellow);color:var(--ink)}.play-mode{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:4px 0 14px}.play-mode-option{min-height:52px;border:1.5px solid rgba(23,61,53,.18);background:#fff;color:var(--muted);display:flex;align-items:center;justify-content:center;gap:9px;font-weight:600;font-size:15px;cursor:pointer}.play-mode-option svg{width:21px;height:21px}.play-mode-option.active{border-color:var(--ink);background:var(--ink);color:#fff}.play-mode-hint{margin:10px 0 0;color:var(--muted);font-size:13px;text-align:center}.join-card h2{letter-spacing:.14em}.join-room-meta{min-height:1.4em}.join-name-label{display:block;margin:18px 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);text-align:left}.join-card input[type=text]{width:100%;height:52px;border:1px solid rgba(23,61,53,.18);background:#fff;color:var(--ink);font:inherit;font-size:16px;padding:0 16px;outline:0}.join-card input[type=text]:focus{border-color:var(--coral)}.color-picker{display:flex;gap:10px;justify-content:center;margin:18px 0 22px;flex-wrap:wrap}.color-swatch{width:40px;height:40px;border-radius:50%;border:3px solid transparent;background:var(--swatch);cursor:pointer;transition:transform .15s,border-color .15s;padding:0}.color-swatch.selected{border-color:var(--ink);transform:scale(1.18)}.color-swatch:disabled{opacity:.25;cursor:not-allowed}.join-error{color:var(--coral);font-size:14px;margin-top:12px}.invite-code{letter-spacing:.2em}.invite-card canvas{width:min(240px,56vw);height:auto;margin:6px auto 0;display:block;border:10px solid white;box-shadow:var(--shadow)}.invite-hint{font-size:14px}.invite-link{font-size:13px;color:var(--muted);word-break:break-all;-webkit-user-select:all;user-select:all;margin:4px 0 18px}.hud-bar{position:absolute;z-index:4;top:14px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:14px;padding:8px 16px;border-radius:28px;background:#0e1e1ab8;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-size:14px;font-variant-numeric:tabular-nums;touch-action:manipulation;transition:opacity .6s ease}.hud-bar.hud-idle{opacity:.35}.hud-bar:hover{opacity:1}.hud-timer{font-weight:700;min-width:44px;text-align:center}.hud-progress{color:#ffffffbf;min-width:36px;text-align:center}.hud-players{display:flex;align-items:center}.hud-player-dot{width:26px;height:26px;border-radius:50%;background:var(--dot);color:#000000a6;display:grid;place-items:center;font-size:12px;font-weight:700;margin-left:-6px;border:2px solid rgba(14,30,26,.85)}.hud-player-dot:first-child{margin-left:0}.hud-player-dot.you{border-color:#fff}.hud-dot{width:11px;height:11px;border-radius:50%;background:#57c785}.hud-dot[data-status=reconnecting],.hud-dot[data-status=connecting]{background:var(--yellow);animation:hud-pulse 1.1s ease infinite}.hud-dot[data-status=closed]{background:var(--coral)}@keyframes hud-pulse{50%{opacity:.35}}.hud-button{width:34px;height:34px;border-radius:50%;border:0;background:#ffffff24;color:#fff;display:grid;place-items:center;cursor:pointer}.hud-button svg{width:17px;height:17px}.hud-button:hover{background:#ffffff42}.hud-invite{width:auto;height:34px;border-radius:17px;padding:0 14px;background:var(--coral);display:inline-flex;flex-direction:row;align-items:center;gap:7px}.hud-invite:hover{background:#d8543c}.hud-invite svg{flex:0 0 auto}.hud-invite-label{font-size:13px;font-weight:700;line-height:1;white-space:nowrap}.touch-toast{position:absolute;z-index:5;top:64px;left:50%;transform:translate(-50%);background:var(--paper);color:var(--ink);font-size:14px;font-weight:600;padding:10px 18px;border-radius:22px;border-left:6px solid var(--toast-accent, var(--coral));box-shadow:var(--shadow);pointer-events:none;animation:toast-in .18s ease}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-6px)}}.pause-overlay{position:absolute;inset:0;z-index:6;background:var(--paper);display:grid;place-items:center}.pause-card{display:grid;place-items:center;gap:10px;text-align:center;padding:24px}.pause-card h2{font-family:"DM Serif Display";font-size:56px;font-weight:400;color:var(--coral);margin:8px 0 0}.pause-card p{color:var(--muted);margin:0 0 16px}.pause-card .start-button{width:auto;gap:18px;padding:0 28px}.pause-card .brand-mark{width:52px;height:52px}.leaderboard-section{margin:16px 0 4px;text-align:left}.name-entry-form{display:flex;gap:8px;margin-bottom:14px}.name-entry-form input{flex:1;height:46px;border:1px solid rgba(23,61,53,.18);background:#fff;color:var(--ink);font:inherit;padding:0 14px;outline:0}.name-entry-form input:focus{border-color:var(--coral)}.name-entry-form button{border:1.5px solid var(--ink);padding:0 16px;cursor:pointer}.leaderboard-list{list-style:none;margin:0;padding:0;max-height:180px;overflow-y:auto}.leaderboard-list li{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:7px 10px;font-size:14px;counter-increment:rank}.leaderboard-list li:before{content:counter(rank);color:var(--muted);font-size:12px;min-width:18px}.leaderboard-list{counter-reset:rank}.leaderboard-list li:nth-child(odd){background:#173d350b}.leaderboard-list li.you{background:var(--yellow)}.leaderboard-list li span{color:var(--muted);white-space:nowrap}.leaderboard-empty{color:var(--muted);font-style:italic}.leaderboard-empty:before{content:""!important}body.in-room #resetBtn,body.in-room #changeCountBtn,body.in-room #devModeBtn,body.in-room #devModePanel{display:none}.preview-card{width:min(680px,94vw);padding:0;overflow:hidden}.modal-close{position:absolute;z-index:3;top:12px;right:12px;width:38px;height:38px;border:0;border-radius:50%;background:#0a18138c;color:#fff;font-size:22px;line-height:1;cursor:pointer}.preview-image{width:100%;aspect-ratio:3 / 2;background:#d8d7ce}.preview-image img{width:100%;height:100%;object-fit:cover;display:block}.preview-card .preview-title{font-family:"DM Serif Display";font-size:clamp(20px,2.6vw,28px);color:var(--ink);padding:18px 26px 0;line-height:1.1}.preview-credit{display:block;padding:6px 26px 0;color:var(--muted);font-size:12px}.preview-credit a{color:inherit}.preview-card .modal-actions{padding:18px 26px 24px}.rotate-handle{position:absolute;z-index:4;width:46px;height:46px;border-radius:50%;border:0;background:var(--ink);color:#fff;display:grid;place-items:center;cursor:pointer;transform:translate(-50%,-50%);touch-action:manipulation;box-shadow:0 6px 16px #0c191457;animation:handle-in .16s ease}.rotate-handle:hover{background:var(--coral)}.rotate-handle:active{transform:translate(-50%,-50%) scale(.92)}.rotate-handle svg{width:24px;height:24px}@keyframes handle-in{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}}@media(max-width:560px){.rotate-handle{width:40px;height:40px}.rotate-handle svg{width:21px;height:21px}}.modal-card{animation:card-pop .28s cubic-bezier(.2,.85,.3,1.15) both}@keyframes card-pop{0%{opacity:0;transform:translateY(16px) scale(.97)}}.start-button,.secondary-button,.start-together-button,.continue-card,.join-room-form button{transition:transform .14s ease,box-shadow .14s ease,background .14s ease}.start-button:active,.continue-card:active,.join-room-form button:active{transform:scale(.985)}.gallery-card-button img{transition:transform .35s ease}.gallery-card-button:hover img{transform:scale(1.04)}@media(max-width:900px){.join-room-form input{flex:1;width:auto;min-width:150px}}@media(max-width:560px){.hud-bar{top:8px;gap:8px;padding:6px 12px;font-size:12px;max-width:calc(100vw - 16px)}.hud-button{width:30px;height:30px}.hud-player-dot{width:22px;height:22px;font-size:10px}.invite-card canvas{width:min(200px,60vw)}.color-swatch{width:34px;height:34px}.pause-card h2{font-size:40px}.name-entry-form{flex-direction:column}}
