:root{--bg: #10141f;--bg-card: #1a2030;--bg-raised: #232b3f;--text: #eef1f8;--text-dim: #97a0b5;--accent: #ff7a1a;--live: #ff3b4e;--warn: #ffb020;--ok: #2ecc71;--border: #2c3650;--radius: 12px}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}.page{max-width:640px;margin:0 auto;padding:12px 14px calc(28px + env(safe-area-inset-bottom))}.center{display:flex;justify-content:center;padding:40px 0}.empty,.timeline-empty{color:var(--text-dim);text-align:center;padding:32px 12px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 0 12px}.brand{font-size:1.25rem;margin:0}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-raised);color:var(--text);font-size:.95rem;padding:9px 14px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px;transition:filter .12s ease,transform .05s ease}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;cursor:default}.btn-ghost{background:transparent}.btn-accent{background:var(--accent);border-color:var(--accent);color:#19120a;font-weight:700}.btn-danger{background:transparent;border-color:var(--live);color:var(--live)}.btn-icon{min-width:42px;padding:9px}.btn-big{min-height:56px;font-size:1.15rem;font-weight:700;flex:1}.badge{display:inline-block;font-size:.7rem;font-weight:800;letter-spacing:.06em;border-radius:999px;padding:4px 10px;text-transform:uppercase}.badge-live{background:var(--live);color:#fff;animation:pulse 1.6s infinite}.badge-scheduled{background:var(--bg-raised);color:var(--text-dim);border:1px solid var(--border)}.badge-finished{background:var(--bg-raised);color:var(--ok);border:1px solid var(--border)}.badge-connection_lost{background:var(--warn);color:#221a04}.badge-cancelled{background:var(--bg-raised);color:var(--text-dim);text-decoration:line-through}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.day-nav{display:flex;align-items:center;gap:8px;margin-bottom:12px}.day-label{flex:1;position:relative;text-align:center;border:1px solid var(--border);border-radius:var(--radius);padding:9px;background:var(--bg-card)}.day-label input[type=date]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;width:100%}.filters{display:grid;gap:8px;margin-bottom:12px}select,input[type=text],input[type=email],input[type=password],input[type=datetime-local],input[type=date],textarea{width:100%;background:var(--bg-card);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);padding:10px 12px;font-size:1rem;min-height:44px}.match-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}.match-card{display:block;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:12px;color:inherit;text-decoration:none}.match-card-top{display:flex;align-items:center;gap:10px;margin-bottom:10px}.match-hour{color:var(--text-dim);font-weight:600;margin-left:auto}.live-clock{font-variant-numeric:tabular-nums;font-weight:700;color:var(--live);margin-left:auto}.match-card-teams{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px}.team{display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;font-weight:600;font-size:.92rem}.match-score{text-align:center;font-size:1.5rem;font-variant-numeric:tabular-nums}.vs{color:var(--text-dim);font-size:1.1rem}.match-card-bottom{display:flex;align-items:center;gap:10px;margin-top:10px;color:var(--text-dim);font-size:.85rem}.caster{display:inline-flex;align-items:center;gap:6px;margin-left:auto}.league-name{color:var(--text-dim)}.team-logo{border-radius:50%;object-fit:cover;background:var(--bg-raised)}.team-logo-fallback,.avatar-fallback{display:inline-flex;align-items:center;justify-content:center;background:var(--bg-raised);border-radius:50%;color:var(--accent);font-weight:800}.avatar{border-radius:50%;object-fit:cover}.scoreboard{position:sticky;top:0;z-index:10;background:var(--bg);padding:8px 0 10px;border-bottom:1px solid var(--border);margin-bottom:12px}.scoreboard-status{display:flex;align-items:center;gap:10px;margin-bottom:10px}.sched-time{color:var(--text-dim)}.scoreboard-main{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px}.team-big .team-name{font-size:.95rem}.score-center{text-align:center;display:flex;flex-direction:column;gap:4px;min-width:110px}.score-big{font-size:2.3rem;font-weight:800;font-variant-numeric:tabular-nums}.score-big em{font-style:normal;color:var(--text-dim);font-size:1.6rem;padding:0 4px}.vs-big{font-size:1.6rem}.clock-line{color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums}.scoreboard-caster{display:flex;align-items:center;gap:8px;margin-top:10px;color:var(--text-dim);font-size:.9rem}.banner{border-radius:var(--radius);padding:10px 12px;margin-top:10px;font-size:.92rem}.banner-warn{background:#ffb0201f;border:1px solid var(--warn);color:var(--warn)}.banner-offline{background:#ffb0201f;border:1px solid var(--warn);color:var(--warn);position:sticky;top:0;z-index:30;margin-bottom:10px}.timeline{list-style:none;margin:0;padding:0;display:grid;gap:8px}.entry{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px}.entry-auto{background:transparent}.entry-broadcast_started,.entry-broadcast_finished,.entry-quarter_started,.entry-quarter_ended,.entry-overtime_started{border-style:dashed}.entry-connection_lost,.entry-connection_restored{border-color:var(--warn)}.entry-meta{display:flex;gap:10px;font-size:.75rem;color:var(--text-dim);margin-bottom:4px}.entry-moment{font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}.entry-edited{font-style:italic}.entry-text{white-space:pre-wrap;word-break:break-word}.entry-image{max-width:100%;border-radius:8px;margin-top:8px;display:block}.entry-pending{font-size:.75rem;color:var(--warn);margin-top:6px}.entry-actions{display:flex;gap:8px;margin-top:8px}.entry-actions .btn{min-height:32px;padding:4px 10px;font-size:.82rem}.form{display:grid;gap:12px}.form label{display:grid;gap:6px;font-size:.9rem;color:var(--text-dim)}.form-error{color:var(--live);font-size:.9rem}.form-row{display:flex;gap:8px}.console-score{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;text-align:center}.console-clock{display:flex;align-items:center;justify-content:center;gap:10px;margin:10px 0;font-variant-numeric:tabular-nums}.console-clock .time{font-size:2rem;font-weight:800}.score-pads{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}.score-pad{display:grid;gap:8px}.score-pad h3{margin:0;text-align:center;font-size:.95rem}.score-pad .pad-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.comment-box{display:flex;gap:8px;align-items:flex-end;margin:12px 0}.comment-box textarea{flex:1;resize:none}.attach-preview{position:relative;display:inline-block;margin:6px 0}.attach-preview img{height:64px;border-radius:8px;display:block}.attach-preview button{position:absolute;top:-8px;right:-8px}.cards{display:grid;gap:10px}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:12px}.card-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.card-row .grow{flex:1;min-width:120px}.tabs{display:flex;gap:6px;margin-bottom:14px;overflow-x:auto}.tab{white-space:nowrap}.tab.active{background:var(--accent);border-color:var(--accent);color:#19120a;font-weight:700}.checklist{display:grid;gap:6px;max-height:200px;overflow-y:auto;padding:4px 0}.checklist label{display:flex;align-items:center;gap:8px;font-size:.95rem;color:var(--text)}.logo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:8px}.logo-grid .logo-option{border:2px solid transparent;border-radius:10px;padding:4px;background:var(--bg-raised);cursor:pointer}.logo-grid .logo-option.selected{border-color:var(--accent)}.logo-grid img{width:100%;display:block}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.muted{color:var(--text-dim);font-size:.88rem}h2.section-title{font-size:1.05rem;margin:18px 0 10px}
