:root{color-scheme:dark;--navy:#071d31;--panel:#08283eed;--aqua:#31e2e4;--gold:#efd091;--muted:#b8d5df;--line:#ffffff30}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:MSWUI,system-ui,sans-serif;color:#fff;background:var(--navy)}body{min-height:100dvh}button,input,select,a{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--aqua);outline-offset:3px}h1,h2,p{margin:0;text-wrap:pretty}h1,h2{font-weight:600;text-wrap:balance}h1{font-size:36px;line-height:1.1}h2{font-size:24px}p{line-height:1.5}button,input,select{border:1px solid var(--line);border-radius:12px}input,select{padding:12px 16px;background:#08283e;color:#fff;min-height:48px}button{color:inherit}button,a.primary,a.secondary{transition:background .22s cubic-bezier(.32,.72,0,1),transform .22s cubic-bezier(.32,.72,0,1)}button:not(:disabled):active,a.primary:active{transform:scale(.97)}[hidden]{display:none!important}.primary,.secondary,.icon-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 24px;border-radius:12px;border:1px solid var(--line);font-size:18px;line-height:1.2;font-weight:600}.primary{background:var(--aqua);color:#052436;border-color:#86ffff;box-shadow:0 6px 32px #11dfe52a}.primary:hover:not(:disabled){background:#8fffff}.secondary,.icon-button{background:#08283edb;color:#fff}.secondary:hover:not(:disabled),.icon-button:hover{background:#16475e}.icon-button{padding:8px 16px}.language{border:1px solid #efd09188;color:var(--gold);padding:8px 12px;border-radius:8px;line-height:1}.brand{display:flex;flex-direction:column;align-items:center;color:var(--gold);line-height:1}.brand-top{font:600 24px/1.1 MSWDisplay,Georgia,serif;letter-spacing:.16em}.brand strong{font:700 72px/.95 MSWDisplay,Georgia,serif;letter-spacing:.02em}.brand.compact{align-items:flex-start;flex-shrink:0}.compact .brand-top{font-size:16px}.compact strong{font-size:36px}.fine{font-size:14px;color:var(--muted)}.inline{display:flex;gap:8px}.inline input{min-width:0;flex:1}label{display:flex;gap:8px;align-items:center}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:30;max-width:90vw;background:#071d31f5;border:1px solid #31e2e466;border-radius:12px;box-shadow:0 8px 40px #0008;padding:12px 24px;text-align:center;pointer-events:none}#toast:empty{display:none}
.home{display:grid;place-items:center;background:var(--navy) url('/assets/pool.webp') center/cover fixed}.home:before{content:'';position:fixed;inset:0;background:#031a2aad;pointer-events:none}.home>.language{position:absolute;right:24px;top:24px;z-index:1}.welcome{position:relative;width:min(94%,560px);padding:40px;background:#061d32e8;border:1px solid #afdbe644;border-radius:24px;display:flex;flex-direction:column;align-items:center;gap:24px;text-align:center;box-shadow:0 24px 80px #0006}.welcome h1{font-size:30px}.welcome .brand{margin-bottom:8px}.welcome .primary{width:100%}.welcome form{width:100%;display:flex;flex-direction:column;gap:8px;text-align:left}.welcome input{text-transform:uppercase;letter-spacing:.16em}.methods{display:flex;gap:24px;color:var(--gold);font-size:16px}
.host{display:flex;flex-direction:column;min-height:100dvh;background:#051a2c}.host-head{padding:12px 24px;display:flex;gap:24px;align-items:center;justify-content:space-between;background:#071d31;min-height:86px}.race-stats{display:flex;flex-direction:column;text-align:center;min-width:140px}.race-stats #timer{font-size:48px;line-height:1;color:var(--gold);font-variant-numeric:tabular-nums}.race-stats #phase{font-size:14px;color:var(--muted);min-height:20px}.room-tools{display:flex;align-items:center;gap:16px}.room-tools #count{color:var(--muted);font-size:18px}.room-tools .secondary{padding:8px 16px;font-size:16px}.room-tools b{letter-spacing:.1em;color:var(--gold)}.host-main{display:flex;flex-direction:column;flex:1}.stage{position:relative;aspect-ratio:16/8.5;width:100%;max-height:calc(100dvh - 230px);min-height:360px;overflow:hidden;background:#1484ac url('/assets/pool.webp') center/cover}#pool{display:block;width:100%;height:100%;object-fit:fill}.lobby-overlay{position:absolute;inset:0;display:grid;grid-template-columns:minmax(260px,.8fr) 1.4fr;gap:32px;padding:32px;background:#06283b99;backdrop-filter:blur(4px)}.join-card{max-width:380px;justify-self:center;align-self:center;padding:24px;background:var(--panel);border:1px solid #efd09166;border-radius:24px;display:flex;flex-direction:column;gap:12px;align-items:center;text-align:center}.join-card h1{font-size:30px}.join-card img{width:min(20vw,180px);height:auto;background:#fff;border-radius:12px}.join-card>strong{font-size:36px;letter-spacing:.16em;color:var(--gold)}.join-card p{font-size:14px;max-width:260px}.join-card button{font-size:14px;min-height:36px;padding:8px 16px}.lobby-players{display:flex;flex-direction:column;gap:12px;min-height:0;padding:16px 0}.lobby-players p{font-size:16px;color:#e0f5ff}.lobby-players #playersGrid{overflow:auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;align-content:start;min-height:0}.player-tile{background:#06253be8;border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;gap:8px;padding:8px;min-width:0}.player-tile img{width:48px;height:48px;border-radius:50%;object-fit:cover;background:#13455b}.player-tile b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;font-size:18px}.player-tile small{color:var(--muted)}.player-tile.offline{opacity:.5}.countdown{position:absolute;inset:0;display:grid;place-items:center;font-size:128px;font-weight:700;color:var(--gold);background:#071d3166;text-shadow:0 6px 28px #001421}.leader-strip{display:flex;justify-content:center;gap:16px;padding:8px 24px;background:#08283e;min-height:62px;overflow:auto}.leader{display:flex;align-items:center;gap:8px;min-width:160px;max-width:34vw}.leader img{width:44px;height:44px;object-fit:cover;border-radius:50%;background:#16475e}.leader .medal{font-size:30px;color:var(--gold)}.leader b{display:block;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leader small{color:var(--aqua)}.host-bottom{padding:12px 24px;display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.host-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.host-controls>label{font-size:14px;color:var(--muted)}.host-controls select{min-height:44px;padding:8px}.host-controls button{min-height:44px;font-size:16px;padding:8px 16px}.group-controls{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted)}.group-controls input{min-height:auto}.group-controls label{gap:4px}.group-controls #network{max-width:160px}.results-panel{position:absolute;inset:24px 12%;padding:24px;border:1px solid #efd09188;border-radius:24px;background:#06253bf2;backdrop-filter:blur(12px);display:flex;flex-direction:column;gap:16px}.results-panel h1{text-align:center;color:var(--gold)}#resultList{overflow:auto;display:grid;gap:8px}.result-row{display:grid;grid-template-columns:48px 44px 1fr auto;align-items:center;gap:12px;padding:8px 16px;background:#124159;border-radius:12px}.result-row img{width:44px;height:44px;border-radius:50%;object-fit:cover}.result-row strong{color:var(--gold);font-size:24px}.result-row b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-row small{color:var(--muted)}dialog{background:#06253b;color:#fff;border:1px solid #efd09188;border-radius:24px;padding:32px;text-align:center;max-width:90vw;max-height:90dvh}dialog::backdrop{background:#00101dbb;backdrop-filter:blur(6px)}dialog img{display:block;width:min(60vw,320px);height:auto;margin:16px auto;border-radius:12px}dialog strong{display:block;letter-spacing:.16em;font-size:36px;color:var(--gold)}dialog p{max-width:320px;color:var(--muted)}.close{position:absolute;right:8px;top:8px;font-size:24px;border:0;background:none;width:36px;height:36px}
.phone{background:var(--navy) url('/assets/pool.webp') center/cover fixed}.phone:before{content:'';position:fixed;inset:0;background:#031e31d9;pointer-events:none}.phone-head{position:relative;display:flex;align-items:center;justify-content:space-between;padding:16px 24px;max-width:560px;margin:auto}.phone-main{position:relative;max-width:520px;margin:0 auto;padding:0 24px calc(24px + env(safe-area-inset-bottom));text-align:center}.connection{display:inline-flex;padding:4px 16px;border:1px solid #54eab55c;border-radius:24px;background:#08283e;font-size:14px;color:#6cf3bf;margin:4px auto 16px;min-height:26px;align-items:center;gap:8px}.connection:before{content:'';width:8px;height:8px;border-radius:50%;background:currentColor}.connection.offline{color:#f9b68b;border-color:#f9b68b66}#join{display:flex;flex-direction:column;gap:12px;text-align:left}#join h1{font-size:30px;text-align:center}.avatars{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:8px 0}.avatar-choice{display:flex;flex-direction:column;align-items:center;min-width:0;padding:4px;background:#08283edb;border:1px solid #95c6d33d;border-radius:12px;gap:4px}.avatar-choice img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;background:#13455b}.avatar-choice b{font-size:14px;line-height:1.2;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar-choice[aria-pressed=true]{border-color:var(--aqua);background:#10637d;box-shadow:0 0 0 2px #31e2e455}.player-card{display:flex;align-items:center;justify-content:center;gap:16px;margin-bottom:16px;text-align:left}.player-card img{width:96px;height:96px;object-fit:cover;border-radius:24px;border:2px solid var(--aqua);background:#16475e}.player-card h1{font-size:30px;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-card span{color:var(--gold);font-size:14px}.phone-stats{display:grid;grid-template-columns:1.5fr 1fr .8fr;gap:8px}.phone-stats>div{border:1px solid var(--line);border-radius:16px;background:#08283edb;padding:12px 8px;display:flex;flex-direction:column;gap:4px;justify-content:center;min-width:0}.phone-stats strong{font-size:24px;font-variant-numeric:tabular-nums;line-height:1.1}.phone-stats span{font-size:12px;color:var(--muted)}.progress,.effort-meter{height:8px;border-radius:8px;background:#113e54;overflow:hidden;margin-top:4px}.progress i,.effort-meter i{display:block;height:100%;background:var(--aqua);width:0%;transition:width .16s cubic-bezier(.32,.72,0,1)}.race-status{min-height:44px;display:grid;place-items:center;font-size:18px;font-weight:600;color:var(--gold);margin:8px 0}.mode-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.mode-tabs button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:56px;background:#08283e;border:1px solid #629fb855;border-radius:16px;padding:8px;font-size:16px}.mode-tabs button span{font-size:28px;color:var(--gold)}.mode-tabs button[aria-pressed=true]{background:#0d7c95;border-color:var(--aqua);box-shadow:0 0 20px #2cf0f233}#enableSensor{width:100%;margin-top:12px}#sensorStatus{color:var(--muted);font-size:14px;min-height:20px;margin:4px 0}.swim-button{position:relative;display:grid;place-items:center;margin:4px auto 16px;width:min(100%,300px);aspect-ratio:1;border:4px solid var(--gold);border-radius:50%;background:#0a94b9;box-shadow:inset 0 0 0 8px #7df9ff66,inset 0 0 40px #1df4ff88,0 12px 36px #0005;color:white;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}.swim-button strong{font-size:48px;position:relative;text-shadow:0 3px 8px #052d49}.swim-button .ripple{position:absolute;width:72%;height:72%;border:2px solid #a9ffff77;box-shadow:0 0 0 18px #9bffff22,0 0 0 40px #9bffff1a;border-radius:50%;pointer-events:none}.swim-button.fired{background:#38dbe9;box-shadow:inset 0 0 0 8px #fff8,0 0 40px #41f7fb88}.effort-meter{height:12px;max-width:240px;margin:8px auto 12px}.phone-main #modeHint{font-size:16px;max-width:410px;margin:0 auto 8px;color:#dfedf3}.phone-main #privacy{margin:4px 0 12px}.text-link{display:block;text-align:center;color:var(--muted);text-decoration:underline;margin-top:16px;padding:8px}.phone-main #closed{display:flex;flex-direction:column;gap:24px;padding-top:40px}
@media(max-width:900px){.host-head{gap:8px;padding:8px 12px}.host-head .compact strong{font-size:24px}.host-head .compact .brand-top{font-size:12px}.race-stats #timer{font-size:36px}.room-tools{gap:8px}.room-tools #count{display:none}.room-tools .secondary span{display:none}.lobby-overlay{padding:16px;gap:16px;grid-template-columns:.8fr 1.2fr}.join-card{padding:16px}.join-card h1{font-size:24px}.lobby-players #playersGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.lobby-players p{font-size:14px}.host-bottom{padding:8px 12px}.results-panel{inset:16px 5%}.results-panel h1{font-size:30px}.host-controls button{font-size:14px}.leader-strip{gap:8px;padding:8px}.leader{min-width:130px}.leader img{width:36px;height:36px}.leader b{max-width:110px}.host-controls>label>span{display:none}}
@media(max-width:540px){.welcome{padding:32px 24px}.welcome .brand strong{font-size:60px}.welcome h1{font-size:24px}.phone-head{padding:12px 16px}.phone-main{padding-left:16px;padding-right:16px}.phone-head .compact strong{font-size:30px}.phone-head .compact .brand-top{font-size:14px}.connection{margin-bottom:12px}.player-card img{width:72px;height:72px;border-radius:16px}.player-card{gap:12px;margin-bottom:12px}.player-card h1{font-size:24px;max-width:240px}.phone-stats strong{font-size:20px}.phone-stats>div{padding:12px 4px}.swim-button{width:min(74vw,280px)}.mode-tabs button{font-size:14px;gap:4px;min-height:52px}.mode-tabs button span{font-size:24px}.phone-main h1{font-size:24px}.avatars{gap:6px}.avatar-choice b{font-size:12px}.host-head .brand{max-width:120px}.room-tools .secondary{padding:8px}.race-stats{min-width:75px}.race-stats #timer{font-size:30px}.race-stats #phase{font-size:12px}.lobby-overlay{grid-template-columns:1fr;overflow:auto;align-content:start}.join-card{width:100%;max-width:100%}.join-card img{width:140px}.lobby-players #playersGrid{grid-template-columns:repeat(2,minmax(0,1fr));max-height:230px}.lobby-players{padding:0}.stage{max-height:none;min-height:560px;aspect-ratio:auto}.results-panel{inset:12px}.result-row{padding:8px;gap:8px;grid-template-columns:28px 36px 1fr auto}.result-row img{width:36px;height:36px}.leader{min-width:110px}.leader img{display:none}.leader .medal{font-size:24px}.host-controls{justify-content:center}.host-bottom{justify-content:center}.countdown{font-size:80px}}
@media(max-height:600px) and (orientation:landscape){.phone-head{padding:8px 16px}.phone-main{max-width:900px}.phone .player-card{float:left;width:28%;margin-top:24px;flex-direction:column;text-align:center}.phone .phone-stats{margin-left:32%}.phone #controller>.race-status,.phone #controller>.mode-tabs,.phone #controller>#modeHint,.phone #controller>#sensorStatus,.phone #controller>#enableSensor{margin-left:32%}.phone .mode-tabs{width:66%}.phone .swim-button{width:170px;margin-left:42%;margin-top:8px}.phone .swim-button strong{font-size:36px}.phone .race-status{min-height:28px;font-size:16px}.phone .phone-stats>div{padding:4px}.phone .mode-tabs button{min-height:40px}.phone .connection{position:absolute;right:24px;top:-44px}.phone #sensorStatus{min-height:0}.phone .effort-meter,.phone .text-link{margin-left:32%}.phone .avatars{grid-template-columns:repeat(8,minmax(0,1fr))}.phone #join h1{font-size:24px}.phone .avatar-choice img{max-height:70px;object-fit:contain}.stage{min-height:280px}.host-head{min-height:60px}.host-controls button{min-height:36px}.leader-strip{min-height:44px}.host-main .stage{max-height:calc(100dvh - 180px)}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
