@import "https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700&family=Manrope:wght@400;500;600;700&display=swap";:root{color:#eef7fb;font-synthesis:none;background:#06111d;font-family:Manrope,Arial,sans-serif}*{box-sizing:border-box}html,body,#app{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;margin:0;overflow:hidden}button,select{font:inherit}button{cursor:pointer;color:inherit;border:0}.game-shell,.stage{width:100%;height:100%;position:relative}.stage canvas{width:100%;height:100%;display:block}.range-scene{isolation:isolate;background:#101012 var(--range-background,url(../assets/sporthalle_bg.webp)) center / cover no-repeat;position:absolute;inset:0;overflow:hidden}.range-vignette{z-index:1;background:radial-gradient(at 50% 42%,#0000 34%,#020405a6 100%),linear-gradient(90deg,#02070c2b,#0000 25% 75%,#02070c2b);transition:opacity .75s;position:absolute;inset:0}.target-frame{z-index:3;aspect-ratio:1;filter:drop-shadow(0 8px 9px #000b);width:min(14vh,14vw);transition:width .74s cubic-bezier(.2,.8,.2,1),top .74s cubic-bezier(.2,.8,.2,1),filter .5s;position:absolute;top:37%;left:50%;transform:translate(-50%,-50%)}.target-frame>img{object-fit:contain;width:100%;height:100%;display:block}.aim-reticle{z-index:7;aspect-ratio:1;opacity:0;filter:drop-shadow(0 2px 4px #000);pointer-events:none;width:clamp(28px,4vw,51px);transition:opacity .18s,left 80ms linear,top 80ms linear;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.aim-reticle:before,.aim-reticle:after,.aim-reticle span:before,.aim-reticle span:after{content:"";background:#e9fbff;position:absolute;box-shadow:0 0 4px #0c2d38}.aim-reticle:before{width:41%;height:2px;top:50%;left:0}.aim-reticle:after{width:41%;height:2px;top:50%;right:0}.aim-reticle span:before{width:2px;height:41%;top:0;left:50%}.aim-reticle span:after{width:2px;height:41%;bottom:0;left:50%}.aim-reticle i{border:1.5px solid #e9fbff;border-radius:50%;position:absolute;inset:35%}.aim-reticle b{background:#faef94;border-radius:50%;position:absolute;inset:48%;box-shadow:0 0 5px #ffe86c}.aim-reticle em{display:none}.arm-art{z-index:5;width:min(44vw,510px);transform:translateX(calc(-50% + var(--arm-x,0px))) translateY(var(--arm-y,0px));transform-origin:50% 100%;filter:drop-shadow(0 -4px 12px #0009);opacity:0;pointer-events:none;transition:opacity .35s,transform .14s;position:absolute;bottom:-16%;left:50%}.arm-art.flat-arm{filter:none}.range-caption{z-index:2;color:#d9d1ba;text-shadow:0 1px 4px #000;letter-spacing:.22em;opacity:.75;font-size:clamp(6px,.6vw,11px);transition:opacity .4s;position:absolute;top:calc(37% + min(8vh,8vw));left:50%;transform:translate(-50%)}.range-scene.is-focused .target-frame{filter:drop-shadow(0 14px 18px #000c);width:min(46vh,40vw);top:47%}.range-scene.is-focused .aim-reticle,.range-scene.is-focused .arm-art{opacity:1}.range-scene.is-focused .range-caption{opacity:0}.range-scene.is-focused .range-vignette{opacity:.55}.hit-layer,.target-flash{pointer-events:none;position:absolute;inset:0}.bullet-hole{aspect-ratio:1;width:clamp(7px,1.2%,15px);box-shadow:none;background:#050505;border:0;border-radius:50%;animation:.3s ease-out both bullet-arrives;position:absolute;transform:translate(-50%,-50%)}.bullet-hole.inner-ten{box-shadow:none}.bullet-hole i{display:none}.target-flash{border:clamp(1px,.25vw,4px) solid #0000;border-radius:50%;box-shadow:inset 0 0 #0000,0 0 #0000}.target-flash.active{animation:.65s ease-out target-flash}@keyframes bullet-arrives{0%{opacity:0;transform:translate(-50%,-50%)scale(2.7)}to{opacity:1;transform:translate(-50%,-50%)scale(1)}}@keyframes target-flash{0%{box-shadow:inset 0 0 0 4px #fff3a6,0 0 28px 8px #ffd95a}to{box-shadow:inset 0 0 #0000,0 0 #0000}}.range-scene.is-firing .arm-art{transform:translateX(calc(-50% + var(--arm-x,0px))) translateY(calc(var(--arm-y,0px) + 12px)) rotate(-1.2deg)}.range-scene.is-firing .target-frame{filter:brightness(1.16)drop-shadow(0 14px 18px #000c)}.range-scene.is-shot-review .target-frame{z-index:8;filter:brightness(1.12)drop-shadow(0 0 20px #fff0a27a)drop-shadow(0 17px 22px #000d);transform:translate(-50%,-50%)scale(1.28)}.range-scene.is-shot-review .aim-reticle,.range-scene.is-shot-review .arm-art{opacity:0}.range-scene.is-special-hit .target-frame{z-index:8;animation:1.28s cubic-bezier(.12,.8,.16,1) both special-impact}.range-scene.is-special-hit .aim-reticle{animation:1.1s ease-out both reticle-slow-mo}.range-scene.is-special-hit .target-flash:after{content:"PERFECT 10";color:#fff6ae;letter-spacing:.16em;white-space:nowrap;background:#1a130ad9;border:1px solid #ffe26d;border-radius:3px;padding:6px 10px;font:700 clamp(9px,1.2vw,15px) Barlow Condensed,sans-serif;animation:1.15s ease-out both perfect-label;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.range-scene.is-series-review .target-frame{z-index:8;filter:drop-shadow(0 0 27px #fff0a5a6)drop-shadow(0 17px 22px #000d);width:min(70vh,62vw);top:48%}.range-scene.is-series-review .aim-reticle,.range-scene.is-series-review .arm-art{opacity:0}.range-scene.is-series-review .range-vignette{opacity:.72}.range-scene.is-series-review .target-flash:before{content:"SERIES REVIEW";color:#fff3bf;letter-spacing:.2em;white-space:nowrap;text-shadow:0 2px 6px #000;font:700 clamp(12px,1.6vw,20px) Barlow Condensed,sans-serif;animation:.55s ease-out both review-title;position:absolute;top:-8%;left:50%;transform:translate(-50%)}.target-frame.rapid-target{aspect-ratio:1916/821;width:min(42vh,68vw)}.target-frame.rapid-target>img{object-fit:contain}.range-scene.is-focused .target-frame.rapid-target{width:min(70vw,82vh)}.range-scene.is-series-review .target-frame.rapid-target{width:min(98vw,118vh);top:46%}@keyframes special-impact{0%{transform:translate(-50%,-50%)scale(1)}24%{filter:brightness(1.35)drop-shadow(0 0 24px #ffe17a);transform:translate(-50%,-50%)scale(1.32)}55%{filter:brightness(1.15)drop-shadow(0 0 14px #ffe17a);transform:translate(-50%,-50%)scale(1.26)}to{transform:translate(-50%,-50%)scale(1)}}@keyframes reticle-slow-mo{0%,30%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-50%)scale(.74)}}@keyframes perfect-label{0%{opacity:0;transform:translate(-50%,-58%)scale(.75)}22%,70%{opacity:1;transform:translate(-50%,-50%)scale(1)}to{opacity:0;transform:translate(-50%,-42%)scale(1.08)}}@keyframes review-title{0%{opacity:0;transform:translate(-50%,7px)}to{opacity:1;transform:translate(-50%)}}.hud{pointer-events:none;flex-direction:column;justify-content:space-between;padding:clamp(14px,2.7vw,42px);display:flex;position:absolute;inset:0}header{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.brand{text-shadow:0 2px 16px #000;flex-direction:column;line-height:.88;display:flex}.brand span,h1,h2{letter-spacing:.045em;font-family:Barlow Condensed,Impact,sans-serif}.brand span{font-size:clamp(26px,4vw,51px);font-weight:700}.brand small{letter-spacing:.22em;color:#afc6d2;text-transform:uppercase;margin-top:8px;font-size:10px}.match-meta{text-align:right;background:linear-gradient(90deg,#0000,#071521a8);gap:clamp(8px,1.7vw,28px);padding:6px 0 6px 18px;display:flex}.match-meta div,.rival{gap:1px;display:grid}.match-meta span,.rival span,footer{color:#a9c2ce;text-transform:uppercase;letter-spacing:.15em;font-size:9px}.match-meta b{font-family:Barlow Condensed;font-size:21px;line-height:1}.icon-button{pointer-events:auto;background:#103040a8;border:1px solid #70d9f4;border-radius:50%;width:36px;height:36px;font-size:17px}.rival{text-align:right;text-shadow:0 2px 8px #000;position:absolute;top:112px;right:clamp(14px,2.7vw,42px)}.rival b{font-size:13px}.rival em{color:#f1d37a;font-family:Barlow Condensed;font-size:28px;font-style:normal}.prompt{text-align:center;text-shadow:0 2px 12px #000;letter-spacing:.03em;align-self:center;margin-top:auto;margin-bottom:10px;font-size:clamp(14px,1.7vw,19px);font-weight:700}.prompt>span{margin-bottom:10px;display:block}.trigger-wrap{background:#081722d9;border:1px solid #4a7688;border-radius:5px;width:min(48vw,500px);padding:7px}.trigger{background:linear-gradient(90deg,#8f3d46 0%,#d0a647 25%,#597e49 42%,#66a55a 62%,#d0a647 76%,#8f3d46 100%);height:14px;position:relative;overflow:visible}.trigger i{opacity:.9;background:#69df76;height:100%;position:absolute;top:0;box-shadow:0 0 16px #83ff81}.trigger b{top:-5px;left:calc(var(--trigger-position) * 100%);background:#fff;width:4px;height:24px;position:absolute;transform:translate(-50%);box-shadow:0 0 9px #fff}.shot-callout{text-align:center;text-shadow:0 3px 14px #000;animation:.9s ease-out both callout;position:absolute;inset:23% auto auto 50%;transform:translate(-50%)}.shot-callout strong{letter-spacing:.04em;font-family:Barlow Condensed;font-size:clamp(33px,5vw,68px);display:block}.shot-callout span{text-transform:uppercase;letter-spacing:.16em;font-size:11px}.shot-callout.perfect strong{color:#ffe475}.shot-callout.pulled strong{color:#ff9090}@keyframes callout{0%{opacity:0;transform:translate(-50%,15px)scale(.9)}25%{opacity:1;transform:translate(-50%)scale(1)}to{opacity:.75}}footer{border-top:1px solid #6990a344;justify-content:center;gap:clamp(8px,3vw,42px);padding-top:10px;display:flex}.overlay{opacity:0;visibility:hidden;background:radial-gradient(at 50% 42%,#071724a8,#02070dbf);place-items:center;padding:18px;transition:opacity .25s;display:grid;position:absolute;inset:0}.overlay.visible{opacity:1;visibility:visible}.overlay:has(.menu-card){background:linear-gradient(90deg,#02070c36,#02070c54),url(../assets/schuetzenduell.webp) 50%/cover no-repeat}.portrait-layout .overlay:has(.menu-card){background-image:linear-gradient(#02070c35,#02070c66),url(../assets/schuetzenduell-portrait.webp)}.menu-card,.result-card{text-align:center;background:linear-gradient(145deg,#0d2535ed,#08131fed);border:1px solid #76c4db55;border-radius:14px;width:min(570px,94vw);padding:clamp(23px,4vw,48px);box-shadow:0 24px 90px #0009}.eyebrow{color:#76d7ec;text-transform:uppercase;letter-spacing:.25em;margin:0 0 10px;font-size:10px}.menu-card h1{margin:0;font-size:clamp(49px,8vw,88px);line-height:.8}.result-card h2{margin:3px 0 10px;font-size:47px}.intro{color:#bfd2dc;max-width:440px;margin:23px auto 28px;font-size:13px;line-height:1.6}.mode-guide{max-width:540px}.mode-guide p{color:#c7d8df;max-width:430px;margin:14px auto;line-height:1.55}.mode-guide .guide-goal{text-align:left;background:#0a1b28;border-left:3px solid #6ad4eb;padding:11px 14px}.guide-controls{color:#adc7d1;text-align:left;max-width:430px;margin:21px auto 4px;font-size:11px}.guide-controls input{accent-color:#58c4de;vertical-align:middle}.analysis-grid{grid-template-columns:repeat(4,1fr);gap:7px;margin:17px 0 9px;display:grid}.analysis-grid span{color:#9ebbc7;letter-spacing:.07em;text-transform:uppercase;background:#091925;border:1px solid #29495a;padding:8px 5px;font-size:8px}.analysis-grid b{color:#f2fbff;margin-top:4px;font:700 22px Barlow Condensed,sans-serif;display:block}.opponent-summary{color:#b9d0da;margin:4px 0 0;font-size:11px}.medal,.personal-best{letter-spacing:.13em;border-radius:999px;margin:9px 4px 0;padding:5px 9px;font:700 11px Barlow Condensed,sans-serif;display:inline-block}.medal{color:#1e1607}.medal.bronze{background:#d39160}.medal.silver{background:#d6e0e5}.medal.gold{background:#f4d765}.personal-best{color:#7de8fb;border:1px solid #59b9cf}.chooser{text-align:left;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:23px;display:grid}.chooser-wide{grid-template-columns:repeat(3,1fr)}.chooser label{color:#a8c2ce;letter-spacing:.09em;text-transform:uppercase;font-size:9px}.chooser select{color:#eef7fb;background:#071621;border:1px solid #416375;border-radius:4px;outline:none;width:100%;margin-top:5px;padding:9px 6px;font-size:12px;display:block}.appearance-choice{grid-column:span 2}.appearance-picker{gap:9px;margin-top:5px;display:flex}.portrait-button{aspect-ratio:1;background:#0b1923;border:2px solid #38586a;border-radius:50%;width:60px;padding:0;transition:transform .15s,border-color .15s,box-shadow .15s;overflow:hidden}.portrait-button:hover{border-color:#9ce5f7;transform:translateY(-2px)}.portrait-button.selected{border-color:#ffe275;box-shadow:0 0 0 2px #f1bd4a66}.portrait-button img{object-fit:cover;object-position:center 23%;width:100%;height:100%;display:block}.primary{color:#fff;letter-spacing:.04em;background:linear-gradient(135deg,#42b8d7,#1988aa);border-radius:4px;padding:12px 21px;font-weight:700}.primary:hover{filter:brightness(1.15)}.large{padding:14px 33px}.menu-actions{justify-content:center;gap:8px;margin-top:16px;display:flex}.menu-actions button,.result-card>button:not(.primary){color:#aac8d5;background:0 0;border:1px solid #386174;border-radius:4px;padding:7px 11px;font-size:11px}.stats-line{color:#7fa4b4;margin:20px 0 0;font-size:10px}.result-card>button{margin:15px 3px 0}.final-score{color:#f1d37a;font-family:Barlow Condensed;font-size:36px}.stat-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin:24px 0;display:grid}.stat-grid span{color:#a5c0ce;text-transform:uppercase;letter-spacing:.08em;background:#0a1a26;border:1px solid #244253;padding:10px;font-size:9px}.stat-grid b{color:#fff;margin-top:4px;font-family:Barlow Condensed;font-size:26px;display:block}@media (width<=700px){.hud{padding:13px}.brand small{display:none}.match-meta{gap:9px}.match-meta b{font-size:18px}.rival{top:72px;right:13px}.chooser{grid-template-columns:1fr}.menu-card{max-height:94vh;padding:24px;overflow:auto}.prompt{margin-bottom:4px}.trigger-wrap{width:70vw}.shot-callout{inset:25% auto auto 50%}footer{gap:7px;font-size:7px}}.menu-card h1{white-space:nowrap;font-size:clamp(43px,6vw,72px);line-height:.9}.compact-menu{background:linear-gradient(145deg,#0b2139df,#06111bdd);width:min(560px,72vw);padding:22px 24px 16px;transform:translateY(80px);box-shadow:0 18px 60px #0008}.compact-menu .chooser{margin-bottom:16px}.compact-menu .menu-actions{margin-top:10px}.compact-menu .large{padding:12px 30px}.portrait-layout{width:min(100vw,56.25vh);height:min(100vh,177.78vw);margin:auto;overflow:hidden;box-shadow:0 0 0 1px #4e849b88,0 0 70px #000d}.portrait-layout .range-scene{background-position:50%}.portrait-layout .target-frame{width:min(25vh,66vw);top:34%}.portrait-layout .range-scene.is-focused .target-frame{width:min(46vh,74vw);top:44%}.portrait-layout .range-scene.is-series-review .target-frame{width:min(68vh,94vw);top:46%}.portrait-layout .arm-art{width:min(86vw,440px);bottom:-8%}.portrait-layout .range-scene.is-focused .target-frame.rapid-target{width:min(94vw,54vh)}.portrait-layout .range-scene.is-series-review .target-frame.rapid-target{width:98vw}.portrait-layout .compact-menu{width:min(94vw,500px);transform:none}.portrait-layout .overlay{padding:10px}.portrait-layout .menu-card,.portrait-layout .result-card{width:calc(100% - 24px);max-width:500px;padding:20px 16px}.portrait-layout .result-card h2{overflow-wrap:anywhere;font-size:clamp(33px,9vw,48px)}.portrait-layout .chooser{grid-template-columns:1fr}.portrait-layout .appearance-choice{grid-column:auto}.portrait-layout .match-meta{gap:8px;padding-left:7px}.portrait-layout .match-meta span{letter-spacing:.09em;font-size:7px}.portrait-layout .match-meta b{font-size:18px}.portrait-layout .brand span{font-size:clamp(32px,8vw,43px)}.portrait-layout .prompt{z-index:10;pointer-events:none;flex-direction:column;justify-content:flex-end;align-items:center;margin:0;display:flex;position:absolute;top:39%;bottom:8%;right:8px}.portrait-layout .prompt>span{display:none}.portrait-layout .trigger-wrap{pointer-events:auto;background:#071721e6;border-color:#68c5de;border-radius:12px;width:38px;height:min(45vh,440px);padding:5px}.portrait-layout .trigger{background:linear-gradient(#8f3d46 0%,#d0a647 24%,#66a55a 38%,#597e49 58%,#d0a647 75%,#8f3d46 100%);width:14px;height:100%;margin:auto}.portrait-layout .trigger i{height:20%;bottom:42%;width:100%!important;top:auto!important;left:0!important}.portrait-layout .trigger b{top:auto;left:50%;bottom:calc(var(--trigger-position) * 100%);width:26px;height:4px;transform:translate(-50%,50%)}.multiplayer-menu{width:min(610px,76vw)}.match-choice{text-align:left;grid-template-columns:repeat(3,1fr);gap:9px;margin:0 0 16px;display:grid}.match-choice label,.room-status{color:#a8c2ce;letter-spacing:.09em;text-transform:uppercase;font-size:9px}.match-choice select,.match-choice input{color:#eef7fb;background:#071621;border:1px solid #416375;border-radius:4px;outline:none;width:100%;min-height:35px;margin-top:5px;padding:8px 7px;font-size:12px;display:block}.room-buttons{align-items:end;gap:6px;display:flex}.room-buttons button{color:#bdeaf5;background:#0b2635;border:1px solid #416375;border-radius:4px;flex:1;min-height:35px;padding:6px;font-size:10px}.room-status{color:#85d6e9;text-align:center;grid-column:span 3;margin:0}.room-control[hidden]{display:none!important}.match-switch{justify-content:center;gap:7px;margin:-4px 0 16px;display:flex}.match-switch button,.room-lobby>button,.room-setup>button{color:#aac8d5;background:0 0;border:1px solid #386174;border-radius:4px;padding:7px 11px;font-size:11px}.match-switch button.selected{color:#08131f;background:#78d4ed;border-color:#9fe9fa}.room-lobby{background:#071722aa;border:1px solid #31576a;border-radius:6px;margin:4px 0 14px;padding:11px}.room-lobby ol{flex-wrap:wrap;justify-content:center;gap:6px;margin:9px 0 12px;padding:0;list-style:none;display:flex}.room-lobby li{color:#d7edf4;border:1px solid #2d5365;border-radius:999px;padding:4px 8px;font-size:10px}.room-lobby small{color:#f4d765;text-transform:uppercase;letter-spacing:.08em}.room-lobby .room-status{margin:9px 0}.room-setup{margin:2px 0 12px}.room-results ol{text-align:left;margin:22px 0;padding:0;list-style:none}.room-results li{color:#bfd2dc;border-bottom:1px solid #355060;align-items:center;gap:8px;padding:9px 11px;display:flex}.room-results li strong{color:#fff;margin-left:auto;font:700 24px Barlow Condensed,sans-serif}.room-results li.winner-row{color:#fff1a1;background:#6d56131f}.leaderboard-panel{background:#071722aa;border:1px solid #31576a;border-radius:6px;margin:4px 0 15px;padding:10px}.leaderboard-panel .eyebrow{margin-bottom:8px}.leaderboard-grid{text-align:left;grid-template-columns:repeat(2,1fr);gap:7px;display:grid}.leaderboard-card{background:#091925;border:1px solid #29495a;min-height:70px;padding:7px}.leaderboard-card>b{color:#dceef4;letter-spacing:.05em;font:700 13px Barlow Condensed,sans-serif;display:block}.leaderboard-card small{color:#83a7b7;margin-top:10px;font-size:9px;display:block}.leaderboard-card ol{margin:5px 0 0;padding:0;list-style:none}.leaderboard-card li{color:#a9c2ce;justify-content:space-between;gap:4px;padding:2px 0;font-size:9px;display:flex}.leaderboard-card li span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.leaderboard-card strong{color:#f1d37a;font-family:Barlow Condensed,sans-serif;font-size:12px}.leaderboard-submit{background:#071722aa;border:1px solid #31576a;border-radius:6px;margin:16px 0 0;padding:11px}.leaderboard-submit .eyebrow{margin-bottom:7px}.leaderboard-submit label{color:#a8c2ce;letter-spacing:.09em;text-transform:uppercase;font-size:9px;display:block}.leaderboard-submit input{color:#eef7fb;width:100%;min-height:36px;font:inherit;background:#071621;border:1px solid #416375;border-radius:4px;outline:none;margin:5px 0 9px;padding:8px;display:block}.leaderboard-submit .primary{padding:8px 12px;font-size:12px}.leaderboard-status{color:#8edff0;min-height:15px;margin:8px 0 0;font-size:10px}@media (width<=700px){.compact-menu{width:min(570px,94vw);transform:none}.match-choice{grid-template-columns:1fr}.room-status{grid-column:auto}.multiplayer-menu{max-height:92vh;overflow:auto}.analysis-grid{grid-template-columns:repeat(2,1fr)}.leaderboard-grid{grid-template-columns:1fr}.detailed-results,.mode-guide{max-height:92vh;overflow:auto}.portrait-layout .hud{padding:10px}.portrait-layout .brand span{font-size:29px}.portrait-layout .match-meta b{font-size:17px}.portrait-layout .rival{top:64px}.portrait-layout .prompt{font-size:14px}.portrait-layout footer{display:none}}
