/* Game of Life */
.gol-app{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--bg-primary);font-size:13px;}

/* Toolbar */
.gol-toolbar{display:flex;align-items:center;gap:6px;padding:6px 10px;border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap;}
.gol-toolbar-group{display:flex;align-items:center;gap:4px;}
.gol-toolbar-sep{width:1px;height:20px;background:var(--border);margin:0 2px;}
.gol-btn{
  padding:4px 10px;border-radius:6px;border:1px solid var(--border);
  background:rgba(255,255,255,0.04);color:var(--text-primary);
  font-size:12px;cursor:pointer;transition:all 0.15s;white-space:nowrap;
}
.gol-btn:hover{background:rgba(255,255,255,0.08);}
.gol-btn.active{background:var(--accent);border-color:var(--accent);color:#fff;}
.gol-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;}
.gol-btn.primary:hover{filter:brightness(1.15);}
.gol-btn.danger{border-color:rgba(255,80,80,0.4);color:#ff7b7b;}
.gol-btn.danger:hover{background:rgba(255,80,80,0.15);}
.gol-btn.sm{padding:3px 7px;font-size:11px;}
.gol-btn:disabled{opacity:0.4;cursor:default;}
.gol-select{
  padding:4px 6px;border-radius:6px;border:1px solid var(--border);
  background:var(--bg-secondary);color:var(--text-primary);
  font-size:12px;cursor:pointer;max-width:150px;
}
.gol-stat{font-size:12px;color:var(--text-secondary);white-space:nowrap;}
.gol-stat b{color:var(--text-primary);font-weight:600;}

/* Canvas area */
.gol-canvas-wrap{flex:1;position:relative;overflow:hidden;cursor:crosshair;}
.gol-canvas-wrap.panning{cursor:grab;}
.gol-canvas-wrap.panning:active{cursor:grabbing;}
.gol-canvas{display:block;width:100%;height:100%;}

/* Template panel */
.gol-tpl-panel{
  position:absolute;top:0;left:0;width:220px;height:100%;
  background:var(--bg-secondary);border-right:1px solid var(--border);
  z-index:10;overflow-y:auto;padding:8px;display:none;
}
.gol-tpl-panel.open{display:block;}
.gol-tpl-cat{font-size:11px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:0.5px;margin:10px 0 4px;padding:0 4px;}
.gol-tpl-cat:first-child{margin-top:2px;}
.gol-tpl-item{
  display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:6px;
  cursor:pointer;transition:background 0.1s;
}
.gol-tpl-item:hover{background:rgba(255,255,255,0.06);}
.gol-tpl-item.selected{background:var(--accent);color:#fff;}
.gol-tpl-preview{
  width:28px;height:28px;border-radius:4px;border:1px solid var(--border);
  background:#111;flex-shrink:0;image-rendering:pixelated;
}
.gol-tpl-name{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* Map browser modal */
.gol-modal-overlay{
  position:absolute;inset:0;background:rgba(0,0,0,0.6);z-index:20;
  display:flex;align-items:center;justify-content:center;
}
.gol-modal{
  background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;
  padding:20px;min-width:340px;max-width:460px;max-height:80%;overflow-y:auto;
  box-shadow:0 8px 30px rgba(0,0,0,0.4);
}
.gol-modal h3{margin:0 0 12px;font-size:15px;font-weight:600;}
.gol-modal-close{position:absolute;top:8px;right:12px;background:none;border:none;color:var(--text-secondary);font-size:18px;cursor:pointer;}
.gol-field{display:flex;flex-direction:column;gap:3px;margin-bottom:10px;}
.gol-field label{font-size:12px;color:var(--text-secondary);font-weight:600;}
.gol-field input,.gol-field select{
  padding:6px 10px;border-radius:6px;border:1px solid var(--border);
  background:var(--bg-primary);color:var(--text-primary);font-size:13px;
}
.gol-field-row{display:flex;gap:8px;}
.gol-field-row .gol-field{flex:1;}
.gol-modal-actions{display:flex;gap:8px;margin-top:14px;justify-content:flex-end;}
.gol-msg{font-size:12px;margin-top:6px;}
.gol-msg.err{color:#ff7b7b;}

/* Map list */
.gol-map-list{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;max-height:260px;overflow-y:auto;}
.gol-map-item{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:8px 10px;border-radius:8px;border:1px solid var(--border);
  background:rgba(255,255,255,0.02);cursor:pointer;transition:background 0.1s;
}
.gol-map-item:hover{background:rgba(255,255,255,0.05);}
.gol-map-item.active{border-color:var(--accent);background:rgba(var(--accent-rgb,66,133,244),0.1);}
.gol-map-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1;}
.gol-map-name{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gol-map-meta{font-size:11px;color:var(--text-secondary);}
.gol-map-badge{
  display:inline-block;padding:1px 6px;border-radius:5px;
  font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.3px;
}
.gol-map-badge.private{background:rgba(255,80,80,0.15);color:#ff7b7b;}
.gol-map-badge.protected{background:rgba(255,165,0,0.15);color:#ffb347;}
.gol-map-badge.public{background:rgba(76,175,80,0.15);color:#81c784;}

/* Status bar */
.gol-status{
  display:flex;align-items:center;gap:8px;padding:4px 10px;
  border-top:1px solid var(--border);font-size:11px;color:var(--text-secondary);flex-shrink:0;
}
.gol-status-sep{width:1px;height:14px;background:var(--border);}
.gol-players{display:flex;align-items:center;gap:6px;margin-left:auto;}
.gol-player{display:flex;align-items:center;gap:3px;font-size:11px;}
.gol-player-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}

/* Zoom hint overlay */
.gol-hint{
  position:absolute;bottom:10px;right:10px;
  padding:4px 10px;border-radius:6px;
  background:rgba(0,0,0,0.7);color:var(--text-secondary);
  font-size:11px;pointer-events:none;opacity:0;transition:opacity 0.3s;
}
.gol-hint.show{opacity:1;}

/* Keyboard shortcuts help */
.gol-shortcuts{font-size:12px;line-height:1.8;color:var(--text-secondary);}
.gol-shortcuts kbd{
  display:inline-block;padding:1px 5px;border-radius:4px;
  border:1px solid var(--border);background:var(--bg-primary);
  font-size:11px;font-family:inherit;color:var(--text-primary);
}
