8fb8efcbbd
- tanin-greet.install: post_remove restores the previous greetd config — removing the package no longer leaves greetd pointing at a dead binary - aur-autoupdate: skip packages when the AUR RPC is unreachable instead of building blind (fail closed) - build-tanin-repo: per-package makepkg logs instead of >/dev/null - live ISO: drop sshd.service enablement (root has an empty password on the live medium); encoded in bootstrap-profile.sh so it survives re-bootstrap - gtklock config: de-personalize hardcoded /home/karim path, mark as not-yet-packaged reference - tanin-desktop PKGBUILD: correct stale AUR-vs-extra comments (gtklock, awww, cliphist are in extra), document the eww-git provides=eww contract - docs/distribution.md: mark SigLevel TrustAll as temporary/insecure, add repo-signing TODO (repo-add -s, SigLevel Required), tick done roadmap items - tanin-calendar + niri-config.kdl: pending session work Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
691 lines
17 KiB
CSS
691 lines
17 KiB
CSS
/* tanin-calendar — TANINUX calendar
|
|
*
|
|
* libadwaita-free. The look is the TANINUX design language shared with the
|
|
* Music app and the Settings hub: a glassy sidebar on the left, content on the
|
|
* right, rounded cards, accent pills.
|
|
*
|
|
* Colours come from the GLOBAL TANINUX named colours (defined in
|
|
* ~/.config/gtk-4.0/libadwaita.css by `taninux` → see gui/style.py), so the
|
|
* calendar tracks the LIVE Fuji accent and light/dark automatically:
|
|
* @accent_color the chosen Fuji hue
|
|
* @window_bg_color shell surface (dark #0f0f0f / light #f3f1ec)
|
|
* @window_fg_color text (dark #f0f0f0 / light #0f0f0f)
|
|
* @card_bg_color raised cards (dark #191919 / light #ffffff)
|
|
*
|
|
* Per-event/calendar background colours are injected at runtime (see
|
|
* _color_dot / _event_block in tanin-calendar).
|
|
*/
|
|
|
|
/* ===================================================================== FONT */
|
|
/* Body / content text: Inter, like the Settings & Music apps. */
|
|
.tn-cal,
|
|
.tn-cal label,
|
|
.tn-cal-dialog,
|
|
.tn-cal-dialog label {
|
|
font-family: -apple-system, "SF Pro Text", "Inter", "Cantarell", sans-serif;
|
|
}
|
|
|
|
/* Top-area "chrome" / display text: Iosevka Aile, like the TANINUX bar (eww).
|
|
* Brand, masthead month/year, the Day·Week·Month switcher, Today, the
|
|
* mini-month and the grid's weekday/day labels all read as bar-style display
|
|
* type so the calendar ties into the panel typography.
|
|
*
|
|
* Each selector is qualified with `.tn-cal ` so it has higher specificity than
|
|
* the `.tn-cal label` body-font rule above (otherwise Inter would win). */
|
|
.tn-cal .tn-brand,
|
|
.tn-cal .tn-cal-month,
|
|
.tn-cal .tn-cal-year,
|
|
.tn-cal .tn-cal-daysub,
|
|
.tn-cal .tn-segment-btn,
|
|
.tn-cal .tn-cal-today,
|
|
.tn-cal .tn-mini-title,
|
|
.tn-cal .tn-mini-dow,
|
|
.tn-cal .tn-mini-day,
|
|
.tn-cal .weekday-header,
|
|
.tn-cal .day-number,
|
|
.tn-cal .timegrid-col-name,
|
|
.tn-cal .timegrid-col-date,
|
|
.tn-cal .hour-label {
|
|
font-family: "Iosevka Aile", "Iosevka", "Symbols Nerd Font", sans-serif;
|
|
}
|
|
|
|
/* ============================================================ WINDOW SURFACE */
|
|
.tn-cal,
|
|
.tn-cal-dialog {
|
|
background-color: @window_bg_color;
|
|
color: @window_fg_color;
|
|
}
|
|
|
|
/* =================================================================== SIDEBAR */
|
|
/* Glassy floating panel — same family as the Music/Settings .tn-sidebar. */
|
|
.tn-cal-sidebar {
|
|
background-color: @window_bg_color;
|
|
border-right: 1px solid alpha(@window_fg_color, 0.07);
|
|
padding: 0 8px 12px 8px;
|
|
background-image: linear-gradient(
|
|
to bottom,
|
|
alpha(@window_fg_color, 0.035),
|
|
alpha(@window_fg_color, 0.0) 180px
|
|
);
|
|
box-shadow: inset -1px 0 0 alpha(@window_fg_color, 0.04);
|
|
}
|
|
|
|
.tn-cal .tn-brand {
|
|
font-size: 1.55em;
|
|
font-weight: 800;
|
|
color: @window_fg_color;
|
|
margin: 18px 4px 12px 6px;
|
|
}
|
|
|
|
/* "Neuer Termin" — glassy accent-wash, matching a selected sidebar row in the
|
|
* Music/Settings apps (alpha accent fill + accent border + accent text). */
|
|
.tn-cal-new {
|
|
margin: 0 2px 16px 2px;
|
|
padding: 9px 14px;
|
|
font-weight: 600;
|
|
border-radius: 12px;
|
|
color: @accent_color;
|
|
background-color: alpha(@accent_color, 0.18);
|
|
border: 1px solid alpha(@accent_color, 0.32);
|
|
box-shadow:
|
|
0 2px 8px rgba(0, 0, 0, 0.30),
|
|
inset 0 1px 0 alpha(@window_fg_color, 0.10);
|
|
}
|
|
.tn-cal-new:hover {
|
|
background-color: alpha(@accent_color, 0.26);
|
|
border-color: alpha(@accent_color, 0.45);
|
|
}
|
|
.tn-cal-new label,
|
|
.tn-cal-new image {
|
|
color: @accent_color;
|
|
}
|
|
|
|
.tn-cal .tn-nav-header {
|
|
font-size: 0.78em;
|
|
font-weight: 700;
|
|
color: alpha(@window_fg_color, 0.5);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.04em;
|
|
margin: 14px 6px 6px 6px;
|
|
}
|
|
|
|
/* --- mini-month navigator ------------------------------------------------- */
|
|
.tn-mini {
|
|
margin: 0 0 8px 0;
|
|
}
|
|
|
|
.tn-mini-header {
|
|
margin: 2px 2px 4px 2px;
|
|
}
|
|
|
|
.tn-mini-title {
|
|
font-size: 0.95em;
|
|
font-weight: 700;
|
|
color: @window_fg_color;
|
|
margin-left: 4px;
|
|
}
|
|
|
|
.tn-mini-header button {
|
|
min-width: 26px;
|
|
min-height: 26px;
|
|
padding: 0;
|
|
color: alpha(@window_fg_color, 0.7);
|
|
}
|
|
|
|
.tn-mini-grid {
|
|
margin: 0 1px;
|
|
}
|
|
|
|
.tn-mini-dow {
|
|
font-size: 0.68em;
|
|
font-weight: 700;
|
|
color: alpha(@window_fg_color, 0.4);
|
|
padding-bottom: 2px;
|
|
}
|
|
|
|
/* Each mini day is a tiny round button; today/selected/event states layer on.
|
|
* Fixed equal width/height (centred in its cell) → a true circle, not an
|
|
* ellipse stretched to the column. */
|
|
.tn-mini-day {
|
|
font-size: 0.78em;
|
|
min-width: 28px;
|
|
min-height: 28px;
|
|
padding: 0;
|
|
margin: 0;
|
|
border-radius: 50%;
|
|
color: @window_fg_color;
|
|
}
|
|
.tn-mini-day:hover {
|
|
background-color: alpha(@window_fg_color, 0.08);
|
|
}
|
|
.tn-mini-day.other-month {
|
|
color: alpha(@window_fg_color, 0.28);
|
|
}
|
|
.tn-mini-day.today {
|
|
color: @accent_color;
|
|
font-weight: 800;
|
|
}
|
|
.tn-mini-day.selected {
|
|
background-color: @accent_color;
|
|
color: @accent_fg_color;
|
|
font-weight: 700;
|
|
}
|
|
.tn-mini-day.selected.today {
|
|
color: @accent_fg_color;
|
|
}
|
|
/* A small accent dot under days that hold events (no dot when selected). */
|
|
.tn-mini-day.has-events:not(.selected) {
|
|
background-image: radial-gradient(
|
|
circle at 50% 86%, @accent_color 0, @accent_color 1.3px, transparent 1.6px);
|
|
}
|
|
|
|
/* --- calendar show/hide list ---------------------------------------------- */
|
|
.tn-cal-list {
|
|
padding: 2px;
|
|
}
|
|
.tn-cal-item {
|
|
padding: 6px 8px;
|
|
border-radius: 10px;
|
|
margin: 1px 0;
|
|
}
|
|
.tn-cal-item:hover {
|
|
background-color: alpha(@window_fg_color, 0.06);
|
|
}
|
|
.tn-cal-item-label {
|
|
color: @window_fg_color;
|
|
font-size: 0.92em;
|
|
}
|
|
/* Hidden calendar: dim the row + hollow out its colour dot. */
|
|
.tn-cal-item.hidden .tn-cal-item-label {
|
|
color: alpha(@window_fg_color, 0.4);
|
|
}
|
|
.tn-cal-item.hidden .event-dot {
|
|
opacity: 0.3;
|
|
}
|
|
.tn-cal-list-empty {
|
|
color: alpha(@window_fg_color, 0.45);
|
|
font-size: 0.88em;
|
|
padding: 6px 8px;
|
|
}
|
|
|
|
/* =================================================================== CONTENT */
|
|
.tn-cal-content {
|
|
background-color: @window_bg_color;
|
|
}
|
|
|
|
/* --- masthead ------------------------------------------------------------- */
|
|
.tn-cal-masthead {
|
|
padding: 16px 20px 14px 24px;
|
|
border-bottom: 1px solid alpha(@window_fg_color, 0.07);
|
|
}
|
|
/* Same size as the sidebar "Calendar" brand (.tn-brand = 1.55em). */
|
|
.tn-cal-month {
|
|
font-size: 1.55em;
|
|
font-weight: 800;
|
|
color: @window_fg_color;
|
|
}
|
|
.tn-cal-year {
|
|
font-size: 1.55em;
|
|
font-weight: 300;
|
|
color: alpha(@window_fg_color, 0.45);
|
|
}
|
|
.tn-cal-daysub {
|
|
font-size: 1.05em;
|
|
font-weight: 500;
|
|
color: alpha(@window_fg_color, 0.55);
|
|
margin-left: 2px;
|
|
}
|
|
.tn-cal-masthead button.circular {
|
|
min-width: 32px;
|
|
min-height: 32px;
|
|
padding: 0;
|
|
color: @window_fg_color;
|
|
}
|
|
.tn-cal-masthead button.circular:hover {
|
|
background-color: alpha(@window_fg_color, 0.08);
|
|
}
|
|
.tn-cal-today {
|
|
padding: 5px 16px;
|
|
font-weight: 600;
|
|
color: @window_fg_color;
|
|
background-color: alpha(@window_fg_color, 0.08);
|
|
}
|
|
.tn-cal-today:hover {
|
|
background-color: alpha(@window_fg_color, 0.14);
|
|
}
|
|
|
|
/* Day | Week | Month segmented switcher. */
|
|
.tn-segment {
|
|
margin-left: 6px;
|
|
border-radius: 999px;
|
|
padding: 2px;
|
|
background-color: alpha(@window_fg_color, 0.08);
|
|
}
|
|
.tn-segment-btn {
|
|
padding: 4px 14px;
|
|
border-radius: 999px;
|
|
min-height: 0;
|
|
background: transparent;
|
|
box-shadow: none;
|
|
border: none;
|
|
color: alpha(@window_fg_color, 0.7);
|
|
font-weight: 600;
|
|
font-size: 0.9em;
|
|
}
|
|
.tn-segment-btn:hover {
|
|
background-color: alpha(@window_fg_color, 0.06);
|
|
}
|
|
.tn-segment-btn:checked {
|
|
background-color: @accent_color;
|
|
color: @accent_fg_color;
|
|
box-shadow: 0 1px 3px alpha(@accent_color, 0.4);
|
|
}
|
|
|
|
/* --- warning banner ------------------------------------------------------- */
|
|
.tn-cal-banner {
|
|
padding: 8px 18px;
|
|
background-color: alpha(#e0a000, 0.14);
|
|
color: @window_fg_color;
|
|
border-bottom: 1px solid alpha(#e0a000, 0.25);
|
|
}
|
|
|
|
/* ===================================================================== DOTS */
|
|
.event-dot {
|
|
min-width: 10px;
|
|
min-height: 10px;
|
|
border-radius: 9999px;
|
|
background-color: alpha(@window_fg_color, 0.35);
|
|
}
|
|
.chip-dot {
|
|
min-width: 8px;
|
|
min-height: 8px;
|
|
}
|
|
|
|
/* =============================================================== MONTH GRID */
|
|
.month-grid {
|
|
background-color: @window_bg_color;
|
|
padding: 0;
|
|
}
|
|
.weekday-header {
|
|
color: alpha(@window_fg_color, 0.55);
|
|
font-weight: bold;
|
|
font-size: 0.82em;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.04em;
|
|
padding: 8px 6px;
|
|
background-color: alpha(@window_fg_color, 0.04);
|
|
}
|
|
/* One day cell. The 1px outline forms the grid's hairlines without doubling. */
|
|
.day-cell {
|
|
background-color: @window_bg_color;
|
|
border: 1px solid alpha(@window_fg_color, 0.07);
|
|
padding: 4px 5px;
|
|
min-height: 92px;
|
|
}
|
|
.day-cell.other-month {
|
|
background-color: alpha(@window_fg_color, 0.02);
|
|
}
|
|
.day-cell.other-month .day-number {
|
|
color: alpha(@window_fg_color, 0.3);
|
|
}
|
|
/* Today's cell: accent ring + subtle tinted background. */
|
|
.day-cell.today {
|
|
background-color: alpha(@accent_color, 0.10);
|
|
border: 1px solid @accent_color;
|
|
}
|
|
.day-cell.today .day-number {
|
|
color: @accent_color;
|
|
font-weight: bold;
|
|
}
|
|
/* The SELECTED cell (distinct from today). */
|
|
.day-cell.selected {
|
|
background-color: alpha(@window_fg_color, 0.07);
|
|
border: 1px solid alpha(@window_fg_color, 0.3);
|
|
}
|
|
.day-cell.selected.today {
|
|
background-color: alpha(@accent_color, 0.18);
|
|
border: 1px solid @accent_color;
|
|
}
|
|
.day-cell.selected .day-number {
|
|
color: @window_fg_color;
|
|
font-weight: bold;
|
|
}
|
|
.day-number {
|
|
color: @window_fg_color;
|
|
font-size: 0.9em;
|
|
padding: 1px 2px;
|
|
margin-bottom: 2px;
|
|
}
|
|
|
|
/* --- event chips ---------------------------------------------------------- */
|
|
.event-chip {
|
|
background-color: alpha(@window_fg_color, 0.06);
|
|
border-radius: 6px;
|
|
padding: 1px 5px;
|
|
min-height: 0;
|
|
margin: 0;
|
|
}
|
|
.event-chip:hover {
|
|
background-color: alpha(@window_fg_color, 0.11);
|
|
}
|
|
.chip-label {
|
|
color: @window_fg_color;
|
|
font-size: 0.82em;
|
|
}
|
|
.more-label {
|
|
color: alpha(@window_fg_color, 0.5);
|
|
font-size: 0.78em;
|
|
padding: 0 4px;
|
|
}
|
|
|
|
/* ================================================ SELECTED-DAY AGENDA (Month) */
|
|
/* Sits directly under the grid (same scroller), aligned to the grid width. */
|
|
.tn-cal-page {
|
|
padding: 18px 0 24px 0;
|
|
}
|
|
.tn-cal-agenda-inner {
|
|
margin-top: 14px;
|
|
padding: 14px 6px 0 6px;
|
|
border-top: 1px solid alpha(@window_fg_color, 0.10);
|
|
}
|
|
.tn-cal-agenda-heading {
|
|
color: @window_fg_color;
|
|
font-size: 1.05em;
|
|
font-weight: 700;
|
|
margin-bottom: 4px;
|
|
}
|
|
.tn-cal-agenda-empty {
|
|
color: alpha(@window_fg_color, 0.5);
|
|
font-size: 0.92em;
|
|
padding: 2px;
|
|
}
|
|
.agenda-row {
|
|
background-color: @card_bg_color;
|
|
border: 1px solid alpha(@window_fg_color, 0.06);
|
|
border-radius: 10px;
|
|
padding: 8px 12px;
|
|
min-height: 0;
|
|
margin: 0;
|
|
}
|
|
.agenda-row:hover {
|
|
background-color: alpha(@window_fg_color, 0.08);
|
|
}
|
|
.agenda-time {
|
|
color: alpha(@window_fg_color, 0.55);
|
|
font-size: 0.88em;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.agenda-title {
|
|
color: @window_fg_color;
|
|
font-size: 0.98em;
|
|
font-weight: 500;
|
|
}
|
|
.agenda-location {
|
|
color: alpha(@window_fg_color, 0.5);
|
|
font-size: 0.82em;
|
|
}
|
|
|
|
/* ================================================================ TIME GRID */
|
|
.timegrid-header {
|
|
background-color: @window_bg_color;
|
|
border-bottom: 1px solid alpha(@window_fg_color, 0.10);
|
|
}
|
|
.timegrid-corner {
|
|
background-color: @window_bg_color;
|
|
}
|
|
.timegrid-col-header {
|
|
padding: 8px 4px 9px 4px;
|
|
border-left: 1px solid alpha(@window_fg_color, 0.06);
|
|
}
|
|
.timegrid-col-header:hover {
|
|
background-color: alpha(@window_fg_color, 0.04);
|
|
}
|
|
.timegrid-col-name {
|
|
color: alpha(@window_fg_color, 0.55);
|
|
font-size: 0.78em;
|
|
font-weight: bold;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.04em;
|
|
}
|
|
.timegrid-col-date {
|
|
color: @window_fg_color;
|
|
font-size: 1.25em;
|
|
font-weight: 600;
|
|
}
|
|
.timegrid-col-header.today .timegrid-col-name,
|
|
.timegrid-col-header.today .timegrid-col-date {
|
|
color: @accent_color;
|
|
font-weight: bold;
|
|
}
|
|
.timegrid-col-header.selected {
|
|
background-color: alpha(@window_fg_color, 0.06);
|
|
}
|
|
|
|
/* --- all-day strip -------------------------------------------------------- */
|
|
.allday-row {
|
|
background-color: alpha(@window_fg_color, 0.02);
|
|
border-bottom: 1px solid alpha(@window_fg_color, 0.10);
|
|
min-height: 30px;
|
|
}
|
|
.allday-axis {
|
|
color: alpha(@window_fg_color, 0.5);
|
|
font-size: 0.7em;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.03em;
|
|
padding-right: 8px;
|
|
}
|
|
.allday-cell {
|
|
border-left: 1px solid alpha(@window_fg_color, 0.06);
|
|
padding: 2px 4px;
|
|
}
|
|
.allday-cell.today {
|
|
background-color: alpha(@accent_color, 0.08);
|
|
}
|
|
.allday-chip {
|
|
background-color: alpha(@window_fg_color, 0.06);
|
|
border-left: 3px solid alpha(@window_fg_color, 0.5);
|
|
border-radius: 5px;
|
|
padding: 0 6px;
|
|
min-height: 0;
|
|
margin: 1px 0;
|
|
}
|
|
.allday-chip:hover {
|
|
background-color: alpha(@window_fg_color, 0.11);
|
|
}
|
|
.allday-chip-label {
|
|
color: @window_fg_color;
|
|
font-size: 0.8em;
|
|
}
|
|
|
|
/* --- scrolling hour grid -------------------------------------------------- */
|
|
.timegrid-body {
|
|
background-color: @window_bg_color;
|
|
}
|
|
.time-axis {
|
|
background-color: @window_bg_color;
|
|
border-right: 1px solid alpha(@window_fg_color, 0.08);
|
|
}
|
|
.hour-label {
|
|
color: alpha(@window_fg_color, 0.5);
|
|
font-size: 0.72em;
|
|
font-variant-numeric: tabular-nums;
|
|
padding: 1px 6px 0 0;
|
|
}
|
|
.day-column {
|
|
background-color: @window_bg_color;
|
|
border-left: 1px solid alpha(@window_fg_color, 0.06);
|
|
}
|
|
.day-column.today {
|
|
background-color: alpha(@accent_color, 0.05);
|
|
}
|
|
.day-column .hour-line {
|
|
background-color: alpha(@window_fg_color, 0.09);
|
|
}
|
|
.day-column .half-line {
|
|
background-color: alpha(@window_fg_color, 0.04);
|
|
}
|
|
/* A positioned timed-event block (rounded, calendar-colour tinted). */
|
|
.event-block {
|
|
background-color: alpha(@accent_color, 0.18);
|
|
border-left: 3px solid @accent_color;
|
|
border-radius: 6px;
|
|
padding: 2px 6px;
|
|
min-height: 0;
|
|
margin: 0;
|
|
}
|
|
.event-block:hover {
|
|
background-color: alpha(@accent_color, 0.30);
|
|
}
|
|
.event-block-time {
|
|
color: @window_fg_color;
|
|
font-size: 0.72em;
|
|
font-variant-numeric: tabular-nums;
|
|
opacity: 0.85;
|
|
}
|
|
.event-block-title {
|
|
color: @window_fg_color;
|
|
font-size: 0.82em;
|
|
font-weight: 600;
|
|
}
|
|
.now-line {
|
|
background-color: @accent_color;
|
|
}
|
|
.drag-selection {
|
|
background-color: alpha(@accent_color, 0.25);
|
|
border: 1px solid @accent_color;
|
|
border-radius: 6px;
|
|
}
|
|
|
|
/* =============================================================== CARDS/ROWS */
|
|
/* Shared with the dialogs: rounded raised card holding hairline-split rows. */
|
|
.tn-cal .tn-card,
|
|
.tn-cal-dialog .tn-card {
|
|
background-color: @card_bg_color;
|
|
border-radius: 14px;
|
|
border: 1px solid alpha(@window_fg_color, 0.07);
|
|
box-shadow:
|
|
0 2px 6px rgba(0, 0, 0, 0.40),
|
|
0 8px 28px rgba(0, 0, 0, 0.28),
|
|
inset 0 1px 0 alpha(@window_fg_color, 0.07);
|
|
}
|
|
.tn-cal-dialog .tn-row {
|
|
padding: 10px 16px;
|
|
min-height: 26px;
|
|
}
|
|
.tn-cal-dialog .tn-card > .tn-row:not(:last-child) {
|
|
border-bottom: 1px solid alpha(@window_fg_color, 0.10);
|
|
}
|
|
.tn-cal-dialog .tn-title {
|
|
color: @window_fg_color;
|
|
font-weight: 500;
|
|
}
|
|
.tn-cal-dialog .tn-subtitle {
|
|
color: alpha(@window_fg_color, 0.55);
|
|
font-size: 0.9em;
|
|
}
|
|
|
|
/* ================================================================== DIALOGS */
|
|
.tn-cal-dialog-box {
|
|
padding: 22px 22px 20px 22px;
|
|
}
|
|
.tn-cal-dialog-title {
|
|
font-size: 1.4em;
|
|
font-weight: 800;
|
|
color: @window_fg_color;
|
|
}
|
|
.tn-cal-dialog entry {
|
|
background-color: alpha(@window_fg_color, 0.06);
|
|
border: 1px solid alpha(@window_fg_color, 0.10);
|
|
border-radius: 10px;
|
|
color: @window_fg_color;
|
|
padding: 6px 10px;
|
|
}
|
|
.tn-cal-dialog entry:focus-within {
|
|
border-color: @accent_color;
|
|
}
|
|
.tn-cal-dialog entry.error {
|
|
border-color: #ff453a;
|
|
}
|
|
/* HH : MM time picker — compact dropdowns with a tabular Iosevka readout. */
|
|
.tn-cal-time-dd {
|
|
min-width: 58px;
|
|
}
|
|
.tn-cal-time-dd,
|
|
.tn-cal-time-sep {
|
|
font-family: "Iosevka Aile", "Iosevka", monospace;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.tn-cal-time-sep {
|
|
font-weight: 700;
|
|
color: alpha(@window_fg_color, 0.6);
|
|
}
|
|
/* Accent the switch when on (GTK default would be blue without libadwaita). */
|
|
.tn-cal-dialog switch:checked {
|
|
background-color: @accent_color;
|
|
}
|
|
/* Primary action (Save) = solid Fuji accent, not GTK's default blue. */
|
|
.tn-cal-dialog button.suggested-action,
|
|
.tn-cal button.suggested-action {
|
|
background-color: @accent_color;
|
|
color: @accent_fg_color;
|
|
box-shadow: none;
|
|
}
|
|
.tn-cal-dialog button.suggested-action:hover,
|
|
.tn-cal button.suggested-action:hover {
|
|
background-color: shade(@accent_color, 0.92);
|
|
}
|
|
|
|
/* =============================================================== STATUS PAGE */
|
|
.tn-status-page {
|
|
padding: 36px 24px;
|
|
}
|
|
.tn-status-icon {
|
|
color: alpha(@window_fg_color, 0.3);
|
|
-gtk-icon-size: 96px;
|
|
}
|
|
.tn-status-desc {
|
|
color: alpha(@window_fg_color, 0.6);
|
|
font-size: 0.95em;
|
|
}
|
|
.title-1 {
|
|
font-size: 1.9em;
|
|
font-weight: 800;
|
|
color: @window_fg_color;
|
|
}
|
|
|
|
/* ===================================================================== TOAST */
|
|
.tn-toast {
|
|
background-color: rgba(40, 40, 42, 0.92);
|
|
color: #ffffff;
|
|
border-radius: 999px;
|
|
padding: 10px 20px;
|
|
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
/* ============================================================ CONTEXT MENUS */
|
|
.context-menu {
|
|
padding: 4px;
|
|
min-width: 150px;
|
|
}
|
|
.context-menu-item {
|
|
padding: 6px 12px;
|
|
border-radius: 8px;
|
|
color: @window_fg_color;
|
|
font-weight: 500;
|
|
}
|
|
.context-menu-item:hover {
|
|
background-color: alpha(@window_fg_color, 0.10);
|
|
}
|
|
.context-menu-item.destructive {
|
|
color: #ff453a;
|
|
}
|
|
.context-menu-item.destructive:hover {
|
|
background-color: alpha(#ff453a, 0.16);
|
|
color: #ff453a;
|
|
}
|
|
|
|
/* ============================================================== FOCUS RING */
|
|
*:focus-visible {
|
|
outline-color: @accent_color;
|
|
}
|