aether-garden / ui /styles.css
kavyabhand's picture
Deploy Aether Garden application
2b5fc01 verified
Raw
History Blame Contribute Delete
52.8 kB
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600&family=EB+Garamond: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: system-ui, -apple-system, sans-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;
}
/* 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;
}
.diorama-frame {
display: block;
width: 100%;
height: min(80vh, 720px);
min-height: 540px;
border: none;
background: #0c1410;
cursor: crosshair;
}
/* External pad hidden — in-iframe pad is more reliable on HF Spaces */
.diorama-remote-controls {
display: none !important;
}
.diorama-remote-controls.legacy {
position: absolute;
inset: 0;
z-index: 20;
pointer-events: none;
}
.drc-label {
position: absolute;
left: 1rem;
bottom: 9.5rem;
font-family: 'Cinzel', serif;
font-size: 0.62rem;
letter-spacing: 0.14em;
text-transform: uppercase;
color: #d4a84b;
pointer-events: none;
text-shadow: 0 1px 8px #000;
}
.drc-pad {
position: absolute;
left: 1rem;
bottom: 1.25rem;
display: grid;
grid-template-columns: 3.4rem 3.4rem 3.4rem;
gap: 0.35rem;
pointer-events: auto;
}
.drc-spacer { visibility: hidden; }
.drc-btn {
width: 3.4rem;
height: 3.4rem;
border-radius: 12px;
border: 2px solid rgba(212, 168, 75, 0.55);
background: rgba(8, 12, 10, 0.82);
color: #f0d9a0;
font-family: 'Cinzel', serif;
font-size: 1rem;
font-weight: 600;
cursor: pointer;
touch-action: none;
user-select: none;
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.45);
backdrop-filter: blur(6px);
}
.drc-btn:hover { background: rgba(212, 168, 75, 0.18); }
.drc-btn.pressed,
.drc-btn:active {
background: rgba(212, 168, 75, 0.38);
color: #fff8e8;
transform: scale(0.96);
}
.drc-joy {
position: absolute;
right: 1rem;
bottom: 1.25rem;
width: 7.5rem;
height: 7.5rem;
border-radius: 50%;
border: 2px solid rgba(212, 168, 75, 0.45);
background: rgba(8, 12, 10, 0.72);
pointer-events: auto;
touch-action: none;
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.45);
backdrop-filter: blur(6px);
}
.drc-knob {
position: absolute;
left: 50%;
top: 50%;
width: 2.6rem;
height: 2.6rem;
margin: -1.3rem 0 0 -1.3rem;
border-radius: 50%;
background: rgba(212, 168, 75, 0.42);
border: 2px solid rgba(212, 168, 75, 0.65);
pointer-events: none;
}
.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;
}
.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: #e8e0d0;
font-size: 10px;
font-family: Georgia, serif;
pointer-events: none;
}
.rel-edge {
pointer-events: none;
}
.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:
radial-gradient(circle at 12% 0%, rgba(110, 201, 188, 0.08), transparent 28rem),
radial-gradient(circle at 88% 8%, rgba(169, 138, 221, 0.09), transparent 32rem),
linear-gradient(180deg, #070908 0%, #0d1110 46%, #070908 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));
}
.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);
}