:root{
  --ink:#f2efe9;
  --shell:#0c0d10;
  --body:#16171c;
  --titlebar:rgba(4,5,7,0.85);
  --sidebar:rgba(4,5,7,0.55);
  --card:rgba(4,5,7,0.6);
  --well:rgba(0,0,0,0.48);
  --well-deep:rgba(0,0,0,0.5);
  --line-1:rgba(242,239,233,0.14);
  --line-2:rgba(242,239,233,0.1);
  --line-3:rgba(242,239,233,0.08);
  --row-line:rgba(242,239,233,0.04);
  --amber:#e8b455;
  --amber-fill:rgba(232,180,85,0.14);
  --amber-border:rgba(232,180,85,0.45);
  --peri:#aebdf0;
  --peri-fill:rgba(174,189,240,0.08);
  --peri-border:rgba(174,189,240,0.28);
  --red:#f87171;
  --red-fill:rgba(248,113,113,0.12);
  --red-border:rgba(248,113,113,0.4);
  --green:#7fd99a;
  --green-fill:rgba(127,217,154,0.12);
  --green-border:rgba(127,217,154,0.4);
  --discord:#5865f2;
}
*{box-sizing:border-box;}
html,body{margin:0;}
body{
  background:var(--body);
  color:var(--ink);
  font-family:'JetBrains Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;
  font-size:12px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
*{scrollbar-width:thin;scrollbar-color:rgba(242,239,233,0.16) transparent;}
*::-webkit-scrollbar{width:6px;height:6px;}
*::-webkit-scrollbar-track{background:transparent;}
*::-webkit-scrollbar-thumb{background:rgba(242,239,233,0.16);border:1px solid transparent;background-clip:padding-box;}
*::-webkit-scrollbar-thumb:hover{background:rgba(242,239,233,0.3);background-clip:padding-box;}
*::-webkit-scrollbar-corner{background:transparent;}

.frame{display:flex;flex-direction:column;min-height:100vh;background:var(--shell);border:1px solid var(--line-1);}
.frame[hidden]{display:none;}

.titlebar{background:var(--titlebar);border-bottom:1px solid var(--line-1);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 16px;height:52px;flex:0 0 auto;flex-wrap:wrap;position:sticky;top:0;z-index:30;}
.brand{display:flex;align-items:center;gap:10px;}
.brand-chip{width:22px;height:22px;background:var(--amber-fill);border:1px solid var(--amber-border);display:flex;align-items:center;justify-content:center;}
.brand-word{font-weight:800;font-size:11px;letter-spacing:0.2em;opacity:0.85;}
.brand-sub{font-weight:700;font-size:9px;letter-spacing:0.16em;opacity:0.55;text-transform:uppercase;}
.host-trail{display:flex;align-items:center;gap:8px;font-size:10px;font-weight:700;letter-spacing:0.1em;opacity:0.55;text-transform:uppercase;flex-wrap:wrap;}
.host-trail b{color:var(--ink);opacity:0.7;font-weight:700;}
.dot-sep{opacity:0.3;}
.titlebar-right{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.live-clock{display:flex;align-items:center;gap:7px;font-size:10px;font-weight:700;letter-spacing:0.12em;opacity:0.6;}
.dot{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 8px var(--green);flex:0 0 auto;}
.dot.warn{background:var(--red);box-shadow:0 0 8px var(--red);}
.dot.off{background:rgba(242,239,233,0.3);box-shadow:none;}

.user-chip{display:flex;align-items:center;gap:8px;padding:5px 9px 5px 5px;background:var(--well);border:1px solid var(--line-2);cursor:pointer;position:relative;}
.user-chip:hover{border-color:var(--line-1);}
.user-avatar{width:28px;height:28px;flex:0 0 auto;background:var(--amber-fill);border:1px solid var(--amber-border);color:var(--amber);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;border-radius:50%;overflow:hidden;}
.user-avatar img{width:100%;height:100%;object-fit:cover;display:block;}
.user-meta{display:flex;flex-direction:column;line-height:1.25;}
.user-idtext{font-size:9px;font-weight:700;letter-spacing:0.02em;opacity:0.8;font-variant-numeric:tabular-nums;}
.user-role{font-size:8px;font-weight:800;letter-spacing:0.12em;text-transform:uppercase;opacity:0.4;}
.user-role.owner{color:var(--amber);opacity:1;}
.user-role.admin{color:var(--peri);opacity:1;}
.user-menu{position:absolute;bottom:calc(100% + 6px);left:0;width:200px;background:var(--titlebar);border:1px solid var(--line-1);z-index:20;display:flex;flex-direction:column;}
.user-menu[hidden]{display:none;}
.user-menu-signout{padding:10px 12px;font-size:10px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;color:var(--red);cursor:pointer;text-align:center;}
.user-menu-signout:hover{background:var(--red-fill);}

.gate{min-height:100vh;background:var(--shell);display:flex;align-items:center;justify-content:center;padding:16px;}
.gate[hidden]{display:none;}
.gate-card{width:100%;max-width:380px;border:1px solid var(--line-1);background:var(--card);}
.gate-head{padding:28px 24px 20px;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;border-bottom:1px solid var(--line-2);}
.gate-brand{display:flex;align-items:center;gap:9px;}
.gate-title{font-size:14px;font-weight:800;letter-spacing:0.04em;}
.gate-sub{font-size:10.5px;opacity:0.65;letter-spacing:0.02em;max-width:280px;}
.gate-body{padding:20px 24px 24px;display:flex;flex-direction:column;gap:14px;}
.btn-discord{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;padding:11px 14px;background:var(--discord);border:1px solid var(--discord);color:#fff;font-family:inherit;font-weight:800;font-size:10.5px;letter-spacing:0.1em;text-transform:uppercase;cursor:pointer;text-decoration:none;}
.btn-discord:hover{filter:brightness(1.08);}
.gate-fine{font-size:9px;opacity:0.5;text-align:center;letter-spacing:0.02em;line-height:1.6;}
.gate-fine b{opacity:0.7;font-weight:700;}
.gate-error{font-size:10px;color:var(--red);background:var(--red-fill);border:1px solid var(--red-border);padding:8px 10px;text-align:center;}
.gate-error[hidden]{display:none;}
.dev-block{border:1px solid var(--amber-border);background:var(--amber-fill);padding:12px;display:flex;flex-direction:column;gap:8px;}
.dev-block[hidden]{display:none;}
.dev-label{font-size:8px;font-weight:800;letter-spacing:0.16em;text-transform:uppercase;color:var(--amber);}
.dev-row{display:flex;gap:6px;}
.dev-row input{flex:1;background:var(--well);border:1px solid var(--line-2);color:var(--ink);font-family:inherit;font-size:10px;padding:6px 8px;min-width:0;}
.denied-icon{width:36px;height:36px;flex:0 0 auto;background:var(--red-fill);border:1px solid var(--red-border);color:var(--red);display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;}
.gate-body .btn{width:100%;text-align:center;}

.shell{display:flex;flex:1 1 auto;min-height:0;}
.sidebar{width:216px;flex:0 0 216px;align-self:flex-start;position:sticky;top:52px;height:calc(100vh - 52px);z-index:20;background:var(--sidebar);border-right:1px solid var(--line-1);display:flex;flex-direction:column;padding:16px 0;}
.nav-label{font-size:8px;font-weight:700;letter-spacing:0.18em;color:var(--ink);opacity:0.28;text-transform:uppercase;padding:0 16px;margin-bottom:8px;}
.nav{display:flex;flex-direction:column;margin-bottom:24px;}
.nav-item{display:flex;align-items:center;gap:9px;padding:9px 16px;border-left:2px solid transparent;font-size:11px;font-weight:700;letter-spacing:0.06em;color:var(--ink);opacity:0.5;text-decoration:none;cursor:pointer;}
.nav-item .n{opacity:0.4;font-size:9px;letter-spacing:0.08em;}
.nav-item:hover{opacity:0.75;}
.nav-item.active{border-left-color:var(--amber);background:linear-gradient(90deg, var(--amber-fill), transparent 85%);color:var(--amber);opacity:1;}
.nav-item.active .n{color:var(--amber);opacity:0.7;}
.sidebar-foot{margin-top:auto;padding:12px 16px 0;border-top:1px solid var(--line-3);}
.sidebar-user{margin-top:auto;padding:14px 16px 0;border-top:1px solid var(--line-3);display:flex;flex-direction:column;gap:10px;align-items:stretch;}
.foot-label{font-size:8px;font-weight:700;letter-spacing:0.16em;opacity:0.28;text-transform:uppercase;margin-bottom:6px;}
.ssh-chip{background:var(--well);border:1px solid var(--line-2);padding:7px 9px;font-size:10px;font-weight:500;color:var(--ink);opacity:0.65;word-break:break-all;}
.foot-meta{margin-top:8px;font-size:9px;opacity:0.3;letter-spacing:0.04em;}

.main{flex:1 1 auto;min-width:0;padding:16px;display:flex;flex-direction:column;gap:16px;}
.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:2px;}
.section-title{font-size:13px;font-weight:800;letter-spacing:0.1em;text-transform:uppercase;}
.section-meta{font-size:9px;font-weight:700;letter-spacing:0.1em;opacity:0.55;text-transform:uppercase;}

.stat-row{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;}
.stat-box{background:var(--well);border:1px solid var(--line-3);border-top:2px solid rgba(242,239,233,0.22);padding:12px 14px;display:flex;flex-direction:column;gap:6px;}
.stat-label{font-size:9px;font-weight:700;letter-spacing:0.14em;opacity:0.6;text-transform:uppercase;}
.stat-value{font-size:17px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink);}
.stat-value small{font-size:11px;font-weight:700;opacity:0.55;}
.stat-delta{font-size:10px;font-weight:700;letter-spacing:0.04em;font-variant-numeric:tabular-nums;opacity:0.55;}
.stat-box.accent-amber{border-top-color:var(--amber);} .stat-box.accent-amber .stat-label,.stat-box.accent-amber .stat-value{color:var(--amber);}
.stat-box.accent-peri{border-top-color:var(--peri);} .stat-box.accent-peri .stat-label,.stat-box.accent-peri .stat-value{color:var(--peri);}
.stat-box.accent-green{border-top-color:var(--green);} .stat-box.accent-green .stat-label,.stat-box.accent-green .stat-value{color:var(--green);}
.stat-box.accent-red{border-top-color:var(--red);} .stat-box.accent-red .stat-label,.stat-box.accent-red .stat-value{color:var(--red);}

.chart-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.chart-col{display:flex;flex-direction:column;gap:8px;}
.chart-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;}
.chart-name{font-size:9px;font-weight:700;letter-spacing:0.14em;text-transform:uppercase;opacity:0.85;}
.chart-value{font-size:15px;font-weight:800;font-variant-numeric:tabular-nums;}
.chart-wrap{position:relative;}
.chart-wrap svg{width:100%;height:auto;display:block;overflow:visible;}
.chart-wrap .hit{cursor:crosshair;}
.chart-axis{display:flex;justify-content:space-between;font-size:9px;font-weight:700;opacity:0.5;margin-top:4px;letter-spacing:0.04em;}
.chart-tooltip{position:absolute;pointer-events:none;background:#000;border:1px solid var(--line-1);padding:4px 7px;font-size:10px;font-weight:800;white-space:nowrap;transform:translate(-50%,-125%);opacity:0;transition:opacity .1s;font-variant-numeric:tabular-nums;z-index:5;}
.chart-tooltip.show{opacity:1;}

.card{background:var(--card);border:1px solid var(--line-1);display:flex;flex-direction:column;}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line-2);}
.card-title{font-size:11px;font-weight:800;letter-spacing:0.2em;text-transform:uppercase;opacity:1;}
.status-pill{display:flex;align-items:center;gap:6px;font-size:9px;font-weight:800;letter-spacing:0.1em;padding:3px 8px;background:var(--green-fill);border:1px solid var(--green-border);color:var(--green);text-transform:uppercase;}
.status-pill.bad{background:var(--red-fill);border-color:var(--red-border);color:var(--red);}
.status-pill.warn{background:var(--amber-fill);border-color:var(--amber-border);color:var(--amber);}
.status-pill.neutral{background:var(--peri-fill);border-color:var(--peri-border);color:var(--peri);}
.card-meta{font-size:9px;font-weight:700;letter-spacing:0.06em;opacity:0.55;text-transform:uppercase;}
.card-body{padding:16px;}
.card-foot{padding:10px 16px;border-top:1px solid var(--line-2);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;}
.kv{display:flex;flex-direction:column;gap:4px;}
.kv-label{font-size:8px;font-weight:700;letter-spacing:0.14em;opacity:0.55;text-transform:uppercase;}
.kv-value{font-size:14px;font-weight:800;font-variant-numeric:tabular-nums;}
.kv-value.dim{font-size:11px;font-weight:700;opacity:0.7;}
code.chip{background:var(--well);border:1px solid var(--line-2);padding:4px 8px;font-size:10px;font-weight:500;color:var(--ink);opacity:0.7;}

.table-wrap{overflow-x:auto;}
table.grid{width:100%;border-collapse:collapse;min-width:560px;}
table.grid thead th{text-align:left;font-size:9px;font-weight:700;letter-spacing:0.12em;text-transform:uppercase;opacity:0.55;padding:0 16px 10px;white-space:nowrap;}
table.grid tbody td{padding:10px 16px;border-top:1px solid var(--row-line);font-size:11px;font-weight:500;white-space:nowrap;}
table.grid tbody tr:hover td{background:rgba(242,239,233,0.02);}
.cell-strong{font-weight:800;}
.cell-dim{opacity:0.62;}
.trend{font-weight:700;font-variant-numeric:tabular-nums;}
.up{color:var(--green);} .down{color:var(--red);}
.mini-dot-row{display:flex;align-items:center;gap:7px;}

.bar-track{height:8px;background:var(--well-deep);border:1px solid var(--line-3);position:relative;}
.bar-fill{height:100%;background:var(--peri-fill);border-right:2px solid var(--peri);}

.feed-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 16px;border-bottom:1px solid var(--line-2);}
.segmented{display:flex;background:#000;border:1px solid var(--line-2);padding:3px;gap:3px;}
.segmented button{background:transparent;border:none;color:var(--ink);opacity:0.6;font-family:inherit;font-weight:800;font-size:9px;letter-spacing:0.14em;text-transform:uppercase;padding:5px 10px;cursor:pointer;}
.segmented button.active{background:var(--peri-fill);border:1px solid var(--peri-border);color:var(--peri);opacity:1;}
.segmented button:not(.active):hover{opacity:0.7;}
.feed-controls .segmented button{font-size:8px;padding:5px 9px;}
.feed-grid{display:grid;}
.feed-grid.cols-3{grid-template-columns:repeat(3,1fr);}
.feed-grid.cols-1{grid-template-columns:1fr;}
.feed-col{display:flex;flex-direction:column;min-width:0;}
.feed-col + .feed-col{border-left:1px solid var(--line-2);}
.feed-col-head{display:flex;align-items:center;gap:7px;padding:10px 16px;font-size:9px;font-weight:800;letter-spacing:0.14em;text-transform:uppercase;border-bottom:1px solid var(--line-3);}
.feed-list{max-height:340px;overflow-y:auto;}
.feed-grid.cols-1 .feed-list{max-height:460px;}
.feed-row{display:flex;gap:9px;align-items:flex-start;padding:8px 16px;border-top:1px solid var(--row-line);font-size:10.5px;}
.feed-row:first-child{border-top:none;}
.feed-time{opacity:0.55;font-variant-numeric:tabular-nums;flex:0 0 auto;white-space:nowrap;}
.feed-dot{width:6px;height:6px;border-radius:50%;margin-top:4px;flex:0 0 auto;background:rgba(242,239,233,0.3);}
.feed-dot.warn{background:var(--amber);box-shadow:0 0 6px var(--amber-border);}
.feed-dot.err{background:var(--red);box-shadow:0 0 6px var(--red-border);}
.feed-msg{opacity:0.75;word-break:break-word;}
.feed-empty{padding:16px;opacity:0.5;font-size:10px;}

.role-pill{display:inline-flex;align-items:center;font-size:9px;font-weight:800;letter-spacing:0.1em;padding:3px 8px;text-transform:uppercase;}
.role-pill.owner{background:var(--amber-fill);border:1px solid var(--amber-border);color:var(--amber);}
.role-pill.admin{background:var(--peri-fill);border:1px solid var(--peri-border);color:var(--peri);}
.access-input{background:var(--well);border:1px solid var(--line-2);color:var(--ink);font-family:inherit;font-size:11px;padding:7px 10px;flex:1 1 220px;min-width:0;}
.access-input::placeholder{color:var(--ink);opacity:0.3;}
.access-select{background:var(--well);border:1px solid var(--line-2);color:var(--ink);font-family:inherit;font-size:10px;font-weight:700;letter-spacing:0.06em;text-transform:uppercase;padding:7px 10px;}
#accessAddRow{gap:8px;flex-wrap:wrap;}
#accessAddRow[hidden]{display:none;}
#accessLockedNote[hidden]{display:none;}

.storage-list{display:flex;flex-direction:column;gap:14px;}
.storage-row{display:flex;flex-direction:column;gap:6px;}
.storage-top{display:flex;align-items:baseline;justify-content:space-between;}
.storage-name{font-size:10px;font-weight:700;letter-spacing:0.06em;opacity:0.7;}
.storage-size{font-size:11px;font-weight:800;font-variant-numeric:tabular-nums;}

.commit-row{display:flex;gap:10px;align-items:flex-start;}
.commit-hash{background:var(--well);border:1px solid var(--line-2);padding:4px 7px;font-size:10px;font-weight:700;color:var(--amber);flex:0 0 auto;}
.commit-msg{font-size:11px;font-weight:500;opacity:0.8;}
.commit-meta{font-size:9px;opacity:0.55;margin-top:3px;letter-spacing:0.04em;}

.btn{font-family:inherit;font-size:10px;font-weight:800;letter-spacing:0.12em;text-transform:uppercase;padding:7px 12px;border:1px solid var(--line-2);background:transparent;color:var(--ink);opacity:0.7;cursor:pointer;}
.btn:hover{opacity:1;}
.btn:disabled{opacity:0.3;cursor:default;}
.btn.primary{background:var(--amber-fill);border-color:var(--amber-border);color:var(--amber);opacity:1;}
.btn.danger{background:var(--red-fill);border-color:var(--red-border);color:var(--red);opacity:1;}
.btn.ghost{background:var(--well);}
.deploy-actions{display:flex;gap:8px;}
.deploy-actions .btn{flex:1;text-align:center;}

.picker{display:flex;flex-direction:column;border:1px solid var(--line-2);margin-top:10px;max-height:200px;overflow-y:auto;}
.picker[hidden]{display:none;}
.picker-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 12px;border-top:1px solid var(--line-3);font-size:10.5px;font-weight:700;cursor:pointer;}
.picker-row:first-child{border-top:none;}
.picker-row:hover{background:rgba(242,239,233,0.03);color:var(--amber);}
.picker-row .id{opacity:0.62;font-weight:500;}

footer.foot-note{padding:12px 16px 4px;font-size:9px;opacity:0.45;letter-spacing:0.04em;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;}

.empty-note{padding:20px 16px;text-align:center;opacity:0.5;font-size:10px;}

@media (max-width: 900px){
  .shell{flex-direction:column;}
  .sidebar{
    position:static;height:auto;
    width:100%;flex:0 0 auto;flex-direction:row;align-items:center;
    padding:8px 0;gap:0;border-right:none;border-bottom:1px solid var(--line-1);
    overflow-x:auto;-webkit-overflow-scrolling:touch;
  }
  .nav-label,.sidebar-foot{display:none;}
  /* each .nav group becomes its own horizontally-scrolling strip instead of
     wrapping to several rows — keeps the nav to ~40px tall instead of ~200px */
  .nav{flex-direction:row;flex-wrap:nowrap;margin-bottom:0;padding:0 12px;flex:0 0 auto;}
  .nav-item{border-left:none;border-bottom:2px solid transparent;padding:8px 10px;flex:0 0 auto;white-space:nowrap;}
  .nav-item.active{border-bottom-color:var(--amber);background:none;}
  /* the clock + user chip move from the titlebar into the sidebar on desktop;
     on this horizontally-scrolling mobile strip they just ride along at the end */
  .sidebar-user{margin-top:0;border-top:none;flex-direction:row;align-items:center;padding:0 12px;flex:0 0 auto;}
  .stat-row{grid-template-columns:repeat(2,1fr);}
  .two-col,.kv-grid,.chart-grid{grid-template-columns:1fr;}
  .feed-grid.cols-3{grid-template-columns:1fr;}
  .feed-col+.feed-col{border-left:none;border-top:1px solid var(--line-2);}
  /* a segmented group with several buttons (source/sort toggles, spawner tabs)
     wraps as a whole row instead of squeezing text inside each button */
  .segmented{flex-wrap:wrap;}
}
@media (max-width: 480px){
  .stat-row{grid-template-columns:1fr;}
  .titlebar{height:auto;padding:10px 12px;}
  .host-trail{display:none;}
}
