.site-header,
.nav-search-desktop,
.passage-search-form {
overflow-anchor: none !important;
}
.site-header {
min-height: var(--header-h);
--nav-control: 44px;
padding: 0 var(--space-md);
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-md);
flex-wrap: nowrap;
flex-shrink: 0;
position: sticky;
top: 0;
background-color: color-mix(in srgb, var(--color-surface-elevated) 88%, transparent);
transition: background-color 0.3s ease, box-shadow 0.3s ease;
-webkit-backdrop-filter: blur(12px) saturate(1.8);
backdrop-filter: blur(12px) saturate(1.8);
border-bottom: 1px solid var(--color-border);
border-radius: 0 0 var(--radius-lg) var(--radius-lg);
z-index: var(--z-sticky, 999);
box-shadow: var(--shadow-xs);
}
.site-header.scrolled {
background-color: color-mix(in srgb, var(--color-surface-elevated) 96%, transparent);
box-shadow: var(--shadow-sm);
}
@supports not (background-color: color-mix(in srgb, white, transparent)) {
.site-header { background-color: var(--color-surface-elevated); }
}
.site-logo {
height: 44px;
flex-shrink: 0;
display: flex;
align-items: center;
gap: var(--space-sm);
text-decoration: none;
color: var(--color-text);
-webkit-tap-highlight-color: transparent;
touch-action: manipulation;
}
.site-logo:visited,
.site-logo:active {
color: var(--color-text);
}
.site-logo .logo-full {
height: 100%;
width: auto;
object-fit: contain;
}
.logo-dark, .logo-mobile-icon, .logo-mobile-text { display: none; }
.dark-mode .logo-light { display: none; }
.dark-mode .logo-dark { display: block; }
.site-nav {
display: flex;
align-items: center;
gap: var(--space-md);
margin-left: auto;
}
.site-nav-links {
display: flex;
list-style: none;
gap: var(--space-xs);
}
.site-nav-links > li > a {
position: relative;
text-decoration: none;
color: var(--color-text-muted);
font-weight: 600;
padding: var(--space-sm) 12px;
border-radius: var(--radius-sm);
transition: color var(--transition-fast), background-color var(--transition-fast);
white-space: nowrap;
font-size: 0.84rem;
}
@media (width >= 968px) {
.site-nav-links { align-items: center; }
.site-nav-links > li > a { display: inline-flex; align-items: center; }
}
.nav-link-icon { display: none; }
.site-nav-links > li > a:hover,
.site-nav-links > li > a:focus-visible {
background-color: var(--color-surface-elevated-hover);
color: var(--color-text);
}
.site-nav-links > li > a.active,
.site-nav-links > li.has-dropdown.active-parent > a {
color: var(--color-text);
font-weight: 700;
}
@media (width >= 968px) {
.site-nav-links > li > a.active::before,
.site-nav-links > li.has-dropdown.active-parent > a::before {
content: "";
position: absolute;
left: 12px;
right: 12px;
bottom: 3px;
height: 2px;
border-radius: 1px;
background: var(--color-primary);
}
}
@media (width <= 967px) {
.site-nav-links > li > a.active,
.site-nav-links > li.has-dropdown.active-parent > a {
background-color: var(--color-primary-active-bg);
color: var(--color-primary);
border-radius: var(--radius-sm);
}
}
.site-nav-links > li.has-dropdown.active-parent > a.dropdown-toggle::after {
opacity: 0.7;
}
.site-nav-links > li > a.nav-link--ai,
.site-nav-links > li > a.nav-link--fav {
gap: 7px;
}
.site-nav-links > li > a.nav-link--ai {
color: var(--color-primary);
font-weight: 700;
background: color-mix(in srgb, var(--color-primary) 8%, transparent);
}
.site-nav-links > li > a.nav-link--ai:hover,
.site-nav-links > li > a.nav-link--ai:focus-visible {
background: var(--color-primary-active-bg);
color: var(--color-primary);
}
.site-nav-links > li > a.nav-link--ai .nav-link-icon,
.site-nav-links > li > a.nav-link--fav .nav-link-icon {
display: inline-flex;
align-items: center;
justify-content: center;
width: auto;
opacity: 1;
font-size: 0.95em;
}
.site-nav-links > li > a.nav-link--ai .trv-ai-sparkle { width: 1em; height: 1em; }
.nav-link--fav .nav-fav-count {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 18px;
height: 18px;
margin-left: 1px;
padding: 0 5px;
border-radius: var(--radius-full);
background: var(--color-accent);
color: var(--color-accent-contrast);
font-size: 0.68rem;
font-weight: 800;
line-height: 1;
font-variant-numeric: tabular-nums;
}
.site-nav-links .has-dropdown { position: relative; }
.site-nav-links .has-dropdown::after {
content: '';
position: absolute;
left: 0;
right: 0;
top: 100%;
height: 6px;
pointer-events: auto;
}
.dropdown-menu {
position: absolute;
top: calc(100% + 6px);
left: 0;
margin: 0;
visibility: hidden;
opacity: 0;
list-style: none;
pointer-events: none;
background: var(--color-surface-menu);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
padding: var(--space-sm);
min-width: 240px;
z-index: calc(var(--z-dropdown) + 1);
box-shadow: var(--shadow-lg), var(--ring-raised);
transform: translateY(-4px);
transition: opacity 0.15s ease-out, transform 0.15s ease-out, visibility 0s linear 0.15s;
}
.site-nav-links > li.has-dropdown:focus-within > .dropdown-menu {
visibility: visible;
opacity: 1;
transform: translateY(0);
transition-delay: 0s;
pointer-events: auto;
}
@media (hover: hover) {
.site-nav-links > li.has-dropdown:hover > .dropdown-menu {
visibility: visible;
opacity: 1;
transform: translateY(0);
transition-delay: 0s;
pointer-events: auto;
}
}
.dropdown-toggle { cursor: default; }
.dropdown-toggle::after {
content: '\f0d7';
font-family: "Font Awesome 6 Free";
font-weight: 900;
font-size: 0.5em;
margin-left: 5px;
display: inline-block;
opacity: 0.4;
vertical-align: 1px;
transition: transform var(--transition-fast), opacity var(--transition-fast);
}
.site-nav-links > li.has-dropdown:focus-within > .dropdown-toggle::after {
transform: rotate(180deg);
opacity: 0.7;
}
@media (hover: hover) {
.site-nav-links > li.has-dropdown:hover > .dropdown-toggle::after {
transform: rotate(180deg);
opacity: 0.7;
}
}
.dropdown-menu a {
display: flex;
align-items: center;
gap: 11px;
width: 100%;
padding: var(--space-sm) 10px;
white-space: nowrap;
border-radius: var(--radius-sm);
color: var(--color-text);
font-weight: 600;
font-size: 0.84rem;
text-decoration: none;
transition: color var(--transition-fast), background-color var(--transition-fast);
}
.dropdown-item-icon {
width: 18px;
text-align: center;
font-size: 0.85em;
color: currentcolor;
opacity: 0.6;
flex-shrink: 0;
}
.dropdown-menu a:hover,
.dropdown-menu a:focus-visible {
background-color: var(--color-surface-menu-hover);
color: var(--color-text);
}
.dropdown-menu a:hover .dropdown-item-icon,
.dropdown-menu a:focus-visible .dropdown-item-icon {
opacity: 0.95;
}
.dropdown-menu a.active {
background-color: var(--color-primary-active-bg);
color: var(--color-primary);
font-weight: 600;
}
.dropdown-menu a.active .dropdown-item-icon {
opacity: 1;
color: var(--color-primary);
}
.dropdown-group-header {
list-style: none;
padding: var(--space-sm) 10px var(--space-xs);
font-family: var(--font-display);
font-size: 0.6rem;
text-transform: uppercase;
letter-spacing: var(--tracking-overline);
color: var(--color-text-muted);
font-weight: 800;
pointer-events: none;
user-select: none;
opacity: 0.65;
}
.dropdown-group-header:not(:first-child) {
margin-top: var(--space-xs);
padding-top: calc(var(--space-sm) + 1px);
border-top: 1px solid var(--lectern-seam);
}
.dropdown-menu > .dropdown-group-header:first-child {
padding-top: 2px;
}
.language-selector {
position: relative;
}
.language-selector-trigger {
display: flex;
align-items: center;
gap: 7px;
padding: var(--space-sm) 12px;
font-family: inherit;
font-size: 0.8rem;
font-weight: 600;
color: var(--color-text-muted);
cursor: pointer;
border-radius: var(--radius-full);
border: none;
background: transparent;
transition: all var(--transition-fast);
position: relative;
}
.language-selector-trigger:hover,
.language-selector-trigger:focus-visible {
background: var(--color-surface-elevated-hover);
color: var(--color-text);
}
.language-selector-trigger .lang-text {
font-weight: 600;
white-space: nowrap;
max-width: 150px;
overflow: hidden;
text-overflow: ellipsis;
}
.language-selector-trigger::after {
content: '\f0d7';
font-family: "Font Awesome 6 Free";
font-weight: 900;
font-size: 0.5em;
display: inline-block;
opacity: 0.4;
vertical-align: 1px;
transition: transform var(--transition-fast);
}
.language-selector.is-open .language-selector-trigger::after {
transform: rotate(180deg);
}
.language-select-dropdown {
position: absolute;
top: calc(100% + 6px);
right: 0;
visibility: hidden;
opacity: 0;
min-width: 260px;
max-width: 300px;
pointer-events: none;
overflow: hidden;
background: var(--color-surface-menu);
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
padding: var(--space-xs) 0;
z-index: calc(var(--z-dropdown) + 1);
box-shadow: var(--shadow-lg);
transform-origin: top right;
transform: translateY(4px);
transition:
transform 0.2s ease-out,
opacity 0.2s ease-out,
visibility 0s linear 0.2s;
}
.language-selector.is-open .language-select-dropdown {
visibility: visible;
opacity: 1;
transform: translateY(0);
transition-delay: 0s;
pointer-events: auto;
}
.language-select-dropdown-list {
list-style: none;
max-height: 400px;
overflow-y: auto;
padding: 0;
margin: 0;
scrollbar-width: thin;
scrollbar-color: var(--color-border) transparent;
}
.language-select-dropdown-list::-webkit-scrollbar { width: 6px; }
.language-select-dropdown-list::-webkit-scrollbar-track { background: transparent; }
.language-select-dropdown-list::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: var(--radius-full); }
.language-select-dropdown-list::-webkit-scrollbar-thumb:hover { background: var(--color-primary); }
.language-select-dropdown-list a {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-md);
width: 100%;
padding: var(--space-sm) var(--space-md);
border-radius: 0;
color: var(--color-text);
font-weight: 500;
font-size: 0.875rem;
text-decoration: none;
transition: color var(--transition-fast), background-color var(--transition-fast);
}
.language-select-dropdown-list .lang-name {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.language-select-dropdown-list .lang-code {
flex-shrink: 0;
font-size: 0.74rem;
font-weight: 600;
letter-spacing: 0.02em;
color: var(--color-text-muted);
opacity: 0.75;
}
.language-select-dropdown-list a:hover,
.language-select-dropdown-list a:focus-visible {
background-color: var(--color-surface-menu-hover);
color: var(--color-text);
}
.language-select-dropdown-list a.selected {
background: transparent;
color: var(--color-primary);
font-weight: 600;
}
.language-select-dropdown-list a.selected .lang-code {
color: var(--color-primary);
opacity: 0.9;
}
.language-select-dropdown-list .lang-group-label {
padding: var(--space-sm) var(--space-md) var(--space-xs);
font-size: 0.6875rem;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--color-text-muted);
opacity: 0.7;
}
.language-select-dropdown-list .lang-group-label:first-child {
padding-top: var(--space-xs);
}
.header-actions {
display: flex;
align-items: center;
gap: var(--space-sm);
min-width: 0;
}
.nav-sep {
width: 1px;
height: 22px;
background: var(--color-border);
flex-shrink: 0;
}
.header-actions:has(.auth-mount:empty) .nav-sep { display: none; }
@media (width <= 967px) {
.nav-sep { display: none; }
}
.tool-button {
display: flex;
align-items: center;
justify-content: center;
width: var(--nav-control, 44px);
height: var(--nav-control, 44px);
flex-shrink: 0;
color: var(--color-text-muted);
font-size: 1.2rem;
border-radius: var(--radius-full);
border: none;
background-color: transparent;
cursor: pointer;
transition: all var(--transition-fast);
position: relative;
touch-action: manipulation;
}
.tool-button::before {
content: '';
position: absolute;
inset: 0;
border-radius: var(--radius-full);
opacity: 0;
transition: opacity var(--transition-fast);
pointer-events: none;
background: linear-gradient(135deg, color-mix(in srgb, var(--color-primary) 15%, transparent), color-mix(in srgb, var(--color-primary) 8%, transparent));
}
@media (hover: hover) {
.tool-button:hover:not([disabled]) {
color: var(--color-text);
}
.tool-button:hover:not([disabled])::before {
opacity: 1;
}
}
.tool-button:focus-visible {
color: var(--color-text);
}
.tool-button:focus-visible::before {
opacity: 1;
}
.mobile-nav-toggle {
display: none;
background: none;
border: none;
color: var(--color-text);
font-size: 1.5rem;
cursor: pointer;
flex-shrink: 0;
z-index: calc(var(--z-sticky, 999) + 2);
transition: transform var(--transition-fast);
width: 48px;
height: 48px;
padding: 0;
align-items: center;
justify-content: center;
touch-action: manipulation;
}
.mobile-nav-toggle:active { transform: scale(0.95); }
.nav-search-desktop, .passage-search-input-wrapper { position: relative; }
.nav-search-desktop .passage-search-form { position: relative; }
.nav-search-desktop {
width: 280px;
flex: 0 1 auto;
min-width: 160px;
}
.nav-search-input,
.search-modal-dialog .passage-search-input {
width: 100%;
border-radius: var(--radius-full);
border: 2px solid var(--color-border);
background-color: var(--color-surface-solid);
color: var(--color-text);
transition: all var(--transition-fast);
font-family: inherit;
box-shadow: var(--shadow-xs);
}
.nav-search-input {
height: 40px;
padding: 0 15px 0 40px;
font-size: 0.9rem;
}
.search-modal-dialog .passage-search-input {
height: 52px;
padding: 0 var(--space-md);
font-size: 1rem;
box-shadow: var(--shadow-sm);
}
.nav-search-input::placeholder, .search-modal-dialog .passage-search-input::placeholder {
color: var(--color-text-muted);
opacity: 0.7;
}
.nav-search-input:hover, .search-modal-dialog .passage-search-input:hover {
border-color: color-mix(in srgb, var(--color-primary) 40%, var(--color-border));
box-shadow: var(--shadow-sm);
}
.nav-search-input:focus, .nav-search-input:focus-visible,
.search-modal-dialog .passage-search-input:focus, .search-modal-dialog .passage-search-input:focus-visible {
outline: none;
border-color: var(--color-primary);
box-shadow: var(--focus-ring), var(--shadow-md);
}
.nav-search-icon {
position: absolute;
left: 14px;
top: 50%;
transform: translateY(-50%);
color: var(--color-text-muted);
pointer-events: none;
z-index: 1;
}
.nav-search-desktop .passage-search-error {
position: absolute;
top: calc(100% + 4px);
left: 0;
right: 0;
}
.mobile-search-toggle { display: none; }
.search-modal {
align-items: flex-start;
padding-top: 15vh;
}
.trv-modal-dialog.search-modal-dialog {
max-width: 500px;
background: var(--gradient-card);
padding: var(--space-sm) var(--space-md);
border: 1px solid var(--color-border);
transform: translateY(-20px);
}
.search-modal.is-visible .search-modal-dialog { transform: translateY(0); }
.search-modal-dialog h2 {
font-family: var(--font-display);
text-align: center;
color: var(--color-text-muted);
margin-bottom: var(--space-sm);
font-size: 1.1rem;
}
.search-modal-dialog .passage-search-form {
display: flex;
gap: var(--space-sm);
align-items: center;
}
.search-modal-dialog .passage-search-input-wrapper { flex-grow: 1; }
.search-modal-dialog .passage-search-submit {
height: 52px;
width: 52px;
flex-shrink: 0;
border-radius: var(--radius-full);
border: none;
background: linear-gradient(135deg, var(--color-primary), color-mix(in srgb, var(--color-primary) 85%, black));
color: var(--color-primary-contrast);
font-size: 1.2rem;
cursor: pointer;
transition: background-color var(--transition-base), transform var(--transition-fast), box-shadow var(--transition-fast);
box-shadow: var(--shadow-md);
}
.search-modal-dialog .passage-search-submit:hover {
background: linear-gradient(135deg, var(--color-primary-hover), color-mix(in srgb, var(--color-primary-hover) 85%, black));
box-shadow: var(--shadow-lg);
transform: scale(1.05);
}
.search-modal-dialog .passage-search-submit:active { transform: scale(0.95); }
.mobile-recent-searches:not(:empty) {
margin: var(--space-sm) calc(-1 * var(--space-md)) calc(-1 * var(--space-sm));
border-top: 1px solid var(--color-border);
}
.mobile-recent-searches:empty { display: none; }
.search-modal-dialog #autocomplete-container-mobile {
position: static;
margin: var(--space-sm) calc(-1 * var(--space-md)) calc(-1 * var(--space-sm));
width: auto;
min-width: 0;
left: auto;
right: auto;
top: auto;
border: none;
border-top: 1px solid var(--color-border);
border-radius: 0;
box-shadow: none;
background: transparent;
-webkit-backdrop-filter: none;
backdrop-filter: none;
max-height: 50vh;
z-index: auto;
}
.search-modal-dialog #autocomplete-container-mobile.is-visible ~ .mobile-recent-searches { display: none; }
.search-autocomplete {
position: absolute;
top: calc(100% + 6px);
left: 0;
right: 0;
background: var(--gradient-card);
border: 2px solid var(--color-border);
border-radius: var(--radius-lg);
overflow-y: auto;
max-height: 400px;
z-index: 100;
display: none;
padding: 0;
box-shadow: var(--shadow-xl), var(--ring-raised);
-webkit-backdrop-filter: var(--glass-blur);
backdrop-filter: var(--glass-blur);
}
.search-autocomplete::-webkit-scrollbar { width: 6px; }
.search-autocomplete::-webkit-scrollbar-track { background: 0 0; }
.search-autocomplete::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: var(--radius-full); }
.search-autocomplete::-webkit-scrollbar-thumb:hover { background: var(--color-text-muted); }
.passage-search-error {
color: var(--color-danger);
font-size: 0.9rem;
text-align: center;
display: none;
width: 100%;
margin-top: var(--space-sm);
}
.search-autocomplete.is-visible {
display: block;
animation: slideDown 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.autocomplete-item {
display: block;
padding: var(--space-md);
border-bottom: 1px solid color-mix(in srgb, var(--color-border) 50%, transparent);
cursor: pointer;
transition: all var(--transition-fast);
position: relative;
text-decoration: none;
}
.autocomplete-item:last-child { border-bottom: none; }
.autocomplete-item.is-highlighted,
.autocomplete-item:hover {
background: var(--color-surface-hover);
}
.trv-inline-ghost {
position: absolute;
z-index: 1;
display: none;
overflow: hidden;
white-space: pre;
pointer-events: none;
color: var(--color-text-muted);
}
.autocomplete-type {
display: inline-block;
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--color-primary);
background: color-mix(in srgb, var(--color-primary) 15%, transparent);
padding: 4px var(--space-sm);
border-radius: var(--radius-sm);
margin-inline-end: var(--space-sm);
}
.autocomplete-hero {
margin: var(--space-sm);
background: var(--gradient-surface-tint);
border: 1px solid color-mix(in srgb, var(--color-primary) 30%, transparent);
border-radius: var(--radius-md);
overflow: hidden;
}
.autocomplete-item.autocomplete-hero__main {
margin: var(--space-xs);
padding: 12px;
border-bottom: none;
border-radius: var(--radius-sm);
}
.autocomplete-item.autocomplete-hero__main:hover,
.autocomplete-item.autocomplete-hero__main.is-highlighted {
background: color-mix(in srgb, var(--color-primary) 10%, transparent);
}
.autocomplete-hero__main .autocomplete-label {
font-size: 17px;
}
.autocomplete-hero__chips {
display: flex;
flex-wrap: wrap;
gap: 6px;
padding: 0 var(--space-md) var(--space-md);
}
.autocomplete-item.autocomplete-hero__chip {
display: inline-flex;
align-items: baseline;
gap: 6px;
padding: 4px 10px;
border: 1px solid color-mix(in srgb, var(--color-primary) 35%, transparent);
border-radius: var(--radius-md);
background: var(--color-surface-solid);
color: var(--color-primary);
font-size: 12px;
font-weight: 600;
line-height: 1.35;
}
.autocomplete-hero__chip-range {
font-weight: 500;
line-height: 1.35;
opacity: 0.65;
white-space: nowrap;
}
.autocomplete-item.autocomplete-hero__chip:hover,
.autocomplete-item.autocomplete-hero__chip.is-highlighted {
background: color-mix(in srgb, var(--color-primary) 12%, transparent);
border-color: var(--color-primary);
}
.autocomplete-hero__lemma {
font-family: var(--font-serif);
font-size: 24px;
font-weight: 700;
color: var(--color-text);
margin-inline-end: var(--space-sm);
}
.autocomplete-hero__translit {
display: block;
font-size: 13px;
color: var(--color-text-muted);
margin-top: 2px;
}
.autocomplete-hero__translit em {
font-style: italic;
font-weight: 600;
color: var(--color-text);
}
.autocomplete-hero__gloss {
display: block;
font-size: 14px;
color: var(--color-text);
line-height: 1.5;
margin-top: var(--space-sm);
}
.autocomplete-hero__facts {
display: block;
font-size: 12.5px;
color: var(--color-text-muted);
line-height: 1.6;
margin-top: var(--space-sm);
}
.autocomplete-hero__facts b {
font-weight: 600;
color: var(--color-text);
}
.autocomplete-hero__go {
display: block;
font-size: 12px;
font-weight: 600;
color: var(--color-primary);
margin-top: var(--space-sm);
}
.autocomplete-item--sat {
padding: 10px var(--space-md);
}
.autocomplete-item--sat .autocomplete-label {
font-size: 14px;
margin-top: 2px;
}
.autocomplete-item--sat .autocomplete-value {
font-size: 12.5px;
}
.autocomplete-item--sat .autocomplete-type {
font-size: 9px;
padding: 3px 6px;
}
.autocomplete-actions {
border-top: 1px solid var(--color-border);
background: color-mix(in srgb, var(--color-surface-hover) 40%, transparent);
}
.autocomplete-item:has(+ .autocomplete-actions),
.autocomplete-deeper-pending:has(+ .autocomplete-actions) {
border-bottom: none;
}
.autocomplete-item--action {
padding: 10px var(--space-md);
}
.autocomplete-item--action .autocomplete-label {
display: inline;
font-size: 13.5px;
margin-top: 0;
}
.autocomplete-item--action .autocomplete-value {
display: inline;
margin-inline-start: 6px;
font-size: 12.5px;
}
.autocomplete-ai-label {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 15px;
font-weight: 700;
color: var(--color-primary);
}
.autocomplete-ai-label::before {
content: '';
width: 14px;
height: 14px;
flex-shrink: 0;
background-color: currentcolor;
-webkit-mask: var(--trv-ai-sparkle-svg) center / contain no-repeat;
mask: var(--trv-ai-sparkle-svg) center / contain no-repeat;
}
.autocomplete-item--action .autocomplete-ai-label {
font-size: 13.5px;
}
.autocomplete-hero__main--ai .autocomplete-value {
margin-top: var(--space-xs);
}
.autocomplete-deeper-pending {
display: flex;
align-items: center;
gap: var(--space-sm);
padding: var(--space-sm) var(--space-md);
font-size: 12px;
font-style: italic;
color: var(--color-text-muted);
border-top: 1px solid color-mix(in srgb, var(--color-border) 50%, transparent);
}
.autocomplete-value--query {
font-style: italic;
}
.autocomplete-type[data-type="keyword"] {
color: hsl(35deg 80% 40%);
background: hsl(35deg 85% 55% / 15%);
}
.autocomplete-type[data-type="book"],
.autocomplete-type[data-type="book-study"],
.autocomplete-type[data-type="read-book"] {
color: hsl(265deg 55% 55%);
background: hsl(265deg 60% 55% / 15%);
}
.autocomplete-type[data-type="topic"] {
color: hsl(175deg 55% 35%);
background: hsl(175deg 60% 45% / 15%);
}
.autocomplete-type[data-type="person"] {
color: hsl(340deg 60% 48%);
background: hsl(340deg 65% 55% / 15%);
}
.autocomplete-type[data-type="place"] {
color: hsl(140deg 40% 38%);
background: hsl(140deg 45% 45% / 15%);
}
.autocomplete-type[data-type="cross-reference"] {
color: hsl(222deg 58% 52%);
background: hsl(222deg 62% 55% / 15%);
}
.autocomplete-type[data-type="article"] {
color: hsl(2deg 58% 50%);
background: hsl(2deg 62% 55% / 14%);
}
.autocomplete-type[data-type="meaning"] {
color: hsl(300deg 45% 42%);
background: hsl(300deg 50% 50% / 13%);
}
.dark-mode .autocomplete-type[data-type="keyword"] {
color: hsl(35deg 90% 65%);
background: hsl(35deg 85% 60% / 16%);
}
.dark-mode .autocomplete-type[data-type="book"],
.dark-mode .autocomplete-type[data-type="book-study"],
.dark-mode .autocomplete-type[data-type="read-book"] {
color: hsl(265deg 80% 78%);
background: hsl(265deg 60% 65% / 16%);
}
.dark-mode .autocomplete-type[data-type="topic"] {
color: hsl(175deg 55% 58%);
background: hsl(175deg 60% 50% / 15%);
}
.dark-mode .autocomplete-type[data-type="person"] {
color: hsl(340deg 78% 72%);
background: hsl(340deg 65% 60% / 15%);
}
.dark-mode .autocomplete-type[data-type="place"] {
color: hsl(140deg 45% 60%);
background: hsl(140deg 45% 50% / 15%);
}
.dark-mode .autocomplete-type[data-type="cross-reference"] {
color: hsl(222deg 80% 78%);
background: hsl(222deg 65% 62% / 16%);
}
.dark-mode .autocomplete-type[data-type="article"] {
color: hsl(2deg 80% 74%);
background: hsl(2deg 65% 60% / 15%);
}
.dark-mode .autocomplete-type[data-type="meaning"] {
color: hsl(300deg 65% 76%);
background: hsl(300deg 55% 60% / 15%);
}
.autocomplete-label {
display: block;
font-weight: 600;
color: var(--color-text);
font-size: 15px;
margin-top: var(--space-xs);
}
.autocomplete-value {
display: block;
font-size: 13px;
color: var(--color-text-muted);
margin-top: var(--space-2xs);
line-height: 1.5;
}
.nav-autocomplete {
top: calc(100% + 5px);
width: 100%;
min-width: 260px;
right: 0;
left: auto;
text-align: start;
z-index: 101;
}
.search-modal-dialog .nav-autocomplete { width: 100%; left: 0; right: 0; }
.recent-searches-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 14px 8px;
}
.recent-searches-title {
font-size: 12px;
font-weight: 500;
color: var(--color-text-muted);
}
.recent-searches-clear {
background: none;
border: none;
font-size: 12px;
color: var(--color-text-muted);
cursor: pointer;
padding: 2px 8px;
border-radius: var(--radius-sm);
transition: color 0.15s, background 0.15s;
}
.recent-searches-clear:hover {
color: var(--color-danger);
background: color-mix(in srgb, var(--color-danger) 10%, transparent);
}
.recent-search-item {
cursor: pointer;
padding-right: calc(var(--space-md) + 28px);
}
.recent-search-remove {
position: absolute;
top: 50%;
right: var(--space-sm);
transform: translateY(-50%);
display: inline-flex;
align-items: center;
justify-content: center;
width: 24px;
height: 24px;
padding: 0;
border: none;
border-radius: var(--radius-full);
background: transparent;
color: var(--color-text-muted);
opacity: 0.7;
cursor: pointer;
transition: opacity 0.15s, color 0.15s, background 0.15s;
font-size: 11px;
line-height: 1;
}
.recent-search-remove:hover,
.recent-search-remove:focus-visible {
opacity: 1;
color: var(--color-danger);
background: color-mix(in srgb, var(--color-danger) 12%, transparent);
outline: none;
}
.nav-overlay {
position: fixed;
inset: 0;
background: hsl(0deg 0% 0% / 40%);
z-index: calc(var(--z-sticky, 999) - 1);
opacity: 0;
visibility: hidden;
transition: opacity 0s, visibility 0s;
pointer-events: none;
}
body.nav-open .nav-overlay {
opacity: 1;
visibility: visible;
pointer-events: auto;
transition: opacity var(--transition-base), visibility var(--transition-base);
}
body.nav-open .site-header,
body.nav-closing .site-header {
-webkit-backdrop-filter: none;
backdrop-filter: none;
border-radius: 0;
box-shadow: none;
}
body.nav-open .site-header::after,
body.nav-closing .site-header::after {
content: '';
position: absolute;
inset: 0;
bottom: -1px;
background-color: var(--color-surface-elevated);
border-bottom: 1px solid var(--color-border);
z-index: 0;
}
body.nav-open .site-logo,
body.nav-open .header-actions,
body.nav-closing .site-logo,
body.nav-closing .header-actions {
position: relative;
z-index: 1;
}
@media (width <= 1200px) and (width >= 968px) {
.site-nav-links {
gap: 4px;
}
.site-nav-links > li > a {
padding: 8px 9px;
font-size: 0.84rem;
}
.site-header {
padding: 0 12px;
gap: 12px;
}
.header-actions {
gap: 6px;
}
.site-nav-links > li:has(> a.nav-link--home) {
display: none;
}
.site-nav-links > li > a.nav-link--fav > span:not(.nav-fav-count) {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip-path: inset(50%);
white-space: nowrap;
border: none;
}
.site-nav-links > li > a.nav-link--fav {
padding-inline: 11px;
}
.language-selector-trigger .lang-text {
max-width: 108px;
}
.language-selector {
min-width: 0;
flex-shrink: 1;
}
}
@media (width <= 967px) {
.site-header {
--nav-control: 40px;
gap: 6px;
padding: 0 12px;
flex-wrap: nowrap;
}
.site-logo {
flex-shrink: 0;
min-width: 0;
background: var(--color-surface-solid);
border: 1px solid var(--color-border);
border-radius: var(--radius-full);
padding: var(--space-xs) var(--space-md);
box-shadow:
0 2px 8px color-mix(in srgb, var(--color-text) 6%, transparent),
inset 0 1px 0 color-mix(in srgb, var(--color-surface-solid) 15%, transparent);
}
.site-logo .logo-full { display: none; }
.logo-mobile-icon, .logo-mobile-text { display: block; }
.logo-mobile-icon {
height: 28px;
width: auto;
flex-shrink: 0;
}
.logo-mobile-text {
font-family: var(--font-display);
font-weight: 700;
font-size: 1.25rem;
letter-spacing: 0.5px;
white-space: nowrap;
}
.header-actions {
gap: 4px;
flex-shrink: 0;
background: var(--color-surface-solid);
border: 1px solid var(--color-border);
border-radius: var(--radius-full);
padding: 3px;
box-shadow:
0 2px 8px color-mix(in srgb, var(--color-text) 6%, transparent),
inset 0 1px 0 color-mix(in srgb, var(--color-surface-solid) 15%, transparent);
}
.tool-button {
font-size: 1.1rem;
}
.mobile-nav-toggle {
display: flex;
width: var(--nav-control);
height: var(--nav-control);
}
.language-selector {
flex-shrink: 1;
min-width: 0;
max-width: 150px;
}
.language-selector-trigger {
padding: var(--space-xs);
min-width: 0;
max-width: 100%;
}
.language-selector-trigger .lang-text {
max-width: 108px;
white-space: nowrap;
}
.language-select-dropdown {
position: fixed !important;
left: 50% !important;
right: auto !important;
top: var(--header-height) !important;
transform: translateX(-50%) !important;
transition:
opacity 0.2s ease-out,
visibility 0s linear 0.2s;
}
.language-selector.is-open .language-select-dropdown {
transition-delay: 0s;
}
.nav-search-desktop { display: none; }
.mobile-search-toggle { display: block; }
.site-nav {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
width: auto;
z-index: -1;
align-items: flex-start;
background-color: var(--color-surface-menu);
border: none;
border-radius: 0;
box-shadow: var(--shadow-lg);
overflow: hidden;
overscroll-behavior: contain;
padding: var(--header-height) var(--space-sm) calc(var(--space-lg) + env(safe-area-inset-bottom, 0px));
opacity: 0;
visibility: hidden;
transform: translateY(-10px);
transition:
opacity 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
visibility 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
pointer-events: none;
}
body.pwa-mode .site-nav {
padding-bottom: calc(70px + env(safe-area-inset-bottom, 0px));
}
body.nav-open .site-nav,
body.nav-closing .site-nav {
overflow-y: auto;
}
.site-nav {
scrollbar-width: none;
}
.site-nav::-webkit-scrollbar {
display: none;
}
body.nav-open .site-nav {
opacity: 1;
visibility: visible;
transform: translateY(0);
pointer-events: auto;
}
.site-nav-links {
flex-direction: column;
width: 100%;
padding: var(--space-xs);
gap: 2px;
background: transparent;
border: none;
box-shadow: none;
}
.site-nav-links > li > a {
display: flex;
align-items: center;
gap: 10px;
text-align: left;
width: 100%;
padding: 10px 16px;
border-radius: var(--radius-md);
font-size: 0.95rem;
}
.site-nav-links > li.has-dropdown.active-parent > a {
margin-top: var(--space-sm);
}
.nav-link-icon {
display: inline-block;
width: 18px;
text-align: center;
font-size: 0.9em;
color: var(--color-text-muted);
opacity: 0.6;
flex-shrink: 0;
}
.dropdown-menu {
display: block;
position: static;
border: none;
background-color: transparent;
box-shadow: none;
padding: var(--space-xs) var(--space-xs) var(--space-xs) var(--space-md);
margin-top: 2px;
margin-left: 0;
min-width: 100%;
border-radius: 0;
opacity: 1;
visibility: visible;
transform: none;
transition: none;
pointer-events: auto;
}
.site-nav-links > li.has-dropdown:hover > .dropdown-menu { transform: none; }
.site-nav-links .has-dropdown { padding: 0; }
.site-nav-links .has-dropdown::after { display: none; }
.dropdown-toggle {
font-weight: 700;
color: var(--color-text);
padding: var(--space-sm) var(--space-md);
font-size: 0.8rem;
text-transform: uppercase;
letter-spacing: 0.06em;
opacity: 0.6;
}
.dropdown-toggle::after { display: none; }
.site-nav-links li.has-dropdown:hover { background: none; }
.dropdown-menu a {
padding: 10px 16px;
font-size: 0.9rem;
background-color: transparent;
border: none;
border-radius: var(--radius-md);
gap: 10px;
}
.dropdown-item-icon {
width: 18px;
font-size: 0.9em;
}
.dropdown-group-header {
padding: var(--space-xs) var(--space-md) 2px;
font-size: 0.65rem;
}
.site-nav-links > li + li {
border-top: 1px solid var(--color-border);
margin-top: var(--space-sm);
padding-top: var(--space-sm);
}
.site-nav-links > li > a.active .nav-link-icon {
color: inherit;
opacity: 1;
}
}
@media (width <= 360px) {
.site-header {
--nav-control: 36px;
padding: 0 8px;
gap: 4px;
}
.logo-mobile-text {
font-size: 1.1rem;
}
.logo-mobile-icon {
height: 24px;
}
.tool-button,
.mobile-nav-toggle {
font-size: 1rem;
}
}
.auth-mount {
display: flex;
align-items: center;
position: relative;
min-width: var(--nav-control, 44px);
min-height: var(--nav-control, 44px);
flex-shrink: 0;
}
.auth-mount:empty {
display: none;
}
.nav-signin-btn {
display: inline-flex;
align-items: center;
gap: var(--space-sm);
height: 36px;
padding: 0 15px;
border: 1px solid var(--color-border);
border-radius: var(--radius-full);
background: var(--color-surface-solid);
color: var(--color-text);
font-size: 0.8rem;
font-weight: 700;
cursor: pointer;
white-space: nowrap;
transition: border-color var(--transition-fast), background var(--transition-fast);
}
.nav-signin-btn:hover {
border-color: color-mix(in srgb, var(--color-primary) 45%, var(--color-border));
background: var(--color-primary-active-bg);
}
.nav-signin-btn i { font-size: 0.9em; }
@media (width <= 967px) {
.auth-mount:has(.nav-signin-btn) { display: none; }
}
.auth-menu {
position: relative;
}
.auth-avatar-btn {
width: 36px;
height: 36px;
padding: 0;
border: 1px solid var(--color-border);
border-radius: var(--radius-full);
background: var(--color-surface-raised, var(--color-surface));
cursor: pointer;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
transition: border-color var(--transition-fast);
}
.auth-avatar-btn img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.auth-avatar-fallback {
font-weight: 600;
color: var(--color-text);
font-size: 0.95rem;
line-height: 1;
}
@media (hover: hover) {
.auth-avatar-btn:hover {
border-color: var(--color-text-muted);
}
}
.auth-avatar-btn:focus-visible {
outline: 2px solid var(--color-primary);
outline-offset: 2px;
}
.auth-dropdown {
position: absolute;
top: calc(100% + 8px);
right: 0;
min-width: 240px;
padding: 8px;
background: var(--color-surface-menu);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
box-shadow: var(--shadow-lg);
z-index: 1000;
}
.auth-dropdown[hidden] {
display: none;
}
.auth-dropdown-header {
padding: 10px 12px 12px;
border-bottom: 1px solid var(--color-border);
margin-bottom: 6px;
}
.auth-dropdown-name {
font-weight: 600;
font-size: 0.95rem;
color: var(--color-text);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.auth-dropdown-email {
font-size: 0.8rem;
color: var(--color-text-muted);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
margin-top: 2px;
}
.auth-dropdown-item {
display: flex;
align-items: center;
gap: 10px;
width: 100%;
padding: 9px 12px;
text-align: left;
background: transparent;
border: none;
border-radius: var(--radius-sm, 6px);
color: var(--color-text);
font-size: 0.9rem;
cursor: pointer;
transition: background-color var(--transition-fast);
}
@media (hover: hover) {
.auth-dropdown-item:hover {
background: var(--color-surface-menu-hover);
}
}
.auth-dropdown-item .fa-right-from-bracket {
color: var(--color-text-muted);
font-size: 0.85rem;
width: 16px;
}
.auth-dropdown-item.auth-dropdown-item:any-link {
text-decoration: none;
}
.auth-dropdown-item .fa-user,
.auth-dropdown-item .fa-comments {
color: var(--color-text-muted);
font-size: 0.85rem;
width: 16px;
}
.auth-dropdown-sep {
height: 1px;
margin: 6px 4px;
background: var(--color-border);
}
.auth-overlay {
position: fixed;
inset: 0;
background: rgb(0 0 0 / 50%);
display: flex;
align-items: center;
justify-content: center;
z-index: var(--z-overlay);
padding: var(--space-md);
}
.auth-overlay-card {
background: var(--color-surface-solid, var(--color-surface));
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
padding: var(--space-lg);
max-width: 400px;
width: 100%;
text-align: center;
position: relative;
box-shadow: 0 16px 48px rgb(0 0 0 / 30%);
}
.auth-overlay-card h2 {
margin: 0 0 var(--space-sm);
font-size: 1.25rem;
color: var(--color-text);
}
.auth-overlay-card p {
margin: 0 0 var(--space-md);
color: var(--color-text-muted);
font-size: 0.95rem;
line-height: 1.5;
}
.auth-overlay-close {
position: absolute;
top: 8px;
right: 12px;
background: transparent;
border: none;
font-size: 1.5rem;
line-height: 1;
color: var(--color-text-muted);
cursor: pointer;
padding: 4px 8px;
}
.auth-overlay-close:hover {
color: var(--color-text);
}
.auth-overlay-ok {
padding: 10px 24px;
background: var(--color-primary);
color: white;
border: none;
border-radius: var(--radius-md);
font-size: 0.95rem;
font-weight: 500;
cursor: pointer;
}
.auth-overlay-loading {
padding: var(--space-md);
color: var(--color-text-muted);
}
.auth-overlay-loading .fa-spinner {
margin-right: 8px;
}
#trv-gsi-button {
display: flex;
justify-content: center;
margin-top: var(--space-sm);
}
.signin-card {
max-width: 430px;
padding: var(--space-xl) var(--space-lg) var(--space-lg);
background:
radial-gradient(120% 70% at 50% 0%, color-mix(in srgb, var(--color-accent) 7%, transparent), transparent 62%),
var(--gradient-card);
border-radius: var(--radius-xl);
box-shadow: var(--shadow-xl), var(--ring-raised);
overflow: hidden;
}
.signin-card::before {
content: "";
position: absolute;
left: 18%;
right: 18%;
top: 0;
height: 2px;
border-radius: 0 0 2px 2px;
background: linear-gradient(90deg, transparent, var(--color-accent), transparent);
}
.signin-card-crest {
display: grid;
place-items: center;
width: 46px;
height: 46px;
margin: 0 auto 14px;
}
.signin-card-crest img { width: 30px; height: 38px; object-fit: contain; }
.signin-card .signin-card-title {
margin: 0 0 9px;
font-family: var(--font-serif);
font-weight: 700;
font-size: 1.42rem;
line-height: 1.25;
letter-spacing: -0.01em;
text-wrap: balance;
color: var(--color-text);
}
.signin-card .signin-card-lede {
margin: 0 auto var(--space-lg);
max-width: 34ch;
font-size: 0.88rem;
line-height: 1.6;
color: var(--color-text-muted);
text-wrap: pretty;
}
.signin-card-carry {
text-align: left;
margin-bottom: var(--space-lg);
padding: 14px var(--space-md) 13px;
background: color-mix(in srgb, var(--color-accent) 4%, var(--color-surface-solid));
border: 1px solid var(--lectern-seam);
border-radius: var(--radius-md);
}
.signin-card-carry-head {
display: block;
margin-bottom: 10px;
font-family: var(--font-display);
font-size: 0.6rem;
font-weight: 800;
letter-spacing: var(--tracking-overline);
text-transform: uppercase;
color: var(--color-text-muted);
opacity: 0.85;
}
.signin-card-carry-list {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 7px;
}
.signin-card-carry-list li {
display: flex;
align-items: center;
gap: 10px;
font-size: 0.85rem;
color: var(--color-text);
}
.signin-card-carry-list i {
width: 15px;
font-size: 0.78rem;
color: var(--color-accent);
text-align: center;
}
.signin-card-carry-list b { font-weight: 700; font-variant-numeric: tabular-nums; }
.signin-card-google { display: flex; justify-content: center; margin-top: 0; }
.signin-card .signin-card-fine {
margin: 13px auto 0;
max-width: 42ch;
font-size: 0.73rem;
line-height: 1.55;
color: var(--color-text-muted);
opacity: 0.9;
}
.signin-card-stay {
position: static;
display: block;
margin: var(--space-md) auto 0;
padding: 6px 10px;
border: 0;
border-radius: var(--radius-sm);
background: transparent;
color: var(--color-primary);
font-size: 0.83rem;
font-weight: 600;
cursor: pointer;
transition: background var(--transition-fast);
}
.signin-card-stay:hover { background: var(--color-primary-active-bg); color: var(--color-primary); }
.nav-mobile-signin { display: none; }
@media (width <= 967px) {
.nav-mobile-signin { display: block; margin-bottom: var(--space-xs); }
.nav-mobile-signin-btn {
display: flex;
align-items: center;
gap: 12px;
width: 100%;
padding: var(--space-sm) var(--space-md);
border: 0;
border-radius: var(--radius-full);
background: var(--color-primary);
color: var(--color-primary-contrast);
font-size: 0.9rem;
font-weight: 700;
cursor: pointer;
}
.nav-mobile-signin-btn i { width: 18px; text-align: center; }
}
.auth-beta-card {
max-width: 520px;
text-align: left;
}
.auth-beta-card h2 {
text-align: left;
margin-bottom: var(--space-sm);
}
.auth-beta-lede {
margin: 0 0 var(--space-md);
color: var(--color-text);
font-size: 0.95rem;
}
.auth-beta-points {
list-style: none;
margin: 0 0 var(--space-md);
padding: 0;
display: flex;
flex-direction: column;
gap: var(--space-xs);
}
.auth-beta-points li {
position: relative;
padding-left: 22px;
color: var(--color-text);
font-size: 0.9rem;
line-height: 1.45;
}
.auth-beta-points li::before {
content: "•";
position: absolute;
left: 8px;
color: var(--color-text-muted);
font-weight: 700;
}
.auth-beta-points a {
color: var(--color-primary);
text-decoration: underline;
}
.auth-beta-actions {
display: flex;
gap: var(--space-sm);
justify-content: flex-end;
margin-top: var(--space-md);
flex-wrap: wrap;
}
.auth-beta-accept,
.auth-beta-cancel {
appearance: none;
border-radius: var(--radius-full);
padding: var(--space-xs) var(--space-md);
font-weight: 600;
cursor: pointer;
font-size: 0.9rem;
border: 1px solid var(--color-border);
}
.auth-beta-accept {
background: var(--color-text);
color: var(--color-surface-solid);
border-color: var(--color-text);
}
.auth-beta-accept:hover {
background: color-mix(in srgb, var(--color-text) 88%, transparent);
}
.auth-beta-cancel {
background: transparent;
color: var(--color-text);
}
.auth-beta-cancel:hover {
background: var(--color-surface-soft);
}
