.jf-ui{--jf-ink: #1a1238;--jf-night: #2a1d5c;--jf-sky: #45b7ff;--jf-sun: #ffcf33;--jf-coral: #ff5c7a;--jf-mint: #2ee6a6;--jf-cream: #fff8ec;--jf-grape: #8a5cff;--jf-bg: var(--jf-night);--jf-surface: var(--jf-cream);--jf-surface-2: #f3e8d6;--jf-text: var(--jf-ink);--jf-text-soft: #5b5277;--jf-text-on-dark: #fff;--jf-primary: var(--jf-sun);--jf-danger: var(--jf-coral);--jf-success: var(--jf-mint);--jf-info: var(--jf-sky);--jf-hud-glass: rgba(26, 18, 56, .62);--jf-focus: #ffffff;--jf-radius-sm: 10px;--jf-radius: 16px;--jf-radius-lg: 24px;--jf-outline: 3px;--jf-lift: 5px;--jf-shadow: 0 var(--jf-lift) 0 var(--jf-ink);--jf-shadow-soft: 0 10px 30px rgba(10, 6, 30, .35);--jf-font: ui-rounded, "SF Pro Rounded", "Arial Rounded MT Bold", "Nunito", "Varela Round", "Trebuchet MS", system-ui, sans-serif;--jf-gutter: clamp(12px, 3vw, 28px);position:fixed;inset:0;z-index:10;pointer-events:none;font-family:var(--jf-font);color:var(--jf-text);font-size:16px;line-height:1.35;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}.jf-ui *,.jf-ui *:before,.jf-ui *:after{box-sizing:border-box}.jf-ui [hidden]{display:none!important}:where(.jf-ui) :where(button,input){font:inherit;color:inherit}.jf-ui :focus-visible{outline:3px solid var(--jf-focus);outline-offset:3px;box-shadow:0 0 0 6px var(--jf-grape)}.jf-sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.jf-icon{width:1.2em;height:1.2em;flex:none;vertical-align:-.2em}.jf-btn{--btn-bg: var(--jf-surface);--btn-fg: var(--jf-ink);display:inline-flex;align-items:center;justify-content:center;gap:.5em;min-height:44px;padding:.55em 1.1em;border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius);background:var(--btn-bg);color:var(--btn-fg);font-weight:800;letter-spacing:.02em;text-transform:uppercase;cursor:pointer;box-shadow:var(--jf-shadow);transition:transform .08s ease,box-shadow .08s ease,filter .15s ease;user-select:none;touch-action:manipulation}.jf-btn:hover:not(:disabled){filter:brightness(1.06);transform:translateY(-1px);box-shadow:0 calc(var(--jf-lift) + 1px) 0 var(--jf-ink)}.jf-btn:active:not(:disabled){transform:translateY(calc(var(--jf-lift) - 1px));box-shadow:0 1px 0 var(--jf-ink)}.jf-btn:disabled{cursor:not-allowed;opacity:.5;box-shadow:0 2px 0 var(--jf-ink)}.jf-btn--primary{--btn-bg: var(--jf-sun)}.jf-btn--danger{--btn-bg: var(--jf-coral);--btn-fg: #fff}.jf-btn--mint{--btn-bg: var(--jf-mint)}.jf-btn--ghost{--btn-bg: transparent;--btn-fg: inherit;border-color:transparent;box-shadow:none}.jf-btn--ghost:hover:not(:disabled){background:#ffffff24;box-shadow:none;transform:none}.jf-btn--ghost:active:not(:disabled){transform:scale(.96);box-shadow:none}.jf-btn--sm{min-height:36px;padding:.35em .8em;font-size:.85rem;border-radius:var(--jf-radius-sm)}.jf-btn--lg{min-height:60px;padding:.6em 1.6em;font-size:1.45rem;border-radius:var(--jf-radius-lg)}.jf-btn--icon{padding:0;width:44px;min-width:44px}.jf-btn--icon.jf-btn--sm{width:36px;min-width:36px}.jf-btn--icon .jf-icon{width:24px;height:24px}.jf-btn.is-done{--btn-bg: var(--jf-mint)}.jf-btn.is-spinning .jf-icon{animation:jf-spin .9s linear infinite}.jf-field{position:relative;display:grid;gap:6px}.jf-field__label{font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--jf-text-soft)}.jf-input{width:100%;min-height:48px;padding:.5em .9em;border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius);background:#fff;color:var(--jf-ink);font-size:1.1rem;font-weight:700;box-shadow:inset 0 3px #1a123814}.jf-input::placeholder{color:#a39cb8;font-weight:600}.jf-field--icon .jf-input{padding-left:2.4em}.jf-field__icon{position:absolute;left:.8em;bottom:14px;color:var(--jf-text-soft);pointer-events:none}.jf-switch{position:relative}.jf-switch__input{position:absolute;opacity:0;width:1px;height:1px}.jf-switch__label{display:flex;align-items:center;gap:12px;min-height:44px;cursor:pointer;font-weight:800}.jf-switch__track{position:relative;flex:none;width:54px;height:32px;border:var(--jf-outline) solid var(--jf-ink);border-radius:99px;background:#d9d1e6;transition:background .15s ease}.jf-switch__thumb{position:absolute;top:2px;left:2px;width:22px;height:22px;border:var(--jf-outline) solid var(--jf-ink);border-radius:50%;background:#fff;transition:transform .15s ease}.jf-switch__input:checked+.jf-switch__label .jf-switch__track{background:var(--jf-mint)}.jf-switch__input:checked+.jf-switch__label .jf-switch__thumb{transform:translate(22px)}.jf-switch__input:focus-visible+.jf-switch__label .jf-switch__track{outline:3px solid var(--jf-focus);box-shadow:0 0 0 6px var(--jf-grape)}.jf-switch__text{display:grid}.jf-switch__hint{font-weight:600;color:var(--jf-text-soft)}.jf-slider{display:grid;gap:6px}.jf-slider__head{display:flex;justify-content:space-between;align-items:baseline}.jf-slider__value{font-weight:900;font-variant-numeric:tabular-nums}.jf-slider__input{--fill: 50%;appearance:none;-webkit-appearance:none;width:100%;height:16px;margin:8px 0;border:var(--jf-outline) solid var(--jf-ink);border-radius:99px;background:linear-gradient(90deg,var(--jf-sun) var(--fill),#fff var(--fill));cursor:pointer}.jf-slider__input::-webkit-slider-thumb{-webkit-appearance:none;width:28px;height:28px;border:var(--jf-outline) solid var(--jf-ink);border-radius:50%;background:var(--jf-coral);box-shadow:0 3px 0 var(--jf-ink)}.jf-slider__input::-moz-range-thumb{width:22px;height:22px;border:var(--jf-outline) solid var(--jf-ink);border-radius:50%;background:var(--jf-coral)}.jf-seg{margin:0;padding:0;border:0;display:grid;gap:6px}.jf-seg__row{display:flex;border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius);overflow:hidden;background:#fff}.jf-seg__item{flex:1;position:relative}.jf-seg__item+.jf-seg__item{border-left:var(--jf-outline) solid var(--jf-ink)}.jf-seg__input{position:absolute;opacity:0}.jf-seg__label{display:block;padding:.6em .4em;text-align:center;font-weight:800;cursor:pointer}.jf-seg__input:checked+.jf-seg__label{background:var(--jf-sun)}.jf-seg__input:focus-visible+.jf-seg__label{outline:3px solid var(--jf-grape);outline-offset:-5px}.jf-check{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:800;cursor:pointer}.jf-check__input{position:absolute;opacity:0;width:1px;height:1px}.jf-check__box{display:grid;place-items:center;width:28px;height:28px;border:var(--jf-outline) solid var(--jf-ink);border-radius:8px;background:#fff}.jf-check__box .jf-icon{opacity:0;width:20px;height:20px;transform:scale(.4);transition:transform .12s ease,opacity .12s ease}.jf-check__input:checked+.jf-check__box{background:var(--jf-mint)}.jf-check__input:checked+.jf-check__box .jf-icon{opacity:1;transform:none}.jf-check__input:focus-visible+.jf-check__box{outline:3px solid var(--jf-focus);box-shadow:0 0 0 6px var(--jf-grape)}.jf-tag{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border:2px solid var(--jf-ink);border-radius:99px;background:var(--jf-grape);color:#fff;font-size:.8rem;font-weight:800;text-transform:uppercase}.jf-count{display:inline-block;min-width:1.8em;margin-left:8px;padding:0 6px;border-radius:99px;background:var(--jf-ink);color:#fff;font-size:.75rem;text-align:center}kbd{display:inline-block;padding:2px 8px;border:2px solid var(--jf-ink);border-bottom-width:4px;border-radius:8px;background:#fff;font:inherit;font-weight:800;font-size:.85rem;white-space:nowrap}.jf-card{position:relative;width:100%;padding:clamp(18px,4vw,28px);border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius-lg);background:var(--jf-surface);box-shadow:0 8px 0 var(--jf-ink),var(--jf-shadow-soft)}.jf-card__title{margin:0 0 12px;font-size:clamp(1.4rem,4vw,1.9rem);font-weight:900;line-height:1.1;text-transform:uppercase;letter-spacing:.02em}.jf-stack{display:grid;gap:14px}.jf-panel{display:grid;gap:12px}.jf-panel__title{margin:0;font-size:1.1rem}.jf-screen{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--jf-gutter);overflow-x:hidden;overflow-y:auto;pointer-events:auto;color:var(--jf-text-on-dark);background:radial-gradient(circle at 18% 22%,rgba(255,207,51,.22) 0 7%,transparent 7.5%),radial-gradient(circle at 84% 70%,rgba(255,92,122,.22) 0 9%,transparent 9.5%),radial-gradient(circle at 70% 14%,rgba(46,230,166,.2) 0 4%,transparent 4.5%),radial-gradient(circle at 10% 86%,rgba(69,183,255,.22) 0 6%,transparent 6.5%),radial-gradient(120% 90% at 50% 0%,#4a2f9e 0%,var(--jf-night) 55%,#150e33 100%)}.jf-screen:before{content:"";position:fixed;inset:0;z-index:-1;background-image:linear-gradient(45deg,rgba(255,255,255,.045) 25%,transparent 25%,transparent 75%,rgba(255,255,255,.045) 75%),linear-gradient(45deg,rgba(255,255,255,.045) 25%,transparent 25%,transparent 75%,rgba(255,255,255,.045) 75%);background-size:80px 80px;background-position:0 0,40px 40px;animation:jf-drift 12s linear infinite;pointer-events:none}.jf-screen{isolation:isolate}.jf-screen>*{margin:auto}.jf-wordmark{display:inline-flex;flex-direction:column;align-items:center;line-height:1;user-select:none}.jf-wordmark__word{display:inline-flex;font-size:clamp(44px,12vw,116px);font-weight:900;letter-spacing:-.01em}.jf-wordmark--small .jf-wordmark__word{font-size:clamp(32px,8vw,56px)}.jf-wordmark__l{--o: .055em;display:inline-block;color:var(--jf-sun);text-shadow:var(--o) 0 0 var(--jf-ink),calc(-1 * var(--o)) 0 0 var(--jf-ink),0 var(--o) 0 var(--jf-ink),0 calc(-1 * var(--o)) 0 var(--jf-ink),var(--o) var(--o) 0 var(--jf-ink),calc(-1 * var(--o)) var(--o) 0 var(--jf-ink),var(--o) calc(-1 * var(--o)) 0 var(--jf-ink),calc(-1 * var(--o)) calc(-1 * var(--o)) 0 var(--jf-ink),0 .13em 0 var(--jf-ink);transform:translateY(-.03em) rotate(-4deg);animation:jf-hop 2.8s ease-in-out infinite;animation-delay:calc(var(--i) * .11s)}.jf-wordmark__l:nth-child(2n){transform:translateY(.04em) rotate(3deg)}.jf-wordmark__l.is-b{color:var(--jf-coral)}.jf-wordmark__tag{margin-top:-.1em;padding:.15em .9em .2em;border:var(--jf-outline) solid var(--jf-ink);border-radius:99px;background:var(--jf-mint);color:var(--jf-ink);font-size:clamp(14px,3vw,26px);font-weight:900;letter-spacing:.35em;text-indent:.35em;box-shadow:0 4px 0 var(--jf-ink);transform:rotate(-2deg)}.jf-wordmark--small .jf-wordmark__tag{font-size:clamp(11px,2.4vw,16px)}.jf-menu__center{display:flex;flex-direction:column;align-items:center;gap:14px;width:min(460px,100%)}.jf-menu__title{margin:0 0 4px}.jf-menu__tagline{margin:0 0 6px;font-weight:800;opacity:.85;text-align:center}.jf-menu__card{display:grid;gap:14px;color:var(--jf-text)}.jf-menu__play{width:100%}.jf-menu__row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.jf-menu__help{justify-self:center;color:var(--jf-text-soft)}.jf-menu__corner{position:absolute;top:var(--jf-gutter);right:var(--jf-gutter);display:flex;gap:6px;margin:0;color:#fff}.jf-menu__corner .jf-btn{background:#ffffff1f}.jf-invite__card{display:grid;gap:14px;width:min(420px,100%);margin-top:18px;color:var(--jf-text);text-align:center}.jf-invite__code{margin:-6px 0 4px;font-size:1.2rem;font-weight:900;font-variant-numeric:tabular-nums;color:var(--jf-grape)}.jf-invite .jf-field{text-align:left}.jf-custom__card{display:flex;flex-direction:column;gap:14px;width:min(820px,100%);max-height:calc(100dvh - 2 * var(--jf-gutter));color:var(--jf-text)}.jf-custom__head{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px}.jf-custom__head .jf-card__title{margin:0;flex:1}.jf-tabs{display:flex;padding:4px;border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius);background:var(--jf-surface-2)}.jf-tab{min-height:40px;padding:0 18px;border:0;border-radius:11px;background:transparent;font-weight:900;text-transform:uppercase;cursor:pointer}.jf-tab[aria-selected=true]{background:var(--jf-ink);color:#fff}.jf-tabpanel{display:flex;flex-direction:column;gap:12px;min-height:0;flex:1}.jf-toolbar{display:flex;gap:10px;align-items:end}.jf-toolbar .jf-field{flex:1}.jf-toolbar .jf-btn--icon{height:48px}.jf-list{margin:0;padding:0;list-style:none}.jf-rooms{display:grid;gap:10px;min-height:120px;max-height:46vh;overflow-y:auto;padding:4px 4px 8px}.jf-room{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:10px 12px 10px 16px;border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius);background:#fff;box-shadow:0 3px 0 var(--jf-ink)}.jf-room.is-full{opacity:.65}.jf-room__info{display:grid;min-width:0}.jf-room__map{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.05rem}.jf-room__meta{color:var(--jf-text-soft);font-size:.85rem;font-weight:700}.jf-room__players{display:inline-flex;align-items:center;gap:6px;font-weight:900;font-variant-numeric:tabular-nums}.jf-empty{padding:24px 12px;text-align:center;font-weight:800;color:var(--jf-text-soft)}.jf-empty--error{color:#c2183f}.jf-codeform{display:flex;gap:10px;align-items:end;padding-top:12px;border-top:2px dashed rgba(26,18,56,.2)}.jf-codeform .jf-field{flex:1;max-width:260px}.jf-codeform .jf-btn{min-height:48px}.jf-maps{display:grid;gap:14px;min-height:120px;max-height:46vh;overflow-y:auto;padding:4px}.jf-mapgroup{margin:0;padding:0;border:0}.jf-mapgroup__title{display:flex;align-items:center;margin-bottom:8px;padding:0;font-weight:900;text-transform:uppercase;letter-spacing:.06em}.jf-mapgroup--classic .jf-mapgroup__title{color:#b3541e}.jf-mapgroup--custom .jf-mapgroup__title{color:#1d6fb8}.jf-mapgroup--develop .jf-mapgroup__title{color:#6c3fd1}.jf-mapgroup__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}.jf-mapopt{position:relative}.jf-mapopt__input{position:absolute;opacity:0}.jf-mapopt__card{display:grid;gap:2px;height:100%;padding:10px 12px;border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius);background:#fff;box-shadow:0 3px 0 var(--jf-ink);cursor:pointer;transition:transform .08s ease,background .1s ease}.jf-mapopt__card:hover{transform:translateY(-2px)}.jf-mapopt__input:checked+.jf-mapopt__card{background:var(--jf-sun);transform:translateY(2px);box-shadow:0 1px 0 var(--jf-ink)}.jf-mapopt__input:focus-visible+.jf-mapopt__card{outline:3px solid var(--jf-focus);box-shadow:0 0 0 6px var(--jf-grape)}.jf-mapopt__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jf-mapopt__author,.jf-mapopt__meta{font-size:.8rem;font-weight:700;color:var(--jf-text-soft)}.jf-create__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding-top:12px;border-top:2px dashed rgba(26,18,56,.2)}.jf-loading__center{display:flex;flex-direction:column;align-items:center;gap:18px;width:min(440px,100%);text-align:center}.jf-loading__label{margin:0;font-size:1.2rem;font-weight:900}.jf-loading__tip{margin:0;min-height:2.7em;font-weight:700;opacity:.8}.jf-loading__hopper{display:flex;gap:14px;height:56px;align-items:end}.jf-loading__hopper span{width:22px;height:22px;border:var(--jf-outline) solid var(--jf-ink);border-radius:6px;background:var(--jf-sun);animation:jf-bounce .9s cubic-bezier(.3,0,.7,1) infinite alternate}.jf-loading__hopper span:nth-child(2){background:var(--jf-coral);animation-delay:.15s}.jf-loading__hopper span:nth-child(3){background:var(--jf-mint);animation-delay:.3s}.jf-progress{position:relative;width:100%;height:22px;border:var(--jf-outline) solid var(--jf-ink);border-radius:99px;background:#ffffffe6;overflow:hidden;box-shadow:0 4px 0 var(--jf-ink)}.jf-progress__fill{height:100%;width:0;background:repeating-linear-gradient(-45deg,var(--jf-sun) 0 12px,#ffdc66 12px 24px);border-right:var(--jf-outline) solid var(--jf-ink);transition:width .2s ease}.jf-progress.is-indeterminate .jf-progress__fill{width:35%;border-left:var(--jf-outline) solid var(--jf-ink);animation:jf-indeterminate 1.3s ease-in-out infinite}.jf-screen.jf-results{background:#150e33b8;backdrop-filter:blur(4px)}.jf-screen.jf-results:before{display:none}.jf-results__card{display:grid;gap:12px;width:min(460px,100%);padding-top:56px;margin-top:48px;text-align:center;color:var(--jf-text);animation:jf-pop-in .35s cubic-bezier(.2,1.6,.4,1) both}.jf-results__trophy{position:absolute;top:-44px;left:50%;display:grid;place-items:center;width:88px;height:88px;margin-left:-44px;border:var(--jf-outline) solid var(--jf-ink);border-radius:50%;background:var(--jf-sun);box-shadow:0 5px 0 var(--jf-ink)}.jf-results__trophy .jf-icon{width:52px;height:52px}.jf-results__winner{margin:0;font-size:1.4rem;font-weight:900;color:var(--jf-grape)}.jf-results__winner.is-none{color:var(--jf-text-soft)}.jf-results__sub{margin:8px 0 0;font-size:.85rem;text-transform:uppercase;letter-spacing:.08em;color:var(--jf-text-soft)}.jf-results__stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:8px}.jf-stat{display:grid;gap:2px;padding:12px 6px;border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius);background:#fff}.jf-stat__value{font-size:2rem;font-weight:900;line-height:1;font-variant-numeric:tabular-nums}.jf-stat__label{font-size:.75rem;font-weight:800;text-transform:uppercase;color:var(--jf-text-soft)}.jf-stat--saves{background:#fff3c4}.jf-stat--respawns{background:#dff3ff}.jf-stat--attacks{background:#ffe0e6}.jf-dialog,.jf-overlay{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:var(--jf-gutter);overflow-y:auto;pointer-events:auto;background:#150e3399;backdrop-filter:blur(3px)}.jf-dialog{z-index:30}.jf-dialog__card{width:min(560px,100%);margin:auto;border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius-lg);background:var(--jf-surface);box-shadow:0 8px 0 var(--jf-ink),var(--jf-shadow-soft);animation:jf-pop-in .25s cubic-bezier(.2,1.5,.4,1) both}.jf-dialog__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 14px 12px 22px;border-bottom:var(--jf-outline) solid var(--jf-ink);border-radius:calc(var(--jf-radius-lg) - 3px) calc(var(--jf-radius-lg) - 3px) 0 0;background:var(--jf-sun)}.jf-dialog__title{margin:0;font-size:1.35rem;font-weight:900;text-transform:uppercase}.jf-dialog__body{display:grid;gap:18px;padding:20px 22px 22px}.jf-dialog__actions{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.jf-settings__grid{display:grid;gap:16px}.jf-howto__rules{display:grid;gap:10px;margin:0;padding:0;list-style:none}.jf-howto__rule{display:flex;align-items:center;gap:12px}.jf-howto__rule p{margin:0;font-weight:700}.jf-howto__badge{display:grid;place-items:center;flex:none;width:42px;height:42px;border:var(--jf-outline) solid var(--jf-ink);border-radius:12px;background:var(--jf-mint)}.jf-howto__rule:nth-child(2) .jf-howto__badge{background:var(--jf-coral)}.jf-howto__rule:nth-child(3) .jf-howto__badge{background:var(--jf-sky)}.jf-howto__keys{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;align-items:center;margin:0;padding:14px;border-radius:var(--jf-radius);background:var(--jf-surface-2)}.jf-howto__keys dd{margin:0;font-weight:700}.jf-howto__touch{margin:0;font-size:.9rem;color:var(--jf-text-soft);font-weight:700}.jf-pause__card{width:min(380px,100%);margin:auto;text-align:center;animation:jf-pop-in .25s cubic-bezier(.2,1.5,.4,1) both}.jf-pause__room{display:flex;justify-content:center;align-items:center;gap:8px;margin:-4px 0 16px;font-weight:800;color:var(--jf-text-soft);font-variant-numeric:tabular-nums}.jf-pause__room:empty{display:none}.jf-pause__fallback{display:grid;gap:6px;text-align:left;font-weight:700}.jf-pause__fallback .jf-input{font-size:.9rem}.jf-death{position:absolute;left:50%;bottom:clamp(24px,12vh,120px);z-index:15;width:min(380px,calc(100% - 2 * var(--jf-gutter)));transform:translate(-50%);pointer-events:auto}.jf-death__card{display:grid;justify-items:center;gap:10px;text-align:center;animation:jf-pop-in .3s cubic-bezier(.2,1.6,.4,1) both}.jf-death__title{margin:0;font-size:2.2rem;font-weight:900;color:var(--jf-coral);text-transform:uppercase;text-shadow:0 3px 0 var(--jf-ink);transform:rotate(-3deg)}.jf-death__cause{margin:0;font-size:1.15rem;font-weight:800}.jf-death__card .jf-btn{width:100%}.jf-death__hint{font-weight:700;color:var(--jf-text-soft)}.jf-toasts{position:absolute;top:var(--jf-gutter);left:50%;z-index:40;display:grid;gap:8px;width:min(440px,calc(100% - 2 * var(--jf-gutter)));transform:translate(-50%);pointer-events:none}.jf-toast{display:flex;align-items:center;gap:10px;padding:10px 8px 10px 16px;border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius);background:#fff;font-weight:800;box-shadow:0 4px 0 var(--jf-ink),var(--jf-shadow-soft);pointer-events:auto;animation:jf-drop-in .3s cubic-bezier(.2,1.4,.4,1) both;transition:opacity .25s ease,transform .25s ease}.jf-toast.is-leaving{opacity:0;transform:translateY(-10px)}.jf-toast--error{background:#ffd6de;border-left-width:10px;border-left-color:var(--jf-coral)}.jf-toast--success{background:#d4fbe9;border-left-width:10px;border-left-color:#12b87e}.jf-toast--info{border-left-width:10px;border-left-color:var(--jf-sky)}.jf-toast__text{flex:1}.jf-toast__close{display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:8px;background:transparent;cursor:pointer}.jf-toast__close:hover{background:#1a12381a}.jf-hud{position:absolute;inset:0;color:#fff;pointer-events:none}.jf-hud__top{position:absolute;top:var(--jf-gutter);left:50%;display:flex;flex-direction:column;align-items:center;gap:6px;transform:translate(-50%);text-align:center}.jf-timer{display:flex;flex-direction:column;align-items:center;min-width:120px;padding:4px 18px 6px;border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius);background:var(--jf-cream);color:var(--jf-ink);box-shadow:0 4px 0 var(--jf-ink)}.jf-timer__label{font-size:.65rem;font-weight:900;text-transform:uppercase;letter-spacing:.1em;color:var(--jf-text-soft)}.jf-timer__value{font-size:1.8rem;font-weight:900;line-height:1;font-variant-numeric:tabular-nums}.jf-timer.is-warn{background:#ffe0e6;animation:jf-pulse 1s ease-in-out infinite}.jf-timer.is-warn .jf-timer__value{color:#c2183f}.jf-timer.is-next{background:var(--jf-mint)}.jf-timer.is-next .jf-timer__label{color:var(--jf-ink)}.jf-mapname{max-width:60vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:900;text-shadow:0 2px 0 var(--jf-ink),0 0 8px rgba(0,0,0,.4)}.jf-safe{display:inline-flex;align-items:center;gap:6px;padding:3px 12px 3px 8px;border:var(--jf-outline) solid var(--jf-ink);border-radius:99px;background:var(--jf-mint);color:var(--jf-ink);font-size:.85rem;font-weight:900;text-transform:uppercase;box-shadow:0 3px 0 var(--jf-ink);animation:jf-drop-in .25s ease both}.jf-lb{position:absolute;top:var(--jf-gutter);right:var(--jf-gutter);width:min(320px,42vw);border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius);background:var(--jf-hud-glass);backdrop-filter:blur(6px);overflow:hidden;pointer-events:auto}.jf-lb__toggle{display:block;width:100%;padding:6px 12px;border:0;border-bottom:2px solid var(--jf-ink);background:var(--jf-sun);color:var(--jf-ink);font-size:.75rem;font-weight:900;text-align:left;text-transform:uppercase;letter-spacing:.08em;cursor:pointer}.jf-lb__toggle:after{content:"▾";float:right;transition:transform .15s ease}.jf-lb.is-collapsed .jf-lb__toggle:after{transform:rotate(-90deg)}.jf-lb__table{width:100%;border-collapse:collapse;font-size:.85rem;font-variant-numeric:tabular-nums}.jf-lb__table th{padding:4px 6px;font-size:.62rem;font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:#ffffffb3;text-align:right}.jf-lb__table td{padding:3px 6px;font-weight:800;text-align:right;white-space:nowrap}.jf-lb__table .jf-lb__name{width:100%;max-width:0;text-align:left}.jf-lb__table .jf-lb__rank{width:1.8em;text-align:right;color:#ffffffa6}.jf-lb__namewrap{display:flex;align-items:center;gap:6px;min-width:0}.jf-lb__nametext{overflow:hidden;text-overflow:ellipsis}.jf-lb__dot{flex:none;width:10px;height:10px;border:2px solid var(--jf-ink);border-radius:3px;background:#fff}.jf-lb__table tr.is-you td{background:#ffcf3347;color:var(--jf-sun)}.jf-lb__item{display:inline-grid;place-items:center;flex:none}.jf-lb__item--crown{color:var(--jf-sun)}.jf-lb__item--helmet{color:var(--jf-sky)}.jf-lb__item .jf-icon{width:16px;height:16px;filter:drop-shadow(0 1px 0 var(--jf-ink))}.jf-chat{position:absolute;left:var(--jf-gutter);bottom:var(--jf-gutter);display:flex;flex-direction:column;gap:6px;width:min(420px,calc(100% - 2 * var(--jf-gutter)))}.jf-chat__log{display:flex;flex-direction:column;justify-content:flex-end;gap:2px;max-height:30vh;margin:0;padding:0;list-style:none;overflow:hidden;font-size:.92rem;font-weight:700}.jf-chat__line{align-self:flex-start;max-width:100%;padding:2px 10px;border-radius:10px;background:#1a12388c;overflow-wrap:anywhere;transition:opacity 1s ease}.jf-chat__line.is-faded{opacity:0}.jf-chat.is-open .jf-chat__log{overflow-y:auto;pointer-events:auto}.jf-chat.is-open .jf-chat__line.is-faded{opacity:1}.jf-chat__line--system{color:var(--jf-sun);font-style:italic}.jf-chat__name{margin-right:6px;color:var(--jf-sky)}.jf-chat__name:after{content:":"}.jf-chat__form{pointer-events:auto}.jf-chat__input{width:100%;min-height:42px;padding:.4em .9em;border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius);background:#fff8ecf2;color:var(--jf-ink);font-weight:700}.jf-banner{position:absolute;top:26%;left:0;right:0;width:max-content;margin:0 auto;display:flex;align-items:center;gap:12px;max-width:calc(100% - 2 * var(--jf-gutter));padding:12px 26px;border:var(--jf-outline) solid var(--jf-ink);border-radius:var(--jf-radius-lg);background:var(--jf-sun);color:var(--jf-ink);font-size:clamp(1.2rem,4.5vw,2.2rem);font-weight:900;text-align:center;box-shadow:0 6px 0 var(--jf-ink),var(--jf-shadow-soft);transform:rotate(-2deg);animation:jf-banner-in .45s cubic-bezier(.2,1.6,.4,1) both}.jf-banner--timeout{background:var(--jf-coral);color:#fff}.jf-banner--feat{padding:14px 30px;transform:rotate(-2deg) scale(1.04)}.jf-banner__stack{display:flex;flex-direction:column;align-items:center;line-height:1.1}.jf-banner__title{font-size:1.35em;letter-spacing:.12em}.jf-banner--feat .jf-banner__stack>span{font-size:.55em;font-weight:800}.jf-banner--free-solo{background:linear-gradient(135deg,#fff3b0,var(--jf-sun) 45%,#ff9f1c)}.jf-banner--flawless{background:linear-gradient(90deg,#ff4d6d,#ffd23f,#3ddc97,#4cc9f0,#9b5de5,#ff4d6d);background-size:300% 100%;animation:jf-banner-in .45s cubic-bezier(.2,1.6,.4,1) both,jf-rainbow 3s linear infinite}@keyframes jf-rainbow{to{background-position:300% 0}}.jf-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none}.jf-confetti__piece{position:absolute;top:-4vh;left:var(--x);width:9px;height:14px;border-radius:2px;animation:jf-confetti-fall var(--dur) cubic-bezier(.25,.4,.6,1) var(--delay) both}@keyframes jf-confetti-fall{to{transform:translate(var(--drift),108vh) rotate(var(--spin))}}.jf-results__badge{display:inline-flex;align-items:center;gap:8px;margin:4px auto 0;padding:6px 14px;border:var(--jf-outline) solid var(--jf-ink);border-radius:999px;font-weight:900;color:var(--jf-ink);box-shadow:0 3px 0 var(--jf-ink)}.jf-results__badge[hidden]{display:none}.jf-results__badge .jf-icon{width:1.2em;height:1.2em}.jf-results__badge--free-solo{background:linear-gradient(135deg,#fff3b0,var(--jf-sun) 45%,#ff9f1c)}.jf-results__badge--flawless{background:linear-gradient(90deg,#ff4d6d,#ffd23f,#3ddc97,#4cc9f0,#9b5de5)}.jf-banner .jf-icon{width:1.3em;height:1.3em}.jf-popup{position:absolute;top:62%;left:50%;transform:translate(-50%)}.jf-popup__text{display:block;font-size:clamp(1.4rem,5vw,2.4rem);font-weight:900;white-space:nowrap;color:var(--jf-sun);text-shadow:3px 0 0 var(--jf-ink),-3px 0 0 var(--jf-ink),0 3px 0 var(--jf-ink),0 -3px 0 var(--jf-ink),0 6px 0 var(--jf-ink);animation:jf-popup 1.8s ease both}.jf-popup__text--info{color:var(--jf-mint);font-size:clamp(1.1rem,4vw,1.8rem)}.jf-wheel{position:absolute;inset:0;display:grid;place-items:center;pointer-events:auto;background:radial-gradient(circle,rgba(21,14,51,.35) 0,transparent 60%)}.jf-wheel__ring{--r: clamp(100px, 26vmin, 150px);--slot: clamp(52px, 12vmin, 68px);position:relative;width:calc(2 * var(--r) + var(--slot));height:calc(2 * var(--r) + var(--slot));border-radius:50%;background:#1a12388c;border:var(--jf-outline) solid var(--jf-ink);animation:jf-pop-in .18s ease-out both}.jf-wheel__slot{position:absolute;top:50%;left:50%;width:var(--slot);height:var(--slot);margin:calc(var(--slot) / -2) 0 0 calc(var(--slot) / -2);padding:4px;border:var(--jf-outline) solid var(--jf-ink);border-radius:50%;background:var(--jf-cream);cursor:pointer;transform:translate(calc(var(--x) * var(--r)),calc(var(--y) * var(--r)));transition:transform .1s ease,background .1s ease}.jf-wheel__slot.is-selected{background:var(--jf-sun);transform:translate(calc(var(--x) * var(--r)),calc(var(--y) * var(--r))) scale(1.22);box-shadow:0 4px 0 var(--jf-ink);z-index:1}.jf-wheel__face{width:100%;height:100%;display:block}.jf-wheel__hub{position:absolute;top:50%;left:50%;display:grid;place-items:center;width:96px;height:96px;margin:-48px 0 0 -48px;border:var(--jf-outline) solid var(--jf-ink);border-radius:50%;background:var(--jf-ink);color:#fff;font-weight:900;font-size:.9rem;text-transform:uppercase;text-align:center}.jf-touch{position:absolute;inset:0;pointer-events:none;user-select:none;-webkit-user-select:none}.jf-touch__look{position:absolute;inset:0;pointer-events:auto;touch-action:none}.jf-touch__top{position:absolute;top:var(--jf-gutter);left:var(--jf-gutter);display:flex;gap:8px;pointer-events:auto}.jf-touch__btn{display:grid;place-items:center;width:46px;height:46px;border:var(--jf-outline) solid var(--jf-ink);border-radius:14px;background:#fff8ece6;color:var(--jf-ink);box-shadow:0 3px 0 var(--jf-ink);touch-action:manipulation}.jf-touch__stick{position:absolute;left:max(var(--jf-gutter),env(safe-area-inset-left));bottom:max(calc(var(--jf-gutter) + 24px),env(safe-area-inset-bottom));width:150px;height:150px;display:grid;place-items:center;pointer-events:auto;touch-action:none}.jf-touch__base{display:grid;place-items:center;width:130px;height:130px;border:var(--jf-outline) solid rgba(26,18,56,.8);border-radius:50%;background:#ffffff2e}.jf-touch__knob{width:60px;height:60px;border:var(--jf-outline) solid var(--jf-ink);border-radius:50%;background:var(--jf-sun);box-shadow:0 4px 0 var(--jf-ink)}.jf-touch__jump{position:absolute;right:max(var(--jf-gutter),env(safe-area-inset-right));bottom:max(calc(var(--jf-gutter) + 36px),env(safe-area-inset-bottom));display:grid;place-items:center;width:96px;height:96px;border:var(--jf-outline) solid var(--jf-ink);border-radius:50%;background:var(--jf-coral);color:#fff;box-shadow:0 6px 0 var(--jf-ink);pointer-events:auto;touch-action:none}.jf-touch__jump .jf-icon{width:46px;height:46px}.jf-touch__jump.is-down{transform:translateY(4px);box-shadow:0 2px 0 var(--jf-ink)}.jf-hud.is-touch .jf-chat{bottom:200px;width:min(360px,calc(100% - 2 * var(--jf-gutter)))}@media (max-width: 640px){.jf-ui{font-size:15px}.jf-menu__row{grid-template-columns:1fr}.jf-room{grid-template-columns:1fr auto}.jf-room .jf-btn{grid-column:1 / -1}.jf-hud__top{left:auto;right:var(--jf-gutter);align-items:flex-end;transform:none}.jf-timer{min-width:96px;padding:2px 12px 4px}.jf-timer__value{font-size:1.35rem}.jf-mapname{display:none}.jf-lb{top:calc(var(--jf-gutter) + 96px);width:min(220px,58vw)}.jf-banner{top:44%;font-size:1.15rem;padding:10px 16px}.jf-lb__table th:nth-child(4),.jf-lb__table td:nth-child(4),.jf-lb__table th:nth-child(5),.jf-lb__table td:nth-child(5){display:none}.jf-results__stats{gap:6px}.jf-stat__value{font-size:1.5rem}.jf-touch__stick{width:130px;height:130px}.jf-touch__base{width:116px;height:116px}.jf-touch__jump{width:84px;height:84px}}@media (max-height: 480px) and (orientation: landscape){.jf-wordmark__word{font-size:40px}.jf-menu__tagline{display:none}.jf-hud.is-touch .jf-chat{bottom:var(--jf-gutter);left:200px;width:min(320px,calc(100% - 420px))}}@keyframes jf-spin{to{transform:rotate(360deg)}}@keyframes jf-drift{to{background-position:80px 80px,120px 120px}}@keyframes jf-hop{0%,70%,to{translate:0 0}80%{translate:0 -.12em}90%{translate:0 .02em}}@keyframes jf-bounce{0%{transform:translateY(0) scale(1.1,.85)}30%{transform:translateY(-6px) scale(1)}to{transform:translateY(-32px) rotate(90deg)}}@keyframes jf-indeterminate{0%{transform:translate(-110%)}to{transform:translate(300%)}}@keyframes jf-pop-in{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}@keyframes jf-drop-in{0%{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:none}}@keyframes jf-banner-in{0%{opacity:0;transform:scale(.5) rotate(-8deg)}to{opacity:1;transform:rotate(-2deg)}}@keyframes jf-popup{0%{opacity:0;transform:scale(.4)}15%{opacity:1;transform:scale(1.15)}25%{transform:scale(1)}80%{opacity:1;transform:translateY(-10px)}to{opacity:0;transform:translateY(-30px)}}@keyframes jf-pulse{50%{transform:scale(1.06)}}@media (prefers-reduced-motion: reduce){.jf-ui *,.jf-ui *:before,.jf-ui *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
