:root{font-family:DM Sans,sans-serif;color:#573e2e;font-synthesis:none}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{background:#f8d77c}button,select,summary{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #fff5c2;outline-offset:3px}button{color:inherit}#world{position:absolute;top:0;right:0;bottom:0;left:0}#world canvas{display:block;touch-action:none}.hidden{display:none!important}.topbar{position:absolute;z-index:5;top:0;left:0;width:100%;display:grid;grid-template-columns:1fr auto 1fr;align-items:start;padding:22px 28px;pointer-events:none}.brand{display:flex;align-items:center;gap:10px}.brand-mark{width:46px;height:46px;border:2px solid #72503a;border-radius:50%;background:#f9e7b3;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:.85;box-shadow:0 3px #c69b55;transform:rotate(-8deg)}.brand-mark span{font-size:10px;color:#df6650}.brand-mark b{font-family:Fredoka,sans-serif;font-size:18px}.brand-name{font-family:Fredoka,sans-serif;font-size:21px;font-weight:700;line-height:1;letter-spacing:-.03em}.brand-name em{font-style:normal;color:#d15c45}.brand-sub{font-size:8px;font-weight:700;letter-spacing:.16em;margin-top:5px}.scoreboard{pointer-events:auto;background:#fff2cb;border:2px solid #6e4a34;border-radius:15px;box-shadow:0 4px #bc8c4e;display:flex;align-items:center;gap:14px;padding:8px 14px;min-width:290px;justify-content:center}.team{font-family:Fredoka,sans-serif;font-size:12px;font-weight:700;display:flex;align-items:center;gap:7px;line-height:1}.team small{display:block;font:700 8px DM Sans,sans-serif;letter-spacing:.1em;color:#9d7953;margin-top:4px}.river-team{text-align:right}.team-dot{width:12px;height:12px;background:#e85f4f;border:2px solid #8d4c3b;border-radius:50%;flex:none}.river-team .team-dot{background:#4ca7b2;border-color:#427a7c}.score{display:flex;align-items:center;position:relative;gap:6px;font:700 25px Fredoka,sans-serif;line-height:1;padding-bottom:8px}.score span{color:#c5a978}.score small{position:absolute;bottom:-3px;left:50%;transform:translate(-50%);font:700 7px DM Sans,sans-serif;white-space:nowrap;letter-spacing:.08em;color:#a17f55}.top-actions{justify-self:end;display:flex;gap:7px;pointer-events:auto}.icon-button,.settings summary{border:2px solid #765039;border-radius:50%;background:#f9e6b4;color:#684532;width:38px;height:38px;font-weight:700;font-size:16px;box-shadow:0 3px #c49755;display:grid;place-items:center;list-style:none}.settings summary::-webkit-details-marker{display:none}.icon-button:active,.settings summary:active{transform:translateY(2px);box-shadow:0 1px #c49755}.icon-button:disabled{opacity:.45}.icon-button.muted{opacity:.5;text-decoration:line-through}.settings{position:relative}.settings-pop{position:absolute;right:0;top:46px;width:200px;padding:14px;background:#fff0c8;border:2px solid #765039;border-radius:13px;box-shadow:0 4px #bc8c4e}.settings-pop label,.settings-label{display:block;margin-top:12px;font-size:9px;font-weight:700;letter-spacing:.1em;color:#9c7851}.settings-pop select{display:block;width:100%;margin-top:6px}.settings-pop select,.camera-tools select{border:1.5px solid #c9a676;border-radius:7px;background:#fbe6ba;color:#684a36;padding:6px;font-size:10px;font-weight:700}.speed-group{display:flex;gap:4px;margin-top:7px}.speed-group button,.row-buttons button{border:1.5px solid #d0ad7d;border-radius:6px;background:#fbe4b2;padding:6px;color:#86644b;font-size:9px;font-weight:700}.speed-group button.active,.row-buttons button.active{background:#e86c53;border-color:#ae553f;color:#fff5d7}.mode-panel,.camera-panel,.play-dock,.context-card,.center-card{position:absolute;z-index:3;background:#fff0c8;border:2px solid #79533b;border-radius:14px;box-shadow:0 4px #c49755}.mode-panel{left:28px;top:103px;width:210px;padding:13px}.mode-top{display:flex;align-items:center;gap:7px;font-size:9px;letter-spacing:.14em;font-weight:700;color:#976d49}.live-dot,.replay-label span{width:7px;height:7px;background:#e66b51;border-radius:50%;box-shadow:0 0 0 3px #f5c7a2}.mode-panel #mode-copy{font-size:11px;line-height:1.4;margin:8px 0 11px;color:#816348}.join-label,.eyebrow{font-size:9px;letter-spacing:.12em;font-weight:700;color:#c45d45}.team-buttons{display:flex;gap:5px;margin-top:6px}.team-buttons button{flex:1;border:1.5px solid #d0ad7d;background:#fbe5b9;border-radius:7px;padding:8px 4px;font:700 9px Fredoka,sans-serif}.team-buttons button span{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;background:#e96751}.team-buttons button[data-team=river] span{background:#4ba3b0}.team-buttons button.active{background:#e86c53;border-color:#ad523f;color:#fff5d7}.team-buttons button[data-team=river].active{background:#4b9faf;border-color:#3e7f85}.watch-button,.text-button{border:0;background:none;color:#b75b43;font-size:9px;letter-spacing:.05em;font-weight:700;padding:0}.watch-button{margin-top:10px}.camera-panel{left:28px;bottom:25px;width:290px;padding:10px}.camera-heading{display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:.1em;font-weight:700;color:#9c7851;margin-bottom:7px}.camera-tools{display:flex;gap:4px}.camera-tools button{border:1.5px solid #c9a676;background:#fbe5b9;border-radius:7px;width:31px;height:30px;font-size:17px;font-weight:700;line-height:1}.camera-tools button:active{background:#eac58d}.camera-tools select{flex:1;min-width:0}.camera-hint{font-size:8px;color:#a17d56;font-weight:700;letter-spacing:.035em;margin-top:7px}.play-dock{right:28px;bottom:25px;display:flex;align-items:center;gap:14px;padding:12px;min-width:280px}.play-info{min-width:170px}.active-row{font:600 18px Fredoka,sans-serif;color:#d35f48;margin:4px 0}.play-hint{font-size:9px;color:#987550}.manual{position:relative;margin-top:8px}.manual summary{color:#a25e46;font-size:9px;font-weight:700}.manual[open]{position:absolute;right:0;bottom:100%;width:305px;background:#fff0c8;border:2px solid #79533b;border-radius:12px;box-shadow:0 4px #c49755;padding:11px;margin-bottom:8px}.manual p{font-size:10px;line-height:1.4;color:#8a6a4d}.row-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;margin-top:8px}.row-buttons button{font-size:8px;padding:6px 2px}.row-buttons span{border:1px solid currentColor;border-radius:3px;padding:0 3px}.kick-wrap{position:relative}.kick-button{width:66px;height:66px;border-radius:50%;border:2px solid #a04e3b;background:#e96c52;color:#fff4d4;box-shadow:0 3px #b04c3a;display:flex;flex-direction:column;justify-content:center;align-items:center;line-height:1;touch-action:none;-webkit-user-select:none;user-select:none}.kick-button span{font-size:12px}.kick-button b{font:700 14px Fredoka,sans-serif}.kick-button small{font-size:8px;font-weight:700;margin-top:3px}.kick-button.charging{transform:translateY(2px);background:#c7513f;box-shadow:0 1px #a44937}.charge{position:absolute;bottom:calc(100% + 8px);right:0;width:100px;background:#fff0c8;border:1.5px solid #79533b;border-radius:7px;padding:6px;font-size:8px;font-weight:700;color:#a16a4d}.charge div{height:5px;background:#e0c397;border-radius:5px;margin-top:4px}.charge i{display:block;height:100%;width:0;background:#e86c53;border-radius:5px}.touch-pad{display:none}.floating-actions{position:absolute;z-index:4;bottom:27px;left:50%;transform:translate(-50%);display:flex;gap:7px}.pill,.primary-button{border:2px solid #754734;background:#e66850;color:#fff5d4;border-radius:9px;padding:10px 13px;font:700 10px Fredoka,sans-serif;letter-spacing:.04em;box-shadow:0 3px #a84c38;white-space:nowrap}.pill:disabled{opacity:.5}.replay-label{position:absolute;z-index:4;top:98px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;border:2px solid #754734;border-radius:9px;background:#fff0c8;box-shadow:0 3px #bd8e56;padding:8px 11px;font:700 10px Fredoka,sans-serif;letter-spacing:.08em}.replay-label small{font:700 8px DM Sans,sans-serif;color:#a17b56}.context-card{right:28px;top:98px;width:205px;padding:13px}.context-card strong{display:block;font:600 17px Fredoka,sans-serif;margin-top:5px}.context-card p,.center-card p{font-size:11px;line-height:1.4;color:#846449}.announcement{position:absolute;z-index:4;top:25%;left:50%;transform:translate(-50%,-12px) rotate(-3deg);font:700 24px Fredoka,sans-serif;letter-spacing:.04em;color:#fff2c7;background:#d96049;border:2px solid #754734;border-radius:10px;padding:10px 20px;box-shadow:0 4px #a8543b;opacity:0;transition:.2s;white-space:nowrap;pointer-events:none}.announcement.show{opacity:1;transform:translate(-50%) rotate(-3deg)}.center-card{z-index:5;left:50%;top:45%;transform:translate(-50%,-50%) rotate(-1deg);width:245px;text-align:center;padding:23px}.center-card h2{font:600 27px/1 Fredoka,sans-serif;margin:10px 0}.confetti{position:absolute;width:8px;height:13px;z-index:10;pointer-events:none;animation:burst 1.4s ease-out forwards}@keyframes burst{to{transform:translate(var(--x),210px) rotate(var(--r));opacity:0}}@media(max-width:700px){.topbar{padding:12px 13px;grid-template-columns:1fr auto;gap:6px}.brand-mark{width:35px;height:35px}.brand-mark b{font-size:14px}.brand-name{font-size:16px}.brand-sub{font-size:6px}.scoreboard{grid-row:2;grid-column:1/3;justify-self:center;min-width:245px;padding:5px 10px;border-radius:12px}.team{font-size:10px}.score{font-size:21px}.top-actions{grid-column:2;grid-row:1}.icon-button,.settings summary{width:33px;height:33px;font-size:14px}.mode-panel{top:112px;left:12px;right:12px;width:auto;padding:8px 10px;display:grid;grid-template-columns:1fr auto;column-gap:8px;align-items:center}.mode-top{font-size:8px}.mode-panel #mode-copy{font-size:9px;margin:3px 0}.join-label{display:none}.team-buttons{grid-column:2;grid-row:1/3;margin:0}.team-buttons button{width:75px;font-size:8px;padding:7px 3px}.watch-button{grid-column:1/-1;margin-top:5px;text-align:left}.camera-panel{left:12px;bottom:max(12px,env(safe-area-inset-bottom));width:calc(100% - 24px);padding:8px}.camera-heading{font-size:8px;margin-bottom:5px}.camera-tools button{flex:1;height:28px}.camera-tools select{flex:2}.camera-hint{font-size:7px}.play-dock{left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom));min-width:0;padding:8px;gap:8px;align-items:center}.play-info{min-width:91px;max-width:105px}.active-row{font-size:13px}.play-hint{display:none}.manual summary{font-size:9px}.manual[open]{right:auto;left:0;width:min(310px,calc(100vw - 24px))}.touch-pad{display:flex;flex:1;min-width:80px;height:65px;flex-direction:column;justify-content:center;padding:9px;background:#f6dbab;border:1.5px solid #cda878;border-radius:10px;touch-action:none;-webkit-user-select:none;user-select:none;color:#a17a54;font-size:8px;font-weight:700;letter-spacing:.06em}.pad-line{height:4px;border-radius:4px;background:#d5b584;margin:11px 2px 0;position:relative}.pad-line i{position:absolute;top:50%;transform:translate(-50%,-50%);width:24px;height:24px;border-radius:50%;background:#ef9a70;border:2px solid #a65b43}.kick-button{width:60px;height:60px}.camera-panel:has(~.play-dock:not(.hidden)){bottom:111px}.floating-actions{bottom:112px}.context-card{top:178px;right:12px;width:175px;padding:10px}.replay-label{top:180px}.announcement{font-size:19px;top:29%}.settings-pop{width:190px}.center-card{width:220px;padding:17px}}@media(max-height:550px)and (orientation:landscape){.topbar{padding:7px 14px}.brand-mark{width:34px;height:34px}.brand-name{font-size:16px}.brand-sub{font-size:6px}.scoreboard{padding:4px 12px}.score{font-size:20px}.mode-panel{top:59px;left:12px;width:185px;padding:8px}.mode-panel #mode-copy{font-size:9px;margin:4px 0}.team-buttons button{padding:6px 2px}.camera-panel{bottom:9px;left:12px;width:275px;padding:7px}.camera-hint{display:none}.play-dock{bottom:9px;right:12px;padding:7px}.kick-button{width:53px;height:53px}.floating-actions{bottom:12px}.context-card{top:56px;right:12px}.replay-label{top:55px}.center-card{padding:12px}.center-card h2{font-size:22px}.announcement{top:20%;font-size:19px}}#world{overflow:hidden}#world canvas{width:100%!important;height:100%!important}button{transition:background .16s,transform .16s,box-shadow .16s}button:hover{filter:brightness(1.045)}button:active{transform:translateY(1px)}.topbar{padding:26px 30px}.brand-name{font-size:25px;letter-spacing:-.045em}.brand-sub{font-size:9px;letter-spacing:.18em;margin-top:7px}.brand-mark{width:50px;height:50px}.brand-mark b{font-size:21px}.brand-mark span{margin-bottom:3px}.scoreboard{padding:11px 20px;gap:20px;min-width:345px;border-radius:17px;background:#fff3ce}.team{font-size:14px}.team small{font-size:9px}.score{font-size:34px;gap:9px;padding-bottom:10px}.score small{font-size:8px}.team-dot{width:14px;height:14px}.mode-panel{top:117px;width:222px;padding:14px;background:#fff2cc}.mode-tabs{display:flex;background:#eed6a3;border:1px solid #d3af78;border-radius:8px;padding:3px;margin-bottom:14px}.mode-tabs button{width:50%;font:500 14px Fredoka,sans-serif;letter-spacing:.02em;padding:5px;border:0;background:none;border-radius:5px;color:#9a764c}.mode-tabs button.active{background:#ffefc3;color:#65472d;box-shadow:0 2px #cda46c}.mode-panel #mode-copy{font-size:12px;line-height:1.5;margin:9px 0 14px}.mode-top{font-size:10px}.team-buttons button{font-size:11px;padding:10px 4px}.join-label{font-size:9px}.camera-panel{width:325px;padding:12px;bottom:27px;left:30px}.camera-tools button{width:34px;height:33px}.camera-tools select{font-size:11px}.camera-hint{font-size:8px}.camera-heading{margin-bottom:9px}.club-caption{position:absolute;bottom:32px;right:31px;text-align:right;font:600 11px Fredoka,sans-serif;letter-spacing:.09em;color:#a4793d;pointer-events:none}.club-caption>span{font-size:17px;vertical-align:-1px;margin-right:4px}.club-caption i{font:700 8px DM Sans,sans-serif;margin-left:8px;font-style:normal;letter-spacing:.05em}.club-caption small{display:block;font:400 11px Georgia,serif;letter-spacing:.01em;margin-top:6px;color:#b48a4b;font-style:italic}body[data-mode=play] .club-caption{display:none}.play-dock{min-width:320px;padding:13px 16px;gap:20px;background:#fff2cc}.active-row{font-size:23px}.kick-button{width:76px;height:76px}.kick-button b{font-size:17px}.row-options{display:flex;align-items:center;gap:11px;margin-top:9px}.manual{margin:0}.manual summary,.text-button{font-size:10px}.manual[open]{bottom:calc(100% + 5px);right:0}.manual p{font-size:12px}.row-buttons button{font-size:9px}.row-mode{font-size:8px}.play-hint{font-size:10px}body[data-team=river] .active-row{color:#348896}body[data-team=river] .kick-button{background:#479caa;border-color:#346d74;box-shadow:0 3px #2e7784}body[data-team=river] .kick-button.charging{background:#317684}.center-card{width:290px}.center-card p{font-size:13px}.center-card #result-watch{display:block;margin:17px auto 0}.context-card{top:117px;right:30px;width:220px}.context-card p{font-size:12px}.floating-actions{bottom:31px}.replay-label{top:120px}.announcement{background:#dd664c;font-size:26px}body[data-team=river] .announcement{background:#448f9d}@media(pointer:coarse){.touch-pad{display:flex;min-width:120px;height:72px;flex-direction:column;justify-content:center;padding:10px;background:#f5daaa;border:1.5px solid #cda878;border-radius:10px;touch-action:none;-webkit-user-select:none;user-select:none;color:#a17a54;font-size:8px;font-weight:700;letter-spacing:.06em}.play-hint{display:none}.kick-button{width:72px;height:72px}.play-dock{gap:12px}.pad-line{margin-top:14px}}@media(max-width:700px){.topbar{padding:13px 14px;gap:9px}.brand-name{font-size:20px}.brand-sub{font-size:7px;margin-top:5px}.brand-mark{width:39px;height:39px}.brand-mark b{font-size:16px}.brand-mark span{font-size:8px}.scoreboard{min-width:290px;padding:7px 15px;gap:17px;border-radius:13px}.score{font-size:28px;padding-bottom:8px}.score small{font-size:7px}.team{font-size:12px}.team small{font-size:8px}.team-dot{width:11px;height:11px}.mode-panel{top:129px;left:13px;right:13px;width:auto;display:grid;grid-template-columns:auto 1fr;gap:5px 11px;padding:9px 10px}.mode-tabs{grid-column:1;grid-row:1/3;margin:0;width:114px;padding:2px}.mode-tabs button{font-size:13px;padding:6px 7px}.mode-top{grid-column:2;grid-row:1;font-size:8px;align-self:end}.mode-panel #mode-copy{grid-column:2;grid-row:2;font-size:9px;margin:0;line-height:1.35;align-self:start}.team-buttons{grid-column:1/-1;grid-row:3;gap:7px;margin-top:2px}.team-buttons button{width:auto;font-size:10px;padding:8px}.watch-button{grid-column:1/-1;margin-top:4px;font-size:9px}.join-label{display:none}.camera-panel{left:13px;bottom:max(13px,env(safe-area-inset-bottom));width:calc(100% - 26px);padding:9px}.camera-heading{margin-bottom:6px}.camera-hint{font-size:7px}.camera-tools button{height:31px}.camera-tools select{font-size:10px}.camera-panel:has(~.play-dock:not(.hidden)){bottom:111px}.club-caption{display:none}.play-dock{left:13px;right:13px;min-width:0;bottom:max(13px,env(safe-area-inset-bottom));gap:10px;padding:10px}.play-info{min-width:95px;max-width:110px}.active-row{font-size:15px}.play-info .eyebrow{font-size:7px;letter-spacing:.05em}.row-options{margin-top:7px;gap:4px;flex-wrap:wrap}.row-options .text-button,.manual summary{font-size:9px}.manual[open]{left:0;right:auto;bottom:100%;width:min(330px,calc(100vw - 26px))}.manual p{font-size:11px}.touch-pad{display:flex;flex:1;min-width:65px;height:65px;padding:8px}.kick-button{width:65px;height:65px}.kick-button b{font-size:15px}.floating-actions{bottom:211px;max-width:calc(100% - 26px)}body[data-mode=watch] .floating-actions{bottom:114px}.pill{font-size:9px;padding:9px}.context-card{top:245px;right:13px;width:190px;padding:11px}.replay-label{top:242px;font-size:9px;white-space:nowrap}.replay-label small{font-size:7px}.announcement{font-size:19px;top:31%;padding:8px 13px}.center-card{width:255px;top:49%}}@media(max-height:550px)and (orientation:landscape){.topbar{padding:9px 13px;grid-template-columns:1fr auto 1fr}.brand-name{font-size:18px}.brand-sub{font-size:6px}.brand-mark{width:34px;height:34px}.brand-mark b{font-size:15px}.scoreboard{grid-row:1;grid-column:2;min-width:285px;padding:5px 14px;gap:12px}.score{font-size:25px}.team{font-size:11px}.top-actions{grid-column:3}.icon-button,.settings summary{width:31px;height:31px}.mode-panel{left:12px;right:auto;top:65px;width:172px;padding:9px;display:block}.mode-tabs{width:auto;margin-bottom:9px}.mode-panel #mode-copy{font-size:9px;margin:6px 0 9px}.mode-top{font-size:8px}.team-buttons{margin-top:6px}.team-buttons button{font-size:8px;padding:7px 2px}.mode-panel #mode-copy{display:none}.camera-panel{left:12px;bottom:11px;width:250px;padding:7px}.camera-panel:has(~.play-dock:not(.hidden)){bottom:11px}.camera-tools button{width:27px;height:27px}.camera-heading,.camera-heading .text-button{font-size:7px}.camera-tools select{font-size:9px}.camera-hint{display:none}.play-dock{left:auto;right:12px;bottom:11px;width:330px;padding:8px;gap:9px}.play-info{min-width:99px}.active-row{font-size:15px}.touch-pad{height:56px;min-width:85px}.kick-button{width:57px;height:57px}.floating-actions,body[data-mode=watch] .floating-actions{bottom:92px}.context-card{top:65px;right:12px;width:180px}.replay-label{top:65px}.announcement{top:21%;font-size:19px}.club-caption{display:none}.center-card{top:48%;padding:15px}.center-card h2{font-size:24px}.settings-pop{top:38px}.row-options{gap:5px;margin-top:5px}.manual[open]{left:auto;right:0}}
