/* Vaultnord-preg på hvelvet. * --------------------------------------------------------------------------- * Verifisert mot Vaultwarden web-klient 2026.7.0. * * Vi endrer ingen av klientens egne filer - alt her legges oppå. Det finnes * derfor ingen fletting ved oppgradering; det som kan ryke er at klienten har * byttet navn på noe vi henger på. Alle slike avhengigheter står i lista under, * og bygget sjekker at de fortsatt finnes (se vault-image/Dockerfile). Feiler * bygget etter en oppgradering, er det ett av disse punktene som har endret seg: * * img.new-logo-themed logo før appen starter * bit-svg[aria-label*=logo] logo på innloggingssidene * bit-nav-logo logo i sidemenyen etter innlogging * --color-brand-050…950 fargetrappa alt annet peker inn i * --color-illustration-* fargene i tegningene * bit-landing-footer produktnavn og versjon nederst * .tw-min-h-screen høyden vi må krympe for vår egen bunntekst * * Rekkefølgen i fila følger lista. Endrer du farger, hold deg til blokken * "farger" - resten er kobling mot klienten, ikke smak. * --------------------------------------------------------------------------- */ /* --- logo ------------------------------------------------------------ */ /* To steder: den statiske i index.html før appen starter, og den Angular tegner etterpå som inline SVG i . Begge må tas. */ .theme_light img.new-logo-themed { content: url(/_vaultnord/logo.png) !important; } .theme_dark img.new-logo-themed { content: url(/_vaultnord/logo-white.png) !important; } img.new-logo-themed { width: 190px !important; height: auto !important; } /* Klienten merker logoene sine med aria-label. Det er mer stabilt å henge på enn komponentnavn, og treffer både innloggingssidene og skallet innenfor. */ bit-svg[aria-label*="logo" i] { display: none !important; } a:has(> bit-svg[aria-label*="logo" i]), bit-landing-header a:has(bit-svg) { display: block !important; min-width: 150px; height: 40px; background: url(/_vaultnord/logo-white.png) left center / contain no-repeat; } .theme_light a:has(> bit-svg[aria-label*="logo" i]), .theme_light bit-landing-header a:has(bit-svg) { background-image: url(/_vaultnord/logo.png); } /* Logoen i sidemenyen når man er logget inn. Den ligger i og har ingen aria-label å henge på, så komponentnavnet må brukes. Menyen er mørk i begge temaer, derfor alltid den lyse logoen. */ bit-nav-logo bit-svg, bit-nav-logo svg { display: none !important; } bit-nav-logo a { background: url(/_vaultnord/logo-white.png) center / 170px auto no-repeat; } /* --- farger ---------------------------------------------------------- */ /* Klienten bygger alt på en fargetrapp (--color-brand-050 … 950) som de semantiske variablene peker inn i: knapper bruker --color-bg-brand-strong, som igjen er var(--color-brand-800). Bytter vi trappa, følger resten med - knapper, lenker, fokusringer - uten at vi må jakte enkeltklasser. */ .theme_light, .theme_dark, :root { --color-brand-050: #f0faf9; --color-brand-100: #d7f2f0; --color-brand-200: #b0e6e2; --color-brand-300: #7ed6d1; --color-brand-400: #47c2bc; --color-brand-500: #2aa9a4; --color-brand-600: #1f918d; --color-brand-700: #17807d; --color-brand-800: #12666a; --color-brand-900: #0e4e52; --color-brand-950: #082f33; /* Den gamle primary-trappa lever fortsatt enkelte steder. */ --color-primary-100: 227 241 240; --color-primary-300: 42 169 164; --color-primary-600: 23 128 125; --color-primary-700: 18 102 106; } .theme_dark { /* På mørk bunn er trappa speilvendt i klienten: bg-brand-strong peker på brand-200, ikke 800. Da må de lyse trinnene være de mettede. */ --color-brand-050: #082f33; --color-brand-100: #0e4e52; --color-brand-200: #3dd2cc; --color-brand-300: #7ed6d1; --color-brand-400: #3dd2cc; --color-brand-500: #2aa9a4; --color-brand-600: #1f918d; --color-brand-700: #17807d; --color-brand-800: #3dd2cc; --color-brand-900: #0e4e52; --color-brand-950: #082f33; --color-primary-100: 20 60 62; --color-primary-300: 42 169 164; --color-primary-600: 61 210 204; --color-primary-700: 143 188 187; } /* --- illustrasjoner -------------------------------------------------- */ /* Safen og bakgrunnsfigurene er inline SVG-er som henter fargene sine fra variabler. Å legge et hue-filter på dem gjetter feil figur og gir rare resultater - variablene treffer presist. */ .theme_light { --color-illustration-bg-primary: 176 230 226; --color-illustration-bg-secondary: 126 214 209; --color-illustration-bg-tertiary: 240 250 249; --color-illustration-outline: 18 102 106; --color-illustration-logo: 23 128 125; --color-illustration-tertiary: 235 203 139; } .theme_dark { --color-illustration-bg-primary: 26 110 108; --color-illustration-bg-secondary: 61 210 204; --color-illustration-bg-tertiary: 243 246 249; --color-illustration-outline: 8 47 51; --color-illustration-logo: 255 255 255; --color-illustration-tertiary: 235 203 139; } /* --- klientens egen bunntekst ---------------------------------------- */ /* Rekkefølgen i : miljøvelger, produktnavn, versjon, br, ansvarsfraskrivelse. Vi skjuler produktnavnet og setter vårt eget foran versjonstallet - tallet blir stående som det er, så det følger hvelvet ved oppgradering i stedet for å ruste fast i en CSS-fil. Ansvarsfraskrivelsen (#vw-disclaimer) røres ikke: den skal stå, både av hensyn til AGPL og til Bitwardens varemerke. */ bit-landing-footer footer > div:nth-of-type(2) { display: none !important; } bit-landing-footer footer > div:nth-of-type(3)::before { content: "Vaultnord \2014 bygger på Vaultwarden "; } /* --- bunntekst med kildekodelenke ------------------------------------ */ /* Bunnteksten skal alltid være synlig - det er der kildekodelenken bor - men klientens layout er min-h-screen, så deres egen bunntekst havner nøyaktig der en fast stripe ligger. Padding hjelper ikke, for stripen følger vinduet. Løsningen er å krympe "en skjermhøyde" med akkurat stripens høyde. */ body.layout_frontend .tw-min-h-screen { min-height: calc(100vh - 46px) !important; } body.layout_frontend .tw-h-screen { height: calc(100vh - 46px) !important; } /* Og når innholdet er høyere enn vinduet: uten denne ligger stripen oppå det siste avsnittet når man har rullet helt ned. Begge deler trengs - den ene for korte sider, den andre for lange. */ body.layout_frontend { padding-bottom: 46px !important; } /* Inne i det innloggede skallet er det ingen plass å ta - der har klienten sin egen rullebeholder med fast høyde. Kildekodelenken står uansett på innloggingssiden, som er der alle begynner. */ body:not(.layout_frontend) #vaultnord-footer { display: none !important; } #vaultnord-footer { position: fixed; bottom: 0; left: 0; right: 0; height: 46px; display: flex; align-items: center; justify-content: center; padding: 0 12px; font: 12px/1.4 ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; color: #55617a; background: #f3f6fa; border-top: 1px solid #dbe2ec; text-align: center; z-index: 2147483000; } #vaultnord-footer a { color: #17807d; } .theme_dark #vaultnord-footer, body.theme_dark #vaultnord-footer { color: #9aa5b8; background: #202733; border-top-color: #434c5e; } .theme_dark #vaultnord-footer a { color: #8fbcbb; }