*{margin:0;padding:0;box-sizing:border-box}:root{--bottom-bar-height:0px;--bottom-bar-padding-y:0px;--header-height:60px;--landscape-bottom-bar-max:0px;--landscape-header-height:60px}body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;background:#070d1a;color:#e5e7eb;min-height:100vh;min-height:100dvh;overflow-x:hidden;overflow-y:hidden;overscroll-behavior:none;-webkit-overflow-scrolling:touch;position:relative}body::before{content:'';position:fixed;inset:-50%;z-index:-1;pointer-events:none;background:#070d1a}@keyframes bgDrift{0%{transform:translate(0,0) scale(1)}25%{transform:translate(4%,-2%) scale(1.04)}50%{transform:translate(-2%,3%) scale(1.02)}75%{transform:translate(1%,-4%) scale(1.05)}100%{transform:translate(-3%,1%) scale(1)}}.campaign-level-cell{height:70px;border-radius:18px;border:1px solid rgba(255,255,255,.18);background:rgba(15,23,42,.7);display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:700;cursor:pointer;user-select:none;gap:2px;transition:transform .15s ease,box-shadow .15s ease}.campaign-level-cell.race-level-cell{background:rgba(10,36,38,.72);border-color:rgba(45,212,191,.28);box-shadow:0 0 0 1px rgba(45,212,191,.08) inset}.campaign-level-cell.race-level-cell .campaign-cell-number{line-height:1.1}.campaign-level-cell .race-level-best-record,.campaign-level-cell.race-level-cell .race-level-best-record{margin-top:3px;font-size:11px;line-height:1.1;color:rgba(229,231,235,.55);font-weight:500;letter-spacing:.01em}.campaign-level-cell:hover:not(.locked){transform:scale(1.08);box-shadow:0 4px 20px rgba(0,0,0,.3)}.campaign-level-cell.locked{opacity:.35;cursor:not-allowed}.campaign-cell-stars{display:flex;gap:1px;line-height:1}.campaign-cell-stars .star{width:12px;height:12px;color:rgba(255,255,255,.15)}.campaign-cell-stars .star path{fill:currentColor;stroke:rgba(255,255,255,0.8);stroke-width:5;stroke-linejoin:round;stroke-linecap:round;paint-order:stroke fill}.campaign-cell-stars .star.filled{color:#facc15;filter:drop-shadow(0 0 3px rgba(250, 204, 21, .4))}.campaign-cell-stars.race-cell-stars .star.filled{color:#2dd4bf;filter:drop-shadow(0 0 3px rgba(45, 212, 191, .45))}.campaign-cell-number{font-size:16px;font-weight:700}.campaign-cell-name{box-sizing:border-box;max-width:100%;padding:0 4px;font-size:10px;font-weight:500;line-height:1.1;color:rgba(229,231,235,.6);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campaign-level-grid{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:8px}.campaign-difficulty-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}@media (max-width:1100px){.campaign-difficulty-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.campaign-level-grid{grid-template-columns:repeat(8,minmax(0,1fr))}}@media (max-width:860px){.campaign-difficulty-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}.campaign-difficulty-grid .btn{flex:0 0 calc(48% - 4px);aspect-ratio:auto;min-height:42px;padding:6px 12px}.campaign-level-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (max-width:640px){.campaign-level-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.campaign-difficulty-grid,.campaign-level-grid{grid-auto-flow:row dense}.campaign-difficulty-grid .btn{min-height:60px;aspect-ratio:1.9/1;color:#fff;font-weight:700}#campaign-diff-easy{background:linear-gradient(135deg,#4d8c5e,#3d7a4a)}#campaign-diff-normal{background:linear-gradient(135deg,#7a9e3a,#5c7d2e)}#campaign-diff-hard{background:linear-gradient(135deg,#b8944a,#8c6e3a)}#campaign-diff-expert{background:linear-gradient(135deg,#b87a4e,#9a5e38)}#campaign-diff-unsolvable{background:linear-gradient(135deg,#ef4444,#b91c1c)}#campaign-diff-fraction{background:linear-gradient(135deg,#0d1f23,#050b0d);border:2px solid #14b8a6;color:#14b8a6}#campaign-diff-fraction:hover:not(:disabled){background:linear-gradient(135deg,#102b30,#0a1416);box-shadow:0 0 0 2px rgba(20,184,166,.4) inset;color:#5eead4}.campaign-level-badge.easy{color:#5b9e6e}.campaign-level-badge.normal{color:#7a9e3a}.campaign-level-badge.hard{color:#b8944a}.campaign-level-badge.expert{color:#b87a4e}.campaign-level-badge.unsolvable{color:#ef4444}.campaign-level-cell.easy{background:rgba(34,197,94,.12);border-color:rgba(34,197,94,.3)}.campaign-level-cell.normal{background:rgba(132,204,22,.1);border-color:rgba(132,204,22,.3)}.campaign-level-cell.hard{background:rgba(234,179,8,.1);border-color:rgba(234,179,8,.3)}.campaign-level-cell.expert{background:rgba(249,115,22,.1);border-color:rgba(249,115,22,.3)}.campaign-level-cell.unsolvable{background:rgba(239,68,68,.1);border-color:rgba(239,68,68,.3)}.campaign-level-cell.cleared{box-shadow:0 0 0 2px rgba(34,197,94,.2) inset}.campaign-level-cell.available{box-shadow:none}.header{height:60px;background:#070d1a;backdrop-filter:none;display:flex;justify-content:space-between;align-items:center;padding:env(safe-area-inset-top,0) 30px 0;border-bottom:1px solid rgba(255,255,255,.1);position:fixed;top:0;left:0;right:0;z-index:100}.bgm-float-btn{margin-left:12px;width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.16);background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.22),rgba(255,255,255,.08));color:#fff;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 8px 22px rgba(0,0,0,.22);transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.start-top-actions{display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:0}.start-bgm-btn{margin-left:0}#start-bgm-open-btn{width:auto;height:64px;padding:0 22px;gap:10px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;font-size:20px;font-weight:600;letter-spacing:.5px;text-transform:none;color:#bfdbfe;background:rgba(96,165,250,.12);border:1px solid rgba(96,165,250,.4);box-shadow:0 4px 14px rgba(0,0,0,.15);flex:0 0 auto}#start-bgm-open-btn:hover{background:rgba(96,165,250,.24);transform:translateY(-2px)}#leaderboard-open-btn{display:inline-flex;align-items:center;gap:10px;padding:6px 20px;width:auto;height:64px;border-radius:999px;font-size:20px;font-weight:600;letter-spacing:.5px;text-transform:none;color:#fde68a;background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.45);box-shadow:0 4px 14px rgba(0,0,0,.15);flex:0 0 auto}#leaderboard-open-btn:hover{background:rgba(251,191,36,.22);transform:translateY(-2px)}#leaderboard-open-btn .leaderboard-open-icon{width:52px;height:52px}.bgm-float-btn:hover{transform:translateY(-1px) scale(1.05);box-shadow:0 10px 28px rgba(0,0,0,.28)}.bgm-float-icon-img{width:24px;height:24px;object-fit:contain;display:block;image-rendering:pixelated}.bgm-modal-content{max-width:480px}.bgm-modal-body{display:flex;flex-direction:column;gap:16px;padding:6px 0 18px}.bgm-volume-row{display:grid;grid-template-columns:52px 1fr 52px;gap:10px;align-items:center}.music-toggle-row{display:flex;align-items:center;gap:10px;justify-content:center;font-size:15px}.music-toggle-row input{width:18px;height:18px}.music-volume-row input[type=range]{width:100%}.bgm-hint{text-align:center;color:rgba(229,231,235,.8);font-size:13px}.about-us-link{position:relative;left:auto;bottom:auto;color:rgba(229,231,235,.72);font-size:14px;text-decoration:none;letter-spacing:.5px;transition:color .18s ease,transform .18s ease,opacity .18s ease;z-index:2}.about-us-link:hover{color:#fff;transform:translateY(-1px);opacity:1}.campaign-level-badge{margin-left:auto;display:none;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;font-weight:800;color:#fff;box-shadow:0 6px 18px rgba(0,0,0,.18);min-width:90px;justify-content:center}.campaign-level-badge.unsolvable{color:#ef4444!important}.campaign-level-value{font-size:18px;line-height:1}.campaign-level-label{font-size:13px;opacity:.88}.campaign-victory-content{text-align:center;min-width:340px}.campaign-victory-text{margin:12px 0 22px;font-size:18px;color:#dbeafe;line-height:1.6}.campaign-victory-comet{display:flex;justify-content:center;align-items:center;gap:8px;margin:8px 0 6px;line-height:1}.campaign-victory-comet .comet{width:30px;height:30px;display:inline-block;color:#fff;overflow:hidden}.campaign-victory-comet .comet path{fill:none;stroke:rgba(255,255,255,0.9);stroke-width:3;stroke-linejoin:round;stroke-linecap:round;paint-order:stroke fill}.campaign-victory-comet .comet.filled path,.campaign-victory-comet .comet.half path{fill:#fff}.campaign-victory-comet .comet.half{clip-path:inset(0 50% 0 0)}.campaign-victory-comet .comet-count{margin-left:6px;font-size:15px;font-weight:700;color:#fff}#race-modal .campaign-level-grid{margin-top:0}#race-modal .campaign-level-cell{background:rgba(15,23,42,.74)}#race-modal .campaign-cell-number,#race-modal .campaign-level-cell{color:#e6fffb}#race-modal .campaign-cell-stars .star.filled{color:#2dd4bf}#race-ttsigma-display{justify-content:center;margin-top:4px}#race-victory-modal .modal-content{max-width:1200px;width:min(96vw,1200px);min-height:520px;display:flex;flex-direction:column;justify-content:space-between;align-items:stretch;padding:42px 48px 34px;transform:none;will-change:transform,opacity}#race-victory-modal.modal-entering>.modal-content{animation:raceVictorySlideIn .55s cubic-bezier(.22,1,.36,1) both}#race-victory-modal.modal-exiting>.modal-content{animation:raceVictorySlideOut .32s ease-in both}@keyframes raceVictorySlideIn{from{opacity:0;transform:translateX(-100vw) scale(.985)}to{opacity:1;transform:translateX(0) scale(1)}}@keyframes raceVictorySlideOut{from{opacity:1;transform:translateX(0) scale(1)}to{opacity:0;transform:translateX(-22vw) scale(.985)}}@keyframes raceCountdownRing{from{transform:scale(.92);opacity:.75}to{transform:scale(1.08);opacity:1}}@keyframes raceCountdownNumber{from{transform:scale(.92) rotate(-2deg);filter:hue-rotate(0deg)}to{transform:scale(1.04) rotate(2deg);filter:hue-rotate(18deg)}}@keyframes raceThresholdPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.82)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.04)}55%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-50%) scale(.96)}}.race-countdown-overlay{position:fixed;inset:0;z-index:999990;display:flex;align-items:center;justify-content:center;pointer-events:none}.race-countdown-backdrop{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,rgba(6,10,20,.35),rgba(6,10,20,.62));backdrop-filter:blur(2px)}.race-countdown-core{position:relative;width:clamp(160px,26vw,240px);height:clamp(160px,26vw,240px);display:flex;flex-direction:column;align-items:center;justify-content:center}.race-countdown-ring{position:absolute;inset:0;border-radius:50%;border:4px solid rgba(45,212,191,.55);box-shadow:0 0 26px rgba(45,212,191,.35),inset 0 0 22px rgba(45,212,191,.22)}.race-countdown-number{position:relative;font-size:clamp(72px, 12vw, 120px);font-weight:900;color:#f8fafc;line-height:1;text-shadow:0 0 18px rgba(255,255,255,.35),0 0 34px rgba(45,212,191,.4)}.race-countdown-sub{position:relative;margin-top:6px;font-size:clamp(14px, 2.4vw, 20px);font-weight:800;letter-spacing:.32em;color:rgba(226,232,240,.85)}.race-countdown-overlay.flash .race-countdown-core{animation:raceCountdownFlash .32s ease-out}.race-countdown-overlay.hide{opacity:0;transition:opacity .36s ease}@keyframes raceCountdownFlash{0%{transform:scale(.72);opacity:.2}55%{transform:scale(1.08);opacity:1}100%{transform:scale(1);opacity:1}}.race-victory-extra{margin-top:10px;display:flex;flex-direction:column;gap:4px;font-size:clamp(12px, 2vw, 15px);color:rgba(226,232,240,.86)}.race-victory-extra-line{line-height:1.5}.race-victory-main{flex:1;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto 1fr;column-gap:20px;row-gap:10px;align-items:start;text-align:left;padding-top:8px;position:relative}.race-victory-main::after,.race-victory-main::before{content:'';position:absolute;inset:auto 0 auto 0;height:2px;background:linear-gradient(90deg,transparent,rgba(45,212,191,.9),rgba(255,255,255,.8),rgba(250,204,21,.85),transparent);opacity:.7;pointer-events:none}.race-victory-main::before{top:18px}.race-victory-main::after{bottom:90px}.race-victory-head{grid-column:1/3;display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.race-victory-speed-bars{flex:1;height:30px;margin-top:8px;position:relative;border-radius:999px;background:linear-gradient(90deg,rgba(59,130,246,.14),rgba(34,197,94,.2),rgba(45,212,191,.22),rgba(244,63,94,.18)),rgba(255,255,255,.02);overflow:hidden;isolation:isolate}.race-victory-speed-bars::after,.race-victory-speed-bars::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(90deg,rgba(255,255,255,0) 0 10px,rgba(255,255,255,.16) 10px 14px),repeating-linear-gradient(90deg,rgba(45,212,191,0) 0 24px,rgba(45,212,191,.1) 24px 28px),repeating-linear-gradient(90deg,rgba(59,130,246,0) 0 54px,rgba(59,130,246,.12) 54px 60px);opacity:.62;transform:skewX(-18deg) scaleX(1.25);transform-origin:center}.race-victory-speed-bars::after{opacity:.28;filter:blur(2px);background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.22),rgba(255,255,255,0)),repeating-linear-gradient(90deg,rgba(250,204,21,0) 0 18px,rgba(250,204,21,.16) 18px 22px)}.race-victory-speed-bars .bar{position:absolute;top:50%;width:44%;height:5px;transform:translateY(-50%) skewX(-18deg);border-radius:999px;background:linear-gradient(90deg,rgba(45,212,191,0),#2dd4bf,#facc15);box-shadow:0 0 18px rgba(45,212,191,.42)}.race-victory-speed-bars .bar.left{left:-10%}.race-victory-speed-bars .bar.right{right:-10%;background:linear-gradient(90deg,#fb923c,rgba(59,130,246,0))}.race-victory-speed-bars .bar.center{left:28%;width:26%;background:linear-gradient(90deg,rgba(34,197,94,.1),#22c55e,rgba(45,212,191,.1))}.race-victory-level{font-family:'Courier New',monospace;color:#2dd4bf;font-size:clamp(26px, 3.8vw, 54px);line-height:1;font-weight:800;letter-spacing:.14em;text-shadow:0 0 16px rgba(45,212,191,.28);white-space:nowrap;text-align:right}.race-victory-time-row{grid-column:1/3;display:flex;align-items:baseline;gap:18px;flex-wrap:wrap}.race-victory-time{font-family:'Courier New',monospace;font-size:clamp(56px, 8vw, 112px);line-height:.95;font-weight:700;color:#f8fafc;text-shadow:0 0 22px rgba(255,255,255,.14)}.race-victory-diff{font-family:'Courier New',monospace;font-size:20px;line-height:1.1;font-weight:700;white-space:nowrap}.race-victory-diff.positive{color:#22c55e}.race-victory-diff.negative{color:#ef4444}.race-victory-best{grid-column:1/3;margin-top:4px;color:rgba(226,232,240,.8);font-size:18px;line-height:1.4}.race-victory-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(10px,1.8vw,18px);margin-top:28px;width:100%;position:relative;padding-top:14px}.race-victory-actions::before{content:'';position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(45,212,191,.6),rgba(255,255,255,.9),rgba(59,130,246,.6),transparent);opacity:.8}.race-victory-actions .btn{min-height:56px;font-size:clamp(14px, 1.4vw, 16px);width:100%;white-space:nowrap}.race-victory-left-btn,.race-victory-mid-btn,.race-victory-right-btn{justify-self:stretch}.race-new-record-overlay{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;overflow:hidden;pointer-events:none;background:radial-gradient(circle at center,rgba(45,212,191,.18),transparent 38%),radial-gradient(circle at 50% 50%,rgba(59,130,246,.14),transparent 55%),linear-gradient(120deg,rgba(2,6,23,.92),rgba(15,23,42,.96));opacity:0;transform:scale(1.02);transition:opacity .24s ease,transform .24s ease}.race-new-record-overlay.visible{opacity:1;transform:scale(1)}.race-new-record-overlay.exiting{opacity:0;transform:scale(1.06)}.race-new-record-rings{position:absolute;width:92vmin;height:92vmin;border-radius:50%;background:radial-gradient(circle,transparent 0 34%,rgba(45,212,191,.22) 34% 35%,transparent 35% 48%,rgba(59,130,246,.18) 48% 49%,transparent 49% 62%,rgba(250,204,21,.18) 62% 63%,transparent 63% 100%);filter:blur(.5px);animation:recordSpin 1.1s linear infinite;opacity:.85}.race-new-record-rings::after,.race-new-record-rings::before{content:'';position:absolute;inset:10%;border-radius:50%;border:2px solid rgba(255,255,255,.18);border-left-color:rgba(45,212,191,.95);border-right-color:rgba(250,204,21,.95);animation:recordSpinReverse 1.5s linear infinite}.race-new-record-rings::after{inset:24%;border-width:3px;opacity:.55;animation-duration:.88s}.race-new-record-panel{position:relative;z-index:1;text-align:center;transform:skewX(-10deg);padding:24px 40px;border:1px solid rgba(255,255,255,.18);background:linear-gradient(135deg,rgba(2,6,23,.85),rgba(15,23,42,.45));box-shadow:0 0 80px rgba(45,212,191,.18),0 0 140px rgba(59,130,246,.1);backdrop-filter:blur(8px)}.race-new-record-tag{font-family:'Courier New',monospace;font-size:clamp(34px, 6vw, 92px);font-weight:900;letter-spacing:.14em;color:#f8fafc;text-shadow:0 0 12px rgba(255,255,255,.42),0 0 28px rgba(45,212,191,.45),0 0 46px rgba(59,130,246,.28);animation:recordPulse .72s ease-in-out infinite alternate}.race-new-record-sub{margin-top:10px;font-family:'Courier New',monospace;font-size:clamp(14px, 1.8vw, 20px);letter-spacing:.42em;color:rgba(45,212,191,.9)}@keyframes recordPulse{from{transform:scale(1);filter:saturate(1)}to{transform:scale(1.05);filter:saturate(1.35)}}@keyframes recordSpin{from{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes recordSpinReverse{from{transform:rotate(0)}to{transform:rotate(-360deg)}}@media (max-width:900px){#race-victory-modal .modal-content{padding:30px 22px 24px}.race-victory-main{grid-template-columns:1fr;grid-template-rows:auto auto auto}.race-victory-best,.race-victory-time-row{grid-column:1}.race-victory-actions{grid-template-columns:1fr;margin-top:22px}}#campaign-lrsigma-container{display:flex;align-items:flex-end;justify-content:flex-start;padding-left:8px}#campaign-lrsigma-display{font-family:'Courier New',monospace;color:#a78bfa;font-weight:600;font-size:14px;line-height:1}#campaign-lrsigma-display .lrsigma-label{font-size:22px;vertical-align:baseline}#campaign-lrsigma-display .lrsigma-int{font-size:22px;vertical-align:baseline}#campaign-lrsigma-display .lrsigma-dec{font-size:14px;vertical-align:baseline;position:relative;top:1px}.campaign-lrsigma-display{display:flex;justify-content:center;align-items:center;gap:0;font-family:inherit;color:#cbd5e1;font-size:13px;line-height:1;margin-top:4px}.campaign-lrsigma-display .lrsigma-label{font-size:14px;color:#94a3b8;font-weight:700;margin-right:2px}.campaign-lrsigma-display .lrsigma-int{font-size:30px;color:#fff;font-weight:800;line-height:.9}.campaign-lrsigma-display .lrsigma-dec{font-size:14px;color:#cbd5e1;font-weight:700;position:relative;top:1px}.campaign-victory-actions{display:flex;gap:12px;justify-content:center}.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:130px}.icon-btn .icon{font-size:18px;line-height:1}.score-display{display:flex;align-items:center;gap:15px;font-size:18px;font-weight:700}.score-display .player{color:#94a3b8;max-width:30vw;white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.2;text-align:center}.score-display .score{color:#5b9e6e;font-size:24px}.header.campaign-mode .score-display{display:none!important}.header.campaign-mode .round-info{display:none!important}.header.campaign-mode .player-display{display:none!important}.score-popup{position:fixed;font-size:28px;font-weight:700;pointer-events:none;z-index:1000;animation:scorePopupFloat 1.5s ease-out forwards;text-shadow:0 2px 4px rgba(0,0,0,.5)}@keyframes scorePopupFloat{0%{opacity:1;transform:translate(-50%,0) scale(1)}50%{opacity:1;transform:translate(-50%,-30px) scale(1.2)}100%{opacity:0;transform:translate(-50%,-60px) scale(1)}}.game-title{font-size:28px;font-weight:700;background:linear-gradient(135deg,#a0f1d8,#848bcf);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.header.test-mode{justify-content:center}.header.test-mode .game-title{position:absolute;left:50%;transform:translateX(-50%)}.round-info{display:flex;align-items:center;gap:10px;font-size:16px;color:#94a3b8}.round-info .current{color:#5b9e6e;font-size:20px;font-weight:700}.main-container{display:flex;padding:80px 20px 20px;gap:18px;height:calc(100vh - var(--bottom-bar-height));height:calc(100dvh - var(--bottom-bar-height))}.canvas-section{flex:1 1 auto;min-width:0;min-height:0;display:flex;justify-content:center;align-items:center;padding:0;position:relative}#game-canvas{background:#070d1a;max-width:100%;max-height:100%;touch-action:none}.canvas-section.test-mode #game-canvas{cursor:grab}.canvas-section.test-mode #game-canvas:active{cursor:grabbing}.panel-card{background:rgba(15,23,42,.6);backdrop-filter:blur(10px);border-radius:18px;padding:18px 22px;border:1px solid rgba(255,255,255,.1)}.expr-panel{flex-shrink:0}.panel-card h3{font-size:14px;color:#94a3b8;margin-bottom:12px;text-transform:uppercase;letter-spacing:2px}.status-bubble{padding:14px 16px!important;flex:1 1 auto;display:flex}.status-bubble-inner{display:flex;flex-direction:column;align-items:stretch;gap:10px;width:100%}.canvas-corner-tl{position:absolute;top:14px;left:14px;z-index:5;pointer-events:none}.canvas-corner-tr{position:absolute;top:14px;right:14px;z-index:5;padding:6px 12px;border-radius:10px;background:rgba(15,23,42,.6);border:1px solid rgba(255,255,255,.12);pointer-events:none}.canvas-corner-bc{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);z-index:5;padding:6px 16px;border-radius:10px;background:rgba(15,23,42,.6);border:1px solid rgba(255,255,255,.12);text-align:center;pointer-events:none;max-width:90%;box-sizing:border-box}.canvas-corner-bc .phase-hint-text{font-size:14px;color:#e5e7eb;line-height:1.5}.canvas-race-timer{position:absolute;top:16px;left:16px;z-index:5;display:none;padding:6px 18px;border-radius:14px;background:rgba(8,25,40,.55);border:1px solid rgba(34,211,238,.55);font-size:36px;font-weight:800;color:#22d3ee;font-family:'Courier New',monospace;letter-spacing:2px;text-shadow:0 0 8px rgba(34,211,238,.8),0 0 20px rgba(34,211,238,.4);box-shadow:0 0 14px rgba(34,211,238,.35),inset 0 0 10px rgba(34,211,238,.12);pointer-events:none}.canvas-message{position:absolute;bottom:14px;left:14px;z-index:5;max-width:45%;pointer-events:none}.canvas-message .message{min-height:0;padding:0;border-radius:0;background:0 0;border:none;font-size:13px;line-height:1.45;text-align:left;text-shadow:0 1px 2px rgba(0,0,0,.9)}.canvas-message .message+.message{margin-top:3px}.canvas-fab-btn{position:absolute;bottom:14px;right:14px;z-index:6;width:54px;height:54px;border-radius:50%;border:1px solid rgba(255,255,255,.14);background:rgba(15,23,42,.7);color:#e5e7eb;font-size:26px;font-weight:700;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(0,0,0,.4);transition:transform .12s,background .12s}.canvas-fab-btn:hover{background:rgba(59,130,246,.5);color:#fff}.canvas-fab-btn:active{transform:scale(.92)}.canvas-fab-btn.confirm-fab{right:78px;background:rgba(34,197,94,.55);color:#fff}.canvas-fab-btn.exit-fab{right:14px;background:rgba(239,68,68,.5);color:#fff}.canvas-fab-btn.unlock-fab{right:142px;background:rgba(234,179,8,.65);color:#fff}.canvas-fab-btn.unlock-fab:hover{background:rgba(234,179,8,.85)}.canvas-fab-btn.unlock-fab:active{background:rgba(250,204,21,.9)}#campaign-unlock-confirm-modal{z-index:11600!important}#campaign-unlock-confirm-modal .modal-content{max-width:460px}.campaign-unlock-confirm-body{text-align:left;color:#cbd5e1;font-size:14px;line-height:1.75;margin-bottom:22px}#campaign-unlock-confirm-modal .campaign-unlock-confirm-body p{color:#cbd5e1;margin:0 0 8px;line-height:1.75}.campaign-unlock-confirm-body ul{margin:0 0 10px;padding-left:1.25em}.campaign-unlock-confirm-body li{margin:2px 0}.campaign-unlock-penalty{color:#facc15;font-weight:700;white-space:nowrap}#campaign-unlock-confirm-modal .campaign-unlock-restore{margin:10px 0 0;padding:8px 12px;background:rgba(234,179,8,.12);border:1px solid rgba(234,179,8,.3);border-radius:8px;color:#fde68a;font-size:13px;line-height:1.7}.campaign-unlock-confirm-actions{justify-content:center}#campaign-unlock-confirm-modal .btn-unlock-confirm{background-image:radial-gradient(circle 60px at var(--gx,50%) var(--gy,50%),rgba(255,255,255,.35),transparent 70%),linear-gradient(135deg,#eab308,#ca8a04)!important;background-color:#eab308!important;color:#1a1200!important;font-weight:700;border:1px solid rgba(250,204,21,.55)!important}#campaign-unlock-confirm-modal .btn-unlock-confirm:hover{background-image:radial-gradient(circle 60px at var(--gx,50%) var(--gy,50%),rgba(255,255,255,.45),transparent 70%),linear-gradient(135deg,#facc15,#eab308)!important;background-color:#facc15!important}@media (max-width:768px){.campaign-unlock-confirm-body{font-size:13px}#campaign-unlock-confirm-modal .campaign-unlock-restore{font-size:12px}}.canvas-fab-btn.confirm-fab:hover{background:rgba(34,197,94,.7)}.canvas-fab-btn.exit-fab:hover{background:rgba(239,68,68,.7)}.campaign-draw-delay-pill{position:absolute;bottom:78px;right:14px;z-index:6;display:flex;align-items:center;gap:4px;padding:4px 6px;border-radius:999px;background:rgba(10,16,32,.82);border:1px solid rgba(255,255,255,.14);box-shadow:0 6px 18px rgba(0,0,0,.4);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);user-select:none;-webkit-user-select:none}.campaign-draw-delay-pill .campaign-delay-label{font-size:11px;line-height:1;color:#e5e7eb;opacity:.85;padding:0 2px;white-space:nowrap}.campaign-draw-delay-pill .campaign-delay-btn{min-width:32px;height:22px;padding:0 8px;border-radius:999px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.12);color:#e5e7eb;font-size:11px;line-height:1;cursor:pointer;transition:background .12s,color .12s}.campaign-draw-delay-pill .campaign-delay-btn:hover{background:rgba(255,255,255,.22)}.campaign-draw-delay-pill .campaign-delay-btn.active{background:#4d8c5e;color:#fff;border-color:rgba(255,255,255,.2);box-shadow:0 0 0 1px rgba(255,255,255,.18) inset}.canvas-fab-btn.emoji-fab{right:142px;background:rgba(20,20,40,.55) url('../summa/summa_image/neutral.png') center/62% no-repeat}.canvas-fab-btn.emoji-fab:hover{background:rgba(59,130,246,.5) url('../summa/summa_image/neutral.png') center/62% no-repeat}.canvas-fab-btn.emoji-fab.emoji-cooldown{opacity:.35;pointer-events:none}.canvas-fab-btn.chat-fab{right:198px;background:rgba(20,20,40,.55);color:#e2e8f0;display:flex;align-items:center;justify-content:center}.canvas-fab-btn.chat-fab:hover{background:rgba(59,130,246,.5)}.canvas-fab-btn.chat-fab.chat-cooldown{opacity:.35;pointer-events:none}.battle-chat-box{position:fixed;bottom:150px;left:50%;transform:translateX(-50%);z-index:2200;width:min(360px,calc(100vw - 60px));pointer-events:none}.battle-chat-messages{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto;scrollbar-width:none;pointer-events:auto;overscroll-behavior:contain}.battle-chat-messages::-webkit-scrollbar{display:none}.battle-chat-box:hover .battle-chat-messages{scrollbar-width:thin}.battle-chat-box:hover .battle-chat-messages::-webkit-scrollbar{display:block;width:6px}.battle-chat-box:hover .battle-chat-messages::-webkit-scrollbar-thumb{background:rgba(148,163,184,.45);border-radius:999px}.battle-chat-msg{display:flex;align-items:center;gap:6px;max-width:100%;font-size:13px;line-height:1.35;animation:chat-msg-in .22s cubic-bezier(.175,.885,.32,1.275)}.battle-chat-msg.mine{justify-content:flex-end}.battle-chat-msg.theirs{justify-content:flex-start}.battle-chat-label{flex-shrink:0;font-size:11px;font-weight:700;color:#94a3b8;padding:2px 6px;border-radius:6px;background:rgba(255,255,255,.08)}.battle-chat-msg.mine .battle-chat-label{color:#bfdbfe}.battle-chat-text{max-width:70%;word-break:break-word;padding:6px 10px;border-radius:12px;background:rgba(30,41,59,.92);border:1px solid rgba(148,163,184,.25);color:#f1f5f9;box-shadow:0 3px 10px rgba(0,0,0,.3)}.battle-chat-msg.mine .battle-chat-text{background:rgba(37,99,235,.85);border-color:rgba(59,130,246,.5);color:#fff}@keyframes chat-msg-in{from{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}.battle-chat-input-panel{position:fixed;bottom:150px;left:50%;transform:translateX(-50%);z-index:2200;display:flex;align-items:center;gap:8px;width:min(360px,calc(100vw - 60px));padding:8px;border-radius:12px;background:rgba(9,14,28,.96);border:1px solid rgba(59,130,246,.4);box-shadow:0 8px 24px rgba(0,0,0,.5)}.battle-chat-input-panel input{flex:1;min-width:0;height:32px;padding:0 10px;border-radius:8px;border:1px solid rgba(148,163,184,.3);background:rgba(30,41,59,.6);color:#f1f5f9;font-size:13px;outline:0}.battle-chat-input-panel input:focus{border-color:rgba(59,130,246,.7)}.battle-chat-input-panel input::placeholder{color:#64748b}.summa-emoji-panel{position:fixed;right:16px;bottom:78px;z-index:2000;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:8px;background:rgba(15,20,35,.94);border:1px solid rgba(255,255,255,.16);border-radius:12px;box-shadow:0 10px 28px rgba(0,0,0,.5);backdrop-filter:blur(6px)}.summa-emoji-item{width:56px;height:56px;padding:0;border:none;border-radius:8px;background:rgba(255,255,255,.08);cursor:pointer;display:flex;align-items:center;justify-content:center}.summa-emoji-item img{width:100%;height:100%;object-fit:contain;transition:transform .12s}.summa-emoji-item:hover img{transform:scale(1.12)}.summa-emoji-item:active img{transform:scale(.9)}.summa-emoji-pop{position:fixed;bottom:96px;z-index:2200;pointer-events:none}.summa-emoji-pop.pop-left{left:18px}.summa-emoji-pop.pop-right{right:18px}.summa-emoji-pop img{width:132px;height:132px;object-fit:contain;animation:summa-pop-in .35s cubic-bezier(.175,.885,.32,1.275);filter:drop-shadow(0 8px 16px rgba(0, 0, 0, .45))}.summa-emoji-pop.pop-right img{width:96px;height:96px}@keyframes summa-pop-in{from{transform:scale(.3) translateY(20px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}.timer-pie{width:58px;height:58px;border-radius:50%;background:conic-gradient(#5b9e6e 100%,rgba(255,255,255,.12) 0);display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(0,0,0,.4)}.timer-pie-value{width:44px;height:44px;border-radius:50%;background:rgba(15,23,42,.85);display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:700;color:#e5e7eb;font-family:'Courier New',monospace}.timer-pie.warning{animation:pulse 1s infinite}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}.player-value{font-size:20px;font-weight:700;color:#5b7fa8;line-height:1.2;white-space:nowrap}.bubble-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-width:0;min-height:0}.bubble-item h3{margin-bottom:6px;letter-spacing:2px;font-size:12px;color:#94a3b8;text-transform:uppercase}.bubble-item .phase-hint-text{font-size:13px;color:#e5e7eb;line-height:1.5;padding:0 6px;word-break:break-word}.bubble-divider{width:auto;height:1px;background:rgba(255,255,255,.1);flex-shrink:0;margin:0 4px}.phase-display{text-align:center}.phase-hint{font-size:16px;color:#b0bdd0;padding:12px 14px;background:rgba(59,130,246,.12);border-radius:14px;border:1px solid rgba(59,130,246,.18)}.expression-display{min-height:60px;max-height:320px;background:rgba(2,6,23,.8);border-radius:14px;padding:14px 16px;font-family:'Courier New',monospace!important;font-size:18px;color:#c8cdd5;display:flex;flex-wrap:wrap;gap:6px;align-items:center;align-content:flex-start;border:1px solid rgba(255,255,255,.2);cursor:text;overflow-y:hidden;overflow-x:hidden;white-space:normal;scrollbar-width:thin;scrollbar-color:rgba(148,163,184,0.65) rgba(15,23,42,0.25)}.expression-display.is-scrollable{overflow-y:auto}.expression-display.is-scrollable-x{overflow-x:auto}.expression-display .placeholder{color:#64748b;font-style:italic}.expression-display .cursor,.expression-display .expression-element,.expression-display .expression-prefix,.expression-display .placeholder{font-family:'Courier New',Consolas,monospace!important}.expression-element{background:rgba(59,130,246,.3);padding:4px 8px;border-radius:8px;cursor:pointer;transition:all .2s;border:1px solid rgba(59,130,246,.5);font-size:16px}.keep-expr-toggle{display:flex;align-items:center;gap:8px;margin-top:10px;padding-top:10px;border-top:1px dashed rgba(255,255,255,.12);font-size:13px;color:#94a3b8;cursor:pointer;user-select:none;flex-shrink:0}.keep-expr-toggle input{width:16px;height:16px;accent-color:#3b82f6;cursor:pointer}.expression-element:hover{background:rgba(239,68,68,.3);border-color:rgba(239,68,68,.5)}.math-preview-wrap{margin-top:12px;padding-top:10px;border-top:1px dashed rgba(255,255,255,.12)}.math-preview-label{display:block;font-size:12px;color:#94a3b8;margin-bottom:6px;letter-spacing:1px;opacity:.8}.math-preview{display:block;min-height:36px;padding:8px 12px;background:rgba(59,130,246,.08);border:1px solid rgba(59,130,246,.22);border-radius:10px;color:#e2e8f0;overflow-x:auto;overflow-y:hidden;text-align:left}.math-preview-empty{font-style:italic;font-size:13px;color:#64748b;opacity:.85}.math-preview-raw{font-family:'Courier New',Consolas,monospace!important;font-size:15px;color:#f59e0b;opacity:.85}.math-preview .katex{font-size:calc(1em / 1.21)}.math-preview .katex{font-family:KaTeX_Main,'Times New Roman',serif!important;font-style:normal!important}.math-preview .katex *{font-family:inherit!important;font-style:inherit!important}.math-preview .katex .mathit,.math-preview .katex .mathnormal{font-family:KaTeX_Math,'Times New Roman',serif!important;font-style:italic!important}.cursor{color:#fff;font-weight:700;animation:blink 1s step-end infinite;margin:0 2px}.expression-prefix{color:#fff;font-weight:700;margin-right:6px;text-shadow:0 0 8px rgba(255,255,255,.5),0 0 16px rgba(255,255,255,.3)}@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}.button-group{display:flex;gap:12px}.header.campaign-mode .round-info,.header.campaign-mode .score-display{display:none}.btn{flex:1;padding:18px 22px;border:none;border-radius:16px;font-size:15px;font-weight:700;cursor:pointer;transition:all .3s;text-transform:uppercase;letter-spacing:1px;position:relative;overflow:hidden}.btn-arrow{display:inline-block;margin-left:8px;opacity:0;transform:translateX(-6px);transition:all .3s cubic-bezier(.25, .46, .45, .94);font-size:16px;line-height:1}.btn:hover .btn-arrow{opacity:1;transform:translateX(0)}.btn-primary{background:linear-gradient(135deg,#4d8c5e,#3d7a4a);color:#dce8e0}.btn-primary:hover:not(:disabled){background:linear-gradient(135deg,#3d7a4a,#356a3e);transform:translateY(-2px);box-shadow:0 4px 12px rgba(77,140,94,.3)}.btn-secondary{background:rgba(255,255,255,.1);color:#e5e7eb;border:1px solid rgba(255,255,255,.2)}.btn-secondary:hover:not(:disabled){background:rgba(255,255,255,.2)}.btn-exit{flex:1;padding:12px 20px;border:none;border-radius:16px;font-size:14px;font-weight:700;cursor:pointer;transition:all .3s;text-transform:uppercase;letter-spacing:.5px;background:#fff;color:#000;position:relative;overflow:hidden}.btn-exit:hover:not(:disabled){background:#e5e7eb;transform:translateY(-2px);box-shadow:0 4px 12px rgba(255,255,255,.3)}.exit-confirm-popover{position:absolute;bottom:80px;right:16px;z-index:7;background:rgba(15,23,42,.95);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);border-radius:18px;padding:20px;min-width:240px;box-shadow:0 10px 30px rgba(0,0,0,.5);display:block;z-index:200;opacity:0;transform:scale(.92) translateY(4px);pointer-events:none;transition:opacity .18s ease,transform .18s cubic-bezier(.22, 1, .36, 1)}.exit-confirm-popover.visible{display:block;opacity:1;transform:scale(1) translateY(0);pointer-events:auto}.exit-confirm-popover p{margin:0 0 15px 0;color:#e5e7eb;font-size:14px;text-align:center}.popover-buttons{display:flex;gap:10px}.btn-small{flex:1;padding:8px 12px;font-size:12px;border-radius:999px}.btn-cancel{background:rgba(255,255,255,.1);color:#e5e7eb;border:1px solid rgba(255,255,255,.2)}.btn-cancel:hover{background:rgba(255,255,255,.2)}.btn-confirm-exit{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}.btn-confirm-exit:hover{background:linear-gradient(135deg,#dc2626,#b91c1c)}.btn:disabled{opacity:.5;cursor:not-allowed}.hidden-cell{opacity:.2}.summa-root{--summa-size:min(256px, 42vh);--summa-eye:calc(var(--summa-size) * 0.1016);--summa-pupil:calc(var(--summa-size) * 0.046875);position:fixed;right:20px;top:50%;transform:translateY(-50%);width:40px;height:190px;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1000;cursor:grab;pointer-events:none;background:rgba(0,0,0,.01)}.summa-root.dragging{cursor:grabbing}.summa-hitbox{position:absolute;width:40px;height:190px;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:auto;cursor:grab;z-index:10}.summa-root.dragging .summa-hitbox{cursor:grabbing}.summa-body{position:relative;display:flex;flex-direction:column;align-items:center;width:var(--summa-size);height:var(--summa-size);will-change:transform;transform-origin:center center;pointer-events:none}.summa-face-wrap{position:relative;width:var(--summa-size);height:var(--summa-size);display:flex;align-items:center;justify-content:center;transition:transform 150ms ease-in-out;pointer-events:none}.summa-avatar{width:var(--summa-size);height:var(--summa-size);object-fit:contain;filter:drop-shadow(0 0 18px rgba(167, 139, 250, .45));display:block;pointer-events:none}.summa-eye{position:absolute;width:var(--summa-eye);height:var(--summa-eye);overflow:hidden;border-radius:50%;pointer-events:none}.summa-eye-left{left:33%;top:34%;transform:translate(-50%,-50%)}.summa-eye-right{left:63%;top:34%;transform:translate(-50%,-50%)}.summa-pupil{position:absolute;width:var(--summa-pupil);height:var(--summa-pupil);background:rgba(30,20,60,.75);border-radius:50%;top:50%;left:50%;margin-top:calc(var(--summa-pupil)/ -2);margin-left:calc(var(--summa-pupil)/ -2);will-change:transform;pointer-events:none}.summa-eyelid{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(255,220,200,.92);border-radius:50%;transform-origin:top center;transform:scaleY(0);will-change:transform;pointer-events:none}.summa-message{background:rgba(255,255,255,.95);color:#1e1b4b;padding:14px 18px;border-radius:12px;border:2px solid #a78bfa;font-size:15px;font-weight:700;width:8em;max-width:8em;white-space:normal;word-break:break-all;overflow-wrap:anywhere;line-height:1.35;opacity:0;position:absolute;bottom:calc(100% - 16px);left:50%;transform:translateX(-50%) scale(.85) translateY(16px);transition:opacity .28s cubic-bezier(.175, .885, .32, 1.275),transform .28s cubic-bezier(.175, .885, .32, 1.275);box-shadow:0 8px 24px rgba(0,0,0,.45);z-index:2;pointer-events:none}.summa-message::after{content:'';position:absolute;bottom:-10px;left:50%;transform:translateX(-50%);border-width:10px 10px 0;border-style:solid;border-color:#a78bfa transparent transparent transparent}.summa-message.visible{opacity:1;transform:translateX(-50%) scale(1) translateY(0)}.message-panel{display:block}.message{min-height:40px;padding:10px;border-radius:14px;font-size:14px;text-align:center}.message.error{background:rgba(239,68,68,.2);color:#fca5a5;border:1px solid rgba(239,68,68,.3)}.message.success{background:rgba(34,197,94,.2);color:#86efac;border:1px solid rgba(34,197,94,.3)}.elements-section{position:fixed;bottom:0;left:0;right:0;height:var(--bottom-bar-height);background:rgba(15,23,42,.9);backdrop-filter:blur(10px);border-top:1px solid rgba(255,255,255,.1);padding:var(--bottom-bar-padding-y) 24px env(safe-area-inset-bottom,var(--bottom-bar-padding-y));display:flex;gap:24px;overflow-x:auto;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(148,163,184,0.55) rgba(15,23,42,0.2)}.element-category{display:flex;flex-direction:column;gap:8px}.category-label{font-size:12px;color:#94a3b8;text-transform:uppercase;letter-spacing:1px}.element-items{display:flex;gap:6px;flex-wrap:wrap}.element-btn{padding:7px 14px;border:1px solid rgba(255,255,255,.2);border-radius:999px;background:rgba(255,255,255,.05);color:#e5e7eb;font-size:14px;cursor:pointer;transition:all .2s;display:flex;align-items:center;gap:5px}.element-btn:hover:not(:disabled){background:rgba(59,130,246,.18);border-color:rgba(59,130,246,.3);transform:translateY(-2px);box-shadow:0 4px 8px rgba(59,130,246,.18)}.element-btn.locked{background:rgba(107,114,128,.2);color:#6b7280;border-color:rgba(107,114,128,.3);cursor:not-allowed}.element-btn.locked:hover{background:rgba(107,114,128,.2);color:#6b7280;border-color:rgba(107,114,128,.3);transform:none;box-shadow:none}.lock-icon{font-size:12px;line-height:1}.lock-icon svg{display:inline-block;vertical-align:-.15em}.inline-elements-card{display:none}.inline-elements-tabs{display:flex;gap:4px;margin-bottom:10px;flex-wrap:wrap}.inline-elements-tab{padding:6px 12px;border:1px solid rgba(255,255,255,.15);border-radius:999px;background:rgba(255,255,255,.05);color:#94a3b8;font-size:13px;cursor:pointer;transition:all .2s;white-space:nowrap;user-select:none;-webkit-tap-highlight-color:transparent}.inline-elements-tab:hover{border-color:rgba(148,163,184,.4);color:#cbd5e1}.inline-elements-tab.active{background:rgba(59,130,246,.2);border-color:rgba(59,130,246,.4);color:#60a5fa;font-weight:600}.inline-elements-body{display:flex;flex-wrap:wrap;gap:6px;min-height:36px;align-items:flex-start}.inline-elements-body .element-btn{padding:8px 14px;font-size:14px;min-height:36px}#splash-screen{position:fixed;inset:0;background:#000;z-index:99999;display:flex;justify-content:center;align-items:center;cursor:pointer;user-select:none}.splash-content{text-align:center;animation:splashContentFadeIn 1.2s cubic-bezier(.22,1,.36,1) both}.splash-title{font-size:clamp(42px, 8vw, 72px);font-weight:900;color:#fff;letter-spacing:.15em;text-shadow:0 0 20px rgba(255,255,255,.5),0 0 60px rgba(99,102,241,.35),0 0 120px rgba(59,130,246,.2);margin-bottom:48px}.splash-hint{font-size:clamp(14px, 2.4vw, 18px);color:rgba(255,255,255,.55);letter-spacing:.3em;animation:splashHintPulse 2.4s ease-in-out infinite alternate}.splash-refresh-hint{margin-top:18px;font-size:clamp(12px, 2vw, 14px);color:rgba(255,255,255,.28);letter-spacing:.05em}@keyframes splashContentFadeIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes splashHintPulse{from{opacity:.35;text-shadow:0 0 8px rgba(255,255,255,.08)}to{opacity:.85;text-shadow:0 0 20px rgba(255,255,255,.25)}}#splash-screen.splash-exit{animation:splashTransition .9s cubic-bezier(.65,0,.35,1) forwards;pointer-events:none}#splash-screen.splash-exit .splash-content{animation:splashContentExit .9s cubic-bezier(.65,0,.35,1) forwards}@keyframes splashTransition{0%{background:#000}40%{background:#000}70%{background:#111}100%{background:#fff;filter:brightness(1.3)}}@keyframes splashContentExit{0%{opacity:1;transform:scale(1) rotate(0);filter:blur(0)}30%{opacity:1;transform:scale(1.6) rotate(12deg);filter:blur(2px)}60%{opacity:.4;transform:scale(2.8) rotate(24deg);filter:blur(12px)}100%{opacity:0;transform:scale(4) rotate(36deg);filter:blur(30px);display:none}}.modal{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(5,5,16,.9);display:flex;justify-content:center;align-items:center;z-index:1000;backdrop-filter:none;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}#start-modal::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(circle 350px at 12% 12%,rgba(59,130,246,.07) 0,transparent 100%),radial-gradient(circle 280px at 88% 8%,rgba(139,92,246,.06) 0,transparent 100%),radial-gradient(circle 220px at 8% 92%,rgba(6,182,212,.05) 0,transparent 100%),radial-gradient(circle 300px at 92% 88%,rgba(34,197,94,.04) 0,transparent 100%),radial-gradient(ellipse 50% 30% at 50% 0,rgba(59,130,246,.03) 0,transparent 100%);animation:auraBreathe 8s ease-in-out infinite alternate}#start-modal::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.4;background-image:repeating-linear-gradient(0deg,transparent,transparent 29px,rgba(59,130,246,.15) 29px,rgba(59,130,246,.15) 30px),repeating-linear-gradient(90deg,transparent,transparent 29px,rgba(59,130,246,.15) 29px,rgba(59,130,246,.15) 30px),repeating-linear-gradient(0deg,transparent,transparent 149px,rgba(99,102,241,.22) 149px,rgba(99,102,241,.22) 150px),repeating-linear-gradient(90deg,transparent,transparent 149px,rgba(99,102,241,.22) 149px,rgba(99,102,241,.22) 150px);background-size:30px 30px,30px 30px,150px 150px,150px 150px;animation:crosshairBreathe 6s ease-in-out infinite alternate}@keyframes crosshairBreathe{0%{opacity:.32}50%{opacity:.45}100%{opacity:.32}}#campaign-modal{background:rgba(5,8,20,.97)}#campaign-modal::before,#race-modal::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.55;background-image:repeating-linear-gradient(0deg,transparent,transparent 29px,rgba(59,130,246,.15) 29px,rgba(59,130,246,.15) 30px),repeating-linear-gradient(90deg,transparent,transparent 29px,rgba(59,130,246,.15) 29px,rgba(59,130,246,.15) 30px),repeating-linear-gradient(0deg,transparent,transparent 149px,rgba(99,102,241,.22) 149px,rgba(99,102,241,.22) 150px),repeating-linear-gradient(90deg,transparent,transparent 149px,rgba(99,102,241,.22) 149px,rgba(99,102,241,.22) 150px);background-size:30px 30px,30px 30px,150px 150px,150px 150px;animation:crosshairBreathe 6s ease-in-out infinite alternate}@keyframes auraBreathe{0%{opacity:.7}100%{opacity:1}}.modal-content{background:0 0;position:relative;padding:42px 46px;border-radius:0;text-align:center;max-width:560px;width:92%;border:none;box-shadow:none;max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow-x:hidden;overflow-y:auto;box-sizing:border-box}.modal-content>.btn:last-child,.modal-content>button:last-child{position:sticky;bottom:0;z-index:2}#start-modal .modal-content{transform-origin:top center;width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:none;padding:28px 64px 32px;margin:0;display:flex;flex-direction:column;justify-content:center;box-sizing:border-box}.start-modal-title-image{display:block;width:100%;max-width:100%;height:auto;margin:0;image-rendering:auto}#start-modal .start-modal-title-image{width:100%}@keyframes selectorFlash{0%{transform:scale(1);box-shadow:0 0 0 rgba(255,255,255,0)}50%{transform:scale(1.04);box-shadow:0 0 18px rgba(255,255,255,.18)}100%{transform:scale(1);box-shadow:0 0 0 rgba(255,255,255,0)}}@keyframes selectorArrowPop{0%{transform:scale(1)}50%{transform:scale(1.15)}100%{transform:scale(1)}}.stepper-arrow.diff-color-easy,.stepper-arrow.round-color-8{color:#6b9f6e}.stepper-arrow.diff-color-normal,.stepper-arrow.round-color-12{color:#6b84a8}.stepper-arrow.diff-color-expert,.stepper-arrow.round-color-16{color:#b8944a}.stepper-arrow.diff-color-test,.stepper-arrow.round-color-20{color:#8b7bb0}.stepper-arrow.round-color-24{color:#b06e6e}.modal-content h2{font-size:32px;margin-bottom:24px;background:linear-gradient(135deg,#a0f1d8,#848bcf);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.modal-content p{color:#94a3b8;margin-bottom:24px;line-height:1.6}.mode-select,.selector-row{margin-bottom:16px}.start-left-column{display:flex;flex-direction:column;gap:24px;align-items:center;justify-content:center;height:100%;transform:translateY(-5%)}.start-right-column{display:flex;flex-direction:column;gap:20px;align-items:center;justify-content:center;height:100%}.start-selectors-left{width:100%}.start-selectors-left .difficulty-select,.start-selectors-left .round-select{max-width:100%}#start-modal .start-selectors-left .difficulty-select,#start-modal .start-selectors-left .round-select{max-width:100%}.start-selectors-left .stepper-selector{width:100%}.start-selectors-left .stepper-value{font-size:17px;min-height:50px}#start-modal .start-selectors-left .stepper-value{font-size:22px;min-height:80px}.start-selectors-left .stepper-arrow{width:40px;height:40px}#start-modal .start-selectors-left .stepper-arrow{width:52px;height:52px;font-size:38px;line-height:1;border-radius:50%;padding:0}.start-selectors-left .stepper-value{min-width:0}.start-selectors-left .stepper-arrow{flex:0 0 36px;width:36px;height:36px}.start-modes-right{min-width:0;width:100%}#start-modal .start-modes-right{display:flex;flex-direction:column;justify-content:flex-start}.stepper-selector{display:flex;align-items:center;gap:10px}#start-modal .stepper-selector{gap:14px}.stepper-selector.selector-change .stepper-value{animation:selectorFlash .22s ease}.stepper-selector.selector-change .stepper-arrow{animation:selectorArrowPop .22s ease}.stepper-value{flex:1;min-height:46px;display:flex;align-items:center;justify-content:center;padding:10px 14px;border-radius:14px;border:1px solid rgba(255,255,255,.1);background:rgba(2,6,23,.8);color:#b0bdd0;font-size:16px;font-weight:600;text-align:center;transition:transform .2s,box-shadow .2s,border-color .2s;text-shadow:0 0 6px rgba(255,255,255,.05)}#start-modal .stepper-value{padding:20px 28px;border-radius:28px;text-shadow:0 0 12px rgba(255,255,255,.08)}.stepper-arrow{width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.12);background:rgba(59,130,246,.1);color:#8a9bb5;font-size:18px;font-weight:700;cursor:pointer;transition:all .2s}.stepper-arrow:hover:not(:disabled){background:rgba(59,130,246,.2);transform:scale(1.06)}#start-modal .stepper-arrow:hover:not(:disabled){transform:scale(1.12)}#main-mode-toggle .mode-btn{text-align:center}#start-modal .stepper-arrow:hover:not(:disabled){transform:scale(1.12)}.stepper-arrow.round-color-8{background:rgba(96,165,250,.14);box-shadow:0 0 14px rgba(96,165,250,.18)}.stepper-arrow.round-color-12{background:rgba(52,211,153,.14);box-shadow:0 0 14px rgba(52,211,153,.18)}.stepper-arrow.round-color-16{background:rgba(251,191,36,.14);box-shadow:0 0 14px rgba(251,191,36,.18)}.stepper-arrow.round-color-20{background:rgba(249,115,22,.14);box-shadow:0 0 14px rgba(249,115,22,.18)}.stepper-arrow.round-color-24{background:rgba(244,63,94,.14);box-shadow:0 0 14px rgba(244,63,94,.18)}.stepper-arrow.diff-color-easy{background:rgba(34,197,94,.14);box-shadow:0 0 14px rgba(34,197,94,.18)}.stepper-arrow.diff-color-normal{background:rgba(59,130,246,.14);box-shadow:0 0 14px rgba(59,130,246,.18)}.stepper-arrow.diff-color-expert{background:rgba(245,158,11,.14);box-shadow:0 0 14px rgba(245,158,11,.18)}.stepper-arrow.diff-color-test{background:rgba(168,85,247,.14);box-shadow:0 0 14px rgba(168,85,247,.18)}.stepper-arrow:disabled,.stepper-selector.disabled .stepper-arrow{opacity:.45;cursor:not-allowed;transform:none}#start-modal .stepper-arrow:disabled,#start-modal .stepper-selector.disabled .stepper-arrow{opacity:.35;color:rgba(255,255,255,.45)!important}#start-modal .stepper-selector.disabled .stepper-value{opacity:.55}.difficulty-select,.round-select{margin-bottom:16px}#difficulty-hint{display:none}#start-modal small{font-size:15px}.difficulty-select label,.round-select label{display:block;margin-bottom:10px;color:#e5e7eb;font-size:16px}.difficulty-select select,.round-select select{display:none}.difficulty-select select:focus,.round-select select:focus{outline:0;border-color:#22c55e}.start-settings-layout{display:flex;flex-direction:column;gap:24px;align-items:stretch;justify-content:center;margin-top:0;margin-bottom:0;width:100%;min-width:0}#start-modal .start-settings-layout{gap:28px;margin-top:0;margin-bottom:0;align-items:stretch;flex:1;display:flex}.mode-select{margin-bottom:0}.mode-toggle{display:flex;gap:12px}#main-mode-toggle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;width:100%}@media (orientation:portrait) and (max-width:767px){#main-mode-toggle{grid-template-columns:1fr}}.mode-toggle-row{display:flex;flex-direction:row;gap:12px;width:100%}#start-modal .mode-toggle-row>.mode-btn,.mode-toggle-row>.mode-btn{flex:1 1 0;width:auto;min-width:0}.mode-toggle .mode-btn{background:rgba(255,255,255,.06);color:#e5e7eb;border:1px solid rgba(255,255,255,.12);width:100%}.mode-toggle .mode-btn[data-mode=local]{border-color:rgba(99,102,241,.42);color:#b9bbd7;background:rgba(88,92,128,.24);box-shadow:0 0 10px rgba(99,102,241,.2)}.mode-toggle .mode-btn[data-mode=ai]{border-color:rgba(59,130,246,.42);color:#b8c9e6;background:rgba(68,88,124,.24);box-shadow:0 0 10px rgba(59,130,246,.2)}.mode-toggle .mode-btn[data-mode=campaign]{border-color:rgba(59,130,246,.42);color:#b8c9e6;background:rgba(68,88,124,.24);box-shadow:0 0 10px rgba(59,130,246,.2)}.mode-toggle .mode-btn[data-mode=race]{border-color:rgba(34,211,238,.5);color:#b7d7dc;background:rgba(68,102,112,.24);box-shadow:0 0 10px rgba(34,211,238,.18)}.mode-toggle .mode-btn[data-mode=battle]{border-color:rgba(251,191,36,.5);color:#f1e3c0;background:rgba(120,94,28,.24);box-shadow:0 0 10px rgba(251,191,36,.18)}.mode-toggle .mode-btn.active[data-mode=local]{background:rgba(99,102,241,.26);color:#d7d8ff;box-shadow:0 0 24px rgba(99,102,241,.4)}.mode-toggle .mode-btn.active[data-mode=ai]{background:rgba(59,130,246,.26);color:#dbeafe;box-shadow:0 0 24px rgba(59,130,246,.4)}.mode-toggle .mode-btn.active[data-mode=campaign]{background:rgba(59,130,246,.24);color:#dbeafe;box-shadow:0 0 24px rgba(59,130,246,.4)}.mode-toggle .mode-btn.active[data-mode=race]{background:rgba(34,211,238,.26);color:#d6fbff;box-shadow:0 0 24px rgba(34,211,238,.42)}.mode-toggle .mode-btn.active[data-mode=battle]{background:rgba(251,191,36,.26);color:#fff7dc;box-shadow:0 0 24px rgba(251,191,36,.4)}.mode-btn{flex:1;padding:12px;border:2px solid rgba(255,255,255,.2);border-radius:16px;background:rgba(2,6,23,.6);color:#94a3b8;font-size:16px;font-weight:700;cursor:pointer;transition:all .3s;text-shadow:0 0 6px rgba(255,255,255,.04)}#start-modal .mode-btn{padding:30px 28px;font-size:34px;border-radius:36px;width:100%}.mode-btn:hover{background:rgba(59,130,246,.2);border-color:rgba(59,130,246,.5)}.mode-btn.active{background:rgba(34,197,94,.2);border-color:#22c55e;color:#22c55e;box-shadow:0 0 10px rgba(34,197,94,.3)}#start-modal .mode-btn[data-mode=race]{border-color:rgba(34,211,238,.6);background:rgba(68,102,112,.28);color:#b7d7dc}#start-modal .mode-btn[data-mode=race]:hover{background:rgba(34,211,238,.22);border-color:rgba(34,211,238,.75)}#start-modal .mode-btn.active[data-mode=race]{background:rgba(34,211,238,.28);border-color:#22d3ee;color:#d6fbff;box-shadow:0 0 24px rgba(34,211,238,.42)}.mode-submenu-content{max-width:380px}.mode-submenu-list{display:flex;flex-direction:column;gap:10px}.mode-submenu-btn{flex:none!important;width:100%!important;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 14px!important;border-radius:12px!important;border:1px solid rgba(255,255,255,.1)!important;background:rgba(255,255,255,.05)!important;color:#e5e7eb!important;text-align:left;cursor:pointer;transition:all .2s}.mode-submenu-label{font-size:15px;font-weight:700}.mode-submenu-hint{font-size:12px;color:#94a3b8}#mode-submenu-modal .mode-submenu-btn:hover{background:rgba(59,130,246,.16)!important;border-color:rgba(59,130,246,.45)!important}#mode-submenu-modal .mode-submenu-btn:hover .mode-submenu-hint{color:#b7c9e6}.p2p-room-content{max-width:440px}.p2p-status{display:flex;align-items:center;gap:8px;padding:8px 12px;background:rgba(0,0,0,.2);border-radius:8px;margin-bottom:12px}.p2p-status-dot{width:8px;height:8px;border-radius:50%;background:#6b7280;flex-shrink:0}.p2p-status-dot.idle{background:#6b7280}.p2p-status-dot.connected{background:#22c55e;box-shadow:0 0 6px rgba(34,197,94,.6)}.p2p-status-dot.waiting{background:#eab308;animation:pulse-dot 1.5s infinite}.p2p-status-dot.error{background:#ef4444}.p2p-status-dot.creating,.p2p-status-dot.joining{background:#3b82f6;animation:pulse-dot 1s infinite}.p2p-status-dot.disconnected{background:#ef4444}@keyframes pulse-dot{0%,100%{opacity:1}50%{opacity:.4}}.p2p-status-text{font-size:13px;color:#94a3b8}.p2p-status.error-state{border:1px solid rgba(239,68,68,.45);background:rgba(239,68,68,.12)}.p2p-status.error-state .p2p-status-text{color:#fca5a5;font-weight:600}.p2p-tabs{display:flex;gap:4px;margin-bottom:12px}.p2p-tab{flex:1;padding:8px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:rgba(255,255,255,.04);color:#94a3b8;cursor:pointer;text-align:center;font-size:14px;transition:all .2s}.p2p-tab.active{background:rgba(59,130,246,.2);border-color:rgba(59,130,246,.4);color:#dbeafe}.p2p-tab-content{padding:12px 0}.p2p-desc{font-size:13px;color:#94a3b8;margin-bottom:12px;text-align:center}.p2p-room-code-display{display:flex;align-items:center;justify-content:center;gap:12px;padding:12px;background:rgba(0,0,0,.2);border-radius:8px;margin-bottom:12px}.p2p-label{font-size:12px;color:#6b7280}.p2p-room-code{font-family:monospace;font-size:22px;font-weight:700;color:#eab308;letter-spacing:4px}.p2p-copy-btn{padding:4px 10px;font-size:12px}.p2p-input-group{margin-bottom:12px}.p2p-room-input{width:100%;padding:10px;border:1px solid rgba(255,255,255,.15);border-radius:8px;background:rgba(0,0,0,.3);color:#e5e7eb;font-size:18px;text-align:center;letter-spacing:6px;font-family:monospace}.p2p-room-input:focus{outline:0;border-color:rgba(59,130,246,.5)}.p2p-action-btn{width:100%}.p2p-battle-hint{margin-top:8px;text-align:center;opacity:.6}.p2p-back-btn{margin-top:8px}@media (max-width:767px){.p2p-room-content{max-width:100%!important}.p2p-content-layout{flex-direction:column!important;gap:14px!important;align-items:stretch!important}.p2p-selectors-left{flex:none!important;width:100%!important;border-right:none!important;padding-right:0!important;padding-bottom:12px!important;border-bottom:1px solid rgba(255,255,255,.08)!important}.p2p-selectors-left .stepper-value{font-size:14px}.p2p-selectors-right{flex:none!important;width:100%!important;min-width:0!important}.p2p-back-btn{position:sticky;bottom:0;z-index:10;margin-top:12px!important;background:rgba(15,23,42,.96);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 -6px 14px rgba(0,0,0,.35)}}.lobby-status{display:flex;align-items:center;gap:8px;padding:8px 12px;background:rgba(0,0,0,.2);border-radius:8px;margin-bottom:12px}.lobby-status-text{font-size:13px;color:#94a3b8}.lobby-actions{display:flex;gap:8px;margin-bottom:12px}.lobby-actions .btn{flex:1}#race-battle-tab-lobby-content .lobby-actions .btn{flex:1}.lobby-refresh-btn{flex:0 0 auto;width:auto!important;padding:8px 14px}.lobby-list{max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:4px}.lobby-room-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.08);border-radius:10px;transition:border-color .2s,background .2s}.lobby-room-row:hover{border-color:rgba(59,130,246,.4);background:rgba(59,130,246,.08)}.lobby-room-info{display:flex;flex-direction:column;gap:2px;min-width:0}.lobby-room-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.lobby-room-tags{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:2px}.lobby-room-head>.lobby-room-host,.lobby-room-head>.lobby-room-mine-tag,.lobby-room-tags>.lobby-room-elo,.lobby-room-tags>.lobby-room-winrate{margin-top:0}.lobby-room-code{font-family:monospace;font-size:16px;font-weight:700;color:#eab308;letter-spacing:2px}.lobby-room-desc{font-size:12px;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lobby-room-mode{display:inline-block;margin-right:6px;padding:1px 6px;font-size:11px;line-height:16px;border-radius:4px;border:1px solid;vertical-align:1px}.lobby-room-mode-ranked{color:#fbbf24;border-color:rgba(245,158,11,.5);background:rgba(245,158,11,.12)}.lobby-room-mode-casual{color:#34d399;border-color:rgba(52,211,153,.5);background:rgba(52,211,153,.12)}.lobby-room-tier{display:inline-block;margin-right:6px;padding:1px 6px;font-size:11px;line-height:16px;border-radius:4px;border:1px solid;color:#a78bfa;border-color:rgba(167,139,250,.5);background:rgba(167,139,250,.12);vertical-align:1px}.lobby-join-btn{flex-shrink:0}.lobby-room-row .lobby-room-info{flex:1 1 auto}.lobby-room-row .lobby-join-btn{flex:0 0 auto;min-width:92px}.lobby-empty{padding:20px;text-align:center;color:#64748b;font-size:13px;border:1px dashed rgba(255,255,255,.1);border-radius:10px}.lobby-delete-btn{flex:0 0 auto;width:auto!important;padding:8px 14px;background:rgba(239,68,68,.15);color:#f87171;border-color:rgba(239,68,68,.4)}.lobby-delete-btn:hover{background:rgba(239,68,68,.3);color:#fca5a5}.lobby-long-lived-label{display:flex;align-items:center;gap:6px;margin-bottom:12px;font-size:12px;color:#94a3b8;cursor:pointer}.lobby-long-lived-label input{accent-color:#eab308}.lobby-elo-range-input{width:60px;padding:2px 6px;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.15);border-radius:6px;color:#eab308;font-size:12px;text-align:center}.lobby-room-elo{display:inline-block;margin-top:2px;width:fit-content;font-size:11px;font-weight:700;color:#eab308;background:rgba(234,179,8,.12);border:1px solid rgba(234,179,8,.35);border-radius:999px;padding:1px 8px}.lobby-room-host{display:inline-block;margin-top:2px;width:fit-content;max-width:100%;font-size:11px;font-weight:700;color:#93c5fd;background:rgba(59,130,246,.12);border:1px solid rgba(59,130,246,.35);border-radius:999px;padding:1px 8px;white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.4}.lobby-room-winrate{display:inline-block;margin-top:2px;width:fit-content;font-size:11px;font-weight:700;color:#34d399;background:rgba(52,211,153,.12);border:1px solid rgba(52,211,153,.35);border-radius:999px;padding:1px 8px}.lobby-host-banner{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:11000;display:flex;align-items:center;gap:8px;padding:8px 16px;background:rgba(15,18,35,.92);border:1px solid rgba(234,179,8,.55);border-radius:999px;box-shadow:0 4px 20px rgba(0,0,0,.5);font-family:'Courier New',Consolas,monospace;font-size:14px;color:#eab308;white-space:nowrap;letter-spacing:.5px}.lobby-host-banner-dot{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 8px #22c55e;animation:lobby-pulse 1.2s infinite}@keyframes lobby-pulse{0%,100%{opacity:1}50%{opacity:.4}}.lobby-host-banner.lobby-host-banner-playing{border-color:rgba(96,165,250,.6)}.lobby-host-banner.lobby-host-banner-playing .lobby-host-banner-dot{background:#3b82f6;box-shadow:0 0 8px #3b82f6}.lobby-spectate-toggle{display:inline-flex;align-items:center;gap:6px;margin-left:8px;padding:3px 10px;font-family:inherit;font-size:12px;color:#93c5fd;background:rgba(59,130,246,.15);border:1px solid rgba(59,130,246,.4);border-radius:999px;cursor:pointer;white-space:nowrap}.lobby-spectate-toggle input{accent-color:#3b82f6;margin:0}.lobby-spectate-toggle input:not(:checked)+span{color:#f87171}.lobby-room-row.lobby-room-playing{border-color:rgba(59,130,246,.35);background:rgba(59,130,246,.07)}.lobby-room-row.lobby-room-playing .lobby-room-desc{color:#93c5fd}.lobby-room-row.lobby-room-mine{border-color:rgba(34,197,94,.35);background:rgba(34,197,94,.07)}.lobby-room-mine-tag{display:inline-block;width:fit-content;font-size:11px;font-weight:700;color:#4ade80;background:rgba(34,197,94,.14);border:1px solid rgba(34,197,94,.45);border-radius:999px;padding:1px 8px}.lobby-join-btn[disabled]{opacity:.55;cursor:not-allowed}.spectator-overlay{position:fixed;top:12px;left:50%;transform:translateX(-50%);z-index:10990;display:flex;align-items:center;gap:10px;padding:8px 16px;background:rgba(30,41,59,.92);border:1px solid rgba(96,165,250,.55);border-radius:999px;box-shadow:0 4px 20px rgba(0,0,0,.5);font-size:13px;color:#93c5fd;white-space:nowrap;letter-spacing:.3px}.spectator-dot{width:8px;height:8px;border-radius:50%;background:#3b82f6;box-shadow:0 0 8px #3b82f6;animation:lobby-pulse 1.2s infinite}.spectator-exit-btn{flex:0 0 auto;padding:4px 12px}.spectator-watermark{position:fixed;right:24px;bottom:24px;z-index:9996;pointer-events:none;user-select:none;font-size:22px;font-weight:700;letter-spacing:4px;color:rgba(147,197,253,.18);text-shadow:0 0 12px rgba(59,130,246,.25);transform:rotate(-8deg)}.p2p-await-banner{position:fixed;bottom:14px;left:50%;transform:translateX(-50%);z-index:10995;display:flex;align-items:center;gap:8px;padding:8px 16px;background:rgba(30,20,5,.92);border:1px solid rgba(251,191,36,.6);border-radius:999px;box-shadow:0 4px 20px rgba(0,0,0,.5);font-size:13px;color:#fbbf24;white-space:nowrap}.p2p-await-dot{width:8px;height:8px;border-radius:50%;background:#fbbf24;box-shadow:0 0 8px #fbbf24;animation:lobby-pulse 1.2s infinite}.lobby-host-banner,.p2p-await-banner,.spectator-overlay{cursor:grab;touch-action:none;transition:box-shadow .2s ease,transform .2s ease}.lobby-host-banner.dragging,.p2p-await-banner.dragging,.spectator-overlay.dragging{cursor:grabbing;user-select:none}.lobby-host-banner::before,.p2p-await-banner::before,.spectator-overlay::before{content:'≡';font-size:14px;line-height:1;color:rgba(255,255,255,.45);letter-spacing:-2px;opacity:.7;transition:opacity .2s ease}.lobby-host-banner:hover::before,.p2p-await-banner:hover::before,.spectator-overlay:hover::before{opacity:1}.lobby-host-banner:hover,.p2p-await-banner:hover,.spectator-overlay:hover{box-shadow:0 8px 28px rgba(0,0,0,.65),0 0 0 1px rgba(255,255,255,.12)}.p2p-exit-confirm-text{font-size:15px;color:#e2e8f0;line-height:1.6;margin:12px 0 18px;text-align:center}.p2p-exit-confirm-actions{display:flex;gap:10px;justify-content:center}.p2p-exit-confirm-actions .btn{min-width:110px}.difficulty-select select option[value=easy]{color:#22c55e}.difficulty-select select option[value=hard]{color:#f59e0b}.difficulty-select select option[value=expert]{color:#ef4444}.difficulty-select select option[value=test]{color:#a78bfa}@keyframes fadeIn{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.zoom-controls{position:absolute;top:10px;right:10px;display:flex;align-items:center;gap:8px;background:rgba(15,23,42,.8);backdrop-filter:blur(10px);padding:8px 12px;border-radius:14px;border:1px solid rgba(255,255,255,.1);z-index:10;animation:fadeIn .3s ease-out}.zoom-btn{width:32px;height:32px;border:none;border-radius:10px;background:rgba(59,130,246,.8);color:#fff;font-size:20px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.zoom-btn:hover{background:#3b82f6;transform:scale(1.05)}.zoom-btn:active{transform:scale(.95)}.zoom-btn:disabled{background:rgba(107,114,128,.5);cursor:not-allowed;transform:none}.zoom-range{font-size:14px;font-weight:700;color:#e2e8f0;min-width:40px;text-align:center;font-family:'Courier New',monospace}#game-over-modal::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.3;background-image:repeating-linear-gradient(0deg,transparent,transparent 29px,rgba(59,130,246,.12) 29px,rgba(59,130,246,.12) 30px),repeating-linear-gradient(90deg,transparent,transparent 29px,rgba(59,130,246,.12) 29px,rgba(59,130,246,.12) 30px),repeating-linear-gradient(0deg,transparent,transparent 149px,rgba(99,102,241,.18) 149px,rgba(99,102,241,.18) 150px),repeating-linear-gradient(90deg,transparent,transparent 149px,rgba(99,102,241,.18) 149px,rgba(99,102,241,.18) 150px)}#report-modal::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.3;background-image:repeating-linear-gradient(0deg,transparent,transparent 29px,rgba(59,130,246,.12) 29px,rgba(59,130,246,.12) 30px),repeating-linear-gradient(90deg,transparent,transparent 29px,rgba(59,130,246,.12) 29px,rgba(59,130,246,.12) 30px),repeating-linear-gradient(0deg,transparent,transparent 149px,rgba(99,102,241,.18) 149px,rgba(99,102,241,.18) 150px),repeating-linear-gradient(90deg,transparent,transparent 149px,rgba(99,102,241,.18) 149px,rgba(99,102,241,.18) 150px)}.winner-text{font-size:36px;font-weight:700;color:#5b9e6e;margin-bottom:20px}.final-scores{display:flex;justify-content:center;gap:40px;margin-bottom:30px;font-size:20px}.final-scores div{padding:15px 30px;background:rgba(255,255,255,.05);border-radius:14px;border:1px solid rgba(255,255,255,.1)}.start-info-modal-content{max-width:520px;width:92%;max-height:80vh;overflow-y:auto}.start-info-modal-content h2{text-align:center;margin-bottom:14px}.report-modal-content{max-width:900px;width:95%;max-height:90vh;max-height:90dvh;display:flex;flex-direction:column;overflow:hidden}#report-content{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.report-summary{text-align:left;margin-bottom:20px;padding:15px;background:rgba(255,255,255,.05);border-radius:14px}.report-stats{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px}.report-stat{display:flex;flex-direction:column;gap:4px;min-width:96px;padding:10px 14px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:10px}.report-stat-label{color:#94a3b8;font-size:12px;letter-spacing:.4px}.report-stat-value{color:#e5e7eb;font-size:18px;font-weight:600;line-height:1.2}.report-summary h3{color:#5b9e6e;margin-bottom:10px;font-size:18px}.report-summary p{margin:5px 0;color:#e5e7eb;font-size:14px}.report-history{text-align:left}.report-history h3{color:#3b82f6;margin-bottom:10px;font-size:18px}.report-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:10px}.report-table td,.report-table th{padding:8px;text-align:center;border:1px solid rgba(255,255,255,.1)}.report-table th{background:rgba(59,130,246,.2);color:#e5e7eb;font-weight:700;white-space:nowrap}.report-table tbody tr:nth-child(2n){background:rgba(255,255,255,.03)}@keyframes modalFadeIn{from{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes modalFadeOut{from{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.96) translateY(8px)}}@keyframes overlayFadeIn{from{opacity:0}to{opacity:1}}@keyframes overlayFadeOut{from{opacity:1}to{opacity:0}}@keyframes slideUpIn{from{opacity:0;transform:translateY(28px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes slideUpOut{from{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(28px) scale(.97)}}@keyframes slideInFromRight{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInFromLeft{from{opacity:0;transform:translateX(-40px)}to{opacity:1;transform:translateX(0)}}@keyframes popIn{0%{opacity:0;transform:scale(.7)}60%{opacity:1;transform:scale(1.05)}80%{transform:scale(.97)}100%{transform:scale(1)}}.modal-entering{animation:modalFadeIn .28s cubic-bezier(.22,1,.36,1) both}.modal-exiting{animation:modalFadeOut .22s ease-in both;pointer-events:none}@keyframes startModalContentIn{from{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes startModalContentOut{from{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.96) translateY(8px)}}#start-modal.modal-entering{animation:none!important;opacity:1!important}#start-modal.modal-entering>*{animation:startModalContentIn .32s cubic-bezier(.22,1,.36,1) both}#start-modal.modal-exiting{animation:none!important;opacity:1!important}#start-modal.modal-exiting>*{animation:startModalContentOut .22s ease-in both}@keyframes campaignSlideIn{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}}@keyframes campaignSlideOut{from{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-30px)}}#campaign-modal.modal-entering{animation:none!important;opacity:1!important}#campaign-modal.modal-entering>*{animation:campaignSlideIn .3s cubic-bezier(.22,1,.36,1) both}#campaign-modal.modal-exiting{animation:none!important;opacity:1!important}#campaign-modal.modal-exiting>*{animation:campaignSlideOut .22s ease-in both}#campaign-step-difficulty,#campaign-step-levels{transition:opacity .2s ease,transform .2s ease}#game-over-modal.modal-entering>*{animation:slideUpIn .35s cubic-bezier(.22,1,.36,1) both}#campaign-victory-modal.modal-entering>*{animation:popIn .45s cubic-bezier(.22,1,.36,1) both}#bgm-modal.modal-entering>*{animation:slideUpIn .28s cubic-bezier(.22,1,.36,1) both}#report-modal.modal-entering>*{animation:slideUpIn .3s cubic-bezier(.22,1,.36,1) both}#summa-train-dialog.modal-entering>*{animation:slideUpIn .28s cubic-bezier(.22,1,.36,1) both}.report-table tbody tr:hover{background:rgba(255,255,255,.08)}.expr-cell{font-family:'Courier New',monospace;font-size:11px;width:230px;max-width:230px;overflow:hidden;white-space:nowrap;padding-left:10px!important;padding-right:10px!important}.expr-math{display:inline-block;white-space:nowrap;text-align:left;color:#dbeafe;font-size:13px;line-height:1.2;transform-origin:left center}.expr-raw{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;color:#cbd5e1}.expr-empty{color:#64748b}.expr-cell.expr-clipped .expr-math{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 24px),transparent)}.token-cell{font-variant-numeric:tabular-nums;white-space:nowrap}.token-cell::before{content:'';display:inline-block;width:5px;height:5px;margin-right:6px;border-radius:50%;background:currentColor;opacity:.45;vertical-align:middle}.result-hit{color:#5b9e6e;font-weight:600}.result-forbidden{color:#ef4444;font-weight:600}.result-timeout{color:#f59e0b;font-weight:600}.result-miss{color:#94a3b8}.report-empty{padding:24px 8px!important;color:#94a3b8;font-size:13px}#report-content .report-table thead th{position:sticky;top:0;z-index:2;background:#16305a;box-shadow:inset 0 -1px 0 rgba(255,255,255,.12)}.coord-cell{font-family:'Courier New',monospace;font-size:11px;color:#94a3b8;max-width:150px;white-space:normal;line-height:1.5}.elem-cell{font-family:'Courier New',monospace;font-size:11px;color:#f59e0b}.score-positive{color:#5b9e6e;font-weight:700}.score-negative{color:#ef4444;font-weight:700}@media (min-width:1024px){.main-container{display:flex!important;flex-direction:row!important;padding:80px 20px 20px;gap:14px;height:calc(100vh - var(--bottom-bar-height));height:calc(100dvh - var(--bottom-bar-height));min-height:calc(100vh - var(--bottom-bar-height));min-height:calc(100dvh - var(--bottom-bar-height));box-sizing:border-box}.canvas-section{flex:1 1 auto;min-width:0;min-height:0;height:100%;padding:12px}.canvas-section #game-canvas{border-radius:14px}}@media (min-width:768px) and (orientation:portrait){.main-container{flex-direction:column!important}.canvas-section{flex:1 1 auto;min-height:0;height:auto}}@media (min-width:768px) and (max-width:1023px){.main-container{display:flex!important;flex-direction:row!important;padding:70px 15px 15px;gap:15px;height:calc(100vh - 120px);height:calc(100dvh - 120px)}.canvas-section{flex:1 1 auto;min-width:0;height:auto;padding:15px}.header{padding:0 20px}.game-title{font-size:22px}.campaign-difficulty-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.campaign-level-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (min-width:768px) and (max-width:1023px) and (orientation:portrait){.main-container{display:flex!important;flex-direction:column!important;padding:70px 16px 16px;gap:10px;height:calc(100dvh - 70px);min-height:calc(100dvh - 70px);max-height:calc(100dvh - 70px);overflow-y:auto;-webkit-overflow-scrolling:touch}.canvas-section{flex:1 1 0;width:100%;height:auto;min-height:0;max-height:none;padding:12px}.game-title{font-size:18px}.header{padding:0 12px;height:55px}.score-display{font-size:13px;gap:8px}.score-display .score{font-size:16px}.round-info{font-size:12px}.round-info .current{font-size:16px}.elements-section{display:none!important}.inline-elements-card{display:block!important}.inline-elements-body .element-btn{padding:6px 10px;font-size:12px;min-height:30px}.expression-display .expression-element{padding:3px 6px;font-size:14px;border-radius:6px}}@media (max-width:767px){.header{height:55px;padding:0 10px}.game-title{font-size:16px}.canvas-message{max-width:55%}.canvas-message .message{font-size:12px;line-height:1.4;text-shadow:0 1px 1px rgba(0,0,0,.9)}#start-modal .modal-content{width:100vw;height:100vh;height:100dvh;max-width:100vw;padding:18px 20px 16px;display:flex;flex-direction:column;justify-content:flex-start;box-sizing:border-box;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}#start-modal .main-page{position:relative;padding-top:8px}#start-modal .main-page .main-back-btn{top:8px;left:8px}.start-settings-layout{grid-template-columns:1fr;gap:14px}#start-modal .start-settings-layout{margin-top:8px}#start-modal .start-left-column{gap:14px}#start-modal .start-right-column{gap:12px}#start-modal .start-modes-right,.start-selectors-left{width:100%}#start-modal .mode-btn{font-size:26px;padding:20px 16px;border-radius:26px}#start-modal .start-selectors-left .stepper-value{font-size:17px;min-height:60px}#start-modal .start-selectors-left .stepper-arrow{width:40px;height:40px;font-size:28px}#start-modal small{font-size:12px}.campaign-difficulty-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.campaign-level-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.score-display{font-size:12px;gap:8px}.score-display .player{display:none}.score-display .score{font-size:16px}.round-info{font-size:11px}.main-container{display:flex!important;flex-direction:column!important;padding:65px 10px 16px;gap:8px;height:calc(100dvh - 65px);min-height:calc(100dvh - 65px);max-height:calc(100dvh - 65px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.canvas-section{flex:1 1 0;min-height:0;width:100%;height:auto;padding:8px}.panel-card{padding:12px 14px}.panel-card h3{font-size:11px;margin-bottom:6px;letter-spacing:1.5px}.timer-pie{width:50px;height:50px}.timer-pie-value{width:38px;height:38px;font-size:17px}.player-value{font-size:14px}.canvas-corner-bc{bottom:10px;padding:5px 12px;max-width:67.5%}.canvas-corner-bc .phase-hint-text{font-size:12px}.canvas-fab-btn{bottom:14px;width:40.5px;height:40.5px;font-size:19.5px}.canvas-fab-btn.confirm-fab{right:62px}.canvas-fab-btn.emoji-fab{right:110px}.canvas-fab-btn.chat-fab{right:158px}.canvas-fab-btn.unlock-fab{right:110px}.campaign-draw-delay-pill{bottom:62px}.phase-hint{font-size:12px}.button-group{display:flex;gap:8px}.button-group .btn{flex:1;padding:10px 12px;font-size:13px}.elements-section{display:none!important}.inline-elements-card{display:block!important}.inline-elements-body .element-btn{padding:6px 10px;font-size:12px;min-height:30px}.inline-elements-tab{padding:5px 10px;font-size:11px}.expression-display .expression-element{padding:3px 6px;font-size:14px;border-radius:6px}.inline-elements-body{max-height:24dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.exit-confirm-popover{position:fixed;bottom:80px;right:8px;left:auto;min-width:200px}.modal-content{max-width:95vw;max-height:90vh;max-height:90dvh;overflow-y:auto!important;-webkit-overflow-scrolling:touch;padding:24px 18px;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px))}#bgm-modal .modal-content,#campaign-modal .modal-content,#campaign-victory-modal .modal-content,#game-over-modal .modal-content,#mode-config-modal .modal-content,#report-modal .modal-content{max-height:85vh;max-height:85dvh;overflow-y:auto!important;-webkit-overflow-scrolling:touch}.about-us-link{position:relative;left:auto;bottom:auto;display:block;text-align:center;margin-top:12px}}@media (max-width:400px){.header{padding:0 5px}.game-title{font-size:14px}.score-display{font-size:11px;gap:5px}.score-display .score{font-size:14px}.round-info{display:flex;gap:3px;font-size:9px;white-space:nowrap}.round-info .current{font-size:12px}.main-container{padding:60px 5px 16px;overflow-y:auto;-webkit-overflow-scrolling:touch}.canvas-section{max-height:none}.panel-card{padding:10px 12px}.timer-pie{width:44px;height:44px}.timer-pie-value{width:34px;height:34px;font-size:15px}.phase-hint{font-size:11px}.canvas-corner-bc{bottom:8px;padding:4px 10px}.canvas-corner-bc .phase-hint-text{font-size:11px}.elements-section{display:none!important}.inline-elements-card{display:block!important}.inline-elements-tab{padding:5px 10px;font-size:11px}.inline-elements-body .element-btn{padding:6px 10px;font-size:12px;min-height:30px}.button-group .btn{padding:8px 10px;font-size:11px}#start-modal .modal-content{padding:14px 14px 12px}#start-modal .start-settings-layout{gap:10px}#start-modal .mode-btn{font-size:22px;padding:16px 14px;border-radius:20px}#start-modal .start-selectors-left .stepper-value{font-size:14px;min-height:50px}#start-modal .start-selectors-left .stepper-arrow{width:34px;height:34px;font-size:24px}}body.device-mobile{-webkit-tap-highlight-color:transparent;touch-action:manipulation}@media (max-width:1023px){.expression-display{max-height:100px}#campaign-modal .modal-content{max-height:90vh;max-height:90dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:24px 16px}.campaign-difficulty-grid{gap:6px}.campaign-level-grid{gap:5px}.campaign-level-cell{height:58px;border-radius:12px}.campaign-cell-number{font-size:13px}.summa-root{--summa-size:min(184px, 40vh);right:4px;width:32px;height:140px}.summa-hitbox{width:32px;height:140px}.summa-message{font-size:12px;padding:10px 14px;width:7em;max-width:7em}.summa-dialog-content{max-width:92vw;padding:24px 18px;border-radius:18px}.summa-dialog-title{font-size:20px!important}.summa-dialog-message{font-size:13px!important;padding:12px 14px}.summa-dialog-options{grid-template-columns:repeat(2,1fr);gap:8px}.summa-dialog-option-btn{font-size:14px!important;padding:12px 14px!important;min-height:52px}.summa-dialog-footer-actions{flex-direction:column;gap:8px}.summa-dialog-exit-btn,.summa-dialog-skip-btn{width:100%;min-height:48px;min-width:unset;padding:0 18px!important}#start-modal .modal-content{overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}#bgm-modal .modal-content{max-width:88vw}.campaign-victory-content{min-width:unset;width:100%}.campaign-victory-actions{flex-wrap:wrap;gap:8px}.icon-btn{min-width:100px;padding:12px 14px;font-size:13px}#game-over-modal .modal-content{max-width:90vw}.final-scores{flex-direction:column;gap:10px}.report-modal-content{max-width:95vw!important;max-height:85vh!important;max-height:85dvh!important}.report-table{font-size:10px;min-width:660px}#report-content{overflow-x:auto;-webkit-overflow-scrolling:touch}.report-table td,.report-table th{padding:5px 4px}.expr-cell{width:150px;max-width:150px}.expr-math{font-size:11px}.report-stat{min-width:78px;padding:8px 10px}.report-stat-value{font-size:15px}}@media (max-height:800px) and (orientation:landscape){.main-container{flex-direction:row!important;padding:60px 12px 0;height:calc(100vh - var(--landscape-bottom-bar-max) - var(--landscape-header-height));height:calc(100dvh - var(--landscape-bottom-bar-max) - var(--landscape-header-height));overflow-x:hidden;overflow-y:scroll;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:rgba(148,163,184,0.55) rgba(15,23,42,0.2)}.canvas-section{flex:1 1 auto;min-width:0;min-height:0;height:100%}.elements-section{height:var(--landscape-bottom-bar-max);max-height:var(--landscape-bottom-bar-max);padding:var(--bottom-bar-padding-y) 14px env(safe-area-inset-bottom,var(--bottom-bar-padding-y));gap:14px;overflow-x:auto;overflow-y:auto}}@media (min-width:1024px) and (max-height:800px) and (orientation:landscape){.main-container{padding:70px 20px 0;height:calc(100vh - var(--landscape-bottom-bar-max) - 70px);height:calc(100dvh - var(--landscape-bottom-bar-max) - 70px)}}::-webkit-scrollbar{-webkit-appearance:none;width:8px;height:8px}::-webkit-scrollbar-corner{background:0 0}::-webkit-scrollbar-track{background:rgba(255,255,255,.05);border-radius:6px}::-webkit-scrollbar-track:vertical{background:rgba(255,255,255,.08)}::-webkit-scrollbar-thumb{background:rgba(255,255,255,.2);border-radius:6px;min-height:30px}::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.35)}::-webkit-scrollbar-thumb:active{background:rgba(255,255,255,.45)}@keyframes fadeIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.panel-card{animation:fadeIn .3s ease-out}.element-btn[data-locked=true]{position:relative}.element-btn[data-locked=true]::after{content:'';position:absolute;top:-4px;right:-4px;width:10px;height:10px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f59e0b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='11' width='14' height='10' rx='2'/%3E%3Cpath d='M8 11V7a4 4 0 0 1 8 0v4'/%3E%3C/svg%3E") center/contain no-repeat}.element-btn.protected{background:rgba(34,197,94,.2);border-color:rgba(34,197,94,.5);position:relative}.element-btn.protected::after{content:'';position:absolute;top:-4px;right:-4px;width:10px;height:10px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2l8 4v6c0 5-3.5 8-8 10-4.5-2-8-5-8-10V6z'/%3E%3C/svg%3E") center/contain no-repeat;filter:grayscale(100%) brightness(1.5)}.element-btn.protected:hover{background:rgba(34,197,94,.3);box-shadow:0 0 10px rgba(34,197,94,.3)}#summa-train-dialog::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.4;background-image:repeating-linear-gradient(0deg,transparent,transparent 29px,rgba(59,130,246,.15) 29px,rgba(59,130,246,.15) 30px),repeating-linear-gradient(90deg,transparent,transparent 29px,rgba(59,130,246,.15) 29px,rgba(59,130,246,.15) 30px),repeating-linear-gradient(0deg,transparent,transparent 149px,rgba(99,102,241,.22) 149px,rgba(99,102,241,.22) 150px),repeating-linear-gradient(90deg,transparent,transparent 149px,rgba(99,102,241,.22) 149px,rgba(99,102,241,.22) 150px);background-size:30px 30px,30px 30px,150px 150px,150px 150px;animation:crosshairBreathe 6s ease-in-out infinite alternate}.summa-dialog-content{max-width:480px;padding:35px 30px;background:rgba(7,13,26,.92);border:1px solid rgba(59,130,246,.15);border-radius:24px;box-shadow:0 0 28px rgba(0,0,0,.65),0 16px 48px rgba(0,0,0,.75);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)}@keyframes summaIconPulse{0%,100%{transform:scale(1);opacity:.9}50%{transform:scale(1.1);opacity:1}}.summa-dialog-title{font-size:26px!important;margin-bottom:15px!important;background:linear-gradient(135deg,#a0f1d8,#848bcf)!important;-webkit-background-clip:text!important;-webkit-text-fill-color:transparent!important;background-clip:text!important}.summa-dialog-message{color:#d1d5db!important;font-size:15px!important;line-height:1.7!important;margin-bottom:25px!important;padding:15px 18px;background:rgba(255,255,255,.04);border-radius:10px;border:1px solid rgba(255,255,255,.08)}.summa-dialog-options{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.summa-dialog-option-btn{padding:14px 18px;border:2px solid rgba(255,255,255,.15);border-radius:10px;background:rgba(255,255,255,.05);color:#e5e7eb;font-size:15px;font-weight:600;cursor:pointer;transition:all .25s ease;font-family:'Courier New',monospace}.summa-dialog-option-btn:hover{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.25);color:#fff;transform:translateY(-2px);box-shadow:0 4px 15px rgba(0,0,0,.25)}.summa-dialog-option-btn span{display:block;font-size:11px;color:#9ca3af;margin-top:4px;font-weight:400}.summa-dialog-skip-btn{padding:14px 20px;border:2px solid rgba(167,139,250,.4);border-radius:12px;background:rgba(167,139,250,.1);color:#c4b5fd;font-size:15px;cursor:pointer;transition:all .25s ease;font-weight:600;font-family:'Courier New',monospace;flex:1}.summa-dialog-skip-btn:hover{background:rgba(167,139,250,.25);border-color:rgba(167,139,250,.6);color:#e5e7eb;box-shadow:0 0 20px rgba(167,139,250,.2);transform:translateY(-2px)}.summa-dialog-secondary-buttons{display:flex;gap:12px;margin-top:10px;grid-column:1/-1}.summa-dialog-exit-btn{padding:14px 24px;border:2px solid rgba(248,113,113,.4);border-radius:12px;background:rgba(248,113,113,.1);color:#fca5a5;font-size:15px;font-weight:600;cursor:pointer;transition:all .25s ease;margin-top:10px}.summa-dialog-exit-btn:hover{background:rgba(248,113,113,.25);border-color:rgba(248,113,113,.6);color:#fef2f2;box-shadow:0 0 20px rgba(248,113,113,.2);transform:translateY(-2px)}.summa-dialog-input-area{margin-top:15px}.summa-dialog-input{width:100%;padding:14px 16px;border:2px solid rgba(167,139,250,.3);border-radius:10px;background:rgba(2,6,23,.8);color:#e5e7eb;font-size:16px;font-family:'Courier New',monospace;text-align:center;outline:0;transition:all .25s ease}.summa-dialog-input:focus{border-color:#a78bfa;box-shadow:0 0 0 3px rgba(167,139,250,.2)}.summa-dialog-input::placeholder{color:#475569}.summa-dialog-input-buttons{display:flex;gap:10px;margin-top:12px}.summa-dialog-input-buttons .btn{flex:1;padding:12px}@media (max-width:480px){.campaign-difficulty-grid{grid-template-columns:1fr!important;gap:8px!important}.campaign-difficulty-grid .btn{aspect-ratio:auto;min-height:44px;height:auto;padding:8px 12px;font-size:13px;line-height:1.3;white-space:normal;word-break:keep-all}}.function-panel-btn{flex:none!important;display:inline-flex;align-items:center;font-size:24px;padding:12px 24px;height:64px;border-radius:999px;cursor:pointer;user-select:none;text-transform:none;letter-spacing:.5px}.function-panel-btn:active{transform:scale(.98)}.function-settings-modal-content{max-width:480px;width:92%;max-height:82vh;overflow-y:auto}.function-settings-modal-content h2{text-align:center;margin-bottom:4px}.function-settings-list{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.function-setting-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border-radius:10px;background:rgba(255,255,255,.05);border:1px solid rgba(148,163,184,.22);color:#cbd5e1;cursor:pointer;text-align:left;font-family:inherit;transition:all .2s}.function-setting-item:hover:not(.locked){background:rgba(59,130,246,.14);border-color:rgba(59,130,246,.45)}.function-setting-item.active{background:rgba(34,197,94,.14);border-color:#22c55e}.function-setting-item.active .fs-name,.function-setting-item.active .fs-state{color:#4ade80}.function-setting-item .fs-text{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.function-setting-item .fs-name{font-size:14px;font-weight:600;color:#e2e8f0}.function-setting-item .fs-desc{font-size:11px;color:#94a3b8}.function-setting-item .fs-state{flex-shrink:0;font-size:12px;color:#64748b}.function-setting-item.locked{opacity:.6;cursor:not-allowed;background:rgba(255,255,255,.03)}.function-setting-item.locked .fs-state{color:#f59e0b}.function-setting-item.derivative-mode-item{grid-column:1/-1;margin-top:10px}.function-setting-item.derivative-mode-item.active{background:rgba(59,130,246,.14);border-color:#3b82f6}.function-setting-item.derivative-mode-item.active .fs-name,.function-setting-item.derivative-mode-item.active .fs-state{color:#60a5fa}.element-btn.inverse-trig-locked{cursor:pointer}.element-btn.inverse-trig-locked:hover{background:rgba(107,114,128,.35);border-color:rgba(107,114,128,.55);transform:none;box-shadow:none}#inverse-trig-modal .modal-content{max-width:460px}.inverse-trig-modal-body{color:#94a3b8;line-height:1.8;font-size:15px;margin-bottom:22px;text-align:left}#campaign-diff-custom{background:#000!important;color:#fff!important;border:1px solid #fff!important}#campaign-diff-custom:hover{background:#1c1c1c!important;border-color:#fff!important}#campaign-reset-btn.campaign-reset-circle{position:absolute;top:14px;right:14px;width:40px;height:40px;padding:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(15,23,42,.75);border:1px solid rgba(255,255,255,.25);color:#fff;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background .2s,border-color .2s,transform .2s;z-index:5}#campaign-reset-btn.campaign-reset-circle:hover{background:rgba(239,68,68,.28);border-color:rgba(239,68,68,.65);transform:rotate(-30deg)}#campaign-reset-btn.campaign-reset-circle svg{display:block}.campaign-back-circle{position:absolute;top:14px;left:14px;width:40px;height:40px;padding:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(15,23,42,.75);border:1px solid rgba(255,255,255,.25);color:#fff;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background .2s,border-color .2s,transform .2s;z-index:5}.campaign-back-circle:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.6);transform:rotate(30deg)}.campaign-back-circle svg{display:block}#race-reset-btn.race-reset-circle{position:absolute;top:14px;right:14px;width:40px;height:40px;padding:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(15,23,42,.75);border:1px solid rgba(255,255,255,.25);color:#fff;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background .2s,border-color .2s,transform .2s;z-index:5}#race-reset-btn.race-reset-circle:hover{background:rgba(239,68,68,.28);border-color:rgba(239,68,68,.65);transform:rotate(-30deg)}#race-reset-btn.race-reset-circle svg{display:block}#race-close-btn.race-back-circle{position:absolute;top:14px;left:14px;width:40px;height:40px;padding:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(15,23,42,.75);border:1px solid rgba(255,255,255,.25);color:#fff;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background .2s,border-color .2s,transform .2s;z-index:5}#race-close-btn.race-back-circle:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.6);transform:rotate(30deg)}#race-close-btn.race-back-circle svg{display:block}button.btn-back-circle{width:40px;height:40px;min-height:40px;padding:0;border-radius:50%;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.1);color:#f1f5f9;display:inline-flex;align-items:center;justify-content:center;flex:none;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background .2s,border-color .2s,transform .2s}button.btn-back-circle svg{display:block}button.btn-back-circle:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.6);transform:rotate(30deg)}button.btn-back-circle.round-back-abs{position:absolute;top:14px;left:14px;margin:0}#race-victory-level-select-btn.btn-back-circle{width:40px;height:40px;min-height:40px;justify-self:center;align-self:center}#race-battle-back-btn.btn-back-circle{width:40px;height:40px;min-height:40px;align-self:center}.float-keypad-fab-preview{position:fixed;z-index:2147480004;max-width:min(52vw,320px);padding:6px 12px;border-radius:14px;background:rgba(15,23,42,.86);border:1px solid rgba(255,255,255,.18);color:#e2e8f0;font-size:13px;line-height:1.35;font-family:'Courier New',Consolas,monospace!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 4px 14px rgba(0,0,0,.35);pointer-events:none;user-select:none;-webkit-user-select:none}#campaign-import-row .btn,#campaign-import-slot .btn{color:#fff!important}.race-custom-content{max-width:460px}.race-custom-field{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0}.race-custom-field label{color:#e5e7eb;font-size:14px;white-space:nowrap}.race-custom-field input[type=number]{width:140px;padding:8px 10px;border-radius:10px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.06);color:#f8fafc;font-size:14px;text-align:right}.race-custom-field input[type=number]:focus{outline:0;border-color:#22c55e;box-shadow:0 0 0 2px rgba(34,197,94,.25)}.race-custom-arc{margin:12px 0 4px}.race-custom-arc label{display:flex;align-items:center;gap:8px;color:#e5e7eb;font-size:13px;cursor:pointer}.race-custom-arc input{width:16px;height:16px;accent-color:#22c55e}.race-custom-arc input:disabled{opacity:.4;cursor:not-allowed}.race-custom-hint{min-height:20px;margin-top:8px;font-size:13px;line-height:1.4}.race-custom-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}.race-custom-actions .btn:disabled{opacity:.5;cursor:not-allowed}.race-custom-field .stepper-selector{flex:1;margin:0}.race-custom-field .stepper-arrow{flex:0 0 auto}.race-custom-field .stepper-selector .stepper-value-input{flex:1;width:auto;min-height:46px;margin:0;padding:10px 14px;border-radius:14px;border:1px solid rgba(255,255,255,.1);background:rgba(2,6,23,.8);color:#b0bdd0;font-size:15px;font-weight:600;text-align:center;-moz-appearance:textfield}.race-custom-field .stepper-selector .stepper-value-input::-webkit-inner-spin-button,.race-custom-field .stepper-selector .stepper-value-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.race-custom-field .stepper-selector .stepper-value-input:focus{outline:0;border-color:#22c55e;box-shadow:0 0 0 2px rgba(34,197,94,.25);color:#e2e8f0}.race-custom-content .stepper-value{background:rgba(2,6,23,.8)}.campaign-levels-head{margin-bottom:10px;text-align:left;padding-left:4px}.leaderboard-open-icon{display:inline-block;width:40px;height:40px;object-fit:contain;filter:drop-shadow(0 2px 3px rgba(0,0,0,.35))}.leaderboard-modal-content{max-width:680px;width:95%}.leaderboard-tabs{display:flex;gap:8px;margin-bottom:14px}.leaderboard-tab{flex:1;padding:8px 10px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:#cbd5e1;border-radius:8px;font-size:14px;font-weight:700;cursor:pointer;transition:all .15s}.leaderboard-tab:hover{color:#fff;background:rgba(255,255,255,.12)}.leaderboard-tab.active{color:#fff;background:rgba(34,197,94,.22);border-color:rgba(34,197,94,.6)}.leaderboard-me{display:flex;align-items:center;gap:8px;margin-bottom:12px}.leaderboard-me-label{font-size:13px;color:#94a3b8;white-space:nowrap}#leaderboard-username-input{flex:1;min-width:0;padding:8px 12px;border:1px solid rgba(255,255,255,.16);border-radius:10px;background:rgba(255,255,255,.06);color:#f8fafc;font-size:14px;font-family:inherit;line-height:1.4;outline:0;cursor:default;text-overflow:ellipsis;box-sizing:border-box;-webkit-appearance:none;appearance:none}#leaderboard-username-input:focus,#leaderboard-username-input:read-only:focus{border-color:rgba(255,255,255,.16);box-shadow:none}#leaderboard-username-input::placeholder{color:#64748b}#leaderboard-username-input::-moz-placeholder{color:#64748b}.leaderboard-list{max-height:46vh;max-height:46dvh;overflow-y:auto;border:1px solid rgba(255,255,255,.1);border-radius:10px;background:rgba(0,0,0,.22)}.leaderboard-row{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid rgba(255,255,255,.06);font-size:14px}.leaderboard-row:last-child{border-bottom:none}.leaderboard-rank{width:30px;text-align:center;color:#94a3b8;font-weight:700;flex-shrink:0}.leaderboard-rank.top-1{color:#fbbf24;font-size:16px}.leaderboard-rank.top-2{color:#cbd5e1;font-size:15px}.leaderboard-rank.top-3{color:#f59e0b;font-size:15px}.leaderboard-name{flex:1;min-width:0;white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.35;color:#e2e8f0}.leaderboard-name em{font-style:normal;font-size:11px;color:#22c55e;margin-left:4px}.leaderboard-score{font-weight:800;color:#fff;flex-shrink:0;display:inline-flex;align-items:center;gap:6px}.leaderboard-sub{font-size:12px;color:#94a3b8;flex-shrink:0}.rb-tier-icon{display:inline-block;width:18px;height:18px;flex:0 0 auto;vertical-align:middle;object-fit:contain}.leaderboard-row.me{background:rgba(34,197,94,.14)}.leaderboard-report-btn{flex-shrink:0;margin-left:6px;padding:2px 8px;font-size:11px;line-height:1.6;border:1px solid rgba(239,68,68,.5);border-radius:6px;background:rgba(239,68,68,.12);color:#f87171;cursor:pointer}.leaderboard-report-btn:hover{background:rgba(239,68,68,.25)}.leaderboard-empty{padding:30px 12px;text-align:center;color:#94a3b8}.leaderboard-myrank{margin-top:10px;text-align:center;color:#22c55e;font-size:14px;font-weight:700;min-height:20px}.leaderboard-tip{font-size:12px;color:#64748b;text-align:center;margin-top:8px;line-height:1.5}.leaderboard-login-tip{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:12px;padding:8px 12px;font-size:13px;color:#fbbf24;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.25);border-radius:10px}.leaderboard-login-tip-btn{white-space:nowrap;color:#fbbf24;border-color:rgba(251,191,36,.5)}.leaderboard-race-selector{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding:8px 12px;background:rgba(99,102,241,.08);border:1px solid rgba(99,102,241,.25);border-radius:10px;font-size:14px;color:#cbd5e1}.leaderboard-race-selector span{font-weight:600;white-space:nowrap}.race-level-select{flex:1;position:relative;text-align:left}.race-level-trigger{padding:6px 10px;border-radius:8px;border:1px solid #475569;background:#1e293b;color:#e2e8f0;font-size:14px;cursor:pointer;user-select:none;outline:0}.race-level-trigger::after{content:'';width:10px;height:10px;float:right;margin-left:8px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2394a3b8'%3E%3Cpath d='M12 17l-6-8h12z'/%3E%3C/svg%3E") center/contain no-repeat}.race-level-select.open .race-level-trigger,.race-level-trigger:focus{border-color:#6366f1}.race-level-dropdown{position:absolute;left:0;right:0;top:100%;max-height:200px;overflow-y:auto;background:#1e293b;border:1px solid #475569;border-radius:8px;margin-top:4px;z-index:1000;display:none;box-shadow:0 10px 25px rgba(0,0,0,.4)}.race-level-select.open .race-level-dropdown{display:block}.race-level-select.open-up .race-level-dropdown{top:auto;bottom:100%;margin-top:0;margin-bottom:4px}.race-level-group{padding:4px 10px;font-size:12px;color:#94a3b8;font-weight:600;background:#0f172a;position:sticky;top:0}.race-level-option{padding:6px 10px;cursor:pointer;color:#e2e8f0;font-size:14px}.race-level-option.active,.race-level-option:hover{background:#334155}#nickname-modal .modal-content{max-width:420px}.nickname-prompt-desc{color:#94a3b8;font-size:14px;line-height:1.6;margin-bottom:14px;text-align:left}.nickname-prompt-input{width:100%;padding:8px 12px;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:rgba(0,0,0,.35);color:#fff;font-size:15px;outline:0;box-sizing:border-box}.nickname-prompt-input:focus{border-color:rgba(59,130,246,.7)}.nickname-prompt-actions{display:flex;gap:10px;margin-top:20px}.nickname-prompt-actions .btn{flex:1}#p2p-vs-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center}.p2p-vs-backdrop{position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(15,23,42,.92) 0,rgba(2,6,23,.97) 100%)}.p2p-vs-core{position:relative;text-align:center;z-index:1}.p2p-vs-players{display:flex;align-items:center;justify-content:center;gap:24px;margin-bottom:40px}.p2p-vs-player{min-width:150px;padding:14px 20px;border-radius:14px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12)}.p2p-vs-nickname{font-size:22px;font-weight:800;color:#fff;max-width:240px;white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.25;margin-bottom:6px}.p2p-vs-elo{font-size:15px;font-weight:700;color:#fbbf24}.p2p-vs-vs{font-size:44px;font-weight:900;font-style:italic;color:#f43f5e;text-shadow:0 0 24px rgba(244,63,94,.7)}.p2p-vs-countdown{display:flex;flex-direction:column;align-items:center;gap:8px}.p2p-vs-number{font-size:96px;font-weight:900;line-height:1;color:#22c55e;text-shadow:0 0 32px rgba(34,197,94,.8)}.p2p-vs-number.pop{animation:p2pVsPop .6s ease-out}@keyframes p2pVsPop{0%{transform:scale(.4);opacity:0}35%{transform:scale(1.4);opacity:1}70%{transform:scale(.95)}100%{transform:scale(1);opacity:1}}.p2p-vs-sub{font-size:16px;font-weight:700;color:#94a3b8;letter-spacing:4px}#p2p-warning-modal .modal-content{max-width:400px}.p2p-warning-text{color:#fbbf24;font-size:15px;font-weight:700;line-height:1.7;text-align:center}#p2p-mode-select-modal .modal-content{max-width:460px}.p2p-mode-select-desc{color:#94a3b8;font-size:14px;line-height:1.6;text-align:center;margin-bottom:16px}.p2p-mode-select-btns{display:flex;flex-direction:column;gap:10px}.p2p-mode-select-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:16px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);cursor:pointer;transition:all .15s}.p2p-mode-select-btn:hover{background:rgba(255,255,255,.12);transform:translateY(-1px)}.p2p-mode-select-title{font-size:18px;font-weight:800}.p2p-mode-select-sub{font-size:12px;font-weight:600;opacity:.85}.p2p-mode-select-btn.ranked{color:#fbbf24;border-color:rgba(245,158,11,.55);background:rgba(245,158,11,.16)}.p2p-mode-select-btn.ranked:hover{background:rgba(245,158,11,.28);box-shadow:0 0 18px rgba(245,158,11,.3)}.p2p-mode-select-btn.casual{color:#60a5fa;border-color:rgba(59,130,246,.5);background:rgba(59,130,246,.14)}.p2p-mode-select-btn.casual:hover{background:rgba(59,130,246,.26);box-shadow:0 0 18px rgba(59,130,246,.28)}.p2p-mode-select-back{margin-top:14px;padding:8px 18px;border-radius:8px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.04);color:#cbd5e1;font-size:14px;cursor:pointer;transition:all .15s}.p2p-mode-select-back:hover{background:rgba(255,255,255,.1);color:#f1f5f9}.p2p-reconnect-text{color:#94a3b8;font-size:14px;line-height:1.6;text-align:center}.p2p-reconnect-countdown{font-size:64px;font-weight:900;line-height:1.2;color:#fbbf24;margin:8px 0}.p2p-reconnect-tip{color:#f59e0b;font-size:13px;line-height:1.6;text-align:center}.p2p-exit-confirm-text{color:#fbbf24;font-size:14px;font-weight:700;line-height:1.7;text-align:center}.btn-danger{background:rgba(220,38,38,.85)!important;border-color:rgba(239,68,68,.8)!important;color:#fff!important}.btn-danger:hover{background:#dc2626!important}.float-keypad-fab[hidden],.float-keypad[hidden]{display:none!important}.float-keypad{position:fixed;left:50%;top:38%;transform:translate(-50%,-50%);z-index:5000;width:min(calc(220px * var(--kp-w-scale)),92vw);display:flex;flex-direction:column;--kp-w-scale:1;--kp-h-scale:1;background:rgba(0,0,0,.22);border:1px solid rgba(255,255,255,.08);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.15),inset 0 1px 0 rgba(255,255,255,.08);color:#e5e7eb;user-select:none;-webkit-user-select:none}.float-keypad.kp-sizing{transition:width .28s ease,height .28s ease,min-height .28s ease,left .28s ease,top .28s ease}.float-keypad.keypad-bg-transparent{background:0 0;backdrop-filter:none;-webkit-backdrop-filter:none}.float-keypad.keypad-bg-blur{background:0 0;backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}.float-keypad-header{position:relative;display:flex;align-items:center;justify-content:space-between;padding:calc(5px * var(--kp-w-scale)) calc(8px * var(--kp-w-scale));cursor:grab;border-bottom:1px solid rgba(255,255,255,.1);touch-action:none;flex:0 0 auto;transition:background .2s ease}.float-keypad-header:hover{background:rgba(255,255,255,.06)}.float-keypad-header:active{cursor:grabbing}.float-keypad-header::before{content:'≡';position:absolute;left:calc(4px * var(--kp-w-scale));top:50%;transform:translateY(-50%);font-size:calc(14px * var(--kp-w-scale));line-height:1;color:#64748b;letter-spacing:-2px;opacity:.75;pointer-events:none;transition:opacity .2s ease}.float-keypad-header:hover::before{opacity:1}.float-keypad-title{font-size:calc(13px * var(--kp-w-scale));color:#94a3b8;letter-spacing:1px;pointer-events:none;display:inline-flex;align-items:baseline;gap:6px;padding-left:calc(16px * var(--kp-w-scale));flex:0 1 auto;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.float-keypad-drag-hint{font-size:calc(10px * var(--kp-w-scale));color:#94a3b8;letter-spacing:.5px}.float-keypad-actions{display:flex;align-items:center;gap:calc(6px * var(--kp-w-scale))}.float-keypad-mode-btn{flex:0 0 auto;padding:0 calc(6px * var(--kp-w-scale));height:calc(22px * var(--kp-h-scale));min-width:calc(34px * var(--kp-w-scale));border-radius:calc(8px * var(--kp-w-scale));border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.05);color:#cbd5e1;font-size:calc(11px * var(--kp-w-scale));cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.float-keypad-mode-btn:hover{background:rgba(59,130,246,.3);border-color:rgba(96,165,250,.6);color:#fff}.float-keypad-mode-btn:active{transform:scale(.94)}.float-keypad-size-btn{flex:0 0 auto;width:calc(24px * var(--kp-h-scale));height:calc(24px * var(--kp-h-scale));padding:0;border-radius:50%;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.08);color:#cbd5e1;font-size:calc(16px * var(--kp-w-scale));line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.15);transition:background .15s,border-color .15s,color .15s,transform .15s}.float-keypad-size-btn:hover{background:rgba(59,130,246,.3);border-color:rgba(96,165,250,.6);color:#fff}.float-keypad-size-btn:active{transform:scale(.92)}.float-keypad-size-btn[hidden]{display:none!important}.float-keypad-btn{width:calc(26px * var(--kp-h-scale));height:calc(26px * var(--kp-h-scale));padding:0;border-radius:50%;border:1px solid rgba(255,255,255,.08);background:0 0;color:#cbd5e1;font-size:calc(20px * var(--kp-w-scale));line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.15)}#float-keypad-collapse{color:#fca5a5;border-color:rgba(248,113,113,.35);background:rgba(239,68,68,.12)}#float-keypad-collapse:hover{background:rgba(239,68,68,.25);border-color:rgba(248,113,113,.6)}.float-keypad-fx-btn{flex:1 1 auto;height:calc(36px * var(--kp-h-scale));padding:0;border-radius:calc(10px * var(--kp-w-scale));border:1px solid rgba(96,165,250,.5);background:rgba(59,130,246,.22);color:#dbeafe;font-size:calc(20px * var(--kp-w-scale));font-weight:700;letter-spacing:1px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 4px 12px rgba(59,130,246,.22);transition:all .2s}.float-keypad-fx-btn:hover{transform:translateY(-1px);background:rgba(59,130,246,.3);box-shadow:0 6px 18px rgba(59,130,246,.4)}.float-keypad-fx-btn:active{transform:scale(.96)}.float-keypad-fx-btn.active{background:rgba(37,99,235,.38);border-color:rgba(96,165,250,.8);color:#fff}.float-keypad-btn:hover{background:rgba(59,130,246,.25);border-color:rgba(59,130,246,.5);color:#fff}.float-keypad-display{min-height:calc(28px * var(--kp-w-scale));max-height:calc(140px * var(--kp-w-scale));overflow-y:auto;margin:calc(5px * var(--kp-w-scale)) calc(8px * var(--kp-w-scale)) 0;padding:calc(4px * var(--kp-w-scale)) calc(8px * var(--kp-w-scale));border-radius:calc(8px * var(--kp-w-scale));background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);font-family:'Courier New',Consolas,monospace;font-size:calc(14px * var(--kp-w-scale));color:#e2e8f0;display:flex;align-items:center;gap:calc(4px * var(--kp-w-scale));flex-wrap:wrap;flex:0 0 auto}.float-keypad .expression-element{font-size:calc(16px * var(--kp-w-scale));padding:calc(4px * var(--kp-w-scale)) calc(8px * var(--kp-w-scale));border-radius:calc(8px * var(--kp-w-scale))}.float-keypad-math{position:relative;margin:calc(4px * var(--kp-w-scale)) calc(8px * var(--kp-w-scale)) 0;padding:calc(3px * var(--kp-w-scale)) calc(8px * var(--kp-w-scale));border-radius:calc(8px * var(--kp-w-scale));background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);min-height:calc(24px * var(--kp-w-scale));max-height:calc(120px * var(--kp-w-scale));display:flex;align-items:safe center;justify-content:safe center;overflow-x:auto;overflow-y:auto;flex:0 0 auto;font-size:calc(15px * var(--kp-w-scale))}.float-keypad-math-zoom{position:absolute;top:calc(2px * var(--kp-w-scale));right:calc(2px * var(--kp-w-scale));z-index:1;padding:0;min-width:calc(28px * var(--kp-w-scale));height:calc(18px * var(--kp-w-scale));border-radius:calc(6px * var(--kp-w-scale));border:1px solid rgba(255,255,255,.08);background:0 0;color:#cbd5e1;font-size:calc(11px * var(--kp-w-scale));line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.float-keypad-math-zoom:hover{background:rgba(59,130,246,.3);border-color:rgba(96,165,250,.6);color:#fff}.float-keypad-math-zoom:active{transform:scale(.94)}.float-keypad-math-zoom[hidden]{display:none!important}.float-keypad-math:empty{display:none}.float-keypad-math .math-preview-empty{color:#64748b;font-size:calc(12px * var(--kp-w-scale))}.float-keypad-math .math-preview-raw{color:#f87171;font-size:calc(13px * var(--kp-w-scale))}.float-keypad-math .katex{font-size:calc(16px * var(--kp-w-scale))}.float-keypad-body{padding:calc(6px * var(--kp-w-scale));display:flex;flex-direction:column;gap:calc(6px * var(--kp-w-scale));flex:0 0 auto;min-height:0;overflow:visible}.float-keypad-body .element-btn,.float-keypad-grid .element-btn{padding:0;height:calc(30px * var(--kp-h-scale));font-size:calc(20px * var(--kp-w-scale));border-radius:calc(8px * var(--kp-w-scale));justify-content:center;min-width:0;gap:calc(3px * var(--kp-w-scale));background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}.float-keypad-main{display:flex;gap:calc(6px * var(--kp-w-scale));align-items:stretch}.float-keypad-grid{display:grid;grid-template-columns:repeat(5,calc(34px * var(--kp-w-scale)));justify-content:center;gap:calc(6px * var(--kp-w-scale));flex:1 1 auto;min-width:0}.float-keypad-fx-panel{display:none;grid-template-columns:repeat(3,1fr);gap:calc(3px * var(--kp-w-scale));align-content:start;flex:0 0 0;width:0;overflow:hidden}.float-keypad.fx-open .float-keypad-fx-panel{display:grid;flex:0 0 calc(134.4px * var(--kp-w-scale));width:calc(134.4px * var(--kp-w-scale))}.float-keypad.fx-open .float-keypad-fx-panel .element-btn{height:calc(30px * var(--kp-h-scale));font-size:calc(12px * var(--kp-w-scale));border-radius:calc(8px * var(--kp-w-scale));padding:0 calc(3px * var(--kp-w-scale));white-space:nowrap;justify-content:center;min-width:0;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}.float-keypad.fx-open{width:min(calc(360px * var(--kp-w-scale)),96vw)}.float-keypad.fx-open .float-keypad-grid .element-btn{height:calc(30px * var(--kp-h-scale));font-size:calc(20px * var(--kp-w-scale));border-radius:calc(8px * var(--kp-w-scale))}.float-keypad-grid .element-btn[data-action=clear]{color:#fca5a5;border-color:rgba(248,113,113,.35);background:rgba(239,68,68,.12)}.float-keypad-grid .element-btn[data-action=clear]:hover{background:rgba(239,68,68,.25);border-color:rgba(248,113,113,.6)}@media (max-width:480px),(orientation:portrait) and (max-width:767px){.float-keypad{width:min(calc(220px * var(--kp-w-scale)),88vw)}.float-keypad.fx-open{width:min(calc(330px * var(--kp-w-scale)),92vw)}.float-keypad-body .element-btn,.float-keypad-grid .element-btn{height:calc(30px * var(--kp-h-scale));font-size:calc(20px * var(--kp-w-scale));border-radius:calc(8px * var(--kp-w-scale))}.float-keypad .float-keypad-header{padding:calc(4px * var(--kp-w-scale)) calc(6px * var(--kp-w-scale))}.float-keypad-footer{padding:calc(4px * var(--kp-w-scale)) calc(6px * var(--kp-w-scale))}.float-keypad-fx-btn,.float-keypad-nav-btn,.float-keypad-submit{height:calc(34px * var(--kp-h-scale));font-size:calc(20px * var(--kp-w-scale))}.float-keypad-nav-btn{width:calc(30px * var(--kp-w-scale))}.float-keypad.fx-open .float-keypad-fx-panel{flex-basis:calc(110.4px * var(--kp-w-scale));width:calc(110.4px * var(--kp-w-scale))}.float-keypad.fx-open .float-keypad-fx-panel .element-btn{font-size:calc(11px * var(--kp-w-scale));height:calc(30px * var(--kp-h-scale))}.float-keypad.fx-open .float-keypad-grid .element-btn{font-size:calc(20px * var(--kp-w-scale));height:calc(30px * var(--kp-h-scale))}.float-keypad.fx-open .float-keypad-grid{gap:calc(4px * var(--kp-w-scale))}}.float-keypad-footer{display:flex;align-items:stretch;gap:calc(6px * var(--kp-w-scale));padding:calc(5px * var(--kp-w-scale)) calc(8px * var(--kp-w-scale));border-top:1px solid rgba(255,255,255,.08)}.float-keypad-nav{display:flex;gap:calc(6px * var(--kp-w-scale));flex:0 0 auto}.float-keypad-nav-btn{width:calc(30px * var(--kp-w-scale));height:calc(36px * var(--kp-h-scale));padding:0;border-radius:calc(10px * var(--kp-w-scale));border:1px solid rgba(255,255,255,.08);background:rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.08);color:#cbd5e1;font-size:calc(20px * var(--kp-w-scale));cursor:pointer;display:flex;align-items:center;justify-content:center}.float-keypad-nav-btn:hover{background:rgba(59,130,246,.25);border-color:rgba(59,130,246,.5);color:#fff}.float-keypad-submit{flex:1 1 auto;height:calc(36px * var(--kp-h-scale));padding:0;border-radius:calc(10px * var(--kp-w-scale));border:1px solid rgba(34,197,94,.5);background:rgba(34,197,94,.22);color:#d1fae5;font-size:calc(20px * var(--kp-w-scale));font-weight:700;letter-spacing:1px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 4px 12px rgba(34,197,94,.22);transition:all .2s}.float-keypad-submit:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(34,197,94,.45)}.float-keypad-submit:active{transform:scale(.96)}.float-keypad-submit:disabled{opacity:.5;cursor:not-allowed}.float-keypad-lock-label{font-size:calc(15px * var(--kp-w-scale));color:#e2e8f0;text-align:center;padding:calc(6px * var(--kp-w-scale));border-radius:calc(10px * var(--kp-w-scale));background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);flex:0 0 auto}.float-keypad-body .element-items{display:grid;grid-template-columns:repeat(5,1fr);gap:calc(6px * var(--kp-w-scale))}.float-keypad-body .element-category{gap:calc(6px * var(--kp-w-scale))}body.float-keypad-mode .elements-section{display:none!important}body.float-keypad-mode .inline-elements-card{display:none!important}body.float-keypad-mode #confirm-btn{display:none!important}body.float-keypad-mode #clear-btn{display:none!important}.elements-section,.inline-elements-card{display:none!important}#expression-display{display:none!important}#clear-btn{display:none!important}.float-keypad-fab{position:fixed;z-index:5000;width:52px;height:52px;padding:0;border-radius:50%;border:1px solid rgba(34,211,238,.55);background:rgba(255,255,255,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 10px 30px rgba(0,0,0,.25);color:#cffafe;font-size:22px;line-height:1;cursor:grab;display:flex;align-items:center;justify-content:center;touch-action:none}.float-keypad-fab:hover{border-color:rgba(34,211,238,.9);box-shadow:0 0 16px rgba(34,211,238,.4)}.float-keypad-fab:active{cursor:grabbing;transform:scale(.95)}@keyframes pageFadeIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}#start-modal .main-page,#start-modal .start-page{animation:pageFadeIn .32s ease-out}#start-modal .start-page{display:flex;flex-direction:column;align-items:center;gap:30px;padding-top:5vh}.start-page .start-page-title{display:block;width:min(70vw,540px);max-width:100%;height:auto}.start-page .start-page-btn{font-size:21px;padding:14px 72px;border-radius:999px;border:1px solid rgba(255,255,255,.25);background:linear-gradient(135deg,rgba(34,197,94,.92),rgba(22,163,74,.92));color:#06281a;font-weight:700;letter-spacing:6px;cursor:pointer;box-shadow:0 10px 30px rgba(34,197,94,.35);transition:all .2s}.start-page .start-page-btn:hover{transform:translateY(-2px);box-shadow:0 14px 36px rgba(34,197,94,.45)}.start-page .start-page-btn:active{transform:scale(.97)}#start-modal .start-page{position:relative}.start-page-corner{position:absolute;top:18px;display:flex;gap:10px;z-index:20}.start-page-corner-tl{left:18px}.start-page-corner-tr{right:18px}.start-corner-btn{position:relative;width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.22);background:rgba(15,23,42,.55);color:rgba(255,255,255,.85);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s ease;box-shadow:0 4px 14px rgba(0,0,0,.25)}.start-corner-btn:hover{transform:translateY(-1px) scale(1.06);background:rgba(255,255,255,.14);box-shadow:0 8px 22px rgba(0,0,0,.3)}.start-corner-btn:active{transform:scale(.95)}.new-badge{position:absolute;top:-7px;left:-9px;background:#ef4444;color:#fff;font-size:9px;font-weight:800;line-height:1;padding:2px 5px;border-radius:6px;transform:rotate(-12deg);box-shadow:0 2px 6px rgba(239,68,68,.5);letter-spacing:.02em;pointer-events:none}@media (max-width:767px),(orientation:portrait) and (max-width:1023px){.start-page-corner{top:12px;gap:8px}.start-page-corner-tl{left:12px}.start-page-corner-tr{right:12px}.start-corner-btn{width:38px;height:38px}.start-corner-btn svg{width:17px;height:17px}.new-badge{font-size:8px;top:-6px;left:-8px;padding:2px 4px}}#start-modal .main-back-btn{position:absolute;top:8px;left:8px;width:40px;height:40px;padding:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(15,23,42,.75);border:1px solid rgba(255,255,255,.25);color:#fff;cursor:pointer;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}#start-modal .main-back-btn:hover{border-color:rgba(124,219,157,.6);box-shadow:0 0 12px rgba(124,219,157,.3);transform:rotate(30deg)}#start-modal .main-back-btn svg{display:block}@media (min-width:768px){#start-modal .main-page{animation:none}#start-modal .main-back-btn{position:fixed;top:8px;left:8px;animation:none}}@media (orientation:portrait) and (max-width:1023px){#start-modal .start-page{flex:1;justify-content:center;padding-top:0}#start-modal .main-page{padding-top:56px}}#test-function-panel{display:none;flex-direction:column;box-sizing:border-box;min-height:0;min-width:0;overflow:hidden;border:1px solid rgba(255,255,255,.1);border-radius:16px;background:rgba(15,23,42,.6);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 10px 30px rgba(0,0,0,.25)}#test-function-panel.visible{display:flex}.test-fp-header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.08)}.test-fp-title{font-size:13px;font-weight:600;color:rgba(226,232,240,.95);letter-spacing:1px}.test-fp-clear-all{padding:3px 12px;font-size:12px;color:#f87171;background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.35);border-radius:8px;cursor:pointer;transition:all .15s}.test-fp-clear-all:hover:not(:disabled){background:rgba(239,68,68,.25);border-color:rgba(239,68,68,.6)}.test-fp-clear-all:disabled{opacity:.4;cursor:not-allowed}.test-fp-list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:8px 10px;display:flex;flex-direction:column;gap:6px}.test-fp-item{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:10px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06)}.test-fp-item:hover{background:rgba(255,255,255,.08)}.test-fp-color{flex:0 0 auto;width:12px;height:12px;border-radius:50%;box-shadow:0 0 6px rgba(255,255,255,.4)}.test-fp-expr{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:rgba(226,232,240,.95);font-size:13px}.test-fp-expr .katex{font-size:1em}.test-fp-delete{flex:0 0 auto;width:22px;height:22px;padding:0;border:none;border-radius:6px;background:0 0;color:rgba(255,255,255,.4);font-size:16px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s}.test-fp-delete:hover{color:#f87171;background:rgba(239,68,68,.15)}.test-fp-edit{flex:0 0 auto;width:22px;height:22px;padding:0;border:none;border-radius:6px;background:0 0;color:rgba(255,255,255,.4);font-size:14px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s}.test-fp-edit:hover{color:#38bdf8;background:rgba(56,189,248,.15)}.test-fp-item.editing{border-color:rgba(56,189,248,.6);background:rgba(56,189,248,.1);box-shadow:0 0 8px rgba(56,189,248,.25)}.test-fp-item.editing .test-fp-expr{color:#7dd3fc}.test-fp-empty{flex:1 1 auto;display:flex;align-items:center;justify-content:center;padding:24px 12px;color:rgba(148,163,184,.5);font-size:13px;text-align:center}@media (min-width:768px){#test-function-panel.visible{order:-1;flex:0 0 260px;width:260px}}@media (min-width:768px) and (max-width:1023px) and (orientation:portrait){#test-function-panel.visible{order:0;flex:0 0 auto;width:100%;max-height:35vh;margin-bottom:8px}}@media (max-width:767px){#test-function-panel.visible{order:0;flex:0 0 auto;width:100%;max-height:35vh;margin-bottom:8px}}@media (max-height:800px) and (orientation:landscape){#test-function-panel.visible{order:-1;flex:0 0 220px;width:220px}}#game-canvas,.canvas-fab-btn,.element-btn,.mode-btn,.stepper-arrow,button{-webkit-tap-highlight-color:transparent}body{-webkit-text-size-adjust:100%;text-size-adjust:100%}@media (orientation:landscape){.header{padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px))}}@media (pointer:coarse){.btn-small{min-height:36px;padding:8px 14px}.stepper-arrow{min-width:44px;min-height:44px}.leaderboard-tab,.p2p-tab{min-height:44px}.mode-btn{min-height:48px}.zoom-btn{min-width:44px;min-height:44px}.btn-back-circle,.campaign-back-circle,.campaign-reset-circle,.panel-close,.race-back-circle,.race-reset-circle{min-width:44px;min-height:44px}.btn-small:hover,.btn:hover,.mode-btn:hover{transform:none}input[type=number],input[type=text],select,textarea{font-size:16px}}@media (max-width:480px){.modal-content{padding:24px 16px calc(24px + env(safe-area-inset-bottom,0px));width:94%;max-height:calc(100dvh - 32px);overflow-y:auto;-webkit-overflow-scrolling:touch}}.start-corner-item{display:flex;flex-direction:column;align-items:center;gap:4px}.start-corner-label{font-size:11px;line-height:1.25;color:rgba(229,231,235,.72);letter-spacing:.5px;white-space:normal;word-break:break-word;text-align:center;max-width:120px;text-shadow:0 1px 4px rgba(0,0,0,.55);pointer-events:none;transition:color .15s ease}.start-corner-item:hover .start-corner-label{color:#f1f5f9}.pixel-gear{width:24px;height:24px;display:block;color:inherit;shape-rendering:crispEdges}#start-bgm-open-btn{min-width:118px}#start-bgm-open-btn .pixel-gear{width:30px;height:30px}#start-bgm-open-btn:hover .pixel-gear{color:#dbeafe}.start-settings-btn-label{letter-spacing:1px}#start-bug-report-btn{display:inline-flex;align-items:center;gap:8px;height:64px;padding:0 18px;border-radius:999px;font-size:20px;font-weight:600;color:#cbd5e1;background:rgba(148,163,184,.12);border:1px solid rgba(148,163,184,.35);flex:0 0 auto}#start-bug-report-btn:hover{background:rgba(148,163,184,.2);transform:translateY(-2px)}.settings-modal-content{max-width:560px}.settings-modal-body{display:flex;flex-direction:column;gap:12px;max-height:min(78vh,720px);overflow-y:auto;overscroll-behavior:contain;padding-right:2px;scrollbar-width:thin}.settings-section{padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(148,163,184,.18)}.settings-section-title{margin:0 0 10px;font-size:15px;font-weight:600;letter-spacing:.5px;color:#93c5fd}.settings-note{margin:0 0 10px;font-size:12.5px;line-height:1.65;color:#94a3b8;white-space:pre-line}.settings-danger-btn{width:100%;display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border-radius:10px;font-size:14px;font-weight:600;color:#fecaca;background:rgba(239,68,68,.12);border:1px solid rgba(239,68,68,.45)}.settings-danger-btn:hover{background:rgba(239,68,68,.2)}.settings-danger-btn.confirming{color:#fff;background:rgba(239,68,68,.55);border-color:rgba(248,113,113,.85)}.settings-bug-btn{width:100%;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;border-radius:10px;font-size:14px;font-weight:600;color:#cbd5e1;background:rgba(148,163,184,.12);border:1px solid rgba(148,163,184,.35)}.settings-bug-btn:hover{background:rgba(148,163,184,.2)}@media (max-width:767px){.start-corner-label{font-size:10px;max-width:82px}.start-top-actions #function-panel-btn,.start-top-actions #leaderboard-open-btn,.start-top-actions #start-bgm-open-btn,.start-top-actions #start-bug-report-btn{height:52px;padding:0 14px;font-size:15px}#start-bgm-open-btn{min-width:88px;height:52px;padding:0 14px;font-size:15px}#start-bgm-open-btn .pixel-gear{width:24px;height:24px}#start-bug-report-btn{height:52px;padding:0 14px;font-size:15px}.settings-modal-body{max-height:none;overflow:visible;padding-right:0;gap:12px}}.settings-section{text-align:left}.settings-section .music-toggle-row{justify-content:flex-start}.settings-section .bgm-volume-row+.bgm-volume-row{margin-top:8px}.settings-section .bgm-hint{text-align:left;margin-top:8px}#start-bug-report-btn span,.settings-bug-btn span{text-transform:none;letter-spacing:.5px}.settings-section .music-toggle-row{margin-bottom:10px;padding-left:2px}.notice-meta{font-size:12px;color:#94a3b8;letter-spacing:.3px;margin:-6px 0 6px}.notice-pager{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 12px}.notice-pager-btn{flex:1 1 0;min-width:0;height:34px;padding:0 10px;border-radius:999px;border:1px solid rgba(148,163,184,.35);background:rgba(148,163,184,.1);color:#cbd5e1;font-size:13px;font-family:inherit;cursor:pointer;transition:background .15s ease,opacity .15s ease,transform .1s ease}.notice-pager-btn:hover:not(:disabled){background:rgba(148,163,184,.22)}.notice-pager-btn:active:not(:disabled){transform:scale(.98)}.notice-pager-btn:disabled{opacity:.35;cursor:not-allowed}.notice-pager-info{flex:0 0 auto;font-size:12px;color:#94a3b8;font-variant-numeric:tabular-nums;min-width:48px;text-align:center}@media (max-width:767px){.notice-pager-btn{height:32px;font-size:12px}}.experimental-banner{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);z-index:12000;display:flex;align-items:center;gap:10px;padding:8px 12px 8px 14px;max-width:calc(100vw - 24px);border-radius:999px;background:rgba(24,18,6,.94);border:1px solid rgba(234,179,8,.5);box-shadow:0 8px 26px rgba(0,0,0,.45);color:#fde68a;font-size:13px;line-height:1.2;white-space:nowrap}.experimental-banner-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:#fbbf24;box-shadow:0 0 8px rgba(251,191,36,.9)}.experimental-banner-text{overflow:hidden;text-overflow:ellipsis}.experimental-banner-exit{flex:0 0 auto;border:0;border-radius:999px;padding:5px 12px;background:rgba(234,179,8,.92);color:#1a1200;font-size:12px;font-weight:600;cursor:pointer}.experimental-banner-exit:hover{background:#facc15}.experimental-banner-exit:active{transform:translateY(1px)}.settings-experimental-note{color:#94a3b8}.settings-experimental-note strong{color:#fbbf24}.settings-experimental-runtime{margin-top:8px;color:#fbbf24;font-weight:600}.settings-experimental-item{display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;text-align:left;padding:12px 14px;border-radius:12px;background:rgba(148,163,184,.08);border:1px solid rgba(148,163,184,.22);color:#e5e7eb;cursor:pointer;transition:background .2s ease,border-color .2s ease}.settings-experimental-item:hover{background:rgba(234,179,8,.1);border-color:rgba(234,179,8,.45)}.settings-experimental-item .fs-text{display:flex;flex-direction:column;gap:4px;min-width:0}.settings-experimental-item .fs-name{font-size:15px;font-weight:600;color:#e5e7eb}.settings-experimental-item .fs-desc{font-size:12px;color:#94a3b8;line-height:1.5}.settings-experimental-item .fs-state{flex:0 0 auto;font-size:12px;padding:3px 10px;border-radius:999px;background:rgba(148,163,184,.16);color:#cbd5e1}.settings-experimental-item.is-on{border-color:rgba(234,179,8,.55);background:rgba(234,179,8,.12)}.settings-experimental-item.is-on .fs-state{background:rgba(234,179,8,.92);color:#1a1200;font-weight:600}#experimental-confirm-modal{z-index:11600!important}#experimental-confirm-modal .modal-content{max-width:480px}.experimental-confirm-content h2{text-align:center;margin-bottom:14px}.experimental-confirm-content .campaign-unlock-confirm-body p{color:#cbd5e1;margin:0 0 8px;line-height:1.75}.experimental-confirm-content .campaign-unlock-confirm-body li{line-height:1.6;margin:3px 0}.experimental-confirm-content .campaign-unlock-restore{color:#fde68a;font-size:13px;line-height:1.7}#experimental-confirm-modal .btn-unlock-confirm{background-image:radial-gradient(circle 60px at var(--gx,50%) var(--gy,50%),rgba(255,255,255,.35),transparent 70%),linear-gradient(135deg,#eab308,#ca8a04)!important;background-color:#eab308!important;color:#1a1200!important;font-weight:700;border:1px solid rgba(250,204,21,.55)!important}#experimental-confirm-modal .btn-unlock-confirm:hover{background-image:radial-gradient(circle 60px at var(--gx,50%) var(--gy,50%),rgba(255,255,255,.45),transparent 70%),linear-gradient(135deg,#facc15,#eab308)!important;background-color:#facc15!important}.mode-submenu-btn-disabled{opacity:.5;cursor:not-allowed;filter:grayscale(.5)}@media (max-width:767px){.experimental-banner{font-size:12px;bottom:10px;padding:6px 10px 6px 12px;gap:8px}.experimental-banner-exit{padding:4px 10px;font-size:11px}#experimental-confirm-modal .modal-content{max-width:calc(100vw - 32px)}.experimental-confirm-content .campaign-unlock-confirm-body{font-size:13px}}.net-rtt-capsule{display:inline-flex;align-items:center;gap:6px;margin-left:12px;height:30px;padding:0 12px;border-radius:999px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:#cbd5e1;font-size:13px;font-variant-numeric:tabular-nums;user-select:none;white-space:nowrap}.net-rtt-capsule[hidden]{display:none}.net-rtt-dot{width:8px;height:8px;border-radius:50%;background:#5b9e6e;box-shadow:0 0 8px rgba(91,158,110,.65)}.net-rtt-capsule.rtt-good{color:#86efac;border-color:rgba(134,239,172,.35)}.net-rtt-capsule.rtt-good .net-rtt-dot{background:#22c55e;box-shadow:0 0 8px rgba(34,197,94,.7)}.net-rtt-capsule.rtt-ok{color:#fcd34d;border-color:rgba(252,211,77,.35)}.net-rtt-capsule.rtt-ok .net-rtt-dot{background:#f59e0b;box-shadow:0 0 8px rgba(245,158,11,.7)}.net-rtt-capsule.rtt-bad{color:#fca5a5;border-color:rgba(248,113,113,.4)}.net-rtt-capsule.rtt-bad .net-rtt-dot{background:#ef4444;box-shadow:0 0 8px rgba(239,68,68,.75)}.help-float-btn{font-size:18px;font-weight:700;line-height:1;color:#bfdbfe;padding-top:1px}.help-float-btn:hover{transform:translateY(-1px);background:rgba(96,165,250,.28)}.quick-help-content{max-width:720px;width:min(720px,94vw);text-align:left}.quick-help-content h2{text-align:center;margin-bottom:14px}.quick-help-body{max-height:min(66vh,560px);overflow-y:auto;overscroll-behavior:contain;padding-right:6px;color:#cbd5e1;font-size:14px;line-height:1.75}.quick-help-body::-webkit-scrollbar{width:6px}.quick-help-body::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-radius:3px}.qh-section{margin-bottom:16px}.qh-section h3{font-size:15px;color:#93c5fd;margin-bottom:6px}.qh-steps{padding-left:20px}.qh-steps li{margin:3px 0}.qh-note{color:#94a3b8;font-size:13px}.qh-tag{display:inline-block;margin:2px 6px 2px 0;padding:1px 8px;border-radius:999px;background:rgba(96,165,250,.16);border:1px solid rgba(96,165,250,.3);color:#bfdbfe;font-size:12px}.qh-tag.neg{background:rgba(239,68,68,.14);border-color:rgba(239,68,68,.35);color:#fca5a5}.qh-kbd{display:inline-block;padding:0 6px;border-radius:5px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.08);font-size:12px}.quick-help-footer{margin-top:18px}.float-keypad-clear-btn{min-width:64px;height:40px;padding:0 14px;border-radius:10px;border:1px solid rgba(248,113,113,.35);background:rgba(248,113,113,.12);color:#fca5a5;font-size:14px;cursor:pointer;transition:background .15s ease,transform .15s ease}.float-keypad-clear-btn:hover:not(:disabled){background:rgba(248,113,113,.22);transform:translateY(-1px)}.float-keypad-clear-btn:disabled{opacity:.45;cursor:not-allowed}.float-keypad-clear-btn[hidden]{display:none}.report-table .reason-cell{max-width:210px;text-align:left;white-space:normal;line-height:1.5;font-size:11px;color:#94a3b8}@keyframes canvas-urgent-breath{0%{box-shadow:inset 0 0 0 rgba(239,68,68,0)}50%{box-shadow:inset 0 0 42px rgba(239,68,68,.38)}100%{box-shadow:inset 0 0 0 rgba(239,68,68,0)}}body.urgent-timer #game-canvas{animation:canvas-urgent-breath 1s ease-in-out infinite}.campaign-level-cell{position:relative}.campaign-level-flag{position:absolute;top:4px;right:4px;padding:0 6px;border-radius:999px;font-size:10px;line-height:16px;color:#fde68a;background:rgba(234,179,8,.22);border:1px solid rgba(234,179,8,.45);pointer-events:none}.campaign-level-flag-unlocked{letter-spacing:.5px}.campaign-fail-summary{margin:8px 0 0;padding:8px 12px;border-radius:8px;border:1px solid rgba(148,163,184,.25);background:rgba(148,163,184,.1);color:#cbd5e1;font-size:13px;line-height:1.6;text-align:left}#spectator-timeline,.spectator-timeline{max-height:180px;overflow-y:auto;overscroll-behavior:contain;padding:8px 10px;border-radius:10px;background:rgba(15,23,42,.72);border:1px solid rgba(148,163,184,.2);font-size:12px;line-height:1.6;color:#cbd5e1}.spectator-timeline-row{display:flex;gap:8px;white-space:nowrap}.spectator-timeline-row .tl-round{color:#93c5fd;min-width:34px}.spectator-timeline-row .tl-score-pos{color:#86efac}.spectator-timeline-row .tl-score-neg{color:#fca5a5}.p2p-room-info-card,.race-battle-room-info-card{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:12px;padding:10px 14px;border-radius:12px;background:rgba(30,41,59,.55);border:1px solid rgba(148,163,184,.2);font-size:13px;color:#cbd5e1}.p2p-room-info-card .info-item,.race-battle-room-info-card .info-item{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.p2p-room-info-card .info-label,.race-battle-room-info-card .info-label{color:#94a3b8;font-size:12px}.p2p-room-info-card .info-value,.race-battle-room-info-card .info-value{color:#e2e8f0;font-variant-numeric:tabular-nums}@media (max-width:767px){.net-rtt-capsule{height:26px;padding:0 9px;font-size:12px;margin-left:8px}.help-float-btn{font-size:16px}.quick-help-content{width:96vw}.quick-help-body{max-height:62vh;font-size:13px}.float-keypad-clear-btn{min-width:56px;height:36px;padding:0 10px;font-size:13px}.report-table .reason-cell{max-width:150px;font-size:10px}.p2p-room-info-card,.race-battle-room-info-card{gap:6px 12px;font-size:12px;padding:8px 10px}}.spectator-timeline-title{font-size:12px;font-weight:600;color:#93c5fd;letter-spacing:.5px}.spectator-timeline-list{scrollbar-width:thin}.spectator-timeline-list::-webkit-scrollbar{width:5px}.spectator-timeline-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:3px}.spectator-timeline-row{padding:2px 0;color:#cbd5e1;font-variant-numeric:tabular-nums}.spectator-timeline-row+.spectator-timeline-row{border-top:1px solid rgba(148,163,184,.12)}.p2p-room-info-card,.race-battle-room-info-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px;margin:10px auto 6px;padding:8px 14px;width:fit-content;max-width:100%;border-radius:999px;background:rgba(30,41,59,.6);border:1px solid rgba(148,163,184,.22);color:#cbd5e1;font-size:13px;line-height:1.6;font-variant-numeric:tabular-nums;user-select:none}.p2p-room-info-code,.race-battle-room-info-code{font-weight:700;letter-spacing:2px;color:#fde68a}.p2p-room-info-host,.race-battle-room-info-host{color:#bfdbfe}.p2p-room-info-state,.race-battle-room-info-state{color:#86efac}.race-battle-room-info-count{color:#cbd5e1}.p2p-room-info-sep,.race-battle-room-info-sep{color:rgba(148,163,184,.55)}@media (max-width:767px){.p2p-room-info-card,.race-battle-room-info-card{font-size:12px;padding:6px 10px;gap:4px}.p2p-room-info-code,.race-battle-room-info-code{letter-spacing:1px}}#spectator-timeline{position:fixed!important;right:16px!important;left:auto!important;top:auto!important;bottom:96px!important;width:min(252px,56vw)!important;max-height:36vh!important;z-index:12000!important;box-shadow:0 10px 28px rgba(0,0,0,.35);backdrop-filter:blur(6px)}@media (max-width:767px){#spectator-timeline{right:10px!important;bottom:78px!important;width:min(196px,52vw)!important;max-height:30vh!important;font-size:11px!important}}@media (max-width:767px){#spectator-timeline{right:10px!important;top:84px!important;bottom:auto!important;width:min(184px,48vw)!important;max-height:28vh!important;font-size:11px!important;padding:6px 8px!important}}.battle-chat-box{transition:opacity .28s ease}.battle-chat-box.chat-box-fading{opacity:0;transition:opacity .5s ease}.battle-chat-box{bottom:96px!important;width:min(320px,84vw)!important}.battle-chat-messages{max-height:120px;pointer-events:none}.battle-chat-box.chat-interactive .battle-chat-messages{pointer-events:auto}.battle-chat-box.chat-interactive{pointer-events:none}.battle-chat-box{left:16px!important;transform:none!important;width:min(260px,42vw)!important}@media (max-width:767px){.battle-chat-box{left:50%!important;transform:translateX(-50%)!important;width:min(300px,90vw)!important;bottom:104px!important}}@media (max-width:767px){.battle-chat-box{width:min(248px,76vw)!important}.battle-chat-messages{max-height:96px}.battle-chat-msg{font-size:12px}}.battle-chat-box{left:auto!important;right:16px!important;transform:none!important;bottom:108px!important;width:min(260px,42vw)!important;z-index:11600!important}@media (max-width:767px){.battle-chat-box{left:50%!important;right:auto!important;transform:translateX(-50%)!important}}@media (min-width:768px){.battle-chat-messages{max-height:180px}}@media (max-width:767px){.battle-chat-box{bottom:128px!important}.battle-chat-messages{max-height:88px}}.chat-fab-btn.chat-unread::after{content:'';position:absolute;top:5px;right:5px;width:9px;height:9px;border-radius:50%;background:#ef4444;box-shadow:0 0 0 2px rgba(7,13,26,.9)}@media (max-width:767px){.battle-chat-box{width:min(320px,90vw)!important}.battle-chat-msg{font-size:13px}}.leaderboard-topbar{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin:-6px 0 8px}.leaderboard-updated{font-size:12px;color:#94a3b8;font-variant-numeric:tabular-nums}.leaderboard-refresh-btn{min-height:30px;padding:4px 12px;font-size:12px}.leaderboard-topbar{justify-content:space-between}.leaderboard-login-tip .leaderboard-login-tip-btn,.leaderboard-topbar .leaderboard-refresh-btn{flex:0 0 auto;width:auto;min-width:0}.leaderboard-refresh-btn{padding:5px 14px;border-radius:8px;background:rgba(96,165,250,.16);border:1px solid rgba(96,165,250,.42);color:#dbeafe;font-size:12px;font-weight:600;letter-spacing:.5px;text-transform:none}.leaderboard-refresh-btn:hover{background:rgba(96,165,250,.26);color:#fff}.leaderboard-upload-btn{flex:0 0 auto;width:auto;margin-left:auto;margin-right:8px;padding:6px 14px;border-radius:999px;border:1px solid rgba(34,197,94,.45);background:rgba(34,197,94,.14);color:#86efac;font-size:13px;font-weight:600;cursor:pointer}.leaderboard-upload-btn:hover:not([disabled]){background:rgba(34,197,94,.26);color:#d1fae5}.leaderboard-upload-btn[disabled]{opacity:.6;cursor:default}#spectate-expr-hud{position:fixed;left:50%;bottom:96px;transform:translateX(-50%);z-index:9600;display:none;align-items:center;gap:8px;max-width:min(760px,92vw);padding:8px 14px;border-radius:10px;background:rgba(15,23,42,.92);border:1px solid rgba(96,165,250,.42);box-shadow:0 8px 24px rgba(0,0,0,.35);font-family:'Courier New',Consolas,monospace;font-size:15px;line-height:1.4;pointer-events:none}#spectate-expr-hud .spectate-expr-who{flex:0 0 auto;color:#93c5fd;font-family:SmileySans,system-ui,sans-serif;font-size:13px}#spectate-expr-hud .spectate-expr-text{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#e2e8f0}@media (max-width:767px){#spectate-expr-hud{bottom:74px;font-size:13px;padding:6px 10px;max-width:94vw}}