/* Scroll-to-top button — petite-vue toggles `.is-visible` based on scroll. */ .scroll-top-btn { opacity: 0; transform: translateY(0.5rem); pointer-events: none; transition: opacity 200ms ease-out, transform 200ms ease-out; } .scroll-top-btn.is-visible { opacity: 1; transform: translateY(0); pointer-events: auto; } /* Alert banners */ .alert-warning { border-radius: 0.5rem; padding: 1rem; background: var(--alert-warning-bg); border: 1px solid var(--alert-warning-border); color: var(--alert-warning-text); } .alert-warning-muted { color: var(--alert-warning-text-muted); } /* Home page action buttons */ .home-action-primary { display: inline-flex; align-items: center; justify-content: center; font-weight: 500; transition-property: color, background-color, border-color, box-shadow, filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; cursor: pointer; background: linear-gradient(135deg, var(--brand-brown-700), var(--btn-primary-bg)); color: var(--btn-primary-text); border: 1px solid var(--brand-brown-700); box-shadow: var(--shadow-sm); } .home-action-primary:hover { box-shadow: var(--shadow-md); filter: brightness(1.1); } .home-action-secondary { display: inline-flex; align-items: center; justify-content: center; font-weight: 500; transition-property: color, background-color, border-color, box-shadow; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; cursor: pointer; background: var(--card-bg); color: var(--text-primary); border: 1.5px solid var(--card-border); box-shadow: var(--shadow-sm); } .home-action-secondary:hover { border-color: var(--input-border-focus); box-shadow: var(--shadow-md); } /* Tab navigation — underline variant (no base border, profile page) */ .tab-underline-active { border-bottom: 2px solid var(--btn-primary-bg); color: var(--text-primary); } .tab-underline-inactive { color: var(--text-muted); } .tab-underline-inactive:hover { color: var(--text-primary); } /* Tab navigation — row variant (element has border-b-2; my_coffee, manage) */ .tab-row-active { border-color: var(--btn-primary-bg); color: var(--text-primary); } .tab-row-inactive { border-color: transparent; color: var(--text-muted); } .tab-row-inactive:hover { border-color: var(--brand-brown-400); color: var(--text-primary); } /* Tab navigation — pill variant (admin moderation tabs) */ .tab-pill-active { background: var(--card-border); color: var(--text-primary); border-color: var(--brand-brown-400); } .tab-pill-inactive { background: var(--surface-bg); color: var(--text-muted); border-color: var(--card-border); } .tab-pill-inactive:hover { background: var(--card-border); } /* Incomplete-entity nudge toast (manage-page.js) */ .nudge-toast { position: fixed; bottom: 1.5rem; left: 50%; transform: translateX(-50%); z-index: 50; max-width: 28rem; width: 100%; margin-left: 1rem; margin-right: 1rem; padding: 1rem; border-radius: 0.5rem; display: flex; align-items: center; gap: 0.75rem; background: var(--card-bg); border: 1px solid var(--card-border); color: var(--text-primary); box-shadow: var(--shadow-lg); } /* Handle autocomplete row internals (handle-autocomplete.js) */ .handle-result-avatar { width: 1.5rem; height: 1.5rem; border-radius: 9999px; object-fit: cover; flex-shrink: 0; } .handle-result-text { flex: 1 1 0%; min-width: 0; } @font-face { font-family: "Iosevka Patrick"; src: url("/static/fonts/IosevkaPatrickNerdFont-Regular.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; } @font-face { font-family: "Iosevka Patrick"; src: url("/static/fonts/IosevkaPatrickNerdFont-Medium.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: "Iosevka Patrick"; src: url("/static/fonts/IosevkaPatrickNerdFont-SemiBold.woff2") format("woff2"); font-weight: 600; font-style: normal; font-display: swap; }