Spaces:
Sleeping
Sleeping
Town Mode: close town view by default, build_district + place_road, bank/market/house, grow-one-town steering, behold-the-world reveal, tamed needle
b0d758d verified | /* GODSEED — liturgical-modern. Deep-space black, ivory text, gold + violet | |
| accents. Hairlines, letterspace, restraint. Like a Kinfolk issue about a | |
| small god — never the generic AI-gradient card. */ | |
| :root { | |
| --bg: #040508; | |
| --ivory: #ece5d8; | |
| --ivory-dim: rgba(236, 229, 216, 0.55); | |
| --ivory-faint: rgba(236, 229, 216, 0.34); | |
| --gold: #d9b36c; | |
| --gold-bright: #f0cd8e; | |
| --violet: #9d86e8; | |
| --hairline: rgba(217, 179, 108, 0.28); | |
| --hairline-dim: rgba(217, 179, 108, 0.14); | |
| --panel: rgba(7, 8, 14, 0.55); | |
| --serif: "Cormorant Garamond", Georgia, serif; | |
| --sans: "Inter", -apple-system, system-ui, sans-serif; | |
| --mono: "JetBrains Mono", ui-monospace, "SF Mono", monospace; | |
| } | |
| * { margin: 0; padding: 0; box-sizing: border-box; } | |
| html, body { | |
| height: 100%; | |
| overflow: hidden; | |
| background: var(--bg); | |
| color: var(--ivory); | |
| font-family: var(--sans); | |
| -webkit-font-smoothing: antialiased; | |
| } | |
| #scene { | |
| position: fixed; | |
| inset: 0; | |
| width: 100%; | |
| height: 100%; | |
| display: block; | |
| cursor: grab; | |
| } | |
| #scene:active { cursor: grabbing; } | |
| /* ---------- cinematic overlays ---------- */ | |
| .vignette { | |
| position: fixed; inset: 0; pointer-events: none; z-index: 2; | |
| background: | |
| radial-gradient(120% 95% at 50% 42%, transparent 55%, rgba(2, 3, 6, 0.5) 100%), | |
| linear-gradient(to bottom, rgba(2, 3, 6, 0.35), transparent 18%, transparent 80%, rgba(2, 3, 6, 0.45)); | |
| } | |
| .grain { | |
| position: fixed; inset: -50%; pointer-events: none; z-index: 3; opacity: 0.05; | |
| background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23n)' opacity='0.9'/%3E%3C/svg%3E"); | |
| animation: grain 1.6s steps(4) infinite; | |
| } | |
| @keyframes grain { | |
| 0% { transform: translate(0, 0); } | |
| 25% { transform: translate(-2%, 1.4%); } | |
| 50% { transform: translate(1.6%, -1%); } | |
| 75% { transform: translate(-1%, -1.8%); } | |
| 100% { transform: translate(0, 0); } | |
| } | |
| /* ---------- wordmark ---------- */ | |
| .brand { | |
| position: fixed; top: 34px; left: 0; right: 0; z-index: 10; | |
| text-align: center; pointer-events: none; | |
| } | |
| .brand__mark { | |
| font-family: var(--serif); | |
| font-weight: 500; | |
| font-size: clamp(26px, 3.2vw, 40px); | |
| letter-spacing: 0.46em; | |
| text-indent: 0.46em; /* optically center the letterspacing */ | |
| color: var(--ivory); | |
| text-shadow: 0 0 28px rgba(217, 179, 108, 0.35); | |
| } | |
| .brand__tag { | |
| margin-top: 9px; | |
| font-size: 10px; | |
| font-weight: 400; | |
| letter-spacing: 0.34em; | |
| text-indent: 0.34em; | |
| text-transform: uppercase; | |
| color: var(--ivory-faint); | |
| } | |
| /* ---------- epoch + log link ---------- */ | |
| .almanac { | |
| position: fixed; top: 38px; right: 42px; z-index: 11; | |
| display: flex; flex-direction: column; align-items: flex-end; | |
| text-align: right; | |
| } | |
| .almanac__epoch { | |
| font-size: 11px; | |
| letter-spacing: 0.22em; | |
| text-transform: uppercase; | |
| color: var(--ivory-dim); | |
| } | |
| .almanac__log { | |
| display: inline-block; | |
| margin-top: 10px; | |
| font-family: var(--serif); | |
| font-style: italic; | |
| font-size: 16px; | |
| color: var(--gold); | |
| text-decoration: none; | |
| border-bottom: 1px solid var(--hairline); | |
| padding-bottom: 2px; | |
| transition: color 0.25s, border-color 0.25s; | |
| } | |
| .almanac__log:hover { color: var(--gold-bright); border-color: var(--gold); } | |
| /* behold the world ↕ — the close-town ⇄ whole-planet toggle */ | |
| .behold { | |
| display: inline-flex; align-items: center; gap: 9px; | |
| margin-top: 14px; | |
| padding: 7px 15px; | |
| font-family: var(--sans); | |
| font-size: 9.5px; letter-spacing: 0.26em; text-transform: uppercase; | |
| color: var(--ivory-dim); | |
| background: var(--panel); | |
| border: 1px solid var(--hairline); | |
| border-radius: 999px; | |
| cursor: pointer; | |
| pointer-events: auto; | |
| -webkit-backdrop-filter: blur(8px); | |
| backdrop-filter: blur(8px); | |
| transition: color 0.25s, border-color 0.25s, box-shadow 0.25s; | |
| } | |
| .behold:hover { | |
| color: var(--gold-bright); | |
| border-color: var(--gold); | |
| box-shadow: 0 0 24px rgba(217, 179, 108, 0.14); | |
| } | |
| .behold__label { line-height: 1; } | |
| .behold__sigil { | |
| font-size: 12px; line-height: 1; color: var(--gold); | |
| transition: transform 0.4s ease; | |
| } | |
| /* while beholding the world the control offers the way back — flip the sigil */ | |
| .behold.is-world { | |
| color: var(--gold); | |
| border-color: var(--gold); | |
| } | |
| .behold.is-world .behold__sigil { transform: rotate(180deg); } | |
| /* ---------- the god speaks ---------- */ | |
| .voice { | |
| position: fixed; left: 42px; bottom: 42px; z-index: 10; | |
| width: min(440px, calc(100vw - 84px)); | |
| border-left: 1px solid var(--hairline); | |
| padding: 16px 20px 16px 20px; | |
| pointer-events: none; | |
| /* a subtle dark scrim so the god's voice reads over the bright planet rim — | |
| the ticker is the second-largest text while granting and must not wash out */ | |
| background: linear-gradient(105deg, rgba(4, 5, 9, 0.72), rgba(4, 5, 9, 0.32) 72%, transparent); | |
| border-radius: 2px; | |
| -webkit-backdrop-filter: blur(3px); | |
| backdrop-filter: blur(3px); | |
| } | |
| .voice__head { | |
| display: flex; align-items: baseline; gap: 10px; | |
| font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase; | |
| color: var(--ivory-faint); | |
| margin-bottom: 10px; | |
| } | |
| .voice__dot { | |
| width: 5px; height: 5px; border-radius: 50%; | |
| background: var(--violet); align-self: center; | |
| box-shadow: 0 0 8px var(--violet); | |
| opacity: 0.4; | |
| transition: opacity 0.4s; | |
| } | |
| .voice__dot.is-live { opacity: 1; animation: pulse 1.8s ease-in-out infinite; } | |
| @keyframes pulse { 50% { box-shadow: 0 0 14px var(--violet); } } | |
| .voice__wish { | |
| font-family: var(--serif); font-style: italic; text-transform: none; | |
| letter-spacing: 0.02em; font-size: 14px; color: var(--ivory-dim); | |
| white-space: nowrap; overflow: hidden; text-overflow: ellipsis; | |
| max-width: 230px; | |
| } | |
| .voice__stream { | |
| font-family: var(--mono); | |
| /* second-largest text while granting — readable on the live screenshots */ | |
| font-size: 18px; | |
| line-height: 1.62; | |
| letter-spacing: 0.01em; | |
| color: rgba(236, 229, 216, 0.78); | |
| max-height: 232px; | |
| overflow: hidden; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: flex-end; | |
| white-space: pre-wrap; | |
| word-break: break-word; | |
| text-shadow: 0 1px 10px rgba(2, 3, 6, 0.65); | |
| mask-image: linear-gradient(to bottom, transparent, black 28%); | |
| -webkit-mask-image: linear-gradient(to bottom, transparent, black 28%); | |
| } | |
| .voice__innertext { display: inline-block; white-space: pre-wrap; } | |
| .voice__stream .tone-reading { color: var(--ivory); } | |
| .voice__stream .tone-call { color: var(--gold-bright); font-weight: 400; } | |
| .voice__stream .tone-obs { color: var(--violet); opacity: 0.92; } | |
| .voice__caret { | |
| display: inline-block; width: 8px; height: 17px; | |
| background: var(--gold); vertical-align: -3px; margin-left: 2px; | |
| animation: caret 1.1s steps(2) infinite; | |
| } | |
| @keyframes caret { 50% { opacity: 0; } } | |
| /* ---------- epitaph flourish ---------- */ | |
| .epitaph { | |
| position: fixed; left: 50%; top: 26%; z-index: 12; | |
| transform: translateX(-50%) translateY(8px); | |
| width: min(620px, 86vw); | |
| text-align: center; | |
| opacity: 0; | |
| pointer-events: none; | |
| transition: opacity 1.1s ease, transform 1.1s ease; | |
| } | |
| .epitaph.is-shown { opacity: 1; transform: translateX(-50%) translateY(0); } | |
| .epitaph__rule { | |
| width: 56px; height: 1px; margin: 0 auto 18px; | |
| background: linear-gradient(to right, transparent, var(--gold), transparent); | |
| } | |
| .epitaph__text { | |
| font-family: var(--serif); | |
| font-style: italic; | |
| font-weight: 500; | |
| font-size: clamp(22px, 3vw, 32px); | |
| line-height: 1.35; | |
| color: var(--ivory); | |
| text-shadow: 0 0 34px rgba(217, 179, 108, 0.4); | |
| } | |
| .epitaph__label { | |
| margin-top: 16px; | |
| font-size: 10px; letter-spacing: 0.34em; text-transform: uppercase; | |
| color: var(--gold); | |
| } | |
| .epitaph__descend[hidden] { display: none; } | |
| .epitaph__descend { | |
| display: inline-block; | |
| margin-top: 20px; | |
| padding: 8px 22px; | |
| font-family: var(--serif); | |
| font-style: italic; | |
| font-size: 17px; | |
| letter-spacing: 0.05em; | |
| color: var(--gold); | |
| background: rgba(7, 8, 14, 0.5); | |
| border: 1px solid var(--hairline); | |
| border-radius: 999px; | |
| cursor: pointer; | |
| pointer-events: auto; | |
| -webkit-backdrop-filter: blur(6px); | |
| backdrop-filter: blur(6px); | |
| transition: color 0.25s, border-color 0.25s, box-shadow 0.25s, transform 0.25s; | |
| } | |
| .epitaph__descend:hover { | |
| color: var(--gold-bright); | |
| border-color: var(--gold); | |
| box-shadow: 0 0 28px rgba(217, 179, 108, 0.18); | |
| transform: translateY(-1px); | |
| } | |
| /* ---------- altar (wish input) ---------- */ | |
| .altar { | |
| position: fixed; left: 50%; bottom: 40px; z-index: 11; | |
| transform: translateX(-50%); | |
| width: min(460px, calc(100vw - 48px)); | |
| text-align: center; | |
| } | |
| .altar__chip[hidden] { display: none; } | |
| .altar__chip { | |
| display: inline-block; | |
| margin-bottom: 12px; | |
| padding: 6px 16px; | |
| font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; | |
| color: var(--gold); | |
| border: 1px solid var(--hairline); | |
| border-radius: 999px; | |
| background: var(--panel); | |
| backdrop-filter: blur(8px); | |
| } | |
| .altar__form { | |
| display: flex; align-items: stretch; | |
| border: 1px solid var(--hairline); | |
| border-radius: 999px; | |
| background: var(--panel); | |
| backdrop-filter: blur(10px); | |
| transition: border-color 0.3s, box-shadow 0.3s; | |
| } | |
| .altar__form:focus-within { | |
| border-color: var(--gold); | |
| box-shadow: 0 0 30px rgba(217, 179, 108, 0.14); | |
| } | |
| .altar__input { | |
| flex: 1; | |
| background: none; border: none; outline: none; | |
| padding: 15px 8px 15px 24px; | |
| font-family: var(--serif); | |
| font-size: 18px; | |
| font-style: italic; | |
| color: var(--ivory); | |
| caret-color: var(--gold); | |
| } | |
| .altar__input::placeholder { color: var(--ivory-faint); } | |
| .altar__send { | |
| background: none; border: none; cursor: pointer; | |
| padding: 0 20px; | |
| color: var(--gold); | |
| font-size: 16px; | |
| transition: color 0.25s, transform 0.25s; | |
| } | |
| .altar__send:hover { color: var(--gold-bright); } | |
| .altar__send:disabled { color: var(--ivory-faint); cursor: default; } | |
| .altar__sigil { display: inline-block; transition: transform 0.4s; } | |
| .altar__send:hover .altar__sigil { transform: rotate(90deg) scale(1.15); } | |
| .altar__hint { | |
| margin-top: 11px; | |
| font-size: 10px; letter-spacing: 0.26em; text-transform: uppercase; | |
| color: var(--ivory-faint); | |
| } | |
| .altar__hint.is-warn { color: #d98a7a; } | |
| /* ---------- status ---------- */ | |
| .status { | |
| position: fixed; right: 42px; bottom: 42px; z-index: 10; | |
| font-family: var(--mono); font-size: 10px; | |
| letter-spacing: 0.1em; | |
| color: rgba(236, 229, 216, 0.22); | |
| text-align: right; | |
| } | |
| /* ===================================================================== | |
| GENESIS LOG (book.html) | |
| ===================================================================== */ | |
| .book-brand { | |
| position: fixed; top: 34px; left: 42px; z-index: 10; pointer-events: auto; | |
| } | |
| .book-brand__mark { | |
| font-family: var(--serif); font-weight: 500; | |
| font-size: 17px; letter-spacing: 0.42em; | |
| color: var(--ivory-dim); | |
| text-decoration: none; | |
| } | |
| .book-brand__mark:hover { color: var(--ivory); } | |
| .book-brand__title { | |
| margin-top: 14px; | |
| font-family: var(--serif); | |
| font-weight: 500; | |
| font-size: clamp(28px, 3.4vw, 44px); | |
| letter-spacing: 0.18em; | |
| color: var(--ivory); | |
| text-shadow: 0 0 28px rgba(217, 179, 108, 0.3); | |
| } | |
| .book-brand__sub { | |
| margin-top: 8px; | |
| font-size: 10px; letter-spacing: 0.3em; text-transform: uppercase; | |
| color: var(--ivory-faint); | |
| } | |
| /* a left-side dark gradient scrim so the log column reads over the bright | |
| planet rim + gold trail — sits behind the entries, fades to clear on the | |
| right so the planet still breathes. */ | |
| .ledger-scrim { | |
| position: fixed; left: 0; top: 0; bottom: 0; z-index: 9; | |
| width: min(560px, 56vw); | |
| pointer-events: none; | |
| background: linear-gradient(to right, | |
| rgba(3, 4, 8, 0.82) 0%, | |
| rgba(3, 4, 8, 0.66) 34%, | |
| rgba(3, 4, 8, 0.34) 62%, | |
| transparent 100%); | |
| } | |
| .ledger { | |
| position: fixed; top: 168px; bottom: 36px; left: 42px; z-index: 10; | |
| width: min(360px, calc(100vw - 64px)); | |
| overflow-y: auto; | |
| padding-right: 14px; | |
| scrollbar-width: thin; | |
| scrollbar-color: var(--hairline-dim) transparent; | |
| mask-image: linear-gradient(to bottom, black 92%, transparent); | |
| -webkit-mask-image: linear-gradient(to bottom, black 92%, transparent); | |
| } | |
| .ledger__entry { | |
| display: block; width: 100%; text-align: left; | |
| background: none; border: none; cursor: pointer; | |
| border-top: 1px solid var(--hairline-dim); | |
| padding: 16px 10px 16px 4px; | |
| color: inherit; | |
| font-family: inherit; | |
| transition: background 0.25s, border-color 0.25s; | |
| } | |
| .ledger__entry:hover { background: rgba(217, 179, 108, 0.05); } | |
| .ledger__entry.is-active { | |
| background: rgba(217, 179, 108, 0.08); | |
| border-top-color: var(--hairline); | |
| } | |
| .ledger__epoch { | |
| font-size: 9.5px; letter-spacing: 0.3em; text-transform: uppercase; | |
| color: var(--gold); | |
| } | |
| .ledger__wish { | |
| margin-top: 6px; | |
| font-family: var(--serif); | |
| font-size: 19px; | |
| line-height: 1.3; | |
| color: var(--ivory); | |
| } | |
| .ledger__epitaph { | |
| margin-top: 5px; | |
| font-family: var(--serif); | |
| font-style: italic; | |
| font-size: 14px; | |
| color: var(--ivory-dim); | |
| } | |
| .ledger__empty { | |
| padding: 22px 4px; | |
| font-family: var(--serif); font-style: italic; font-size: 16px; | |
| color: var(--ivory-dim); | |
| border-top: 1px solid var(--hairline-dim); | |
| } | |
| .book-voice { left: auto; right: 42px; bottom: 42px; border-left: none; border-right: 1px solid var(--hairline); padding-left: 0; padding-right: 20px; text-align: right; } | |
| .book-voice .voice__head { justify-content: flex-end; } | |
| .replay-hint { | |
| position: fixed; right: 42px; top: 38px; z-index: 10; | |
| font-size: 10px; letter-spacing: 0.26em; text-transform: uppercase; | |
| color: var(--ivory-faint); | |
| text-align: right; | |
| } | |
| .replay-hint a { color: var(--gold); text-decoration: none; } | |
| /* ---------- responsive ---------- */ | |
| @media (max-width: 760px) { | |
| .almanac { right: 20px; top: 28px; } | |
| .voice { left: 20px; bottom: 130px; width: calc(100vw - 40px); max-width: none; } | |
| .voice__stream { max-height: 118px; font-size: 15px; line-height: 1.5; } | |
| .ledger-scrim { width: 100vw; } | |
| .altar { bottom: 18px; } | |
| .status { display: none; } | |
| .brand { top: 22px; } | |
| .ledger { top: 150px; width: calc(100vw - 56px); } | |
| .book-brand { left: 20px; } | |
| .book-voice { right: 20px; } | |
| .replay-hint { display: none; } | |
| } | |