:root{
  --bg:#0a0c10; --panel:#11141a; --panel-2:#161a22; --line:#1d212b;
  --line-2:#262c38; --fg:#e6ecf2; --mute:#7a8593; --accent:#6ee6b4;
  --danger:#ff7d7d;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--fg);
  font:14px/1.45 -apple-system,system-ui,Segoe UI,Roboto,Inter,sans-serif;
  -webkit-font-smoothing:antialiased;
  padding-top:env(safe-area-inset-top);
  padding-bottom:env(safe-area-inset-bottom);
}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}
img{display:block}

header{
  position:sticky;top:0;z-index:5;
  display:flex;align-items:center;gap:8px;
  padding:12px 16px;border-bottom:1px solid var(--line);
  background:rgba(10,12,16,.92);
  backdrop-filter:saturate(140%) blur(8px);
}
.brand{display:flex;align-items:center;gap:10px}
.brand-mark{width:28px;height:28px;border-radius:7px}
.brand-text{font-weight:600;letter-spacing:.2px}
.status{margin-left:auto;color:var(--mute);font:11px/1 ui-monospace,monospace;letter-spacing:.06em;text-transform:uppercase}
.btn{
  appearance:none;background:transparent;border:1px solid var(--line-2);
  color:var(--fg);padding:7px 12px;border-radius:8px;cursor:pointer;
  font-size:13px;letter-spacing:.02em;
}
.btn:hover{border-color:#3a4250}
.btn.primary{background:var(--accent);color:#0a0c10;border-color:var(--accent);font-weight:600}
.btn.primary:hover{filter:brightness(1.05)}
.btn.danger{color:var(--danger);border-color:#3a2a2e}
.btn.icon{padding:7px 9px}

main{max-width:1100px;margin:0 auto;padding:14px 16px 28px}
section.group{margin-top:20px}
section.group h2{
  font:600 11px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  letter-spacing:.18em;text-transform:uppercase;color:var(--mute);
  margin:0 0 10px;padding:0 4px;
}

/* display tiles */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}
.tile{
  display:flex;align-items:center;gap:12px;
  padding:12px 12px;background:var(--panel);
  border:1px solid var(--line);border-radius:12px;
  transition:border-color .12s,transform .12s,background .12s;
  min-height:72px;
}
.tile:hover{border-color:#2a313e;background:var(--panel-2)}
.tile:active{transform:scale(.99)}
.tile .ico{
  width:46px;height:46px;flex-shrink:0;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:10px;background:#0a0c10;border:1px solid var(--line);
  overflow:hidden;
}
.tile .ico img{width:34px;height:34px;object-fit:contain}
.tile .ico .mono{
  font:700 16px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  color:var(--accent);
}
.tile .ico.brand-fallback{background:#0a0c10}
.tile .meta{min-width:0;flex:1}
.tile .name{font-weight:600;font-size:14.5px;line-height:1.25}
.tile .host{
  color:var(--mute);font:11px/1.4 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* edit rows */
.rows{display:flex;flex-direction:column;gap:6px}
.row{
  display:grid;
  grid-template-columns:46px 1fr auto;
  align-items:center;gap:12px;
  background:var(--panel);border:1px solid var(--line);
  border-radius:10px;padding:8px 10px;
}
.row .ico{
  width:40px;height:40px;border-radius:8px;
  background:#0a0c10;border:1px solid var(--line);
  display:inline-flex;align-items:center;justify-content:center;overflow:hidden;
}
.row .ico img{width:30px;height:30px;object-fit:contain}
.row .ico .mono{font:700 14px/1 ui-monospace,monospace;color:var(--accent)}
.row .row-name{
  background:transparent;border:0;color:var(--fg);font:600 14px/1.2 inherit;
  padding:2px 0;width:100%;outline:none;
}
.row .row-name:focus{outline:1px solid var(--line-2);outline-offset:2px;border-radius:4px}
.row .row-host{color:var(--mute);font:11px/1.3 ui-monospace,monospace;margin-top:2px}
.row .row-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.row select{
  appearance:none;background:var(--panel-2);
  border:1px solid var(--line-2);color:var(--fg);
  border-radius:8px;padding:6px 26px 6px 9px;font-size:13px;
  background-image:linear-gradient(45deg,transparent 50%,var(--mute) 50%),linear-gradient(135deg,var(--mute) 50%,transparent 50%);
  background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50%;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;
}

/* group head in edit mode */
.group.editing{padding:10px 10px 12px;background:var(--panel-2);border-radius:14px;border:1px dashed var(--line-2)}
.group-head{display:flex;align-items:center;gap:8px;margin:0 4px 10px}
.group-title{
  flex:1;background:transparent;border:0;color:var(--fg);
  font:700 12px/1 ui-monospace,monospace;letter-spacing:.18em;
  text-transform:uppercase;padding:4px 0;outline:none;
}
.group-title:focus{outline:1px solid var(--line-2);outline-offset:2px;border-radius:4px}

/* add group input */
.add-group{
  display:flex;gap:6px;margin-top:18px;
  background:var(--panel);border:1px dashed var(--line-2);
  border-radius:12px;padding:8px;
}
.add-group input{
  flex:1;background:transparent;border:0;color:var(--fg);
  padding:6px 8px;outline:none;font-size:14px;
}

footer{color:var(--mute);font:11px/1 ui-monospace,monospace;text-align:center;padding:24px 16px 8px}
.toast{
  position:fixed;left:50%;bottom:18px;transform:translateX(-50%);
  background:var(--panel-2);border:1px solid var(--line-2);
  color:var(--fg);padding:8px 12px;border-radius:10px;
  font-size:13px;z-index:10;opacity:0;pointer-events:none;
  transition:opacity .15s;
}
.toast.show{opacity:1}
.toast.err{border-color:#553030;color:#ffd6d6}
@media (max-width:480px){
  .grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}
  .row{grid-template-columns:40px 1fr;gap:10px}
  .row .row-actions{grid-column:1 / -1;justify-content:flex-end}
}
