238 lines
6.8 KiB
CSS
238 lines
6.8 KiB
CSS
/* 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;
|
|
}
|
|
|
|
.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; }
|