Custom CSS in the Web Portal

The Loyalty Web Portal supports a controlled set of static CSS class names that can be safely overridden. This allows you to restyle the Web Portal to match your brand identity while keeping TRIFFT responsible for all functional updates, feature releases, and UI changes.

Advanced
Reference
Web Developer

Custom CSS is typically used to:

  • Apply brand colors, fonts, and layout rules
  • Adjust spacing, density, or typography
  • Modify how components such as coupons, headers, and footers appear
  • Hide unused modules
  • Achieve full brand alignment even when using TRIFFT’s underlying technology

Only the documented static classes should be used for overrides. All other classes are dynamically generated and may change during builds.


Where to Configure Custom CSS

  1. In TRIFFT Admin, open Settings in the left sidebar.
  2. Select Touchpoints > Select previously-created Web Portal touchpoint you want to edit.
  3. Open the Settings tab at the top.
  4. Use the search bar and type CSS.
  5. Select Custom CSS.
  6. Turn the toggle ON and enter your stylesheet.
  7. Click Save.

Where to find custom CSS setting in TRIFFT Administration:


How to Apply and See Your Changes

Because browsers cache stylesheets, you may not see your changes immediately.
After saving your CSS, perform a hard refresh on the Loyalty Web Portal.

Hard Refresh Shortcuts (Abbreviated)

macOS:
Chrome / Firefox: Command + Shift + R
Safari: Command + Option + R

Windows:
Chrome / Edge / Firefox: Ctrl + Shift + R or Ctrl + F5

If changes still do not appear, clear browser cache or open the portal in a private window.


How to Apply and See Your Changes

Because browsers cache stylesheets, you may not see your changes immediately. After saving your CSS, perform a hard refresh on the Loyalty Web Portal.

Hard Refresh Shortcuts (Abbreviated)

macOS: Chrome / Firefox: Command + Shift + R Safari: Command + Option + R

Windows: Chrome / Edge / Firefox: Ctrl + Shift + R or Ctrl + F5

📘

If changes still do not appear, clear browser cache or open the portal in a private window.


How to Apply Overrides

CSS entered into this editor is injected on top of the Web Portal’s compiled stylesheet.

.trifft-header {
  background-color: #002244;
}

.trifft-coupon-card {
  border-radius: 12px;
  border: 1px solid #cccccc;
}

Changes take effect immediately after a hard refresh.


Working Examples

Example 1 — Header Restyle

.trifft-header {
  background-color: #111111;
  padding: 12px 24px;
}

.trifft-header-logo img {
  height: 40px;
}

Example 2 — Minimalist Coupon Cards

.trifft-coupon-card {
  box-shadow: none;
  border: 1px solid #e3e3e3;
  border-radius: 8px;
}

.trifft-coupon-use-button {
  background-color: #000;
  color: #fff;
}

Example 3 — Hide the Instagram Feed

.trifft-instagram {
  display: none;
}

Static CSS Class Reference

The following static classes are safe to override. Exact contents reproduced from the uploaded specification.


Global Layout & Components

CSS ClassRoute / ContextDescription
trifft-headerLayout (All)Main container for the top header content.
trifft-header-logoLayout (All)The logo image within the header.
trifft-header-buttonsLayout (All)Wrapper for the right-side icons (Points, Bell, Profile).
trifft-header-pointLayout (All)The pill/capsule displaying the user's point balance.
trifft-header-notificationsLayout (All)The bell icon wrapper for notifications.
trifft-header-profileLayout (All)The profile icon (person) link.
trifft-menuLayout (All)Container for the main navigation links (Dashboard, History).
trifft-contentLayout (Auth/Body)The left/main column of the application body.
trifft-sidebarLayout (Body)The right column (usually contains Deals/Sidebar).
trifft-footerLayout (All)The main wrapper for the page footer.
trifft-footer-contentLayout (All)The inner grid container of the footer.
trifft-footer-columnLayout (All)A single column within the footer.
trifft-footer-linkLayout (All)An individual link item within a footer column.
trifft-made-textLayout (All)The "Made with ♥ by TRIFFT" copyright text.
trifft-titleSharedGeneric main page title.
trifft-subtitleSharedGeneric page subtitle or explanatory text.

Authentication

Routes: /, /pass-login, /register, /otp-verify, /register-confirm

CSS ClassRoute / ContextDescription
trifft-auth-imgAuth LayoutThe hero image on the left side of the login/register screen.
trifft-auth-formAuth LayoutThe form container on the right side.
trifft-auth-title/, /pass-loginMain heading for Sign In or Link Card screens.
trifft-login-buttons/, /pass-loginWrapper for login action buttons (Submit, Register, Back).
trifft-register-title/registerMain heading for the Sign-Up screen.
trifft-register-step/registerText indicating the current registration step.
trifft-register-form/registerWrapper for registration form fields.
trifft-register-form-buttons/registerWrapper for Next/Back buttons.
trifft-consent-label/registerLabel text for GDPR/Marketing consents.
trifft-register-confirm-title/register-confirmHeading on the success screen after registration.
trifft-register-confirm-icon/register-confirmSuccess icon displayed after registration.
trifft-otp-verify-title/otp-verifyHeading for the OTP verification screen.
trifft-otp-buttons/otp-verifyButtons wrapper on the OTP screen.
trifft-otp-resend/otp-verifyThe "Resend code" link.

Profile

Route: /profile

CSS ClassRoute / ContextDescription
trifft-profile-header/profileTop section containing the title and the edit icon.
trifft-profile-params/profileSection displaying user details (Name, Email, Custom parameters).
trifft-profile-params-row/profileA single row of user data (Icon + Title + Value).
trifft-profile-links/profileContainer for custom links or legal documents.
trifft-profile-footer/profileBottom section containing legal links and the Logout button.

Coupons

Routes: /coupons, /coupon/:id

CSS ClassRoute / ContextDescription
trifft-coupons-wrapper/couponsGrid container displaying the list of coupons.
trifft-coupon-card/couponsWrapper for a single coupon card.
trifft-coupon-dots/couponsDecorative dots/teeth separator.
trifft-coupon-content/couponsText content area of a coupon card.
trifft-coupon-validity/couponsText displaying validity dates.
trifft-coupon-use-button/couponsMain action button to use/activate the coupon.
trifft-coupon-activated-button/couponsButton style when coupon is already active.
trifft-coupon-detail-card/coupon/:idWrapper for the top section of the coupon detail view.
trifft-coupon-detail-image/coupon/:idImage wrapper in the detail view.
trifft-coupon-detail-content/coupon/:idText content area in the detail view.
trifft-coupon-detail-title/coupon/:idCoupon name/title.
trifft-coupon-detail-description/coupon/:idMarkdown description text.
trifft-coupon-detail-buttons/coupon/:idAction buttons container.
trifft-coupon-activate-modalModalConfirmation modal when activating a coupon.
trifft-coupon-activate-submitModal"Confirm" button inside the modal.
trifft-coupon-activate-cancelModal"Cancel/Later" button inside the modal.

News & Messages

Route: /news

CSS ClassRoute / ContextDescription
trifft-notifications/newsContainer for the list of messages/news.
trifft-notifications-card/newsA single message card in the list.

Loyalty Card

Route: /card

CSS ClassRoute / ContextDescription
trifft-card-points/cardSection displaying the total points above the barcode/QR code.

Dashboard

Route: /

CSS ClassRoute / ContextDescription
trifft-instagram/Wrapper for the Instagram feed widget on the homepage.