/* astal-menu — CyberQueer theme. Colours come from _colors.css (@text/@bg/@accent/
 * @violet/@danger). Mirrors the existing bar idiom: Agave Nerd Font Mono, 3px
 * borders, ~25px pill radii. Touch-friendly hit targets throughout. */

* {
  font-family: "Agave Nerd Font Mono", monospace;
  font-size: 13pt;
}

/* ---- window / letterbox --------------------------------------------- */
/* The CyberQueer GTK theme paints `* { background-color: #1a1a1a }` on EVERY node,
 * which fills the gaps between modules with a solid slab. Each module carries its
 * own drawn (Cairo) card background via bordered(fill_bg=True), so blank the
 * structural container nodes here to let the desktop show between the floating
 * modules. `drawingarea` is the bordered() ring canvas — transparent so only its
 * Cairo-drawn rounded fill shows, not a full-bleed square. */
window,
window.background,
.menu-window,
#menu-window,
.panel,
#panel-root,
overlay,
revealer,
grid,
scrolledwindow,
viewport,
drawingarea {
  background: transparent;
  background-color: transparent;
}

#backdrop {
  background: alpha(black, 0.25);
}

/* Letterbox margins are set in code (window.py) as a fraction of the monitor so
 * the inset scales per display; this box just carries the panel background. */

/* ---- quad grid + cards ---------------------------------------------- */
.quad-grid.dimmed {
  opacity: 0.15;
}

/* bouncy pop when a quad expands (added in ui/quadgrid.py on expand) */
@keyframes quad-pop {
  0%   { transform: scale(0.82); opacity: 0.4; }
  55%  { transform: scale(1.05); opacity: 1; }
  78%  { transform: scale(0.985); }
  100% { transform: scale(1.0); }
}
.quad-pop { animation: quad-pop 300ms ease-out; }

.quad-card { min-height: 100px; }
.section-title { color: @text; font-weight: bold; opacity: 0.85; }

/* The single module border + background is drawn with Cairo by bordered(fill_bg=True)
 * (see lib/border.py); the CSS border/background here would render a second,
 * concentric ring now that the app stylesheet sits above the theme, so only keep
 * the inner content padding. */
.quad-card,
.quad-expanded,
.appdrawer,
.taskbar,
.favorites {
  padding: 8px 12px;
}

.quad-header,
.appdrawer-header,
.expanded-header {
  margin-bottom: 8px;
}

.quad-title { color: @text; font-weight: bold; }
.quad-icon  { color: @accent; font-size: 15pt; }

.quad-body { color: @text; }

/* pill action buttons */
.quad-action,
.enable-btn {
  color: @text;
  background: @bg;
  border: 3px solid @violet;
  border-radius: 25px;
  padding: 6px 14px;
  min-height: 32px;
  min-width: 32px;
}
.quad-action:hover,
.enable-btn:hover { border-color: @accent; color: @accent; }
.quad-action:active,
button:checked.quad-action { background: @accent; color: @bg; border-color: @accent; }

/* A MenuButton (the settings cog) wraps an inner `button` node that would render a
 * second ring inside the outer .quad-action pill — flatten it so only one border
 * shows. */
.quad-action > button {
  border: none;
  background: transparent;
  padding: 0;
  min-width: 0;
  min-height: 0;
}

.quad-disabled { color: @text; opacity: 0.7; }
.enable-btn { border-color: @accent; }

/* settings popover */
.quad-settings { background: @bg; border: 3px solid @violet; border-radius: 16px; padding: 10px; }
.switch-row { min-height: 36px; }

.expanded-header .quad-title { font-size: 14pt; }

/* ---- appdrawer ------------------------------------------------------ */
.appdrawer-search {
  border: 3px solid @violet;
  border-radius: 25px;
  padding: 8px 14px;
  margin-bottom: 8px;
  color: @text;
  background: @bg;
}
.appdrawer-search:focus-within { border-color: @accent; }

.app-tile {
  background: transparent;
  border: 2px solid transparent;
  border-radius: 16px;
  padding: 10px 6px;
  min-width: 92px;
}
.app-tile:hover { border-color: @accent; background: alpha(@violet, 0.18); }
.app-tile label { color: @text; font-size: 10pt; }
.fav-star { color: @accent; font-size: 13pt; margin: 2px 4px; }

/* ---- favourites row (top of drawer) --------------------------------- */
.favorites-row { padding: 4px 0; }
.fav-tile {
  background: @bg;
  border: 2px solid @violet;
  border-radius: 16px;
  padding: 6px 12px;
  min-height: 40px;
}
.fav-tile:hover { border-color: @accent; }
.fav-tile label { color: @text; font-size: 11pt; }

/* ---- taskbar (open windows) ----------------------------------------- */
.taskbar-row { padding: 4px 0; }
.task-tile {
  background: transparent;
  border: 2px solid transparent;
  border-radius: 14px;
  padding: 6px 10px;
  min-height: 44px;
  min-width: 44px;
}
.task-tile:hover { border-color: @accent; background: alpha(@violet, 0.18); }
.task-badge {
  color: @bg; background: @accent;
  border-radius: 10px; padding: 0 6px; font-size: 9pt;
}
.task-popover { background: @bg; border: 3px solid @violet; border-radius: 14px; padding: 6px; }
.task-window { color: @text; background: transparent; border-radius: 10px; padding: 6px 12px; }
.task-window:hover { color: @accent; }

/* ---- location map --------------------------------------------------- */
.map-view { border-radius: 14px; }
.map-info { color: @text; padding: 6px 2px 0 2px; font-size: 11pt; }
.map-marker { color: @accent; }

/* ---- weather -------------------------------------------------------- */
.ansi-view,
.ansi-view text {
  background: @bg;
  color: @text;
  font-family: "Agave Nerd Font Mono", monospace;
  font-size: 11pt;
  padding: 4px;
}
.weather-status { color: @text; opacity: 0.7; }

/* ---- bluetooth / network shared rows -------------------------------- */
.bt-row,
.net-row {
  padding: 4px 6px;
  border-radius: 12px;
  min-height: 30px;
}
.bt-row:hover,
.net-row:hover { background: alpha(@violet, 0.15); }
.bt-status { color: @accent; font-size: 10pt; }
.bt-history label,
.net-ip { color: @text; opacity: 0.85; font-size: 11pt; }

.net-switcher { margin-bottom: 8px; }
.net-adapter { padding: 4px 0; }
.net-adapter > box { padding-left: 6px; }
.net-entry {
  border: 2px solid @violet;
  border-radius: 12px;
  padding: 6px 10px;
  color: @text;
  background: @bg;
}
.net-entry:focus-within { border-color: @accent; }
.pubip { color: @accent; font-size: 15pt; }

/* switches: fixed pill with a bordered round knob (the reset theme leaves them
 * shapeless otherwise) */
switch {
  min-width: 48px;
  min-height: 26px;
  border: 2px solid @violet;
  border-radius: 15px;
  background: @bg;
  padding: 0;
}
switch:checked { background: @accent; border-color: @accent; }
switch > slider {
  min-width: 18px;
  min-height: 18px;
  margin: 2px;
  border-radius: 50%;
  border: 1px solid @violet;
  background: @text;
}
switch:checked > slider { border-color: @accent; }
scrollbar slider { background: @violet; border-radius: 8px; min-width: 6px; }
scrollbar slider:hover { background: @accent; }

/* module frames — Gtk.Frame paints borders reliably where boxes do not */
.module-frame { border: 3px solid @accent; border-radius: 16px; background: @bg; }
.module-frame > box { padding: 10px 12px; }

/* floating panel + close button */
.panel { padding: 2px; }
.close-btn {
  color: @text; background: @bg;
  border: none; border-radius: 20px;
  min-width: 34px; min-height: 34px;
  margin: 16px 20px;   /* keep it clear of the module's drawn border */
}
.close-btn:hover { background: @accent; color: @bg; }
