:root{color-scheme:dark;--bg:#0d100d;--surface:#151a15;--surface2:#1b211b;--line:#2b342a;--text:#eef1e9;--muted:#9da897;--green:#9fc35b;--green2:#c1dc83;--red:#df6a58;--amber:#d6aa57;--shadow:0 16px 48px #0007;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 12% 0,#25301e55 0,transparent 30rem),linear-gradient(145deg,#0b0e0b,#111510 52%,#090b09);color:var(--text)}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.035;background-image:repeating-linear-gradient(0deg,#fff 0 1px,transparent 1px 4px)}button,input{font:inherit}.topbar{height:88px;padding:0 max(24px,calc((100vw - 1180px)/2));display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#0e120edd;backdrop-filter:blur(12px);position:sticky;top:0;z-index:5}.topbar h1{font-size:1.25rem;margin:.15rem 0 0;letter-spacing:.02em}.eyebrow{font-size:.68rem;font-weight:800;letter-spacing:.19em;color:var(--green);text-transform:uppercase}.live{display:flex;align-items:center;gap:.6rem;color:var(--muted);font-size:.86rem}.dot{width:9px;height:9px;border-radius:50%;background:#687066;box-shadow:0 0 0 4px #6870661f}.dot.online{background:var(--green);box-shadow:0 0 0 4px #9fc35b1c,0 0 18px #9fc35b99}.dot.error{background:var(--red)}main{max-width:1180px;margin:auto;padding:38px 24px 72px;display:grid;gap:48px}.panel{background:linear-gradient(145deg,#191f19e8,#121612e8);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.hero{padding:32px;display:flex;justify-content:space-between;align-items:center;min-height:155px;position:relative;overflow:hidden}.hero:after{content:"";position:absolute;width:280px;height:280px;right:-90px;top:-120px;border:45px solid #9fc35b08;border-radius:50%;pointer-events:none}.hero h2{font-size:2.25rem;margin:.35rem 0 .2rem}.hero-actions{display:flex;gap:9px;z-index:1}.muted{color:var(--muted)}p{line-height:1.55}.button{appearance:none;border:1px solid #a8c76c;background:var(--green);color:#11150d;border-radius:8px;padding:.72rem 1rem;font-weight:750;cursor:pointer;transition:.16s transform,.16s filter,.16s border-color}.button:hover:not(:disabled){filter:brightness(1.12);transform:translateY(-1px)}.button:disabled{opacity:.38;cursor:not-allowed}.button.danger{background:#301815;border-color:#854039;color:#f2c1b9}.button.ghost{background:transparent;border-color:var(--line);color:var(--muted)}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:17px}.section-heading h2{margin:.25rem 0 0;font-size:1.45rem}.section-heading>.muted{font-size:.84rem}.server-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.server-card{border:1px solid var(--line);border-radius:12px;padding:22px;background:linear-gradient(145deg,#171c17,#111511);cursor:pointer;transition:.2s border-color,.2s transform,.2s background;position:relative;min-height:205px}.server-card:hover{transform:translateY(-2px);border-color:#667a4f}.server-card.running{border-color:#71894e;background:linear-gradient(145deg,#20291b,#141914)}.server-card.disabled{cursor:not-allowed;opacity:.66}.server-top{display:flex;justify-content:space-between;gap:12px}.server-card h3{margin:.2rem 0 .25rem;font-size:1.3rem}.server-id{font:600 .7rem ui-monospace,SFMono-Regular,monospace;color:#687363}.badge{height:fit-content;padding:.28rem .5rem;border:1px solid var(--line);border-radius:999px;font-size:.65rem;font-weight:800;letter-spacing:.1em;color:var(--muted)}.badge.running{color:var(--green2);border-color:#5b743b;background:#9fc35b0d}.server-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:26px}.server-meta span{display:block;color:var(--muted);font-size:.68rem}.server-meta strong{display:block;margin-top:.28rem;font-size:.88rem}.rename{position:absolute;right:18px;bottom:16px;border:0;background:transparent;color:#7f8a79;cursor:pointer;padding:.4rem;font-size:.76rem}.rename:hover{color:var(--green2)}.stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:12px}.stat{padding:18px;border:1px solid var(--line);border-radius:10px;background:#151a15}.stat span{font-size:.72rem;color:var(--muted)}.stat strong{display:block;margin-top:.45rem;font-size:1.05rem}.chart-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.chart-card{padding:18px 18px 10px;box-shadow:none}.chart-card>div{display:flex;justify-content:space-between;color:var(--muted);font-size:.75rem}.chart-card strong{color:var(--text)}canvas{display:block;width:100%;height:110px;margin-top:10px}.activity{padding:4px 20px;box-shadow:none}.activity-row{display:grid;grid-template-columns:10px 1fr auto;gap:13px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.activity-row:last-child{border-bottom:0}.activity-row strong{text-transform:capitalize;font-size:.86rem}.activity-row p{margin:.18rem 0 0;color:var(--muted);font-size:.77rem}.activity-row time{color:#747e70;font-size:.72rem}.event-dot{width:8px;height:8px;border-radius:50%;background:var(--amber)}.event-dot.success{background:var(--green)}.event-dot.failed{background:var(--red)}.empty-state{text-align:center;color:var(--muted);padding:28px}.notice{position:sticky;top:103px;z-index:4;padding:13px 16px;border-radius:8px;background:#252b20;border:1px solid #4a573e;box-shadow:var(--shadow)}.notice.error{background:#2d1715;border-color:#743c36}.hidden{display:none!important}dialog{width:min(480px,calc(100% - 32px));border:1px solid var(--line);border-radius:14px;padding:0;color:var(--text);background:#161b16;box-shadow:0 28px 100px #000c}dialog::backdrop{background:#050705c7;backdrop-filter:blur(3px)}dialog form{padding:26px}dialog h2{margin:.5rem 0}input{width:100%;margin:8px 0 4px;padding:.8rem;background:#0c0f0c;border:1px solid var(--line);border-radius:7px;color:var(--text);outline:none}input:focus{border-color:var(--green)}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:24px}footer{text-align:center;color:#667060;border-top:1px solid var(--line);padding:26px;font-size:.75rem}
/* Player statistics */
.player-stats{display:grid;grid-template-columns:285px minmax(0,1fr);min-height:560px;overflow:hidden;box-shadow:none}.player-list{background:#101410;border-right:1px solid var(--line);max-height:720px;overflow:auto}.player-row{width:100%;display:grid;grid-template-columns:38px minmax(0,1fr) 8px;gap:11px;align-items:center;text-align:left;border:0;border-bottom:1px solid #252c23;background:transparent;color:var(--text);padding:14px 13px;cursor:pointer}.player-row:hover,.player-row.active{background:#1a2118}.player-row.active{box-shadow:inset 3px 0 var(--green)}.player-row>span:nth-child(2){min-width:0}.player-row strong,.player-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-row strong{font-size:.86rem}.player-row small{color:var(--muted);font-size:.67rem;margin-top:4px}.player-avatar{width:36px;height:36px;display:grid;place-items:center;border:1px solid #43503b;border-radius:7px;background:#1b2418;color:var(--green2);font-weight:800}.presence{width:7px;height:7px;border-radius:50%;background:#555f51}.presence.online{background:var(--green);box-shadow:0 0 9px #9fc35b99}.player-detail{padding:25px;min-width:0}.player-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:18px}.player-detail-head h3{font-size:1.6rem;margin:.25rem 0 0}.player-detail-head p{margin:.25rem 0 0;color:var(--muted);font-size:.78rem}.state-badge{border:1px solid var(--line);border-radius:999px;padding:.35rem .6rem;color:var(--muted);font-size:.65rem;font-weight:800;letter-spacing:.1em}.state-badge.online{border-color:#5d773e;color:var(--green2);background:#9fc35b0b}.state-badge.dead{border-color:#713b37;color:#df8d80;background:#df6a580b}.player-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.player-summary .stat{padding:13px}.player-summary .stat strong{font-size:.93rem}.player-chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}.player-chart{padding:14px;border:1px solid var(--line);border-radius:10px;background:#121712;overflow:hidden}.player-chart>div{display:flex;justify-content:space-between;gap:10px;font-size:.72rem;color:var(--muted)}.player-chart strong{color:var(--text);white-space:nowrap}.player-chart canvas{height:140px}.skills-head{display:flex;justify-content:space-between;align-items:flex-end;border-top:1px solid var(--line);margin-top:18px;padding-top:17px}.skills-head h4{margin:0;font-size:.95rem}.skills-head p{margin:.3rem 0 0;color:var(--muted);font-size:.68rem}.skills-head>span{color:var(--muted);font-size:.68rem}.skill-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 16px;margin-top:13px}.skill>div:first-child{display:flex;justify-content:space-between;font-size:.72rem}.skill strong{color:var(--green2)}.skill-track{height:5px;background:#293027;border-radius:99px;overflow:hidden;margin-top:5px}.skill-track i{display:block;height:100%;background:linear-gradient(90deg,#718d43,var(--green));border-radius:inherit}.skills-empty{grid-column:1/-1;border:1px dashed var(--line);border-radius:8px;color:var(--muted);font-size:.75rem;text-align:center;padding:24px}.stats-note{color:#747e70;font-size:.72rem;margin:9px 3px 0}
/* Live map */
.map-panel{overflow:hidden;box-shadow:none}.map-toolbar{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:14px 16px;border-bottom:1px solid var(--line)}.map-players{display:flex;gap:7px;flex-wrap:wrap}.player-chip{border:1px solid var(--line);background:#101410;color:var(--muted);border-radius:999px;padding:.42rem .68rem;cursor:pointer;font-size:.76rem}.player-chip:hover,.player-chip.active{border-color:#738c50;color:var(--green2);background:#1c2518}.player-chip.dead{border-color:#713b37;color:#d98b7f}.map-actions{display:flex;align-items:center;gap:8px}.map-actions .button{font-size:.75rem;padding:.48rem .68rem;text-decoration:none}.toggle{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:.74rem;white-space:nowrap}.toggle input{width:auto;margin:0;accent-color:var(--green)}.map-frame-wrap{height:560px;position:relative;background:#080a08}.map-frame-wrap iframe{width:100%;height:100%;border:0;display:block}.map-pin{pointer-events:none;position:absolute;left:50%;top:50%;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;filter:drop-shadow(0 3px 5px #000)}.map-pin span{width:19px;height:19px;border:4px solid #fff;border-radius:50% 50% 50% 0;background:var(--red);transform:rotate(-45deg)}.map-pin strong{margin-top:7px;background:#0a0d0ae8;border:1px solid #ffffff33;border-radius:4px;padding:3px 6px;font-size:.72rem}.map-note{margin:0;padding:10px 16px;color:#747e70;font-size:.72rem;border-top:1px solid var(--line)}
/* Sanitized console */
.console{overflow:hidden;box-shadow:none;background:#090c09}.console-toolbar{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid #232a22;background:#111511}.console-filters{display:flex;gap:5px}.console-filter{border:1px solid #30382e;background:#151a15;color:#899484;border-radius:5px;padding:.38rem .62rem;font:600 .7rem ui-monospace,SFMono-Regular,monospace;cursor:pointer;margin-left:5px}.console-filter:hover,.console-filter.active{color:var(--green2);border-color:#5b713e}.console-lines{height:430px;overflow:auto;padding:12px 14px;font:400 .72rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere;scrollbar-color:#35402f #0a0d0a}.console-line{padding:1px 0;color:#aab2a5}.console-line.warn{color:#d9b76e}.console-line.error{color:#ea8373}.console-line::before{content:"› ";color:#586252}.console-line.warn::before{content:"! ";color:var(--amber)}.console-line.error::before{content:"× ";color:var(--red)}.console-empty{display:grid;place-items:center;height:100%;color:#687264}.console-foot{padding:8px 14px;border-top:1px solid #232a22;color:#616b5d;font-size:.67rem}
@media(max-width:1000px){.stat-grid{grid-template-columns:repeat(2,1fr)}.player-stats{grid-template-columns:230px minmax(0,1fr)}.player-chart-grid{grid-template-columns:1fr}.map-toolbar{align-items:flex-start;flex-direction:column}.map-actions{width:100%;flex-wrap:wrap}.map-frame-wrap{height:500px}}
@media(max-width:800px){.chart-grid{grid-template-columns:1fr}.hero{align-items:flex-start;gap:25px;flex-direction:column}.hero h2{font-size:1.8rem}.section-heading>.muted{display:none}.player-stats{display:block}.player-list{display:flex;max-height:none;overflow:auto;border-right:0;border-bottom:1px solid var(--line)}.player-row{min-width:220px;border-right:1px solid #252c23}.player-summary{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.topbar{height:76px;padding:0 17px}.topbar .eyebrow{display:none}main{padding:24px 15px 55px;gap:38px}.hero{padding:23px}.hero-actions{flex-wrap:wrap}.server-grid{grid-template-columns:1fr}.server-meta{grid-template-columns:repeat(3,1fr)}.stat-grid{grid-template-columns:1fr 1fr}.live{font-size:.75rem}.player-detail{padding:18px 14px}.player-summary{grid-template-columns:1fr 1fr}.skill-grid{grid-template-columns:1fr}.map-frame-wrap{height:420px}.map-actions .toggle{width:100%}.console-lines{height:360px}.console-toolbar{align-items:flex-start;flex-direction:column}.console-filter{margin:0 4px 0 0}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
[hidden]{display:none!important}.page-nav{position:sticky;top:88px;z-index:4;display:flex;gap:6px;max-width:1180px;margin:0 auto;padding:10px 24px;background:#0e120df2;border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.page-link{appearance:none;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);padding:.58rem .9rem;font-weight:700;font-size:.78rem;cursor:pointer}.page-link:hover,.page-link.active{border-color:#526740;background:#1b2518;color:var(--green2)}.button.connect{background:#27351d;border-color:#78994b;color:var(--green2);text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.server-connect{position:absolute;left:18px;bottom:18px;border:1px solid #526740;border-radius:6px;padding:.38rem .55rem;color:var(--green2);background:#1b2518;text-decoration:none;font-size:.7rem;font-weight:750}.server-connect:hover{border-color:#9fc35b;background:#26351e}
@media(max-width:600px){.page-nav{top:76px;padding:8px 15px;overflow-x:auto;scrollbar-width:none}.page-nav::-webkit-scrollbar{display:none}.page-link{flex:0 0 auto;min-height:40px;padding:.55rem .8rem}.topbar{position:sticky}.hero-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.hero-actions .button{min-height:44px;padding:.65rem .55rem}.server-card{min-height:190px;padding:18px}.section-heading{align-items:flex-start}.section-heading h2{font-size:1.25rem}.stat-grid{gap:8px}.stat{padding:13px}.stat strong{font-size:.92rem}}
.dot.loading{background:var(--amber);box-shadow:0 0 0 4px #d6aa571c,0 0 18px #d6aa5799}.badge.loading{color:#f0cc84;border-color:#846839;background:#d6aa570d}
.server-state{display:inline-flex;align-items:center;gap:8px;color:#85907f;font-size:.7rem;font-weight:900;letter-spacing:.14em}.server-state i{width:10px;height:10px;border:2px solid currentColor;border-radius:50%}.server-state.loading{color:#f0cc84}.server-state.loading i{border-top-color:transparent;animation:spin 1s linear infinite}.server-state.ready{color:var(--green2)}.server-state.ready i{background:var(--green);box-shadow:0 0 15px #9fc35baa}.server-state.offline{color:#899188}.launch-overview{padding:22px 26px;display:flex;justify-content:space-between;align-items:center;gap:20px;box-shadow:none;border-left:4px solid #687066}.launch-overview:has(.launch-side strong){border-left-color:#71894e}.launch-overview h2{margin:.3rem 0;font-size:1.25rem}.launch-overview p{margin:.35rem 0 0;font-size:.8rem;max-width:700px}.launch-side{display:grid;gap:5px;text-align:right;justify-items:end;min-width:190px}.launch-side strong{font-size:1.05rem;color:var(--green2)}.launch-side>span{font-size:.72rem;color:var(--muted)}.notify-toggle{margin-top:7px}.mod-health-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px}.mod-card{border:1px solid var(--line);border-radius:11px;padding:17px;background:#151a15}.mod-card.healthy{border-top:3px solid #71894e}.mod-card.unhealthy{border-top:3px solid var(--amber)}.mod-card>div:first-child{display:flex;align-items:flex-start;justify-content:space-between;gap:9px}.mod-card h3{margin:0;font-size:1rem}.mod-card p{min-height:2.4em;margin:.6rem 0;color:var(--muted);font-size:.76rem}.mod-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;border-top:1px solid var(--line);padding-top:11px}.mod-meta span{font-size:.6rem;color:var(--muted)}.mod-meta strong{display:block;font-size:.84rem;color:var(--text);margin-top:3px}.mod-card small{display:block;color:#788273;font-size:.66rem;margin-top:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:800px){.launch-overview{align-items:flex-start;flex-direction:column}.launch-side{text-align:left;justify-items:start}.mod-health-grid{grid-template-columns:1fr}}
/* Four concise navigation tabs stay visible on phones without horizontal scrolling. */
.page-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.page-link{text-align:center;white-space:nowrap}
@media(max-width:600px){.page-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;overflow:visible}.page-link{min-width:0;font-size:.67rem;padding:.56rem .2rem;letter-spacing:0}}
/* Gruvbox dark palette override: warm paper-like contrast, no green cast. */
:root{color-scheme:dark;--bg:#282828;--surface:#3c3836;--surface2:#504945;--line:#665c54;--text:#ebdbb2;--muted:#bdae93;--green:#d79921;--green2:#fabd2f;--red:#fb4934;--amber:#fabd2f;--shadow:0 16px 48px #1d2021aa}
body{background:radial-gradient(circle at 12% 0,#d799211f 0,transparent 30rem),linear-gradient(145deg,#282828,#32302f 52%,#1d2021)}body:before{opacity:.025}.topbar,.page-nav{background:#282828ed;border-color:#504945}.panel{background:linear-gradient(145deg,#3c3836f2,#32302ff2);border-color:#665c54}.hero:after{border-color:#d7992118}.button{background:#d79921;border-color:#fabd2f;color:#282828}.button.connect{background:#d79921;border-color:#fabd2f;color:#282828}.button.ghost{background:#32302f;border-color:#665c54;color:#d5c4a1}.button.danger{background:#9d0006;border-color:#fb4934;color:#fbf1c7}.server-card,.stat,.mod-card{background:linear-gradient(145deg,#3c3836,#32302f);border-color:#665c54}.server-card.running{border-color:#d79921;background:linear-gradient(145deg,#504945,#3c3836)}.server-card:hover{border-color:#d79921}.server-id,.muted,.launch-side>span{color:#bdae93}.badge.running{color:#fabd2f;border-color:#d79921;background:#d7992118}.badge.loading{color:#fabd2f;border-color:#fabd2f;background:#fabd2f12}.dot.online,.server-state.ready i{background:#83a598;box-shadow:0 0 0 4px #83a59824,0 0 18px #83a59899}.dot.loading{background:#fabd2f;box-shadow:0 0 0 4px #fabd2f24,0 0 18px #fabd2f99}.server-state.ready{color:#83a598}.server-state.loading{color:#fabd2f}.launch-overview{background:#3c3836;border-left-color:#d79921}.launch-side strong{color:#fabd2f}.mod-card.healthy{border-top-color:#83a598}.mod-card.unhealthy{border-top-color:#fabd2f}.player-list{background:#32302f;border-color:#665c54}.player-row:hover,.player-row.active{background:#504945}.player-row.active{box-shadow:inset 3px 0 #d79921}.player-avatar{border-color:#d79921;background:#504945;color:#fabd2f}.presence.online{background:#83a598;box-shadow:0 0 9px #83a59899}.player-chart,.console-toolbar{background:#32302f;border-color:#665c54}.skill-track{background:#504945}.skill-track i{background:linear-gradient(90deg,#d79921,#fabd2f)}.console{background:#1d2021}.console-filter{background:#3c3836;border-color:#665c54;color:#bdae93}.console-filter:hover,.console-filter.active{color:#fabd2f;border-color:#d79921}.player-chip{background:#32302f;border-color:#665c54;color:#bdae93}.player-chip:hover,.player-chip.active{border-color:#d79921;color:#fabd2f;background:#504945}.notice{background:#504945;border-color:#d79921}.notice.error{background:#5b1d14;border-color:#fb4934}dialog{background:#3c3836;border-color:#665c54}input{background:#282828;border-color:#665c54;color:#ebdbb2}input:focus{border-color:#d79921}.map-frame-wrap{background:#1d2021}.server-connect{border-color:#d79921;color:#fabd2f;background:#504945}.server-connect:hover{border-color:#fabd2f;background:#665c54}
