/* Quest Log — fantasy-RPG journal. Aged bronze is the structural decoration (2px entry frames, corner brackets, ribbon banners); the interactive accent follows the user via the primary aliases. All eight accent ramps are retuned as heraldic banner dyes. Light = aged parchment journal, dark = torchlit hall. */ /* ---------------------------------------------------------------- * * 1. Scheme-independent tokens — (0,2,0) * ---------------------------------------------------------------- */ [data-theme="quest"][data-theme] { /* Type: Grenze for medieval-but-readable headings, Alegreya body. */ --mantine-font-family: "Alegreya", "Iowan Old Style", Georgia, serif; --mantine-font-family-headings: "Grenze", "Alegreya", Georgia, serif; --mantine-font-size-xs: 0.8125rem; --mantine-font-size-sm: 0.9375rem; --mantine-font-size-md: 1.0625rem; --mantine-font-size-lg: 1.1875rem; --mantine-font-size-xl: 1.375rem; --mantine-heading-font-weight: 600; --mantine-h1-font-size: 2.4rem; --mantine-h1-line-height: 1.15; --mantine-h2-font-size: 1.95rem; --mantine-h2-line-height: 1.2; --mantine-h3-font-size: 1.55rem; --mantine-h3-line-height: 1.25; --mantine-h4-font-size: 1.3rem; --mantine-h4-line-height: 1.3; --mantine-h5-font-size: 1.15rem; --mantine-h5-line-height: 1.35; --mantine-h6-font-size: 1.05rem; --mantine-h6-line-height: 1.4; /* Shape: gently squared journal entries. */ --mantine-radius-xs: 0.125rem; --mantine-radius-sm: 0.25rem; --mantine-radius-md: 0.375rem; --mantine-radius-lg: 0.5rem; --mantine-radius-xl: 0.75rem; --mantine-radius-default: 0.375rem; /* Elevation: soft warm sepia, never harsh. */ --mantine-shadow-xs: 0 1px 2px rgba(38, 26, 10, 0.2); --mantine-shadow-sm: 0 1px 2px rgba(38, 26, 10, 0.22), 0 5px 14px rgba(38, 26, 10, 0.16); --mantine-shadow-md: 0 2px 4px rgba(38, 26, 10, 0.24), 0 10px 24px rgba(38, 26, 10, 0.2); --mantine-shadow-lg: 0 3px 7px rgba(38, 26, 10, 0.26), 0 18px 40px rgba(38, 26, 10, 0.24); --mantine-shadow-xl: 0 5px 10px rgba(38, 26, 10, 0.28), 0 26px 56px rgba(38, 26, 10, 0.28); /* Accent ramps retuned as heraldic banner dyes — saturated but cloth-worn; every shade 6 carries ≥4.5:1 parchment contrast text. */ /* blue → azure banner */ --mantine-color-blue-0: #eef1fa; --mantine-color-blue-1: #d8dff2; --mantine-color-blue-2: #b4c2e6; --mantine-color-blue-3: #8aa0d6; --mantine-color-blue-4: #6280c4; --mantine-color-blue-5: #4263ae; --mantine-color-blue-6: #2f4d96; --mantine-color-blue-7: #263e7b; --mantine-color-blue-8: #1d2f60; --mantine-color-blue-9: #152246; /* red → gules crimson */ --mantine-color-red-0: #faeceb; --mantine-color-red-1: #f2d3d1; --mantine-color-red-2: #e6aba7; --mantine-color-red-3: #d87d78; --mantine-color-red-4: #c65450; --mantine-color-red-5: #ad322f; --mantine-color-red-6: #92201f; --mantine-color-red-7: #7a1719; --mantine-color-red-8: #601114; --mantine-color-red-9: #470c0f; /* green → vert */ --mantine-color-green-0: #ebf3ec; --mantine-color-green-1: #d2e5d4; --mantine-color-green-2: #aacfae; --mantine-color-green-3: #7db383; --mantine-color-green-4: #55975d; --mantine-color-green-5: #35793f; --mantine-color-green-6: #24632e; --mantine-color-green-7: #1c5026; --mantine-color-green-8: #153e1e; --mantine-color-green-9: #0e2c16; /* yellow → or (gold leaf) */ --mantine-color-yellow-0: #fbf3dc; --mantine-color-yellow-1: #f4e3b0; --mantine-color-yellow-2: #e9cd7c; --mantine-color-yellow-3: #dbb14b; --mantine-color-yellow-4: #c99527; --mantine-color-yellow-5: #ab7812; --mantine-color-yellow-6: #8c5f0b; --mantine-color-yellow-7: #714c09; --mantine-color-yellow-8: #583b07; --mantine-color-yellow-9: #402b05; /* grape → purpure */ --mantine-color-grape-0: #f4edf7; --mantine-color-grape-1: #e5d5ec; --mantine-color-grape-2: #cfb2dc; --mantine-color-grape-3: #b389c8; --mantine-color-grape-4: #9663b2; --mantine-color-grape-5: #7a4399; --mantine-color-grape-6: #642e82; --mantine-color-grape-7: #52246b; --mantine-color-grape-8: #401b54; --mantine-color-grape-9: #2f133e; /* orange → tenné */ --mantine-color-orange-0: #faeee2; --mantine-color-orange-1: #f3d9bd; --mantine-color-orange-2: #e9bc8d; --mantine-color-orange-3: #dd9a58; --mantine-color-orange-4: #cf7a2c; --mantine-color-orange-5: #b45e14; --mantine-color-orange-6: #96490d; --mantine-color-orange-7: #7a3a0b; --mantine-color-orange-8: #602d08; --mantine-color-orange-9: #472106; /* pink → rose madder */ --mantine-color-pink-0: #f9ecf1; --mantine-color-pink-1: #f0d3de; --mantine-color-pink-2: #e3aac1; --mantine-color-pink-3: #d27da0; --mantine-color-pink-4: #bf5280; --mantine-color-pink-5: #a53064; --mantine-color-pink-6: #8a1f51; --mantine-color-pink-7: #711842; --mantine-color-pink-8: #581233; --mantine-color-pink-9: #400c25; /* lime → spring leaf */ --mantine-color-lime-0: #f2f5e6; --mantine-color-lime-1: #e2e9c6; --mantine-color-lime-2: #cdd89e; --mantine-color-lime-3: #b2c26f; --mantine-color-lime-4: #96a944; --mantine-color-lime-5: #7a8d26; --mantine-color-lime-6: #59690f; --mantine-color-lime-7: #485510; --mantine-color-lime-8: #38420d; --mantine-color-lime-9: #293009; /* Gray ramp as parchment/sepia so gray-derived UI stays in the world. */ --mantine-color-gray-0: #f7efdd; --mantine-color-gray-1: #f0e6cf; --mantine-color-gray-2: #e3d4b4; --mantine-color-gray-3: #d0bd95; --mantine-color-gray-4: #b5a17a; --mantine-color-gray-5: #92805e; --mantine-color-gray-6: #6a5a41; --mantine-color-gray-7: #4a3d2b; --mantine-color-gray-8: #362c1e; --mantine-color-gray-9: #291f14; /* Dark ramp as torch-lit umber. */ --mantine-color-dark-0: #ecdfc6; --mantine-color-dark-1: #b3a488; --mantine-color-dark-2: #7a6a52; --mantine-color-dark-3: #55462f; --mantine-color-dark-4: #3b2f1f; --mantine-color-dark-5: #2b2318; --mantine-color-dark-6: #241d13; --mantine-color-dark-7: #1c160e; --mantine-color-dark-8: #15100a; --mantine-color-dark-9: #0e0a06; --flxn-avatar-radius: 50%; /* party-member portraits */ --flxn-avatar-border: 2px solid var(--quest-frame); --flxn-badge-radius: 8px; } /* ---------------------------------------------------------------- * * 2. Per-scheme tokens — (0,3,0) * ---------------------------------------------------------------- */ [data-theme="quest"][data-theme][data-mantine-color-scheme="light"] { --mantine-color-body: #f0e6cf; --mantine-color-text: #2f2414; --mantine-color-bright: #1d1509; --mantine-color-dimmed: #6a5a41; --mantine-color-placeholder: #83704f; --mantine-color-anchor: var(--mantine-primary-color-7); --mantine-color-error: #9e2b20; --mantine-color-default: #f7efdd; --mantine-color-default-hover: #efe3c8; --mantine-color-default-color: #2f2414; --mantine-color-default-border: #b39a6b; /* Accent variant vars re-derived from the retuned ramps (Mantine's defaults are literal rgba of its stock hues). */ --mantine-color-blue-light: color-mix(in srgb, var(--mantine-color-blue-6) 10%, transparent); --mantine-color-blue-light-hover: color-mix(in srgb, var(--mantine-color-blue-6) 16%, transparent); --mantine-color-blue-light-color: var(--mantine-color-blue-7); --mantine-color-blue-outline: var(--mantine-color-blue-6); --mantine-color-blue-outline-hover: color-mix(in srgb, var(--mantine-color-blue-6) 8%, transparent); --mantine-color-blue-text: var(--mantine-color-blue-7); --mantine-color-blue-contrast: #f6ecd8; --mantine-color-red-light: color-mix(in srgb, var(--mantine-color-red-6) 10%, transparent); --mantine-color-red-light-hover: color-mix(in srgb, var(--mantine-color-red-6) 16%, transparent); --mantine-color-red-light-color: var(--mantine-color-red-7); --mantine-color-red-outline: var(--mantine-color-red-6); --mantine-color-red-outline-hover: color-mix(in srgb, var(--mantine-color-red-6) 8%, transparent); --mantine-color-red-text: var(--mantine-color-red-7); --mantine-color-red-contrast: #f6ecd8; --mantine-color-green-light: color-mix(in srgb, var(--mantine-color-green-6) 10%, transparent); --mantine-color-green-light-hover: color-mix(in srgb, var(--mantine-color-green-6) 16%, transparent); --mantine-color-green-light-color: var(--mantine-color-green-7); --mantine-color-green-outline: var(--mantine-color-green-6); --mantine-color-green-outline-hover: color-mix(in srgb, var(--mantine-color-green-6) 8%, transparent); --mantine-color-green-text: var(--mantine-color-green-7); --mantine-color-green-contrast: #f6ecd8; --mantine-color-yellow-light: color-mix(in srgb, var(--mantine-color-yellow-6) 10%, transparent); --mantine-color-yellow-light-hover: color-mix(in srgb, var(--mantine-color-yellow-6) 16%, transparent); --mantine-color-yellow-light-color: var(--mantine-color-yellow-7); --mantine-color-yellow-outline: var(--mantine-color-yellow-6); --mantine-color-yellow-outline-hover: color-mix(in srgb, var(--mantine-color-yellow-6) 8%, transparent); --mantine-color-yellow-text: var(--mantine-color-yellow-7); --mantine-color-yellow-contrast: #f6ecd8; --mantine-color-grape-light: color-mix(in srgb, var(--mantine-color-grape-6) 10%, transparent); --mantine-color-grape-light-hover: color-mix(in srgb, var(--mantine-color-grape-6) 16%, transparent); --mantine-color-grape-light-color: var(--mantine-color-grape-7); --mantine-color-grape-outline: var(--mantine-color-grape-6); --mantine-color-grape-outline-hover: color-mix(in srgb, var(--mantine-color-grape-6) 8%, transparent); --mantine-color-grape-text: var(--mantine-color-grape-7); --mantine-color-grape-contrast: #f6ecd8; --mantine-color-orange-light: color-mix(in srgb, var(--mantine-color-orange-6) 10%, transparent); --mantine-color-orange-light-hover: color-mix(in srgb, var(--mantine-color-orange-6) 16%, transparent); --mantine-color-orange-light-color: var(--mantine-color-orange-7); --mantine-color-orange-outline: var(--mantine-color-orange-6); --mantine-color-orange-outline-hover: color-mix(in srgb, var(--mantine-color-orange-6) 8%, transparent); --mantine-color-orange-text: var(--mantine-color-orange-7); --mantine-color-orange-contrast: #f6ecd8; --mantine-color-pink-light: color-mix(in srgb, var(--mantine-color-pink-6) 10%, transparent); --mantine-color-pink-light-hover: color-mix(in srgb, var(--mantine-color-pink-6) 16%, transparent); --mantine-color-pink-light-color: var(--mantine-color-pink-7); --mantine-color-pink-outline: var(--mantine-color-pink-6); --mantine-color-pink-outline-hover: color-mix(in srgb, var(--mantine-color-pink-6) 8%, transparent); --mantine-color-pink-text: var(--mantine-color-pink-7); --mantine-color-pink-contrast: #f6ecd8; --mantine-color-lime-light: color-mix(in srgb, var(--mantine-color-lime-6) 10%, transparent); --mantine-color-lime-light-hover: color-mix(in srgb, var(--mantine-color-lime-6) 16%, transparent); --mantine-color-lime-light-color: var(--mantine-color-lime-7); --mantine-color-lime-outline: var(--mantine-color-lime-6); --mantine-color-lime-outline-hover: color-mix(in srgb, var(--mantine-color-lime-6) 8%, transparent); --mantine-color-lime-text: var(--mantine-color-lime-7); --mantine-color-lime-contrast: #f6ecd8; --mantine-color-gray-light: color-mix(in srgb, var(--mantine-color-gray-6) 10%, transparent); --mantine-color-gray-light-hover: color-mix(in srgb, var(--mantine-color-gray-6) 15%, transparent); --mantine-color-gray-light-color: var(--mantine-color-gray-7); /* Theme-local palette. */ --quest-frame: #a3854f; --quest-corner: #8a6a3a; --quest-bronze: #7c5f2c; --quest-surface: #f7efdd; --quest-recessed: #e7d8b6; --quest-shell: #ece0c3; --quest-tick: rgba(90, 66, 30, 0.22); --quest-ribbon-hi: #8d6c38; --quest-ribbon: #7a5c2e; --quest-ribbon-lo: #5f4620; --quest-ribbon-ink: #f7eedb; /* App tokens: guild-board accolades on parchment. */ --flxn-gold: #7d5c12; --flxn-silver: #776e5c; --flxn-bronze: #8a4f22; --flxn-toast-success: #45702c; --flxn-toast-error: #9e2b20; --flxn-podium-1-bg: color-mix(in srgb, #c99527 15%, #f7efdd); --flxn-podium-1-border: color-mix(in srgb, #7d5c12 55%, #d0bd95); --flxn-podium-1-label: #6f5116; --flxn-podium-2-bg: color-mix(in srgb, #92805e 10%, #f7efdd); --flxn-podium-2-border: #b5a17a; --flxn-podium-2-label: #6a5a41; --flxn-podium-3-bg: color-mix(in srgb, #8a4f22 12%, #f7efdd); --flxn-podium-3-border: color-mix(in srgb, #8a4f22 45%, #d0bd95); --flxn-podium-3-label: #74431c; --flxn-showcase-bg: #f7efdd; --flxn-overlay: rgba(35, 24, 10, 0.45); --flxn-dotgrid-color: rgba(138, 106, 58, 0.25); --flxn-pop-shadow: rgba(46, 32, 12, 0.3); } [data-theme="quest"][data-theme][data-mantine-color-scheme="dark"] { --mantine-color-body: #211a12; --mantine-color-text: #ecdfc6; --mantine-color-bright: #f7efdd; --mantine-color-dimmed: #a5937a; --mantine-color-placeholder: #837259; --mantine-color-anchor: var(--mantine-primary-color-2); --mantine-color-error: #d4736a; --mantine-color-default: #2b2216; --mantine-color-default-hover: #342a1b; --mantine-color-default-color: #ecdfc6; --mantine-color-default-border: #5c4a2c; /* Filled stays mid-ramp: shade-8 dye vanishes in the torchlit hall. */ --mantine-color-blue-filled: var(--mantine-color-blue-6); --mantine-color-blue-filled-hover: var(--mantine-color-blue-5); --mantine-color-blue-light: color-mix(in srgb, var(--mantine-color-blue-4) 15%, transparent); --mantine-color-blue-light-hover: color-mix(in srgb, var(--mantine-color-blue-4) 22%, transparent); --mantine-color-blue-light-color: var(--mantine-color-blue-2); --mantine-color-blue-outline: var(--mantine-color-blue-3); --mantine-color-blue-outline-hover: color-mix(in srgb, var(--mantine-color-blue-3) 12%, transparent); --mantine-color-blue-text: var(--mantine-color-blue-3); --mantine-color-blue-contrast: #f6ecd8; --mantine-color-red-filled: var(--mantine-color-red-6); --mantine-color-red-filled-hover: var(--mantine-color-red-5); --mantine-color-red-light: color-mix(in srgb, var(--mantine-color-red-4) 15%, transparent); --mantine-color-red-light-hover: color-mix(in srgb, var(--mantine-color-red-4) 22%, transparent); --mantine-color-red-light-color: var(--mantine-color-red-2); --mantine-color-red-outline: var(--mantine-color-red-3); --mantine-color-red-outline-hover: color-mix(in srgb, var(--mantine-color-red-3) 12%, transparent); --mantine-color-red-text: var(--mantine-color-red-3); --mantine-color-red-contrast: #f6ecd8; --mantine-color-green-filled: var(--mantine-color-green-6); --mantine-color-green-filled-hover: var(--mantine-color-green-5); --mantine-color-green-light: color-mix(in srgb, var(--mantine-color-green-4) 15%, transparent); --mantine-color-green-light-hover: color-mix(in srgb, var(--mantine-color-green-4) 22%, transparent); --mantine-color-green-light-color: var(--mantine-color-green-2); --mantine-color-green-outline: var(--mantine-color-green-3); --mantine-color-green-outline-hover: color-mix(in srgb, var(--mantine-color-green-3) 12%, transparent); --mantine-color-green-text: var(--mantine-color-green-3); --mantine-color-green-contrast: #f6ecd8; --mantine-color-yellow-filled: var(--mantine-color-yellow-6); --mantine-color-yellow-filled-hover: var(--mantine-color-yellow-5); --mantine-color-yellow-light: color-mix(in srgb, var(--mantine-color-yellow-4) 15%, transparent); --mantine-color-yellow-light-hover: color-mix(in srgb, var(--mantine-color-yellow-4) 22%, transparent); --mantine-color-yellow-light-color: var(--mantine-color-yellow-2); --mantine-color-yellow-outline: var(--mantine-color-yellow-3); --mantine-color-yellow-outline-hover: color-mix(in srgb, var(--mantine-color-yellow-3) 12%, transparent); --mantine-color-yellow-text: var(--mantine-color-yellow-3); --mantine-color-yellow-contrast: #f6ecd8; --mantine-color-grape-filled: var(--mantine-color-grape-6); --mantine-color-grape-filled-hover: var(--mantine-color-grape-5); --mantine-color-grape-light: color-mix(in srgb, var(--mantine-color-grape-4) 15%, transparent); --mantine-color-grape-light-hover: color-mix(in srgb, var(--mantine-color-grape-4) 22%, transparent); --mantine-color-grape-light-color: var(--mantine-color-grape-2); --mantine-color-grape-outline: var(--mantine-color-grape-3); --mantine-color-grape-outline-hover: color-mix(in srgb, var(--mantine-color-grape-3) 12%, transparent); --mantine-color-grape-text: var(--mantine-color-grape-3); --mantine-color-grape-contrast: #f6ecd8; --mantine-color-orange-filled: var(--mantine-color-orange-6); --mantine-color-orange-filled-hover: var(--mantine-color-orange-5); --mantine-color-orange-light: color-mix(in srgb, var(--mantine-color-orange-4) 15%, transparent); --mantine-color-orange-light-hover: color-mix(in srgb, var(--mantine-color-orange-4) 22%, transparent); --mantine-color-orange-light-color: var(--mantine-color-orange-2); --mantine-color-orange-outline: var(--mantine-color-orange-3); --mantine-color-orange-outline-hover: color-mix(in srgb, var(--mantine-color-orange-3) 12%, transparent); --mantine-color-orange-text: var(--mantine-color-orange-3); --mantine-color-orange-contrast: #f6ecd8; --mantine-color-pink-filled: var(--mantine-color-pink-6); --mantine-color-pink-filled-hover: var(--mantine-color-pink-5); --mantine-color-pink-light: color-mix(in srgb, var(--mantine-color-pink-4) 15%, transparent); --mantine-color-pink-light-hover: color-mix(in srgb, var(--mantine-color-pink-4) 22%, transparent); --mantine-color-pink-light-color: var(--mantine-color-pink-2); --mantine-color-pink-outline: var(--mantine-color-pink-3); --mantine-color-pink-outline-hover: color-mix(in srgb, var(--mantine-color-pink-3) 12%, transparent); --mantine-color-pink-text: var(--mantine-color-pink-3); --mantine-color-pink-contrast: #f6ecd8; --mantine-color-lime-filled: var(--mantine-color-lime-6); --mantine-color-lime-filled-hover: var(--mantine-color-lime-5); --mantine-color-lime-light: color-mix(in srgb, var(--mantine-color-lime-4) 15%, transparent); --mantine-color-lime-light-hover: color-mix(in srgb, var(--mantine-color-lime-4) 22%, transparent); --mantine-color-lime-light-color: var(--mantine-color-lime-2); --mantine-color-lime-outline: var(--mantine-color-lime-3); --mantine-color-lime-outline-hover: color-mix(in srgb, var(--mantine-color-lime-3) 12%, transparent); --mantine-color-lime-text: var(--mantine-color-lime-3); --mantine-color-lime-contrast: #f6ecd8; --mantine-color-gray-light: color-mix(in srgb, var(--mantine-color-gray-5) 12%, transparent); --mantine-color-gray-light-hover: color-mix(in srgb, var(--mantine-color-gray-5) 18%, transparent); --mantine-color-gray-light-color: var(--mantine-color-gray-2); /* Theme-local palette: ember-warm parchment panels in a torchlit hall. */ --quest-frame: #7a6136; --quest-corner: #c49a5e; --quest-bronze: #cfa768; --quest-surface: #2b2216; --quest-recessed: #171208; --quest-shell: #1a140c; --quest-tick: rgba(0, 0, 0, 0.4); --quest-ribbon-hi: #d8b077; --quest-ribbon: #c49a5e; --quest-ribbon-lo: #a97f45; --quest-ribbon-ink: #241a0c; --flxn-gold: #d9b36b; --flxn-silver: #a89f90; --flxn-bronze: #c08050; --flxn-toast-success: #a8bd85; --flxn-toast-error: #dc9a90; --flxn-podium-1-bg: color-mix(in srgb, #c99527 14%, #2b2216); --flxn-podium-1-border: color-mix(in srgb, #d9b36b 45%, #3b2f1f); --flxn-podium-1-label: #d9b36b; --flxn-podium-2-bg: color-mix(in srgb, #a89f90 9%, #2b2216); --flxn-podium-2-border: color-mix(in srgb, #a89f90 32%, #3b2f1f); --flxn-podium-2-label: #b5aea1; --flxn-podium-3-bg: color-mix(in srgb, #c08050 12%, #2b2216); --flxn-podium-3-border: color-mix(in srgb, #c08050 42%, #3b2f1f); --flxn-podium-3-label: #cd8f61; --flxn-showcase-bg: #2b2216; --flxn-overlay: rgba(8, 5, 2, 0.6); --flxn-dotgrid-color: rgba(196, 154, 94, 0.18); --flxn-pop-shadow: rgba(0, 0, 0, 0.55); } /* ---------------------------------------------------------------- * * 3. Full-page decoration: worn parchment edges / torchlight * ---------------------------------------------------------------- */ [data-theme="quest"][data-mantine-color-scheme="light"] .flxn-theme-overlay { position: fixed; inset: 0; z-index: 9998; pointer-events: none; background: radial-gradient(140% 100% at 50% 32%, transparent 58%, rgba(122, 91, 42, 0.1) 88%, rgba(96, 69, 28, 0.2) 100%), radial-gradient(55% 38% at 6% 2%, rgba(122, 91, 42, 0.07), transparent 70%), radial-gradient(55% 38% at 95% 98%, rgba(122, 91, 42, 0.07), transparent 70%); } [data-theme="quest"][data-mantine-color-scheme="dark"] .flxn-theme-overlay { position: fixed; inset: 0; z-index: 9998; pointer-events: none; background: radial-gradient(90% 55% at 50% 0%, rgba(214, 158, 84, 0.07), transparent 70%), radial-gradient(130% 95% at 50% 45%, transparent 55%, rgba(5, 3, 1, 0.5) 100%); } /* ---------------------------------------------------------------- * * 4. Quest entries: 2px bronze frames + ornate corner brackets * ---------------------------------------------------------------- */ [data-theme="quest"] .mantine-Paper-root[data-with-border], [data-theme="quest"] .mantine-Card-root, [data-theme="quest"] .mantine-Modal-content, [data-theme="quest"] .flxn-tile, [data-theme="quest"] .flxn-match-card { position: relative; background-color: var(--quest-surface); border: 2px solid var(--quest-frame); } /* One pseudo paints all four L-shaped brackets (2 strips per corner). */ [data-theme="quest"] .mantine-Paper-root[data-with-border]::before, [data-theme="quest"] .mantine-Card-root::before, [data-theme="quest"] .mantine-Modal-content::before, [data-theme="quest"] .flxn-tile::before, [data-theme="quest"] .flxn-match-card::before { content: ""; position: absolute; inset: 3px; pointer-events: none; background-image: linear-gradient(var(--quest-corner), var(--quest-corner)), linear-gradient(var(--quest-corner), var(--quest-corner)), linear-gradient(var(--quest-corner), var(--quest-corner)), linear-gradient(var(--quest-corner), var(--quest-corner)), linear-gradient(var(--quest-corner), var(--quest-corner)), linear-gradient(var(--quest-corner), var(--quest-corner)), linear-gradient(var(--quest-corner), var(--quest-corner)), linear-gradient(var(--quest-corner), var(--quest-corner)); background-repeat: no-repeat; background-size: 12px 2px, 2px 12px, 12px 2px, 2px 12px, 12px 2px, 2px 12px, 12px 2px, 2px 12px; background-position: left top, left top, right top, right top, left bottom, left bottom, right bottom, right bottom; } /* ---------------------------------------------------------------- * * 5. Component restyles * ---------------------------------------------------------------- */ /* Headings: Grenze; section headers (h3/h4) ride ribbon banners. */ [data-theme="quest"] .mantine-Title-root { letter-spacing: 0.01em; } [data-theme="quest"] h3.mantine-Title-root, [data-theme="quest"] h4.mantine-Title-root { width: fit-content; max-width: 100%; padding: 0.12em 1.1em 0.18em; background-image: linear-gradient( 180deg, var(--quest-ribbon-hi) 0%, var(--quest-ribbon) 55%, var(--quest-ribbon-lo) 100% ); color: var(--quest-ribbon-ink); clip-path: polygon( 0 0, 100% 0, calc(100% - 0.55em) 50%, 100% 100%, 0 100%, 0.55em 50% ); } /* Buttons: banner-dye solids in the user's accent; bronze-ruled defaults. */ [data-theme="quest"] .mantine-Button-root { font-weight: 600; letter-spacing: 0.02em; } [data-theme="quest"] .mantine-Button-root[data-variant="filled"], [data-theme="quest"] .mantine-ActionIcon-root[data-variant="filled"] { border: 1px solid color-mix(in srgb, var(--mantine-primary-color-filled) 55%, black); box-shadow: inset 0 1px 0 rgba(255, 250, 235, 0.2), 0 1px 3px var(--flxn-pop-shadow); } [data-theme="quest"] .mantine-Button-root[data-variant="default"], [data-theme="quest"] .mantine-ActionIcon-root[data-variant="default"] { border-color: var(--quest-frame); background-color: var(--quest-surface); } /* Inputs: recessed ledger lines; focus follows the accent. */ [data-theme="quest"] .mantine-Input-input { background-color: var(--quest-recessed); border-color: var(--quest-frame); } [data-theme="quest"] .mantine-PinInput-input { background-color: var(--quest-recessed); } /* Mantine Tabs: illuminated active label under a bronze rule. */ [data-theme="quest"] .mantine-Tabs-tab { letter-spacing: 0.02em; } [data-theme="quest"] .mantine-Tabs-tab[data-active] { border-color: var(--quest-corner); color: var(--mantine-primary-color-light-color); } /* Nav: active entries follow the accent — wash plus a marginal rule. */ [data-theme="quest"] .mantine-NavLink-root[data-active] { background-color: var(--mantine-primary-color-light); color: var(--mantine-primary-color-light-color); box-shadow: inset 3px 0 0 var(--mantine-primary-color-filled); } [data-theme="quest"] .mantine-NavLink-root[data-active]:hover { background-color: var(--mantine-primary-color-light-hover); } /* Shell: the journal's leather binding. */ [data-theme="quest"] .mantine-AppShell-header { background-color: var(--quest-shell); border-bottom: 1px solid var(--quest-frame); } [data-theme="quest"] .mantine-AppShell-navbar { background-color: var(--quest-shell); border-color: var(--quest-frame); } /* Segmented control: carved channel with a parchment slider. */ [data-theme="quest"] .mantine-SegmentedControl-root { background-color: var(--quest-recessed); border: 1px solid var(--quest-frame); } [data-theme="quest"] .mantine-SegmentedControl-indicator { background-color: var(--quest-surface); border: 1px solid var(--quest-frame); box-shadow: 0 1px 3px var(--flxn-pop-shadow); } /* Progress: XP bars — framed groove, segment ticks, glossed accent fill. */ [data-theme="quest"] .mantine-Progress-root { position: relative; background-color: var(--quest-recessed); border: 1px solid var(--quest-frame); box-shadow: inset 0 1px 2px rgba(20, 12, 4, 0.3); } [data-theme="quest"] .mantine-Progress-root::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background-image: repeating-linear-gradient( 90deg, transparent 0, transparent 11px, var(--quest-tick) 11px, var(--quest-tick) 12px ); } [data-theme="quest"] .mantine-Progress-section { background-image: linear-gradient( 180deg, rgba(255, 246, 224, 0.32) 0%, rgba(255, 246, 224, 0.06) 45%, rgba(24, 14, 4, 0.14) 100% ); } /* Badges: embossed wax/metal seals; filled keeps a legible on-color. */ [data-theme="quest"] .mantine-Badge-root { font-weight: 700; letter-spacing: 0.05em; border: 1px solid rgba(24, 14, 4, 0.25); box-shadow: inset 0 1px 0 rgba(255, 250, 235, 0.28), inset 0 -1px 0 rgba(24, 14, 4, 0.18), 0 1px 2px var(--flxn-pop-shadow); } [data-theme="quest"] .mantine-Badge-root[data-variant="filled"], [data-theme="quest"] .mantine-Badge-root:not([data-variant]), [data-theme="quest"] .mantine-ThemeIcon-root[data-variant="filled"], [data-theme="quest"] .mantine-ThemeIcon-root:not([data-variant]) { color: var(--mantine-primary-color-contrast); } [data-theme="quest"] .mantine-Checkbox-root { --checkbox-icon-color: var(--mantine-primary-color-contrast); } /* Dividers: bronze rule with a compass-star waypoint. */ [data-theme="quest"] .mantine-Divider-root { --divider-color: color-mix(in srgb, var(--quest-frame) 60%, transparent); } [data-theme="quest"] .mantine-Divider-root[data-orientation="horizontal"]:not([data-with-label]) { position: relative; overflow: visible; } [data-theme="quest"] .mantine-Divider-root[data-orientation="horizontal"]:not([data-with-label])::before { content: "\2726"; /* ✦ */ position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); padding: 0 0.5em; background-color: var(--mantine-color-body); color: var(--quest-bronze); font-size: 0.7rem; line-height: 1; } [data-theme="quest"] .mantine-Divider-label { color: var(--quest-bronze); letter-spacing: 0.08em; text-transform: uppercase; font-size: var(--mantine-font-size-xs); } /* Overlays: sealed notes. Popovers get a single bronze rule (the corner brackets are reserved for full entries; Modal-content has them above). */ [data-theme="quest"] .mantine-Popover-dropdown { background-color: var(--quest-surface); border: 1px solid var(--quest-frame); } [data-theme="quest"] .mantine-Modal-header { background-color: var(--quest-surface); } [data-theme="quest"] .mantine-Tooltip-tooltip { background-color: #1c160e; color: #ecdfc6; border: 1px solid var(--quest-frame); } /* Notifications: dispatched scrolls. */ [data-theme="quest"] .mantine-Notification-root { background-color: var(--quest-surface); border: 1px solid var(--quest-frame); box-shadow: var(--mantine-shadow-md); } /* Alerts keep a real border for forced-colors resilience. */ [data-theme="quest"] .mantine-Alert-root { border: 1px solid var(--quest-frame); } [data-theme="quest"][data-mantine-color-scheme="light"] .mantine-Skeleton-root::after { background-color: #e3d3ae; } /* ---------------------------------------------------------------- * * 6. App component hooks * ---------------------------------------------------------------- */ /* Tab strip: flat chapter tabs resting; docked = binding strip with a bronze rule. Underline indicator, so accent text on the tab is fine. */ [data-theme="quest"] .flxn-tabs[data-stuck] { background-color: var(--quest-shell); border-bottom-color: var(--quest-frame); } [data-theme="quest"] .flxn-tab { color: var(--mantine-color-dimmed); letter-spacing: 0.02em; } [data-theme="quest"] .flxn-tab[data-active] { color: var(--mantine-primary-color-light-color); font-weight: 700; } [data-theme="quest"] .flxn-tabs-indicator { border-bottom: 3px solid var(--mantine-primary-color-filled); padding-inline: 0.5rem; } /* Nav grid tiles: quest entries (frame + brackets set in section 4); glyphs stay FLAT — bronze-inked tint only. */ [data-theme="quest"] .flxn-tile-icon { color: var(--quest-bronze); } /* "See all": wax-seal-tabbed chip — parchment chip, accent seal dot, accent ink on a neutral backing. */ [data-theme="quest"] .flxn-see-all { background-color: var(--quest-surface); border: 1px solid var(--quest-frame); color: var(--mantine-primary-color-light-color); font-weight: 600; } [data-theme="quest"] .flxn-see-all::before { content: ""; display: inline-block; width: 0.6em; height: 0.6em; margin-right: 0.45em; border-radius: 50%; vertical-align: baseline; background-image: radial-gradient( circle at 35% 30%, color-mix(in srgb, var(--mantine-primary-color-filled) 55%, white) 0%, var(--mantine-primary-color-filled) 45%, color-mix(in srgb, var(--mantine-primary-color-filled) 55%, black) 100% ); box-shadow: 0 1px 1px var(--flxn-pop-shadow); } @media (hover: hover) { [data-theme="quest"] .flxn-see-all:hover { background-color: var(--mantine-primary-color-light); text-decoration: none; } } /* Match card + reaction tray: the entry and its reward line share one frame — same 2px bronze border, tray on deeper parchment. */ [data-theme="quest"] .flxn-reaction-row { background-color: var(--quest-recessed); border: 2px solid var(--quest-frame); } /* Badge tiles: seal-stamped keepsakes. */ [data-theme="quest"] .flxn-badge-tile { box-shadow: var(--mantine-shadow-xs); } /* Avatars: party-member portrait medallions (ring via --flxn-avatar-*). */ [data-theme="quest"] .flxn-avatar-frame { box-shadow: 0 1px 2px var(--flxn-pop-shadow); }