@font-face {
  font-family: "VictorMono Nerd Font Mono";
  src: url("/VictorMonoNerdFontMono-Bold.ttf") format("truetype");
  font-style: normal;
  font-weight: 700;
  font-display: swap;
}

/* Paradise theme for Apache Guacamole web client.
   Palette matches BookStack/Vikunja/Filebrowser Paradise theme. No external
   fonts requested; Inter with the browser's native sans-serif fallback. Guacamole's
   own stylesheet has no CSS custom properties, so this overrides real
   selectors directly rather than swapping variables. The remote-session
   canvas itself (guac-display / actual RDP/VNC/SSH pixels) is left alone. */

:root {
  --paradise-bg: #151515;
  --paradise-surface: #1d1d1d;
  --paradise-raised: #242424;
  --paradise-border: #424242;
  --paradise-text: #e8e3e3;
  --paradise-muted: #b8b0b0;
  --paradise-blue: #8da3b9;
  --paradise-green: #8c977d;
  --paradise-red: #b66467;
  --paradise-gold: #d9bc8c;
  --paradise-magenta: #a988b0;
  --paradise-teal: #8aa6a2;
}

html, body {
  background: var(--paradise-bg) !important;
  color: var(--paradise-text);
  font-family: "VictorMono Nerd Font Mono", "Victor Mono Nerd Font", "VictorMono Nerd Font", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-weight: 700;
}

button, input, select, textarea {
  font-family: inherit;
}

a { color: var(--paradise-blue); }
a:hover { color: var(--paradise-teal); }

/* Login screen */
.login-ui .login-dialog {
  background: var(--paradise-surface);
  color: var(--paradise-text);
  border: 1px solid var(--paradise-border);
  border-radius: 0.5em;
}
.login-ui .login-dialog th { color: var(--paradise-muted); text-shadow: none; }
.login-ui .login-dialog input[type=text],
.login-ui .login-dialog input[type=password],
.login-ui .login-dialog input[type=email] {
  background: var(--paradise-bg);
  color: var(--paradise-text);
  border: 1px solid var(--paradise-border);
  border-radius: 0.3em;
  padding: 0.3em 0.5em;
}
.login-ui .login-dialog input:focus { outline: 2px solid var(--paradise-blue); outline-offset: 1px; }
.login-ui .login-dialog .buttons button,
.login-ui .login-dialog .buttons input[type=submit] {
  background: var(--paradise-blue);
  color: var(--paradise-bg);
  border: 1px solid var(--paradise-blue);
  border-radius: 0.3em;
  padding: 0.4em 1em;
  font-weight: 600;
}
.login-ui .login-dialog .buttons button:hover { filter: brightness(1.12); }
.login-ui .login-dialog .version { color: var(--paradise-muted); }

/* Home screen: connection groups / recent connections */
.all-connections, .clipboardDiv, .recent-connections, .settings, .history-unavailable {
  background: transparent;
  color: var(--paradise-text);
}
.connection, div.recent-connections div.connection {
  background: var(--paradise-surface);
  border: 1px solid var(--paradise-border);
  color: var(--paradise-text);
}
.connection:hover { background: var(--paradise-raised); }
.connection-group > .caption, .all-connections .connection-group > .caption {
  color: var(--paradise-text);
}
.list-buttons { color: var(--paradise-muted); }
.recent-connections .connection .remove-recent { color: var(--paradise-muted); }
.recent-connections .connection:hover .remove-recent { color: var(--paradise-red); }

/* Top-level app menu (hamburger panel), filesystem menu, connection-select menu */
.menu, #guac-menu, #filesystem-menu, .connection-select-menu .menu-dropdown {
  background: var(--paradise-surface);
  color: var(--paradise-text);
  border-color: var(--paradise-border);
}
.menu-content .header, #guac-menu .header, #filesystem-menu .header,
.connection-select-menu .menu-dropdown .menu-contents {
  background: var(--paradise-raised);
  color: var(--paradise-text);
  border-bottom: 1px solid var(--paradise-border);
}
.menu-content .header h2, #guac-menu .header h2, .menu-section h3 {
  color: var(--paradise-text);
}
.menu-body { background: var(--paradise-surface); color: var(--paradise-text); }
#filesystem-menu .header.breadcrumbs { background: var(--paradise-raised); border-bottom: 1px solid var(--paradise-border); }
#filesystem-menu .header.breadcrumbs .breadcrumb:hover { background-color: var(--paradise-blue); color: var(--paradise-bg); }
#guac-menu #devices .device:hover { background: var(--paradise-raised); }
.connection-select-menu .menu-dropdown .menu-contents .filter input {
  background: var(--paradise-bg);
  color: var(--paradise-text);
  border: 1px solid var(--paradise-border);
}

/* Client (in-session) toolbar */
.client .menu .header h2 { color: var(--paradise-text); }
.client .user-menu .menu-contents li a.disconnect { color: var(--paradise-red); }

/* Notifications / modals (already semi-dark by default; align accents) */
.client-status-modal .notification.error { background: rgba(182, 100, 103, 0.85); }
.client-status-modal .notification .button {
  border-color: var(--paradise-text);
}
.client-status-modal .notification .button:hover { background: rgba(232, 227, 227, 0.2); }

/* File browser (device/drive redirection) */
.file-browser .list-item .caption { color: var(--paradise-text); }
.file-browser .list-item.focused .caption { background: var(--paradise-raised); }

/* Forms (connection/user edit screens) */
.form table.fields th { color: var(--paradise-muted); }
.form-field input[type=text],
.form-field input[type=password],
.form-field input[type=email],
.form-field input[type=number],
.form-field textarea,
.form-field select {
  background: var(--paradise-surface);
  color: var(--paradise-text);
  border: 1px solid var(--paradise-border);
  border-radius: 0.3em;
}
.form-field input:focus, .form-field textarea:focus, .form-field select:focus {
  outline: 2px solid var(--paradise-blue);
  outline-offset: 1px;
}

/* Generic buttons outside the login dialog and notifications */
button:not(.pcr-button):not(.notification .button),
input[type=submit]:not(.notification input),
input[type=button] {
  background: var(--paradise-raised);
  color: var(--paradise-text);
  border: 1px solid var(--paradise-border);
  border-radius: 0.3em;
}
button:not(.pcr-button):hover { background: var(--paradise-border); }

/* Scrollbars */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--paradise-bg); }
::-webkit-scrollbar-thumb { background: var(--paradise-border); border-radius: 5px; }
::-webkit-scrollbar-thumb:hover { background: var(--paradise-muted); }

/* ---------------------------------------------------------------------
   Hardcoded-black text fixes. Guacamole's stylesheet sets color:#000 on
   several shared, widely-reused selectors that read fine on its default
   white background but are unreadable once that background goes dark.
   These override every such occurrence found by inspecting the live CSS
   bundle (not just the home screen "All Connections" list, which was the
   originally reported symptom of `.list-item .name`).
   --------------------------------------------------------------------- */

/* guac-group-list item names: home screen "All Connections"/"Recent
   Connections", nested/expanded connection groups, and any other list
   built from this shared directive. This was the main reported bug. */
.list-item .name,
.list-item .caption {
  color: var(--paradise-text) !important;
}

/* Generic dropdown menu items (user menu, filter menus, connection-select
   menu, etc.) - shared by nearly every dropdown in the app. */
.menu-dropdown .menu-contents li a {
  color: var(--paradise-text) !important;
}

/* Settings > Connections/Users/Groups admin list row links. */
.connection a, .connection a:hover, .connection a:visited,
.user-group a, .user-group a:hover, .user-group a:visited,
.user a, .user a:hover, .user a:visited,
.settings.connections .connection-list .new-connection a,
.settings.connections .connection-list .new-connection a:hover,
.settings.connections .connection-list .new-connection a:visited,
.settings.connections .connection-list .new-connection-group a,
.settings.connections .connection-list .new-connection-group a:hover,
.settings.connections .connection-list .new-connection-group a:visited,
.settings.connections .connection-list .new-sharing-profile a,
.settings.connections .connection-list .new-sharing-profile a:hover,
.settings.connections .connection-list .new-sharing-profile a:visited {
  color: var(--paradise-text) !important;
}

/* Settings page tabs and per-connection edit page tabs (Parameters,
   Sharing, Permissions, etc.). */
.page-tabs .page-list li a[href],
.page-tabs .page-list li a[href]:visited,
.section-tabs li a {
  color: var(--paradise-text) !important;
}

/* Generic (non-client-session) notification banners - self-consistent
   white-on-black by default, darkened here to match the rest of the app. */
.notification {
  background: var(--paradise-surface) !important;
  color: var(--paradise-text) !important;
  border-color: var(--paradise-border) !important;
}

/* Session-recording playback (Settings > History > play a recording). */
.guac-player-text-container {
  background-color: var(--paradise-surface) !important;
  color: var(--paradise-text) !important;
}
.text-batches .text-batch .timestamp,
.settings.connectionHistory a.history-session-recording {
  color: var(--paradise-blue) !important;
}
.text-batches .text .future { color: var(--paradise-muted) !important; }

/* File transfer manager filename link. */
.transfer.savable .filename { color: var(--paradise-blue) !important; }

/* Minor hover border on the device-redirection menu. */
#guac-menu #devices .device:hover { border-color: var(--paradise-border) !important; }

/* ---------------------------------------------------------------------
   Round 2 fixes: the login screen's own full-viewport white layer, and
   Guacamole's pervasive pale-green (#cda/#deb) hover/selected highlight
   color, used by nearly every hoverable list/menu item in the app.
   --------------------------------------------------------------------- */

/* The login screen paints an absolutely-positioned, full-viewport white
   div (z-index 20) OVER body - fixing body's background alone does
   nothing here, this layer has to be fixed directly. */
div.login-ui {
  background: var(--paradise-bg) !important;
}

/* Replace Guacamole's default pale-green (#cda) hover / (#deb) selected
   highlight everywhere it appears with theme-consistent colors: a subtle
   raised surface for plain hover, a translucent blue tint (matching
   Filebrowser's --surfaceSelect) for an actual selected state. */
.client-zoom .client-zoom-in:hover,
.client-zoom .client-zoom-out:hover {
  border-color: var(--paradise-border) !important;
  background: var(--paradise-raised) !important;
}
.recent-connections .connection:hover,
.list-item:not(.selected) .caption:hover,
.menu-dropdown .menu-contents li a:hover,
.page-tabs .page-list li a[href]:hover,
.section-tabs li a:hover,
.settings table.session-list tr.session:hover {
  background: var(--paradise-raised) !important;
  background-color: var(--paradise-raised) !important;
}
.list-item.selected {
  background: rgba(141, 163, 185, 0.25) !important;
}

/* Other self-contained white panels/modals found in the same sweep as
   .login-ui - same bug class, fixed proactively rather than waiting for
   each one to get reported separately. */
.redirect-field-container,
.transfer-manager,
.clipboard, .clipboard-service-target,
.automatic-login-rejected-modal guac-modal,
.logged-out-modal guac-modal {
  background: var(--paradise-surface) !important;
  color: var(--paradise-text) !important;
}


/* Onyx typography guard: keep application component styles from restoring sans fonts. */
:where(html,body,body *):not(i):not(.mdi):not(.material-icons):not([class^="fa"]):not([class*=" fa-"]):not([class*="icon"]) {
  font-family: "VictorMono Nerd Font Mono", "Victor Mono Nerd Font", "VictorMono Nerd Font", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace !important;
  font-weight: 700;
}
