:root{--bg:#0b0e13;--surface:#151a22;--surface-2:#1d2430;--line:#262e3b;--text:#f4f6f8;--muted:#8a94a6;--a:#ff6a3d;--a-soft:#ff6a3d24;--b:#4fe3c1;--b-soft:#4fe3c11f;--danger:#ff4d6d;--radius:22px;--font:"Plus Jakarta Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);--sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{color:var(--text);font-family:var(--font);overscroll-behavior:none;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;background:#000;overflow:hidden}input,textarea{-webkit-user-select:text;user-select:text}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}h1,h2,p{margin:0}ul{margin:0;padding:0;list-style:none}.muted{color:var(--muted)}.team-a-text{color:var(--a)}.team-b-text{color:var(--b)}.frame{background:var(--bg);position:fixed;inset:0;overflow:hidden;container:app/size}@media (width>=1000px) and (height>=520px) and (hover:hover) and (pointer:fine){body{background:radial-gradient(60% 50% at 20% 10%,#ff6a3d29,#0000 70%),radial-gradient(50% 50% at 90% 100%,#4fe3c11f,#0000 70%),#05070a}.frame{border:10px solid #1a1f27;border-radius:42px;width:864px;height:410px;inset:50% auto auto 50%;transform:translate(-50%,-50%);box-shadow:0 0 0 2px #2a313c,0 40px 80px #0009}body:after{content:"Rally is built for phones — showing the landscape layout.";color:var(--muted);font-family:var(--font);letter-spacing:.02em;font-size:13px;position:fixed;top:calc(50% + 235px);left:50%;transform:translate(-50%)}}.screen{flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden}.btn{letter-spacing:-.01em;border:1px solid #0000;border-radius:16px;justify-content:center;align-items:center;gap:10px;min-height:50px;padding:0 20px;font-size:16px;font-weight:700;transition:transform 80ms,background .15s,opacity .15s;display:inline-flex}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;cursor:default;transform:none}.btn-lg{border-radius:18px;min-height:58px;font-size:17px}.btn-primary{background:var(--a);color:#14110f}.btn-secondary{background:var(--surface-2);border-color:var(--line);color:var(--text)}.btn-ghost{color:var(--text);border-color:var(--line);background:0 0}.btn-danger{color:var(--danger);background:0 0}.btn-ig{color:#fff;background:linear-gradient(100deg,#ff6a3d,#ff3d8a 60%,#c13584)}.icon-btn{border:1px solid var(--line);background:var(--surface);border-radius:12px;justify-content:center;align-items:center;width:42px;height:42px;display:inline-flex}.icon-btn:active{background:var(--surface-2)}.topbar{padding:calc(var(--sat) + 12px) calc(var(--sar) + 16px) 12px calc(var(--sal) + 16px);align-items:center;gap:12px;display:flex}.topbar-title{letter-spacing:-.01em;flex:1;font-size:18px;font-weight:800}.topbar-meta{color:var(--muted);font-size:13px;font-weight:600}.wordmark{letter-spacing:.18em;color:var(--text);align-items:center;gap:8px;font-size:22px;font-weight:800;display:inline-flex}.wordmark-ball{background:var(--a);width:14px;height:14px;box-shadow:0 0 0 4px var(--a-soft);border-radius:50%}.tagline{color:var(--muted);font-size:13px;font-weight:600}.dot{border-radius:50%;flex:none;width:9px;height:9px;margin-right:8px;display:inline-block}.dot-a{background:var(--a)}.dot-b{background:var(--b)}.chip{letter-spacing:.12em;text-transform:uppercase;border-radius:999px;align-items:center;padding:5px 10px;font-size:11px;font-weight:800;display:inline-flex}.section-title{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;font-size:13px;font-weight:800}.sheet-backdrop{z-index:20;background:#0000008c;justify-content:center;align-items:flex-end;animation:.15s fade;display:flex;position:absolute;inset:0}.sheet{background:var(--surface);border:1px solid var(--line);width:100%;padding:20px 20px calc(var(--sab) + 20px);border-radius:24px 24px 0 0;animation:.2s rise}.sheet-title{letter-spacing:-.01em;font-size:20px;font-weight:800}.sheet-sub{color:var(--muted);margin-top:4px;margin-bottom:16px;font-weight:600}.sheet-actions{gap:10px;display:grid}@container app (orientation:landscape){.sheet-backdrop{align-items:center}.sheet{border-radius:24px;width:min(460px,90cqw);padding-bottom:20px}.sheet-actions{grid-template-columns:1fr 1fr}.sheet-actions .btn-primary{grid-column:1/-1}}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(24px)}}.home-header{padding:calc(var(--sat) + 18px) calc(var(--sar) + 20px) 10px calc(var(--sal) + 20px);justify-content:space-between;align-items:baseline;display:flex}.home-body{padding:6px calc(var(--sar) + 20px) calc(var(--sab) + 24px) calc(var(--sal) + 20px);flex-direction:column;flex:1;gap:24px;display:flex;overflow-y:auto}.hero-card{border-radius:var(--radius);background:radial-gradient(120% 90% at 100% 0%, #ff6a3d5c, transparent 60%), radial-gradient(80% 60% at 0% 100%, #4fe3c12e, transparent 60%), var(--surface);border:1px solid var(--line);flex-direction:column;gap:10px;padding:24px 22px 22px;display:flex;position:relative;overflow:hidden}.hero-card:after{content:"";pointer-events:none;border:14px solid #ff6a3d40;border-radius:50%;width:160px;height:160px;position:absolute;top:-40px;right:-40px}.hero-kicker{letter-spacing:.16em;text-transform:uppercase;color:var(--a);font-size:11px;font-weight:800}.hero-title{letter-spacing:-.02em;font-size:30px;font-weight:800;line-height:1.05}.hero-sub{color:var(--muted);max-width:34ch;margin-bottom:8px;font-size:14px;font-weight:600}.ongoing-card{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:12px;width:100%;margin-top:12px;padding:16px 18px;display:flex}.ongoing-card:active{background:var(--surface-2)}.ongoing-kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--b);align-items:center;gap:8px;font-size:11px;font-weight:800;display:flex}.live-dot{background:var(--b);border-radius:50%;width:8px;height:8px;animation:1.6s infinite pulse;box-shadow:0 0 #4fe3c199}@keyframes pulse{70%{box-shadow:0 0 0 8px #4fe3c100}to{box-shadow:0 0 #4fe3c100}}.ongoing-title{margin-top:6px;font-size:16px;font-weight:800}.ongoing-score{margin-top:2px;font-size:20px;font-weight:800}.ongoing-cta{color:var(--a);flex:none;align-items:center;gap:4px;font-weight:800;display:inline-flex}.install-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);align-items:center;gap:12px;margin-top:12px;padding:14px 16px;display:flex}.install-icon{background:var(--a-soft);width:40px;height:40px;color:var(--a);border-radius:12px;flex:none;justify-content:center;align-items:center;display:inline-flex}.install-body{flex:1;min-width:0}.install-title{font-size:14px;font-weight:800}.install-hint{color:var(--muted);margin-top:2px;font-size:12px;font-weight:600}.install-btn{flex:none;min-height:38px;padding:0 16px;font-size:14px}.install-dismiss{width:30px;height:30px;color:var(--muted);background:0 0;border-radius:50%;flex:none;justify-content:center;align-items:center;display:inline-flex}.install-dismiss:active{background:var(--surface-2)}.empty{color:var(--muted);border:1px dashed var(--line);border-radius:var(--radius);text-align:center;padding:18px;font-size:14px;font-weight:600}.match-list{gap:10px;display:grid}.match-row{text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:18px;grid-template-columns:1fr auto;grid-template-areas:"main score""meta score";gap:4px 14px;width:100%;padding:14px 16px;display:grid}.match-row:active{background:var(--surface-2)}.match-row-main{grid-area:main;gap:4px;display:grid}.match-row-team{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;font-size:15px;font-weight:700;display:flex;overflow:hidden}.match-row-team.won{color:var(--text)}.match-row-score{text-align:right;color:var(--muted);grid-area:score;gap:4px;font-size:20px;font-weight:800;line-height:1.15;display:grid}.match-row-score .won{color:var(--text)}.match-row-meta{color:var(--muted);grid-area:meta;gap:12px;margin-top:4px;font-size:12px;font-weight:600;display:flex}@container app (orientation:landscape){.home-header{padding-top:calc(var(--sat) + 12px);padding-bottom:6px}.home-body{padding-bottom:calc(var(--sab) + 16px);flex-direction:row;gap:20px}.home-hero{flex:0 0 46%}.home-recent{flex:1;min-width:0}.hero-card{gap:8px;padding:18px 20px}.hero-title{font-size:24px}.hero-sub{font-size:13px}.ongoing-card{padding:12px 16px}}.format-chip{letter-spacing:.12em;text-transform:uppercase;background:var(--a-soft);color:var(--a);border-radius:999px;padding:6px 10px;font-size:11px;font-weight:800}.format-chip.doubles{background:var(--b-soft);color:var(--b)}.form-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.form-scroll{-webkit-overflow-scrolling:touch;min-height:0;padding:4px calc(var(--sar) + 16px) 16px calc(var(--sal) + 16px);flex-direction:column;flex:1;gap:14px;display:flex;overflow-y:auto}.team-cards{gap:14px;display:grid}.team-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);gap:10px;min-width:0;margin:0;padding:14px 16px 16px;display:grid}.team-card.team-a{background:linear-gradient(180deg, var(--a-soft), transparent 40%), var(--surface);border-color:#ff6a3d59}.team-card.team-b{background:linear-gradient(180deg, var(--b-soft), transparent 40%), var(--surface);border-color:#4fe3c14d}.team-legend{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);align-items:center;margin-bottom:2px;font-size:12px;font-weight:800;display:flex}.field{gap:6px;display:grid}.field-label{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:800}.field input{border:1px solid var(--line);background:var(--bg);width:100%;min-height:46px;color:var(--text);font:inherit;border-radius:14px;outline:none;padding:0 14px;font-size:16px;font-weight:700}.field input::placeholder{color:#5b6577;font-weight:600}.field input:focus{border-color:var(--a);box-shadow:0 0 0 3px var(--a-soft)}.team-b .field input:focus{border-color:var(--b);box-shadow:0 0 0 3px var(--b-soft)}.rule-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;display:flex}.rule-hint{color:var(--muted);margin-top:4px;font-size:13px;font-weight:600}.segmented{background:var(--bg);border:1px solid var(--line);border-radius:14px;flex:none;padding:4px;display:inline-flex}.segmented button{color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:10px;padding:8px 12px;font-size:13px;font-weight:700}.segmented button.on{background:var(--surface-2);color:var(--text)}.form-footer{padding:12px calc(var(--sar) + 16px) calc(var(--sab) + 16px) calc(var(--sal) + 16px);background:var(--bg);border-top:1px solid var(--line);flex:none;display:grid}@container app (orientation:landscape){.form-scroll{gap:10px;padding-top:0}.team-cards{grid-template-columns:1fr 1fr;gap:12px}.team-card{gap:8px;padding-bottom:12px}.field input{min-height:40px;font-size:15px}.rule-card{padding:10px 14px}.form-footer{padding-top:8px;padding-bottom:calc(var(--sab) + 8px)}}.board{padding:var(--sat) var(--sar) var(--sab) var(--sal);background:var(--bg);flex-direction:column;display:flex}.side{background:var(--surface);min-width:0;min-height:0;color:var(--text);text-align:center;border:0;flex-direction:column;flex:1 1 0;justify-content:space-between;align-items:center;padding:6cqh 6cqw;transition:background .15s;display:flex;position:relative;overflow:hidden;container-type:size}.side-a{--team:var(--a);--team-soft:var(--a-soft)}.side-b{--team:var(--b);--team-soft:var(--b-soft)}.side:before{content:"";background:radial-gradient(90% 70% at 50% 100%, var(--team-soft), transparent 70%);opacity:.9;pointer-events:none;position:absolute;inset:0}.side:active{background:var(--surface-2)}.side-flash{background:var(--team);opacity:0;pointer-events:none;position:absolute;inset:0}.side>*{position:relative}.side-head{align-items:center;gap:8px;max-width:100%;display:flex}.serve{opacity:0;flex:none;justify-content:center;align-items:center;width:14px;height:14px;transition:opacity .2s;display:inline-flex}.serve.on{opacity:1}.serve-ball{background:#d8ff3d;border-radius:50%;width:10px;height:10px;box-shadow:0 0 0 3px #d8ff3d40}.side-name{letter-spacing:-.01em;color:var(--team);white-space:nowrap;text-overflow:ellipsis;max-width:80cqw;font-size:clamp(15px,6cqh,22px);font-weight:800;overflow:hidden}.side-players{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:88cqw;margin-top:-2cqh;font-size:clamp(12px,4.2cqh,15px);font-weight:600;overflow:hidden}.side-point{letter-spacing:-.05em;font-variant-numeric:tabular-nums;color:var(--text);font-size:min(52cqh,40cqw);font-weight:800;line-height:1}.side-point.ad{color:var(--team)}.side-foot{align-items:center;height:26px;display:flex}.tap-hint{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;opacity:.6;font-size:12px;font-weight:700}.chip-gp{background:var(--team);color:#14110f}.rail{background:var(--bg);border-top:1px solid var(--line);border-bottom:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:8px;min-height:100px;padding:10px 12px;display:flex}.rail-btn{border:1px solid var(--line);background:var(--surface);width:46px;height:46px;color:var(--text);border-radius:14px;flex:none;justify-content:center;align-items:center;display:inline-flex}.rail-btn:active{background:var(--surface-2)}.rail-btn:disabled{opacity:.35;cursor:default}.rail-center{flex-direction:column;flex:1;align-items:center;gap:2px;min-width:0;display:flex}.clock{color:var(--muted);font-variant-numeric:tabular-nums;letter-spacing:.08em;font-size:12px;font-weight:700}.match-score{letter-spacing:-.04em;font-variant-numeric:tabular-nums;align-items:baseline;gap:8px;font-size:44px;font-weight:800;line-height:1;display:flex}.match-score-dash{color:var(--muted);font-size:28px;font-weight:600}.game-history{flex-wrap:wrap;justify-content:center;gap:3px;max-width:200px;margin-top:2px;display:flex}.tick{border-radius:3px;width:10px;height:5px}.tick-a{background:var(--a)}.tick-b{background:var(--b)}.status{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:11px;font-weight:800;overflow:hidden}.status.deuce{color:#d8ff3d}.toast{background:var(--surface);border:1px solid var(--line);pointer-events:none;z-index:10;border-radius:20px;flex-direction:column;align-items:center;gap:2px;padding:14px 26px;animation:1.6s forwards toast;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 20px 50px #00000080}.toast-a{--team:var(--a)}.toast-b{--team:var(--b)}.toast-kicker{letter-spacing:.2em;text-transform:uppercase;color:var(--team);font-size:11px;font-weight:800}.toast-title{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;max-width:70cqw;font-size:20px;font-weight:800;overflow:hidden}.toast-score{color:var(--muted);font-weight:700}@keyframes toast{0%{opacity:0;transform:translate(-50%,-50%)scale(.9)}12%{opacity:1;transform:translate(-50%,-50%)scale(1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-50%)scale(.98)}}@container app (orientation:landscape){.board{flex-direction:row}.side{padding:5cqh 5cqw}.side-name{font-size:clamp(15px,7cqh,22px)}.side-players{font-size:clamp(12px,5cqh,15px)}.side-point{font-size:min(52cqh,42cqw)}.rail{border-top:0;border-bottom:0;border-left:1px solid var(--line);border-right:1px solid var(--line);flex-direction:column;width:112px;height:auto;min-height:0;padding:12px 6px}.rail-center{justify-content:center;gap:4px}.match-score{gap:4px;font-size:34px}.match-score-dash{font-size:20px}.game-history{max-width:88px}.status{max-width:88px;font-size:10px}}.result-body{min-height:0;padding:0 calc(var(--sar) + 16px) calc(var(--sab) + 16px) calc(var(--sal) + 16px);flex-direction:column;flex:1;gap:16px;display:flex;overflow-y:auto}.story-preview{aspect-ratio:9/16;border:1px solid var(--line);background:var(--surface);border-radius:20px;flex:none;align-self:center;width:min(100%,300px);position:relative;overflow:hidden;box-shadow:0 20px 50px #00000073}.story-preview img,.story-preview video{object-fit:cover;width:100%;height:100%;display:block}.story-progress{background:#ffffff1f;height:5px;position:absolute;bottom:0;left:0;right:0}.story-progress>i{background:linear-gradient(90deg, var(--a), #ff3d8a);height:100%;transition:width .2s linear;display:block}.btn-progress{opacity:.85}.spinner{border:2.5px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.story-skeleton{width:100%;height:100%;color:var(--muted);justify-content:center;align-items:center;font-size:14px;font-weight:600;display:flex}.result-panel{flex-direction:column;gap:16px;display:flex}.result-summary{text-align:center}.result-kicker{letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:800}.result-winner{letter-spacing:-.02em;margin-top:4px;font-size:24px;font-weight:800}.result-score{letter-spacing:-.04em;justify-content:center;align-items:baseline;gap:12px;margin-top:2px;font-size:44px;font-weight:800;line-height:1.1;display:flex}.result-meta{color:var(--muted);justify-content:center;gap:8px;margin-top:4px;font-size:13px;font-weight:600;display:flex}.result-actions{gap:10px;display:grid}.note{text-align:center;color:var(--text);padding:0 8px;font-size:13px;font-weight:600}.note.muted{color:var(--muted)}@container app (orientation:landscape){.result-body{flex-direction:row;align-items:stretch;gap:20px;overflow:hidden}.story-preview{aspect-ratio:9/16;border-radius:14px;align-self:stretch;width:auto;height:100%}.result-panel{flex:1;justify-content:center;gap:12px;min-width:0;overflow-y:auto}.result-summary{text-align:left}.result-score,.result-meta{justify-content:flex-start}.result-score{font-size:36px}.result-actions{grid-template-columns:1fr 1fr}.result-actions .btn-ig,.result-actions .note{grid-column:1/-1}.note{text-align:left;padding:0}}
