:root{
    --ink: #12161a;
    --panel: #191f25;
    --panel-raised: #1f262d;
    --line: #2b333b;
    --line-bright: #3a444d;
    --text: #e9edf0;
    --text-dim: #8b96a1;
    --frost: #7fd4e0;
    --frost-dim: #4a7d85;
    --flare: #e0803a;
    --breach: #d1453b;
    --held: #6fae6b;
  }
  *{box-sizing:border-box; margin:0; padding:0;}
  html{scroll-behavior:smooth;}
  body{
    background: var(--ink);
    background-image:
      linear-gradient(rgba(127,212,224,0.025) 1px, transparent 1px),
      linear-gradient(90deg, rgba(127,212,224,0.025) 1px, transparent 1px);
    background-size: 44px 44px;
    color: var(--text);
    font-family: 'IBM Plex Sans', sans-serif;
    line-height: 1.5;
  }
  .mono{ font-family: 'IBM Plex Mono', monospace; }
  h1,h2,h3{ font-family: 'Oswald', sans-serif; text-transform: uppercase; letter-spacing: 0.03em; }

  /* ===== Top bar ===== */
  .topbar{
    position: sticky; top:0; z-index: 50;
    display:flex; align-items:center; justify-content:space-between;
    padding: 14px 28px;
    background: rgba(18,22,26,0.92);
    backdrop-filter: blur(6px);
    border-bottom: 1px solid var(--line);
  }
  .brand{ display:flex; align-items:center; gap:10px; }
  .brand-mark{
    width:26px; height:26px; border:2px solid var(--frost); border-radius:2px;
    display:flex; align-items:center; justify-content:center;
    font-family:'Oswald'; font-size:13px; font-weight:700; color:var(--frost);
    transform: rotate(45deg);
  }
  .brand-mark span{ transform: rotate(-45deg); }
  .brand-text{ font-family:'Oswald'; font-weight:600; font-size:15px; letter-spacing:0.08em; }
  .brand-text small{ display:block; font-family:'IBM Plex Mono'; font-size:10px; color:var(--text-dim); letter-spacing:0.12em; text-transform:none; font-weight:400;}
  nav{ display:flex; gap:2px; }
  nav a{
    color: var(--text-dim); text-decoration:none; font-size:12.5px;
    font-family:'IBM Plex Mono'; letter-spacing:0.04em; text-transform:uppercase;
    padding: 8px 12px; border-radius: 3px; transition: color .15s, background .15s;
  }
  nav a:hover, nav a:focus-visible{ color: var(--frost); background: rgba(127,212,224,0.07); }

  .mode-toggle{
    display:flex; align-items:center; gap:8px; font-family:'IBM Plex Mono'; font-size:11.5px;
    text-transform:uppercase; letter-spacing:0.05em; color: var(--text-dim);
    background: var(--panel-raised); border:1px solid var(--line-bright); border-radius:20px;
    padding:7px 14px; cursor:pointer; transition: border-color .15s, color .15s;
  }
  .mode-toggle:hover{ border-color: var(--frost); color: var(--text); }
  .mode-dot{ width:8px; height:8px; border-radius:50%; background: var(--frost); flex-shrink:0; }
  body.r4-mode .mode-toggle{ border-color: var(--flare); color: var(--flare); }
  body.r4-mode .mode-dot{ background: var(--flare); }

  .mode-banner{
    text-align:center; font-family:'IBM Plex Mono'; font-size:11.5px; color: var(--text-dim);
    background: rgba(127,212,224,0.06); border-bottom:1px solid var(--line);
    padding:9px 20px; letter-spacing:0.02em;
  }
  body.r4-mode .mode-banner{ background: rgba(224,128,58,0.1); color: var(--flare); }

  [contenteditable="true"]{
    outline: 1px dashed var(--frost-dim); outline-offset:3px; border-radius:2px; cursor:text;
  }
  [contenteditable="true"]:focus{ outline: 1px solid var(--frost); background: rgba(127,212,224,0.06); }

  /* ===== Hero / status board ===== */
  .hero{
    padding: 56px 28px 40px; max-width: 1180px; margin: 0 auto;
    display:grid; grid-template-columns: 1.3fr 1fr; gap: 32px; align-items:end;
  }
  .hero-eyebrow{ font-family:'IBM Plex Mono'; font-size:12px; color: var(--flare); letter-spacing:0.16em; margin-bottom:14px; }
  .hero h1{ font-size: clamp(34px, 5vw, 54px); line-height:1.02; }
  .hero h1 .accent{ color: var(--frost); }
  .hero p{ color: var(--text-dim); margin-top:16px; max-width: 46ch; font-size: 15px; }

  .status-board{
    background: var(--panel); border:1px solid var(--line); border-radius:6px;
    padding: 18px 20px;
  }
  .status-row{
    display:flex; justify-content:space-between; align-items:center;
    padding: 10px 0; border-bottom: 1px solid var(--line);
    font-family:'IBM Plex Mono'; font-size:13px;
  }
  .status-row:last-child{ border-bottom:none; }
  .status-row .label{ color: var(--text-dim); text-transform:uppercase; letter-spacing:0.06em; font-size:11px;}
  .row-right{ display:flex; align-items:center; gap:10px; }
  .badge{ padding:3px 9px; border-radius:20px; font-size:11px; font-weight:500; }
  .badge.held{ background: rgba(111,174,107,0.14); color: var(--held); border:1px solid rgba(111,174,107,0.35);}
  .badge.flare{ background: rgba(224,128,58,0.14); color: var(--flare); border:1px solid rgba(224,128,58,0.35);}
  .badge.breach{ background: rgba(209,69,59,0.14); color: var(--breach); border:1px solid rgba(209,69,59,0.35);}

  .del-btn{
    display:none; align-items:center; justify-content:center; flex-shrink:0;
    width:19px; height:19px; border-radius:50%;
    background: var(--panel-raised); border:1px solid var(--line-bright); color: var(--text-dim);
    font-family:'IBM Plex Mono'; font-size:12px; line-height:1; cursor:pointer; padding:0;
    transition: border-color .15s, color .15s;
  }
  .del-btn:hover{ border-color: var(--breach); color: var(--breach); }
  body.r4-mode .del-btn{ display:flex; }
  .rule .del-btn{ margin-left:auto; }

  .add-btn{
    display:none; width:100%; align-items:center; justify-content:center; gap:6px;
    font-family:'IBM Plex Mono'; font-size:11.5px; text-transform:uppercase; letter-spacing:0.04em;
    padding: 11px 14px; border-radius:6px; border:1px dashed var(--line-bright); background:transparent;
    color: var(--text-dim); cursor:pointer; margin-top:14px; transition: border-color .15s, color .15s;
  }
  .add-btn:hover{ border-color: var(--frost); color: var(--frost); }
  body.r4-mode .add-btn{ display:flex; }

  .card-del-btn{
    display:none; margin-top:12px; font-family:'IBM Plex Mono'; font-size:10.5px; text-transform:uppercase;
    letter-spacing:0.04em; color: var(--breach); background:transparent; border:1px solid rgba(209,69,59,0.35);
    border-radius:4px; padding:5px 10px; cursor:pointer;
  }
  .card-del-btn:hover{ background: rgba(209,69,59,0.12); }
  body.r4-mode .card-del-btn{ display:inline-block; }

  .add-nap-card{
    display:none; align-items:center; justify-content:center;
    background: transparent; border:1px dashed var(--line-bright); border-radius:6px;
    color: var(--text-dim); font-family:'IBM Plex Mono'; font-size:12px; text-transform:uppercase;
    letter-spacing:0.04em; cursor:pointer; min-height:88px; transition: border-color .15s, color .15s;
  }
  .add-nap-card:hover{ border-color: var(--frost); color: var(--frost); }
  body.r4-mode .add-nap-card{ display:flex; }

  section{ max-width: 1180px; margin: 0 auto; padding: 64px 28px; border-top: 1px solid var(--line); }
  .section-head{ display:flex; align-items:baseline; gap:14px; margin-bottom: 30px; }
  .section-num{ font-family:'IBM Plex Mono'; color: var(--frost-dim); font-size:13px; }
  .section-head h2{ font-size: 26px; }
  .section-sub{ color: var(--text-dim); font-size: 14px; margin-top:-18px; margin-bottom:28px; max-width:60ch; }

  /* ===== Events & Rules ===== */
  .event-list{ display:flex; flex-direction:column; gap:1px; background: var(--line); border:1px solid var(--line); border-radius:6px; overflow:hidden; }
  .event-row{
    background: var(--panel); display:grid; grid-template-columns: 90px 1fr auto auto; gap:18px; align-items:center;
    padding: 16px 18px;
  }
  .event-row .day{ font-family:'IBM Plex Mono'; font-size:12px; color:var(--frost); }
  .event-row .name{ font-weight:500; font-size:14.5px; }
  .event-row .desc{ font-size:12.5px; color: var(--text-dim); margin-top:2px; }
  .event-row .tag{ font-family:'IBM Plex Mono'; font-size:10.5px; color: var(--text-dim); border:1px solid var(--line-bright); padding:4px 8px; border-radius:3px; white-space:nowrap; }

  .rule-block{ margin-top: 34px; }

  /* ===== Announcements ===== */
  .announce-list{ display:flex; flex-direction:column; gap:1px; background: var(--line); border:1px solid var(--line); border-radius:6px; overflow:hidden; }
  .announce-item{ background: var(--panel); padding: 16px 18px; }
  .announce-top{ display:flex; justify-content:space-between; align-items:baseline; gap:14px; margin-bottom:6px; }
  .announce-title{ font-weight:600; font-size:14.5px; }
  .announce-date{ font-family:'IBM Plex Mono'; font-size:11px; color: var(--text-dim); white-space:nowrap; }
  .announce-body{ font-size:13px; color: var(--text-dim); line-height:1.6; }
  .rule{ display:flex; gap:14px; padding: 13px 0; border-bottom:1px solid var(--line); align-items:flex-start; }
  .rule:last-child{ border-bottom:none; }
  .rule .rn{ font-family:'IBM Plex Mono'; color: var(--frost-dim); font-size:13px; flex-shrink:0; width: 32px; }
  .rule .rt{ font-size: 14px; color: var(--text); }
  .rule .rt b{ color: var(--flare); font-weight:600; }

  /* ===== SVS Map — Sunfire Castle (tile grid) ===== */
  .map-wrap{ display:grid; grid-template-columns: 1fr 300px; gap: 24px; align-items:start; }
  .castle-panel{
    background: var(--panel); border:1px solid var(--line); border-radius:6px;
    padding: 20px;
  }
  .castle-grid{
    display:grid; grid-template-columns: repeat(10, 1fr); grid-template-rows: repeat(10, 1fr);
    gap:2px; width:100%; aspect-ratio: 1 / 1;
  }
  .grid-tile{
    background: var(--panel-raised); border:1px solid var(--line);
    cursor:pointer; transition: filter .12s, background .2s, box-shadow .12s;
    display:flex; align-items:center; justify-content:center; overflow:hidden;
  }
  .grid-tile:hover, .grid-tile:focus-visible{ filter: brightness(1.4); outline:none; }
  .grid-tile.tile-selected{ box-shadow: inset 0 0 0 2px var(--frost); background: rgba(127,212,224,0.18); }
  .grid-tile.tile-assigned{ border-color: rgba(0,0,0,0.3); }
  .tile-label{
    font-family:'IBM Plex Mono'; font-size:8px; line-height:1; text-align:center;
    color: var(--ink); text-transform:uppercase; letter-spacing:0.01em;
    pointer-events:none; padding:0 2px; overflow:hidden; text-overflow:ellipsis;
    white-space:nowrap; max-width:100%;
  }

  .zone-block{
    cursor:pointer; display:flex; flex-direction:column;
    align-items:center; justify-content:center; text-align:center; gap:2px;
    border:1px solid transparent; transition: filter .15s, background .2s;
  }
  .zone-block:hover, .zone-block:focus-visible{ filter: brightness(1.25); outline:none; }
  .zone-block.selected{ box-shadow: inset 0 0 0 2px var(--text); }
  .zone-block.castle{ background: rgba(209,69,59,0.22); border-color: rgba(209,69,59,0.45); }
  .zone-block.turret{ background: rgba(224,199,58,0.22); border-color: rgba(224,199,58,0.45); }
  .zone-block .zb-label{
    font-family:'IBM Plex Mono'; font-size:11px; text-transform:uppercase; letter-spacing:0.04em;
    color: var(--text-dim); pointer-events:none;
  }
  .zone-block .zb-assignee{
    font-family:'Oswald'; font-size:13px; font-weight:600; text-transform:uppercase;
    color: var(--text); pointer-events:none;
  }
  .zone-block.assigned .zb-label, .zone-block.assigned .zb-assignee{ color: var(--ink); }
  .castle-tag{ font-size: 15px; }

  .map-side{ display:flex; flex-direction:column; gap:16px; }
  .map-key{ display:flex; flex-direction:column; gap:10px; }
  .key-item{ display:flex; align-items:center; gap:9px; font-size:12.5px; color: var(--text-dim); }
  .key-dot{ width:10px; height:10px; border-radius:2px; flex-shrink:0; border:1px solid var(--line-bright); }

  .assign-panel{
    background: var(--panel); border:1px solid var(--line); border-radius:6px; padding:16px;
  }
  .assign-panel .sel-label{ font-family:'IBM Plex Mono'; font-size:11px; color: var(--text-dim); text-transform:uppercase; letter-spacing:0.06em; margin-bottom:4px; }
  .assign-panel .sel-name{ font-family:'Oswald'; font-size:16px; margin-bottom:12px; }
  .assign-panel input{
    width:100%; background: var(--ink); border:1px solid var(--line-bright); color: var(--text);
    padding:9px 10px; border-radius:4px; font-family:'IBM Plex Mono'; font-size:13px; margin-bottom:10px;
  }
  .assign-panel input:focus{ outline: 1px solid var(--frost); border-color: var(--frost); }
  .assign-panel .btn-row{ display:flex; gap:8px; }
  .assign-panel button{
    font-family:'IBM Plex Mono'; font-size:11.5px; text-transform:uppercase; letter-spacing:0.04em;
    padding: 8px 12px; border-radius:4px; border:1px solid var(--line-bright); background: var(--panel-raised);
    color: var(--text); cursor:pointer; transition: background .15s, border-color .15s; flex:1;
  }
  .assign-panel button:hover{ border-color: var(--frost); color: var(--frost); }
  .assign-panel button.clear-btn:hover{ border-color: var(--breach); color: var(--breach); }
  .assign-panel button.deselect-btn{ flex:none; width:100%; margin-top:8px; }
  .assign-panel .hint{ font-family:'IBM Plex Mono'; font-size:11px; color: var(--text-dim); }

  .clear-map-btn{
    font-family:'IBM Plex Mono'; font-size:11.5px; text-transform:uppercase; letter-spacing:0.04em;
    padding: 10px 12px; border-radius:6px; border:1px solid rgba(209,69,59,0.4); background: rgba(209,69,59,0.08);
    color: var(--breach); cursor:pointer; transition: background .15s, border-color .15s;
  }
  .clear-map-btn:hover:not(:disabled){ background: rgba(209,69,59,0.18); border-color: var(--breach); }
  .clear-map-btn:disabled{ opacity:0.4; cursor:not-allowed; }

  .roster{ display:flex; flex-direction:column; gap:1px; background: var(--line); border-radius:6px; overflow:hidden; border:1px solid var(--line); max-height:220px; overflow-y:auto; }
  .roster-row{ background: var(--panel); display:flex; justify-content:space-between; padding:10px 12px; font-family:'IBM Plex Mono'; font-size:12px; }
  .roster-row .rz{ color: var(--text-dim); }
  .roster-row .ra{ color: var(--text); font-weight:500; }
  .roster-empty{ background: var(--panel); padding: 14px 12px; font-family:'IBM Plex Mono'; font-size:11.5px; color: var(--text-dim); }

  /* ===== NAP & Alliance ===== */
  .nap-grid{ display:grid; grid-template-columns: repeat(auto-fill, minmax(240px,1fr)); gap: 14px; }
  .nap-card{
    background: var(--panel); border:1px solid var(--line); border-radius:6px; padding:16px 18px;
  }
  .nap-card .top{ display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:10px; }
  .nap-card .name{ font-weight:600; font-size:14.5px; }
  .nap-card .terms{ font-size:12.5px; color: var(--text-dim); line-height:1.6; }

  footer{ max-width:1180px; margin:0 auto; padding: 30px 28px 60px; color: var(--text-dim); font-size:12px; font-family:'IBM Plex Mono'; display:flex; justify-content:space-between; }

  @media (max-width: 860px){
    .hero{ grid-template-columns: 1fr; }
    .map-wrap{ grid-template-columns: 1fr; }
    nav{ display:none; }
  }

/* ===== Login modal ===== */
.modal-overlay{
  position:fixed; inset:0; background: rgba(0,0,0,0.6); z-index:100;
  display:none; align-items:center; justify-content:center; padding:20px;
}
.modal-overlay.open{ display:flex; }
.modal-box{
  background: var(--panel); border:1px solid var(--line-bright); border-radius:8px;
  padding:24px; width:100%; max-width:340px;
}
.modal-box h3{ font-size:16px; margin-bottom:16px; }
.modal-box input{
  width:100%; background: var(--ink); border:1px solid var(--line-bright); color: var(--text);
  padding:10px 12px; border-radius:4px; font-family:'IBM Plex Sans'; font-size:14px; margin-bottom:10px;
}
.modal-box input:focus{ outline:1px solid var(--frost); border-color: var(--frost); }
.modal-error{ color: var(--breach); font-family:'IBM Plex Mono'; font-size:12px; margin-bottom:10px; min-height:14px; }
.modal-btn-row{ display:flex; gap:8px; margin-top:6px; }
.modal-btn-row button{
  flex:1; font-family:'IBM Plex Mono'; font-size:12px; text-transform:uppercase; letter-spacing:0.04em;
  padding:9px 12px; border-radius:4px; border:1px solid var(--line-bright); background: var(--panel-raised);
  color: var(--text); cursor:pointer;
}
.modal-btn-row button.primary{ border-color: var(--frost); color: var(--frost); }
.modal-btn-row button.primary:hover{ background: rgba(127,212,224,0.1); }
.modal-btn-row button.ghost:hover{ border-color: var(--text-dim); }

/* ===== Admin dashboard ===== */
.admin-body{ background: var(--ink); min-height:100vh; }
.admin-login-screen{
  min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px;
  background-image:
    linear-gradient(rgba(127,212,224,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(127,212,224,0.025) 1px, transparent 1px);
  background-size: 44px 44px;
}
.admin-shell{ display:flex; min-height:100vh; }
.admin-sidebar{
  width:230px; flex-shrink:0; background: var(--panel); border-right:1px solid var(--line);
  padding:24px 16px; display:flex; flex-direction:column;
}
.admin-sidebar .brand{ margin-bottom:28px; padding:0 4px; }
.admin-nav{ display:flex; flex-direction:column; gap:2px; }
.admin-nav button{
  display:block; width:100%; text-align:left; padding:10px 12px; border-radius:6px;
  background:transparent; border:none; color: var(--text-dim); font-family:'IBM Plex Mono';
  font-size:12.5px; text-transform:uppercase; letter-spacing:0.04em; cursor:pointer;
  transition: background .15s, color .15s;
}
.admin-nav button:hover{ color: var(--text); background: rgba(255,255,255,0.03); }
.admin-nav button.active{ background: rgba(127,212,224,0.12); color: var(--frost); }
.admin-sidebar-foot{ margin-top:auto; padding-top:20px; border-top:1px solid var(--line); display:flex; flex-direction:column; gap:6px; }
.admin-link{
  font-family:'IBM Plex Mono'; font-size:11.5px; text-transform:uppercase; letter-spacing:0.04em;
  color: var(--text-dim); text-decoration:none; background:none; border:none; text-align:left;
  cursor:pointer; padding:4px;
}
.admin-link:hover{ color: var(--frost); }

.admin-main{ flex:1; padding:40px 44px; max-width:840px; }
.admin-panel-head{ margin-bottom:24px; }
.admin-panel-head h2{ font-family:'Oswald'; font-size:24px; text-transform:uppercase; letter-spacing:0.02em; }
.admin-panel-head p{ color: var(--text-dim); font-size:13.5px; margin-top:6px; }

.admin-card{
  background: var(--panel); border:1px solid var(--line); border-radius:8px;
  padding:18px 20px; margin-bottom:14px;
}
.admin-field{ margin-bottom:12px; }
.admin-field:last-child{ margin-bottom:0; }
.admin-field label{
  display:block; font-family:'IBM Plex Mono'; font-size:10.5px; text-transform:uppercase;
  letter-spacing:0.05em; color: var(--text-dim); margin-bottom:5px;
}
.admin-field input[type="text"], .admin-field textarea, .admin-field select{
  width:100%; background: var(--ink); border:1px solid var(--line-bright); color: var(--text);
  padding:9px 11px; border-radius:5px; font-family:'IBM Plex Sans'; font-size:13.5px;
}
.admin-field textarea{ min-height:64px; resize:vertical; font-family:'IBM Plex Sans'; line-height:1.5; }
.admin-field input:focus, .admin-field textarea:focus, .admin-field select:focus{
  outline:1px solid var(--frost); border-color: var(--frost);
}
.admin-card-row{ display:flex; gap:16px; }
.admin-card-row .admin-field{ flex:1; }
.admin-card-actions{ display:flex; justify-content:flex-end; gap:8px; margin-top:14px; }
.admin-btn{
  font-family:'IBM Plex Mono'; font-size:11.5px; text-transform:uppercase; letter-spacing:0.04em;
  padding:8px 14px; border-radius:5px; border:1px solid var(--line-bright); background: var(--panel-raised);
  color: var(--text); cursor:pointer; transition: border-color .15s, color .15s, background .15s;
}
.admin-btn:hover{ border-color: var(--frost); color: var(--frost); }
.admin-btn.danger{ border-color: rgba(209,69,59,0.4); color: var(--breach); background: rgba(209,69,59,0.06); }
.admin-btn.danger:hover{ background: rgba(209,69,59,0.16); }
.admin-btn.primary{ border-color: var(--frost); color: var(--frost); }
.admin-btn.primary:hover{ background: rgba(127,212,224,0.1); }
.admin-save-note{ font-family:'IBM Plex Mono'; font-size:10.5px; color: var(--held); opacity:0; transition: opacity .3s; margin-right:auto; align-self:center; }
.admin-save-note.show{ opacity:1; }

.admin-add-card{ border-style:dashed; }
.admin-add-card .admin-panel-head, .admin-add-card > .admin-field:first-child{ margin-top:0; }
.admin-section-label{
  font-family:'IBM Plex Mono'; font-size:11px; text-transform:uppercase; letter-spacing:0.06em;
  color: var(--frost-dim); margin: 26px 0 10px;
}

/* ===== Account manager (/admin/accounts) ===== */
.manage-shell{ max-width:560px; margin:0 auto; padding:60px 20px; }
.manage-header{ display:flex; align-items:center; gap:12px; margin-bottom:28px; }
.manage-users{ display:flex; flex-direction:column; gap:1px; background: var(--line); border:1px solid var(--line); border-radius:6px; overflow:hidden; margin-bottom:20px; }
.manage-user-row{ background: var(--panel); display:flex; justify-content:space-between; align-items:center; padding:12px 16px; }
.manage-user-row .un{ font-family:'IBM Plex Mono'; font-size:13px; }
.manage-user-row .created{ font-family:'IBM Plex Mono'; font-size:10.5px; color: var(--text-dim); margin-left:10px; }
.manage-empty{ background: var(--panel); padding:16px; font-family:'IBM Plex Mono'; font-size:12px; color: var(--text-dim); }

/* Always-visible delete buttons for pages that don't use the content-editing r4-mode toggle */
.plain-del-btn{
  display:flex; align-items:center; justify-content:center; flex-shrink:0;
  width:19px; height:19px; border-radius:50%;
  background: var(--panel-raised); border:1px solid var(--line-bright); color: var(--text-dim);
  font-family:'IBM Plex Mono'; font-size:12px; line-height:1; cursor:pointer; padding:0;
  transition: border-color .15s, color .15s;
}
.plain-del-btn:hover{ border-color: var(--breach); color: var(--breach); }

/* ===== Landing page (state picker) ===== */
.landing-shell{ max-width:720px; margin:0 auto; padding:70px 20px; }
.landing-header{ display:flex; align-items:center; gap:14px; margin-bottom:10px; }
.landing-header h1{ font-family:'Oswald'; font-size:26px; text-transform:uppercase; }
.landing-sub{ color: var(--text-dim); font-size:14px; margin-bottom:32px; }
.state-grid{ display:grid; grid-template-columns: repeat(auto-fill, minmax(220px,1fr)); gap:14px; margin-bottom:28px; }
.state-card{
  background: var(--panel); border:1px solid var(--line); border-radius:8px; padding:18px 20px;
  text-decoration:none; color: var(--text); transition: border-color .15s, transform .15s;
  display:flex; flex-direction:column; gap:6px;
}
.state-card:hover{ border-color: var(--frost); transform: translateY(-1px); }
.state-card .sc-label{
  width:38px; height:38px; border:2px solid var(--frost); border-radius:2px; transform:rotate(45deg);
  display:flex; align-items:center; justify-content:center; margin-bottom:6px;
}
.state-card .sc-label span{ transform:rotate(-45deg); font-family:'Oswald'; font-weight:700; font-size:12px; color: var(--frost); }
.state-card .sc-name{ font-family:'Oswald'; font-size:15px; text-transform:uppercase; }
.state-card .sc-slug{ font-family:'IBM Plex Mono'; font-size:11px; color: var(--text-dim); }
.landing-empty{ background: var(--panel); border:1px dashed var(--line-bright); border-radius:8px; padding:24px; text-align:center; color: var(--text-dim); font-family:'IBM Plex Mono'; font-size:12.5px; margin-bottom:28px; }
