/* Shared Velqory presentation for native GLPI and its existing plugins. */
html {
  --vs-paper: oklch(0.98 0.004 80);
  --vs-raised: oklch(0.995 0.003 80);
  --vs-inset: oklch(0.945 0.007 80);
  --vs-line: oklch(0.84 0.01 80);
  --vs-line-strong: oklch(0.66 0.012 80);
  --vs-ink: oklch(0.20 0.01 150);
  --vs-muted: oklch(0.41 0.01 150);
  --vs-accent: oklch(0.62 0.17 45);
  --vs-accent-hover: oklch(0.60 0.16 45);
  --vs-on-accent: oklch(0.10 0.008 150);
  --vs-success: oklch(0.43 0.09 155);
  --vs-warning: oklch(0.44 0.08 75);
  --vs-error: oklch(0.46 0.14 28);
  --vs-info: oklch(0.42 0.08 235);
  color-scheme: light;
}
html[data-glpi-theme-dark="1"] {
  --vs-paper: oklch(0.15 0.008 150);
  --vs-raised: oklch(0.205 0.01 150);
  --vs-inset: oklch(0.25 0.012 150);
  --vs-line: oklch(0.39 0.014 150);
  --vs-line-strong: oklch(0.59 0.012 150);
  --vs-ink: oklch(0.96 0.006 80);
  --vs-muted: oklch(0.77 0.008 80);
  --vs-accent: oklch(0.72 0.15 50);
  --vs-accent-hover: oklch(0.76 0.14 50);
  --vs-success: oklch(0.79 0.11 155);
  --vs-warning: oklch(0.83 0.12 80);
  --vs-error: oklch(0.79 0.12 28);
  --vs-info: oklch(0.80 0.08 230);
  color-scheme: dark;
}
html[data-glpi-theme], body {
  --tblr-font-sans-serif: "Velqory Satoshi", system-ui, sans-serif;
  --tblr-body-bg: var(--vs-paper);
  --tblr-body-color: var(--vs-ink);
  --tblr-bg-surface: var(--vs-raised);
  --tblr-bg-surface-secondary: var(--vs-paper);
  --tblr-bg-surface-tertiary: var(--vs-inset);
  --tblr-bg-surface-dark: var(--vs-inset);
  --tblr-primary: var(--vs-accent);
  --tblr-primary-rgb: 210, 94, 28;
  --tblr-primary-fg: var(--vs-on-accent);
  --tblr-primary-darken: var(--vs-accent-hover);
  --tblr-secondary: var(--vs-muted);
  --tblr-secondary-rgb: 71, 76, 72;
  --tblr-muted: var(--vs-muted);
  --tblr-border-color: var(--vs-line);
  --tblr-border-color-translucent: var(--vs-line);
  --tblr-link-color: var(--vs-ink);
  --tblr-link-hover-color: var(--vs-accent);
  --tblr-link-color-rgb: 24, 28, 25;
  --tblr-navbar-color: var(--vs-ink);
  --tblr-success: var(--vs-success);
  --tblr-danger: var(--vs-error);
  --tblr-warning: var(--vs-warning);
  --tblr-info: var(--vs-info);
  --tblr-card-bg: var(--vs-raised);
  --tblr-card-border-color: var(--vs-line);
  --tblr-box-shadow: none;
  --tblr-box-shadow-card: none;
  --tblr-box-shadow-input: none;
  --glpi-tabs-bg: var(--vs-paper);
  --glpi-tabs-fg: var(--vs-muted);
  --glpi-tabs-active-bg: var(--vs-raised);
  --glpi-tabs-active-fg: var(--vs-ink);
  --glpi-tabs-border-color: var(--vs-line);
  --glpi-tabs-active-border-color: var(--vs-line);
  --glpi-mainmenu-bg: oklch(0.15 0.008 150);
  --glpi-mainmenu-fg: oklch(0.96 0.006 80);
  --glpi-mainmenu-fg-muted: oklch(0.78 0.008 80);
  --glpi-search-bg: var(--vs-inset);
  --glpi-search-fg: var(--vs-ink);
  --glpi-search-border-color: var(--vs-line);
  --glpi-badge-bg: var(--vs-inset);
  --glpi-badge-fg: var(--vs-ink);
  --glpi-form-header-bg: var(--vs-paper);
  --glpi-form-header-fg: var(--vs-ink);
  --glpi-form-header-border-color: var(--vs-line);
  --glpi-itil-secondary-bg: var(--vs-paper);
  --glpi-timeline-fup-bg: var(--vs-paper);
  --glpi-timeline-itil-content-bg: var(--vs-paper);
  --glpi-timeline-itil-content-fg: var(--vs-ink);
  --glpi-timeline-itil-content-border-color: var(--vs-line);
  --glpi-timeline-fup-fg: var(--vs-ink);
  --glpi-timeline-fup-border-color: var(--vs-line);
  --glpi-timeline-task-bg: var(--vs-inset);
  --glpi-timeline-task-fg: var(--vs-ink);
  --glpi-timeline-task-border-color: var(--vs-line);
  --glpi-timeline-solution-bg: color-mix(in oklch, var(--vs-success) 9%, var(--vs-raised));
  --glpi-timeline-solution-fg: var(--vs-ink);
  --glpi-timeline-solution-border-color: var(--vs-line);
  --glpi-timeline-document-bg: var(--vs-inset);
  --glpi-timeline-document-fg: var(--vs-ink);
  --glpi-timeline-document-border-color: var(--vs-line);
  --glpi-hover-bg: var(--vs-inset);
  --glpi-scrollbar-thumb-color: var(--vs-line-strong);
  --glpi-scrollbar-track-color: transparent;
  --vqp-paper: var(--vs-paper);
  --vqp-surface: var(--vs-raised);
  --vqp-surface-2: var(--vs-inset);
  --vqp-line: var(--vs-line);
  --vqp-line-strong: var(--vs-line-strong);
  --vqp-ink: var(--vs-ink);
  --vqp-muted: var(--vs-muted);
  --vqp-quiet: var(--vs-muted);
  --vqp-accent: var(--vs-accent);
  --vqp-accent-dark: var(--vs-accent-hover);
  --vq-paper: var(--vs-paper);
  --vq-surface: var(--vs-raised);
  --vq-surface-2: var(--vs-inset);
  --vq-hairline: var(--vs-line);
  --vq-hairline-strong: var(--vs-line-strong);
  --vq-ink: var(--vs-ink);
  --vq-muted: var(--vs-muted);
  --vq-quiet: var(--vs-muted);
  --vq-persimmon: var(--vs-accent);
  --vq-persimmon-hover: var(--vs-accent-hover);
  --vq-task-ink: var(--vs-ink);
  --vq-task-muted: var(--vs-muted);
  --vq-task-line: var(--vs-line);
  --vq-task-paper: var(--vs-paper);
  --vq-task-signal: var(--vs-accent);
  font-family: var(--tblr-font-sans-serif);
  font-variant-numeric: tabular-nums slashed-zero;
}
body {
  color: var(--vs-ink);
  background: var(--vs-paper);
  caret-color: var(--vs-accent);
}
::selection { color: var(--vs-ink); background: color-mix(in oklch, var(--vs-accent) 24%, var(--vs-paper)); }
:where(html, .table-responsive, .dropdown-menu, .modal-body) { scrollbar-width: thin; scrollbar-color: var(--vs-line-strong) transparent; }
body :is(a, button, input, textarea, select, [tabindex]):focus-visible { outline: 2px solid var(--vs-accent) !important; outline-offset: 3px; }
:where(a) { text-underline-offset: 0.18em; }
:where(.page-wrapper, .page-body, main.legacy, .tab-content, .tab-pane, .modal-body, .field-container) { min-width: 0; }
:where(h1, .page-title) { font-family: "Velqory Clash", system-ui, sans-serif; font-weight: 500; letter-spacing: -0.02em; line-height: 1.2; overflow-wrap: anywhere; }
:where(h2, h3, .card-title) { letter-spacing: -0.012em; }
body :where(.card, .modal-content, .dropdown-menu, .toast) {
  color: var(--vs-ink);
  background-color: var(--vs-raised);
  border-color: var(--vs-line);
  box-shadow: none;
}
body :where(.card-header, .card-footer, .modal-header, .modal-footer) { border-color: var(--vs-line); }
body :where([data-testid="main-header"], .secondary-bar) {
  color: var(--vs-ink);
  background: var(--vs-raised);
  border-bottom: 1px solid var(--vs-line);
  box-shadow: none !important;
}
body :where(.form-control, .form-select, .select2-container--default .select2-selection, .select2-dropdown, .select2-search__field) {
  color: var(--vs-ink);
  background-color: var(--vs-inset);
  border-color: var(--vs-line-strong);
  border-radius: 6px;
  box-shadow: none;
}
html[data-glpi-theme-dark="1"] body :where(.form-control, .form-select, .select2-container--default .select2-selection, .select2-dropdown, .select2-search__field, .input-group-text) {
  color: var(--vs-ink) !important;
  background-color: var(--vs-inset) !important;
  border-color: var(--vs-line-strong) !important;
}
html[data-glpi-theme-dark="1"] body :where(.btn-outline-secondary, .btn-default, .nav-tabs .nav-link, .card-tabs .nav-link) { color: var(--vs-ink) !important; background: var(--vs-paper) !important; border-color: var(--vs-line) !important; }
html[data-glpi-theme-dark="1"] body :where(.nav-tabs .nav-link.active, .card-tabs .nav-link.active) { background: var(--vs-raised) !important; }
html[data-glpi-theme-dark="1"] body.helpdesk.velqory-support-app .topbar .user-menu :where(a, button) { color: var(--vs-ink) !important; }
body :where(.form-control, .form-select) { min-height: 40px; min-width: 0; }
body .ribbon.bg-blue { background-color: var(--vs-accent) !important; color: var(--vs-on-accent) !important; }
body :where(.form-control, textarea)::placeholder { color: var(--vs-muted); opacity: 1; }
body :where(.form-control:focus, .form-select:focus) { border-color: var(--vs-accent); box-shadow: none; }
body :where(.select2-selection__rendered, .select2-results__option) { color: var(--vs-ink); }
body .select2-container--default .select2-results__option--highlighted[aria-selected] { color: var(--vs-ink); background: var(--vs-inset); }
body :where(.form-check-input:checked, .form-check-input:indeterminate) { background-color: var(--vs-accent); border-color: var(--vs-accent); }
body :where(.text-muted, .form-hint) { color: var(--vs-muted) !important; }
body .btn { font-family: "Velqory Satoshi", system-ui, sans-serif; font-weight: 600; border-radius: 6px; box-shadow: none; }
body .btn-primary {
  --tblr-btn-color: var(--vs-on-accent);
  --tblr-btn-bg: var(--vs-accent);
  --tblr-btn-border-color: var(--vs-accent);
  --tblr-btn-hover-bg: var(--vs-accent-hover);
  --tblr-btn-hover-border-color: var(--vs-accent-hover);
  color: var(--vs-on-accent) !important;
  background: var(--vs-accent) !important;
  border-color: var(--vs-accent) !important;
}
body .btn-primary:hover, body .btn-primary:focus-visible { background: var(--vs-accent-hover) !important; border-color: var(--vs-accent-hover) !important; }
body :where(.btn-outline-secondary, .btn-secondary, .btn-default) { color: var(--vs-ink); background: transparent; border-color: var(--vs-line-strong); }
body :where(.btn-outline-secondary, .btn-secondary, .btn-default):hover { color: var(--vs-ink); background: var(--vs-inset); border-color: var(--vs-ink); }
body :where(.btn-link, .page-link) { color: var(--vs-ink); }
body :where(.nav-tabs .nav-link.active, .pagination .active .page-link) { color: var(--vs-ink); background: var(--vs-inset); border-color: var(--vs-line); box-shadow: inset 0 -2px var(--vs-accent); }
body .dropdown-item:hover, body .dropdown-item:focus { color: var(--vs-ink); background: var(--vs-inset); }
body :where(.table, .table th, .table td) { color: var(--vs-ink); border-color: var(--vs-line); }
body .table { --tblr-table-bg: var(--vs-raised); --tblr-table-striped-bg: var(--vs-paper); --tblr-table-hover-bg: var(--vs-inset); --tblr-table-color: var(--vs-ink); }
body .table thead th { background: var(--vs-paper); color: var(--vs-muted); }
body :where(.alert, .toast) { box-shadow: none; border: 1px solid var(--vs-line); }
body .alert { color: var(--vs-ink); background: var(--vs-paper); }
body :where(.alert-info, .alert-warning, .alert-danger, .alert-success) { color: var(--vs-ink); }
body .alert-danger { background: color-mix(in oklch, var(--vs-error) 7%, var(--vs-raised)); border-color: color-mix(in oklch, var(--vs-error) 45%, var(--vs-line)); }
body .alert-warning { background: color-mix(in oklch, var(--vs-warning) 7%, var(--vs-raised)); }
body .alert-info { background: color-mix(in oklch, var(--vs-info) 5%, var(--vs-raised)); }
body .alert-success { background: color-mix(in oklch, var(--vs-success) 7%, var(--vs-raised)); }
body .alert p:last-child { margin-bottom: 0; }
body :where(.tox, .tox .tox-editor-header, .tox .tox-toolbar, .tox .tox-toolbar__primary, .tox .tox-menubar, .tox .tox-statusbar) { background-color: var(--vs-paper); box-shadow: none; }
body .tox .tox-tbtn { color: var(--vs-ink); }
body .tox .tox-tbtn svg { fill: var(--vs-ink); }
body .tox .tox-tbtn--enabled, body .tox .tox-tbtn:hover { background: var(--vs-inset); }
body .fc { --fc-border-color: var(--vs-line); --fc-page-bg-color: var(--vs-paper); --fc-neutral-bg-color: var(--vs-inset); --fc-today-bg-color: color-mix(in oklch, var(--vs-accent) 8%, var(--vs-paper)); }

/* Token bridges: native dialogs and plugins inherit the same light/dark ramp. */
body.helpdesk.velqory-support-app {
  --velqory-support-bone: var(--vs-paper);
  --velqory-support-paper: var(--vs-raised);
  --velqory-support-paper-muted: var(--vs-inset);
  --velqory-support-hairline: var(--vs-line);
  --velqory-support-hairline-strong: var(--vs-line-strong);
  --velqory-support-text: var(--vs-ink);
  --velqory-support-muted: var(--vs-muted);
  --velqory-support-persimmon: var(--vs-accent);
  --velqory-support-persimmon-hover: var(--vs-accent-hover);
}
/* Native Bootstrap rows retain 8px gutters; the custom shell removed their padding. */
body.helpdesk.velqory-support-app .page-body.container-fluid { padding-inline: 8px !important; }
body.welcome-anonymous:has(.velqory-access-flow) {
  --velqory-access-ink: var(--vs-ink);
  --velqory-access-slate: var(--vs-muted);
  --velqory-access-muted: var(--vs-muted);
  --velqory-access-paper: var(--vs-paper);
  --velqory-access-raised: var(--vs-raised);
  --velqory-access-inset: var(--vs-inset);
  --velqory-access-hairline: var(--vs-line);
  --velqory-access-persimmon: var(--vs-accent);
  --velqory-access-persimmon-hover: var(--vs-accent-hover);
}
.velqory-access-language a { display: grid; min-width: 40px; min-height: 36px; padding: 0 10px; place-items: center; border-radius: 6px; color: var(--vs-muted); font-size: 12px; font-weight: 650; text-decoration: none; }
.velqory-access-language a[aria-current="true"] { color: var(--vs-raised); background: var(--vs-ink); }
.velqory-access-flow .form-control { width: 100%; min-height: 46px; }
.velqory-access-flow .velqory-access-primary { min-height: 46px; }
.velqory-access-flow .velqory-access-secondary { display: inline-flex; align-items: center; min-height: 40px; }
body.welcome-anonymous .glpi-logo { filter: brightness(0.2); }
body :where(.trianglesdocs-list-hero__brand img, .trianglesdocs-brand img, .trianglesdocs-heading__wordmark, .td-document-header__sheet img) { filter: brightness(0.2); }
html[data-glpi-theme-dark="1"] body.welcome-anonymous .glpi-logo { filter: none; }
html[data-glpi-theme-dark="1"] body :where(.trianglesdocs-list-hero__brand img, .trianglesdocs-brand img, .trianglesdocs-heading__wordmark, .td-document-header__sheet img) { filter: none; }
.velqory-invitation-panel { --velqory-invite-ink: var(--vs-ink); --velqory-invite-muted: var(--vs-muted); --velqory-invite-paper: var(--vs-paper); --velqory-invite-hairline: var(--vs-line); --velqory-invite-persimmon: var(--vs-accent); --velqory-invite-persimmon-hover: var(--vs-accent-hover); }
.vqd-shell { --vqd-ink: var(--vs-ink); --vqd-ink-soft: var(--vs-muted); --vqd-rule: var(--vs-line); --vqd-surface: var(--vs-paper); --vqd-accent: var(--vs-accent); }
body :where(.velqory-prospects, .trianglesdocs-document-index, .trianglesdocs-shell, .trianglesdocs-catalog, .trianglesdocs-document-body, .td-editor, .vqd-shell) { font-family: "Velqory Satoshi", system-ui, sans-serif; font-variant-numeric: tabular-nums slashed-zero; }
body :where(.vqp-hero h1, .trianglesdocs-list-hero h1, .trianglesdocs-heading h1, .td-editor__title h1, .vqd-title) { font-family: "Velqory Clash", system-ui, sans-serif; }
.td-editor .td-icon-button { color: var(--vs-muted); border-color: var(--vs-line); }
.td-editor .td-state { color: var(--vs-muted); border-color: var(--vs-line); background: var(--vs-inset); }
.td-editor .td-editor__notice { color: var(--vs-ink); border-color: var(--vs-line); background: var(--vs-paper); }
.td-editor .td-editor__notice--warning { background: color-mix(in oklch, var(--vs-warning) 7%, var(--vs-raised)); }

@media (max-width: 767px) {
  body .asset #main-form .row { min-width: 0; }
  body.central .page-body { padding-inline: 12px; }
  body .modal-dialog { margin-inline: 10px; max-width: calc(100vw - 20px); }
  body .modal-content { max-height: calc(100dvh - 24px); }
  body .modal-body { overflow: auto; }
  body :where(.table-responsive, .search-container) { max-width: 100%; overflow-x: auto; }
  body :where(.btn, .form-check-label) { overflow-wrap: anywhere; }
  .td-editor__toolbar { flex-wrap: wrap; }
  .td-editor__actions { flex: 1 1 100%; flex-wrap: wrap; }
}
@media (prefers-reduced-motion: reduce) {
  body :where(.btn, .nav-link, .dropdown-menu, .modal, .toast, .page-link) { animation: none !important; transition: none !important; scroll-behavior: auto; }
}
