@font-face{font-family:Titan One;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/titan-one.ttf) format("truetype")}:root{color:#eceee8;background:#111411;font-family:Avenir Next,SF Pro Text,Helvetica Neue,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:320px;min-height:100vh;background:#111411;overflow-x:hidden}button,input,select,textarea{font:inherit}button{border:0}button:disabled,select:disabled,input:disabled{cursor:not-allowed;opacity:.48}.app-shell{min-height:100vh;padding:var(--shell-padding, 16px);background:var(--app-bg, #111411);color:var(--text-color, #eceee8);font-family:var(--font-body, "Avenir Next", "SF Pro Text", "Helvetica Neue", sans-serif)}.app-shell.game-mode{padding:0;overflow:hidden}.workbench{display:flex;flex-direction:column;min-height:calc(100vh - var(--shell-padding, 16px) * 2);border:1px solid var(--border-color, #30372f);background:var(--workbench-bg, #171b17)}.game-workbench{min-height:100vh;border:0;background:#173d22}.topbar{display:flex;align-items:center;justify-content:space-between;min-height:68px;padding:14px 18px;border-bottom:1px solid var(--border-color, #30372f)}.topbar h1,.topbar p,.panel-section h2,.team-head h2,.result-section p,.score-panel span,.score-panel strong{margin:0}.topbar h1{color:var(--text-color, #eceee8);font-size:var(--text-screen-title-size, 20px);font-weight:var(--text-screen-title-weight, 700);line-height:var(--text-screen-title-line, 1.2)}.topbar p{margin-top:4px;color:var(--text-muted-color, #aab3a6);font-size:var(--text-hint-size, 13px)}.status-ok,.status-bad{border:1px solid #3a4339;border-radius:var(--control-radius, 8px);padding:5px 8px;font-size:13px}.status-ok{color:#91d69b}.status-bad{color:#e09a8e}.error-line{padding:10px 18px;border-bottom:1px solid #63342e;background:#2a1715;color:#f0b4a8}.home-panel{display:flex;flex-direction:column;gap:16px;width:min(420px,calc(100% - 32px));margin:auto;padding:var(--panel-padding, 18px);border:1px solid var(--border-color, #30372f);border-radius:var(--panel-radius, 0);background:var(--surface-bg, #1c211c)}.field{display:flex;flex-direction:column;gap:8px;color:var(--text-muted-color, #aab3a6);font-size:var(--text-hint-size, 13px)}.compact-field{gap:6px}input,select,textarea{width:100%;min-height:40px;border:1px solid var(--border-strong-color, #3a4339);border-radius:var(--control-radius, 8px);padding:8px 10px;background:var(--surface-strong-bg, #101410);color:var(--text-color, #eceee8);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--accent-color, #9ab56d)}.button-row{display:flex;gap:10px}.primary-button,.secondary-button{min-height:40px;border-radius:var(--control-radius, 8px);padding:8px 12px;cursor:pointer}.primary-button{background:var(--accent-color, #b8d87b);color:var(--accent-text-color, #111411);font-size:var(--text-button-size, 14px);font-weight:var(--text-button-weight, 700)}.secondary-button{border:1px solid var(--border-strong-color, #3a4339);background:var(--surface-bg, #222822);color:var(--text-color, #eceee8);font-size:var(--text-button-size, 14px);font-weight:var(--text-button-weight, 700)}.play-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;min-height:calc(100vh - 101px)}.stage{min-height:560px;border-right:1px solid var(--border-color, #30372f)}.three-root{width:100%;height:100%;min-height:560px}.three-root canvas{display:block;width:100%;height:100%}.game-screen{position:relative;flex:1;width:100%;min-height:100vh;overflow:hidden;background:#173d22}.game-screen .three-root{height:100vh;min-height:100vh}.game-error{position:absolute;z-index:40;top:12px;right:12px;left:12px;border:1px solid #63342e}.match-hud{position:absolute;z-index:20;top:var(--hud-top, 0);left:var(--hud-left, 50%);width:min(var(--hud-width, 760px),calc(100vw - var(--hud-viewport-margin, 8px) * 2));aspect-ratio:1420 / 600;transform:translate(-50%);pointer-events:none}.match-hud-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:var(--hud-art-opacity, 1);transform:scaleX(var(--hud-art-scale-x, -1))}.hud-score-value,.hud-goal-label,.hud-detail-label{position:absolute;margin:0;font-weight:var(--hud-score-font-weight, 400);letter-spacing:0;text-align:center;text-transform:uppercase;paint-order:stroke fill}.hud-score-value{top:var(--hud-score-top, 34.5%);width:var(--hud-score-width, 18%);color:var(--hud-score-color, #ffffff);font-family:var(--hud-score-font-family, "Titan One", "Avenir Next", "Arial Black", sans-serif);font-size:clamp(16px,8vw,var(--hud-score-font, 88px));-webkit-text-stroke:var(--hud-score-outline-width, 0) rgb(var(--hud-score-outline-color, 30 20 28) / var(--hud-score-outline-alpha, 0));text-shadow:0 var(--hud-score-shadow-y, 4px) 0 rgb(var(--hud-score-shadow-color, 30 20 28) / var(--hud-score-shadow-alpha, 0)),0 calc(var(--hud-score-shadow-y, 4px) + 2px) var(--hud-score-shadow-blur, 9px) rgb(var(--hud-score-shadow-color, 30 20 28) / var(--hud-score-shadow-alpha, 0));line-height:var(--hud-score-line-height, .9)}.hud-score-left{left:var(--hud-score-side, 12%)}.hud-score-right{right:var(--hud-score-side, 12%)}.hud-goal-label{top:var(--hud-goal-top, 35%);left:50%;width:var(--hud-goal-width, 18%);color:var(--hud-goal-color, #ffd55d);font-family:var(--hud-goal-font-family, "Titan One", "Avenir Next", "Arial Black", sans-serif);font-size:clamp(8px,2.1vw,var(--hud-goal-font, 24px));-webkit-text-stroke:var(--hud-goal-outline-width, 0) rgb(var(--hud-goal-outline-color, 30 20 28) / var(--hud-goal-outline-alpha, 0));text-shadow:0 var(--hud-goal-shadow-y, 4px) 0 rgb(var(--hud-goal-shadow-color, 30 20 28) / var(--hud-goal-shadow-alpha, 0)),0 calc(var(--hud-goal-shadow-y, 4px) + 2px) var(--hud-goal-shadow-blur, 9px) rgb(var(--hud-goal-shadow-color, 30 20 28) / var(--hud-goal-shadow-alpha, 0));font-weight:var(--hud-goal-font-weight, 400);line-height:var(--hud-goal-line-height, 1);transform:translate(-50%)}.hud-detail-label{top:var(--hud-detail-top, 66.8%);left:50%;width:var(--hud-detail-width, 24%);display:flex;align-items:center;justify-content:center;gap:.24em;color:var(--hud-detail-color, #ffffff);font-family:var(--hud-detail-font-family, "Titan One", "Avenir Next", "Arial Black", sans-serif);font-size:clamp(8px,3.1vw,var(--hud-detail-font, 34px));-webkit-text-stroke:var(--hud-detail-outline-width, 0) rgb(var(--hud-detail-outline-color, 30 20 28) / var(--hud-detail-outline-alpha, 0));text-shadow:0 var(--hud-detail-shadow-y, 4px) 0 rgb(var(--hud-detail-shadow-color, 30 20 28) / var(--hud-detail-shadow-alpha, 0)),0 calc(var(--hud-detail-shadow-y, 4px) + 2px) var(--hud-detail-shadow-blur, 9px) rgb(var(--hud-detail-shadow-color, 30 20 28) / var(--hud-detail-shadow-alpha, 0));font-weight:var(--hud-detail-font-weight, 400);line-height:var(--hud-detail-line-height, 1);transform:translate(-50%)}.hud-detail-icon{width:.92em;height:.92em;flex:0 0 auto;object-fit:contain}.game-result-overlay{position:absolute;z-index:30;top:50%;left:50%;width:min(340px,calc(100% - 32px));border:1px solid #fff4cf;border-radius:var(--panel-radius, 8px);padding:20px;background:#101410e6;box-shadow:0 24px 60px #00000061;transform:translate(-50%,-50%)}.lobby-board{display:grid;grid-template-columns:minmax(180px,1fr) 180px minmax(180px,1fr);gap:var(--panel-gap, 18px);align-items:stretch;height:100%;min-height:560px;padding:calc(var(--panel-padding, 16px) + 8px)}.team-column{display:flex;flex-direction:column;gap:14px;border:1px solid var(--border-color, #30372f);border-radius:var(--panel-radius, 8px);padding:var(--panel-padding, 16px);background:var(--surface-bg, #1c211c)}.team-blue{border-color:var(--team-blue-color, #385578)}.team-red{border-color:var(--team-red-color, #71423a)}.team-head{display:flex;align-items:center;justify-content:space-between}.team-head h2{font-size:var(--text-panel-title-size, 18px);font-weight:var(--text-panel-title-weight, 700)}.team-head span{color:var(--text-muted-color, #aab3a6)}.team-list{display:flex;flex:1;flex-direction:column;gap:8px}.team-player,.player-row{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:10px;align-items:center;min-height:38px;border:1px solid var(--border-color, #30372f);border-radius:var(--control-radius, 8px);padding:8px 10px;background:var(--surface-strong-bg, #151915)}.team-player em{color:var(--text-muted-color, #aab3a6);font-style:normal;font-size:12px}.empty-slot{min-height:38px;border:1px dashed var(--border-strong-color, #3a4339);border-radius:var(--control-radius, 8px);padding:9px 10px;color:#7d8779}.center-mark{display:grid;place-content:center;gap:8px;border:1px solid var(--border-color, #30372f);border-radius:var(--panel-radius, 8px);background:var(--surface-strong-bg, #151915);text-align:center}.center-mark strong{font-size:18px}.center-mark span{color:var(--text-muted-color, #aab3a6);font-size:var(--text-body-size, 14px)}.side-panel{display:flex;flex-direction:column;gap:var(--panel-gap, 18px);padding:calc(var(--panel-padding, 16px) + 2px);background:var(--workbench-bg, #171b17)}.panel-section{display:flex;flex-direction:column;gap:12px}.panel-section h2{font-size:var(--text-section-label-size, 14px);font-weight:var(--text-section-label-weight, 700)}.score-panel{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;border:1px solid var(--border-color, #30372f);border-radius:var(--panel-radius, 8px);padding:12px;background:var(--surface-strong-bg, #101410)}.score-panel div{display:grid;gap:4px;text-align:center}.score-panel span{color:var(--text-muted-color, #aab3a6);font-size:var(--text-caption-size, 12px)}.score-panel strong{font-size:28px;line-height:1}.segmented{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--border-strong-color, #3a4339);border-radius:var(--control-radius, 8px);overflow:hidden}.segmented button{min-height:36px;background:var(--surface-strong-bg, #101410);color:var(--text-muted-color, #aab3a6);cursor:pointer}.segmented button+button{border-left:1px solid var(--border-strong-color, #3a4339)}.segmented .active{background:#293321;color:var(--text-color, #eceee8)}.hint-line{color:var(--text-muted-color, #aab3a6);font-size:var(--text-hint-size, 13px)}.player-list{display:flex;flex-direction:column;gap:8px}.player-color{width:12px;height:12px;border-radius:50%}.player-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team-pill{border:1px solid var(--border-strong-color, #3a4339);border-radius:var(--pill-radius, 6px);padding:2px 6px;font-size:12px}.team-pill.blue{color:var(--team-blue-color, #88b9ff)}.team-pill.red{color:var(--team-red-color, #f09b8d)}.result-section{border-bottom:1px solid #30372f;padding-bottom:18px}.result-section p{font-size:24px}.link-input{font-size:13px}@media(max-width:920px){.app-shell{padding:0}.workbench{min-height:100vh;border:0}.play-grid{grid-template-columns:1fr}.stage{min-height:500px;border-right:0;border-bottom:1px solid #30372f}.three-root{min-height:500px}}@media(max-width:720px){.lobby-board{grid-template-columns:1fr;min-height:auto}.center-mark{min-height:110px}.match-hud{width:min(var(--hud-width, 760px),calc(100vw - var(--hud-viewport-margin, 8px) * 2))}}
