aether-garden / ui /styles.css
kavyabhand's picture
Deploy Aether Garden application
c68d910 verified
Raw
History Blame Contribute Delete
176 kB
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600&family=Cinzel+Decorative:wght@700&family=Cormorant+Garamond:ital,wght@0,500;1,500&family=EB+Garamond:ital@0;1&family=IM+Fell+English:ital@0;1&family=Libre+Baskerville:ital@0;1&display=swap');
:root {
--realm-bg-primary: #0c1410;
--realm-bg-secondary: #142218;
--realm-bg-tertiary: #1c3024;
--realm-text-primary: #f0ead8;
--realm-text-secondary: #b8b090;
--realm-text-tertiary: #708068;
--realm-accent-gold: #d4a84b;
--realm-accent-violet: #9070b8;
--realm-accent-ember: #e07b4a;
--realm-forest: #2a4a3a;
--realm-border: rgba(212, 168, 75, 0.18);
--realm-border-strong: rgba(212, 168, 75, 0.4);
--realm-glass: rgba(12, 20, 16, 0.72);
--realm-glass-border: rgba(212, 168, 75, 0.22);
--realm-glass-glow: rgba(212, 168, 75, 0.08);
--realm-line-height: 1.65;
--realm-letter-spacing: 0.02em;
}
/* Gradio overrides */
.gradio-container {
background: var(--realm-bg-primary) !important;
max-width: 1400px !important;
font-family: 'EB Garamond', 'Libre Baskerville', Georgia, serif !important;
}
.gradio-container .contain {
background: transparent !important;
}
footer { display: none !important; }
/* Hero banner */
.hero-banner {
position: relative;
width: 100%;
border-radius: 14px;
overflow: hidden;
margin-bottom: 1.5rem;
border: 1px solid var(--realm-border-strong);
box-shadow: 0 10px 50px rgba(0,0,0,0.55), 0 0 70px rgba(212,168,75,0.07);
}
.hero-image-wrap {
position: relative;
overflow: hidden;
}
.hero-image {
width: 100%;
height: auto;
display: block;
object-fit: cover;
animation: heroParallax 18s ease-in-out infinite alternate;
}
@keyframes heroParallax {
from { transform: scale(1) translateY(0); }
to { transform: scale(1.04) translateY(-1%); }
}
.hero-particles {
position: absolute;
inset: 0;
pointer-events: none;
overflow: hidden;
}
.hero-particle {
position: absolute;
bottom: -4px;
width: 3px;
height: 3px;
border-radius: 50%;
background: rgba(212, 168, 75, 0.55);
box-shadow: 0 0 8px rgba(212, 168, 75, 0.4);
animation: heroParticleRise linear infinite;
}
@keyframes heroParticleRise {
0% { transform: translateY(0) scale(0.6); opacity: 0; }
10% { opacity: 0.8; }
90% { opacity: 0.5; }
100% { transform: translateY(-320px) scale(1.2); opacity: 0; }
}
.hero-shimmer {
position: absolute;
inset: 0;
background: linear-gradient(
105deg,
transparent 40%,
rgba(212, 168, 75, 0.06) 50%,
transparent 60%
);
background-size: 200% 100%;
animation: heroShimmer 8s ease-in-out infinite;
pointer-events: none;
}
@keyframes heroShimmer {
0%, 100% { background-position: 200% 0; }
50% { background-position: -200% 0; }
}
.hero-statusbar {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.55rem;
padding: 0.7rem 1.25rem;
background: linear-gradient(90deg, rgba(20,34,24,0.95), rgba(12,20,16,0.95));
border-top: 1px solid var(--realm-border);
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
font-size: 0.92rem;
}
.hero-status-live {
font-family: 'Cinzel', serif;
font-size: 0.72rem;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--realm-text-secondary);
margin-right: 0.4rem;
}
.hero-statusbar .hero-stat b { color: var(--realm-accent-gold); font-weight: 600; }
.hero-statusbar .hero-stat-div { color: var(--realm-text-tertiary); }
.hero-eyebrow {
font-family: 'Cinzel', serif;
font-size: 0.7rem;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--realm-accent-gold);
margin: 0 0 0.4rem;
}
.hero-tagline {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-text-primary);
font-size: 1.05rem;
margin: 0 0 0.75rem;
opacity: 0.9;
}
.hero-pillars {
display: flex;
flex-wrap: wrap;
gap: 0.75rem 1.25rem;
}
.pillar {
font-family: 'Cinzel', serif;
font-size: 0.65rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--realm-text-secondary);
}
.pillar-icon {
color: var(--realm-accent-gold);
margin-right: 0.3rem;
}
/* World vignette */
.world-vignette {
background: linear-gradient(135deg, rgba(42,74,58,0.3), rgba(28,48,36,0.5));
border: 1px solid var(--realm-border);
border-radius: 10px;
padding: 1.25rem 1.5rem;
margin-bottom: 1.25rem;
border-left: 3px solid var(--realm-accent-gold);
}
.vignette-label {
font-family: 'Cinzel', serif;
font-size: 0.65rem;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--realm-accent-gold);
margin: 0 0 0.4rem;
}
.vignette-title {
font-family: 'Libre Baskerville', serif;
color: var(--realm-text-primary);
font-size: 1.1rem;
margin: 0 0 0.4rem;
}
.vignette-text {
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
line-height: 1.65;
margin: 0;
font-size: 1rem;
}
/* Featured characters */
.featured-section {
margin-bottom: 1.5rem;
}
.section-header {
margin-bottom: 1rem;
}
.section-title {
font-family: 'Cinzel', serif;
color: var(--realm-accent-gold);
font-size: 1rem;
letter-spacing: 0.12em;
text-transform: uppercase;
margin: 0 0 0.25rem;
}
.section-desc {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-text-tertiary);
margin: 0;
font-size: 0.9rem;
}
.featured-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
gap: 1rem;
}
.featured-card {
position: relative;
display: flex;
gap: 1rem;
background-color: var(--realm-bg-secondary);
background-size: cover;
background-position: center;
border: 1px solid var(--realm-border);
border-radius: 10px;
padding: 1rem;
overflow: hidden;
transition: border-color 0.25s, box-shadow 0.25s, transform 0.25s;
}
.featured-card-scrim {
position: absolute;
inset: 0;
background: linear-gradient(120deg, rgba(12,20,16,0.94) 30%, rgba(12,20,16,0.74) 70%, rgba(12,20,16,0.5));
z-index: 0;
}
.featured-card > .featured-portrait,
.featured-card > .featured-info { position: relative; z-index: 1; }
.featured-card:hover {
border-color: var(--realm-border-strong);
box-shadow: 0 8px 30px rgba(0,0,0,0.5), 0 0 24px rgba(212,168,75,0.1);
transform: translateY(-3px);
}
.featured-legendary {
border-color: rgba(144,112,184,0.35);
box-shadow: 0 0 20px rgba(144,112,184,0.06);
}
.featured-portrait {
flex-shrink: 0;
}
.featured-info {
min-width: 0;
}
.featured-type {
font-size: 0.6rem;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--realm-accent-ember);
}
.featured-name {
font-family: 'Libre Baskerville', serif;
color: var(--realm-text-primary);
font-size: 1.05rem;
margin: 0.15rem 0;
}
.featured-location {
font-size: 0.75rem;
color: var(--realm-accent-gold);
margin: 0 0 0.4rem;
}
.featured-appearance {
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
font-size: 0.85rem;
line-height: 1.5;
margin: 0 0 0.4rem;
}
.featured-greeting {
font-family: 'Libre Baskerville', serif;
font-style: italic;
color: var(--realm-accent-gold);
font-size: 0.8rem;
margin: 0.25rem 0;
padding-left: 0.5rem;
border-left: 2px solid var(--realm-border);
opacity: 0.85;
}
.featured-memory {
font-family: 'EB Garamond', serif;
font-size: 0.78rem;
color: var(--realm-text-tertiary);
font-style: italic;
margin: 0.25rem 0 0;
}
.entity-avatar {
border-radius: 50%;
}
.entity-card-top {
display: flex;
gap: 1.25rem;
margin-bottom: 1rem;
align-items: flex-start;
}
.entity-portrait {
flex-shrink: 0;
}
/* Header (legacy fallback) */
.realm-header {
text-align: center;
padding: 2rem 1rem 1.5rem;
border-bottom: 1px solid var(--realm-border);
margin-bottom: 1.5rem;
background: linear-gradient(180deg, rgba(200,160,64,0.03) 0%, transparent 100%);
}
.realm-title {
font-family: 'Cinzel', serif;
font-size: 2.2rem;
font-weight: 600;
color: var(--realm-accent-gold);
letter-spacing: 0.15em;
text-transform: uppercase;
margin: 0 0 0.5rem;
text-shadow: 0 0 40px rgba(200, 160, 64, 0.2);
}
.realm-subtitle {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-text-secondary);
font-size: 1.1rem;
margin: 0 0 1rem;
}
.realm-stats {
font-size: 0.85rem;
color: var(--realm-text-tertiary);
letter-spacing: 0.05em;
}
.realm-myth {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-text-secondary);
font-size: 0.95rem;
max-width: 700px;
margin: 1rem auto 0;
line-height: 1.6;
opacity: 0.8;
}
/* Tabs */
.realm-tabs {
border-bottom: 1px solid var(--realm-border) !important;
}
.realm-tabs button {
font-family: 'Cinzel', serif !important;
letter-spacing: 0.1em !important;
color: var(--realm-text-secondary) !important;
background: transparent !important;
border: none !important;
}
.realm-tabs button.selected {
color: var(--realm-accent-gold) !important;
border-bottom: 2px solid var(--realm-accent-gold) !important;
}
/* Map */
.realm-map {
width: 100%;
height: auto;
border-radius: 10px;
background: var(--realm-bg-secondary);
border: 1px solid var(--realm-border-strong);
box-shadow: inset 0 0 40px rgba(42,74,58,0.2);
}
.location-circle {
transition: opacity 0.3s, transform 0.3s;
cursor: pointer;
}
.location-node:hover .location-circle {
opacity: 0.5 !important;
transform: scale(1.08);
}
.location-pulse .location-circle,
.location-glow .location-circle {
animation: pulse-glow 2.5s ease-in-out infinite;
}
.location-glow .location-aura {
animation: aura-breathe 4s ease-in-out infinite;
}
.realm-path {
animation: path-shimmer 6s ease-in-out infinite;
}
@keyframes aura-breathe {
0%, 100% { opacity: 0.08; r: 44; }
50% { opacity: 0.16; }
}
@keyframes path-shimmer {
0%, 100% { stroke-opacity: 0.18; }
50% { stroke-opacity: 0.38; }
}
.location-selected .location-circle {
stroke-width: 3 !important;
opacity: 0.6 !important;
}
@keyframes pulse-glow {
0%, 100% { opacity: 0.25; }
50% { opacity: 0.55; }
}
.entity-dot {
animation: fade-in-scale 0.6s ease-out;
}
@keyframes fade-in-scale {
from { opacity: 0; transform: scale(0.5); }
to { opacity: 0.9; transform: scale(1); }
}
/* Activity feed */
.activity-feed { padding: 0.5rem 0; }
.feed-item {
padding: 0.75rem 0;
border-bottom: 1px solid var(--realm-border);
animation: slide-up 0.4s ease-out;
}
.feed-day {
font-size: 0.7rem;
color: var(--realm-accent-gold);
text-transform: uppercase;
letter-spacing: 0.1em;
}
.feed-content {
color: var(--realm-text-primary);
font-family: 'EB Garamond', serif;
font-size: 0.95rem;
margin: 0.25rem 0 0;
line-height: 1.5;
}
@keyframes slide-up {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
/* Realm Pulse — live simulation ticker */
.realm-pulse {
margin: 0 0 1.25rem;
padding: 1rem 1.1rem 0.85rem;
background: linear-gradient(135deg, rgba(20,34,24,0.85), rgba(12,20,16,0.92));
border: 1px solid var(--realm-border-strong);
border-radius: 12px;
box-shadow: 0 4px 28px rgba(0,0,0,0.35);
}
.pulse-header {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.45rem 0.75rem;
margin-bottom: 0.85rem;
}
.pulse-title {
font-family: 'Cinzel', serif;
font-size: 0.82rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--realm-accent-gold);
}
.pulse-sub {
font-family: 'EB Garamond', serif;
font-size: 0.85rem;
color: var(--realm-text-tertiary);
font-style: italic;
}
.pulse-quiet {
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
font-style: italic;
margin: 0;
}
.pulse-track {
display: flex;
gap: 0.75rem;
overflow-x: auto;
padding-bottom: 0.35rem;
scroll-snap-type: x mandatory;
-webkit-overflow-scrolling: touch;
}
.pulse-track::-webkit-scrollbar { height: 4px; }
.pulse-track::-webkit-scrollbar-thumb {
background: var(--realm-border-strong);
border-radius: 4px;
}
.pulse-card {
flex: 0 0 min(280px, 78vw);
scroll-snap-align: start;
padding: 0.85rem 1rem;
border-radius: 10px;
border: 1px solid var(--realm-border);
background: var(--realm-bg-tertiary);
animation: slide-up 0.5s ease-out;
}
.pulse-encounter { border-left: 3px solid var(--realm-accent-violet); }
.pulse-event { border-left: 3px solid var(--realm-accent-gold); }
.pulse-arrival { border-left: 3px solid #5fd07a; }
.pulse-kind {
font-size: 0.62rem;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--realm-text-tertiary);
}
.pulse-headline {
font-family: 'Cinzel', serif;
font-size: 0.95rem;
color: var(--realm-text-primary);
margin: 0.35rem 0 0.25rem;
line-height: 1.35;
}
.pulse-detail {
font-family: 'EB Garamond', serif;
font-size: 0.88rem;
color: var(--realm-text-secondary);
margin: 0;
line-height: 1.45;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
.pulse-day {
display: inline-block;
margin-top: 0.5rem;
font-size: 0.68rem;
color: var(--realm-accent-gold);
letter-spacing: 0.08em;
}
/* Current event */
.current-event {
background: var(--realm-bg-tertiary);
border: 1px solid var(--realm-border);
border-radius: 8px;
padding: 1.25rem;
margin-bottom: 1rem;
}
.event-active {
border-color: var(--realm-border-strong);
box-shadow: 0 0 20px rgba(200, 160, 64, 0.05);
}
.event-label {
font-family: 'Cinzel', serif;
font-size: 0.75rem;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--realm-accent-gold);
margin: 0 0 0.5rem;
}
.event-title {
font-family: 'Libre Baskerville', serif;
color: var(--realm-text-primary);
font-size: 1.1rem;
margin: 0 0 0.5rem;
}
.event-text {
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
line-height: 1.6;
margin: 0;
}
.event-locations {
font-size: 0.8rem;
color: var(--realm-text-tertiary);
margin: 0.5rem 0 0;
}
.event-chronicle {
font-family: 'IM Fell English', serif;
font-style: italic;
font-size: 0.88rem;
line-height: 1.5;
color: #5c4228;
margin: 0.55rem 0 0;
padding-top: 0.45rem;
border-top: 1px solid rgba(138, 106, 58, 0.2);
}
.vignette-mystery {
margin-top: 0.45rem !important;
}
/* Summon form */
.summon-section {
background: linear-gradient(135deg, rgba(42,74,58,0.25), var(--realm-bg-secondary));
border: 1px solid var(--realm-border-strong);
border-radius: 10px;
padding: 1.5rem;
margin-top: 1rem;
}
.summon-title {
font-family: 'Cinzel', serif;
color: var(--realm-accent-gold);
font-size: 0.85rem;
letter-spacing: 0.12em;
text-transform: uppercase;
margin: 0 0 1rem;
}
.summon-hint {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-text-tertiary);
font-size: 0.85rem;
margin-top: 0.75rem;
}
/* Entity card */
.entity-card {
background: var(--realm-bg-secondary);
border: 1px solid var(--realm-border);
border-radius: 8px;
padding: 1.5rem;
animation: fade-in-scale 0.5s ease-out;
}
.entity-header { margin-bottom: 1rem; }
.entity-meta {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 0.5rem;
}
.entity-type {
font-size: 0.75rem;
color: var(--realm-text-tertiary);
text-transform: uppercase;
letter-spacing: 0.08em;
}
.entity-status {
font-size: 0.75rem;
padding: 0.2rem 0.6rem;
border-radius: 12px;
background: rgba(200, 160, 64, 0.1);
color: var(--realm-accent-gold);
}
.status-dormant { background: rgba(96, 88, 72, 0.2); color: var(--realm-text-secondary); }
.status-legendary { background: rgba(128, 96, 176, 0.2); color: var(--realm-accent-violet); }
.entity-name {
font-family: 'Libre Baskerville', serif;
color: var(--realm-text-primary);
font-size: 1.5rem;
margin: 0;
}
.entity-appearance {
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
line-height: 1.7;
margin-bottom: 1rem;
font-size: 1rem;
}
.entity-traits {
display: flex;
flex-wrap: wrap;
gap: 0.4rem;
margin-bottom: 1rem;
}
.trait-tag, .entity-tag {
font-size: 0.7rem;
padding: 0.2rem 0.6rem;
border-radius: 12px;
background: rgba(200, 160, 64, 0.08);
color: var(--realm-text-secondary);
border: 1px solid var(--realm-border);
}
.entity-section {
margin-bottom: 0.75rem;
}
.section-label {
font-family: 'Cinzel', serif;
font-size: 0.65rem;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--realm-accent-gold);
margin-bottom: 0.25rem;
}
.entity-section p {
font-family: 'EB Garamond', serif;
color: var(--realm-text-primary);
margin: 0;
line-height: 1.5;
}
.secret-goal .section-label { color: var(--realm-accent-violet); }
.entity-greeting {
font-family: 'Libre Baskerville', serif;
font-style: italic;
color: var(--realm-accent-gold);
opacity: 0.9;
border-left: 2px solid var(--realm-border-strong);
padding: 0.75rem 1rem;
margin: 1rem 0;
background: rgba(200, 160, 64, 0.03);
}
.secret-section {
background: rgba(112, 144, 176, 0.05);
border: 1px solid rgba(112, 144, 176, 0.15);
border-radius: 6px;
padding: 0.75rem;
}
.sea-whisper { color: var(--realm-text-tertiary); font-size: 0.6rem; }
.secret-name { font-style: italic; color: #7090b0 !important; }
.memory-section {
border-top: 1px solid var(--realm-border);
padding-top: 0.75rem;
margin-top: 0.75rem;
}
.memory-text { color: var(--realm-text-secondary) !important; }
.entity-footer {
font-size: 0.75rem;
color: var(--realm-text-tertiary);
margin-top: 1rem;
padding-top: 0.75rem;
border-top: 1px solid var(--realm-border);
}
/* Location panel */
.location-panel {
background: var(--realm-bg-tertiary);
border: 1px solid var(--realm-border);
border-radius: 10px;
overflow: hidden;
animation: slide-up 0.3s ease-out;
}
.location-panel-banner {
position: relative;
height: 120px;
background-color: var(--realm-bg-secondary);
background-size: cover;
background-position: center;
display: flex;
align-items: flex-end;
}
.location-panel-scrim {
position: absolute;
inset: 0;
background: linear-gradient(transparent, rgba(12,20,16,0.55) 50%, rgba(12,20,16,0.95));
}
.location-panel-content { padding: 1.25rem; }
.location-panel-name {
position: relative;
z-index: 1;
font-family: 'Cinzel', serif;
color: #f4ecd4;
font-size: 1.2rem;
margin: 0;
padding: 1rem 1.25rem;
text-shadow: 0 2px 12px rgba(0,0,0,0.8);
}
.location-panel-desc {
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
font-size: 0.9rem;
line-height: 1.5;
margin: 0 0 0.75rem;
}
.location-panel-special {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-accent-gold);
font-size: 0.82rem;
line-height: 1.5;
margin: 0 0 0.75rem;
opacity: 0.85;
}
.location-entity-list {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
}
.location-entity-chip {
font-size: 0.8rem;
padding: 0.35rem 0.75rem;
background: rgba(200, 160, 64, 0.08);
border: 1px solid var(--realm-border);
border-radius: 16px;
color: var(--realm-text-primary);
cursor: pointer;
transition: background 0.2s;
}
.location-entity-chip:hover {
background: rgba(200, 160, 64, 0.15);
border-color: var(--realm-border-strong);
}
/* Book of Ages */
.book-container {
background: var(--realm-bg-secondary);
border: 1px solid var(--realm-border);
border-radius: 8px;
padding: 2rem;
max-height: 70vh;
overflow-y: auto;
}
.book-title {
font-family: 'Cinzel', serif;
color: var(--realm-accent-gold);
font-size: 1.5rem;
letter-spacing: 0.1em;
margin: 0;
}
.book-subtitle {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-text-tertiary);
margin: 0.25rem 0 1.5rem;
}
.book-day-header {
font-family: 'Cinzel', serif;
color: var(--realm-accent-gold);
font-size: 0.9rem;
letter-spacing: 0.12em;
padding: 1rem 0 0.5rem;
border-bottom: 1px solid var(--realm-border);
margin-bottom: 0.75rem;
}
.book-entry {
padding: 0.6rem 0;
border-bottom: 1px solid rgba(200, 160, 64, 0.05);
animation: slide-up 0.4s ease-out;
}
.entry-type-badge {
font-size: 0.6rem;
text-transform: uppercase;
letter-spacing: 0.1em;
padding: 0.15rem 0.5rem;
border-radius: 8px;
margin-right: 0.5rem;
vertical-align: middle;
}
.entry-arrival .entry-type-badge { background: rgba(200,160,64,0.15); color: var(--realm-accent-gold); }
.entry-interaction .entry-type-badge { background: rgba(128,96,176,0.15); color: var(--realm-accent-violet); }
.entry-event .entry-type-badge { background: rgba(176,96,32,0.15); color: #b06020; }
.entry-milestone .entry-type-badge { background: rgba(192,64,32,0.15); color: #c04020; }
.entry-dream .entry-type-badge { background: rgba(64,80,64,0.15); color: #608060; }
.entry-content {
font-family: 'EB Garamond', serif;
color: var(--realm-text-primary);
font-size: 1rem;
line-height: 1.6;
margin: 0.25rem 0 0;
display: inline;
}
.entry-title { color: var(--realm-accent-gold); }
/* Entity grid */
.entity-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 1rem;
}
.entity-grid-card {
position: relative;
display: flex;
gap: 0.85rem;
background-color: var(--realm-bg-secondary);
background-size: cover;
background-position: center;
border: 1px solid var(--realm-border);
border-radius: 10px;
padding: 1rem;
overflow: hidden;
cursor: pointer;
transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.grid-card-scrim {
position: absolute;
inset: 0;
background: linear-gradient(120deg, rgba(12,20,16,0.95) 35%, rgba(12,20,16,0.78) 75%, rgba(12,20,16,0.55));
z-index: 0;
}
.entity-grid-card:hover {
border-color: var(--realm-border-strong);
transform: translateY(-3px);
box-shadow: 0 8px 24px rgba(0,0,0,0.5), 0 0 18px rgba(212,168,75,0.1);
}
.grid-card-portrait { position: relative; z-index: 1; flex-shrink: 0; }
.grid-card-body { position: relative; z-index: 1; min-width: 0; }
.grid-card-greeting {
font-family: 'Libre Baskerville', serif;
font-style: italic;
font-size: 0.75rem;
color: var(--realm-accent-gold);
opacity: 0.8;
margin: 0.3rem 0 0;
}
.grid-card-type {
font-size: 0.65rem;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--realm-text-tertiary);
}
.grid-card-name {
font-family: 'Libre Baskerville', serif;
color: var(--realm-text-primary);
font-size: 1.1rem;
margin: 0.25rem 0;
}
.grid-card-location {
font-size: 0.75rem;
color: var(--realm-accent-gold);
margin: 0 0 0.5rem;
}
.grid-card-preview {
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
font-size: 0.85rem;
line-height: 1.5;
margin: 0;
}
.grid-card-meta {
font-size: 0.7rem;
color: var(--realm-text-tertiary);
margin-top: 0.75rem;
}
.grid-status-legendary { border-color: rgba(128, 96, 176, 0.3); }
/* Empty & loading states */
.empty-state {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-text-tertiary);
text-align: center;
padding: 3rem;
}
.feed-empty {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-text-tertiary);
}
/* Loading */
.loading-constellation {
text-align: center;
padding: 2rem;
color: var(--realm-accent-gold);
font-family: 'Cinzel', serif;
letter-spacing: 0.2em;
animation: pulse-glow 2s ease-in-out infinite;
}
/* The Oracle dreaming a new soul into being */
.oracle-summoning {
position: relative;
text-align: center;
padding: 2.5rem 1.5rem 2.75rem;
margin-top: 0.75rem;
border: 1px solid var(--realm-border-strong);
border-radius: 14px;
background:
radial-gradient(120% 90% at 50% 0%, rgba(200, 160, 64, 0.10), transparent 60%),
linear-gradient(180deg, rgba(26, 26, 46, 0.6), rgba(10, 10, 18, 0.4));
overflow: hidden;
animation: fade-in-scale 0.5s ease-out both;
}
.oracle-orbit {
position: relative;
width: 92px;
height: 92px;
margin: 0 auto 1.25rem;
}
.oracle-core {
position: absolute;
inset: 50% auto auto 50%;
width: 16px;
height: 16px;
margin: -8px 0 0 -8px;
border-radius: 50%;
background: radial-gradient(circle, #ffe7ab, var(--realm-accent-gold));
box-shadow: 0 0 22px 6px rgba(200, 160, 64, 0.55);
animation: oracle-breathe 2.2s ease-in-out infinite;
}
.oracle-ring {
position: absolute;
inset: 0;
border-radius: 50%;
border: 1px solid rgba(200, 160, 64, 0.28);
border-top-color: rgba(255, 231, 171, 0.9);
animation: oracle-spin 1.6s linear infinite;
}
.oracle-ring.two {
inset: 16px;
border-top-color: transparent;
border-right-color: rgba(128, 96, 176, 0.8);
animation-duration: 2.4s;
animation-direction: reverse;
}
.oracle-ring.three {
inset: 30px;
border-top-color: rgba(200, 160, 64, 0.6);
animation-duration: 3.2s;
}
.oracle-title {
font-family: 'Cinzel', serif;
letter-spacing: 0.22em;
text-transform: uppercase;
font-size: 0.82rem;
color: var(--realm-accent-gold);
margin-bottom: 0.5rem;
}
.oracle-line {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-text-secondary);
max-width: 30rem;
margin: 0 auto;
min-height: 1.4em;
}
.oracle-echo {
font-family: 'EB Garamond', serif;
color: var(--realm-text-tertiary);
font-size: 0.85rem;
margin-top: 0.85rem;
opacity: 0.8;
}
.soul-card-image {
border-radius: 12px;
overflow: hidden;
animation: fade-in-scale 0.6s ease-out both;
}
.soul-card-image img {
border-radius: 10px;
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5);
}
@keyframes oracle-spin { to { transform: rotate(360deg); } }
@keyframes oracle-breathe {
0%, 100% { transform: scale(1); opacity: 1; }
50% { transform: scale(1.5); opacity: 0.7; }
}
/* Error messages */
.realm-error {
color: #c04040;
font-family: 'EB Garamond', serif;
padding: 0.75rem;
background: rgba(192, 64, 64, 0.08);
border: 1px solid rgba(192, 64, 64, 0.2);
border-radius: 6px;
margin-top: 0.5rem;
}
/* Sidebar panel */
.sidebar-panel {
padding: 0.5rem;
}
/* Hero live indicator + stats */
.live-dot {
display: inline-block;
width: 7px;
height: 7px;
border-radius: 50%;
background: #5fd07a;
box-shadow: 0 0 8px #5fd07a;
margin-right: 0.35rem;
vertical-align: middle;
animation: live-pulse 2s ease-in-out infinite;
}
@keyframes live-pulse {
0%, 100% { opacity: 1; transform: scale(1); }
50% { opacity: 0.4; transform: scale(0.75); }
}
.hero-stats {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0.6rem;
margin: 0 0 0.85rem;
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
font-size: 0.9rem;
}
.hero-stat b { color: var(--realm-accent-gold); font-weight: 600; }
.hero-stat-div { color: var(--realm-text-tertiary); }
/* Entity card location banner */
.entity-card {
overflow: hidden;
}
.entity-card-banner {
position: relative;
height: 110px;
margin: -1.5rem -1.5rem 1rem;
background-color: var(--realm-bg-tertiary);
background-size: cover;
background-position: center;
}
.entity-card-banner-scrim {
position: absolute;
inset: 0;
background: linear-gradient(transparent 20%, rgba(20,34,24,0.85) 80%, var(--realm-bg-secondary));
}
.entity-card .entity-card-top { margin-top: -2.75rem; position: relative; z-index: 2; }
.entity-card .entity-portrait .entity-avatar {
box-shadow: 0 6px 20px rgba(0,0,0,0.6);
background: var(--realm-bg-secondary);
}
/* Sacred Locations gallery */
.locations-gallery { padding: 0.5rem 0 1.5rem; }
.loc-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
gap: 1.25rem;
}
.loc-card {
position: relative;
min-height: 260px;
border-radius: 14px;
overflow: hidden;
background-color: var(--realm-bg-secondary);
background-size: cover;
background-position: center;
border: 1px solid var(--realm-border);
display: flex;
align-items: flex-end;
transition: transform 0.3s, box-shadow 0.3s, border-color 0.3s;
cursor: pointer;
}
.loc-card:hover {
transform: translateY(-4px) scale(1.01);
border-color: var(--realm-border-strong);
box-shadow: 0 16px 40px rgba(0,0,0,0.55), 0 0 30px rgba(212,168,75,0.12);
}
.loc-card-scrim {
position: absolute;
inset: 0;
background: linear-gradient(transparent 10%, rgba(10,18,12,0.55) 45%, rgba(10,18,12,0.96));
transition: background 0.3s;
}
.loc-card:hover .loc-card-scrim {
background: linear-gradient(transparent 5%, rgba(10,18,12,0.45) 40%, rgba(10,18,12,0.95));
}
.loc-card-body {
position: relative;
z-index: 1;
width: 100%;
padding: 1.25rem;
}
.loc-card-top {
position: absolute;
z-index: 2;
top: 1rem;
left: 1rem;
right: 1rem;
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 0.5rem;
}
.loc-card-count {
font-family: 'Cinzel', serif;
font-size: 0.65rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: #f4ecd4;
background: rgba(10,18,12,0.6);
border: 1px solid var(--realm-border);
padding: 0.25rem 0.6rem;
border-radius: 20px;
backdrop-filter: blur(4px);
}
.loc-card-flag {
font-family: 'EB Garamond', serif;
font-style: italic;
font-size: 0.7rem;
color: var(--realm-accent-ember);
background: rgba(10,18,12,0.6);
padding: 0.25rem 0.6rem;
border-radius: 20px;
border: 1px solid rgba(224,123,74,0.3);
}
.loc-card-name {
font-family: 'Cinzel', serif;
color: #f4ecd4;
font-size: 1.3rem;
margin: 0 0 0.4rem;
text-shadow: 0 2px 14px rgba(0,0,0,0.85);
}
.loc-card-desc {
font-family: 'EB Garamond', serif;
color: #d8d0b8;
font-size: 0.9rem;
line-height: 1.55;
margin: 0 0 0.65rem;
}
.loc-card-vibes {
display: flex;
flex-wrap: wrap;
gap: 0.35rem;
margin-bottom: 0.65rem;
}
.loc-vibe {
font-size: 0.62rem;
text-transform: uppercase;
letter-spacing: 0.08em;
padding: 0.15rem 0.5rem;
border-radius: 10px;
background: rgba(212,168,75,0.14);
color: var(--realm-accent-gold);
border: 1px solid var(--realm-border);
}
.loc-card-residents {
font-family: 'EB Garamond', serif;
font-style: italic;
font-size: 0.78rem;
color: var(--realm-text-tertiary);
margin: 0;
}
.loc-card-live { border-color: rgba(224,123,74,0.5); }
.loc-card-live .loc-card-scrim {
box-shadow: inset 0 0 60px rgba(224,123,74,0.2);
animation: loc-live 3s ease-in-out infinite;
}
@keyframes loc-live {
0%, 100% { box-shadow: inset 0 0 50px rgba(224,123,74,0.12); }
50% { box-shadow: inset 0 0 80px rgba(224,123,74,0.28); }
}
/* 3D diorama iframe */
.diorama-wrap {
position: relative;
margin: 1.25rem 0;
border: 2px solid var(--realm-border-strong);
border-radius: 16px;
overflow: hidden;
background: var(--realm-bg-secondary);
box-shadow:
0 14px 48px rgba(0,0,0,0.55),
0 0 60px var(--realm-glass-glow),
inset 0 0 0 1px rgba(255,255,255,0.04);
padding: 6px;
}
.diorama-wrap::before,
.diorama-wrap::after {
content: '◆';
position: absolute;
z-index: 2;
color: var(--realm-accent-gold);
font-size: 0.65rem;
opacity: 0.45;
pointer-events: none;
}
.diorama-wrap::before { top: 10px; left: 14px; }
.diorama-wrap::after { top: 10px; right: 14px; }
.diorama-header {
padding: 1rem 1.25rem;
border-bottom: 1px solid var(--realm-border);
background: linear-gradient(90deg, rgba(20,34,24,0.95), rgba(12,20,16,0.95));
}
.diorama-label {
font-family: 'Cinzel', serif;
font-size: 0.68rem;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--realm-accent-gold);
margin: 0 0 0.25rem;
}
.diorama-place-name {
font-family: 'Cinzel', serif;
color: #f4ecd4;
font-size: 1.35rem;
margin: 0 0 0.35rem;
}
.diorama-hint {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-text-tertiary);
font-size: 0.85rem;
margin: 0;
}
.diorama-stage {
position: relative;
border-radius: 10px;
overflow: hidden;
box-shadow: inset 0 0 0 1px rgba(138, 106, 58, 0.22);
}
.diorama-frame {
display: block;
width: 100%;
height: min(80vh, 720px);
min-height: 540px;
border: none;
background: #0c1410;
cursor: crosshair;
}
/* Walk pad — anchored inside the 3D diorama stage only */
#aether-walk-pad {
display: none !important;
position: absolute;
left: 0.85rem;
bottom: 0.85rem;
z-index: 12;
pointer-events: none;
}
#aether-walk-pad.visible {
display: none !important;
}
#aether-walk-pad.visible.explore-only {
display: block !important;
}
#aether-walk-pad.controls-hidden {
display: none !important;
}
#aether-walk-pad .awp-pad {
display: grid;
grid-template-columns: 2.4rem 2.4rem 2.4rem;
gap: 0.2rem;
pointer-events: auto;
}
#aether-walk-pad .awp-spacer { visibility: hidden; }
#aether-walk-pad .awp-btn {
width: 2.4rem;
height: 2.4rem;
border-radius: 8px;
border: 1px solid rgba(212, 168, 75, 0.4);
background: rgba(8, 12, 10, 0.82);
color: #f0d9a0;
font-family: 'Cinzel', serif;
font-size: 0.75rem;
font-weight: 600;
cursor: pointer;
touch-action: none;
user-select: none;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
}
#aether-walk-pad .awp-btn.pressed,
#aether-walk-pad .awp-btn:active {
background: rgba(212, 168, 75, 0.35);
color: #fff8e8;
}
.diorama-empty {
text-align: center;
padding: 2.5rem 1.5rem;
border: 1px dashed var(--realm-border);
border-radius: 12px;
margin: 1.25rem 0;
}
.diorama-empty-title {
font-family: 'Cinzel', serif;
color: var(--realm-accent-gold);
font-size: 1.1rem;
margin: 0 0 0.5rem;
}
.diorama-empty-text {
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
max-width: 520px;
margin: 0 auto;
line-height: 1.65;
}
.realm-map .location-node { cursor: pointer; }
/* Explore / step-inside experience */
.explore-intro { margin-bottom: 0.75rem; }
.places-gallery, .souls-gallery {
border: none !important;
background: transparent !important;
}
.places-gallery .grid-wrap, .souls-gallery .grid-wrap { background: transparent !important; }
.places-gallery button.thumbnail-item img,
.souls-gallery button.thumbnail-item img {
border-radius: 12px;
transition: transform 0.25s, box-shadow 0.25s;
}
.places-gallery button.thumbnail-item:hover img,
.souls-gallery button.thumbnail-item:hover img {
transform: scale(1.03);
box-shadow: 0 10px 30px rgba(0,0,0,0.5), 0 0 22px rgba(212,168,75,0.18);
}
.room-empty {
text-align: center;
padding: 3rem 1.5rem;
border: 1px dashed var(--realm-border);
border-radius: 12px;
background: linear-gradient(135deg, rgba(42,74,58,0.12), rgba(28,48,36,0.2));
margin: 1.25rem 0;
}
.room-empty-title {
font-family: 'Cinzel', serif;
color: var(--realm-accent-gold);
font-size: 1.1rem;
letter-spacing: 0.08em;
margin: 0 0 0.5rem;
}
.room-empty-text {
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
max-width: 520px;
margin: 0 auto;
line-height: 1.6;
}
.room-view {
margin: 1.5rem 0 1rem;
border: 1px solid var(--realm-border-strong);
border-radius: 14px;
overflow: hidden;
background: var(--realm-bg-secondary);
box-shadow: 0 14px 44px rgba(0,0,0,0.5);
animation: fade-in-scale 0.5s ease-out;
}
.room-hero {
position: relative;
min-height: 300px;
background-color: var(--realm-bg-tertiary);
background-size: cover;
background-position: center;
display: flex;
align-items: flex-end;
}
.room-hero-scrim {
position: absolute;
inset: 0;
background: linear-gradient(transparent 20%, rgba(10,18,12,0.7) 60%, rgba(10,18,12,0.97));
}
.room-hero-text {
position: relative;
z-index: 1;
padding: 1.75rem;
}
.room-eyebrow {
font-family: 'Cinzel', serif;
font-size: 0.7rem;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--realm-accent-gold);
margin: 0 0 0.4rem;
}
.room-name {
font-family: 'Cinzel', serif;
color: #f4ecd4;
font-size: 1.9rem;
margin: 0 0 0.5rem;
text-shadow: 0 2px 18px rgba(0,0,0,0.9);
}
.room-ambience {
font-family: 'EB Garamond', serif;
font-style: italic;
color: #e0d8c0;
font-size: 1.05rem;
margin: 0;
max-width: 640px;
text-shadow: 0 1px 8px rgba(0,0,0,0.8);
}
.room-body { padding: 1.5rem 1.75rem; }
.room-lore {
font-family: 'EB Garamond', serif;
color: var(--realm-text-primary);
line-height: 1.7;
font-size: 1rem;
margin: 0.75rem 0;
}
.room-special {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-accent-gold);
font-size: 0.9rem;
margin: 0.5rem 0 1rem;
opacity: 0.9;
}
.room-count {
font-family: 'Cinzel', serif;
font-size: 0.78rem;
letter-spacing: 0.06em;
text-transform: uppercase;
color: var(--realm-accent-ember);
margin: 0;
}
/* How it works explainer */
.how-it-works p {
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
line-height: 1.65;
margin: 0.4rem 0;
}
.how-it-works b { color: var(--realm-accent-gold); }
/* Bonds on entity card */
.bond-list, .encounter-list {
list-style: none;
padding: 0;
margin: 0.5rem 0 0;
}
.bond-item, .encounter-item {
padding: 0.55rem 0;
border-bottom: 1px solid var(--realm-border);
font-family: 'EB Garamond', serif;
font-size: 0.92rem;
color: var(--realm-text-secondary);
}
.bond-partner { color: var(--realm-accent-gold); font-family: 'Cinzel', serif; }
.bond-type {
font-size: 0.68rem;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--realm-accent-violet);
margin-left: 0.35rem;
}
.bond-strength { color: var(--realm-accent-gold); margin-left: 0.35rem; letter-spacing: 0.1em; }
.bond-desc { margin: 0.25rem 0 0; font-style: italic; font-size: 0.88rem; }
.enc-day { color: var(--realm-accent-gold); font-size: 0.75rem; margin-right: 0.35rem; }
/* Relationship graph */
.rel-graph-wrap { margin: 1rem 0; }
.rel-graph-desc {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-text-secondary);
margin-bottom: 0.75rem;
}
.rel-graph-svg {
width: 100%;
border: 1px solid var(--realm-border-strong);
border-radius: 12px;
margin-bottom: 0.75rem;
background: linear-gradient(180deg, #faf1dc, #ead9b3) !important;
box-shadow: inset 0 0 24px rgba(161,124,74,0.08), 0 12px 28px rgba(94,66,38,0.18);
}
.rel-legend { display: flex; flex-wrap: wrap; gap: 0.65rem; margin-bottom: 0.75rem; }
.rel-legend-item {
font-size: 0.72rem;
color: var(--realm-text-tertiary);
display: flex;
align-items: center;
gap: 0.35rem;
}
.rel-legend-item i {
display: inline-block;
width: 10px;
height: 10px;
border-radius: 50%;
}
.rel-node-label {
fill: #3a2a1a;
font-size: 11px;
font-family: Georgia, serif;
pointer-events: none;
paint-order: stroke;
stroke: rgba(248, 239, 217, 0.92);
stroke-width: 4px;
}
.rel-edge {
pointer-events: none;
filter: drop-shadow(0 1px 1px rgba(80,60,32,0.12));
}
.rel-list {
font-family: 'EB Garamond', serif;
color: var(--realm-text-secondary);
font-size: 0.9rem;
line-height: 1.55;
padding-left: 1.1rem;
}
/* Valley dream panel */
.valley-dream-panel {
padding: 1rem 1.25rem;
background: linear-gradient(180deg, rgba(12,20,16,0.9), rgba(8,16,12,0.95));
border-top: 1px solid rgba(95,120,100,0.25);
}
.valley-dream-label {
font-family: 'Cinzel', serif;
font-size: 0.68rem;
letter-spacing: 0.14em;
text-transform: uppercase;
color: #7d9a84;
margin: 0 0 0.4rem;
}
.valley-dream-text {
font-family: 'EB Garamond', serif;
font-style: italic;
color: #b8c8b8;
margin: 0;
line-height: 1.6;
}
/* Location panel slide-in */
.location-panel-animate {
transform: translateX(24px);
opacity: 0;
transition: transform 0.45s ease, opacity 0.45s ease;
}
.location-panel-animate.open {
transform: translateX(0);
opacity: 1;
}
/* Oracle cold-start rotating lines */
.oracle-wait-lines {
position: relative;
min-height: 2.5rem;
margin-top: 0.5rem;
}
.oracle-wait-lines p {
font-family: 'EB Garamond', serif;
font-style: italic;
color: var(--realm-text-tertiary);
font-size: 0.88rem;
margin: 0;
position: absolute;
left: 0;
right: 0;
opacity: 0;
animation: oracle-cycle 12s infinite;
}
.oracle-wait-lines p:nth-child(1) { animation-delay: 0s; }
.oracle-wait-lines p:nth-child(2) { animation-delay: 4s; }
.oracle-wait-lines p:nth-child(3) { animation-delay: 8s; }
@keyframes oracle-cycle {
0%, 26% { opacity: 0.9; }
33%, 100% { opacity: 0; }
}
/* Responsive */
@media (max-width: 768px) {
.realm-title { font-size: 1.5rem; }
.room-name { font-size: 1.4rem; }
.room-hero { min-height: 220px; }
.entity-grid { grid-template-columns: 1fr; }
.featured-grid { grid-template-columns: 1fr; }
.loc-grid { grid-template-columns: 1fr; }
.featured-card { flex-direction: column; align-items: center; text-align: center; }
.entity-card-top { flex-direction: column; align-items: center; text-align: center; }
.hero-pillars { justify-content: center; }
.hero-stats { justify-content: center; }
.diorama-frame { height: min(58vh, 480px); min-height: 360px; }
.pulse-card { flex: 0 0 min(240px, 88vw); }
.rel-graph-svg { height: auto; }
.location-panel-animate {
transform: translateY(20px);
}
.location-panel-animate.open {
transform: translateY(0);
}
.sidebar-panel { margin-top: 1rem; }
}
/* ── Live tick result ── */
.tick-result {
padding: 0.85rem 1rem;
background: linear-gradient(135deg, rgba(20,34,24,0.9), rgba(12,20,16,0.9));
border: 1px solid rgba(212,168,75,0.28);
border-radius: 10px;
margin-top: 0.5rem;
}
.tick-title { color: #d4a84b; font-size: 0.92rem; font-family: 'Cinzel', serif; margin-bottom: 0.3rem; }
.tick-body { color: #a8a090; font-size: 0.82rem; line-height: 1.5; font-style: italic; }
/* ── Presence bar ── */
.presence-bar {
display: flex; flex-wrap: wrap; gap: 0.5rem 1rem;
padding: 0.4rem 1rem; font-size: 0.75rem;
background: rgba(212,168,75,0.05); border-bottom: 1px solid rgba(212,168,75,0.12);
color: var(--realm-text-tertiary); font-family: 'EB Garamond', serif; font-style: italic;
}
.presence-count { color: var(--realm-accent-gold); }
.presence-arrivals{ color: var(--realm-text-secondary); }
/* 2026 game-shell refresh */
:root {
--realm-bg-primary: #070908;
--realm-bg-secondary: #101714;
--realm-bg-tertiary: #17231d;
--realm-surface: rgba(18, 24, 22, 0.82);
--realm-surface-strong: rgba(24, 33, 29, 0.94);
--realm-text-primary: #f5efe1;
--realm-text-secondary: #c7beaa;
--realm-text-tertiary: #899284;
--realm-accent-gold: #e3b85d;
--realm-accent-violet: #a98add;
--realm-accent-ember: #ef835d;
--realm-accent-teal: #6ec9bc;
--realm-border: rgba(227, 184, 93, 0.16);
--realm-border-strong: rgba(227, 184, 93, 0.38);
}
body,
.gradio-container {
background:
linear-gradient(180deg, #1a110b 0%, #0f0906 52%, #090605 100%) !important;
color: var(--realm-text-primary) !important;
}
.gradio-container {
max-width: 1480px !important;
padding: 1rem 1.25rem 2rem !important;
}
.gradio-container button,
.gradio-container .gr-button {
border-radius: 8px !important;
border: 1px solid var(--realm-border-strong) !important;
background: linear-gradient(180deg, rgba(227,184,93,0.18), rgba(227,184,93,0.08)) !important;
color: var(--realm-text-primary) !important;
box-shadow: 0 10px 26px rgba(0,0,0,0.28) !important;
transition: transform 0.18s ease, border-color 0.18s ease, background 0.18s ease !important;
}
.gradio-container button:hover,
.gradio-container .gr-button:hover {
transform: translateY(-1px);
border-color: rgba(227,184,93,0.64) !important;
background: linear-gradient(180deg, rgba(227,184,93,0.28), rgba(239,131,93,0.12)) !important;
}
.gradio-container textarea,
.gradio-container input,
.gradio-container select {
border-radius: 8px !important;
border-color: rgba(227,184,93,0.22) !important;
background: rgba(7,9,8,0.72) !important;
color: var(--realm-text-primary) !important;
}
.gradio-container textarea:focus,
.gradio-container input:focus {
border-color: rgba(110,201,188,0.66) !important;
box-shadow: 0 0 0 2px rgba(110,201,188,0.16) !important;
}
.realm-header-wrap {
display: block;
margin-bottom: 1rem;
}
.hero-banner {
border-radius: 8px;
border-color: rgba(227,184,93,0.28);
box-shadow:
0 22px 70px rgba(0,0,0,0.52),
0 0 0 1px rgba(255,255,255,0.03) inset;
}
.hero-statusbar,
.diorama-header,
.realm-pulse,
.current-event,
.location-panel,
.book-container,
.entity-card,
.room-view,
.summon-section,
.world-vignette,
.featured-card,
.entity-grid-card,
.pulse-card {
background:
linear-gradient(180deg, rgba(255,255,255,0.035), rgba(255,255,255,0)),
var(--realm-surface) !important;
border-color: var(--realm-border) !important;
border-radius: 8px !important;
box-shadow: 0 12px 36px rgba(0,0,0,0.28);
}
.realm-tabs {
position: sticky;
top: 0;
z-index: 15;
background: rgba(7,9,8,0.84);
backdrop-filter: blur(14px);
border: 1px solid rgba(227,184,93,0.10) !important;
border-radius: 8px;
padding: 0.25rem;
margin-bottom: 1rem;
}
.realm-tabs button {
border-radius: 6px !important;
min-height: 2.35rem !important;
letter-spacing: 0.08em !important;
}
.realm-tabs button.selected {
background: rgba(227,184,93,0.14) !important;
border-bottom: none !important;
box-shadow: inset 0 0 0 1px rgba(227,184,93,0.22) !important;
}
.presence-bar {
position: sticky;
top: 0;
z-index: 20;
justify-content: center;
border: 1px solid rgba(110,201,188,0.18);
border-radius: 999px;
margin: 0.2rem auto 0.75rem;
max-width: 820px;
background: rgba(7,9,8,0.74);
backdrop-filter: blur(12px);
}
.realm-map {
border-radius: 8px;
border-color: rgba(227,184,93,0.34);
box-shadow:
0 24px 80px rgba(0,0,0,0.34),
inset 0 0 70px rgba(110,201,188,0.08);
}
.location-node {
filter: drop-shadow(0 7px 12px rgba(0,0,0,0.36));
cursor: pointer;
pointer-events: all;
}
.location-node .location-hit {
pointer-events: all;
}
.location-selected .location-circle {
stroke: var(--realm-accent-teal) !important;
}
.diorama-wrap {
border-radius: 8px;
border-color: rgba(110,201,188,0.24);
box-shadow:
0 24px 76px rgba(0,0,0,0.48),
0 0 0 1px rgba(255,255,255,0.025) inset;
}
.diorama-frame {
height: min(82vh, 760px);
min-height: 620px;
}
.diorama-label,
.section-title,
.summon-title,
.event-label,
.pulse-title,
.book-title,
.location-panel-special {
color: var(--realm-accent-gold) !important;
}
.section-desc,
.diorama-hint,
.summon-hint {
color: var(--realm-text-tertiary) !important;
}
.featured-card:hover,
.entity-grid-card:hover,
.loc-card:hover {
border-color: rgba(110,201,188,0.42) !important;
box-shadow: 0 18px 48px rgba(0,0,0,0.46), 0 0 28px rgba(110,201,188,0.10);
}
.loc-card,
.places-gallery button.thumbnail-item img,
.souls-gallery button.thumbnail-item img {
border-radius: 8px;
}
.oracle-summoning {
border-radius: 8px;
background:
radial-gradient(circle at 50% 0%, rgba(110,201,188,0.14), transparent 42%),
radial-gradient(circle at 70% 20%, rgba(169,138,221,0.12), transparent 36%),
rgba(12,18,16,0.88);
}
.tick-result {
border-radius: 8px;
background:
linear-gradient(135deg, rgba(110,201,188,0.12), rgba(227,184,93,0.07)),
rgba(12,18,16,0.9);
}
@media (max-width: 768px) {
.gradio-container {
padding: 0.75rem !important;
}
.realm-tabs {
position: relative;
}
.presence-bar {
position: relative;
border-radius: 8px;
}
.diorama-frame {
height: min(64vh, 520px);
min-height: 390px;
}
.diorama-wrap::before,
.diorama-wrap::after {
display: none;
}
}
/* ── Premium glassmorphism & polish ── */
.entity-card,
.current-event,
.book-container,
.location-panel,
.realm-pulse,
.world-vignette,
.featured-card {
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
box-shadow:
0 12px 40px rgba(0,0,0,0.35),
inset 0 1px 0 rgba(255,255,255,0.05);
}
.section-title,
.book-title,
.pulse-title,
.event-label,
.summon-title {
background: linear-gradient(90deg, #d4a84b, #f0d9a0, #d4a84b);
background-size: 200% auto;
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
animation: titleShimmer 6s linear infinite;
}
@keyframes titleShimmer {
to { background-position: 200% center; }
}
.entity-card,
.pulse-card,
.featured-card {
animation: cardEntrance 0.55s ease-out both;
}
@keyframes cardEntrance {
from { opacity: 0; transform: translateY(12px); }
to { opacity: 1; transform: translateY(0); }
}
.gradio-container button.primary,
.gradio-container button[class*="primary"],
.gradio-container .primary {
background: linear-gradient(135deg, rgba(212,168,75,0.25), rgba(212,168,75,0.12)) !important;
border: 1px solid rgba(212,168,75,0.45) !important;
color: #f0d9a0 !important;
transition: box-shadow 0.25s, transform 0.2s, background 0.25s !important;
}
.gradio-container button.primary:hover,
.gradio-container button[class*="primary"]:hover {
box-shadow: 0 0 24px rgba(212,168,75,0.28) !important;
transform: translateY(-1px);
}
.gradio-container button,
.gradio-container .tab-nav button {
transition: box-shadow 0.2s, border-color 0.2s !important;
}
.gradio-container button:hover {
border-color: rgba(212,168,75,0.35) !important;
}
.gradio-container input,
.gradio-container textarea,
.gradio-container select {
background: rgba(12,20,16,0.85) !important;
border-color: var(--realm-glass-border) !important;
line-height: var(--realm-line-height) !important;
}
.book-container,
.entity-detail-wrap {
scroll-behavior: smooth;
}
.skeleton-pulse {
background: linear-gradient(90deg, rgba(42,74,58,0.3) 25%, rgba(58,90,68,0.45) 50%, rgba(42,74,58,0.3) 75%);
background-size: 200% 100%;
animation: skeletonShimmer 1.5s ease-in-out infinite;
border-radius: 8px;
min-height: 1.2rem;
}
@keyframes skeletonShimmer {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
body, .gradio-container {
line-height: var(--realm-line-height);
letter-spacing: var(--realm-letter-spacing);
}
.section-divider {
height: 1px;
margin: 2rem 0;
background: linear-gradient(90deg, transparent, var(--realm-border-strong), transparent);
}
/* -------------------------------------------------------------------------- */
/* Living Tome redesign overrides */
/* -------------------------------------------------------------------------- */
:root {
--tome-paper: #f3e6c8;
--tome-paper-shadow: #d8c69e;
--tome-paper-edge: #c2a877;
--tome-ink: #3a2a1a;
--tome-ink-faded: #6b5638;
--tome-ink-red: #7a2e1d;
--tome-leather: #4a2c1a;
--tome-leather-light: #6b4226;
--tome-leather-dark: #2e1a10;
--tome-binding: #8a6a3a;
--tome-gold: #c9a13b;
--tome-gold-bright: #e8c873;
--tome-gold-dark: #8a6c24;
--tome-bronze: #a3713c;
--tome-shadow: rgba(40, 25, 10, 0.45);
--tome-glow: rgba(232, 200, 115, 0.35);
--tome-overlay: rgba(58, 42, 26, 0.06);
}
body,
.gradio-container {
color: var(--tome-ink) !important;
background: linear-gradient(180deg, #c5a271 0%, #b68f5f 100%) !important;
}
.gradio-container {
--body-background-fill: #f6ebd3;
--background-fill-primary: #fbf3df;
--background-fill-secondary: #f2e3c2;
--block-background-fill: #fbf1dc;
--block-border-color: rgba(138, 106, 58, 0.28);
--border-color-primary: rgba(138, 106, 58, 0.28);
--body-text-color: var(--tome-ink);
--body-text-color-subdued: var(--tome-ink-faded);
--block-label-text-color: var(--tome-ink);
--input-background-fill: #fff8ea;
--input-border-color: rgba(138, 106, 58, 0.35);
--button-secondary-background-fill: #efdec0;
--button-secondary-border-color: rgba(138, 106, 58, 0.32);
--checkbox-label-background-fill: #f4e4c2;
}
.realm-tabs {
background: transparent !important;
border: 0 !important;
}
.realm-tabs button,
.realm-tabs [role="tablist"] {
display: none !important;
}
.realm-tabs [role="tabpanel"] {
margin: 0 auto;
max-width: 1380px;
min-height: 70vh;
border: 1px solid var(--tome-paper-edge) !important;
border-radius: 18px !important;
padding: 1.2rem 1.25rem 2.2rem;
color: var(--tome-ink) !important;
background:
radial-gradient(circle at 8% 14%, rgba(255,255,255,0.42), transparent 28%),
radial-gradient(circle at 92% 18%, rgba(255,255,255,0.3), transparent 24%),
linear-gradient(90deg,
#f9efd8 0%,
#f5e8ca 44.8%,
#e7d2aa 48.6%,
#b39263 49.5%,
#8e6840 50%,
#b39263 50.5%,
#e7d2aa 51.4%,
#f5e8ca 55.2%,
#faf1db 100%) !important;
box-shadow:
0 18px 38px rgba(76, 50, 22, 0.26),
inset 0 0 0 2px rgba(255, 247, 224, 0.58),
inset 18px 0 26px rgba(161, 124, 74, 0.12),
inset -18px 0 26px rgba(161, 124, 74, 0.12),
inset 0 -18px 36px rgba(168, 134, 83, 0.14);
position: relative;
overflow: hidden;
}
.realm-tabs [role="tabpanel"]::before {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
background:
linear-gradient(90deg, transparent 0 46.5%, rgba(255,255,255,0.16) 47.8%, transparent 49%),
linear-gradient(90deg, transparent 51%, rgba(255,255,255,0.16) 52.2%, transparent 53.5%),
radial-gradient(circle at 12% 18%, rgba(113, 82, 42, 0.06) 0 2px, transparent 2px),
radial-gradient(circle at 70% 74%, rgba(113, 82, 42, 0.05) 0 1.5px, transparent 1.5px);
opacity: 0.42;
}
.realm-tabs [role="tabpanel"]::after {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: 50%;
width: 112px;
transform: translateX(-50%);
pointer-events: none;
background:
radial-gradient(ellipse at center, rgba(92, 63, 33, 0.16) 0%, rgba(92, 63, 33, 0.08) 28%, rgba(255, 244, 221, 0) 74%);
opacity: 0.88;
}
.gradio-container .section-title,
.gradio-container .book-title,
.gradio-container .diorama-place-name,
.gradio-container .room-name,
.gradio-container .entity-name,
.gradio-container .loc-card-name {
color: var(--tome-ink) !important;
font-family: 'Cinzel Decorative', 'Cinzel', serif !important;
text-shadow: none !important;
}
.gradio-container .section-desc,
.gradio-container .vignette-text,
.gradio-container .feed-content,
.gradio-container .entry-content,
.gradio-container .entity-appearance,
.gradio-container .room-lore,
.gradio-container .pulse-detail,
.gradio-container p,
.gradio-container li,
.gradio-container label {
color: var(--tome-ink) !important;
}
.gradio-container .world-vignette,
.gradio-container .current-event,
.gradio-container .pulse-card,
.gradio-container .entity-card,
.gradio-container .book-container,
.gradio-container .location-panel,
.gradio-container .featured-card,
.gradio-container .entity-grid-card,
.gradio-container .room-view,
.gradio-container .diorama-wrap {
background:
linear-gradient(180deg, rgba(255,255,255,0.28), rgba(255,255,255,0.02)),
linear-gradient(180deg, #f6ead0, #ecdbb8) !important;
border-color: var(--tome-paper-edge) !important;
box-shadow: 0 14px 35px rgba(78, 55, 26, 0.24) !important;
}
.grid-card-scrim,
.featured-card-scrim,
.location-panel-scrim,
.room-hero-scrim,
.entity-card-banner-scrim {
display: none !important;
}
.featured-card,
.entity-grid-card,
.location-panel-banner,
.room-hero,
.entity-card-banner {
background-blend-mode: screen !important;
}
.gradio-container .hero-statusbar,
.gradio-container .diorama-header,
.gradio-container .realm-pulse {
background: linear-gradient(180deg, #ecd8af, #e2c89a) !important;
}
.location-circle,
.pulse-title,
.event-label,
.section-label,
.room-eyebrow,
.oracle-title,
.vignette-label,
.entity-type,
.entity-status,
.book-day-header,
.entry-type-badge {
color: var(--tome-gold-dark) !important;
}
#tome-nav {
position: fixed;
inset: auto 0 1.2rem 0;
z-index: 2100;
pointer-events: none;
}
#presence-bar:empty {
display: none !important;
}
.tome-corner,
.tome-ribbon,
.tome-page-indicator,
.tome-jump-select {
pointer-events: auto;
}
.tome-corner {
position: fixed;
bottom: 2rem;
width: 54px;
height: 54px;
border: 1px solid var(--tome-gold-dark);
border-radius: 12px;
background: linear-gradient(180deg, #f4dfb0, #d2ae63);
color: var(--tome-ink);
font-size: 1.1rem;
cursor: pointer;
box-shadow: 0 10px 24px rgba(26, 14, 6, 0.3);
}
.tome-corner-left { left: 1.2rem; bottom: 5.5rem; }
.tome-corner-right { right: 1.2rem; }
.tome-ribbon {
position: fixed;
top: 0.2rem;
right: 4.2rem;
padding: 0.45rem 0.85rem 0.65rem;
border: 1px solid #7f1622;
border-radius: 0 0 8px 8px;
background: linear-gradient(180deg, #b22a3b, #7e1723);
color: #fff5e0;
font-family: 'IM Fell English', serif;
font-size: 0.76rem;
letter-spacing: 0.04em;
cursor: pointer;
}
.tome-page-indicator {
position: fixed;
left: 50%;
bottom: 1rem;
transform: translateX(-50%);
padding: 0.22rem 0.62rem;
border-radius: 999px;
background: rgba(243,230,200,0.84);
border: 1px solid var(--tome-paper-edge);
color: var(--tome-ink-faded);
font-family: 'IM Fell English', serif;
font-size: 0.78rem;
}
.tome-floating-toc {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: min(720px, 88vw);
display: grid;
opacity: 0;
visibility: hidden;
pointer-events: none;
padding: 1rem;
border: 1px solid var(--tome-paper-edge);
border-radius: 18px;
background: rgba(247, 237, 212, 0.96);
box-shadow: 0 16px 34px rgba(28, 16, 8, 0.35);
z-index: 2102;
}
.tome-floating-toc.open {
opacity: 1;
visibility: visible;
pointer-events: auto;
gap: 0.55rem;
}
.tome-floating-toc::before {
content: "Table of Contents";
display: block;
text-align: center;
font-family: 'Cinzel Decorative', 'Cinzel', serif;
font-size: clamp(1.2rem, 3vw, 2rem);
color: var(--tome-ink);
margin-bottom: 0.25rem;
}
.tome-floating-link {
text-align: center;
border: 1px solid #d8c59f;
border-radius: 12px;
padding: 0.65rem 0.7rem;
background: #fff8ea;
color: var(--tome-ink);
font-family: 'Cormorant Garamond', serif;
font-size: 1rem;
cursor: pointer;
}
.tome-floating-link:hover {
background: #f2e1ba;
}
.tome-jump-select {
position: fixed;
left: -9999px;
}
.sr-only {
position: absolute !important;
width: 1px !important;
height: 1px !important;
padding: 0 !important;
margin: -1px !important;
overflow: hidden !important;
clip: rect(0, 0, 0, 0) !important;
border: 0 !important;
}
.realm-opening {
background: transparent;
}
.realm-opening-glitter {
position: absolute;
inset: 0;
pointer-events: none;
}
.realm-opening-glitter span {
position: absolute;
width: 8px;
height: 8px;
border-radius: 999px;
background: radial-gradient(circle, rgba(232, 196, 112, 0.95) 0%, rgba(194, 148, 58, 0.34) 55%, transparent 72%);
filter: drop-shadow(0 0 7px rgba(194, 148, 58, 0.35));
animation: floatSpark 6.5s linear infinite;
}
.realm-opening-glitter span:nth-child(1) { left: 9%; top: 18%; animation-delay: 0s; }
.realm-opening-glitter span:nth-child(2) { left: 16%; top: 32%; animation-delay: 1.2s; }
.realm-opening-glitter span:nth-child(3) { left: 23%; top: 14%; animation-delay: 2.1s; }
.realm-opening-glitter span:nth-child(4) { left: 74%; top: 20%; animation-delay: 0.7s; }
.realm-opening-glitter span:nth-child(5) { left: 81%; top: 30%; animation-delay: 2.4s; }
.realm-opening-glitter span:nth-child(6) { left: 67%; top: 13%; animation-delay: 3s; }
.realm-opening-glitter span:nth-child(7) { left: 12%; top: 65%; animation-delay: 1.4s; }
.realm-opening-glitter span:nth-child(8) { left: 24%; top: 72%; animation-delay: 3.3s; }
.realm-opening-glitter span:nth-child(9) { left: 37%; top: 61%; animation-delay: 4.2s; }
.realm-opening-glitter span:nth-child(10) { left: 63%; top: 68%; animation-delay: 1.9s; }
.realm-opening-glitter span:nth-child(11) { left: 78%; top: 74%; animation-delay: 4.7s; }
.realm-opening-glitter span:nth-child(12) { left: 88%; top: 58%; animation-delay: 2.9s; }
.realm-cover-card,
.realm-toc-card {
position: relative;
z-index: 2;
width: min(760px, 94vw);
text-align: center;
border-radius: 18px;
border: 1px solid rgba(201,161,59,0.44);
box-shadow: 0 30px 100px rgba(0,0,0,0.58);
}
.realm-cover-card {
padding: clamp(2rem, 5vh, 3rem) clamp(1.6rem, 4vw, 2.6rem);
background:
radial-gradient(circle at 25% 15%, rgba(255,240,198,0.12), transparent 28%),
linear-gradient(150deg, var(--tome-leather-light), var(--tome-leather), var(--tome-leather-dark));
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: min(380px, 58vh);
}
.realm-cover-kicker {
margin: 0;
color: #ead7a4;
font-family: 'IM Fell English', serif;
letter-spacing: 0.08em;
}
.realm-cover-title {
margin: 0.6rem 0;
color: #f8e4a8 !important;
font-family: 'Cinzel Decorative', 'Cinzel', serif;
font-size: clamp(1.5rem, 6vw, 3rem);
letter-spacing: 0.16em;
word-spacing: 0.12em;
display: flex;
flex-direction: column;
gap: 0.18em;
align-items: center;
line-height: 0.95;
text-shadow:
0 2px 4px rgba(0, 0, 0, 0.65),
0 1px 0 rgba(255, 248, 220, 0.45);
}
.realm-cover-title span {
display: inline-block;
white-space: nowrap;
color: #f8e4a8 !important;
-webkit-text-fill-color: #f8e4a8;
background: transparent;
letter-spacing: inherit;
clip-path: inset(0 100% 0 0);
animation: revealSigil 1.8s steps(18, end) forwards;
}
.realm-cover-title span:nth-child(2) {
animation-delay: 0.45s;
}
.realm-cover-calligraphy {
position: absolute;
inset: auto 12% 16% 12%;
height: 160px;
pointer-events: none;
background:
linear-gradient(90deg, transparent 0 17%, rgba(232, 200, 115, 0.1) 17.2% 18%, transparent 18.2% 82%, rgba(232, 200, 115, 0.1) 82.2% 83%, transparent 83.2%),
linear-gradient(36deg, transparent 0 21%, rgba(232, 200, 115, 0.1) 21.5% 22.8%, transparent 23.2%),
linear-gradient(-36deg, transparent 0 21%, rgba(232, 200, 115, 0.1) 21.5% 22.8%, transparent 23.2%),
linear-gradient(-36deg, transparent 76.8%, rgba(232, 200, 115, 0.1) 77.2% 78.5%, transparent 79%),
linear-gradient(36deg, transparent 76.8%, rgba(232, 200, 115, 0.1) 77.2% 78.5%, transparent 79%);
opacity: 0.14;
filter: blur(0.2px);
}
.realm-cover-sub {
color: #d2b97b;
margin: 0 0 1rem;
font-style: italic;
}
#realm-opening-enter {
border: 1px solid var(--tome-gold-dark);
border-radius: 999px;
background: linear-gradient(180deg, #f0d696, #bb8e33);
color: #2d1a0c;
padding: 0.6rem 1rem;
font-family: 'Cinzel', serif;
text-transform: uppercase;
letter-spacing: 0.1em;
cursor: pointer;
}
.realm-toc-card {
display: none;
margin-top: 1rem;
padding: 1.1rem;
background: linear-gradient(180deg, #f4e7c6, #ead7af);
color: var(--tome-ink);
}
.realm-toc-card.open {
display: block;
}
.realm-toc-card h2 {
margin-top: 0;
font-family: 'Cinzel Decorative', 'Cinzel', serif;
}
.realm-toc-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 0.55rem;
}
.realm-toc-link {
border: 1px solid var(--tome-paper-edge);
border-radius: 8px;
padding: 0.5rem 0.6rem;
background: rgba(255, 250, 236, 0.85);
color: var(--tome-ink);
font-family: 'Cormorant Garamond', serif;
cursor: pointer;
}
.realm-opening.is-opened .realm-cover-card {
transform: translateY(-10px) scale(0.98);
opacity: 0;
pointer-events: none;
transition: opacity 0.45s ease, transform 0.45s ease;
}
.realm-opening.is-opened .realm-toc-card {
pointer-events: auto;
}
.realm-opening.is-closed {
opacity: 0;
visibility: hidden;
pointer-events: none;
transition: opacity 0.6s ease;
}
.seal-summon-btn {
border-radius: 999px !important;
min-width: 170px;
background: radial-gradient(circle at 30% 26%, #d23c46, #8d1f2b) !important;
border: 2px solid #f2d8a0 !important;
color: #fff6de !important;
font-family: 'Cinzel Decorative', 'Cinzel', serif !important;
}
.oracle-summoning {
background:
radial-gradient(circle at 24% 32%, rgba(58,42,26,0.09), transparent 35%),
radial-gradient(circle at 74% 58%, rgba(58,42,26,0.1), transparent 40%),
linear-gradient(180deg, #f2e4c0, #e6d1a1) !important;
}
.oracle-orbit,
.oracle-ring,
.oracle-core {
display: none !important;
}
.oracle-summoning::before,
.oracle-summoning::after {
content: "";
position: absolute;
border-radius: 50%;
pointer-events: none;
animation: inkBloom 3.8s ease-in-out infinite;
}
.oracle-summoning::before {
width: 180px;
height: 180px;
left: 10%;
top: 20%;
background: radial-gradient(circle, rgba(58,42,26,0.2), transparent 68%);
}
.oracle-summoning::after {
width: 210px;
height: 210px;
right: 8%;
bottom: 8%;
background: radial-gradient(circle, rgba(122,46,29,0.18), transparent 70%);
animation-delay: 1.1s;
}
@keyframes inkBloom {
0%, 100% { transform: scale(0.84); opacity: 0.38; }
50% { transform: scale(1.15); opacity: 0.7; }
}
.tome-turn-next .realm-tabs [role="tabpanel"] {
animation: pageTurnNext 0.72s cubic-bezier(0.45, 0, 0.55, 1);
}
.tome-turn-prev .realm-tabs [role="tabpanel"] {
animation: pageTurnPrev 0.72s cubic-bezier(0.45, 0, 0.55, 1);
}
@keyframes pageTurnNext {
0% { opacity: 0.92; transform: perspective(1800px) translateX(16px) rotateY(8deg) scale(0.99); transform-origin: left center; }
55% { opacity: 1; transform: perspective(1800px) translateX(-6px) rotateY(-2deg) scale(1); transform-origin: left center; }
100% { opacity: 1; transform: perspective(1800px) translateX(0) rotateY(0deg) scale(1); }
}
@keyframes pageTurnPrev {
0% { opacity: 0.92; transform: perspective(1800px) translateX(-16px) rotateY(-8deg) scale(0.99); transform-origin: right center; }
55% { opacity: 1; transform: perspective(1800px) translateX(6px) rotateY(2deg) scale(1); transform-origin: right center; }
100% { opacity: 1; transform: perspective(1800px) translateX(0) rotateY(0deg) scale(1); }
}
@media (max-width: 920px) {
.realm-tabs [role="tabpanel"]::after {
display: none;
}
.realm-toc-grid {
grid-template-columns: 1fr;
}
.tome-corner {
width: 46px;
height: 46px;
bottom: 1rem;
}
.tome-ribbon {
right: 1rem;
top: 0;
font-size: 0.7rem;
}
}
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation: none !important;
transition: none !important;
scroll-behavior: auto !important;
}
}
/* Mystical opening gate */
.realm-opening {
position: fixed;
inset: 0;
z-index: 9999;
display: grid;
place-items: center;
padding: 1.25rem;
transition: opacity 0.9s ease, visibility 0.9s ease;
}
.realm-opening.is-closed {
opacity: 0;
visibility: hidden;
pointer-events: none;
}
.realm-opening-backdrop {
position: absolute;
inset: 0;
background:
radial-gradient(circle at 26% 14%, rgba(201, 161, 59, 0.1), transparent 34%),
radial-gradient(circle at 82% 22%, rgba(138, 106, 58, 0.12), transparent 34%),
linear-gradient(180deg, #140d09 0%, #0b0605 100%);
}
.realm-opening-stars {
position: absolute;
inset: 0;
background-image:
radial-gradient(circle at 13% 22%, rgba(227,184,93,0.75) 0 1.3px, transparent 1.7px),
radial-gradient(circle at 69% 37%, rgba(227,184,93,0.55) 0 1.2px, transparent 1.6px),
radial-gradient(circle at 83% 65%, rgba(227,184,93,0.52) 0 1.4px, transparent 1.8px),
radial-gradient(circle at 30% 72%, rgba(194,168,119,0.45) 0 1.2px, transparent 1.8px);
opacity: 0.5;
animation: openingStars 8s ease-in-out infinite alternate;
}
.realm-opening-card {
position: relative;
z-index: 1;
width: min(820px, 94vw);
border-radius: 18px;
border: 1px solid rgba(227,184,93,0.36);
background:
radial-gradient(120% 110% at 50% 0%, rgba(227,184,93,0.15), transparent 62%),
rgba(8, 12, 10, 0.9);
box-shadow: 0 24px 90px rgba(0,0,0,0.62);
padding: clamp(1.2rem, 3vw, 2rem);
text-align: center;
}
.realm-opening-kicker {
margin: 0;
color: var(--realm-accent-gold);
font-family: 'Cinzel', serif;
font-size: 0.74rem;
text-transform: uppercase;
letter-spacing: 0.2em;
opacity: 0.9;
}
.realm-opening-title {
margin: 0.65rem 0 1.2rem;
color: #f6efdd;
font-family: 'Libre Baskerville', serif;
font-size: clamp(1.2rem, 3.8vw, 2.05rem);
line-height: 1.32;
text-wrap: balance;
}
.realm-opening-line {
margin: 0.45rem 0;
color: #d8ceb4;
font-style: italic;
opacity: 0;
transform: translateY(8px);
animation: openingLineIn 0.9s ease forwards;
}
#realm-opening-enter {
margin-top: 1rem;
border: 1px solid rgba(227,184,93,0.58);
border-radius: 999px;
padding: 0.6rem 1.2rem;
font-family: 'Cinzel', serif;
font-size: 0.76rem;
letter-spacing: 0.12em;
text-transform: uppercase;
background: linear-gradient(180deg, rgba(227,184,93,0.3), rgba(227,184,93,0.14));
color: #fff4dd;
cursor: pointer;
}
#realm-opening-enter:hover {
background: linear-gradient(180deg, rgba(227,184,93,0.42), rgba(110,201,188,0.2));
}
@keyframes openingLineIn {
to { opacity: 1; transform: translateY(0); }
}
@keyframes openingStars {
from { opacity: 0.35; transform: scale(1); }
to { opacity: 0.6; transform: scale(1.02); }
}
@keyframes floatSpark {
0% { transform: translateY(8px) scale(0.7); opacity: 0; }
15% { opacity: 0.95; }
60% { opacity: 0.85; }
100% { transform: translateY(-42px) scale(1.1); opacity: 0; }
}
@keyframes writeSigil {
from { width: 0; }
to { width: 100%; }
}
@keyframes revealSigil {
from { clip-path: inset(0 100% 0 0); }
to { clip-path: inset(0 0 0 0); }
}
/* -------------------------------------------------------------------------- */
/* Viewport-fit hotfix: keep app in one screen and scroll inside the spread */
/* -------------------------------------------------------------------------- */
html, body {
height: 100%;
overflow: hidden;
}
body,
.gradio-container {
background: linear-gradient(180deg, #f2e6ce 0%, #e4d2ae 56%, #d7bf92 100%) !important;
}
.gradio-container {
height: 760px !important;
max-height: calc(100vw * 0.62) !important;
min-height: 620px !important;
display: flex !important;
flex-direction: column !important;
max-width: min(1500px, 100vw) !important;
padding: 0.35rem 0.6rem 0.5rem !important;
overflow: hidden !important;
}
#presence-bar,
.realm-header-wrap {
flex: 0 0 auto;
margin-bottom: 0.35rem !important;
}
.realm-header-wrap {
display: none !important;
}
.realm-tabs {
flex: 1 1 auto;
height: 565px !important;
max-height: 565px !important;
min-height: 0;
overflow: hidden !important;
margin-bottom: 0 !important;
}
.realm-tabs .tab-wrapper {
display: none !important;
height: 0 !important;
min-height: 0 !important;
margin: 0 !important;
padding: 0 !important;
}
.realm-tabs [role="tabpanel"] {
height: 565px !important;
max-height: 565px !important;
min-height: 0 !important;
overflow: hidden !important;
padding: 0.65rem 1.15rem 0.8rem !important;
display: flex !important;
flex-direction: column !important;
}
.realm-tabs [role="tabpanel"] > .column,
.realm-tabs [role="tabpanel"] > .column > .column {
min-height: 0 !important;
height: auto !important;
}
.realm-tabs [role="tabpanel"]::-webkit-scrollbar {
width: 9px;
}
.realm-tabs [role="tabpanel"]::-webkit-scrollbar-thumb {
background: rgba(138, 106, 58, 0.45);
border-radius: 9px;
}
.realm-opening-backdrop {
background:
radial-gradient(circle at 28% 18%, rgba(201, 161, 59, 0.12), transparent 38%),
radial-gradient(circle at 78% 24%, rgba(138, 106, 58, 0.1), transparent 36%),
linear-gradient(180deg, #120a06 0%, #0a0604 55%, #050302 100%) !important;
}
#realm-opening-enter:hover {
background: linear-gradient(180deg, rgba(227,184,93,0.52), rgba(227,184,93,0.28));
}
.realm-opening {
display: flex !important;
align-items: center !important;
justify-content: center !important;
padding: clamp(1rem, 3vh, 2rem) !important;
overflow: hidden;
}
.realm-opening.is-prologue {
overflow-y: auto;
}
.realm-opening-inner {
position: relative;
z-index: 4;
width: min(820px, 92vw);
display: flex;
align-items: center;
justify-content: center;
min-height: min(480px, 72vh);
max-height: min(88vh, 760px);
margin: auto;
}
.realm-cover-card {
margin: 0 auto !important;
}
.realm-cover-title {
font-size: clamp(2.4rem, 7vw, 4.7rem) !important;
color: #f8e4a8 !important;
letter-spacing: 0.16em !important;
word-spacing: 0.12em !important;
}
.realm-cover-title span {
color: #f8e4a8 !important;
-webkit-text-fill-color: #f8e4a8 !important;
letter-spacing: inherit !important;
}
.realm-cover-sub,
.realm-cover-kicker {
color: #f8e7b9 !important;
}
.realm-cover-card::before,
.realm-cover-card::after {
content: "";
position: absolute;
bottom: 0.85rem;
width: 120px;
height: 210px;
opacity: 0.42;
pointer-events: none;
background:
radial-gradient(circle at 50% 18%, rgba(232, 200, 115, 0.5) 0 6px, transparent 8px),
radial-gradient(circle at 34% 30%, rgba(232, 200, 115, 0.35) 0 4px, transparent 6px),
radial-gradient(circle at 66% 33%, rgba(232, 200, 115, 0.3) 0 4px, transparent 6px),
linear-gradient(90deg, transparent 48%, rgba(232, 200, 115, 0.55) 49% 51%, transparent 52%),
linear-gradient(35deg, transparent 50%, rgba(232, 200, 115, 0.28) 51% 53%, transparent 54%),
linear-gradient(-35deg, transparent 50%, rgba(232, 200, 115, 0.28) 51% 53%, transparent 54%);
filter: drop-shadow(0 0 16px rgba(232, 200, 115, 0.28));
}
.realm-cover-card::before { left: 1.4rem; }
.realm-cover-card::after { right: 1.4rem; transform: scaleX(-1); }
.current-event,
.realm-pulse,
.pulse-card,
.activity-feed,
.location-panel,
.book-container,
.entity-card,
.featured-card,
.entity-grid-card,
.room-view,
.summon-section,
.diorama-header,
.rel-graph-wrap {
background: linear-gradient(180deg, rgba(255, 249, 232, 0.96), rgba(236, 218, 178, 0.92)) !important;
color: var(--tome-ink) !important;
border-color: rgba(138, 106, 58, 0.38) !important;
box-shadow: 0 10px 24px rgba(76, 50, 22, 0.16) !important;
}
.gradio-container .wrap,
.gradio-container .form,
.gradio-container .panel,
.gradio-container .block,
.gradio-container .container,
.gradio-container .tabitem,
.gradio-container .head {
color: var(--tome-ink) !important;
}
.gradio-container input,
.gradio-container textarea,
.gradio-container select,
.gradio-container .input-container,
.gradio-container .dropdown,
.gradio-container .wrap.svelte-p5q82i,
.gradio-container .full-container,
.gradio-container .container.svelte-1mutzus,
.gradio-container .head.svelte-1kajgn1,
.gradio-container .block,
.gradio-container .form {
background: #fff7e7 !important;
color: var(--tome-ink) !important;
border-color: rgba(138, 106, 58, 0.3) !important;
}
.gradio-container .head.svelte-1kajgn1,
.gradio-container .full-container.svelte-5gfv2q,
.gradio-container .container.svelte-1mutzus,
.gradio-container .wrap.svelte-p5q82i {
box-shadow: none !important;
}
.current-event *,
.realm-pulse *,
.pulse-card *,
.activity-feed *,
.location-panel *,
.book-container *,
.entity-card *,
.featured-card *,
.entity-grid-card *,
.room-view *,
.summon-section *,
.diorama-header *,
.rel-graph-wrap * {
color: var(--tome-ink) !important;
text-shadow: none !important;
}
.event-label,
.pulse-title,
.pulse-day,
.feed-day,
.section-label,
.location-panel-special,
.entity-status,
.book-day-header,
.entry-title {
color: var(--tome-gold-dark) !important;
}
.realm-map,
.diorama-stage,
.diorama-frame,
.rel-graph-svg {
background: linear-gradient(180deg, #faf1dc, #ead9b3) !important;
}
@media (max-width: 920px) {
body, html {
overflow: hidden;
}
.gradio-container {
height: 100dvh !important;
max-height: 100dvh !important;
min-height: 100dvh !important;
overflow: hidden !important;
}
.realm-tabs {
height: auto !important;
max-height: none !important;
flex: 1 1 auto !important;
}
.realm-tabs [role="tabpanel"] {
height: auto !important;
max-height: none !important;
flex: 1 1 auto !important;
overflow: hidden !important;
padding-bottom: 0.25rem !important;
}
.realm-opening-inner {
min-height: min(420px, 68vh);
}
.realm-prologue-card {
max-height: min(82vh, 620px);
overflow-y: auto;
}
.tome-page-left,
.tome-page-right {
padding-left: 0.5rem !important;
padding-right: 0.5rem !important;
}
}
/* -------------------------------------------------------------------------- */
/* Cinematic book opening + prologue */
/* -------------------------------------------------------------------------- */
.realm-opening-vignette {
position: absolute;
inset: 0;
pointer-events: none;
background: radial-gradient(ellipse at 50% 42%, transparent 28%, rgba(8, 5, 3, 0.72) 100%);
z-index: 1;
}
.realm-book-stage {
position: relative;
z-index: 3;
width: 100%;
perspective: 1800px;
transform-style: preserve-3d;
display: flex;
align-items: center;
justify-content: center;
}
.realm-opening.is-prologue .realm-book-stage,
.realm-opening.is-unfolded .realm-book-stage {
visibility: hidden;
opacity: 0;
pointer-events: none;
position: absolute;
width: min(760px, 94vw);
height: min(380px, 58vh);
overflow: hidden;
}
.realm-book-closed {
position: relative;
transform-style: preserve-3d;
transition: transform 1.4s cubic-bezier(0.45, 0, 0.2, 1), opacity 0.9s ease;
}
.realm-book-closed.is-opening {
transform: rotateY(-14deg) translateZ(-40px);
opacity: 0;
pointer-events: none;
}
.realm-book-spine {
position: absolute;
left: 50%;
top: 4%;
bottom: 4%;
width: 18px;
transform: translateX(-50%);
background: linear-gradient(90deg, #2e1a10, #6b4226 48%, #2e1a10);
border-radius: 4px;
box-shadow: 0 0 24px rgba(0, 0, 0, 0.45);
z-index: 0;
}
.realm-book-open {
position: absolute;
inset: 0;
display: flex;
gap: 0;
opacity: 0;
transform: scale(0.94);
pointer-events: none;
transition: opacity 1s ease 0.3s, transform 1.2s cubic-bezier(0.34, 1.2, 0.64, 1) 0.2s;
}
.realm-opening.is-unfolded .realm-book-open {
opacity: 1;
transform: scale(1);
}
.realm-book-page {
flex: 1;
min-height: 320px;
border: 1px solid rgba(138, 106, 58, 0.35);
background:
radial-gradient(circle at 18% 22%, rgba(255, 255, 255, 0.35), transparent 32%),
linear-gradient(180deg, #f8efd8, #e8d5ad);
box-shadow: inset 0 0 40px rgba(138, 106, 58, 0.12);
}
.realm-book-page-left {
border-radius: 14px 4px 4px 14px;
transform-origin: right center;
animation: pageFanLeft 1.1s cubic-bezier(0.34, 1.1, 0.64, 1) 0.15s both;
clip-path: polygon(
0% 2%, 3% 0%, 7% 1.5%, 11% 0.5%, 15% 2%, 19% 0%, 23% 1%, 27% 0.5%,
31% 2%, 35% 0%, 39% 1.5%, 43% 0.5%, 47% 2%, 51% 0%, 55% 1%, 59% 0.5%,
63% 2%, 67% 0%, 71% 1.5%, 75% 0.5%, 79% 2%, 83% 0%, 87% 1%, 91% 0.5%,
95% 2%, 98% 0%, 100% 2%, 100% 98%, 98% 100%, 95% 98%, 91% 100%,
87% 98%, 83% 100%, 79% 98%, 75% 100%, 71% 98%, 67% 100%, 63% 98%,
59% 100%, 55% 98%, 51% 100%, 47% 98%, 43% 100%, 39% 98%, 35% 100%,
31% 98%, 27% 100%, 23% 98%, 19% 100%, 15% 98%, 11% 100%, 7% 98%,
3% 100%, 0% 98%
);
}
.realm-book-page-right {
border-radius: 4px 14px 14px 4px;
transform-origin: left center;
animation: pageFanRight 1.1s cubic-bezier(0.34, 1.1, 0.64, 1) 0.15s both;
clip-path: polygon(
0% 2%, 3% 0%, 7% 1.5%, 11% 0.5%, 15% 2%, 19% 0%, 23% 1%, 27% 0.5%,
31% 2%, 35% 0%, 39% 1.5%, 43% 0.5%, 47% 2%, 51% 0%, 55% 1%, 59% 0.5%,
63% 2%, 67% 0%, 71% 1.5%, 75% 0.5%, 79% 2%, 83% 0%, 87% 1%, 91% 0.5%,
95% 2%, 98% 0%, 100% 2%, 100% 98%, 98% 100%, 95% 98%, 91% 100%,
87% 98%, 83% 100%, 79% 98%, 75% 100%, 71% 98%, 67% 100%, 63% 98%,
59% 100%, 55% 98%, 51% 100%, 47% 98%, 43% 100%, 39% 98%, 35% 100%,
31% 98%, 27% 100%, 23% 98%, 19% 100%, 15% 98%, 11% 100%, 7% 98%,
3% 100%, 0% 98%
);
}
@keyframes pageFanLeft {
from { transform: rotateY(78deg); opacity: 0; }
to { transform: rotateY(0deg); opacity: 1; }
}
@keyframes pageFanRight {
from { transform: rotateY(-78deg); opacity: 0; }
to { transform: rotateY(0deg); opacity: 1; }
}
.realm-prologue-card {
position: absolute;
z-index: 5;
width: min(760px, 94vw);
max-width: min(760px, 94vw);
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
margin: 0;
padding: clamp(1.6rem, 3.8vw, 2.4rem) clamp(1.6rem, 4.2vw, 2.8rem);
border: 1px solid rgba(98, 62, 28, 0.42);
border-radius: 6px 16px 14px 8px;
background:
/* coffee ring stains — kept to corners, away from title */
radial-gradient(ellipse 130px 100px at 94% 92%, rgba(72, 44, 18, 0.22) 0%, rgba(92, 58, 26, 0.1) 40%, transparent 68%),
radial-gradient(ellipse 150px 120px at 6% 88%, rgba(68, 42, 18, 0.2) 0%, rgba(84, 52, 22, 0.08) 42%, transparent 70%),
radial-gradient(ellipse 100px 80px at 8% 12%, rgba(54, 32, 12, 0.14) 0%, transparent 62%),
radial-gradient(ellipse 90px 70px at 92% 10%, rgba(58, 34, 14, 0.12) 0%, transparent 60%),
/* foxing — edges only */
radial-gradient(circle at 4% 42%, rgba(88, 62, 32, 0.12) 0 2.5px, transparent 3.5px),
radial-gradient(circle at 96% 55%, rgba(78, 54, 28, 0.1) 0 2px, transparent 3px),
radial-gradient(circle at 12% 96%, rgba(74, 48, 22, 0.1) 0 2.5px, transparent 3.5px),
/* smoky edge darkening — even vignette, no center blob */
radial-gradient(ellipse 115% 100% at 50% 50%, transparent 55%, rgba(48, 30, 14, 0.12) 82%, rgba(32, 18, 8, 0.2) 100%),
/* aged parchment base */
linear-gradient(168deg, #e8d4a8 0%, #dcc292 38%, #cdb47a 72%, #c4a86e 100%);
box-shadow:
0 28px 70px rgba(12, 6, 2, 0.55),
0 8px 22px rgba(28, 16, 6, 0.35),
inset 0 0 0 1px rgba(255, 240, 200, 0.28),
inset 0 -22px 44px rgba(88, 56, 24, 0.16),
inset 18px 0 28px rgba(72, 46, 20, 0.08),
inset -18px 0 28px rgba(72, 46, 20, 0.08);
text-align: center;
opacity: 0;
pointer-events: none;
transition: opacity 0.8s ease;
overflow-x: hidden;
overflow-y: auto;
max-height: min(88vh, 700px);
isolation: isolate;
clip-path: polygon(
0% 3%, 2% 0%, 5% 2%, 8% 0%, 12% 2%, 16% 0%, 20% 1.5%, 24% 0%,
100% 0%, 100% 97%, 98% 100%, 95% 98%, 92% 100%, 88% 98%, 84% 100%,
0% 100%
);
}
.realm-prologue-card::before {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
z-index: 0;
opacity: 0.45;
background:
radial-gradient(ellipse 180px 140px at 96% 96%, rgba(42, 24, 8, 0.18) 0%, transparent 58%),
radial-gradient(ellipse 160px 130px at 4% 94%, rgba(38, 22, 6, 0.16) 0%, transparent 56%),
linear-gradient(125deg, rgba(58, 36, 14, 0.06) 0%, transparent 50%, rgba(48, 28, 10, 0.07) 100%);
mix-blend-mode: multiply;
}
.realm-prologue-card::after {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
z-index: 0;
opacity: 0.35;
background:
repeating-linear-gradient(
0deg,
transparent,
transparent 2px,
rgba(62, 40, 18, 0.025) 2px,
rgba(62, 40, 18, 0.025) 3px
),
repeating-linear-gradient(
90deg,
transparent,
transparent 3px,
rgba(48, 30, 12, 0.02) 3px,
rgba(48, 30, 12, 0.02) 4px
),
radial-gradient(ellipse 90% 80% at 50% 100%, rgba(28, 14, 4, 0.22) 0%, transparent 55%);
mix-blend-mode: multiply;
}
.realm-prologue-card > * {
position: relative;
z-index: 1;
}
.realm-prologue-card.visible {
opacity: 1;
transform: translate(-50%, -50%);
pointer-events: auto;
}
.realm-typewriter.is-typing::after {
content: "▌";
display: inline;
margin-left: 1px;
color: var(--tome-gold-dark);
animation: cursorBlink 0.85s step-end infinite;
}
.realm-prologue-cursor {
display: none;
margin: 0.25rem 0 0.5rem;
text-align: left;
max-width: 640px;
margin-left: auto;
margin-right: auto;
color: var(--tome-gold-dark);
font-family: 'IM Fell English', serif;
animation: cursorBlink 0.85s step-end infinite;
}
.realm-prologue-cursor.active {
display: none;
}
@keyframes cursorBlink {
50% { opacity: 0; }
}
.realm-opening.is-unfolding .realm-cover-card {
transform-origin: left center;
animation: coverLift 1.2s cubic-bezier(0.45, 0, 0.2, 1) forwards;
will-change: transform, opacity;
}
@keyframes coverLift {
0% { transform: perspective(1200px) rotateY(0deg); opacity: 1; }
55% { transform: perspective(1200px) rotateY(-72deg); opacity: 0.85; }
100% { transform: perspective(1200px) rotateY(-94deg); opacity: 0; }
}
.realm-prologue-kicker {
margin: 0;
font-family: 'IM Fell English', serif;
font-style: italic;
font-size: 0.92rem;
color: #5c4228;
letter-spacing: 0.06em;
text-shadow: 0 1px 0 rgba(255, 236, 196, 0.35);
}
.realm-prologue-title {
margin: 0.5rem 0 1rem;
font-family: 'Cinzel Decorative', 'Cinzel', serif;
font-size: clamp(1.4rem, 4vw, 2.2rem);
color: #8a6424;
letter-spacing: 0.2em;
word-spacing: 0.08em;
text-transform: uppercase;
text-shadow: 0 1px 1px rgba(255, 240, 200, 0.35);
}
.realm-prologue-body {
padding: 0 0.85rem;
font-family: 'IM Fell English', serif;
font-size: clamp(1rem, 2.2vw, 1.15rem);
line-height: 1.75;
color: #3d2a16;
text-align: left;
max-width: 640px;
margin: 0 auto 1.2rem;
word-spacing: 0.07em;
letter-spacing: 0.02em;
text-shadow: 0 1px 0 rgba(255, 236, 196, 0.2);
}
.realm-prologue-body p {
margin: 0 0 0.85rem;
}
.realm-prologue-whisper {
font-style: italic;
color: #5a4024;
border-top: 1px solid rgba(98, 62, 28, 0.32);
padding-top: 0.85rem;
margin-top: 0.5rem !important;
}
.realm-prologue-actions {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 0.65rem;
width: 100%;
margin-top: 0.65rem;
text-align: center;
}
.realm-prologue-skip {
display: inline-block;
margin: 0 auto;
border: 1px solid rgba(98, 62, 28, 0.35);
border-radius: 999px;
background: rgba(255, 249, 232, 0.55);
color: #5c4228;
padding: 0.5rem 1.35rem;
font-family: 'Cinzel', serif;
text-transform: uppercase;
letter-spacing: 0.1em;
cursor: pointer;
font-size: 0.68rem;
transition: background 0.2s ease, border-color 0.2s ease;
}
.realm-prologue-skip:hover {
background: rgba(240, 214, 150, 0.75);
border-color: rgba(98, 62, 28, 0.5);
}
.realm-prologue-skip.is-hidden {
display: none;
}
#realm-prologue-enter {
display: none;
border: 1px solid var(--tome-gold-dark);
border-radius: 999px;
background: linear-gradient(180deg, #f0d696, #bb8e33);
color: #2d1a0c;
padding: 0.65rem 1.4rem;
font-family: 'Cinzel', serif;
text-transform: uppercase;
letter-spacing: 0.12em;
cursor: pointer;
font-size: 0.78rem;
margin: 0.55rem auto 0;
opacity: 0;
transform: translateY(8px);
pointer-events: none;
transition: opacity 0.5s ease, transform 0.5s ease, background 0.2s ease;
}
#realm-prologue-enter.ready {
display: inline-block;
opacity: 1;
transform: translateY(0);
pointer-events: auto;
}
#realm-prologue-enter:disabled {
cursor: default;
}
#realm-prologue-enter.ready:hover {
background: linear-gradient(180deg, #f5e0a8, #c9a13b);
}
.realm-opening.is-unfolding .realm-opening-backdrop,
.realm-opening.is-prologue .realm-opening-backdrop {
background:
radial-gradient(ellipse 70% 55% at 50% 42%, rgba(201, 161, 59, 0.1), transparent 52%),
radial-gradient(ellipse 90% 70% at 50% 100%, rgba(18, 8, 4, 0.65), transparent 55%),
linear-gradient(180deg, #0c0705 0%, #140c08 42%, #080403 100%) !important;
}
.realm-opening.is-prologue .realm-opening-vignette {
background:
radial-gradient(ellipse 65% 58% at 50% 46%, transparent 32%, rgba(6, 3, 2, 0.55) 100%),
radial-gradient(circle at 20% 30%, rgba(92, 58, 28, 0.08) 0%, transparent 42%),
radial-gradient(circle at 80% 70%, rgba(72, 44, 18, 0.1) 0%, transparent 38%);
}
/* -------------------------------------------------------------------------- */
/* Two-page spread content distribution */
/* -------------------------------------------------------------------------- */
.tome-spread-row {
gap: 0 !important;
margin: 0 !important;
}
.realm-tabs [role="tabpanel"] {
padding-left: 2.35rem !important;
padding-right: 2.35rem !important;
clip-path: none !important;
overflow: hidden !important;
border-radius: 3px 8px 8px 3px !important;
}
.realm-tabs [role="tabpanel"]::after {
width: 88px;
opacity: 0.95;
}
.book-header,
.explore-intro,
.rel-graph-wrap > .rel-graph-desc {
max-width: calc(50% - 2rem);
margin-left: 0;
padding-right: 1.5rem;
}
.book-container .book-header {
max-width: 100%;
padding-right: 0;
text-align: center;
margin-bottom: 0.75rem;
}
.book-entries {
column-count: 2;
column-gap: 3.5rem;
padding: 0 0.5rem;
}
.book-entries .book-day-header {
break-after: avoid;
}
.book-entries .book-entry {
break-inside: avoid;
margin-bottom: 0.65rem;
}
.explore-intro {
max-width: 100%;
text-align: center;
padding: 0 2rem;
margin-bottom: 1rem;
}
/* -------------------------------------------------------------------------- */
/* 3D bonds graph frame */
/* -------------------------------------------------------------------------- */
.rel-graph-stage {
position: relative;
width: 100%;
height: min(62vh, 520px);
min-height: 380px;
border-radius: 14px;
overflow: hidden;
border: 1px solid rgba(138, 106, 58, 0.38);
box-shadow:
inset 0 0 32px rgba(58, 42, 26, 0.18),
0 14px 32px rgba(76, 50, 22, 0.22);
margin-bottom: 0.85rem;
}
.rel-graph-frame {
display: block;
width: 100%;
height: 100%;
border: none;
background: #0a0806;
}
/* Form controls — parchment palette */
.gradio-container label,
.gradio-container .label-wrap span {
color: var(--tome-ink-faded) !important;
font-family: 'IM Fell English', serif !important;
font-size: 0.88rem !important;
}
.gradio-container select,
.gradio-container .dropdown input,
.gradio-container .svelte-1gfkn6j {
background: #fff7e7 !important;
color: var(--tome-ink) !important;
border-color: rgba(138, 106, 58, 0.35) !important;
}
.gradio-container .wrap.svelte-p5q82i .wrap-inner {
background: #fff7e7 !important;
}
.sidebar-panel {
padding: 0.35rem 0 0.5rem !important;
}
.current-event,
.realm-pulse,
.activity-feed {
margin-bottom: 0.75rem !important;
padding: 0.85rem 1rem !important;
}
.realm-map {
margin-bottom: 0.5rem;
border-radius: 10px;
overflow: hidden;
}
/* -------------------------------------------------------------------------- */
/* Living book spread — no scroll, printed pages, expand option */
/* -------------------------------------------------------------------------- */
/* Hidden Gradio pickers — mounted but invisible (Gradio 5 drops visible=False) */
.aether-pick-bridge {
position: fixed !important;
left: -9999px !important;
top: 0 !important;
width: 1px !important;
height: 1px !important;
overflow: hidden !important;
opacity: 0 !important;
pointer-events: none !important;
z-index: -1 !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
}
.aether-hidden-pick,
.aether-hidden-pick.block,
.aether-pick-bridge .block {
width: 1px !important;
height: 1px !important;
min-height: 0 !important;
margin: 0 !important;
padding: 0 !important;
border: none !important;
box-shadow: none !important;
background: transparent !important;
overflow: hidden !important;
}
.aether-hidden-pick textarea,
.aether-hidden-pick input {
width: 1px !important;
height: 1px !important;
min-height: 0 !important;
padding: 0 !important;
border: none !important;
opacity: 0 !important;
}
.tome-offpage-store {
display: none !important;
height: 0 !important;
max-height: 0 !important;
overflow: hidden !important;
visibility: hidden !important;
pointer-events: none !important;
margin: 0 !important;
padding: 0 !important;
}
.tome-spread-shell {
flex: 1 1 auto;
min-height: 0;
display: flex;
flex-direction: column;
overflow: hidden;
}
.tome-spread-row {
flex: 1 1 auto;
min-height: 0 !important;
max-height: 100% !important;
align-items: stretch !important;
overflow: hidden !important;
gap: 0 !important;
margin: 0 !important;
}
.tome-spread-row > .column,
.tome-spread-row > .gr-column {
min-height: 0 !important;
max-height: 100% !important;
overflow: hidden !important;
}
.tome-printed-page {
position: relative;
display: flex !important;
flex-direction: column !important;
flex-wrap: nowrap !important;
min-height: 0 !important;
max-height: 100% !important;
overflow: hidden !important;
padding: 0.75rem 1.25rem 0.65rem !important;
background: transparent !important;
box-shadow: none !important;
border: none !important;
border-radius: 0 !important;
isolation: isolate;
}
.tome-printed-page::before {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
z-index: 0;
opacity: 0.4;
background:
repeating-linear-gradient(
0deg,
transparent,
transparent 2px,
rgba(62, 40, 18, 0.02) 2px,
rgba(62, 40, 18, 0.02) 3px
),
radial-gradient(ellipse 100% 90% at 50% 50%, transparent 58%, rgba(48, 30, 14, 0.08) 100%);
mix-blend-mode: multiply;
}
.tome-printed-page > * {
position: relative;
z-index: 1;
min-height: 0;
}
/* Strip Gradio chrome — ink sits on parchment, not in nested UI cards */
.tome-printed-page > .block,
.tome-printed-page > .form,
.tome-printed-page .block,
.tome-printed-page .form,
.tome-printed-page .html-container,
.tome-printed-page .prose,
.tome-printed-page .empty,
.tome-printed-page .gr-group {
background: transparent !important;
border: none !important;
box-shadow: none !important;
border-radius: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: visible !important;
min-height: 0 !important;
}
.tome-printed-page > .block,
.tome-printed-page > .form {
flex-shrink: 0;
}
.tome-printed-page > .block:has(#world-map),
.tome-printed-page > .block:has(#location-panel-host-wrap),
.tome-explore-stage > .block:has(#explore-diorama-host),
.tome-explore-stage #explore-diorama-host {
flex: 1 1 auto !important;
min-height: 260px !important;
display: flex !important;
flex-direction: column !important;
overflow: hidden !important;
}
.tome-printed-page::-webkit-scrollbar {
display: none !important;
width: 0 !important;
}
.tome-printed-page .block.hidden,
.tome-printed-page .form.hidden,
.tome-printed-page .block:empty,
.tome-printed-page .svelte-1gfkn6j.hidden {
display: none !important;
height: 0 !important;
max-height: 0 !important;
margin: 0 !important;
padding: 0 !important;
overflow: hidden !important;
border: none !important;
}
.tome-expand-btn,
.tome-expand-backdrop {
display: none !important;
visibility: hidden !important;
pointer-events: none !important;
}
/* Printed ink — content sits on paper, not in UI cards */
.tome-printed-page .current-event,
.tome-printed-page .activity-feed,
.tome-printed-page .location-panel,
.tome-printed-page .book-container,
.tome-printed-page .book-entries {
background: transparent !important;
box-shadow: none !important;
border: none !important;
border-radius: 0 !important;
}
.tome-printed-page .current-event {
padding: 0 0 0.65rem !important;
margin: 0 0 0.5rem !important;
border-bottom: 1px solid rgba(98, 62, 28, 0.22) !important;
}
.tome-printed-page .event-label,
.tome-printed-page .event-title,
.tome-printed-page .event-text,
.tome-printed-page .event-locations {
color: #3d2a16 !important;
text-shadow: 0 1px 0 rgba(255, 236, 196, 0.2);
}
.tome-printed-page .event-label {
color: #7a5a28 !important;
font-family: 'IM Fell English', serif !important;
}
.tome-printed-page .activity-feed {
padding: 0 !important;
margin: 0 !important;
overflow-x: hidden !important;
overflow-y: auto !important;
}
.tome-printed-page .feed-item {
padding: 0.4rem 0 !important;
border-bottom: 1px solid rgba(98, 62, 28, 0.16) !important;
background: transparent !important;
}
.tome-printed-page .feed-content {
color: #3d2a16 !important;
font-family: 'IM Fell English', serif !important;
font-size: 0.88rem !important;
line-height: 1.45 !important;
display: block !important;
overflow: visible !important;
-webkit-line-clamp: unset !important;
}
.tome-printed-page .feed-day {
color: #8a6424 !important;
font-family: 'Cinzel', serif !important;
}
.tome-page-left.tome-printed-page #world-map,
.tome-page-left.tome-printed-page .realm-map {
flex: 1 1 auto !important;
min-height: 280px !important;
max-height: none !important;
width: 100% !important;
border: 1px solid rgba(98, 62, 28, 0.28) !important;
border-radius: 2px !important;
box-shadow: inset 0 0 18px rgba(58, 36, 14, 0.12) !important;
background: rgba(12, 18, 14, 0.92) !important;
}
.tome-printed-page .location-panel {
padding: 0.45rem 0 0 !important;
margin: 0 !important;
font-family: 'IM Fell English', serif !important;
font-style: italic;
font-size: 0.82rem !important;
color: #5c4228 !important;
}
.tome-printed-page .location-panel * {
color: #5c4228 !important;
}
.tome-book-index .tome-printed-heading {
margin-bottom: 0.75rem;
padding-bottom: 0.65rem;
border-bottom: 1px solid rgba(98, 62, 28, 0.22);
}
.tome-book-index .book-title {
margin: 0 0 0.35rem;
font-size: 1.35rem !important;
color: #7a5a28 !important;
}
.tome-book-index .book-subtitle {
margin: 0;
font-family: 'IM Fell English', serif;
font-style: italic;
font-size: 0.88rem;
color: #5c4228;
}
.tome-printed-page .book-entries {
column-count: 1 !important;
column-gap: 0 !important;
overflow: hidden !important;
max-height: 100%;
}
.tome-printed-page .book-entry {
break-inside: avoid;
margin-bottom: 0.55rem !important;
padding-bottom: 0.45rem !important;
border-bottom: 1px solid rgba(98, 62, 28, 0.14) !important;
background: transparent !important;
}
.tome-printed-page .entry-content {
font-family: 'IM Fell English', serif !important;
font-size: 0.86rem !important;
line-height: 1.45 !important;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
}
.tome-printed-page .book-day-header {
font-family: 'Cinzel', serif !important;
color: #8a6424 !important;
margin: 0.35rem 0 !important;
}
/* Aged spread binding — worn parchment across both pages */
.realm-tabs [role="tabpanel"] {
background:
radial-gradient(ellipse 130px 100px at 3% 92%, rgba(72, 44, 18, 0.1) 0%, transparent 62%),
radial-gradient(ellipse 120px 95px at 97% 8%, rgba(58, 34, 14, 0.09) 0%, transparent 60%),
linear-gradient(90deg,
#e8d8b4 0%,
#e2d0a6 44.5%,
#c9a87a 48.8%,
#8e6840 49.8%,
#6b4a2c 50%,
#8e6840 50.2%,
#c9a87a 51.2%,
#e2d0a6 55.5%,
#ebe2c6 100%) !important;
}
.realm-tabs [role="tabpanel"]::-webkit-scrollbar {
display: none !important;
width: 0 !important;
height: 0 !important;
}
.tome-muted {
font-family: 'IM Fell English', serif;
font-style: italic;
font-size: 0.82rem;
color: #5c4228;
}
/* Spread helpers — left/right page content */
.tome-printed-kicker {
margin: 0 0 0.2rem;
font-family: 'Cinzel', serif;
font-size: 0.72rem;
letter-spacing: 0.14em;
text-transform: uppercase;
color: #8a6424;
}
.tome-printed-hint,
.explore-controls-hint,
.realm-summon-hint {
margin: 0 0 0.55rem;
font-family: 'IM Fell English', serif;
font-style: italic;
font-size: 0.82rem;
color: #5c4228;
}
.realm-stats-strip {
display: flex;
flex-wrap: wrap;
gap: 0.65rem 1rem;
margin-bottom: 0.55rem;
padding: 0.45rem 0.65rem;
border-radius: 8px;
background: rgba(255, 249, 232, 0.55);
font-family: 'IM Fell English', serif;
font-size: 0.82rem;
color: #4a3420;
}
.realm-summon-block {
margin-top: 0.35rem;
}
.realm-summon-input textarea {
min-height: 4.2rem !important;
}
/* Place ribbon — Explore left page */
.place-ribbon {
display: flex;
flex-direction: column;
gap: 0.45rem;
min-height: 0;
flex: 1 1 auto;
overflow: hidden;
}
.place-ribbon-kicker,
.day-tabs-title {
margin: 0;
font-family: 'Cinzel Decorative', 'Cinzel', serif;
font-size: 1rem;
color: var(--tome-ink);
text-align: center;
}
.place-ribbon-hint,
.day-tabs-sub {
margin: 0 0 0.35rem;
font-family: 'IM Fell English', serif;
font-style: italic;
font-size: 0.8rem;
color: #5c4228;
text-align: center;
}
.place-ribbon-list {
display: flex;
flex-direction: column;
gap: 0.35rem;
overflow-y: auto;
min-height: 0;
flex: 1 1 auto;
padding-right: 0.15rem;
}
.place-ribbon-item {
display: grid;
grid-template-columns: 42px 1fr auto;
gap: 0.45rem;
align-items: center;
padding: 0.35rem 0.45rem;
border: 1px solid rgba(138, 106, 58, 0.28);
border-radius: 8px;
background: rgba(255, 249, 232, 0.72);
cursor: pointer;
text-align: left;
color: var(--tome-ink);
font-family: 'IM Fell English', serif;
transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.place-ribbon-item:hover,
.place-ribbon-item.is-selected {
transform: translateX(2px);
box-shadow: 0 4px 12px rgba(76, 50, 22, 0.14);
border-color: rgba(138, 106, 58, 0.5);
}
.ribbon-thumb {
width: 42px;
height: 42px;
border-radius: 6px;
background-size: cover;
background-position: center;
border: 1px solid rgba(138, 106, 58, 0.35);
}
.ribbon-thumb-empty {
background: linear-gradient(135deg, #d8c49a, #b89562);
}
.ribbon-label {
font-family: 'Cinzel', serif;
font-size: 0.78rem;
line-height: 1.2;
}
.ribbon-count {
font-size: 0.68rem;
color: #6b4f30;
white-space: nowrap;
}
/* Day tabs — Book left page */
.day-tabs-wrap {
display: flex;
flex-direction: column;
gap: 0.35rem;
min-height: 0;
}
.day-tabs {
display: flex;
flex-direction: column;
gap: 0.3rem;
overflow-y: auto;
max-height: 220px;
}
.day-tab {
padding: 0.4rem 0.55rem;
border: 1px solid rgba(138, 106, 58, 0.28);
border-radius: 8px;
background: rgba(255, 249, 232, 0.72);
font-family: 'Cinzel', serif;
font-size: 0.82rem;
color: var(--tome-ink);
cursor: pointer;
text-align: left;
}
.day-tab.is-active,
.day-tab:hover {
background: rgba(255, 244, 214, 0.95);
border-color: rgba(138, 106, 58, 0.55);
}
.book-day-view .book-entries {
column-count: 1 !important;
padding: 0;
}
.book-day-banner {
font-family: 'Cinzel Decorative', 'Cinzel', serif;
font-size: 1.1rem;
margin: 0 0 0.65rem;
color: #6b4a2c;
}
/* Bonds sidebar */
.bonds-sidebar {
display: flex;
flex-direction: column;
gap: 0.45rem;
min-height: 0;
overflow: hidden auto;
}
.bonds-sidebar-desc,
.bonds-sidebar-empty {
font-family: 'IM Fell English', serif;
font-style: italic;
font-size: 0.84rem;
color: #5c4228;
margin: 0;
}
.bonds-sidebar .rel-legend {
display: flex;
flex-wrap: wrap;
gap: 0.35rem 0.55rem;
}
.bonds-sidebar .rel-list {
margin: 0;
padding-left: 1rem;
font-family: 'IM Fell English', serif;
font-size: 0.78rem;
line-height: 1.35;
color: var(--tome-ink);
}
.tome-explore-stage .diorama-wrap,
.tome-explore-stage .rel-graph-stage {
flex: 1 1 auto;
min-height: 280px;
}
.tome-souls-index .entity-grid {
display: flex;
flex-direction: column;
gap: 0.45rem;
max-height: 340px;
overflow-y: auto;
}
.tome-souls-index .entity-grid-card {
display: grid;
grid-template-columns: 56px 1fr;
min-height: 72px;
}
.souls-filter-row,
.souls-search-row {
display: flex !important;
flex-wrap: wrap !important;
gap: 0.45rem !important;
margin-bottom: 0.35rem !important;
align-items: flex-end !important;
position: static !important;
z-index: auto !important;
flex: 0 0 auto !important;
}
.tome-souls-index .souls-filter-row > .block,
.tome-souls-index .souls-filter-row > .form {
flex: 1 1 calc(50% - 0.35rem) !important;
min-width: 0 !important;
max-width: 100% !important;
margin: 0 !important;
}
.tome-souls-index .souls-search-row {
margin-bottom: 0.55rem !important;
padding-bottom: 0.55rem !important;
border-bottom: 1px solid rgba(138, 106, 58, 0.22);
}
.tome-souls-index .souls-search-row > .block,
.tome-souls-index .souls-search-row > .form {
flex: 1 1 100% !important;
width: 100% !important;
max-width: 100% !important;
margin: 0 !important;
}
.tome-souls-index .souls-filter-row input,
.tome-souls-index .souls-filter-row textarea,
.tome-souls-index .souls-search-row input,
.tome-souls-index .souls-search-row textarea {
width: 100% !important;
max-width: 100% !important;
box-sizing: border-box !important;
}
.tome-souls-index > .block:has(.entity-grid),
.tome-souls-index > .block:has(.html-container) {
flex: 1 1 auto !important;
min-height: 0 !important;
overflow: hidden !important;
margin-top: 0.2rem !important;
position: relative !important;
z-index: 1 !important;
}
/* Entity hologram — Souls right page */
.entity-hologram {
position: relative;
perspective: 900px;
min-height: 320px;
flex: 1 1 auto;
}
.entity-hologram-empty .hologram-stage {
display: grid;
place-items: center;
min-height: 280px;
border: 1px dashed rgba(138, 106, 58, 0.35);
border-radius: 12px;
background: rgba(255, 249, 232, 0.45);
}
.hologram-hint {
font-family: 'IM Fell English', serif;
font-style: italic;
color: #5c4228;
text-align: center;
padding: 1rem;
}
.hologram-beam {
position: absolute;
left: 50%;
bottom: 8%;
width: 62%;
height: 42%;
transform: translateX(-50%);
background: radial-gradient(ellipse at center, rgba(201, 161, 59, 0.22), transparent 68%);
pointer-events: none;
filter: blur(8px);
animation: hologramPulse 3.2s ease-in-out infinite;
}
@keyframes hologramPulse {
0%, 100% { opacity: 0.45; transform: translateX(-50%) scale(0.96); }
50% { opacity: 0.85; transform: translateX(-50%) scale(1.04); }
}
.hologram-stage {
position: relative;
transform: rotateX(8deg) translateZ(12px);
transform-style: preserve-3d;
border: 1px solid rgba(201, 161, 59, 0.35);
border-radius: 14px;
background: linear-gradient(180deg, rgba(12, 10, 8, 0.92), rgba(24, 18, 12, 0.88));
box-shadow:
0 18px 40px rgba(0, 0, 0, 0.35),
0 0 28px rgba(201, 161, 59, 0.12);
overflow: hidden;
color: #f4e8c8;
}
.hologram-banner {
height: 88px;
background-size: cover;
background-position: center;
position: relative;
}
.hologram-banner-scrim {
position: absolute;
inset: 0;
background: linear-gradient(180deg, transparent, rgba(10, 8, 6, 0.85));
}
.hologram-head {
position: relative;
}
.hologram-portrait-wrap {
position: absolute;
top: 52px;
left: 1rem;
z-index: 2;
filter: drop-shadow(0 8px 16px rgba(0, 0, 0, 0.45));
}
.hologram-body {
padding: 3.2rem 1rem 1rem;
font-family: 'IM Fell English', serif;
}
.hologram-meta {
margin: 0 0 0.25rem;
font-size: 0.72rem;
letter-spacing: 0.06em;
text-transform: uppercase;
color: #c9a13b;
}
.hologram-name {
margin: 0 0 0.45rem;
font-family: 'Cinzel Decorative', 'Cinzel', serif;
font-size: 1.25rem;
color: #f8e4a8;
}
.hologram-appearance,
.hologram-memory {
margin: 0 0 0.55rem;
font-size: 0.88rem;
line-height: 1.45;
color: #e8dcc0;
}
.hologram-goals {
font-size: 0.82rem;
margin-bottom: 0.45rem;
color: #d8c8a4;
}
.hologram-greeting {
margin: 0.35rem 0 0.55rem;
padding-left: 0.75rem;
border-left: 2px solid rgba(201, 161, 59, 0.45);
font-style: italic;
color: #f0e2b8;
}
/* Closed book overlay after last page */
.realm-opening.is-reclosed {
opacity: 1 !important;
visibility: visible !important;
pointer-events: auto !important;
}
.realm-opening.is-reclosed .realm-book-stage {
display: flex !important;
}
.realm-opening.is-reclosed .realm-book-closed {
opacity: 1 !important;
pointer-events: auto !important;
transform: none !important;
}
.realm-opening.is-reclosed .realm-prologue-card,
.realm-opening.is-reclosed .realm-book-open {
display: none !important;
}
.realm-cover-card {
background:
radial-gradient(circle at 22% 12%, rgba(255, 240, 198, 0.1), transparent 30%),
radial-gradient(circle at 78% 88%, rgba(0, 0, 0, 0.22), transparent 42%),
linear-gradient(155deg, #4a2e1a 0%, #2e1a10 38%, #1a0f08 100%) !important;
border-color: rgba(120, 78, 42, 0.65) !important;
}
.tome-printed-page .current-event,
.tome-printed-page .realm-pulse,
.tome-printed-page .activity-feed,
.tome-printed-page .book-container,
.tome-printed-page .entity-hologram-empty .hologram-stage {
background: rgba(255, 249, 232, 0.62) !important;
box-shadow: none !important;
border: 1px solid rgba(138, 106, 58, 0.22) !important;
}
/* ── Centered spread pages with ornaments ── */
.tome-page-centered {
justify-content: flex-start !important;
flex-wrap: nowrap !important;
gap: 0.45rem !important;
}
.tome-ornament {
text-align: center;
font-family: 'Cinzel', serif;
font-size: 0.72rem;
letter-spacing: 0.22em;
color: rgba(122, 90, 40, 0.55);
margin: 0.15rem 0;
flex-shrink: 0;
}
.tome-ornament.top { margin-bottom: 0.35rem; }
.tome-ornament.bottom { margin-top: auto; padding-top: 0.35rem; }
/* ── Location popup modal ── */
.location-panel-host {
position: relative;
min-height: 0;
}
.location-panel-host .map-hint {
text-align: center;
font-family: 'IM Fell English', serif;
font-style: italic;
color: #5c4228;
padding: 0.5rem;
}
.location-modal-overlay {
display: none;
position: fixed;
inset: 0;
z-index: 8800;
background: rgba(12, 8, 5, 0.72);
backdrop-filter: blur(4px);
align-items: center;
justify-content: center;
padding: 1rem;
}
.location-modal-overlay.is-open {
display: flex;
animation: modalFadeIn 0.35s ease;
}
@keyframes modalFadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.location-modal-card {
position: relative;
width: min(420px, 92vw);
max-height: min(78vh, 560px);
overflow: auto;
border-radius: 14px;
transform: perspective(900px) rotateX(6deg) scale(0.98);
animation: modalPop 0.42s cubic-bezier(0.34, 1.2, 0.64, 1);
box-shadow:
0 28px 64px rgba(0, 0, 0, 0.55),
0 0 40px rgba(201, 161, 59, 0.15);
}
@keyframes modalPop {
from { opacity: 0; transform: perspective(900px) rotateX(14deg) translateY(24px) scale(0.92); }
to { opacity: 1; transform: perspective(900px) rotateX(6deg) scale(0.98); }
}
.location-modal-close {
position: absolute;
top: 0.55rem;
right: 0.65rem;
z-index: 3;
width: 28px;
height: 28px;
border-radius: 50%;
background: rgba(20, 12, 8, 0.65);
color: #f4e8c8;
display: grid;
place-items: center;
cursor: pointer;
font-size: 0.9rem;
border: 1px solid rgba(201, 161, 59, 0.35);
}
.location-modal-card .location-panel {
margin: 0 !important;
border: none !important;
box-shadow: none !important;
}
/* Stacked modal — image on top, title + text below */
.location-panel-stacked {
background: linear-gradient(180deg, #f8efd8, #ead9b3) !important;
}
.location-panel-stacked .location-panel-image-wrap {
width: 100%;
height: min(200px, 34vh);
overflow: hidden;
background: #1a120c;
flex-shrink: 0;
}
.location-panel-stacked .location-panel-image {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.location-panel-stacked .location-panel-content {
padding: 1rem 1.15rem 1.2rem !important;
text-align: left;
}
.location-panel-stacked .location-panel-name {
position: static !important;
z-index: auto !important;
color: #3d2a16 !important;
font-family: 'Cinzel Decorative', 'Cinzel', serif !important;
font-size: 1.05rem !important;
letter-spacing: 0.06em;
margin: 0 0 0.55rem !important;
padding: 0 !important;
text-shadow: none !important;
line-height: 1.3;
}
.location-panel-stacked .location-panel-desc {
color: #4a3420 !important;
font-family: 'IM Fell English', serif !important;
font-size: 0.92rem !important;
line-height: 1.55 !important;
margin: 0 0 0.65rem !important;
}
.location-panel-stacked .location-panel-special {
color: #7a5528 !important;
font-family: 'IM Fell English', serif !important;
font-style: italic;
font-size: 0.84rem !important;
margin: 0 0 0.5rem !important;
opacity: 1 !important;
}
.location-panel-stacked .location-soul-count {
color: #6b4e2c !important;
font-size: 0.78rem !important;
margin: 0 !important;
padding-top: 0.45rem;
border-top: 1px solid rgba(138, 106, 58, 0.22);
}
.location-modal-card .location-panel-stacked {
border-radius: 12px;
overflow: hidden;
}
#aether-location-modal .location-modal-close {
top: 0.45rem;
right: 0.5rem;
background: rgba(12, 8, 5, 0.72);
}
.location-soul-count {
color: #5c4228;
font-size: 0.8rem;
margin-bottom: 0.75rem;
font-family: 'IM Fell English', serif;
}
/* ── Explore spread — force 3D diorama visible ── */
.tome-explore-index,
.tome-explore-stage {
display: flex !important;
flex-direction: column !important;
min-height: 0 !important;
flex: 1 1 auto !important;
}
.tome-explore-index .place-ribbon {
flex: 1 1 auto;
min-height: 180px;
}
.tome-explore-index .place-ribbon-list {
flex: 1 1 auto;
min-height: 120px;
max-height: 420px;
scrollbar-width: none;
}
.tome-explore-index .place-ribbon-list::-webkit-scrollbar {
display: none;
width: 0;
}
.tome-explore-stage > .block,
.tome-explore-stage > .form,
.tome-explore-stage #explore-diorama-host,
.tome-explore-stage #explore-diorama-host > div {
flex: 1 1 auto !important;
min-height: 260px !important;
display: flex !important;
flex-direction: column !important;
}
.tome-explore-stage .diorama-wrap {
flex: 1 1 auto !important;
min-height: 260px !important;
max-height: 100% !important;
margin: 0 !important;
display: flex !important;
flex-direction: column !important;
}
.tome-explore-stage .diorama-header {
display: none !important;
}
.tome-explore-stage .diorama-stage {
flex: 1 1 auto !important;
min-height: 240px !important;
}
.tome-explore-stage .diorama-frame {
min-height: 240px !important;
height: 100% !important;
max-height: 400px !important;
}
.tome-explore-stage .diorama-empty {
flex: 1 1 auto;
min-height: 240px;
display: grid;
place-items: center;
padding: 1rem;
text-align: center;
border: 1px dashed rgba(138, 106, 58, 0.35);
border-radius: 12px;
font-family: 'IM Fell English', serif;
}
/* ── Souls spread fix ── */
.tome-souls-index,
.tome-souls-stage {
display: flex !important;
flex-direction: column !important;
min-height: 0 !important;
}
.tome-souls-index .entity-grid {
flex: 1 1 auto;
max-height: none;
min-height: 200px;
}
.tome-souls-stage .entity-hologram {
flex: 1 1 auto;
min-height: 280px;
}
#tome-spreads [role="tabpanel"]:has(#entities) .featured-section {
display: none !important;
}
/* ── Book 3D cover flip ── */
.realm-book-3d {
position: relative;
width: min(760px, 94vw);
margin: 0 auto;
box-sizing: border-box;
transform-style: preserve-3d;
transition: transform 1.15s cubic-bezier(0.45, 0, 0.2, 1);
}
.realm-book-3d.show-back {
transform: rotateY(180deg);
}
.realm-book-3d.is-opening {
opacity: 0;
pointer-events: none;
transition: opacity 0.85s ease;
}
.realm-book-face {
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
}
.realm-book-closed,
.realm-book-front {
position: relative;
width: 100%;
transform-style: preserve-3d;
}
.realm-book-back {
position: absolute;
inset: 0;
transform: rotateY(180deg);
}
.realm-book-closed .realm-book-spine {
left: 0 !important;
top: 10px !important;
bottom: 10px !important;
width: 16px !important;
height: auto !important;
transform: translateX(-100%) !important;
border-radius: 8px 0 0 8px !important;
z-index: 1;
}
.realm-cover-back {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: min(380px, 58vh);
background:
radial-gradient(circle at 30% 20%, rgba(255, 240, 198, 0.08), transparent 32%),
radial-gradient(circle at 70% 80%, rgba(0, 0, 0, 0.28), transparent 40%),
linear-gradient(155deg, #3d2616 0%, #24150c 42%, #120a06 100%) !important;
}
.realm-back-ornament {
font-size: 2.4rem;
color: rgba(201, 161, 59, 0.45);
margin-bottom: 0.75rem;
}
.realm-back-text {
font-family: 'IM Fell English', serif;
font-style: italic;
color: #d8c49a;
line-height: 1.55;
margin: 0 0 1.25rem;
max-width: 22rem;
}
.realm-opening.is-reclosed .realm-book-stage {
display: flex !important;
align-items: center;
justify-content: center;
}
.realm-opening.is-reclosed .realm-book-3d {
opacity: 1 !important;
pointer-events: auto !important;
}
.realm-opening.is-closing .realm-book-stage {
perspective: 1400px;
}
.realm-opening.is-back-visible .realm-book-open,
.realm-opening.is-back-visible .realm-prologue-card {
display: none !important;
}
/* ═══════════════════════════════════════════════════════════════════════════
FIX PACK — centering, book edges, interactions, readability
═══════════════════════════════════════════════════════════════════════════ */
#realm-opening-host,
#realm-opening-host > .block,
#realm-opening-host .html-container {
position: fixed !important;
inset: 0 !important;
width: 100vw !important;
height: 100vh !important;
max-width: none !important;
margin: 0 !important;
padding: 0 !important;
left: 0 !important;
right: 0 !important;
transform: none !important;
z-index: 99999 !important;
pointer-events: none !important;
}
/* After hoist, empty host must not blanket the realm */
#realm-opening-host:not(:has(#realm-opening)),
#realm-opening-host:empty,
body.aether-realm-entered #realm-opening-host {
display: none !important;
visibility: hidden !important;
pointer-events: none !important;
width: 0 !important;
height: 0 !important;
overflow: hidden !important;
z-index: -1 !important;
}
#realm-opening.realm-opening-hoisted.is-closed {
display: none !important;
pointer-events: none !important;
}
#realm-opening-host .realm-opening,
#realm-opening.realm-opening-hoisted {
position: fixed !important;
inset: 0 !important;
width: 100vw !important;
height: 100vh !important;
max-width: none !important;
margin: 0 !important;
padding: 0 !important;
left: 0 !important;
right: 0 !important;
transform: none !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
z-index: 99999 !important;
pointer-events: auto !important;
overflow-x: clip !important;
overflow-y: auto !important;
}
.realm-opening.is-closed {
pointer-events: none !important;
}
.realm-opening-inner {
position: relative !important;
width: min(820px, 92vw) !important;
min-height: min(480px, 72vh) !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
margin: 0 auto !important;
flex-shrink: 0 !important;
}
.realm-opening.is-unfolding .realm-opening-inner,
.realm-opening.is-prologue .realm-opening-inner {
min-height: min(480px, 72vh) !important;
}
.realm-book-stage {
width: 100% !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
margin: 0 auto !important;
}
.realm-book-3d {
width: min(760px, 94vw) !important;
margin-left: auto !important;
margin-right: auto !important;
box-sizing: border-box !important;
}
.realm-book-3d .realm-cover-card {
width: 100% !important;
max-width: 100% !important;
min-height: min(380px, 58vh) !important;
margin: 0 auto !important;
flex-shrink: 0 !important;
}
.realm-cover-front,
.realm-cover-back {
border: 3px solid rgba(92, 58, 28, 0.75) !important;
outline: 1px solid rgba(201, 161, 59, 0.35) !important;
outline-offset: 3px;
box-shadow:
inset 0 2px 0 rgba(255, 240, 198, 0.12),
inset 0 -3px 8px rgba(0, 0, 0, 0.35),
0 22px 60px rgba(0, 0, 0, 0.55) !important;
}
/* Book spread — leather edge frame (top + sides) */
.realm-tabs [role="tabpanel"] {
box-shadow:
inset 0 14px 20px -6px rgba(48, 28, 14, 0.18),
inset 14px 0 18px -8px rgba(72, 44, 18, 0.12),
inset -14px 0 18px -8px rgba(72, 44, 18, 0.12),
inset 0 -8px 16px rgba(168, 134, 83, 0.1),
0 18px 38px rgba(76, 50, 22, 0.26) !important;
}
/* Page I — content prints directly on parchment, no nested cards */
.tome-page-left.tome-page-centered {
display: flex !important;
flex-direction: column !important;
justify-content: flex-start !important;
gap: 0 !important;
min-height: 0 !important;
background: transparent !important;
border: none !important;
border-radius: 0 !important;
box-shadow: none !important;
}
.tome-page-left .tome-ornament.top {
margin-bottom: 0.15rem !important;
}
.tome-page-left .tome-printed-kicker {
margin: 0 0 0.08rem !important;
font-size: 0.92rem !important;
text-align: center;
}
.tome-page-left .tome-printed-hint {
margin: 0 0 0.3rem !important;
font-size: 0.8rem !important;
line-height: 1.35 !important;
text-align: center;
}
.tome-page-right.tome-page-centered {
display: flex !important;
flex-direction: column !important;
justify-content: flex-start !important;
gap: 0.3rem !important;
min-height: 0 !important;
position: relative !important;
background: transparent !important;
border: none !important;
border-radius: 0 !important;
box-shadow: none !important;
overflow: hidden !important;
}
.tome-page-right.tome-page-centered::after {
content: "❧";
position: absolute;
right: 0.55rem;
bottom: 0.45rem;
font-size: 1.15rem;
color: rgba(138, 106, 58, 0.22);
pointer-events: none;
z-index: 0;
}
.tome-page-right .tome-printed-kicker {
margin: 0 0 0.08rem !important;
font-size: 0.92rem !important;
text-align: center;
}
.tome-page-right .tome-printed-hint {
margin: 0 0 0.35rem !important;
font-size: 0.8rem !important;
text-align: center;
line-height: 1.35 !important;
}
.tome-page-left > .block,
.tome-page-left > .form,
.tome-page-right > .block,
.tome-page-right > .form,
.tome-page-left .html-container,
.tome-page-right .html-container {
width: 100% !important;
max-width: 100% !important;
}
.tome-page-right .realm-stats-strip {
width: 100% !important;
max-width: 100% !important;
margin-left: auto !important;
margin-right: auto !important;
justify-content: space-around !important;
text-align: center;
margin-bottom: 0.3rem !important;
border: 1px solid rgba(138, 106, 58, 0.2);
background: rgba(255, 249, 232, 0.62) !important;
}
.tome-realm-vignette,
.tome-realm-vignette .world-vignette {
width: 100% !important;
margin: 0 0 0.3rem !important;
}
.tome-page-right .world-vignette {
padding: 0.55rem 0.7rem !important;
border: 1px solid rgba(138, 106, 58, 0.22) !important;
border-radius: 4px !important;
background:
linear-gradient(135deg, rgba(255, 249, 232, 0.72), rgba(244, 228, 194, 0.45)) !important;
box-shadow: inset 0 0 18px rgba(58, 36, 14, 0.06) !important;
}
.tome-page-right .vignette-label {
font-family: 'Cinzel', serif !important;
font-size: 0.62rem !important;
letter-spacing: 0.18em !important;
text-transform: uppercase !important;
color: #8a6424 !important;
margin: 0 0 0.25rem !important;
}
.tome-page-right .vignette-title {
font-family: 'Cinzel Decorative', 'Cinzel', serif !important;
font-size: 0.95rem !important;
color: #4a3420 !important;
margin: 0 0 0.35rem !important;
}
.tome-page-right .vignette-text {
font-family: 'IM Fell English', serif !important;
font-style: italic;
font-size: 0.84rem !important;
line-height: 1.5 !important;
color: #5c4228 !important;
margin: 0 !important;
}
.tome-page-right .current-event {
width: 100% !important;
padding: 0.65rem 0.75rem !important;
margin: 0 0 0.3rem !important;
border: 1px solid rgba(138, 106, 58, 0.24) !important;
border-radius: 4px !important;
background: rgba(255, 249, 232, 0.5) !important;
}
.tome-page-right.tome-page-centered .realm-pulse {
display: none !important;
}
.tome-page-right .pulse-header {
margin-bottom: 0.45rem !important;
}
.tome-page-right .pulse-track {
flex-direction: column !important;
overflow: hidden !important;
gap: 0.45rem !important;
max-width: 100% !important;
padding-bottom: 0 !important;
scrollbar-width: none !important;
}
.tome-page-right .pulse-track::-webkit-scrollbar {
display: none !important;
width: 0 !important;
height: 0 !important;
}
.tome-page-right .pulse-track .pulse-card {
flex: 0 0 auto !important;
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
box-sizing: border-box !important;
overflow: hidden !important;
word-break: break-word !important;
background: rgba(255, 252, 240, 0.65) !important;
border: 1px solid rgba(138, 106, 58, 0.18) !important;
}
.tome-page-right .pulse-card:nth-child(n+3) {
display: none !important;
}
.tome-page-right .pulse-title,
.tome-page-right .pulse-headline {
color: #4a3420 !important;
}
.tome-page-right .pulse-detail {
color: #5c4228 !important;
}
.tome-page-right .activity-feed {
width: 100% !important;
padding: 0.5rem 0.65rem !important;
margin: 0 0 0.3rem !important;
border: 1px solid rgba(138, 106, 58, 0.2) !important;
border-radius: 4px !important;
background: rgba(255, 249, 232, 0.4) !important;
max-height: 11.5rem !important;
overflow-y: auto !important;
overflow-x: hidden !important;
-webkit-overflow-scrolling: touch;
scrollbar-width: thin;
}
.tome-page-right .activity-feed::-webkit-scrollbar {
width: 5px;
}
.tome-page-right .activity-feed::-webkit-scrollbar-thumb {
background: rgba(138, 106, 58, 0.45);
border-radius: 4px;
}
.tome-page-right .activity-feed::before {
content: "Recent Pages";
display: block;
font-family: 'Cinzel', serif;
font-size: 0.62rem;
letter-spacing: 0.16em;
text-transform: uppercase;
color: #8a6424;
margin-bottom: 0.35rem;
}
.tome-page-right .realm-summon-block {
width: 100% !important;
margin-top: 0.25rem !important;
padding: 0.5rem 0.6rem 0.35rem !important;
border: 1px solid rgba(138, 106, 58, 0.22) !important;
border-radius: 4px !important;
background: rgba(255, 249, 232, 0.55) !important;
text-align: center;
}
.tome-page-right .tome-ornament.bottom {
margin-top: auto !important;
padding-top: 0.2rem !important;
}
.tome-page-left .tome-ornament.bottom {
margin-top: auto !important;
padding-top: 0.2rem !important;
}
.tome-map-chrome {
display: flex;
align-items: center;
justify-content: center;
gap: 0.45rem;
margin: 0.1rem 0 0.15rem;
flex-shrink: 0;
}
.tome-map-chrome-line {
flex: 1;
max-width: 72px;
height: 1px;
background: linear-gradient(90deg, transparent, rgba(138, 106, 58, 0.35), transparent);
}
.tome-map-chrome-label {
font-family: 'Cinzel', serif;
font-size: 0.58rem;
letter-spacing: 0.2em;
text-transform: uppercase;
color: rgba(122, 90, 40, 0.55);
white-space: nowrap;
}
.tome-map-chrome-glyph {
color: rgba(138, 106, 58, 0.45);
font-size: 0.7rem;
}
.tome-map-divider {
display: flex;
align-items: center;
justify-content: center;
gap: 0.5rem;
margin: 0.12rem 0 0.08rem;
flex-shrink: 0;
}
.tome-map-divider-text {
font-family: 'Cinzel', serif;
font-size: 0.58rem;
letter-spacing: 0.16em;
color: rgba(122, 90, 40, 0.5);
white-space: nowrap;
}
.tome-map-vine {
flex: 1;
height: 10px;
max-width: 88px;
background-repeat: no-repeat;
background-size: contain;
opacity: 0.55;
}
.tome-map-vine.left {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 10'%3E%3Cpath d='M0 5 Q20 0 40 5 T80 5' fill='none' stroke='%238a6a3a' stroke-width='0.8'/%3E%3Ccircle cx='40' cy='5' r='1.2' fill='%23c9a13b'/%3E%3C/svg%3E");
background-position: right center;
}
.tome-map-vine.right {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 10'%3E%3Cpath d='M0 5 Q20 10 40 5 T80 5' fill='none' stroke='%238a6a3a' stroke-width='0.8'/%3E%3Ccircle cx='40' cy='5' r='1.2' fill='%23c9a13b'/%3E%3C/svg%3E");
background-position: left center;
}
.tome-page-centered .realm-stats-strip,
.tome-page-centered .current-event,
.tome-page-centered .realm-pulse,
.tome-page-centered .activity-feed {
flex-shrink: 0;
margin-bottom: 0.35rem !important;
}
.tome-page-centered .realm-summon-block,
.tome-page-centered .realm-summon-input,
.tome-page-centered .seal-summon-btn {
flex-shrink: 0;
}
.tome-page-left .realm-map,
.tome-page-left #world-map {
flex: 1 1 auto !important;
width: 100% !important;
max-width: 100% !important;
min-height: 280px !important;
max-height: none !important;
margin: 0.3rem auto 0 !important;
border: 1px solid rgba(98, 62, 28, 0.3) !important;
border-radius: 3px !important;
padding: 0.28rem !important;
background: rgba(10, 14, 12, 0.06) !important;
box-shadow: inset 0 0 22px rgba(58, 36, 14, 0.1) !important;
}
.tome-page-left #world-map .html-container,
.tome-page-left #world-map .prose {
min-height: 0 !important;
}
.tome-page-left .location-panel-host,
.tome-page-left #location-panel-host-wrap {
flex-shrink: 0 !important;
margin: 0.3rem 0 0 !important;
width: 100% !important;
}
.tome-page-left .location-panel-host .map-hint {
padding: 0.4rem 0.5rem 0.35rem !important;
margin: 0 !important;
font-size: 0.76rem !important;
line-height: 1.4 !important;
border-top: 1px solid rgba(138, 106, 58, 0.22);
text-align: center;
}
.tome-page-left .map-hint-selected {
text-align: left;
background: rgba(255, 249, 232, 0.55);
border: 1px solid rgba(138, 106, 58, 0.2);
border-radius: 3px;
padding: 0.45rem 0.55rem !important;
}
.tome-page-left .map-hint-selected strong {
font-family: 'Cinzel', serif;
color: #5c3e1e;
font-weight: 600;
}
.tome-page-left .map-hint-sub {
color: #6b4e2c;
font-style: italic;
}
.tome-page-left .map-hint-glyph {
color: #a8843a;
}
#aether-location-modal {
z-index: 90000 !important;
}
/* Explore spread — centered headers, balanced gutters */
.tome-explore-index {
padding: 0.65rem 1.2rem 0.75rem 1.2rem !important;
gap: 0.5rem !important;
text-align: center;
align-items: center !important;
}
.tome-explore-stage-header {
text-align: center;
width: 100%;
margin: 0 0 0.2rem;
flex-shrink: 0;
}
.tome-explore-stage-header .tome-ornament.top {
margin-bottom: 0.1rem !important;
font-size: 0.62rem !important;
}
.tome-explore-stage-header .tome-printed-kicker,
.tome-explore-stage-header .explore-controls-hint {
text-align: center;
margin-left: auto;
margin-right: auto;
max-width: 100%;
}
.tome-explore-stage-header .tome-printed-kicker {
font-size: 0.68rem !important;
margin-bottom: 0.05rem !important;
}
.tome-explore-stage-header .explore-controls-hint {
font-size: 0.72rem !important;
margin-bottom: 0.2rem !important;
line-height: 1.3 !important;
}
.tome-explore-index .place-ribbon-item {
padding: 0.5rem 0.55rem !important;
margin-bottom: 0.15rem;
}
.tome-explore-index .wander-btn,
.tome-explore-index button {
margin-top: 0.35rem !important;
}
.tome-explore-stage {
padding: 0.5rem 1.2rem 0.55rem 1.2rem !important;
text-align: center;
align-items: center !important;
min-height: 0 !important;
}
.tome-explore-stage > .block:has(#explore-diorama-host) {
flex: 1 1 auto !important;
min-height: 420px !important;
max-height: 100% !important;
width: 100% !important;
display: flex !important;
flex-direction: column !important;
overflow: hidden !important;
order: 1;
margin: 0 !important;
}
.tome-explore-stage > .block:has(.tome-explore-stage-header) {
flex: 0 0 auto !important;
width: 100% !important;
min-height: auto !important;
order: 2;
margin-top: 0.25rem !important;
}
.tome-explore-stage .diorama-header {
display: none !important;
}
.tome-explore-stage .diorama-wrap {
flex: 1 1 auto !important;
min-height: 400px !important;
margin: 0 !important;
width: 100% !important;
border-radius: 8px !important;
}
.tome-explore-stage .diorama-stage {
flex: 1 1 auto !important;
min-height: 400px !important;
}
.tome-explore-stage .diorama-frame {
min-height: 400px !important;
height: 100% !important;
max-height: none !important;
background: #0c1410 !important;
}
/* Stacked page fore-edges — cinematic book, not flat panels */
.tome-spread-row > .column.tome-page-left,
.tome-spread-row > .column.tome-page-right {
position: relative !important;
}
.tome-spread-row > .column.tome-page-left::after {
content: "";
position: absolute;
top: 3%;
bottom: 3%;
right: 0.15rem;
width: 6px;
pointer-events: none;
z-index: 4;
border-radius: 0 2px 2px 0;
background:
repeating-linear-gradient(
180deg,
rgba(88, 56, 24, 0.22) 0 1px,
rgba(255, 249, 232, 0.55) 1px 2.5px,
rgba(72, 44, 18, 0.14) 2.5px 3.5px
);
box-shadow: 2px 0 5px rgba(48, 28, 14, 0.1);
}
.tome-spread-row > .column.tome-page-right::before {
content: "";
position: absolute;
top: 3%;
bottom: 3%;
left: 0.15rem;
width: 6px;
pointer-events: none;
z-index: 4;
border-radius: 2px 0 0 2px;
background:
repeating-linear-gradient(
180deg,
rgba(88, 56, 24, 0.22) 0 1px,
rgba(255, 249, 232, 0.55) 1px 2.5px,
rgba(72, 44, 18, 0.14) 2.5px 3.5px
);
box-shadow: -2px 0 5px rgba(48, 28, 14, 0.1);
}
.realm-tabs [role="tabpanel"]::before {
background:
linear-gradient(90deg, transparent 0 46.5%, rgba(255,255,255,0.14) 47.8%, transparent 49%),
linear-gradient(90deg, transparent 51%, rgba(255,255,255,0.14) 52.2%, transparent 53.5%),
radial-gradient(circle at 12% 18%, rgba(113, 82, 42, 0.06) 0 2px, transparent 2px),
radial-gradient(circle at 70% 74%, rgba(113, 82, 42, 0.05) 0 1.5px, transparent 1.5px) !important;
opacity: 0.42 !important;
}
/* ── Spread pages: balanced gutters + centered content ── */
.tome-spread-row > .column.tome-page-left.tome-printed-page,
.tome-spread-row > .column.tome-page-right.tome-printed-page,
.tome-spread-row > .column.tome-explore-index,
.tome-spread-row > .column.tome-explore-stage {
flex-wrap: nowrap !important;
align-content: flex-start !important;
align-items: stretch !important;
overflow-x: hidden !important;
overflow-y: hidden !important;
box-sizing: border-box !important;
}
.tome-spread-row > .column.tome-page-left.tome-printed-page {
padding: 0.7rem 2.25rem 0.55rem 1.15rem !important;
border-right: none !important;
}
.tome-spread-row > .column.tome-page-right.tome-printed-page {
padding: 0.7rem 1.15rem 0.55rem 2.25rem !important;
}
.tome-spread-row > .column.tome-printed-page > .block,
.tome-spread-row > .column.tome-printed-page > .form {
width: 100% !important;
max-width: 100% !important;
margin-left: auto !important;
margin-right: auto !important;
box-sizing: border-box !important;
overflow: hidden !important;
min-width: 0 !important;
}
.tome-spread-row > .column.tome-printed-page .html-container,
.tome-spread-row > .column.tome-printed-page .prose {
max-width: 100% !important;
overflow: hidden !important;
}
/* Page I right — hide pulse + collapsed Gradio blocks that bleed on outer edge */
.tome-page-right.tome-page-centered > .block:has(.realm-pulse),
.tome-page-right.tome-page-centered > .block.hidden,
.tome-page-right.tome-page-centered > .form.hidden,
.tome-page-right.tome-page-centered > .block:has(.share-caption-box.hidden),
.tome-page-right.tome-page-centered > .block:has(.soul-card-image.hidden) {
display: none !important;
height: 0 !important;
min-height: 0 !important;
max-height: 0 !important;
margin: 0 !important;
padding: 0 !important;
overflow: hidden !important;
border: none !important;
box-shadow: none !important;
}
.tome-page-right.tome-page-centered .realm-summon-input,
.tome-page-right.tome-page-centered .realm-summon-input textarea {
width: 100% !important;
max-width: 100% !important;
box-sizing: border-box !important;
resize: vertical !important;
}
.tome-explore-index .place-ribbon,
.tome-explore-index .place-ribbon-list,
.tome-explore-index .wander-btn {
width: 100% !important;
max-width: 100% !important;
margin-left: auto !important;
margin-right: auto !important;
box-sizing: border-box !important;
}
/* Souls — parchment hologram (readable) */
.tome-souls-stage .hologram-stage {
background: linear-gradient(168deg, #faf3df 0%, #ebe0c4 55%, #dccca8 100%) !important;
border: 1px solid rgba(138, 106, 58, 0.45) !important;
box-shadow:
inset 0 0 24px rgba(88, 56, 24, 0.08),
0 12px 28px rgba(76, 50, 22, 0.18) !important;
transform: none !important;
color: #3d2814 !important;
}
.tome-souls-stage .hologram-beam {
display: none;
}
.tome-souls-stage .hologram-meta {
color: #8a6424 !important;
}
.tome-souls-stage .hologram-name {
color: #3d2814 !important;
font-family: 'Cinzel Decorative', 'Cinzel', serif !important;
}
.tome-souls-stage .hologram-appearance,
.tome-souls-stage .hologram-memory,
.tome-souls-stage .hologram-goals {
color: #4a3420 !important;
font-family: 'IM Fell English', serif !important;
line-height: 1.5 !important;
}
.tome-souls-stage .hologram-greeting {
color: #5c4228 !important;
border-left-color: rgba(138, 106, 58, 0.55) !important;
}
.tome-souls-stage .hologram-banner {
height: 72px;
}
.tome-souls-index .entity-grid-card.is-selected {
outline: 2px solid rgba(138, 106, 58, 0.75);
outline-offset: 2px;
box-shadow: 0 6px 16px rgba(76, 50, 22, 0.2) !important;
}
.tome-souls-index {
padding: 0.55rem 1.2rem 0.65rem 1.2rem !important;
align-items: stretch !important;
display: flex !important;
flex-direction: column !important;
gap: 0.25rem !important;
overflow: hidden !important;
}
.tome-souls-index .entity-grid {
max-height: 100% !important;
overflow-y: auto !important;
overflow-x: hidden !important;
flex: 1 1 auto !important;
min-height: 0 !important;
padding: 0.35rem 0.1rem 0.35rem 0 !important;
margin-top: 0.15rem !important;
}
.tome-souls-index .entity-grid-card {
display: grid !important;
grid-template-columns: 52px minmax(0, 1fr) !important;
gap: 0.6rem !important;
align-items: start !important;
min-height: auto !important;
padding: 0.5rem 0.55rem !important;
background: rgba(255, 249, 232, 0.78) !important;
border: 1px solid rgba(138, 106, 58, 0.28) !important;
border-radius: 8px !important;
overflow: visible !important;
box-shadow: none !important;
}
.tome-souls-index .grid-card-scrim {
display: none !important;
}
.tome-souls-index .grid-card-portrait {
width: 52px;
height: 52px;
display: flex;
align-items: center;
justify-content: center;
}
.tome-souls-index .grid-card-portrait .entity-avatar {
width: 48px !important;
height: 48px !important;
flex-shrink: 0;
}
.tome-souls-index .grid-card-body {
min-width: 0;
overflow: visible;
}
.tome-souls-index .grid-card-name {
font-family: 'Cinzel', serif !important;
font-size: 0.82rem !important;
color: #3d2814 !important;
margin: 0.1rem 0 !important;
line-height: 1.25 !important;
}
.tome-souls-index .grid-card-type {
font-family: 'Cinzel', serif !important;
font-size: 0.58rem !important;
letter-spacing: 0.14em !important;
color: #8a6424 !important;
}
.tome-souls-index .grid-card-preview {
font-family: 'IM Fell English', serif !important;
font-size: 0.78rem !important;
line-height: 1.4 !important;
color: #5c4228 !important;
margin: 0.15rem 0 0 !important;
display: block !important;
-webkit-line-clamp: unset !important;
overflow: visible !important;
}
.tome-souls-index .grid-card-location,
.tome-souls-index .grid-card-meta {
font-size: 0.68rem !important;
color: #7a5a28 !important;
}
.tome-souls-stage {
overflow: hidden !important;
align-items: stretch !important;
display: flex !important;
flex-direction: column !important;
min-height: 0 !important;
}
.tome-souls-stage > .block {
flex: 1 1 auto !important;
min-height: 0 !important;
overflow: hidden !important;
display: flex !important;
flex-direction: column !important;
}
.tome-souls-stage .entity-hologram {
flex: 1 1 auto !important;
min-height: 0 !important;
overflow: hidden !important;
display: flex !important;
flex-direction: column !important;
}
.tome-souls-stage .hologram-stage {
flex: 1 1 auto !important;
min-height: 0 !important;
max-height: 100% !important;
overflow: hidden !important;
display: flex !important;
flex-direction: column !important;
}
.tome-souls-stage .hologram-banner {
flex: 0 0 auto !important;
height: 4.5rem !important;
min-height: 4.5rem !important;
border-radius: 8px 8px 0 0;
background-size: cover !important;
background-position: center !important;
}
.tome-souls-stage .hologram-scroll {
flex: 1 1 auto !important;
min-height: 0 !important;
max-height: min(420px, calc(100dvh - 14rem)) !important;
overflow-y: auto !important;
overflow-x: hidden !important;
padding: 0.7rem 0.85rem 1rem !important;
-webkit-overflow-scrolling: touch;
scrollbar-width: thin;
touch-action: pan-y;
}
.tome-souls-stage .hologram-scroll::-webkit-scrollbar {
width: 5px;
}
.tome-souls-stage .hologram-scroll::-webkit-scrollbar-thumb {
background: rgba(138, 106, 58, 0.45);
border-radius: 4px;
}
.tome-souls-stage .hologram-identity-row {
display: grid !important;
grid-template-columns: 76px minmax(0, 1fr) !important;
gap: 0.75rem !important;
align-items: start !important;
margin-bottom: 0.7rem !important;
}
.tome-souls-stage .hologram-portrait-wrap {
position: static !important;
top: auto !important;
left: auto !important;
transform: none !important;
float: none !important;
margin: 0 !important;
width: 72px;
height: 72px;
}
.tome-souls-stage .hologram-portrait-wrap .entity-avatar {
width: 72px !important;
height: 72px !important;
}
.tome-souls-stage .hologram-identity-text {
min-width: 0;
}
.tome-souls-stage .hologram-meta,
.tome-souls-stage .hologram-name,
.tome-souls-stage .hologram-appearance,
.tome-souls-stage .hologram-goals,
.tome-souls-stage .hologram-goals p,
.tome-souls-stage .hologram-greeting,
.tome-souls-stage .hologram-memory {
overflow: visible !important;
text-overflow: unset !important;
-webkit-line-clamp: unset !important;
max-height: none !important;
line-height: 1.65 !important;
margin-bottom: 0.55rem !important;
}
.tome-souls-stage .hologram-name {
margin-bottom: 0.35rem !important;
line-height: 1.3 !important;
}
/* Bonds — compact cards */
.bond-cards {
display: flex;
flex-direction: column;
gap: 0.4rem;
overflow-y: auto;
max-height: 380px;
padding-right: 0.2rem;
}
.bond-card {
padding: 0.45rem 0.55rem;
border-radius: 8px;
border-left: 3px solid var(--bond-color, #8a6a3a);
background: rgba(255, 249, 232, 0.72);
border: 1px solid rgba(138, 106, 58, 0.22);
border-left-width: 3px;
border-left-color: var(--bond-color, #8a6a3a);
}
.bond-card-type {
font-family: 'Cinzel', serif;
font-size: 0.62rem;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--bond-color, #8a6a3a);
}
.bond-card-names {
margin: 0.15rem 0;
font-family: 'Cinzel', serif;
font-size: 0.78rem;
color: #3d2814;
line-height: 1.25;
}
.bond-card-desc {
margin: 0;
font-family: 'IM Fell English', serif;
font-style: italic;
font-size: 0.76rem;
color: #5c4228;
line-height: 1.35;
}
.bonds-legend-compact {
margin-bottom: 0.35rem;
}
.bonds-legend-compact .rel-legend-item {
font-size: 0.68rem;
}
.bonds-sidebar .rel-list {
display: none;
}
/* Book day view — fill right page */
.tome-book-index + .column .book-day-view,
.tome-page-right .book-day-view {
min-height: 200px;
}
.tome-page-right .book-entries {
overflow-y: auto !important;
max-height: 420px !important;
}
.tome-book-index {
padding: 0.55rem 0.75rem !important;
gap: 0.45rem !important;
}
/* Location modal always on top */
.location-modal-overlay.is-open {
z-index: 9900 !important;
}
/* Back cover — match front "Open The Tome" button */
#realm-reopen-enter {
margin-top: 1rem;
border: 1px solid rgba(227, 184, 93, 0.58);
border-radius: 999px;
padding: 0.6rem 1.2rem;
font-family: 'Cinzel', serif;
font-size: 0.76rem;
letter-spacing: 0.12em;
text-transform: uppercase;
background: linear-gradient(180deg, rgba(227, 184, 93, 0.3), rgba(227, 184, 93, 0.14));
color: #fff4dd;
cursor: pointer;
}
#realm-reopen-enter:hover {
background: linear-gradient(180deg, rgba(227, 184, 93, 0.42), rgba(110, 201, 188, 0.2));
}
/* Page VI — Summon spread */
.tome-summon-index,
.tome-summon-stage {
flex-wrap: nowrap !important;
overflow-x: hidden !important;
overflow-y: auto !important;
justify-content: flex-start !important;
gap: 0.75rem !important;
}
.tome-summon-index > .block,
.tome-summon-index > .form,
.tome-summon-index > button {
flex-shrink: 0;
margin-bottom: 0.2rem !important;
}
.tome-summon-index .tome-printed-kicker {
margin: 0 0 0.45rem !important;
line-height: 1.35 !important;
}
.tome-summon-index .summon-prompt-input {
flex: 0 0 auto !important;
width: 100% !important;
max-width: 100% !important;
min-height: 0 !important;
display: block !important;
}
.tome-summon-index .summon-prompt-input textarea {
flex: 0 0 auto !important;
min-height: 6.5rem !important;
max-height: 8.5rem !important;
}
.tome-summon-index .summon-leaf-hint {
font-family: 'IM Fell English', serif;
font-style: italic;
font-size: 0.82rem;
color: #5c4228;
text-align: center;
margin: 0 0 0.85rem;
line-height: 1.7;
}
.tome-summon-index .summon-prompt-input textarea {
font-family: 'IM Fell English', serif !important;
font-size: 0.92rem !important;
line-height: 1.7 !important;
padding: 0.7rem 0.8rem !important;
}
.tome-summon-index .summon-prompt-input {
margin-bottom: 0.35rem !important;
}
.tome-summon-index .seal-summon-btn,
.tome-summon-index button.seal-summon-btn,
.tome-summon-index #summon-seal-btn {
flex: 0 0 auto !important;
display: block !important;
visibility: visible !important;
opacity: 1 !important;
width: 100% !important;
max-width: 100% !important;
min-height: 3rem !important;
margin: 0.25rem auto 0.85rem !important;
padding: 0.72rem 1.35rem !important;
font-size: 0.84rem !important;
font-weight: 600 !important;
letter-spacing: 0.1em !important;
text-transform: uppercase !important;
color: #fff8e8 !important;
background: linear-gradient(180deg, #d43845 0%, #8f1a28 55%, #6e1018 100%) !important;
border: 2px solid #f2d8a0 !important;
box-shadow:
0 0 0 3px rgba(201, 42, 56, 0.18),
0 8px 22px rgba(100, 18, 28, 0.38) !important;
position: relative !important;
z-index: 5 !important;
cursor: pointer !important;
pointer-events: auto !important;
filter: none !important;
transition: transform 0.15s ease, box-shadow 0.15s ease !important;
}
.tome-summon-index #summon-seal-btn:hover,
.tome-summon-index button.seal-summon-btn:hover {
transform: translateY(-1px) !important;
box-shadow:
0 0 0 3px rgba(201, 42, 56, 0.28),
0 12px 26px rgba(100, 18, 28, 0.45) !important;
}
.tome-summon-index .summon-submit-hint {
font-family: 'Cinzel', serif;
font-size: 0.62rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: #8a6424;
text-align: center;
margin: 0.65rem 0 0.4rem;
line-height: 1.55;
}
.tome-summon-stage {
overflow-y: auto !important;
align-items: stretch !important;
}
.tome-summon-stage > .block:has(.entity-result-slot),
.tome-summon-stage .entity-result-slot {
flex: 1 1 auto !important;
min-height: 0 !important;
overflow: visible !important;
}
.tome-summon-stage .entity-card .entity-card-top {
margin-top: 0 !important;
}
.tome-summon-stage .entity-result-slot,
.tome-summon-stage .entity-result-slot .block {
width: 100% !important;
max-width: 100% !important;
overflow: visible !important;
}
.summon-reveal-empty {
padding: 1.25rem 1rem;
border: 1px dashed rgba(138, 106, 58, 0.38);
border-radius: 10px;
background: rgba(255, 249, 232, 0.55);
text-align: center;
margin: 0.25rem 0 0.5rem;
}
.summon-reveal-kicker {
font-family: 'Cinzel Decorative', 'Cinzel', serif;
font-size: 0.95rem;
color: #4a3420;
margin: 0 0 0.35rem;
}
.summon-reveal-hint {
font-family: 'IM Fell English', serif;
font-style: italic;
font-size: 0.86rem;
line-height: 1.5;
color: #5c4228;
margin: 0;
}
.tome-summon-stage .entity-card {
background: rgba(255, 249, 232, 0.72) !important;
border: 1px solid rgba(138, 106, 58, 0.32) !important;
border-radius: 10px !important;
padding: 0 !important;
color: #3d2814 !important;
box-shadow: inset 0 0 18px rgba(88, 56, 24, 0.06) !important;
overflow: visible !important;
max-height: none !important;
}
.tome-summon-stage .entity-card-banner {
height: 9.5rem !important;
min-height: 9.5rem !important;
width: 100% !important;
margin: 0 !important;
border-radius: 10px 10px 0 0 !important;
background-size: cover !important;
background-position: center center !important;
}
.tome-summon-stage .entity-card-banner-scrim {
display: block !important;
background: linear-gradient(180deg, rgba(12, 10, 8, 0.05) 0%, rgba(255, 249, 232, 0.92) 100%) !important;
}
.tome-summon-stage .entity-card-top {
display: grid !important;
grid-template-columns: 72px minmax(0, 1fr) !important;
gap: 0.65rem !important;
align-items: start !important;
margin: 0 !important;
margin-top: 0 !important;
padding: 0.75rem 0.9rem 0.5rem !important;
}
.tome-summon-stage .entity-appearance,
.tome-summon-stage .entity-traits,
.tome-summon-stage .entity-section,
.tome-summon-stage .entity-greeting,
.tome-summon-stage .entity-footer {
padding-left: 0.9rem !important;
padding-right: 0.9rem !important;
}
.tome-summon-stage .entity-footer {
padding-bottom: 0.9rem !important;
}
.tome-summon-stage .entity-portrait {
grid-row: 1 / span 2;
}
.tome-summon-stage .entity-portrait .entity-avatar {
width: 68px !important;
height: 68px !important;
}
.tome-summon-stage .entity-name,
.tome-summon-stage .entity-type,
.tome-summon-stage .entity-status {
color: #3d2814 !important;
}
.tome-summon-stage .entity-appearance,
.tome-summon-stage .entity-section p,
.tome-summon-stage .memory-text,
.tome-summon-stage .entity-greeting {
color: #4a3420 !important;
font-family: 'IM Fell English', serif !important;
line-height: 1.7 !important;
margin-bottom: 0.55rem !important;
overflow: visible !important;
}
.tome-summon-stage .section-label {
color: #8a6424 !important;
font-family: 'Cinzel', serif !important;
}
.tome-summon-stage .oracle-summoning {
margin: 0.25rem 0 0.5rem;
border-radius: 10px;
overflow: hidden;
}
/* -------------------------------------------------------------------------- */
/* Mobile & tablet — single-leaf spreads (one page at a time, full width) */
/* -------------------------------------------------------------------------- */
.tome-leaf-bar {
display: none;
}
@media (max-width: 920px) {
html,
body {
overflow: hidden;
height: 100%;
}
/* Override desktop fixed viewport lock */
.gradio-container {
height: 100dvh !important;
max-height: 100dvh !important;
min-height: 100dvh !important;
max-width: 100vw !important;
}
.realm-tabs {
height: auto !important;
max-height: none !important;
}
.realm-tabs [role="tabpanel"] {
height: auto !important;
max-height: none !important;
flex: 1 1 auto !important;
}
/* Single-leaf default: hide right page until Leaf › (works before JS) */
.tome-spread-row:not(.tome-leaf-right) > .tome-page-right,
.tome-spread-row:not(.tome-leaf-right) > .gr-column.tome-page-right {
display: none !important;
flex: 0 0 0 !important;
width: 0 !important;
max-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
visibility: hidden !important;
pointer-events: none !important;
}
.tome-spread-row.tome-leaf-right > .tome-page-left,
.tome-spread-row.tome-leaf-right > .gr-column.tome-page-left {
display: none !important;
flex: 0 0 0 !important;
width: 0 !important;
max-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
visibility: hidden !important;
pointer-events: none !important;
}
.tome-spread-row > .tome-page-left,
.tome-spread-row > .tome-page-right,
.tome-spread-row > .gr-column.tome-page-left,
.tome-spread-row > .gr-column.tome-page-right {
flex: 1 1 100% !important;
width: 100% !important;
max-width: 100% !important;
}
.tome-spread-row > .column.tome-page-left.tome-printed-page,
.tome-spread-row > .column.tome-page-right.tome-printed-page,
.tome-spread-row > .gr-column.tome-page-left.tome-printed-page,
.tome-spread-row > .gr-column.tome-page-right.tome-printed-page,
.tome-spread-row > .column.tome-explore-index,
.tome-spread-row > .column.tome-explore-stage,
.tome-spread-row > .gr-column.tome-explore-index,
.tome-spread-row > .gr-column.tome-explore-stage {
padding: 0.55rem 0.75rem 0.45rem !important;
overflow-y: auto !important;
overflow-x: hidden !important;
}
.place-ribbon-item {
grid-template-columns: 46px minmax(0, 1fr) !important;
grid-template-rows: auto auto;
gap: 0.15rem 0.5rem !important;
padding: 0.45rem 0.5rem !important;
align-items: start !important;
}
.place-ribbon-item .ribbon-thumb {
grid-row: 1 / span 2;
width: 46px;
height: 46px;
}
.place-ribbon-item .ribbon-label {
grid-column: 2;
font-size: 0.82rem !important;
line-height: 1.25 !important;
white-space: normal !important;
word-break: break-word;
}
.place-ribbon-item .ribbon-count {
grid-column: 2;
white-space: normal !important;
font-size: 0.68rem !important;
}
.gradio-container {
height: 100dvh !important;
max-height: 100dvh !important;
min-height: 100dvh !important;
max-width: 100vw !important;
width: 100% !important;
padding: 0.2rem 0.35rem 0.25rem !important;
box-sizing: border-box !important;
overflow: hidden !important;
}
#presence-bar {
font-size: 0.68rem;
padding: 0.25rem 0.5rem;
margin-bottom: 0.2rem !important;
}
.realm-tabs {
height: auto !important;
max-height: none !important;
flex: 1 1 auto !important;
min-height: 0 !important;
overflow: hidden !important;
}
.realm-tabs [role="tabpanel"] {
padding: 0.35rem 0.45rem 0.25rem !important;
overflow: hidden !important;
clip-path: none !important;
border-radius: 6px !important;
}
.realm-tabs [role="tabpanel"]::before,
.realm-tabs [role="tabpanel"]::after {
display: none !important;
}
.tome-spread-shell {
height: 100%;
min-height: 0;
overflow: hidden;
}
.tome-spread-row {
flex: 1 1 auto !important;
min-height: 0 !important;
max-height: 100% !important;
align-items: stretch !important;
overflow: hidden !important;
}
.tome-spread-row > .column,
.tome-spread-row > .gr-column {
min-height: 0 !important;
max-height: 100% !important;
}
/* Hide inactive leaf — show one full-width page only */
.tome-spread-row.tome-leaf-left .tome-page-right,
.tome-spread-row.tome-leaf-right .tome-page-left {
display: none !important;
flex: 0 0 0 !important;
width: 0 !important;
max-width: 0 !important;
padding: 0 !important;
margin: 0 !important;
overflow: hidden !important;
visibility: hidden !important;
pointer-events: none !important;
}
.tome-spread-row.tome-leaf-left .tome-page-left,
.tome-spread-row.tome-leaf-right .tome-page-right {
flex: 1 1 100% !important;
width: 100% !important;
max-width: 100% !important;
min-height: 0 !important;
overflow-x: hidden !important;
overflow-y: auto !important;
-webkit-overflow-scrolling: touch;
padding: 0.55rem 0.75rem 0.45rem !important;
}
.tome-spread-row > .column.tome-page-left::after,
.tome-spread-row > .column.tome-page-right::before,
.tome-spread-row > .gr-column.tome-page-left::after,
.tome-spread-row > .gr-column.tome-page-right::before {
display: none !important;
}
.tome-spread-row > .column.tome-page-left.tome-printed-page,
.tome-spread-row > .column.tome-page-right.tome-printed-page {
padding: 0.55rem 0.75rem 0.45rem !important;
}
/* Leaf toggle bar */
.tome-leaf-bar {
display: flex;
align-items: center;
justify-content: center;
gap: 0.65rem;
flex: 0 0 auto;
padding: 0.3rem 0.5rem 0.15rem;
border-top: 1px solid rgba(138, 106, 58, 0.2);
margin-top: 0.15rem;
}
.tome-leaf-btn {
border: 1px solid rgba(138, 106, 58, 0.45) !important;
background: rgba(255, 249, 232, 0.85) !important;
color: #5c3e1e !important;
font-family: 'Cinzel', serif !important;
font-size: 0.62rem !important;
letter-spacing: 0.08em;
text-transform: uppercase;
padding: 0.35rem 0.65rem !important;
border-radius: 999px !important;
min-height: 2rem;
box-shadow: none !important;
}
.tome-leaf-btn.is-active {
background: rgba(201, 161, 59, 0.28) !important;
border-color: rgba(138, 106, 58, 0.65) !important;
}
.tome-leaf-dots {
display: flex;
gap: 0.35rem;
align-items: center;
}
.tome-leaf-dots i {
display: block;
width: 6px;
height: 6px;
border-radius: 50%;
background: rgba(138, 106, 58, 0.28);
transition: background 0.2s ease, transform 0.2s ease;
}
.tome-leaf-dots i.active {
background: #8a6a3a;
transform: scale(1.15);
}
/* Restore content hidden on desktop two-page layout */
.tome-page-right.tome-page-centered > .block:has(.realm-pulse),
.tome-page-right.tome-page-centered > .block:has(.activity-feed) {
display: block !important;
height: auto !important;
min-height: 0 !important;
max-height: none !important;
margin: 0 0 0.35rem !important;
padding: 0 !important;
overflow: visible !important;
}
.tome-page-right .pulse-card:nth-child(n+3) {
display: flex !important;
}
/* Map & diorama — use available height on small screens */
.tome-page-left .realm-map,
.tome-page-left #world-map {
min-height: min(48dvh, 380px) !important;
max-height: min(56dvh, 440px) !important;
}
.tome-explore-stage .diorama-wrap,
.tome-explore-stage .diorama-stage {
min-height: min(52dvh, 460px) !important;
}
.tome-explore-stage .diorama-frame,
.diorama-frame {
height: min(52dvh, 480px) !important;
min-height: 260px !important;
}
.rel-graph-stage {
height: min(50dvh, 420px) !important;
min-height: 280px !important;
}
.book-entries {
column-count: 1 !important;
}
.entity-grid {
grid-template-columns: 1fr !important;
}
.souls-filter-row {
flex-direction: column !important;
}
/* Souls spread — let the page column scroll full character text */
.tome-page-right.tome-souls-stage,
.tome-page-left.tome-souls-index {
overflow-x: hidden !important;
overflow-y: auto !important;
-webkit-overflow-scrolling: touch;
padding-bottom: calc(3.75rem + env(safe-area-inset-bottom, 0px)) !important;
}
.tome-souls-index {
overflow: visible !important;
max-height: none !important;
}
.tome-souls-index .entity-grid {
max-height: none !important;
overflow: visible !important;
flex: 0 0 auto !important;
}
.tome-page-right.tome-souls-stage > .block,
.tome-page-right.tome-souls-stage > .form,
.tome-page-right.tome-souls-stage .html-container,
.tome-page-right.tome-souls-stage .prose,
.tome-souls-stage .entity-hologram,
.tome-souls-stage .hologram-stage,
.tome-souls-stage .hologram-scroll {
flex: 0 0 auto !important;
height: auto !important;
max-height: none !important;
min-height: 0 !important;
overflow: visible !important;
}
.tome-souls-stage .hologram-stage {
transform: none !important;
}
.tome-souls-stage .hologram-appearance,
.tome-souls-stage .hologram-goals,
.tome-souls-stage .hologram-goals p,
.tome-souls-stage .hologram-greeting,
.tome-souls-stage .hologram-memory {
overflow: visible !important;
max-height: none !important;
-webkit-line-clamp: unset !important;
white-space: normal !important;
word-break: break-word;
}
/* Opening gate */
.realm-opening {
padding: 0.75rem !important;
}
.realm-cover-card,
.realm-prologue-card,
.realm-toc-card {
width: min(96vw, 100%) !important;
max-width: 100% !important;
}
.realm-cover-title span {
font-size: clamp(1.4rem, 8vw, 2rem) !important;
}
/* Tome navigation chrome */
#tome-nav .tome-corner {
width: 42px;
height: 42px;
bottom: calc(4.25rem + env(safe-area-inset-bottom, 0px));
font-size: 1rem;
}
#tome-nav .tome-corner-left {
left: 0.5rem;
}
#tome-nav .tome-corner-right {
right: 0.5rem;
}
.tome-ribbon {
right: 0.5rem;
top: 0;
font-size: 0.62rem;
max-width: 46vw;
padding: 0.3rem 0.5rem;
}
.tome-page-indicator {
font-size: 0.62rem;
bottom: calc(4.5rem + env(safe-area-inset-bottom, 0px));
}
#aether-walk-pad,
#aether-walk-pad.visible {
display: none !important;
}
#aether-walk-pad.visible.explore-only {
display: block !important;
position: absolute;
left: 0.55rem;
bottom: 0.55rem;
z-index: 24;
pointer-events: auto;
}
#aether-walk-pad .awp-btn {
width: 2.75rem;
height: 2.75rem;
font-size: 0.85rem;
}
.tome-floating-toc {
max-height: min(70dvh, 520px);
overflow-y: auto;
}
}
@media (max-width: 480px) {
.tome-printed-kicker {
font-size: 0.62rem !important;
}
.tome-printed-hint {
font-size: 0.72rem !important;
}
.tome-leaf-btn {
font-size: 0.58rem !important;
padding: 0.3rem 0.5rem !important;
}
}
/* -------------------------------------------------------------------------- */
/* Mobile hotfix — kill book spine background; stack Explore + diorama */
/* -------------------------------------------------------------------------- */
@media (max-width: 920px) {
.realm-tabs [role="tabpanel"] {
background:
radial-gradient(circle at 8% 14%, rgba(255, 255, 255, 0.42), transparent 28%),
radial-gradient(circle at 92% 18%, rgba(255, 255, 255, 0.3), transparent 24%),
linear-gradient(180deg, #f9efd8 0%, #f5e8ca 48%, #faf1db 100%) !important;
box-shadow:
0 10px 28px rgba(76, 50, 22, 0.22),
inset 0 0 0 1px rgba(255, 247, 224, 0.58) !important;
padding-left: 0.45rem !important;
padding-right: 0.45rem !important;
}
.realm-tabs [role="tabpanel"]::before,
.realm-tabs [role="tabpanel"]::after {
content: none !important;
display: none !important;
background: none !important;
opacity: 0 !important;
width: 0 !important;
height: 0 !important;
}
.tome-printed-page::before,
.tome-printed-page::after {
content: none !important;
display: none !important;
background: none !important;
opacity: 0 !important;
}
/* Explore: stack place picker above 3D diorama (both visible, no leaf toggle) */
.tome-spread-row:has(.tome-explore-index) {
flex-direction: column !important;
overflow-y: auto !important;
-webkit-overflow-scrolling: touch;
gap: 0.35rem !important;
}
.tome-spread-row:has(.tome-explore-index) > .tome-explore-index,
.tome-spread-row:has(.tome-explore-index) > .tome-explore-stage,
.tome-spread-row:has(.tome-explore-index) > .gr-column.tome-explore-index,
.tome-spread-row:has(.tome-explore-index) > .gr-column.tome-explore-stage,
.tome-spread-row:has(.tome-explore-index) > .tome-page-left,
.tome-spread-row:has(.tome-explore-index) > .tome-page-right,
.tome-spread-row:has(.tome-explore-index) > .gr-column.tome-page-left,
.tome-spread-row:has(.tome-explore-index) > .gr-column.tome-page-right {
display: flex !important;
visibility: visible !important;
pointer-events: auto !important;
width: 100% !important;
max-width: 100% !important;
flex: 0 0 auto !important;
padding-left: 0.5rem !important;
padding-right: 0.5rem !important;
}
.tome-spread-row:has(.tome-explore-index) > .tome-explore-index,
.tome-spread-row:has(.tome-explore-index) > .gr-column.tome-explore-index {
flex: 0 0 auto !important;
max-height: none !important;
overflow: visible !important;
}
.tome-explore-index .place-ribbon {
overflow: visible !important;
}
.tome-explore-index .place-ribbon-list {
max-height: 28dvh;
overflow-y: auto !important;
-webkit-overflow-scrolling: touch;
}
.tome-spread-row:has(.tome-explore-index) > .tome-explore-stage,
.tome-spread-row:has(.tome-explore-index) > .gr-column.tome-explore-stage {
flex: 1 1 auto !important;
min-height: min(52dvh, 460px) !important;
overflow: visible !important;
border-top: 1px solid rgba(138, 106, 58, 0.22);
padding-top: 0.45rem !important;
padding-bottom: 0.25rem !important;
}
.tome-explore-stage .diorama-wrap,
.tome-explore-stage .diorama-stage {
min-height: min(50dvh, 440px) !important;
width: 100% !important;
overflow: visible !important;
position: relative;
}
.tome-explore-stage .diorama-frame,
.tome-explore-stage #explore-diorama-host .diorama-frame {
height: min(50dvh, 440px) !important;
min-height: 300px !important;
width: 100% !important;
max-width: 100% !important;
}
.tome-spread-shell:has(.tome-explore-index) .tome-leaf-bar {
display: none !important;
}
/* Other spreads: leaf toggle shows full right-page content */
.tome-leaf-bar {
display: flex !important;
position: sticky;
bottom: 0;
background: rgba(255, 249, 232, 0.94);
z-index: 8;
}
.tome-spread-row.tome-leaf-right .tome-page-right .pulse-card,
.tome-spread-row.tome-leaf-right .tome-page-right .pulse-card:nth-child(n+3) {
display: flex !important;
}
.tome-spread-row.tome-leaf-right .tome-page-right.tome-page-centered > .block:has(.realm-pulse),
.tome-spread-row.tome-leaf-right .tome-page-right.tome-page-centered > .block:has(.activity-feed) {
display: block !important;
height: auto !important;
max-height: none !important;
overflow: visible !important;
}
.tome-spread-shell {
padding-bottom: 0 !important;
}
.tome-spread-row.tome-leaf-left .tome-page-left,
.tome-spread-row.tome-leaf-right .tome-page-right {
padding-bottom: calc(0.35rem + env(safe-area-inset-bottom, 0px)) !important;
}
.tome-page-right.tome-souls-stage,
.tome-page-left.tome-souls-index {
padding-bottom: calc(2.5rem + env(safe-area-inset-bottom, 0px)) !important;
}
.tome-explore-stage-header .explore-controls-hint {
font-size: 0.68rem !important;
}
}