@font-face{font-family:TT Rounds Neue;src:url(/fonts/tt-rounds-neue-demibold.ttf) format("truetype");font-style:normal;font-weight:600;font-display:swap}:root{--background:#fff;--foreground:#0d0d0d;color-scheme:light}*{box-sizing:border-box;-moz-user-select:none;user-select:none;-webkit-user-select:none;-webkit-user-drag:none}body,html{margin:0;width:100%;height:100%;overflow:hidden;background:var(--background);overscroll-behavior:none;-webkit-touch-callout:none}:focus{outline:none}body{font-family:TT Rounds Neue,Arial,Helvetica,sans-serif;font-weight:600}.pool-page{position:relative;width:100%;height:100dvh;background:#fff;overflow:hidden;cursor:default;touch-action:none}.pool-canvas{position:absolute;inset:0;z-index:1;pointer-events:none;touch-action:none}.pool-canvas canvas{display:block}.pool-cursor{position:absolute;z-index:2;top:0;left:0;width:3px;height:45px;transform:translate(50vw,calc(50dvh - 22px));background:#6797ff;border-radius:999px;pointer-events:none;animation:blink 1.1s steps(1) infinite}.pool-cursor.is-hidden{display:none}.pool-input{inset:0;z-index:2;width:100%;height:100%;padding:0;outline:none;overflow:hidden;font-size:16px;color:transparent;caret-color:transparent;background:transparent;-webkit-text-fill-color:transparent}.fallback-input,.pool-input{position:absolute;border:0;resize:none;-moz-user-select:text;user-select:text;-webkit-user-select:text}.fallback-input{inset:30% 10%;outline:0;font-size:48px;text-align:center;background:#fff}.aim-line{position:absolute;z-index:3;top:0;left:0;display:block;height:3px;opacity:0;background-image:radial-gradient(circle at 1.5px 50%,currentColor 0 1.5px,transparent 1.6px);background-repeat:repeat-x;background-size:9px 3px;transform-origin:0 50%;pointer-events:none}.aim-line.is-visible{opacity:1}.pool-dock{position:absolute;z-index:20;left:50%;bottom:18px;display:flex;flex-direction:column;align-items:center;gap:6px;transform:translateX(-50%)}.pool-metrics{margin:0;color:#000;font-size:16px;font-weight:600;line-height:1;text-align:center;opacity:.2;pointer-events:none}.pool-reset{display:flex;gap:4px;padding:6px;border:0;background:transparent}.pool-reset:focus-visible{outline:2px solid #0c76ff;outline-offset:3px;border-radius:999px}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}@media (pointer:fine){.pool-reset{cursor:pointer}}@media (prefers-reduced-motion:reduce){.pool-cursor{animation:none}}button,input{font:inherit}a,button{-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.35}.ball-letters{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:4px}.letter-ball{flex:0 0 auto;display:grid;place-items:center;width:var(--ball-size,29px);height:var(--ball-size,29px);border-radius:50%;transform:rotate(var(--ball-rotation,0deg));background:var(--ball-color);color:#0d0d0d;-moz-user-select:none;user-select:none;-webkit-user-select:none}.letter-ball>span{display:grid;place-items:center;width:59%;height:59%;border-radius:50%;background:#f5f5f5;font-size:calc(var(--ball-size, 29px) * .31);line-height:1}.letter-space{width:calc(var(--ball-size, 29px) * .45);height:var(--ball-size,29px);flex:0 0 auto}.ball-button{text-decoration:none;min-height:44px;align-items:center;justify-content:center;cursor:pointer;touch-action:manipulation}.ball-button .letter-ball{transition:transform .14s cubic-bezier(.23,1,.32,1)}.ball-button:active:not(:disabled) .letter-ball{transform:rotate(var(--ball-rotation,0deg)) scale(.95)}.ball-button:active:not(:disabled):hover .letter-ball{transform:translateY(var(--ball-hover-y,0)) rotate(var(--ball-rotation,0deg)) scale(.95)}.save-error{width:min(85vw,340px);color:#9c3434;text-align:center;font-size:11px;margin:0 0 8px}.text-button:focus-visible,a:focus-visible{outline:2px solid #6797ff;outline-offset:3px}.save-dialog{position:fixed;inset:0;width:100%;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;overflow:hidden;color:#0d0d0d;background:transparent;border:0;border-radius:0;box-shadow:none;cursor:default;touch-action:pan-y}.save-dialog::-webkit-backdrop{background:rgb(255 255 255/80%);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.save-dialog::backdrop{background:rgb(255 255 255/80%);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.save-dialog[open]{opacity:1;transition:opacity .18s ease-out}@starting-style{.save-dialog[open]{opacity:0}}.name-editor{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(900px,calc(100% - 48px));height:80px;cursor:text}.name-input{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;background:transparent;color:transparent;caret-color:transparent;outline:none;font-size:36px;text-align:center;-moz-user-select:text;user-select:text;-webkit-user-select:text}.send-button{position:absolute;bottom:max(18px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);margin:0}.gallery-page{width:100%;height:100dvh;overflow:auto;background:#fff;overscroll-behavior-y:contain;padding:0 max(24px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(24px,env(safe-area-inset-left))}.gallery-header{display:flex;justify-content:space-between;align-items:center;padding:max(26px,env(safe-area-inset-top)) 0 30px}.back-link{width:-moz-fit-content;width:fit-content}.gallery-grid{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:24px;gap:24px}.gallery-card{content-visibility:auto;contain-intrinsic-size:auto 360px;container-type:inline-size;position:relative;aspect-ratio:auto;padding-bottom:0;min-width:0;overflow:hidden;border:0;border-radius:8px;background:#fff}.gallery-image-placeholder{display:block;width:100%;aspect-ratio:1;border-radius:8px}.gallery-download{display:flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;transition:filter .14s ease;flex:0 0 auto;padding:8px 0 8px 16px;border:0;background:transparent;color:#e3e3e3;opacity:1;font-size:16px;cursor:pointer;touch-action:manipulation}.skeleton{background:#f6f6f6;animation:skeleton-pulse 1.6s ease-in-out infinite alternate}.skeleton-name{position:absolute;width:28%;height:12px;border-radius:99px;left:36%;bottom:20px}.pending-message{position:absolute;inset:0 8px 52px;display:flex;flex-wrap:wrap;gap:8px;align-content:center;justify-content:center;align-items:center;color:#999;font-size:10px;text-align:center}.pending-message p{width:100%;margin:0 0 4px;line-height:1.4}.text-button{background:transparent;border:0;padding:8px 4px;color:#555;cursor:pointer;font-size:11px;text-underline-offset:3px;text-decoration:underline}.text-button.muted{color:#999}.gallery-sentinel{min-height:90px;padding:24px 0 8px;text-align:center;color:#aaa;font-size:11px}.gallery-empty{min-height:50vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;font-size:12px;color:#999}@keyframes skeleton-pulse{0%{opacity:.5}to{opacity:1}}@media (min-width:640px){.gallery-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1000px){.gallery-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:1200px){.gallery-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (min-width:1700px){.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}}@media (max-width:639px){.gallery-page{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}.gallery-grid{gap:24px}.gallery-header{padding-top:max(14px,env(safe-area-inset-top));padding-bottom:20px}.pool-dock{bottom:max(18px,env(safe-area-inset-bottom))}}@media (hover:hover) and (pointer:fine){.ball-button:not(:disabled):hover .letter-ball{transform:translateY(var(--ball-hover-y,-3px)) rotate(var(--ball-rotation,0deg))}}@media (prefers-reduced-motion:reduce){.ball-button .letter-ball,.save-dialog[open]{transition:none}.skeleton{animation:none}}.table-gallery,.table-save{position:absolute;z-index:5;top:max(18px,env(safe-area-inset-top))}.table-save{right:max(18px,env(safe-area-inset-right))}.table-gallery{left:max(18px,env(safe-area-inset-left))}.gallery-open{overflow:hidden;display:block;position:relative;width:100%;aspect-ratio:1;padding:0;border:0;border-radius:8px;background:transparent;cursor:pointer;text-decoration:none;color:inherit}.gallery-open:disabled{opacity:1}.gallery-open:focus-visible{outline:2px solid #6797ff;outline-offset:-3px}.gallery-end{margin:16px auto;max-width:100%;font-size:16px;color:#E3E3E3}@media (max-width:639px){.table-gallery,.table-save{--ball-size:24px;top:max(12px,env(safe-area-inset-top))}.table-save{right:6px}.table-gallery{left:6px}.table-gallery .ball-letters,.table-save .ball-letters{gap:3px}}.pool-input{cursor:text}.pool-play-surface{position:absolute;inset:0;z-index:2;touch-action:none;cursor:default}.table-by{position:absolute;z-index:20;bottom:max(24px,env(safe-area-inset-bottom));left:max(24px,env(safe-area-inset-left));margin:0;font-size:22px;color:#000;max-width:calc(100% - 170px);line-height:1.8}.colored-name{display:inline-flex;flex-wrap:wrap;justify-content:center;font:inherit}.colored-name>span{display:inline-block;white-space:pre}.name-text-preview{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden;pointer-events:none;font-size:36px;color:#000}.name-text-preview .colored-name{flex-wrap:nowrap}.gallery-name{position:relative;min-width:0;padding:10px 0;min-height:52px;display:flex;justify-content:flex-start;align-items:center;font-size:22px;line-height:1.2;color:#000;text-align:left;overflow-wrap:anywhere}.message-preview{transform:scale(1);transition:transform .2s cubic-bezier(.23,1,.32,1);display:block;width:100%;height:100%;aspect-ratio:1;border-radius:8px}@media (max-width:639px){.pool-page .table-by{top:max(18px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));bottom:auto;left:auto;max-width:calc(100% - 156px);align-items:flex-end;text-align:right}.pool-page .table-by .colored-name{justify-content:flex-end}}.playback-fallback{position:absolute;inset:20% 8%;display:grid;place-items:center;font-size:clamp(18px,4vw,48px);text-align:center;white-space:pre-wrap;overflow:auto}.name-input::placeholder{color:#E3E3E3;opacity:1}.name-text-ink{flex:0 0 auto;white-space:nowrap}.name-editor[data-overflow=true] .name-text-preview{justify-content:flex-start}.name-editor[data-overflow=true] .name-input,.table-by{text-align:left}.table-by{display:flex;flex-direction:column;align-items:flex-start;line-height:1.1}.by-label{font-size:14px;color:#E3E3E3}.download-chooser{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:calc(100% - 32px)}.download-options{--format-height:clamp(76px,18vw,140px);display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:center;gap:clamp(24px,8vw,100px)}.download-format{transition:opacity .18s ease-out,transform .18s cubic-bezier(.23,1,.32,1);display:flex;flex-direction:column;align-items:center;gap:16px;padding:0;border:0;background:transparent;font-size:16px;color:#000;cursor:pointer;transform:rotate(var(--format-rotation,0deg))}.format-shape{display:block;height:var(--format-height);width:calc(var(--format-height) * var(--format-ratio));border-radius:8px;background:#E3E3E3;transition:transform .14s ease-out}.download-format:active:not(:disabled) .format-shape{transform:scale(.97)}.download-format:focus-visible{outline:2px solid #6797ff;outline-offset:8px;border-radius:8px}.download-status{margin:24px 0 0;color:rgb(0 0 0/40%);text-align:center;font-size:12px}.download-hold{position:absolute;inset:80px 16px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.download-hold img{max-width:100%;max-height:calc(100dvh - 160px);object-fit:contain;border-radius:8px;-webkit-touch-callout:default;-webkit-user-drag:auto}.download-hold p{margin:0;color:#e3e3e3;font-size:16px}@media (prefers-reduced-motion:reduce){.format-shape{transition:none}}.skeleton-card{padding-bottom:52px}.gallery-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 8px 8px 0}.gallery-footer .colored-name{justify-content:flex-start}.gallery-download:focus-visible{outline:2px solid #6797ff;outline-offset:3px}.name-cursor{position:absolute;z-index:1;top:50%;width:3px;height:44.8px;transform:translateY(-50%);background:#6797ff;border-radius:999px;pointer-events:none;visibility:hidden}.name-editor:focus-within .name-cursor{visibility:visible;animation:blink 1.1s steps(1) infinite}@media (max-width:599px){.name-cursor{height:33.6px}}@media (prefers-reduced-motion:reduce){.name-editor:focus-within .name-cursor{animation:none}}@media (hover:hover) and (pointer:fine){.gallery-card:hover .message-preview{transform:scale(1.05)}.gallery-download:hover{filter:brightness(90%)}.download-format:not(:disabled):hover{opacity:.8;transform:translateY(-5px) rotate(var(--format-rotation,0deg))}}@media (prefers-reduced-motion:reduce){.download-format,.gallery-download,.message-preview{transition:none}.gallery-card:hover .message-preview{transform:none}.download-format:not(:disabled):hover{transform:rotate(var(--format-rotation,0deg))}}