*{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:dark;font-family:Inter,Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;background:#0b1014;color:#eef4ff}body{min-width:320px;min-height:100vh;background:linear-gradient(135deg,rgba(47,139,158,.12),transparent 34%),linear-gradient(160deg,#0b1014,#111a20 48%,#0f1216)}button{font:inherit}.app-shell{min-height:100vh}.topbar{position:sticky;top:0;z-index:20;height:64px;background:#0a0e12f5;border-bottom:1px solid rgba(63,175,194,.34);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;width:min(1600px,calc(100% - 48px));height:64px;margin:0 auto}.topbar-left{display:inline-flex;align-items:center;flex-wrap:wrap;gap:10px;min-width:0}.nav-title{color:#fff;font-size:1.18rem;font-weight:800}.topbar-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:10px;flex:0 0 auto}.nav-button{display:inline-flex;align-items:center;justify-content:center;min-height:36px;border:1px solid rgba(119,201,215,.26);border-radius:8px;background:#226c7c;color:#fff;font-size:.88rem;font-weight:750;padding:7px 14px;text-decoration:none;white-space:nowrap}.nav-button.secondary{background:#112a2feb;color:#d8edf4}.nav-button:hover{background:#2f8b9e}.dashboard{width:min(1600px,calc(100% - 48px));margin:0 auto;padding:24px 0 28px}.dashboard-header{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:28px}.server-title{display:grid;gap:8px;width:100%}.server-meta{display:flex;align-items:center;flex-wrap:nowrap;gap:8px 14px;justify-content:space-between}.server-meta-right{display:inline-flex;align-items:center;flex-wrap:wrap;gap:8px 14px;justify-content:flex-end;margin-left:auto}.server-map-block{display:inline-flex;align-items:center;flex:1 1 auto;gap:14px;min-width:0}.brand-line{display:flex;align-items:center;gap:0}h1{color:#f6fbff;font-size:clamp(1.42rem,2.5vw,2.15rem);font-weight:700;line-height:1.12}.server-title-link{color:inherit;text-decoration:none}.server-title-link:hover{color:#d8edf4}.plain-link{color:inherit;text-decoration:none}.plain-link:hover{color:#d8edf4}.sub{display:inline-flex;align-items:center;gap:8px;width:fit-content;max-width:100%;color:#9fc3cd;border-left:4px solid #2f8b9e;padding-left:12px;font-size:.94rem}.round-progress{flex:0 0 260px;width:260px;padding-left:0}.round-progress-track{position:relative;overflow:hidden;height:18px;border:1px solid rgba(72,187,204,.28);border-radius:4px;background:#081215e6}.round-progress-fill{position:absolute;inset:0 auto 0 0;width:0;background:linear-gradient(90deg,#2f8b9edb,#f4dfadb8);transition:width .35s linear}.round-progress-time{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;height:100%;color:#edf8fb;font-size:.72rem;font-weight:800;font-variant-numeric:tabular-nums;text-shadow:0 1px 2px rgba(0,0,0,.72)}.playtime-summary{border-left-color:#d7a84c;color:#d8e7c7}.refresh-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;border:1px solid rgba(119,201,215,.26);border-radius:8px;background:#226c7c;color:#fff;cursor:pointer;font-size:.88rem;font-weight:650;padding:7px 15px;transition:transform .16s ease,background .16s ease,opacity .16s ease}.refresh-btn:hover:not(:disabled){background:#2f8b9e;transform:translateY(-1px)}.refresh-btn:disabled{cursor:progress;opacity:.68}.teams-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}.team-card{overflow:visible;border:1px solid rgba(72,187,204,.24);border-radius:8px;background:#081215d1;box-shadow:0 20px 35px -18px #0000009e}.team-header{padding:18px 22px;background:#050e11d1;border-bottom:2px solid #2f8b9e}.team-name{display:grid;grid-template-columns:minmax(0,1fr) 76px 78px;align-items:center;gap:12px}.team-name-left{display:inline-flex;align-items:center;min-width:0;gap:8px;line-height:1}.team-identity-icons{display:inline-flex;align-items:center;flex:0 0 auto;gap:6px}.team-identity-text{display:inline-flex;align-items:flex-end;min-width:0;gap:8px;line-height:1}.faction-mark{display:inline-grid;place-items:center;width:42px;height:30px;border:1px solid rgba(255,255,255,.16);border-radius:5px;background:linear-gradient(135deg,#d7a84c,#7c8f62 45%,#1b515c);color:#091113;font-size:.72rem;font-weight:900;text-transform:uppercase}.team-flag{display:block;width:43px;height:28px;object-fit:contain;border-radius:3px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))}.specialization-icon{display:block;width:28px;height:28px;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))}.is-hidden{display:none}.team-faction-name{color:#d2edf4;font-size:1.2rem;font-weight:700}.specialization-badge,.member-count,.leader-label,.kd-badge,.hours-badge,.squad-leader-badge,.squad-count{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.specialization-badge{color:#cce7ef;font-size:.8rem;font-weight:650;line-height:1;padding:0}.member-count{width:fit-content;color:#bbdef0;font-size:.8rem;justify-content:flex-start;padding:0;text-align:left}.team-metrics{display:contents}.playtime-total{color:#f4dfad}.squads-container{display:flex;flex-direction:column;gap:14px;padding:16px 14px 22px}.squad-group{overflow:visible;border-left:5px solid #3fafc2;border-radius:8px;background:#0c161cb8}.squad-group.command-squad{border-left-color:#f5a623;box-shadow:inset 0 0 0 1px #f5a6232e}.squad-header{display:grid;grid-template-columns:30px minmax(0,1fr) 76px 78px;align-items:center;gap:9px;min-height:43px;border-bottom:1px dashed #2f7a8c;background:#00000057;padding:8px 14px}.command-squad .squad-header{border-bottom-color:#f5a623a8;background:linear-gradient(135deg,#f5a6233d,#f5a62314)}.squad-num{display:inline-flex;align-items:center;justify-content:center;flex:0 0 30px;width:30px;height:30px;border-radius:50%;background:#12bdf2;color:#071116;font-size:.9rem;font-weight:900;line-height:1}.command-squad .squad-num{background:#f5c400;color:#171302}.squad-title{min-width:0;color:#f3f9fc;font-size:1rem;font-weight:750;overflow-wrap:anywhere}.squad-leader-badge{border-radius:8px;background:#f5a623;color:#1e1a0c;font-size:.7rem;font-weight:800;padding:4px 8px}.squad-count{color:#e0f6fcb8;font-size:.75rem;justify-content:flex-start;margin-left:0;text-align:left}.squad-hours{color:#f4dfad}.players-list{list-style:none;padding:4px 0}.player-item{display:grid;grid-template-columns:22px minmax(0,1fr) 76px 78px;align-items:center;gap:8px;position:relative;min-height:36px;border-bottom:1px solid rgba(72,187,204,.08);padding:5px 14px}.player-item:last-child{border-bottom:0}.player-item:hover{background:#3c96aa1f;z-index:12}.player-item:focus{outline:1px solid rgba(113,211,226,.28);outline-offset:-1px}.player-icon{display:inline-grid;place-items:center;flex:0 0 22px;width:22px;height:22px;border:0;border-radius:0;background:transparent;color:#d7e7c1;font-size:.64rem;font-weight:850}.player-icon.image-icon{background:transparent}.player-icon img{width:18px;height:18px;object-fit:contain;filter:drop-shadow(0 1px 1px rgba(0,0,0,.35))}.player-icon.image-icon span{display:none}.player-icon.image-icon img.is-hidden+span{display:inline}.player-name{display:block;min-width:0;text-align:left}.player-name span{overflow-wrap:anywhere;font-size:.92rem;font-weight:600}.leader-label{border-radius:8px;background:#b45309;color:#fff;font-size:.68rem;font-weight:850;padding:3px 7px}.leader-label.cmd{background:#f5a623;color:#1e1a0c}.hours-badge{color:#d8edf4;font-size:.74rem;justify-content:flex-start;padding:0;text-align:left}.kd-badge{color:#cce7efd1;font-size:.7rem;font-weight:700;justify-content:flex-start;padding:0;text-align:left}.kd-label{color:#9fc3cd94;font-size:.6rem;font-weight:800;letter-spacing:0}.player-stats-popover{position:absolute;top:calc(100% + 8px);left:42px;z-index:30;width:min(410px,calc(100vw - 96px));border:1px solid rgba(113,211,226,.28);border-radius:8px;background:#13191feb;box-shadow:0 18px 40px #00000075;color:#edf8fb;opacity:0;padding:12px 14px;pointer-events:auto;transform:translateY(-4px);transition:opacity .22s ease .25s,transform .22s ease .25s,visibility 0s linear .47s;visibility:hidden}.player-stats-popover:before{content:"";position:absolute;right:0;bottom:100%;left:0;height:10px}.player-item:hover .player-stats-popover,.player-item:focus .player-stats-popover,.player-item:focus-within .player-stats-popover{opacity:1;transform:translateY(0);transition:opacity .16s ease 1s,transform .16s ease 1s,visibility 0s linear 1s;visibility:visible}.stats-popover-title{margin-bottom:8px;color:#fff;font-size:.9rem;font-weight:800;overflow-wrap:anywhere}.stats-table{display:grid;gap:0;font-size:.82rem}.stats-row{display:grid;grid-template-columns:minmax(92px,1fr) minmax(74px,.8fr) minmax(78px,.8fr);align-items:center;gap:12px;min-height:24px;border-top:1px solid rgba(121,211,225,.11)}.stats-row span:first-child{color:#9fc3cd}.stats-row span:not(:first-child){color:#eef8fb;font-variant-numeric:tabular-nums;text-align:right}.stats-head{min-height:22px;border-top:0;color:#f4dfad;font-size:.74rem;font-weight:800}.stats-head span:first-child{color:transparent}.stats-head span:not(:first-child){color:#f4dfad}.status-overlay{display:grid;justify-items:center;gap:10px;grid-column:1 / -1;border-radius:8px;background:#0000008c;padding:36px 20px;text-align:center}.status-hint{color:#dff0f599;font-size:.78rem}.loader{width:40px;height:40px;border:4px solid #2f8b9e;border-top-color:#c3f0ff;border-radius:50%;animation:spin 1s linear infinite}.error-box{border-left:6px solid #f97373;background:#451e1ecc;color:#ffd1d1}.empty-team{color:#e7f5f994;padding:24px;text-align:center}.footer-info{display:none;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:28px;color:#ddeef394;font-size:.76rem;text-align:center}.updating{animation:subtle-pulse .28s ease}.spin-icon{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes subtle-pulse{0%{opacity:.75}to{opacity:1}}@media(max-width:900px){.topbar-inner,.dashboard{width:min(100% - 28px,1600px)}.dashboard{padding-top:20px}.dashboard-header{align-items:stretch;flex-direction:column}.teams-grid{grid-template-columns:1fr}.refresh-btn{align-self:flex-start}}@media(max-width:560px){.topbar{height:auto}.topbar-inner{align-items:stretch;flex-direction:column;height:auto;min-height:64px;padding:12px 0;gap:12px}.topbar-actions{justify-content:flex-start;flex-wrap:wrap}.dashboard{width:min(100% - 20px,1600px)}.brand-line{align-items:flex-start}.server-meta,.server-meta-right{justify-content:flex-start;margin-left:0;width:100%}.server-meta{align-items:stretch;flex-direction:column;gap:10px}.server-map-block{flex-basis:100%;flex-direction:column;flex-wrap:wrap;gap:8px;width:100%}.round-progress{flex-basis:auto;width:100%}.server-meta-right{gap:8px 14px}.sub{align-items:flex-start;align-self:flex-start;width:100%}.team-header{padding:15px 16px}.team-name{align-items:flex-start;grid-template-columns:minmax(0,1fr) 62px 68px}.team-metrics{display:contents}.squad-header{grid-template-columns:30px minmax(0,1fr) 62px 68px}.player-item{align-items:flex-start;grid-template-columns:22px minmax(0,1fr) 62px 68px}.player-stats-popover{left:10px;width:min(360px,calc(100vw - 42px))}.kd-badge,.hours-badge,.leader-label{margin-top:2px}}
