@import "tailwindcss"; /* ------------------------------------------------------------------ */ /* Hermes Agent — Design tokens */ /* Matched to hermes-agent.nousresearch.com (dark teal theme) */ /* ------------------------------------------------------------------ */ /* --- Font faces --- */ @font-face { font-family: "Collapse"; src: url("/fonts/Collapse-Regular.woff2") format("woff2"); font-weight: 400; font-display: swap; } @font-face { font-family: "Collapse"; src: url("/fonts/Collapse-Bold.woff2") format("woff2"); font-weight: 700; font-display: swap; } @font-face { font-family: "Courier Prime"; src: url("/fonts/CourierPrime-Regular.woff2") format("woff2"); font-weight: 400; font-display: swap; } @font-face { font-family: "Courier Prime"; src: url("/fonts/CourierPrime-Bold.woff2") format("woff2"); font-weight: 700; font-display: swap; } @font-face { font-family: "RulesCompressed"; src: url("/fonts/RulesCompressed-Regular.woff2") format("woff2"); font-weight: 400; font-display: swap; } @font-face { font-family: "RulesCompressed"; src: url("/fonts/RulesCompressed-Medium.woff2") format("woff2"); font-weight: 600; font-display: swap; } @font-face { font-family: "RulesExpanded"; src: url("/fonts/RulesExpanded-Regular.woff2") format("woff2"); font-weight: 400; font-display: swap; } @font-face { font-family: "RulesExpanded"; src: url("/fonts/RulesExpanded-Bold.woff2") format("woff2"); font-weight: 700; font-display: swap; } @font-face { font-family: "Mondwest"; src: url("/fonts/Mondwest-Regular.woff2") format("woff2"); font-weight: 400; font-display: swap; } @theme { /* ---- Hermes palette (dark teal, from live site) ---- */ --color-background: #041C1C; --color-foreground: #ffe6cb; --color-card: #062424; --color-card-foreground: #ffe6cb; --color-primary: #ffe6cb; --color-primary-foreground: #041C1C; --color-secondary: #0a2e2e; --color-secondary-foreground: #ffe6cb; --color-muted: #083030; --color-muted-foreground: #8aaa9a; --color-accent: #0c3838; --color-accent-foreground: #ffe6cb; --color-destructive: #fb2c36; --color-destructive-foreground: #fff; --color-success: #4ade80; --color-warning: #ffbd38; --color-border: color-mix(in srgb, #ffe6cb 15%, transparent); --color-input: color-mix(in srgb, #ffe6cb 15%, transparent); --color-ring: #ffe6cb; --color-popover: #062424; --color-popover-foreground: #ffe6cb; /* ---- Font stacks ---- */ --font-sans: "Mondwest", Arial, sans-serif; --font-mono: "Courier Prime", "Courier New", monospace; --font-display: "Mondwest", Arial, sans-serif; --font-expanded: "RulesExpanded", Arial, sans-serif; --font-compressed: "RulesCompressed", Arial, sans-serif; } /* ---- Global body ---- */ body { margin: 0; font-family: "Mondwest", Arial, sans-serif; background: var(--color-background); color: var(--color-foreground); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; } /* ---- Selection ---- */ ::selection { background: var(--color-foreground); color: var(--color-background); } /* ---- Scrollbars (thin, subtle) ---- */ * { scrollbar-width: thin; scrollbar-color: transparent transparent; } *:hover { scrollbar-color: color-mix(in srgb, var(--color-foreground) 15%, transparent) transparent; } html, body { scrollbar-color: color-mix(in srgb, var(--color-foreground) 25%, transparent) transparent; } ::-webkit-scrollbar { width: 4px; height: 4px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--color-foreground) 20%, transparent); border-radius: 2px; } ::-webkit-scrollbar-thumb:hover { background: color-mix(in srgb, var(--color-foreground) 35%, transparent); } /* ---- Hide scrollbar utility ---- */ .scrollbar-none { -ms-overflow-style: none; scrollbar-width: none; } .scrollbar-none::-webkit-scrollbar { display: none; } /* ---- Code blocks ---- */ code { font-family: "Courier Prime", "Courier New", monospace; font-size: 0.85em; padding: 0.15em 0.4em; border-radius: 0; background: color-mix(in srgb, var(--color-foreground) 8%, transparent); } /* ---- Dither texture ---- */ .dither { background: repeating-conic-gradient(currentColor 0% 25%, #0000 0% 50%) 0 0 / 2px 2px; } /* ---- Blink cursor (only on group hover, like canonical) ---- */ @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } .blink { display: none; } .group:hover .blink { display: inline-block; animation: blink 1s step-end infinite; } /* ---- Page transitions ---- */ @keyframes fade-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } } @keyframes toast-in { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: translateX(0); } } @keyframes toast-out { from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(16px); } } /* ---- Plus-lighter blend for headings ---- */ .blend-lighter { mix-blend-mode: plus-lighter; } /* ---- Font utilities ---- */ .font-display { font-family: "Mondwest", Arial, sans-serif; } .font-expanded { font-family: "RulesExpanded", Arial, sans-serif; } .font-compressed { font-family: "RulesCompressed", Arial, sans-serif; } .font-courier { font-family: "Courier Prime", "Courier New", monospace; } .font-collapse { font-family: "Collapse", Arial, sans-serif; } .font-mono-ui { font-family: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, monospace; } /* ---- Subtle grain overlay for badges ---- */ .grain { position: relative; } .grain::after { content: ""; position: absolute; inset: 0; opacity: 0.12; pointer-events: none; background: repeating-conic-gradient(currentColor 0% 25%, #0000 0% 50%) 0 0 / 2px 2px; } /* ---- Global noise grain (canonical: color-dodge, #eaeaea, high density) ---- */ .noise-overlay { pointer-events: none; position: fixed; inset: 0; z-index: 101; mix-blend-mode: color-dodge; opacity: 0.10; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' fill='%23eaeaea' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E"); background-size: 512px 512px; } /* ---- Vignette (canonical: top-left amber radial, lighten blend) ---- */ .warm-glow { pointer-events: none; position: fixed; inset: 0; z-index: 99; mix-blend-mode: lighten; opacity: 0.22; background: radial-gradient(ellipse at 0% 0%, rgba(255,189,56,0.35) 0%, rgba(255,189,56,0) 60%); } /* ---- Reduced motion ---- */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }