:root{--fz-green: #3ecf3e;--fz-green-bright: #6bff5c;--fz-green-dark: #0f7a34;--fz-swamp: #0b3d20;--fz-swamp-deep: #072616;--fz-yellow: #ffd23f;--fz-orange: #ff8c42;--fz-blue: #3fa7ff;--fz-blue-deep: #1b5e9e;--fz-red: #ff5d5d;--fz-cream: #fdf6e3;--fz-ink: #10231a;--fz-panel: rgba(9, 38, 22, .92);--fz-panel-light: rgba(20, 66, 40, .92);--fz-radius: 18px;--fz-font-display: "Arial Black", "Helvetica Neue", Arial, sans-serif;--fz-font-body: "Trebuchet MS", "Segoe UI", Verdana, sans-serif;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden;overscroll-behavior:none;background:var(--fz-swamp-deep);font-family:var(--fz-font-body);color:var(--fz-cream);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none}#app{position:fixed;inset:0}#game-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}#ui-root{position:absolute;inset:0;pointer-events:none}#ui-root>*{pointer-events:auto}#ui-root>.fz-screen--transparent{pointer-events:none}.fz-btn{font-family:var(--fz-font-display);font-size:1rem;letter-spacing:.04em;border:none;border-radius:999px;padding:.85em 1.7em;cursor:pointer;color:var(--fz-ink);background:linear-gradient(180deg,var(--fz-green-bright),var(--fz-green));box-shadow:0 4px #1d8a2e,0 8px 18px #00000059;transition:transform .08s ease,box-shadow .08s ease,filter .15s;text-transform:uppercase}.fz-btn:hover{filter:brightness(1.07)}.fz-btn:active{transform:translateY(3px);box-shadow:0 1px #1d8a2e,0 4px 10px #0000004d}.fz-btn:focus-visible{outline:3px solid var(--fz-yellow);outline-offset:3px}.fz-btn:disabled{filter:grayscale(.7) brightness(.8);cursor:not-allowed}.fz-btn--big{font-size:1.5rem;padding:.9em 2.2em}.fz-btn--yellow{background:linear-gradient(180deg,#ffe27a,var(--fz-yellow));box-shadow:0 4px #c99b12,0 8px 18px #00000059}.fz-btn--yellow:active{box-shadow:0 1px #c99b12,0 4px 10px #0000004d}.fz-btn--blue{background:linear-gradient(180deg,#7cc4ff,var(--fz-blue));box-shadow:0 4px #1b5e9e,0 8px 18px #00000059}.fz-btn--blue:active{box-shadow:0 1px #1b5e9e,0 4px 10px #0000004d}.fz-btn--ghost{background:#ffffff1a;color:var(--fz-cream);box-shadow:inset 0 0 0 2px #ffffff59}.fz-btn--ghost:active{transform:translateY(2px)}.fz-btn--small{font-size:.8rem;padding:.6em 1.2em}.fz-btn--danger{background:linear-gradient(180deg,#ff8a8a,var(--fz-red));box-shadow:0 4px #a33}.fz-chip{display:inline-flex;align-items:center;gap:.4em;background:#00000059;border-radius:999px;padding:.35em .9em;font-weight:700;font-size:.9rem}.fz-title{font-family:var(--fz-font-display);text-transform:uppercase;letter-spacing:.02em}.fz-screen{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;overflow-y:auto;padding:calc(16px + var(--safe-top)) 16px calc(24px + var(--safe-bottom));background:radial-gradient(120% 90% at 50% -10%,rgba(107,255,92,.16),transparent 60%),linear-gradient(180deg,#0d4526 0%,var(--fz-swamp) 55%,var(--fz-swamp-deep) 100%);animation:fz-screen-in .25s ease}@keyframes fz-screen-in{0%{opacity:0;transform:scale(1.02)}to{opacity:1;transform:none}}.fz-screen{touch-action:pan-y}.fz-screen--transparent{background:none;pointer-events:none;touch-action:none}.fz-screen--transparent>*{pointer-events:auto}.fz-logo-art{display:block;margin:.2rem auto 0;width:min(380px,82vw);max-height:30vh}.fz-logo-art img{width:100%;height:100%;max-height:30vh;object-fit:contain;display:block;filter:drop-shadow(0 6px 14px rgba(0,0,0,.45))}@media (max-height: 720px){.fz-logo-art{width:min(300px,70vw);max-height:26vh}.fz-logo-art img{max-height:26vh}}.fz-logo{font-family:var(--fz-font-display);font-size:clamp(2.6rem,9vw,5rem);line-height:.95;text-align:center;text-transform:uppercase;letter-spacing:-.01em;background:linear-gradient(180deg,var(--fz-green-bright) 20%,var(--fz-green) 55%,#1d9c3f 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 3px 0 #06421d) drop-shadow(0 6px 14px rgba(0,0,0,.5))}.fz-logo .zoom{background:linear-gradient(180deg,#bfe6ff 10%,var(--fz-blue) 70%);-webkit-background-clip:text;background-clip:text;color:transparent;font-style:italic}.fz-tagline{margin-top:.4rem;font-family:var(--fz-font-display);color:var(--fz-yellow);letter-spacing:.12em;font-size:clamp(.75rem,2.6vw,1.05rem);text-transform:uppercase;text-shadow:0 2px 0 rgba(0,0,0,.5)}.fz-home-frog{width:min(190px,40vw);margin:.8rem 0 .4rem;filter:drop-shadow(0 10px 18px rgba(0,0,0,.45))}.fz-home-frog svg{width:100%;height:auto}.fz-menu{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;width:min(560px,100%);margin-top:1.2rem}.fz-menu .fz-btn{width:100%;font-size:.85rem;padding:.9em .6em}.fz-modes{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;width:min(560px,100%);margin-top:1.4rem}@media (max-width: 400px){.fz-modes{gap:8px}.fz-mode-btn{padding:.95em .35em}.fz-mode-btn .mode-icon{font-size:1.45rem}.fz-mode-btn .mode-name{font-size:.95rem;letter-spacing:0}.fz-mode-btn .mode-sub{font-size:.6rem}}@media (max-width: 319px){.fz-modes{grid-template-columns:1fr}}.fz-mode-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:1.05em .7em;border-radius:var(--fz-radius);line-height:1.15}.fz-mode-btn .mode-icon{font-size:1.7rem}.fz-mode-btn .mode-name{font-size:1.15rem;letter-spacing:.03em}.fz-mode-btn .mode-sub{font-family:var(--fz-font-body);font-size:.68rem;font-weight:700;text-transform:none;opacity:.75}.fz-playerbar{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:1rem}.fz-legal-links{display:flex;gap:10px;justify-content:center;margin:.9rem 0;font-size:.78rem}.fz-legal-links a{color:var(--fz-green-bright);text-decoration:none;border-bottom:1px solid rgba(107,255,92,.35);padding-bottom:1px}.fz-legal-links a:hover{border-bottom-color:var(--fz-green-bright)}.fz-footer{margin-top:auto;padding-top:1.4rem;font-size:.62rem;opacity:.55;text-align:center;line-height:1.5;max-width:560px}.fz-panel{background:var(--fz-panel);border-radius:var(--fz-radius);box-shadow:0 10px 30px #00000073,inset 0 0 0 1px #ffffff14;padding:18px;width:min(620px,100%)}.fz-panel h2{font-family:var(--fz-font-display);color:var(--fz-green-bright);margin-bottom:.6em;text-transform:uppercase}.fz-panel h3{color:var(--fz-yellow);margin:.9em 0 .4em}.fz-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.fz-row--between{justify-content:space-between}.fz-row--center{justify-content:center}.hud-top{position:absolute;top:calc(8px + var(--safe-top));left:8px;right:8px;display:flex;justify-content:space-between;align-items:flex-start;gap:8px;pointer-events:none}.hud-top>*{pointer-events:auto}.hud-hole{background:var(--fz-panel);border-radius:14px;padding:8px 14px;box-shadow:0 4px 12px #0006}.hud-hole .hole-num{font-family:var(--fz-font-display);font-size:1.05rem;color:var(--fz-green-bright)}.hud-hole .hole-meta{font-size:.75rem;opacity:.9}.hud-score{text-align:center}.hud-wind{background:var(--fz-panel);border-radius:14px;padding:8px 12px;text-align:center;font-weight:700;box-shadow:0 4px 12px #0006}.hud-wind .wind-arrow{display:inline-block;font-size:1.2rem;transition:transform .3s}.hud-bottom{position:absolute;bottom:calc(10px + var(--safe-bottom));left:8px;right:8px;display:flex;align-items:flex-end;justify-content:space-between;gap:8px;pointer-events:none}.hud-bottom>*{pointer-events:auto}.club-box{background:var(--fz-panel);border-radius:16px;padding:10px;display:flex;flex-direction:column;gap:6px;align-items:center;box-shadow:0 4px 12px #0006;min-width:120px}.club-name{font-family:var(--fz-font-display);font-size:1rem;color:var(--fz-yellow)}.club-dist{font-size:.78rem;opacity:.9}.club-arrows{display:flex;gap:6px}.club-arrows button{width:44px;height:38px;border-radius:10px;border:none;background:#ffffff1f;color:var(--fz-cream);font-size:1.15rem;cursor:pointer}.club-arrows button:active{background:#ffffff4d}.swing-cluster{display:flex;align-items:center;gap:10px}.aim-btn{width:min(62px,15vw);height:min(62px,15vw);border-radius:50%;border:none;background:var(--fz-panel);color:var(--fz-green-bright);font-size:1.4rem;cursor:pointer;box-shadow:0 4px #00000073,0 6px 14px #0006;box-shadow:0 4px #06421d,0 6px 14px #0006;display:flex;align-items:center;justify-content:center;transition:transform .06s ease;touch-action:none}.aim-btn:active{transform:translateY(3px);box-shadow:0 1px #06421d,0 3px 8px #00000059}.aim-btn:focus-visible{outline:3px solid var(--fz-yellow);outline-offset:3px}.aim-btn:disabled{opacity:.35;cursor:not-allowed}.swing-btn{width:min(108px,24vw);height:min(108px,24vw);border-radius:50%;border:none;background:radial-gradient(circle at 35% 30%,var(--fz-green-bright),var(--fz-green-dark) 80%);box-shadow:0 6px #06421d,0 10px 24px #00000080;color:var(--fz-ink);font-family:var(--fz-font-display);font-size:.95rem;text-transform:uppercase;cursor:pointer}.swing-btn:active{transform:translateY(4px);box-shadow:0 2px #06421d,0 5px 12px #0006}.swing-btn.zoom-ready{background:radial-gradient(circle at 35% 30%,#ffe27a,var(--fz-orange) 85%);box-shadow:0 6px #a05012,0 0 26px #ffd23f99}.hud-pause{width:42px;height:42px;border-radius:12px;border:none;background:var(--fz-panel);color:var(--fz-cream);font-size:1.1rem;cursor:pointer;box-shadow:0 4px 12px #0006}.swing-meter{position:absolute;bottom:calc(130px + var(--safe-bottom));left:50%;transform:translate(-50%);width:min(340px,78vw);pointer-events:none}.meter-track{position:relative;height:30px;border-radius:999px;background:#0000008c;box-shadow:inset 0 0 0 2px #ffffff40;overflow:hidden}.meter-fill{position:absolute;inset:3px auto 3px 3px;width:0%;border-radius:999px;background:linear-gradient(90deg,var(--fz-green),var(--fz-yellow) 70%,var(--fz-orange))}.meter-marker{position:absolute;top:-4px;bottom:-4px;width:6px;border-radius:3px;background:#fff;box-shadow:0 0 8px #ffffffe6;transform:translate(-3px)}.meter-center{position:absolute;top:0;bottom:0;width:12px;transform:translate(-6px);background:#ffffff59}.meter-label{text-align:center;font-family:var(--fz-font-display);margin-top:6px;font-size:.85rem;color:var(--fz-cream);text-shadow:0 2px 3px rgba(0,0,0,.8);text-transform:uppercase}.zoom-meter{margin-top:8px;height:10px;border-radius:999px;background:#00000080;overflow:hidden;box-shadow:inset 0 0 0 1px #fff3}.zoom-meter-fill{height:100%;width:0%;background:linear-gradient(90deg,var(--fz-blue),var(--fz-green-bright));transition:width .4s ease}.zoom-meter.full .zoom-meter-fill{background:linear-gradient(90deg,var(--fz-yellow),var(--fz-orange));animation:zoom-pulse .8s infinite alternate}@keyframes zoom-pulse{0%{filter:brightness(1)}to{filter:brightness(1.5)}}.aim-hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-family:var(--fz-font-display);font-size:.8rem;color:#ffffffd9;background:#00000073;padding:8px 16px;border-radius:999px;pointer-events:none;text-transform:uppercase;letter-spacing:.08em}.fz-toast-wrap{position:absolute;top:calc(84px + var(--safe-top));left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;z-index:30}.fz-toast{background:var(--fz-panel-light);border-radius:999px;padding:10px 22px;font-weight:700;box-shadow:0 6px 16px #00000073;animation:toast-in .25s ease,toast-out .3s ease 3.4s forwards;max-width:90vw;text-align:center}.fz-toast--common{box-shadow:0 6px 16px #00000073,inset 0 0 0 2px #9fd6a9}.fz-toast--uncommon{box-shadow:0 6px 16px #00000073,inset 0 0 0 2px var(--fz-blue)}.fz-toast--rare{box-shadow:0 6px 16px #00000073,inset 0 0 0 2px #c77dff}.fz-toast--legendary{box-shadow:0 6px 16px #00000073,inset 0 0 0 2px var(--fz-yellow);animation:toast-in .25s,legendary-glow 1s infinite alternate,toast-out .3s ease 4.6s forwards}@keyframes legendary-glow{0%{filter:brightness(1)}to{filter:brightness(1.35)}}@keyframes toast-in{0%{opacity:0;transform:translateY(-14px) scale(.9)}}@keyframes toast-out{to{opacity:0;transform:translateY(-10px)}}.fz-banner{position:absolute;top:34%;left:0;right:0;text-align:center;pointer-events:none;z-index:40;animation:banner-in .35s cubic-bezier(.2,1.6,.4,1),banner-out .4s ease 2.2s forwards}.fz-banner .banner-main{font-family:var(--fz-font-display);font-size:clamp(2.2rem,9vw,4.4rem);color:var(--fz-yellow);text-transform:uppercase;text-shadow:0 4px 0 #7a4a00,0 8px 22px rgba(0,0,0,.6);letter-spacing:.02em}.fz-banner .banner-sub{font-family:var(--fz-font-display);font-size:clamp(1rem,4vw,1.5rem);color:#fff;text-shadow:0 2px 6px rgba(0,0,0,.7);text-transform:uppercase}.fz-banner--great .banner-main{color:var(--fz-green-bright);text-shadow:0 4px 0 #06421d,0 8px 22px rgba(0,0,0,.6)}.fz-banner--bad .banner-main{color:#cfd8dc;text-shadow:0 4px 0 #263238,0 8px 22px rgba(0,0,0,.6)}@keyframes banner-in{0%{opacity:0;transform:scale(.4) rotate(-4deg)}}@keyframes banner-out{to{opacity:0;transform:translateY(-30px)}}.mascot{position:absolute;left:10px;bottom:calc(128px + var(--safe-bottom));display:flex;align-items:flex-end;gap:8px;z-index:25;pointer-events:none;max-width:min(430px,calc(100vw - 20px))}.mascot-face{width:74px;height:74px;flex:0 0 auto;filter:drop-shadow(0 4px 8px rgba(0,0,0,.5));animation:mascot-bob 2.4s ease-in-out infinite}@keyframes mascot-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.mascot-bubble{background:var(--fz-cream);color:var(--fz-ink);border-radius:16px 16px 16px 4px;padding:10px 14px;font-weight:700;font-size:.92rem;box-shadow:0 6px 14px #0006;animation:bubble-in .25s ease;margin-bottom:8px}@keyframes bubble-in{0%{opacity:0;transform:scale(.7)}}.mascot.hidden{display:none}.scorecard-table{width:100%;border-collapse:collapse;text-align:center;font-size:.95rem}.scorecard-table th,.scorecard-table td{padding:8px 6px;border-bottom:1px solid rgba(255,255,255,.12)}.scorecard-table th{font-family:var(--fz-font-display);color:var(--fz-yellow);font-size:.75rem;text-transform:uppercase}.score-badge{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;border-radius:10px;font-weight:700;background:#ffffff1a}.score-badge--eagle{background:var(--fz-yellow);color:var(--fz-ink);border-radius:50%;box-shadow:0 0 12px #ffd23fb3}.score-badge--birdie{background:var(--fz-green-bright);color:var(--fz-ink);border-radius:50%}.score-badge--par{background:#ffffff2e}.score-badge--bogey{background:var(--fz-orange);color:var(--fz-ink)}.score-badge--double{background:var(--fz-red);color:#fff}.result-stats{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:14px 0}.result-stat{background:#0000004d;border-radius:14px;padding:10px 16px;text-align:center;min-width:96px}.result-stat .stat-num{font-family:var(--fz-font-display);font-size:1.4rem;color:var(--fz-green-bright)}.result-stat .stat-label{font-size:.68rem;text-transform:uppercase;opacity:.8;letter-spacing:.06em}.trophy-pond{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;width:100%}.trophy{background:#0000004d;border-radius:14px;padding:12px;text-align:center;transition:transform .15s}.trophy:hover{transform:translateY(-3px)}.trophy .trophy-icon{font-size:2rem}.trophy .trophy-name{font-family:var(--fz-font-display);font-size:.72rem;margin-top:6px;color:var(--fz-yellow);text-transform:uppercase}.trophy .trophy-desc{font-size:.7rem;opacity:.75;margin-top:4px}.trophy.locked{opacity:.45;filter:grayscale(.9)}.trophy.locked .trophy-icon{filter:blur(1px)}.avatar-preview{width:100%;height:240px;border-radius:var(--fz-radius);background:radial-gradient(90% 70% at 50% 100%,rgba(62,207,62,.25),transparent),linear-gradient(180deg,#7cc4ff,#b8e2ff 55%,#3a9d4e 56%,#1d7a35);overflow:hidden;position:relative}.avatar-preview canvas{width:100%!important;height:100%!important}.avatar-tabs{display:flex;gap:8px;margin:12px 0;flex-wrap:wrap}.avatar-tab{border:none;border-radius:999px;padding:8px 18px;font-family:var(--fz-font-display);font-size:.78rem;background:#ffffff1a;color:var(--fz-cream);cursor:pointer;text-transform:uppercase}.avatar-tab.active{background:var(--fz-green);color:var(--fz-ink)}.option-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 0}.option-row .option-label{font-weight:700;font-size:.9rem}.option-cycle{display:flex;align-items:center;gap:8px}.option-cycle button{width:40px;height:36px;border-radius:10px;border:none;background:#ffffff1f;color:var(--fz-cream);font-size:1rem;cursor:pointer}.option-cycle button:active{background:#ffffff4d}.option-cycle .option-value{min-width:96px;text-align:center;font-size:.85rem}.swatch{display:inline-block;width:20px;height:20px;border-radius:6px;vertical-align:middle;margin-right:6px;box-shadow:inset 0 0 0 1px #fff6}.picker-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%}@media (max-width: 480px){.picker-grid{grid-template-columns:repeat(2,1fr)}}.picker-cell{background:#00000047;border-radius:14px;padding:8px 6px 10px;cursor:pointer;text-align:center;transition:transform .12s ease,box-shadow .12s ease;box-shadow:inset 0 0 0 2px transparent}.picker-cell:hover,.picker-cell:focus-visible{transform:translateY(-3px);box-shadow:inset 0 0 0 2px var(--fz-green-bright);outline:none}.picker-portrait{width:100%;aspect-ratio:1 / 1;border-radius:10px;overflow:hidden;background:linear-gradient(180deg,#8fd4ff,#cbeaff 55%,#47ad5b 56%,#2b8a41)}.picker-portrait canvas{width:100%!important;height:100%!important;display:block}.picker-name{margin-top:6px;font-family:var(--fz-font-display);font-size:.72rem;color:var(--fz-yellow);text-transform:uppercase}.howto-step{display:flex;gap:12px;align-items:flex-start;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.09)}.howto-num{flex:0 0 auto;width:30px;height:30px;border-radius:50%;background:var(--fz-green);color:var(--fz-ink);font-family:var(--fz-font-display);display:flex;align-items:center;justify-content:center}.howto-title{font-family:var(--fz-font-display);color:var(--fz-green-bright);letter-spacing:.04em}.howto-body{font-size:.9rem;line-height:1.45;opacity:.92;margin-top:2px}.howto-keys{display:flex;flex-direction:column;gap:6px;font-size:.9rem;line-height:1.4}.howto-keys b{color:var(--fz-yellow)}.putt-info{position:absolute;top:calc(84px + var(--safe-top));left:50%;transform:translate(-50%);background:var(--fz-panel);border-radius:14px;padding:8px 18px;text-align:center;font-size:.85rem;box-shadow:0 4px 12px #0006;pointer-events:none}.putt-info b{color:var(--fz-green-bright)}.fz-screen--vcenter{justify-content:flex-start}.fz-screen--vcenter>*{margin-block:auto}.range-pips{display:flex;gap:4px;justify-content:center;margin-top:4px}.range-pip{width:9px;height:9px;border-radius:50%;background:#ffffff38;box-shadow:inset 0 0 0 1px #ffffff4d}.range-pip.on{background:var(--fz-yellow);box-shadow:0 0 8px #ffd23fcc}.range-streak{margin-top:4px;font-family:var(--fz-font-display);font-size:.68rem;letter-spacing:.04em;color:var(--fz-ink);background:linear-gradient(180deg,#ffe27a,var(--fz-orange));border-radius:8px;padding:2px 6px;animation:zoom-pulse .8s infinite alternate}.range-last{position:absolute;top:calc(92px + var(--safe-top));left:50%;transform:translate(-50%);max-width:min(92vw,560px);background:var(--fz-panel);border-radius:12px;padding:6px 14px;text-align:center;font-size:.76rem;font-weight:700;letter-spacing:.02em;color:var(--fz-green-bright);box-shadow:0 4px 12px #0006;pointer-events:none}.range-last--miss{color:#cfd8dc;opacity:.85}.range-paytable{display:flex;flex-direction:column;gap:4px;margin:.6em 0;text-align:left}.range-payrow{display:flex;align-items:center;gap:8px;background:#ffffff12;border-radius:10px;padding:6px 10px;font-size:.86rem}.range-payicon{font-size:1.1rem}.range-paywhat{flex:1}.range-paypts{font-family:var(--fz-font-display);color:var(--fz-yellow)}.range-lengths-label{margin:1.1rem 0 .45rem;font-family:var(--fz-font-display);letter-spacing:.06em;font-size:.9rem;opacity:.85}.range-lengths{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.range-length{display:flex;flex-direction:column;align-items:center;gap:2px;padding:.7em .4em;font-size:1rem;line-height:1.1}.range-length--default{background:linear-gradient(180deg,#ffe27a,var(--fz-yellow));color:#2a2000;box-shadow:0 4px #c99b12,0 8px 18px #00000059}.range-length--default:active{box-shadow:0 1px #c99b12,0 4px 10px #0000004d}.range-length-n{font-family:var(--fz-font-display);font-size:1.7rem}.range-length-word{font-size:.62rem;letter-spacing:.1em;opacity:.85}.range-length-best{font-size:.6rem;letter-spacing:.04em;opacity:.75;white-space:nowrap}body.high-contrast .range-length--default{box-shadow:inset 0 0 0 2px #fff}.range-total{text-align:center;font-family:var(--fz-font-display);font-size:3.4rem;line-height:1;color:var(--fz-green-bright);text-shadow:0 4px 0 #06421d,0 10px 24px rgba(0,0,0,.5);margin:.1em 0}.range-rank{text-align:center;font-family:var(--fz-font-display);color:var(--fz-yellow);letter-spacing:.06em;margin-bottom:.5em}.range-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:6px;margin:10px 0}.range-cell{display:flex;align-items:center;gap:6px;background:#ffffff0f;border-radius:10px;padding:6px 8px;font-size:.72rem;opacity:.45}.range-cell.hit{opacity:1;background:#6bff5c29;box-shadow:inset 0 0 0 1px #6bff5c66}.range-cell-icon{font-size:.95rem}.range-cell-name{flex:1;font-weight:700}.range-cell-hits{font-family:var(--fz-font-display);color:var(--fz-yellow)}.fz-loading{position:absolute;inset:0;z-index:100;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:linear-gradient(180deg,#0d4526,var(--fz-swamp-deep));text-align:center;padding:24px}.fz-loading .fz-tip{max-width:420px;font-style:italic;opacity:.85;min-height:3em}.loading-ball{width:46px;height:46px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#cfd4cf);animation:ball-hop .9s cubic-bezier(.3,0,.6,1) infinite alternate;box-shadow:0 6px 12px #00000080}@keyframes ball-hop{0%{transform:translateY(0) scale(1)}to{transform:translateY(-34px) scale(.95,1.05)}}.fz-error-screen{position:fixed;inset:0;z-index:999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:linear-gradient(180deg,#123a22,var(--fz-swamp-deep));text-align:center;padding:24px}.fz-error-screen .err-detail{font-family:ui-monospace,Menlo,monospace;font-size:.72rem;opacity:.65;max-width:90vw;word-break:break-word;background:#00000059;padding:8px 12px;border-radius:10px}.fz-error-screen .err-frog{font-size:5rem;animation:mascot-bob 2s infinite}.dev-panel{position:absolute;top:calc(60px + var(--safe-top));right:8px;z-index:60;background:#000000d9;border-radius:12px;padding:10px;font-size:.72rem;display:flex;flex-direction:column;gap:5px;width:190px;max-height:70vh;overflow-y:auto}.dev-panel button{background:#333;color:#9f9;border:1px solid #4a4;border-radius:6px;padding:4px;cursor:pointer;font-size:.7rem;font-family:monospace}body.high-contrast .fz-panel,body.high-contrast .hud-hole,body.high-contrast .hud-wind,body.high-contrast .club-box{background:#000;box-shadow:0 0 0 2px #fff}body.high-contrast .fz-btn--ghost{box-shadow:inset 0 0 0 2px #fff}body.high-contrast{--fz-panel: #000}body.reduced-motion *,body.reduced-motion *:before,body.reduced-motion *:after{animation-duration:1ms!important;transition-duration:1ms!important}@media (max-width: 640px){.fz-menu{grid-template-columns:repeat(2,1fr)}.swing-cluster{gap:6px}.club-box{min-width:104px;padding:8px}.mascot-face{width:58px;height:58px}.mascot{bottom:calc(140px + var(--safe-bottom))}.mascot-bubble{font-size:.8rem}}
