@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/bricolage-grotesque-latin-700-normal-gtcctNPv.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-700-normal-DvJDmrLu.woff) format("woff")}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/bricolage-grotesque-latin-800-normal-J50vIsBe.woff2) format("woff2"),url(/assets/bricolage-grotesque-latin-800-normal-Br4b-5gk.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}:root{--color-paper:oklch(22% .025 224);--color-paper-2:oklch(26% .029 223);--color-paper-3:oklch(31% .032 221);--color-ink:oklch(94% .016 90);--color-muted:oklch(74% .025 207);--color-subtle:oklch(69% .023 207);--color-rule:oklch(40% .029 214);--color-accent:oklch(83% .095 169);--color-accent-ink:var(--color-paper);--color-accent-hover:oklch(90% .075 169);--color-focus:oklch(87% .11 169);--color-coral:oklch(78% .13 34);--color-success:oklch(83% .1 151);--color-common:oklch(80% .025 230);--color-uncommon:oklch(78% .11 151);--color-rare:oklch(77% .105 246);--color-epic:oklch(78% .11 305);--color-legendary:oklch(84% .11 84);--color-sky:oklch(42% .046 225);--color-horizon:oklch(69% .044 170);--color-mountain-far:oklch(44% .035 212);--color-mountain:oklch(36% .039 212);--color-mountain-front:oklch(29% .034 208);--color-water:oklch(43% .067 195);--color-water-deep:oklch(29% .038 215);--color-water-light:oklch(62% .067 182);--color-tree:oklch(27% .039 175);--color-tree-light:oklch(36% .047 169);--color-wood:oklch(48% .047 70);--color-wood-light:oklch(65% .057 74);--color-skin:oklch(79% .064 60);--color-shadow:oklch(14% .024 220);--font-display:"Bricolage Grotesque", sans-serif;--font-body:"IBM Plex Sans", sans-serif;--font-mono:"IBM Plex Mono", monospace;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:64px;--space-tiny:2px;--space-gap:12px;--space-row:20px;--space-panel:28px;--space-section:40px;--space-wide:56px;--space-scene:80px;--space-page:96px;--space-hero:128px;--space-view:160px;--space-stage:224px;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-md:1.25rem;--text-lg:1.5625rem;--text-xl:1.953rem;--text-display:clamp(3.3rem, 6.8vw, 6.75rem);--ease-out:cubic-bezier(.16,1,.3,1);--ease-in:cubic-bezier(.7,0,.84,0);--ease-in-out:cubic-bezier(.65,0,.35,1);--dur-micro:.12s;--dur-short:.22s;--dur-long:.42s;--radius-sm:8px;--radius-md:16px;--radius-lg:24px;--radius-pill:999px;--rule-thin:1px}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-xl:1.25rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.static{position:static}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.grid{display:grid}.hidden{display:none}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}*{box-sizing:border-box}html,body{margin:0;overflow-x:clip}html{color-scheme:dark;background:var(--color-paper)}body{font-family:var(--font-body);color:var(--color-ink);font-size:var(--text-base);line-height:1.55}button,input,select,textarea{font:inherit}button{cursor:pointer}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button:disabled,input:disabled,select:disabled{cursor:not-allowed;opacity:.55}button:active:not(:disabled){filter:brightness(.94)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:4px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.035em;overflow-wrap:anywhere;min-width:0;font-style:normal;line-height:1.13}h1{font-size:var(--text-display);font-weight:800}h2{font-size:var(--text-xl);font-weight:700}h3{font-size:var(--text-md);font-weight:700}strong{font-weight:600}svg{flex-shrink:0}a{color:inherit}input,select{border:1px solid var(--color-rule);border-radius:var(--radius-sm);width:100%;padding:var(--space-gap) var(--space-gap);background:var(--color-paper);color:var(--color-ink);min-width:0}input::placeholder{color:var(--color-subtle)}input[aria-invalid=true]{border-color:var(--color-coral)}input[type=checkbox]{width:18px;height:18px;accent-color:var(--color-accent)}input[type=range]{accent-color:var(--color-accent);border:0;min-height:28px;padding:0}.button{justify-content:center;align-items:center;gap:var(--space-gap);min-height:48px;padding:var(--space-gap) var(--space-lg);border-radius:var(--radius-sm);white-space:nowrap;transition:transform var(--dur-micro) var(--ease-out),opacity var(--dur-micro) var(--ease-out);border:1px solid #0000;font-weight:500;text-decoration:none;display:inline-flex}.button:active:not(:disabled),.icon-button:active{transform:translateY(1px)}.button.primary{background:var(--color-accent);color:var(--color-accent-ink)}.button.primary:hover:not(:disabled){background:var(--color-accent-hover)}.button.secondary{background:var(--color-paper-2)}@supports (color:color-mix(in lab,red,red)){.button.secondary{background:color-mix(in oklch,var(--color-paper-2) 86%,transparent)}}.button.secondary{border-color:var(--color-rule);color:var(--color-ink)}.button.secondary:hover:not(:disabled){background:var(--color-paper-3)}.button.small{min-height:44px;padding:var(--space-sm) var(--space-gap);font-size:var(--text-sm)}.text-button{justify-content:center;align-items:center;gap:var(--space-sm);min-height:44px;padding:var(--space-sm) 0;color:var(--color-ink);white-space:nowrap;font-size:var(--text-sm);background:0 0;border:0;display:inline-flex}.text-button:hover:not(:disabled){color:var(--color-accent)}.icon-button{border-radius:var(--radius-sm);width:44px;height:44px;color:var(--color-ink);background:0 0;border:0;place-items:center;display:inline-grid}.icon-button:hover{background:var(--color-ink)}@supports (color:color-mix(in lab,red,red)){.icon-button:hover{background:color-mix(in oklch,var(--color-ink) 8%,transparent)}}.muted{color:var(--color-muted)}.small-copy{font-size:var(--text-sm)}.form-error{color:var(--color-coral);font-size:var(--text-sm);padding:var(--space-sm) 0}.field{gap:var(--space-sm);color:var(--color-muted);font-size:var(--text-sm);flex-direction:column;display:flex}.form-stack{gap:var(--space-lg);flex-direction:column;display:flex}.form-columns{gap:var(--space-md);grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);display:grid}.inline-note{gap:var(--space-sm);color:var(--color-muted);font-size:var(--text-sm);align-items:center;display:flex}.surface{background:var(--color-paper)}@supports (color:color-mix(in lab,red,red)){.surface{background:color-mix(in oklch,var(--color-paper) 94%,transparent)}}.surface{border:1px solid var(--color-rule)}@supports (color:color-mix(in lab,red,red)){.surface{border:1px solid color-mix(in oklch,var(--color-rule) 65%,transparent)}}.surface{border-radius:var(--radius-md)}.dialog{color:var(--color-ink);border:1px solid var(--color-rule);border-radius:var(--radius-lg);background:var(--color-paper-2);width:min(540px,100vw - 32px);max-height:calc(100dvh - 32px);padding:var(--space-xl);box-shadow:0 24px 80px var(--color-shadow);margin:auto}@supports (color:color-mix(in lab,red,red)){.dialog{box-shadow:0 24px 80px color-mix(in oklch,var(--color-shadow) 65%,transparent)}}.dialog::backdrop{background:var(--color-shadow)}@supports (color:color-mix(in lab,red,red)){.dialog::backdrop{background:color-mix(in oklch,var(--color-shadow) 72%,transparent)}}.dialog::backdrop{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.dialog[open]{animation:dialog-enter var(--dur-short) var(--ease-out)}.dialog-wide{width:min(820px,100vw - 32px)}.dialog-head{gap:var(--space-md);margin-bottom:var(--space-lg);justify-content:space-between;align-items:flex-start;display:flex}.dialog-head h2{padding-top:var(--space-xs);font-size:1.8rem}.dialog-head .icon-button{margin:calc(var(--space-xs) * -1) calc(var(--space-sm) * -1) 0 0;flex-shrink:0}.dialog-intro{margin-bottom:var(--space-lg);max-width:54ch}.code-input{font-family:var(--font-mono);letter-spacing:.3em;text-align:center;font-size:2rem}.settings-body{gap:var(--space-row);display:grid}.setting-row,.slider-label>span{justify-content:space-between;align-items:center;display:flex}.slider-label{color:var(--color-muted);font-size:var(--text-sm)}.slider-label output{font-variant-numeric:tabular-nums}.check-field{align-items:center;gap:var(--space-gap);display:flex}.instructions{gap:var(--space-lg);margin-bottom:var(--space-panel);display:grid}.instructions>div{gap:var(--space-md);display:flex}.instructions svg{color:var(--color-accent);margin-top:var(--space-xs)}.instructions strong{margin-bottom:var(--space-xs);color:var(--color-ink);display:block}.instructions p{color:var(--color-muted);font-size:var(--text-sm)}.browser-filters{gap:var(--space-gap);margin:var(--space-lg) 0;display:flex}.browser-filters select{font-size:var(--text-sm)}.lobby-list-row{gap:var(--space-row);padding:var(--space-row) 0;border-top:1px solid var(--color-rule);grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;display:grid}.lobby-list-row>div{min-width:0;display:grid}.lobby-list-row strong{overflow-wrap:anywhere}.lobby-list-row span{font-size:var(--text-sm)}.room-count{gap:var(--space-xs);color:var(--color-muted);align-items:center;display:inline-flex}.status-label{color:var(--color-accent)}.status-label.in-progress{color:var(--color-legendary)}.empty-state{padding:var(--space-section) var(--space-gap);text-align:center;color:var(--color-muted)}.empty-state svg{margin:0 auto var(--space-md);opacity:.8;display:block}.empty-state h3{margin-bottom:var(--space-sm);color:var(--color-ink)}.pagination{margin-top:var(--space-md);justify-content:space-between;align-items:center;display:flex}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:clip}@keyframes dialog-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}.app{min-height:100dvh;position:relative;isolation:isolate;display:flex;flex-direction:column}.lake-scene{position:fixed;inset:0;z-index:-3;pointer-events:none}.lake-2d>svg{width:100%;height:100%;display:block}.lake-2d{background:var(--color-water-deep)}.lake-3d canvas{display:block}.renderer-notice{position:fixed;right:24px;bottom:8px;font-size:.65rem;color:var(--color-muted);pointer-events:none}.boat-name{font-family:var(--font-body);font-size:13px}.scene-shade{position:fixed;inset:0;z-index:-2;pointer-events:none;background:linear-gradient(90deg,color-mix(in oklch,var(--color-paper) 98%,transparent),color-mix(in oklch,var(--color-paper) 3%,transparent) 95%)}.scene-shade:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,color-mix(in oklch,var(--color-paper) 96%,transparent),transparent 45%)}.app-header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-lg);padding:var(--space-panel) 4.8vw;position:relative;z-index:10}.wordmark{display:flex;align-items:center;gap:var(--space-sm);font-family:var(--font-display);font-weight:800;font-size:24px;letter-spacing:-.055em;white-space:nowrap}.brand-fish,.brand-period{color:var(--color-accent)}.app-header nav{display:flex;align-items:center;gap:var(--space-gap)}.nav-divider{width:1px;height:22px;background:color-mix(in oklch,var(--color-muted) 35%,transparent);margin:0 var(--space-sm)}.app-header .how-button{gap:var(--space-sm)}.app-footer{margin-top:auto;display:flex;justify-content:space-between;gap:var(--space-row);padding:var(--space-row) 4.8vw var(--space-panel);color:var(--color-muted);font-size:.8rem}.app-footer>span:first-child{display:inline-flex;align-items:center;gap:var(--space-sm)}.quiet-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--color-accent);flex-shrink:0}.landing-main{display:flex;flex:1;padding:clamp(var(--space-panel),5vh,var(--space-3xl)) 4.8vw var(--space-wide);position:relative;align-items:center;min-height:650px}.landing-copy{max-width:620px}.lake-note{display:flex;align-items:center;gap:var(--space-sm);color:var(--color-accent);font-size:var(--text-sm);margin-bottom:var(--space-lg)}.landing-copy h1{font-size:clamp(3.3rem,5.7vw,5.4rem);letter-spacing:-.055em;line-height:1.055}.tagline{margin-top:var(--space-lg);font-weight:500;font-size:var(--text-md);color:var(--color-accent)}.landing-description{margin-top:var(--space-gap);color:var(--color-muted);line-height:1.75;max-width:42ch}.entry-controls{width:min(440px,100%);margin-top:var(--space-xl)}.nickname-field{display:grid;grid-template-columns:minmax(0,1fr) auto;background:color-mix(in oklch,var(--color-paper-2) 85%,transparent);border:1px solid var(--color-rule);border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);gap:0 var(--space-row)}.nickname-field>span{color:var(--color-muted);font-size:var(--text-xs)}.nickname-field>svg{grid-column:2;grid-row:1 / 3;align-self:center;color:var(--color-subtle)}.nickname-field input{background:transparent;border:0;padding:var(--space-tiny) 0;border-radius:0;font-size:var(--text-base)}.nickname-field input:focus-visible{outline:0}.nickname-field:focus-within{outline:2px solid var(--color-focus);outline-offset:3px}.entry-buttons{margin-top:var(--space-gap);display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:var(--space-gap)}.entry-buttons .primary{justify-content:space-between}.browse-button{margin-top:var(--space-gap);color:var(--color-muted);gap:var(--space-sm)}.browse-button svg:last-child{margin-left:var(--space-gap)}.landing-facts{display:flex;gap:var(--space-panel);margin-top:var(--space-panel);color:var(--color-muted);font-size:var(--text-xs)}.landing-facts span{display:inline-flex;align-items:center;gap:var(--space-sm)}.scene-caption{position:absolute;right:7vw;bottom:62px;display:flex;align-items:flex-start;gap:var(--space-gap);color:var(--color-muted);font-size:var(--text-sm)}.scene-caption strong{color:var(--color-ink);font-weight:400}.caption-line{height:35px;width:1px;background:var(--color-accent);opacity:.6;margin-top:var(--space-xs)}.connection-banner{margin:0 4.8vw var(--space-gap);padding:var(--space-sm) var(--space-md);display:flex;align-items:center;gap:var(--space-gap);border:1px solid var(--color-coral);background:var(--color-paper);border-radius:var(--radius-sm);color:var(--color-coral);font-size:var(--text-sm)}.connection-banner span{flex:1}.loading-page,.error-page{padding:18vh 8vw}.error-page h1{font-size:3rem;margin:var(--space-lg) 0}.error-page p{max-width:55ch;margin-bottom:var(--space-lg)}.waiting-layout{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:8vw;width:100%;padding:var(--space-wide) 7vw var(--space-scene) 5vw;align-items:start;flex:1}.waiting-intro{padding-top:var(--space-section)}.waiting-intro h1{font-size:clamp(2.8rem,5vw,4.9rem);max-width:11ch}.waiting-intro>p{margin-top:var(--space-row);line-height:1.8;color:var(--color-muted)}.invite-block{margin:var(--space-xl) 0 var(--space-row)}.invite-block>span{font-size:var(--text-sm);color:var(--color-muted)}.invite-block>div{display:flex;align-items:center;gap:var(--space-row);margin:var(--space-sm) 0}.invite-block strong{font-family:var(--font-mono);font-weight:400;font-size:2.2rem;letter-spacing:.15em;color:var(--color-accent)}.invite-block small{color:var(--color-muted)}.waiting-roster{padding:var(--space-lg)}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-gap);margin-bottom:var(--space-row)}.panel-heading h2{font-size:1.35rem}.panel-heading>span{display:flex;align-items:center;gap:var(--space-xs);color:var(--color-muted);font-size:var(--text-sm)}.waiting-player{display:flex;align-items:center;gap:var(--space-gap);padding:var(--space-md) 0;border-top:1px solid color-mix(in oklch,var(--color-rule) 50%,transparent)}.waiting-player>div{flex:1;display:grid;gap:var(--space-tiny)}.player-avatar{display:grid;place-items:center;width:37px;height:37px;border-radius:50%;flex-shrink:0;background:color-mix(in oklch,var(--player-color,var(--color-accent)) 18%,var(--color-paper));color:var(--player-color,var(--color-accent));font-size:var(--text-sm)}.you-label{margin-left:var(--space-xs);color:var(--color-muted);font-weight:400;font-size:.7rem}.host-icon{color:var(--color-legendary)}.ready-icon{color:var(--color-accent)}.waiting-dot{width:6px;height:6px;border-radius:50%;background:var(--color-subtle)}.open-seat{display:flex;align-items:center;gap:var(--space-gap);padding:var(--space-gap) 0;color:var(--color-subtle);font-size:var(--text-sm)}.empty-avatar{width:37px;height:37px;border:1px dashed var(--color-rule);border-radius:50%;display:grid;place-items:center}.waiting-actions{display:grid;gap:var(--space-gap);margin-top:var(--space-lg)}.waiting-actions p{text-align:center}.spectator-note{color:var(--color-muted);font-size:var(--text-sm);margin:var(--space-gap) 0}.water-line{animation:water-breathe 6s var(--ease-in-out) infinite alternate}.still .water-line{animation:none}@keyframes water-breathe{to{opacity:.05;transform:translate(14px)}}.game-layout{position:relative;flex:1;padding:var(--space-gap) 4.8vw var(--space-xl);min-height:calc(100dvh - 176px);display:flex;flex-direction:column}.game-heading{display:flex;justify-content:space-between;gap:var(--space-row);margin-bottom:var(--space-row)}.game-heading h1{font-size:2.25rem;margin:var(--space-xs) 0}.game-heading .muted{font-size:var(--text-sm)}.camera-controls{display:flex;gap:var(--space-sm);align-items:flex-start}.rarity-label{color:var(--rarity-color,var(--color-common));text-transform:uppercase;font-size:.7rem;font-weight:600;letter-spacing:.14em}.rarity-label span{letter-spacing:0;text-transform:none;color:var(--color-muted);font-weight:400;font-size:.8rem}.rarity-common{--rarity-color: var(--color-common)}.rarity-uncommon{--rarity-color: var(--color-uncommon)}.rarity-rare{--rarity-color: var(--color-rare)}.rarity-epic{--rarity-color: var(--color-epic)}.rarity-legendary{--rarity-color: var(--color-legendary)}.player-list-toggle{position:absolute;right:4.8vw;top:128px;bottom:32px;width:270px;overflow-y:auto}.player-list-toggle summary{display:none;cursor:pointer}.player-list{padding:var(--space-row);max-height:100%;overflow-y:auto}.player-list .panel-heading{margin-bottom:var(--space-sm)}.player-list .panel-heading h2{font-size:var(--text-base);letter-spacing:-.02em}.player-list .panel-heading>span{font-size:.7rem}.player-row{width:100%;background:transparent;border:0;border-radius:var(--radius-sm);color:var(--color-ink);display:flex;align-items:center;padding:var(--space-gap) 0;gap:var(--space-sm);text-align:left}.player-row:disabled{opacity:1}.player-row:not(:disabled):hover,.player-row.selected{background:var(--color-paper-3)}.player-row .player-avatar{width:29px;height:29px;font-size:.75rem}.player-details{flex:1;min-width:0}.player-name{display:flex;gap:var(--space-tiny);align-items:center;font-size:.8rem}.player-name strong{overflow:clip;text-overflow:ellipsis;white-space:nowrap}.player-name>svg{color:var(--color-legendary);margin-left:var(--space-xs)}.player-percent{font-variant-numeric:tabular-nums;font-size:.75rem;color:var(--player-color)}.player-details small{display:flex;gap:var(--space-tiny);align-items:center;color:var(--color-muted);font-size:.64rem}.player-details small span{margin-left:auto}.tiny-progress,.progress-track{overflow:clip;background:var(--color-paper-3);border-radius:var(--radius-pill);height:3px}.tiny-progress{margin:var(--space-sm) 0}.tiny-progress span,.progress-track span{display:block;width:100%;height:100%;background:var(--player-color,var(--color-accent));transform-origin:left;transition:transform var(--dur-short) var(--ease-out)}.spectator-count{display:flex;gap:var(--space-sm);color:var(--color-muted);font-size:.75rem;padding-top:var(--space-sm)}.typing-panel,.spectator-panel{position:relative;width:calc(100% - 300px);margin:auto auto 0 0;padding:var(--space-lg) var(--space-xl)}.stats-hud{display:grid;grid-template-columns:1.35fr repeat(5,minmax(0,1fr));gap:var(--space-row);margin:0 0 var(--space-lg);font-variant-numeric:tabular-nums}.stats-hud dt{font-size:.62rem;letter-spacing:.1em;color:var(--color-muted);margin-bottom:var(--space-xs)}.stats-hud dd{margin:0;font-family:var(--font-mono);font-size:1.25rem}.stats-hud [data-stat=RPM] dd{color:var(--color-accent);font-size:1.9rem;line-height:1.1}.stats-hud [data-stat=CORRECT] dd{color:var(--color-success)}.stats-hud [data-stat=WRONG] dd{color:var(--color-coral)}.typing-panel-label{display:flex;justify-content:space-between;gap:var(--space-md);color:var(--color-muted);font-size:.75rem;padding-top:var(--space-md);border-top:1px solid color-mix(in oklch,var(--color-rule) 50%,transparent)}.typing-panel-label>span:first-child{display:flex;align-items:center;gap:var(--space-sm)}.typing-area{position:relative;margin:var(--space-md) 0 var(--space-lg);cursor:text}.paragraph{font-family:var(--font-mono);font-size:clamp(1rem,1.6vw,1.35rem);line-height:1.95;letter-spacing:.01em;white-space:pre-wrap;overflow-wrap:anywhere;max-height:220px;overflow-y:auto}.char-correct{color:var(--color-accent)}.char-wrong{color:var(--color-coral);text-decoration:underline;text-decoration-thickness:2px;background:color-mix(in oklch,var(--color-coral) 13%,transparent)}.char-pending{color:var(--color-muted)}.char-current{position:relative}.char-current:before{content:"";position:absolute;top:0;bottom:0;left:-1px;width:2px;background:var(--color-legendary);animation:caret-blink 1s steps(2,end) infinite}.typing-capture{position:absolute;width:1px;height:1px;bottom:0;left:0;opacity:0;resize:none;padding:0;border:0}.focus-typing{position:absolute;inset:0;background:color-mix(in oklch,var(--color-paper) 90%,transparent);border:0;border-radius:var(--radius-sm);color:var(--color-ink);display:flex;align-items:center;justify-content:center;gap:var(--space-sm)}.typing-help{margin-top:var(--space-gap);display:flex;justify-content:space-between;gap:var(--space-gap);color:var(--color-subtle);font-size:.67rem}kbd{font-family:var(--font-body);padding:var(--space-tiny) var(--space-xs);border:1px solid var(--color-rule);border-radius:4px;color:var(--color-muted)}.reveal-overlay{position:absolute;left:50%;top:43%;transform:translate(-50%,-50%);text-align:center;width:min(420px,90%);background:color-mix(in oklch,var(--color-paper) 65%,transparent);border-radius:var(--radius-lg);padding:var(--space-md) var(--space-row) var(--space-panel)}.reveal-overlay .fish-illustration{width:210px;height:123px;margin:auto;display:block}.reveal-overlay h2{font-size:3rem;margin:var(--space-sm) 0;color:var(--rarity-color)}.reveal-overlay p{color:var(--color-muted);font-size:var(--text-sm)}.catch-card{position:absolute;left:calc(50% - 140px);top:50%;transform:translate(-50%,-50%);width:min(520px,65%);padding:var(--space-md) var(--space-xl) var(--space-panel);text-align:center}.catch-image{position:relative;margin:0 auto;width:220px}.catch-image .fish-illustration{width:200px;height:130px;position:relative;z-index:1}.catch-ring{position:absolute;width:100px;height:100px;border:1px solid var(--rarity-color);border-radius:50%;left:55px;top:14px;opacity:.3}.catch-card h2{font-size:2.6rem;margin:var(--space-sm) 0 var(--space-xs)}.catch-card>p{color:var(--color-muted);font-size:var(--text-sm)}.catch-card .button{width:100%}.compact.stats-hud{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-md);margin:var(--space-lg) 0;text-align:left}.compact.stats-hud dd,.compact.stats-hud [data-stat=RPM] dd{font-size:1.3rem;line-height:1.3}.spectator-heading{display:flex;justify-content:space-between;gap:var(--space-row);align-items:center;margin-bottom:var(--space-md)}.spectator-heading>span{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--text-sm);color:var(--color-muted)}.spectator-heading strong{color:var(--color-ink)}.spectator-panel .paragraph{margin-bottom:var(--space-row)}.spectator-panel>p{margin-top:var(--space-gap)}.end-session{position:absolute;top:100px;left:4.8vw;color:var(--color-subtle);font-size:.75rem}.game-error{position:absolute;top:150px;left:4.8vw}.results-layout{flex:1;padding:var(--space-xl) 4.8vw var(--space-3xl)}.leaderboard{max-width:1040px;margin:auto;padding:var(--space-section)}.leaderboard-title{display:flex;align-items:center;gap:var(--space-row);margin-bottom:var(--space-xl)}.leaderboard-title h1{font-size:clamp(1.7rem,3vw,2.8rem);margin:var(--space-sm) 0 var(--space-gap)}.leaderboard-title p{color:var(--color-muted);font-size:var(--text-sm)}.leaderboard-title p>span{margin:0 var(--space-sm)}.winner-icon{display:grid;place-items:center;width:65px;height:65px;border-radius:50%;background:color-mix(in oklch,var(--color-legendary) 12%,var(--color-paper));color:var(--color-legendary);flex-shrink:0}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.875rem}th{font-size:.65rem;color:var(--color-muted);letter-spacing:.05em;text-transform:uppercase;font-weight:400}td,th{padding:var(--space-md) var(--space-gap);border-bottom:1px solid color-mix(in oklch,var(--color-rule) 55%,transparent)}td:first-child,th:first-child{padding-left:var(--space-sm)}.my-result{background:color-mix(in oklch,var(--color-accent) 6%,transparent)}.my-result td:first-child{color:var(--color-accent)}.name-link{background:transparent;border:0;color:var(--color-ink);text-align:left;white-space:nowrap;padding:0}.name-link:hover{text-decoration:underline}.result-details{margin:var(--space-lg) 0}.result-details .stats-hud{grid-template-columns:repeat(6,minmax(0,1fr))}.results-actions{display:flex;align-items:center;gap:var(--space-row);margin-top:var(--space-panel)}.results-actions>.primary{margin-left:auto}.persistence-note{color:var(--color-legendary);font-size:var(--text-sm);margin:var(--space-row) 0}@keyframes caret-blink{to{opacity:0}}.game-persistence{position:absolute;bottom:0;left:5vw;color:var(--color-coral);font-size:var(--text-xs);max-width:85vw}.celebration{position:absolute;inset:0;pointer-events:none;overflow:clip}.celebration i{position:absolute;top:20%;left:var(--particle-x);width:4px;height:8px;border-radius:2px;background:var(--rarity-color,var(--color-legendary));opacity:0;animation:catch-confetti 2.4s var(--ease-out) var(--particle-delay) both}@keyframes catch-confetti{5%{opacity:.9}85%{opacity:.6}to{opacity:0;transform:translate(var(--particle-drift),180px) rotate(140deg)}}.leaderboard{position:relative}@media(min-width:1500px){.landing-main{min-height:740px}.landing-copy{margin-left:2vw}}@media(max-width:1100px){.landing-copy h1{font-size:4.4rem}.scene-caption{display:none}.waiting-layout{gap:var(--space-panel);padding-top:var(--space-panel);grid-template-columns:minmax(0,1fr) 350px}.player-list-toggle{width:230px}.typing-panel,.spectator-panel{width:calc(100% - 256px)}.stats-hud{gap:var(--space-sm)}}@media(max-width:800px){.app-header,.app-footer{padding:var(--space-row) var(--space-lg)}.app-footer>span:last-child{display:none}.landing-main{padding:var(--space-xl) var(--space-panel) var(--space-3xl);min-height:650px}.landing-copy h1{font-size:clamp(3rem,8vw,4.2rem)}.scene-shade{background:linear-gradient(90deg,color-mix(in oklch,var(--color-paper) 96%,transparent),color-mix(in oklch,var(--color-paper) 22%,transparent))}.waiting-layout{padding:var(--space-lg) var(--space-lg) var(--space-section);grid-template-columns:minmax(0,1fr)}.waiting-intro{padding-top:0}.waiting-intro h1{font-size:2.7rem;max-width:none}.waiting-intro>p{display:none}.waiting-intro .lake-note{margin-bottom:var(--space-gap)}.invite-block{margin:var(--space-row) 0 0}.invite-block>div{margin:0}.invite-block small{display:none}.waiting-roster{padding:var(--space-row)}.game-layout{padding:var(--space-sm) var(--space-lg) var(--space-lg);min-height:710px}.player-list-toggle{position:absolute;right:24px;top:125px;bottom:auto;z-index:3}.player-list-toggle summary{display:block;border:1px solid var(--color-rule);background:var(--color-paper-2);padding:var(--space-sm) var(--space-gap);border-radius:var(--radius-sm);font-size:var(--text-sm)}.player-list-toggle[open] .player-list{max-height:230px;overflow-y:auto}.player-list-toggle{width:210px}.typing-panel,.spectator-panel{padding:var(--space-lg);width:100%}.catch-card{left:50%;width:min(520px,94%)}.game-heading h1{font-size:1.8rem}.results-layout{padding:var(--space-row) var(--space-row) var(--space-2xl)}.leaderboard{padding:var(--space-lg)}.results-actions{flex-wrap:wrap}}@media(max-width:540px){.app-header{gap:var(--space-sm);padding:var(--space-md) var(--space-md)}.wordmark{font-size:21px;gap:var(--space-sm)}.brand-fish{width:23px}.app-header nav{gap:1px}.nav-divider,.how-button span,.leave-button span{display:none}.how-button,.leave-button{width:44px;height:44px}.in-lobby .how-button{display:none}.app-header .icon-button{width:44px}.landing-main{padding:var(--space-lg) var(--space-lg) var(--space-2xl);align-items:flex-start;min-height:620px}.lake-note{margin-bottom:var(--space-row);font-size:.75rem}.landing-copy h1{font-size:clamp(2.8rem,10.5vw,3.55rem)}.tagline{font-size:1.08rem;margin-top:var(--space-lg)}.landing-description{font-size:var(--text-sm);max-width:32ch}.desktop-break{display:none}.entry-controls{margin-top:var(--space-panel)}.entry-buttons{gap:var(--space-sm)}.entry-buttons .button{padding:var(--space-gap) var(--space-gap);font-size:.875rem;gap:var(--space-xs)}.landing-facts{flex-direction:column;gap:var(--space-sm);margin-top:var(--space-lg)}.scene-shade{background:color-mix(in oklch,var(--color-paper) 48%,transparent)}.at-menu .scene-shade{background:linear-gradient(90deg,color-mix(in oklch,var(--color-paper) 98%,transparent),color-mix(in oklch,var(--color-paper) 56%,transparent))}.app-footer{font-size:.68rem;padding:var(--space-md) var(--space-lg)}.dialog{padding:var(--space-row)}.dialog-head h2{font-size:1.6rem}.form-columns{grid-template-columns:minmax(0,1fr)}.browser-filters{flex-wrap:wrap;gap:var(--space-sm)}.browser-filters select{flex:1;min-width:120px}.lobby-list-row{grid-template-columns:minmax(0,1fr) auto;gap:var(--space-sm)}.lobby-list-row .status-label{grid-column:1}.lobby-list-row>.button{grid-row:2;grid-column:2;min-height:44px}.connection-banner{flex-wrap:wrap;margin:0 var(--space-md) var(--space-md);font-size:.75rem}.game-layout{padding:var(--space-xs) var(--space-gap) var(--space-lg);min-height:max(630px,calc(var(--viewport-height,100dvh) - 100px))}.game-heading{gap:var(--space-sm)}.game-heading h1{font-size:1.45rem}.game-heading .muted{font-size:.75rem}.camera-controls{flex-direction:column;gap:var(--space-xs)}.camera-controls .button{min-height:44px;padding:var(--space-xs) var(--space-sm);font-size:.67rem}.player-list-toggle{top:110px;right:14px;width:170px}.player-list-toggle summary{font-size:.7rem}.end-session{left:17px;top:113px}.typing-panel,.spectator-panel{padding:var(--space-md) var(--space-md);margin-top:var(--space-stage)}.stats-hud{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-gap);margin-bottom:var(--space-md)}.stats-hud dd{font-size:1rem}.stats-hud [data-stat=RPM] dd{font-size:1.35rem}.stats-hud dt{font-size:.6rem}.paragraph{font-size:1.03rem;line-height:1.95;max-height:180px}.typing-help{flex-wrap:wrap}.typing-panel-label{font-size:.65rem}.typing-help>span:last-child{display:none}.catch-card{padding:var(--space-md) var(--space-row) var(--space-lg);top:53%}.catch-card h2{font-size:2.1rem}.reveal-overlay{top:48%}.reveal-overlay h2{font-size:2.4rem}.spectator-heading{flex-wrap:wrap;gap:var(--space-xs)}.leaderboard-title{gap:var(--space-gap);align-items:flex-start}.winner-icon{width:40px;height:40px}.winner-icon svg{width:21px}.leaderboard-title h1{font-size:1.8rem}.leaderboard-title .muted{font-size:.75rem}.leaderboard{padding:var(--space-row) var(--space-md)}.leaderboard-title{margin-bottom:var(--space-row)}.results-actions{gap:var(--space-gap)}.results-actions>.primary{margin-left:0}.results-actions .button{padding:var(--space-gap) var(--space-gap);font-size:.8rem}.result-details .stats-hud{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-height:550px)and (max-width:800px){.game-layout{min-height:400px}.typing-panel,.spectator-panel{margin-top:var(--space-wide)}.game-heading,.player-list-toggle{display:none}.end-session{top:0}.app-footer{display:none}}html[data-keyboard=true] .in-lobby .game-heading,html[data-keyboard=true] .in-lobby .player-list-toggle,html[data-keyboard=true] .in-lobby .app-footer{display:none}html[data-keyboard=true] .typing-panel{margin-top:var(--space-lg)}html[data-keyboard=true] .typing-panel .paragraph{max-height:max(90px,calc(var(--viewport-height) - 250px))}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}html[data-reduced-motion=true] *,html[data-reduced-motion=true] *:before,html[data-reduced-motion=true] *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.dialog{overflow:visible;padding:0}.dialog-scroll{padding:var(--space-xl);max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain}.field{min-width:0}.field-description{color:var(--color-muted);font-size:var(--text-xs)}.browser-filters{align-items:end}.browser-filters>.field{flex:1}.browser-filters>.icon-button{flex-shrink:0}.select-trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--space-gap);min-height:48px;width:100%;min-width:0;padding:var(--space-gap);border:1px solid var(--color-rule);border-radius:var(--radius-sm);background:var(--color-paper);color:var(--color-ink);text-align:left;transition:border-color var(--dur-micro),background var(--dur-micro)}.select-trigger>span:first-child{overflow:clip;text-overflow:ellipsis;white-space:nowrap}.select-trigger>span:last-child{display:flex;color:var(--color-muted)}.select-trigger:hover:not(:disabled),.select-trigger.is-hover{background:var(--color-paper-3);border-color:var(--color-muted)}.select-trigger[data-state=open],.select-trigger:active:not(:disabled),.select-trigger.is-active{border-color:var(--color-accent);background:var(--color-paper-3)}.select-trigger:focus-visible,.select-trigger.is-focus{outline:2px solid var(--color-focus);outline-offset:3px}.select-content{z-index:100;width:var(--radix-select-trigger-width);max-width:calc(100vw - 24px);max-height:min(340px,var(--radix-select-content-available-height));border:1px solid var(--color-rule);border-radius:var(--radius-sm);background:var(--color-paper-2);color:var(--color-ink);box-shadow:0 12px 32px color-mix(in oklch,var(--color-shadow) 50%,transparent);overflow:clip;animation:select-enter .14s var(--ease-out)}.select-viewport{padding:var(--space-xs)}.select-option{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-gap);min-height:44px;border-radius:var(--radius-sm);outline:none;font-size:var(--text-sm);cursor:pointer;-webkit-user-select:none;user-select:none}.select-option small{display:block;color:var(--color-muted);font-size:var(--text-xs)}.select-option[data-highlighted]{background:var(--color-paper-3);outline:1px solid var(--color-focus);outline-offset:-1px}.select-option[data-state=checked]{color:var(--color-accent)}.select-option[data-disabled]{opacity:.45;cursor:not-allowed}.select-scroll{display:grid;place-items:center;height:24px;color:var(--color-muted)}[data-status=error]{border-color:var(--color-coral)}[data-status=success]{border-color:var(--color-success)}.icon-button[data-status=error]{color:var(--color-coral);outline:1px solid var(--color-coral)}.icon-button[data-status=success]{color:var(--color-success);outline:1px solid var(--color-success)}.control-spinner{animation:control-spin 1s linear infinite}.button.is-hover{filter:brightness(1.08)}.button.is-focus{outline:2px solid var(--color-focus);outline-offset:4px}.button.is-active{transform:translateY(1px)}@keyframes control-spin{to{transform:rotate(360deg)}}@keyframes select-enter{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}@media(max-width:540px){.dialog{padding:0}.dialog-scroll{padding:var(--space-row)}.browser-filters>.field{min-width:120px}}.is-fishing{height:var(--viewport-height,100dvh);min-height:0}.is-fishing .app-header{padding-top:var(--space-sm);padding-bottom:var(--space-sm);flex-shrink:0}.is-fishing .app-footer{display:none}.is-fishing .game-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;grid-template-rows:auto minmax(120px,1fr) auto auto;gap:var(--space-gap) var(--space-row);min-height:0;padding:0 4.8vw var(--space-sm)}.is-fishing .game-heading{grid-column:1 / -1;margin:0;align-items:center}.is-fishing .game-heading h1{font-size:clamp(1.2rem,2vw,1.8rem);margin:0 0 var(--space-xs)}.is-fishing .camera-controls{flex-direction:row;align-items:center}.camera-controls [aria-pressed=true]{border-color:var(--color-accent);color:var(--color-accent)}.fishing-stage{grid-column:1;grid-row:2;position:relative;min-width:0;min-height:0;overflow:clip;isolation:isolate;border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-water-deep)}.fishing-stage .lake-scene{position:absolute;inset:0;z-index:0}.fishing-stage .renderer-notice{position:absolute;right:12px;bottom:12px;z-index:2}.fishing-caption{position:absolute;left:14px;top:12px;display:inline-flex;gap:var(--space-sm);align-items:center;font-size:var(--text-xs);padding:var(--space-xs) var(--space-sm);background:color-mix(in oklch,var(--color-paper) 88%,transparent);border-radius:var(--radius-sm);color:var(--color-ink);pointer-events:none}.fishing-stage .reveal-overlay{top:50%;max-height:100%;overflow-y:auto;margin:0}.fishing-stage .reveal-overlay h2{font-size:clamp(1.4rem,3vw,2.4rem)}.fishing-stage .reveal-overlay .fish-illustration{height:72px;width:140px}.is-fishing .player-list-toggle{position:static;grid-column:2;grid-row:2 / 4;width:auto;min-height:0}.is-fishing .typing-panel,.is-fishing .spectator-panel,.is-fishing .catch-card,.preparing-dock{grid-column:1;grid-row:3;width:100%;margin:0;padding:var(--space-md) var(--space-row)}.preparing-dock{color:var(--color-muted);font-size:var(--text-sm);text-align:center}.is-fishing .stats-hud{grid-template-columns:repeat(6,minmax(0,1fr));margin:0 0 var(--space-gap);gap:var(--space-sm)}.is-fishing .stats-hud dd,.is-fishing .stats-hud [data-stat=RPM] dd{font-size:1.25rem;line-height:1.2}.is-fishing .typing-panel-label{padding-top:var(--space-sm)}.is-fishing .typing-area{margin:var(--space-sm) 0}.is-fishing .paragraph{font-size:clamp(1rem,1.35vw,1.15rem);line-height:1.8;height:5.4em;max-height:5.4em;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--color-rule) transparent;overflow-anchor:none}.is-fishing .typing-help{margin-top:var(--space-sm)}.is-fishing .end-session{position:static;grid-column:1 / -1;grid-row:4;justify-self:start;min-height:32px;padding:0;font-size:var(--text-xs)}.is-fishing .game-error,.is-fishing .game-persistence{position:static;grid-column:1 / -1;font-size:var(--text-xs);margin:0}.is-fishing .catch-card{position:relative;left:auto;top:auto;transform:none;text-align:left;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-xs) var(--space-md)}.is-fishing .catch-card h2{font-size:1.7rem;margin:0}.is-fishing .catch-image{position:absolute;top:0;right:12px;width:95px;pointer-events:none}.is-fishing .catch-image .fish-illustration{width:95px;height:60px}.is-fishing .catch-ring{display:none}.is-fishing .catch-card>.rarity-label,.is-fishing .catch-card>h2,.is-fishing .catch-card>p{grid-column:1}.is-fishing .catch-card .stats-hud{grid-column:1 / -1;margin-top:var(--space-gap)}.is-fishing .catch-card>.button{grid-column:1 / -1;width:auto;justify-self:start;min-height:44px}@media(max-width:1100px){.is-fishing .game-layout{grid-template-columns:minmax(0,1fr) 215px;gap:var(--space-sm) var(--space-gap)}}@media(max-width:800px){.is-fishing .game-layout{grid-template-columns:minmax(0,1fr);padding:0 var(--space-gap) var(--space-xs)}.is-fishing .player-list-toggle{position:absolute;top:84px;right:24px;z-index:3;width:170px;overflow:visible}.is-fishing .player-list-toggle[open] .player-list{max-height:220px}.is-fishing .game-heading{min-height:64px}.is-fishing .typing-panel,.is-fishing .spectator-panel{padding:var(--space-gap)}}@media(max-width:540px){.is-fishing .app-header{padding:0 var(--space-gap)}.is-fishing .game-layout{gap:var(--space-sm)}.is-fishing .game-heading{gap:var(--space-xs)}.is-fishing .game-heading h1{font-size:1.15rem}.is-fishing .camera-controls{gap:var(--space-xs)}.is-fishing .camera-controls .button{padding:var(--space-xs) var(--space-sm);font-size:.65rem}.is-fishing .camera-controls svg{display:none}.is-fishing .rarity-label{font-size:.6rem}.is-fishing .rarity-label span{font-size:.68rem}.is-fishing .stats-hud{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-xs) var(--space-sm);margin-bottom:var(--space-sm)}.is-fishing .stats-hud dt{margin:0;font-size:.55rem}.is-fishing .stats-hud dd,.is-fishing .stats-hud [data-stat=RPM] dd{font-size:1rem}.is-fishing .paragraph{height:5.4em;max-height:5.4em}.fishing-caption{left:8px;top:auto;bottom:8px;font-size:.65rem}.is-fishing .catch-card h2{font-size:1.4rem}}@media(max-height:600px)and (max-width:800px){.is-fishing .game-layout{grid-template-rows:minmax(90px,1fr) auto auto;gap:var(--space-xs)}.is-fishing .game-heading,.is-fishing .player-list-toggle{display:none}.fishing-stage{grid-row:1}.is-fishing .typing-panel,.is-fishing .spectator-panel,.is-fishing .catch-card,.preparing-dock{grid-row:2;padding:var(--space-sm) var(--space-gap)}.is-fishing .end-session{grid-row:3;min-height:24px}.is-fishing .paragraph{height:3.6em;max-height:3.6em}.is-fishing .typing-help,.fishing-stage .reveal-overlay .fish-illustration,.fishing-stage .reveal-overlay p{display:none}}html[data-keyboard=true] .is-fishing .game-layout{grid-template-rows:minmax(90px,1fr) auto auto;gap:var(--space-xs)}html[data-keyboard=true] .is-fishing .fishing-stage{grid-row:1}html[data-keyboard=true] .is-fishing .typing-panel{grid-row:2;margin:0;padding:var(--space-sm) var(--space-gap)}html[data-keyboard=true] .is-fishing .end-session{grid-row:3;min-height:24px}html[data-keyboard=true] .is-fishing .paragraph{height:3.6em;max-height:3.6em}html[data-keyboard=true] .is-fishing .typing-help{display:none}.round-setting{color:var(--color-accent);font-size:var(--text-sm)}.fishing-stage{container-type:size}.round-kicker{display:block;color:var(--color-accent);font-size:var(--text-xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase}.round-kicker>span{color:var(--color-muted)}.fish-selection{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-row);padding:var(--space-md) 0;background:color-mix(in oklch,var(--color-paper) 90%,transparent);overflow:clip}.spin-heading{text-align:center;padding:0 var(--space-md)}.spin-heading h2{font-size:clamp(1.4rem,2.8vw,2.3rem);margin:var(--space-xs) 0 0;overflow-wrap:anywhere}.spin-window{width:100%;height:190px;position:relative;flex:0 0 auto;overflow:clip}.spin-window:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,var(--color-paper),transparent 20%,transparent 80%,var(--color-paper))}.spin-track{display:flex;gap:var(--space-gap);width:max-content;padding-top:var(--space-gap);will-change:transform}.spin-card{display:flex;flex-direction:column;align-items:center;justify-content:center;width:150px;height:166px;padding:var(--space-gap);border:1px solid var(--color-rule);border-radius:var(--radius-md);background:var(--color-paper-2);opacity:.6;transition:opacity var(--dur-micro),border-color var(--dur-micro),background var(--dur-short)}.spin-card[data-active=true]{opacity:1;border-color:var(--rarity-color);background:var(--color-paper-3)}.spin-card .fish-illustration{width:126px;height:74px;margin:var(--space-xs) 0;flex:0 0 auto}.spin-card strong{font-size:var(--text-xs);white-space:nowrap}.spin-card small{font-size:var(--text-xs);color:var(--color-muted)}.spin-card .rarity-label{font-size:.6rem}.spin-focus{position:absolute;left:50%;top:var(--space-gap);width:150px;height:166px;transform:translate(-50%);border:2px solid var(--color-accent);border-radius:var(--radius-md);pointer-events:none}.has-landed .spin-focus{border-color:var(--rarity-color);box-shadow:0 0 30px color-mix(in oklch,var(--rarity-color) 24%,transparent)}.spin-marker{position:absolute;top:0;left:50%;transform:translate(-50%);border-left:7px solid transparent;border-right:7px solid transparent;border-top:10px solid var(--color-accent);z-index:1}.spin-status{display:flex;align-items:center;justify-content:center;gap:var(--space-gap);min-height:50px;color:var(--color-ink);font-size:var(--text-sm)}.spin-status>svg{color:var(--color-accent)}.spin-status small{display:block;color:var(--color-muted);font-size:var(--text-xs);margin-top:var(--space-xs)}.spin-count{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;border:2px solid var(--color-accent);color:var(--color-accent);font-family:var(--font-display);font-size:1.7rem;animation:count-arrive var(--dur-short) var(--ease-out)}.spin-reel-icon{animation:reel-turn 1s linear infinite}.spin-still{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--space-gap);width:100%;padding:0 var(--space-md)}.spin-still>div{text-align:center}.spin-still .fish-illustration{width:90px;height:70px}.spin-still .rarity-label{display:block;font-size:.6rem}.spin-still.is-selected .fish-illustration{width:180px;height:110px}.round-break{text-align:center}.round-break h2{margin:var(--space-xs) 0;font-size:var(--text-md)}.round-break p{margin:var(--space-xs) 0;font-size:var(--text-sm);color:var(--color-muted)}.round-history{display:flex;gap:var(--space-sm);flex-wrap:wrap;padding:var(--space-md) 0;border-top:1px solid var(--color-rule)}.round-history>div{flex:1 1 150px;border-left:2px solid var(--rarity-color);padding-left:var(--space-gap);font-size:var(--text-sm)}.round-history strong,.round-history small{display:block}.round-history small{color:var(--color-muted)}@keyframes reel-turn{to{transform:rotate(360deg)}}@keyframes count-arrive{0%{transform:scale(.88);opacity:.6}to{transform:scale(1);opacity:1}}@media(max-width:540px){.fish-selection{gap:var(--space-gap)}.spin-window{height:150px}.spin-card,.spin-focus{width:122px;height:128px}.spin-card{padding:var(--space-sm)}.spin-card .fish-illustration{width:100px;height:50px}.spin-card strong{font-size:.62rem}.spin-card small{font-size:.65rem}.spin-still{gap:var(--space-sm)}.spin-still .fish-illustration{width:48px;height:48px}.spin-still .rarity-label{font-size:.48rem}.spin-still.is-selected .fish-illustration{width:120px;height:75px}}@media(max-height:600px){.fish-selection{gap:var(--space-xs);padding:var(--space-xs) 0}.spin-heading h2{font-size:var(--text-base)}.spin-heading .round-kicker{font-size:.6rem}.spin-window{height:85px}.spin-card,.spin-focus{height:68px}.spin-card .fish-illustration{height:35px;width:65px;margin:0}.spin-card strong,.spin-card small,.spin-status small{display:none}.spin-status{min-height:28px;font-size:var(--text-xs)}.spin-count{width:28px;height:28px;font-size:1.2rem}.spin-still .fish-illustration,.spin-still.is-selected .fish-illustration{height:40px;width:55px}}html[data-reduced-motion=true] .fish-selection *,html[data-reduced-motion=true] .fish-selection *:after{animation:none;transition:none}.fish-selection[data-reduced-motion=true] *{animation:none;transition:none}@container (max-height: 240px){.fish-selection{gap:var(--space-xs);padding:var(--space-xs) 0}.spin-heading h2{font-size:var(--text-base)}.spin-heading .round-kicker{font-size:.6rem}.spin-window{height:85px}.spin-card,.spin-focus{height:68px}.spin-card .fish-illustration{height:35px;width:65px;margin:0}.spin-card strong,.spin-card small,.spin-status small{display:none}.spin-status{min-height:28px;font-size:var(--text-xs)}.spin-count{width:28px;height:28px;font-size:1.2rem}.spin-still .fish-illustration,.spin-still.is-selected .fish-illustration{height:40px;width:55px}}@container (max-height: 160px){.spin-heading{display:none}.spin-window{height:55px}.spin-card,.spin-focus{height:42px}.spin-card .rarity-label{display:none}.spin-status{min-height:24px}.spin-count{width:24px;height:24px;font-size:1rem}.spin-still{flex-wrap:nowrap}.spin-still>div{flex:0 1 55px;min-width:0}.spin-still .fish-illustration,.spin-still.is-selected .fish-illustration{width:100%;height:30px}}.practice-entry{width:100%;margin-top:var(--space-sm);justify-content:flex-start}.practice-entry>span{margin-left:auto;font-size:var(--text-xs);color:var(--color-muted);font-weight:400}.is-fishing .practice-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(120px,1fr) auto;max-width:1440px;width:100%;margin:0 auto}.practice-controls{display:flex;gap:var(--space-md);align-items:end}.practice-controls .field{margin:0;width:235px}.practice-controls>.button{min-height:44px}.practice-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);margin-top:var(--space-sm)}.practice-actions>span{color:var(--color-muted);font-size:var(--text-xs)}.practice-note{margin:var(--space-xs) 0 0;color:var(--color-muted);font-size:var(--text-xs)}.practice-note>span{margin-left:var(--space-xs)}.practice-dock .typing-panel-label>span:first-child{color:var(--color-accent)}@media(max-width:800px){.practice-controls{gap:var(--space-sm)}.practice-controls .field{width:200px}.practice-note>span{display:none}}@media(max-width:540px){.practice-entry>span{display:none}.practice-entry>svg:last-child{margin-left:auto}.practice-controls .field{width:166px}.practice-controls .select-trigger{padding:var(--space-sm);font-size:.72rem}.practice-controls>.button{display:none}.practice-controls .field>label{font-size:.65rem}.practice-alt-shortcut{display:none}.practice-dock .typing-panel-label{font-size:.65rem;gap:var(--space-sm)}.practice-dock .typing-panel-label svg{display:none}.practice-note{font-size:.65rem}}@media(max-height:600px)and (max-width:800px){.is-fishing .practice-layout{grid-template-rows:minmax(90px,1fr) auto}.practice-note{display:none}}html[data-keyboard=true] .is-fishing .practice-layout{grid-template-rows:minmax(90px,1fr) auto}html[data-keyboard=true] .practice-heading,html[data-keyboard=true] .practice-note{display:none}
