| :root { |
| --tte-ink: #120905; |
| --tte-readable-ink: #120905; |
| --tte-line: #2c1810; |
| --tte-wood-dark: #27140c; |
| --tte-wood: #5b2f1e; |
| --tte-wood-warm: #8a4e2a; |
| --tte-brass-dark: #7c4b1d; |
| --tte-brass: #c6933c; |
| --tte-brass-light: #f2cb67; |
| --tte-cream: #fff0cb; |
| --tte-paper: #f8e5b9; |
| --tte-green: #314638; |
| --tte-cyan: #83d6d3; |
| --tte-sky-a: #f8d99a; |
| --tte-sky-b: #badbd2; |
| --tte-sky-c: #f4bbb0; |
| --tte-heading: Georgia, "Times New Roman", serif; |
| --tte-body: "Trebuchet MS", "Segoe UI", sans-serif; |
| --tte-ride-duration: 12500ms; |
| --tte-progress: 0; |
|
|
| --body-background-fill: #150b07; |
| --body-text-color: #fff0cb; |
| --background-fill-primary: #150b07; |
| --background-fill-secondary: #28140c; |
| --block-background-fill: transparent; |
| --block-border-color: transparent; |
| --input-background-fill: rgba(255, 240, 203, 0.92); |
| --input-text-color: var(--tte-readable-ink); |
| --button-primary-background-fill: #c6933c; |
| --button-primary-text-color: var(--tte-readable-ink); |
| } |
|
|
| html, |
| body, |
| .gradio-container, |
| main { |
| background: #150b07 !important; |
| } |
|
|
| .gradio-container { |
| min-height: 100vh; |
| padding: 0 !important; |
| color: var(--tte-cream) !important; |
| font-family: var(--tte-body) !important; |
| } |
|
|
| .gradio-container .contain { |
| max-width: none !important; |
| padding: 0 !important; |
| } |
|
|
| .gradio-container label, |
| .gradio-container .label-wrap, |
| .gradio-container .prose, |
| .gradio-container .prose *, |
| .gradio-container input, |
| .gradio-container textarea, |
| .gradio-container select, |
| .gradio-container button { |
| color: var(--tte-readable-ink) !important; |
| } |
|
|
| .gradio-container input::placeholder, |
| .gradio-container textarea::placeholder { |
| color: rgba(18, 9, 5, 0.72) !important; |
| } |
|
|
| footer, |
| .footer { |
| display: none !important; |
| } |
|
|
| #tm-realtime-session, |
| #tm-immersive-payload, |
| #tm-world-view-1, |
| #tm-world-view-2 { |
| position: absolute !important; |
| left: -10000px !important; |
| top: auto !important; |
| width: 1px !important; |
| height: 1px !important; |
| overflow: hidden !important; |
| opacity: 0 !important; |
| pointer-events: none !important; |
| } |
|
|
| .tte-cockpit { |
| position: relative; |
| width: 100%; |
| min-height: 100vh; |
| overflow: hidden; |
| isolation: isolate; |
| color: var(--tte-readable-ink); |
| background: |
| radial-gradient(ellipse at 50% 20%, rgba(255, 209, 113, 0.18), transparent 42%), |
| linear-gradient(180deg, #2b170f 0%, #140906 100%); |
| font-family: var(--tte-body); |
| letter-spacing: 0; |
| --person-shirt: #ead9b9; |
| --person-sash: #9d7045; |
| --person-hair: #352116; |
| --scene-haze: rgba(255, 229, 172, 0.38); |
| } |
|
|
| .tte-cockpit * { |
| box-sizing: border-box; |
| } |
|
|
| .tte-reference-stage { |
| position: absolute; |
| inset: 0; |
| z-index: 1; |
| overflow: hidden; |
| pointer-events: none; |
| background: #100804; |
| transform-origin: 50% 45%; |
| will-change: transform, filter; |
| } |
|
|
| .tte-reference-stage::after { |
| content: ""; |
| position: absolute; |
| inset: -8%; |
| z-index: 5; |
| pointer-events: none; |
| opacity: 0; |
| background: |
| radial-gradient(ellipse at 50% 43%, rgba(255, 244, 182, 0.6), transparent 24%), |
| linear-gradient(90deg, transparent 0 28%, rgba(255, 244, 202, 0.28) 36%, transparent 47% 53%, rgba(126, 228, 225, 0.22) 64%, transparent 74%), |
| repeating-linear-gradient(110deg, transparent 0 26px, rgba(255, 241, 194, 0.2) 27px 29px, transparent 30px 72px); |
| mix-blend-mode: screen; |
| } |
|
|
| .tte-reference-stage__image, |
| .tte-reference-stage__vortex { |
| position: absolute; |
| inset: 0; |
| pointer-events: none; |
| } |
|
|
| .tte-reference-stage__image { |
| background-position: center; |
| background-size: cover; |
| transform: scale(1.02); |
| transition: opacity 520ms ease, filter 520ms ease, transform 520ms ease; |
| } |
|
|
| .tte-reference-stage__image--departure { |
| opacity: calc(1 - var(--tte-arrival-opacity, 0)); |
| background-image: url("/static/img/travel/reference_departure.png"); |
| filter: saturate(0.98) contrast(1.04); |
| } |
|
|
| .tte-reference-stage__image--warp { |
| opacity: var(--tte-warp-opacity, 0); |
| background-image: url("/static/img/travel/reference_warp_blend.png"); |
| filter: saturate(1.06) contrast(1.06) brightness(1.03); |
| transform: scale(var(--tte-warp-scale, 1.04)); |
| } |
|
|
| .tte-reference-stage__image--arrival { |
| opacity: var(--tte-arrival-opacity, 0); |
| background-image: url("/static/img/travel/reference_arrival.png"); |
| filter: saturate(0.98) contrast(1.06); |
| } |
|
|
| .tte-reference-stage__vortex { |
| z-index: 4; |
| opacity: 0; |
| background: |
| radial-gradient(circle at 50% 42%, rgba(255, 247, 198, 0.94) 0 4%, transparent 16%), |
| conic-gradient(from 90deg at 50% 42%, transparent 0 12%, rgba(131, 214, 211, 0.34) 13% 16%, transparent 18% 32%, rgba(246, 204, 103, 0.42) 33% 38%, transparent 40% 100%), |
| radial-gradient(ellipse at 50% 42%, transparent 0 20%, rgba(255, 238, 174, 0.24) 34%, transparent 58%); |
| mix-blend-mode: screen; |
| transform: scale(0.88) rotate(0deg); |
| } |
|
|
| .tm-state-launching .tte-reference-stage__image--departure, |
| .tm-state-traveling .tte-reference-stage__image--departure, |
| .tm-state-braking .tte-reference-stage__image--departure { |
| filter: saturate(1.04) contrast(1.08); |
| transform: scale(var(--tte-departure-scale, 1.02)); |
| } |
|
|
| .tm-state-launching .tte-reference-stage__vortex, |
| .tm-state-traveling .tte-reference-stage__vortex, |
| .tm-state-braking .tte-reference-stage__vortex { |
| opacity: var(--tte-vortex-opacity, 0); |
| animation: tte-vortex-turn 1300ms linear infinite; |
| } |
|
|
| .tm-state-launching .tte-reference-stage { |
| animation: tte-reference-rumble 320ms ease-in-out infinite; |
| } |
|
|
| .tm-state-traveling .tte-reference-stage { |
| animation: tte-reference-rumble 120ms ease-in-out infinite; |
| filter: saturate(1.08) contrast(1.08); |
| } |
|
|
| .tm-state-braking .tte-reference-stage { |
| animation: tte-reference-brake-shake 68ms linear infinite; |
| filter: saturate(1.16) contrast(1.16) brightness(1.08); |
| } |
|
|
| .tm-state-launching .tte-reference-stage::after, |
| .tm-state-traveling .tte-reference-stage::after { |
| opacity: 0.22; |
| animation: tte-transition-flash 620ms ease-in-out infinite alternate; |
| } |
|
|
| .tm-state-braking .tte-reference-stage::after { |
| opacity: 0.52; |
| animation: tte-transition-flash 110ms ease-in-out infinite alternate; |
| } |
|
|
| .tte-windscreen { |
| position: absolute; |
| left: clamp(46px, 16vw, 250px); |
| right: clamp(46px, 16vw, 250px); |
| top: clamp(30px, 5.5vh, 70px); |
| bottom: clamp(205px, 27vh, 300px); |
| z-index: 5; |
| overflow: hidden; |
| border-radius: 50% 50% 10% 10% / 34% 34% 9% 9%; |
| background: transparent; |
| clip-path: inset(0 round 48% 48% 9% 9% / 34% 34% 9% 9%); |
| box-shadow: none; |
| } |
|
|
| .tte-skywash { |
| position: absolute; |
| inset: -10%; |
| background: |
| radial-gradient(circle at 48% 18%, rgba(255, 248, 218, 0.96), transparent 18%), |
| radial-gradient(circle at 20% 42%, rgba(159, 204, 168, 0.42), transparent 20%), |
| radial-gradient(circle at 78% 36%, rgba(221, 158, 168, 0.38), transparent 19%), |
| linear-gradient(135deg, var(--tte-sky-a), var(--tte-sky-b) 54%, var(--tte-sky-c)); |
| filter: saturate(0.94); |
| opacity: 0; |
| transform: scale(1.06); |
| animation: tte-dream-drift 18s ease-in-out infinite alternate; |
| } |
|
|
| .tte-era-strip { |
| position: absolute; |
| inset: 0; |
| display: flex; |
| width: 600%; |
| opacity: 0 !important; |
| transform: translate3d(0, 0, 0); |
| transition: opacity 700ms ease; |
| } |
|
|
| .tte-era-scene { |
| position: relative; |
| flex: 0 0 16.666%; |
| height: 100%; |
| overflow: hidden; |
| background: |
| radial-gradient(circle at var(--sun-x, 48%) 22%, rgba(255, 245, 205, 0.95), transparent 15%), |
| linear-gradient(180deg, var(--sky-top), var(--sky-bottom) 62%, var(--ground) 63%); |
| } |
|
|
| .tte-era-scene::before, |
| .tte-era-scene::after { |
| content: ""; |
| position: absolute; |
| left: -10%; |
| right: -10%; |
| pointer-events: none; |
| } |
|
|
| .tte-era-scene::before { |
| bottom: 30%; |
| height: 23%; |
| background: |
| radial-gradient(ellipse at 20% 100%, var(--hill-a), transparent 62%), |
| radial-gradient(ellipse at 58% 100%, var(--hill-b), transparent 64%), |
| radial-gradient(ellipse at 88% 100%, var(--hill-c), transparent 58%); |
| opacity: 0.72; |
| } |
|
|
| .tte-era-scene::after { |
| bottom: 12%; |
| height: 30%; |
| background: var(--structures); |
| opacity: 0.92; |
| filter: drop-shadow(0 7px 0 rgba(95, 55, 29, 0.15)); |
| } |
|
|
| .tte-landmark-layer { |
| position: absolute; |
| inset: 0; |
| z-index: 12; |
| overflow: hidden; |
| opacity: 0; |
| pointer-events: none; |
| } |
|
|
| .tte-landmark { |
| position: absolute; |
| left: var(--x, 105%); |
| bottom: var(--y, 30%); |
| width: var(--w, 120px); |
| height: var(--h, 130px); |
| opacity: 0; |
| transform: translate3d(0, 0, 0) scale(var(--scale, 1)); |
| filter: drop-shadow(0 16px 12px rgba(73, 42, 21, 0.2)); |
| animation: tte-landmark-future var(--speed, 2600ms) linear forwards; |
| } |
|
|
| .tte-cockpit[data-direction="past"] .tte-landmark { |
| animation-name: tte-landmark-past; |
| } |
|
|
| .tte-landmark::before, |
| .tte-landmark::after { |
| content: ""; |
| position: absolute; |
| inset: auto; |
| } |
|
|
| .tte-landmark--tower::before { |
| left: 34%; |
| bottom: 0; |
| width: 34%; |
| height: 100%; |
| border: 3px solid rgba(42, 24, 16, 0.7); |
| border-radius: 46% 46% 12px 12px; |
| background: linear-gradient(180deg, #d6ece8, #8fc8be); |
| box-shadow: |
| -36px 40px 0 -8px #b9ddd5, |
| 42px 24px 0 -10px #a2d1ca; |
| } |
|
|
| .tte-landmark--arch::before { |
| left: 4%; |
| right: 4%; |
| bottom: 0; |
| height: 72%; |
| border: 6px solid rgba(105, 70, 42, 0.72); |
| border-bottom: 0; |
| border-radius: 50% 50% 4px 4px / 76% 76% 4px 4px; |
| box-shadow: |
| 32px 0 0 -5px #d7bc8a, |
| 64px 0 0 -5px #d7bc8a, |
| 96px 0 0 -5px #d7bc8a; |
| } |
|
|
| .tte-landmark--cottage::before { |
| left: 14%; |
| bottom: 0; |
| width: 72%; |
| height: 54%; |
| border: 3px solid rgba(72, 40, 22, 0.66); |
| border-radius: 8px; |
| background: linear-gradient(180deg, #f2d59d, #c99461); |
| } |
|
|
| .tte-landmark--cottage::after { |
| left: 8%; |
| bottom: 47%; |
| width: 84%; |
| height: 34%; |
| border: 3px solid rgba(72, 40, 22, 0.66); |
| border-radius: 12px 12px 4px 4px; |
| background: linear-gradient(135deg, #7c3e26 0 50%, #9e5630 51%); |
| transform: skewX(-8deg); |
| } |
|
|
| .tte-landmark--spire::before { |
| left: 18%; |
| bottom: 0; |
| width: 64%; |
| height: 92%; |
| clip-path: polygon(50% 0, 88% 100%, 12% 100%); |
| border: 3px solid rgba(34, 29, 45, 0.45); |
| background: linear-gradient(180deg, #d4f5f0, #79b9c7 54%, #497596); |
| box-shadow: 0 0 30px rgba(131, 214, 211, 0.38); |
| } |
|
|
| .tte-track-bed { |
| position: absolute; |
| left: 50%; |
| bottom: -6%; |
| z-index: 18; |
| width: min(58vw, 700px); |
| height: 68%; |
| transform: translateX(-50%); |
| perspective: 420px; |
| pointer-events: none; |
| opacity: 0; |
| } |
|
|
| .tte-rail { |
| position: absolute; |
| bottom: 0; |
| width: 7px; |
| height: 100%; |
| border-radius: 999px; |
| background: |
| linear-gradient(90deg, rgba(68, 45, 29, 0.9), #f0c865 45%, rgba(91, 55, 23, 0.94)); |
| box-shadow: 0 0 14px rgba(255, 223, 124, 0.45); |
| transform-origin: bottom; |
| } |
|
|
| .tte-rail--left { |
| left: 34%; |
| transform: rotate(9deg); |
| } |
|
|
| .tte-rail--right { |
| right: 34%; |
| transform: rotate(-9deg); |
| } |
|
|
| .tte-sleepers { |
| position: absolute; |
| inset: 0; |
| clip-path: polygon(38% 100%, 62% 100%, 52% 0, 48% 0); |
| background: |
| repeating-linear-gradient( |
| 0deg, |
| transparent 0 20px, |
| rgba(82, 49, 28, 0.7) 21px 27px, |
| rgba(240, 200, 101, 0.45) 28px 30px, |
| transparent 31px 47px |
| ); |
| transform-origin: bottom; |
| } |
|
|
| .tm-state-traveling .tte-sleepers, |
| .tm-state-launching .tte-sleepers, |
| .tm-state-braking .tte-sleepers { |
| animation: tte-sleeper-rush 420ms linear infinite; |
| } |
|
|
| .tte-era-signs { |
| position: absolute; |
| inset: 0; |
| z-index: 24; |
| opacity: 0; |
| pointer-events: none; |
| } |
|
|
| .tte-era-sign { |
| position: absolute; |
| top: var(--sign-top, 42%); |
| left: 104%; |
| min-width: 204px; |
| padding: 9px 18px 10px; |
| border: 4px solid rgba(49, 30, 17, 0.9); |
| border-radius: 5px; |
| background: |
| linear-gradient(90deg, rgba(255, 235, 166, 0.16), transparent 18% 82%, rgba(67, 37, 18, 0.18)), |
| linear-gradient(180deg, #6a7a55 0%, #3b5039 42%, #243325 100%); |
| color: #fff0cb; |
| font: 900 14px/1.08 var(--tte-heading); |
| letter-spacing: 0.05em; |
| text-align: center; |
| text-transform: uppercase; |
| box-shadow: |
| inset 0 0 0 2px rgba(246, 216, 145, 0.34), |
| inset 0 0 0 5px rgba(24, 13, 7, 0.12), |
| inset 0 12px 12px rgba(255, 239, 184, 0.12), |
| inset 0 -13px 12px rgba(17, 9, 5, 0.28), |
| 0 17px 18px rgba(57, 33, 20, 0.34); |
| animation: tte-sign-future var(--sign-speed, 1500ms) linear forwards; |
| } |
|
|
| .tte-era-sign::before { |
| content: ""; |
| position: absolute; |
| left: 10px; |
| right: 10px; |
| top: 7px; |
| height: 2px; |
| border-radius: 999px; |
| background: rgba(255, 241, 194, 0.42); |
| } |
|
|
| .tte-era-sign::after { |
| content: ""; |
| position: absolute; |
| left: 50%; |
| top: 100%; |
| width: 9px; |
| height: 76px; |
| transform: translateX(-50%); |
| border: 2px solid rgba(45, 25, 14, 0.74); |
| border-top: 0; |
| background: |
| linear-gradient(90deg, #5a3019, #d6a14a 45%, #6e3d20); |
| box-shadow: 0 10px 10px rgba(46, 28, 18, 0.26); |
| } |
|
|
| .tte-era-sign.past { |
| left: auto; |
| right: 104%; |
| animation-name: tte-sign-past; |
| } |
|
|
| .tte-window-glow, |
| .tte-window-glass { |
| position: absolute; |
| inset: 0; |
| z-index: 32; |
| pointer-events: none; |
| } |
|
|
| .tte-window-glow { |
| background: |
| radial-gradient(ellipse at 50% 22%, rgba(255, 255, 235, 0.34), transparent 22%), |
| linear-gradient(180deg, transparent 0 62%, rgba(90, 47, 23, 0.16) 100%); |
| mix-blend-mode: screen; |
| } |
|
|
| .tte-window-glass { |
| background: |
| linear-gradient(112deg, transparent 0 27%, rgba(255, 255, 255, 0.24) 28%, transparent 31%), |
| linear-gradient(103deg, transparent 0 68%, rgba(255, 248, 219, 0.18) 69%, transparent 72%), |
| radial-gradient(ellipse at 50% 15%, rgba(255, 255, 255, 0.14), transparent 28%); |
| opacity: 0.74; |
| } |
|
|
| .tte-generated-world { |
| position: absolute; |
| inset: -4%; |
| z-index: 22; |
| opacity: 0; |
| pointer-events: none; |
| background-position: center 42%; |
| background-size: cover; |
| filter: saturate(0.98) contrast(1.05); |
| transform: scale(1.04); |
| transition: opacity 800ms ease, transform 1200ms ease; |
| } |
|
|
| .tte-generated-world::after { |
| content: ""; |
| position: absolute; |
| inset: 0; |
| background: |
| radial-gradient(ellipse at 50% 10%, rgba(255, 246, 210, 0.2), transparent 30%), |
| linear-gradient(180deg, transparent 0 68%, rgba(74, 39, 18, 0.2) 100%); |
| pointer-events: none; |
| } |
|
|
| .tm-has-scene.tm-state-arrived .tte-generated-world, |
| .tm-has-scene.tm-state-conversing .tte-generated-world { |
| opacity: 0.92; |
| transform: scale(1); |
| } |
|
|
| .tte-generated-person { |
| position: absolute; |
| left: 50%; |
| bottom: 7%; |
| z-index: 29; |
| display: block; |
| width: clamp(190px, 20vw, 330px); |
| max-height: 80%; |
| object-fit: contain; |
| object-position: center bottom; |
| opacity: 0; |
| pointer-events: none; |
| border-radius: 26px; |
| transform: translateX(-50%) translateY(18px) scale(0.96); |
| transform-origin: 50% 100%; |
| filter: drop-shadow(0 24px 20px rgba(58, 31, 17, 0.28)); |
| transition: opacity 900ms ease, transform 1200ms cubic-bezier(0.2, 0.9, 0.2, 1); |
| } |
|
|
| .tm-has-portrait.tm-state-arrived .tte-generated-person, |
| .tm-has-portrait.tm-state-conversing .tte-generated-person { |
| opacity: 1; |
| transform: translateX(-50%) translateY(0) scale(1); |
| } |
|
|
| .tte-steam-curtain { |
| position: absolute; |
| inset: -8%; |
| z-index: 30; |
| opacity: 0; |
| pointer-events: none; |
| background: |
| radial-gradient(ellipse at 22% 76%, rgba(255, 248, 226, 0.82), transparent 43%), |
| radial-gradient(ellipse at 52% 72%, rgba(255, 248, 226, 0.78), transparent 46%), |
| radial-gradient(ellipse at 82% 78%, rgba(255, 248, 226, 0.68), transparent 40%); |
| filter: blur(18px); |
| } |
|
|
| .tm-state-braking .tte-steam-curtain, |
| .tm-state-arrived .tte-steam-curtain { |
| animation: tte-steam-reveal 3200ms ease both; |
| } |
|
|
| .tte-person { |
| position: absolute; |
| right: 15%; |
| bottom: 16%; |
| z-index: 28; |
| width: clamp(132px, 14vw, 210px); |
| aspect-ratio: 0.58; |
| opacity: 0; |
| transform: translateY(24px) scale(0.88); |
| transform-origin: 50% 100%; |
| transition: opacity 900ms ease, transform 1200ms cubic-bezier(0.2, 0.9, 0.2, 1); |
| filter: drop-shadow(0 20px 18px rgba(79, 45, 24, 0.28)); |
| } |
|
|
| .tm-state-arrived .tte-person, |
| .tm-state-conversing .tte-person { |
| opacity: 0; |
| } |
|
|
| .tte-person { |
| display: none !important; |
| } |
|
|
| .tte-person__shadow, |
| .tte-person__legs, |
| .tte-person__body, |
| .tte-person__sash, |
| .tte-person__head, |
| .tte-person__hair, |
| .tte-person__arm { |
| position: absolute; |
| display: block; |
| } |
|
|
| .tte-person__shadow { |
| left: 20%; |
| right: 18%; |
| bottom: -2%; |
| height: 9%; |
| border-radius: 50%; |
| background: rgba(80, 45, 24, 0.18); |
| } |
|
|
| .tte-person__legs { |
| left: 33%; |
| bottom: 0; |
| width: 35%; |
| height: 36%; |
| border: 3px solid rgba(43, 27, 18, 0.72); |
| border-top: 0; |
| border-radius: 0 0 22px 22px; |
| background: linear-gradient(90deg, #6b523d 0 45%, #4f3a2c 46% 55%, #6b523d 56%); |
| } |
|
|
| .tte-person__body { |
| left: 22%; |
| bottom: 30%; |
| width: 56%; |
| height: 42%; |
| border: 3px solid rgba(43, 27, 18, 0.72); |
| border-radius: 38% 38% 18px 18px / 18% 18% 18px 18px; |
| background: |
| radial-gradient(ellipse at 38% 12%, rgba(255, 255, 255, 0.45), transparent 24%), |
| linear-gradient(110deg, var(--person-shirt), #c9b38c); |
| } |
|
|
| .tte-person__sash { |
| left: 24%; |
| bottom: 32%; |
| width: 54%; |
| height: 41%; |
| clip-path: polygon(0 0, 26% 0, 100% 100%, 70% 100%); |
| background: var(--person-sash); |
| opacity: 0.88; |
| } |
|
|
| .tte-person__head { |
| left: 31%; |
| top: 5%; |
| width: 38%; |
| height: 25%; |
| border: 3px solid rgba(43, 27, 18, 0.72); |
| border-radius: 48% 48% 45% 45%; |
| background: |
| radial-gradient(circle at 36% 45%, #2b1a14 0 3%, transparent 3.6%), |
| radial-gradient(circle at 63% 45%, #2b1a14 0 3%, transparent 3.6%), |
| radial-gradient(ellipse at 50% 68%, transparent 0 14%, rgba(76, 38, 25, 0.7) 15% 17%, transparent 18%), |
| linear-gradient(180deg, #c98761, #a4674d); |
| } |
|
|
| .tte-person__hair { |
| left: 29%; |
| top: 2%; |
| width: 42%; |
| height: 17%; |
| border-radius: 50% 50% 42% 42%; |
| background: var(--person-hair); |
| transform: rotate(-3deg); |
| } |
|
|
| .tte-person__arm { |
| bottom: 42%; |
| width: 16%; |
| height: 30%; |
| border: 3px solid rgba(43, 27, 18, 0.68); |
| border-radius: 999px; |
| background: #b87858; |
| transform-origin: 50% 12%; |
| } |
|
|
| .tte-person__arm--left { |
| left: 10%; |
| transform: rotate(28deg); |
| } |
|
|
| .tte-person__arm--right { |
| right: 4%; |
| transform: rotate(-55deg); |
| } |
|
|
| .tte-person[data-person-kind="future"] { |
| --person-shirt: #d9f3ed; |
| --person-sash: #5ba8a7; |
| --person-hair: #2b3440; |
| } |
|
|
| .tte-person[data-person-kind="past"] { |
| --person-shirt: #ead7b4; |
| --person-sash: #9b6b38; |
| --person-hair: #322017; |
| } |
|
|
| .tte-cab-shell { |
| position: absolute; |
| inset: 0; |
| z-index: 40; |
| pointer-events: none; |
| opacity: 0; |
| } |
|
|
| .tte-cab-shell__top, |
| .tte-cab-shell__left, |
| .tte-cab-shell__right, |
| .tte-cab-shell__bottom, |
| .tte-cab-shell__trim, |
| .tte-side-window { |
| position: absolute; |
| display: block; |
| } |
|
|
| .tte-cab-shell__top { |
| left: -4%; |
| right: -4%; |
| top: -4%; |
| height: 27%; |
| border-bottom: 4px solid rgba(43, 24, 14, 0.92); |
| border-radius: 0 0 50% 50% / 0 0 44% 44%; |
| background: |
| repeating-linear-gradient(104deg, rgba(255, 214, 133, 0.05) 0 18px, transparent 19px 54px), |
| radial-gradient(ellipse at 50% 94%, rgba(255, 204, 115, 0.16), transparent 45%), |
| linear-gradient(180deg, #160a06, #4f2a19 46%, #2a150d); |
| box-shadow: inset 0 -20px 28px rgba(255, 221, 141, 0.06); |
| } |
|
|
| .tte-cab-shell__left, |
| .tte-cab-shell__right { |
| top: 0; |
| bottom: 0; |
| width: clamp(52px, 15vw, 235px); |
| background: |
| repeating-linear-gradient(86deg, rgba(255, 217, 145, 0.06) 0 12px, transparent 13px 38px), |
| linear-gradient(90deg, #170b07, #67371f 44%, #2a150d); |
| box-shadow: inset -10px 0 18px rgba(255, 224, 158, 0.07); |
| } |
|
|
| .tte-cab-shell__left { |
| left: 0; |
| border-right: 5px solid rgba(36, 19, 11, 0.92); |
| } |
|
|
| .tte-cab-shell__right { |
| right: 0; |
| transform: scaleX(-1); |
| border-right: 5px solid rgba(36, 19, 11, 0.92); |
| } |
|
|
| .tte-cab-shell__bottom { |
| left: 0; |
| right: 0; |
| bottom: 0; |
| height: clamp(218px, 30vh, 330px); |
| background: |
| radial-gradient(ellipse at 50% 0%, rgba(248, 206, 113, 0.2), transparent 36%), |
| repeating-linear-gradient(90deg, rgba(255, 219, 142, 0.045) 0 20px, transparent 21px 70px), |
| linear-gradient(180deg, #6b3b22 0, #33170e 36%, #130806 100%); |
| border-top: 5px solid rgba(43, 24, 14, 0.94); |
| box-shadow: inset 0 18px 20px rgba(255, 225, 153, 0.08); |
| } |
|
|
| .tte-cab-shell__trim { |
| left: clamp(36px, 15vw, 238px); |
| right: clamp(36px, 15vw, 238px); |
| top: clamp(22px, 4.4vh, 58px); |
| bottom: clamp(190px, 26vh, 286px); |
| border: clamp(7px, 0.8vw, 12px) solid rgba(54, 28, 16, 0.96); |
| border-radius: 50% 50% 10% 10% / 34% 34% 9% 9%; |
| box-shadow: |
| inset 0 0 0 4px rgba(214, 161, 72, 0.76), |
| inset 0 0 0 8px rgba(84, 45, 24, 0.7), |
| 0 12px 22px rgba(21, 9, 5, 0.55); |
| } |
|
|
| .tte-cab-shell__trim::before { |
| content: ""; |
| position: absolute; |
| inset: 9px; |
| border: 2px solid rgba(255, 220, 136, 0.46); |
| border-radius: inherit; |
| } |
|
|
| .tte-side-window { |
| top: 26%; |
| width: clamp(34px, 9vw, 130px); |
| height: 35%; |
| border: 7px solid rgba(48, 25, 14, 0.9); |
| border-radius: 42% 42% 12px 12px / 28% 28% 12px 12px; |
| background: |
| linear-gradient(115deg, transparent 0 38%, rgba(255, 255, 255, 0.28) 39%, transparent 43%), |
| linear-gradient(180deg, rgba(219, 238, 214, 0.64), rgba(242, 184, 150, 0.34)); |
| box-shadow: inset 0 0 0 3px rgba(211, 151, 69, 0.6); |
| } |
|
|
| .tte-side-window--left { |
| left: clamp(8px, 2vw, 30px); |
| } |
|
|
| .tte-side-window--right { |
| right: clamp(8px, 2vw, 30px); |
| } |
|
|
| .tte-cab-shine, |
| .tte-vignette, |
| .tte-film-grain, |
| .tte-speed-field { |
| position: absolute; |
| inset: 0; |
| pointer-events: none; |
| } |
|
|
| .tte-cab-shine { |
| z-index: 42; |
| background: |
| radial-gradient(ellipse at 50% 6%, rgba(255, 221, 140, 0.17), transparent 32%), |
| radial-gradient(ellipse at 50% 88%, rgba(255, 208, 111, 0.13), transparent 36%); |
| mix-blend-mode: screen; |
| } |
|
|
| .tte-vignette { |
| z-index: 58; |
| background: |
| radial-gradient(ellipse at 50% 40%, transparent 0 46%, rgba(30, 14, 8, 0.34) 74%, rgba(12, 5, 3, 0.76) 100%), |
| linear-gradient(180deg, rgba(0, 0, 0, 0.18), transparent 20%, transparent 64%, rgba(0, 0, 0, 0.5)); |
| } |
|
|
| .tte-film-grain { |
| z-index: 59; |
| opacity: 0.13; |
| background-image: |
| linear-gradient(0deg, rgba(255, 255, 255, 0.06) 1px, transparent 1px), |
| linear-gradient(90deg, rgba(0, 0, 0, 0.05) 1px, transparent 1px); |
| background-size: 3px 3px; |
| mix-blend-mode: overlay; |
| } |
|
|
| .tte-speed-field { |
| z-index: 26; |
| opacity: 0; |
| transition: opacity 300ms ease; |
| } |
|
|
| .tte-speed-field span { |
| position: absolute; |
| left: 50%; |
| top: 46%; |
| width: 2px; |
| height: 58vh; |
| border-radius: 999px; |
| background: linear-gradient(180deg, transparent, rgba(255, 249, 210, 0.86), transparent); |
| transform-origin: 50% 0; |
| filter: blur(0.5px); |
| } |
|
|
| .tte-speed-field span:nth-child(1) { transform: rotate(28deg) translateY(-12vh); } |
| .tte-speed-field span:nth-child(2) { transform: rotate(-28deg) translateY(-10vh); } |
| .tte-speed-field span:nth-child(3) { transform: rotate(52deg) translateY(-6vh); } |
| .tte-speed-field span:nth-child(4) { transform: rotate(-52deg) translateY(-8vh); } |
| .tte-speed-field span:nth-child(5) { transform: rotate(74deg) translateY(-12vh); } |
| .tte-speed-field span:nth-child(6) { transform: rotate(-74deg) translateY(-11vh); } |
|
|
| .tm-state-traveling .tte-speed-field, |
| .tm-state-launching .tte-speed-field, |
| .tm-state-braking .tte-speed-field { |
| opacity: 0.82; |
| animation: tte-speed-pulse 650ms ease-in-out infinite; |
| } |
|
|
| .tm-state-braking .tte-speed-field { |
| opacity: 1; |
| filter: brightness(1.3); |
| } |
|
|
| .tte-dashboard { |
| position: absolute; |
| left: 0; |
| right: 0; |
| bottom: 0; |
| z-index: 50; |
| height: clamp(218px, 30vh, 330px); |
| pointer-events: none; |
| opacity: 0; |
| } |
|
|
| .tte-gauge-bank { |
| position: absolute; |
| left: clamp(20px, 18vw, 280px); |
| bottom: clamp(54px, 8vh, 86px); |
| display: flex; |
| gap: 14px; |
| } |
|
|
| .tte-gauge { |
| position: relative; |
| width: clamp(42px, 5vw, 62px); |
| aspect-ratio: 1; |
| border: 4px solid rgba(56, 31, 18, 0.9); |
| border-radius: 50%; |
| background: |
| radial-gradient(circle at 50% 56%, #f4d488 0 8%, transparent 9%), |
| radial-gradient(circle, #f4d488 0 52%, #8d5525 53% 100%); |
| box-shadow: inset 0 0 0 3px rgba(255, 239, 183, 0.35), 0 10px 18px rgba(0, 0, 0, 0.28); |
| } |
|
|
| .tte-gauge i { |
| position: absolute; |
| left: 50%; |
| top: 49%; |
| width: 3px; |
| height: 33%; |
| border-radius: 999px; |
| background: #361d11; |
| transform-origin: 50% 100%; |
| transform: translate(-50%, -100%) rotate(-24deg); |
| } |
|
|
| .tm-state-traveling .tte-gauge i, |
| .tm-state-braking .tte-gauge i { |
| animation: tte-needle-flick 560ms ease-in-out infinite; |
| } |
|
|
| .tte-throttle { |
| position: absolute; |
| left: 50%; |
| bottom: clamp(12px, 2vh, 28px); |
| width: clamp(220px, 24vw, 360px); |
| height: clamp(220px, 24vw, 360px); |
| transform: translateX(-50%); |
| transform-origin: 50% 82%; |
| transition: transform 700ms cubic-bezier(0.25, 1.6, 0.48, 1); |
| } |
|
|
| .tte-throttle__base { |
| position: absolute; |
| left: 16%; |
| right: 16%; |
| bottom: 2%; |
| height: 44%; |
| border: 4px solid rgba(57, 31, 18, 0.88); |
| border-radius: 42% 42% 22% 22% / 35% 35% 18% 18%; |
| background: |
| radial-gradient(ellipse at 48% 15%, rgba(255, 244, 188, 0.88), transparent 28%), |
| linear-gradient(90deg, #7a3f20, #d39a3c 26%, #f4cc69 46%, #bd782f 72%, #69351e); |
| box-shadow: |
| inset 0 -18px 28px rgba(82, 38, 14, 0.45), |
| 0 22px 28px rgba(0, 0, 0, 0.34); |
| } |
|
|
| .tte-throttle__slot { |
| position: absolute; |
| left: 45%; |
| bottom: 13%; |
| width: 10%; |
| height: 52%; |
| border: 4px solid rgba(42, 22, 13, 0.86); |
| border-radius: 999px; |
| background: #170d09; |
| } |
|
|
| .tte-throttle__stem { |
| position: absolute; |
| left: 48%; |
| bottom: 43%; |
| width: 9%; |
| height: 44%; |
| border: 3px solid rgba(52, 29, 17, 0.72); |
| border-radius: 999px; |
| background: linear-gradient(90deg, #6c351e, #e4ad4d 48%, #6d351e); |
| transform-origin: 50% 100%; |
| } |
|
|
| .tte-throttle__handle { |
| position: absolute; |
| left: 22%; |
| right: 22%; |
| bottom: 77%; |
| height: 17%; |
| border: 4px solid rgba(52, 29, 17, 0.86); |
| border-radius: 999px; |
| background: |
| linear-gradient(180deg, rgba(255, 255, 255, 0.18), transparent 45%), |
| linear-gradient(90deg, #cf9b43 0 9%, #231712 10% 90%, #d5a348 91%); |
| box-shadow: 0 14px 18px rgba(0, 0, 0, 0.28); |
| } |
|
|
| .tte-throttle__label { |
| position: absolute; |
| left: 50%; |
| bottom: 7%; |
| z-index: 2; |
| transform: translateX(-50%); |
| min-width: 108px; |
| padding: 8px 12px 9px; |
| border: 3px solid rgba(55, 30, 17, 0.78); |
| border-radius: 8px; |
| background: linear-gradient(180deg, #f2c965, #a96b2b); |
| color: var(--tte-readable-ink); |
| font: 900 clamp(12px, 1.3vw, 16px)/1 var(--tte-heading); |
| letter-spacing: 0.08em; |
| text-align: center; |
| text-transform: uppercase; |
| } |
|
|
| .tte-cockpit[data-direction="future"] .tte-throttle { |
| transform: translateX(-50%) rotate(-18deg); |
| } |
|
|
| .tte-cockpit[data-direction="past"] .tte-throttle { |
| transform: translateX(-50%) rotate(18deg); |
| } |
|
|
| .tte-console-lights { |
| position: absolute; |
| right: clamp(26px, 17vw, 265px); |
| bottom: clamp(66px, 9vh, 96px); |
| display: flex; |
| gap: 12px; |
| } |
|
|
| .tte-console-lights span { |
| width: 20px; |
| aspect-ratio: 1; |
| border: 3px solid rgba(37, 20, 12, 0.8); |
| border-radius: 50%; |
| background: #51301d; |
| box-shadow: inset 0 0 0 2px rgba(255, 236, 173, 0.12); |
| } |
|
|
| .tm-state-traveling .tte-console-lights span, |
| .tm-state-braking .tte-console-lights span { |
| background: #d9a342; |
| box-shadow: 0 0 20px rgba(255, 218, 111, 0.5); |
| animation: tte-light-blink 520ms linear infinite alternate; |
| } |
|
|
| .tte-start-signs { |
| position: absolute; |
| left: 0; |
| right: 0; |
| top: clamp(230px, 35vh, 390px); |
| z-index: 64; |
| pointer-events: none; |
| } |
|
|
| .tte-route-sign { |
| position: absolute; |
| min-width: clamp(126px, 13vw, 176px); |
| padding: 12px 19px 13px; |
| border: 5px solid rgba(45, 27, 15, 0.92); |
| border-radius: 6px; |
| background: |
| linear-gradient(90deg, rgba(255, 233, 164, 0.18), transparent 18% 82%, rgba(57, 31, 15, 0.2)), |
| repeating-linear-gradient(0deg, rgba(65, 35, 18, 0.18) 0 2px, transparent 3px 14px), |
| linear-gradient(180deg, #f3cc69 0%, #c18835 48%, #7a4720 100%); |
| color: var(--tte-readable-ink); |
| font: 900 clamp(20px, 2.2vw, 34px)/1 var(--tte-heading); |
| letter-spacing: 0.06em; |
| text-transform: uppercase; |
| text-shadow: none; |
| cursor: pointer; |
| pointer-events: auto; |
| box-shadow: |
| inset 0 0 0 2px rgba(255, 237, 175, 0.32), |
| inset 0 13px 10px rgba(255, 235, 166, 0.16), |
| inset 0 -15px 14px rgba(44, 22, 10, 0.3), |
| 0 18px 24px rgba(46, 28, 18, 0.28); |
| transform-origin: 50% 100%; |
| transition: transform 160ms ease, filter 160ms ease, opacity 400ms ease; |
| } |
|
|
| .tte-route-sign span { |
| position: relative; |
| z-index: 2; |
| } |
|
|
| .tte-route-sign::before { |
| content: ""; |
| position: absolute; |
| left: 50%; |
| top: 100%; |
| width: 12px; |
| height: clamp(86px, 10vh, 132px); |
| transform: translateX(-50%); |
| border: 2px solid rgba(48, 28, 16, 0.86); |
| border-top: 0; |
| border-radius: 0 0 999px 999px; |
| background: |
| linear-gradient(90deg, #4c2815, #d6a24a 46%, #62351b); |
| box-shadow: 0 12px 14px rgba(35, 18, 9, 0.3); |
| z-index: -1; |
| } |
|
|
| .tte-route-sign::after { |
| content: ""; |
| position: absolute; |
| inset: 7px 9px; |
| border: 2px solid rgba(71, 41, 20, 0.42); |
| border-radius: 3px; |
| background: |
| radial-gradient(circle at 8px 8px, rgba(52, 29, 15, 0.72) 0 3px, transparent 3.5px), |
| radial-gradient(circle at calc(100% - 8px) 8px, rgba(52, 29, 15, 0.72) 0 3px, transparent 3.5px), |
| radial-gradient(circle at 8px calc(100% - 8px), rgba(52, 29, 15, 0.72) 0 3px, transparent 3.5px), |
| radial-gradient(circle at calc(100% - 8px) calc(100% - 8px), rgba(52, 29, 15, 0.72) 0 3px, transparent 3.5px); |
| pointer-events: none; |
| } |
|
|
| .tte-route-sign:hover, |
| .tte-route-sign:focus-visible { |
| outline: none; |
| filter: brightness(1.1); |
| transform: translateY(-2px) rotate(var(--tilt, 0deg)); |
| } |
|
|
| .tte-route-sign--future { |
| left: clamp(26%, 31vw, 38%); |
| --tilt: -3deg; |
| transform: rotate(-4deg); |
| } |
|
|
| .tte-route-sign--past { |
| right: clamp(24%, 28vw, 36%); |
| --tilt: 3deg; |
| transform: rotate(4deg); |
| } |
|
|
| .tm-state-launching .tte-start-signs, |
| .tm-state-traveling .tte-start-signs, |
| .tm-state-braking .tte-start-signs, |
| .tm-state-arrived .tte-start-signs, |
| .tm-state-conversing .tte-start-signs { |
| opacity: 0; |
| pointer-events: none; |
| } |
|
|
| .tte-back-button { |
| position: absolute; |
| left: clamp(18px, 4vw, 54px); |
| top: clamp(18px, 4vh, 46px); |
| z-index: 74; |
| min-height: 42px; |
| padding: 8px 15px; |
| border: 3px solid rgba(54, 31, 18, 0.82); |
| border-radius: 999px; |
| background: rgba(255, 238, 196, 0.9); |
| color: var(--tte-readable-ink); |
| font: 900 12px/1 var(--tte-heading); |
| letter-spacing: 0.05em; |
| text-transform: uppercase; |
| cursor: pointer; |
| opacity: 0; |
| pointer-events: none; |
| box-shadow: 0 12px 22px rgba(34, 17, 9, 0.22); |
| transition: opacity 260ms ease, transform 160ms ease; |
| } |
|
|
| .tte-back-button:hover, |
| .tte-back-button:focus-visible { |
| outline: none; |
| transform: translateY(-1px); |
| } |
|
|
| .tm-state-launching .tte-back-button, |
| .tm-state-traveling .tte-back-button, |
| .tm-state-braking .tte-back-button, |
| .tm-state-arrived .tte-back-button, |
| .tm-state-conversing .tte-back-button { |
| opacity: 1; |
| pointer-events: auto; |
| } |
|
|
| .tte-destination-plaque { |
| position: absolute; |
| left: clamp(18px, 4vw, 54px); |
| bottom: clamp(32px, 4.5vh, 62px); |
| z-index: 70; |
| display: grid; |
| gap: 4px; |
| width: min(310px, calc(45vw - 28px)); |
| padding: 12px 14px 13px; |
| border: 3px solid rgba(54, 31, 18, 0.86); |
| border-radius: 8px; |
| background: |
| linear-gradient(180deg, rgba(255, 238, 195, 0.95), rgba(214, 164, 84, 0.9)); |
| color: var(--tte-readable-ink); |
| box-shadow: 0 16px 28px rgba(25, 10, 5, 0.32); |
| transition: opacity 240ms ease, transform 240ms ease; |
| } |
|
|
| .tte-destination-plaque span { |
| font: 900 10px/1.15 var(--tte-body); |
| letter-spacing: 0.12em; |
| text-transform: uppercase; |
| opacity: 1; |
| } |
|
|
| .tte-destination-plaque strong { |
| overflow-wrap: anywhere; |
| font: 900 clamp(20px, 2vw, 28px)/1.02 var(--tte-heading); |
| } |
|
|
| #tm-route-atmosphere { |
| display: -webkit-box; |
| overflow: hidden; |
| font-size: 12px; |
| line-height: 1.28; |
| letter-spacing: 0; |
| text-transform: none; |
| -webkit-line-clamp: 2; |
| -webkit-box-orient: vertical; |
| } |
|
|
| .tte-year-module { |
| position: absolute; |
| left: 50%; |
| top: clamp(18px, 4vh, 48px); |
| z-index: 72; |
| min-width: clamp(120px, 13vw, 190px); |
| transform: translateX(-50%); |
| padding: 9px 14px 11px; |
| border: 3px solid rgba(54, 31, 18, 0.86); |
| border-radius: 8px; |
| background: rgba(255, 240, 203, 0.92); |
| color: #21130d; |
| color: var(--tte-readable-ink); |
| text-align: center; |
| box-shadow: 0 14px 22px rgba(34, 17, 9, 0.2); |
| transition: opacity 240ms ease, transform 240ms ease; |
| } |
|
|
| .tm-state-dormant .tte-destination-plaque, |
| .tm-state-dormant .tte-year-module { |
| opacity: 0; |
| pointer-events: none; |
| } |
|
|
| .tm-state-dormant .tte-year-module { |
| transform: translateX(-50%) translateY(-8px); |
| } |
|
|
| .tte-year-label { |
| display: block; |
| font: 900 10px/1 var(--tte-body); |
| letter-spacing: 0.14em; |
| text-transform: uppercase; |
| } |
|
|
| .tte-year-counter { |
| display: block; |
| margin-top: 2px; |
| font: 900 clamp(30px, 4vw, 56px)/0.95 var(--tte-heading); |
| letter-spacing: 0; |
| } |
|
|
| .tte-narration { |
| position: absolute; |
| left: 50%; |
| bottom: clamp(196px, 27vh, 292px); |
| z-index: 68; |
| width: min(700px, calc(100% - 48px)); |
| margin: 0; |
| padding: 11px 18px 13px; |
| border: 3px solid rgba(54, 31, 18, 0.78); |
| border-radius: 999px; |
| background: rgba(255, 239, 203, 0.88); |
| color: var(--tte-readable-ink); |
| font: 800 clamp(15px, 1.5vw, 19px)/1.25 var(--tte-heading); |
| text-align: center; |
| box-shadow: 0 16px 24px rgba(43, 22, 12, 0.22); |
| transform: translateX(-50%); |
| transition: opacity 400ms ease, transform 400ms ease; |
| } |
|
|
| .tm-state-conversing .tte-narration { |
| opacity: 0; |
| transform: translateX(-50%) translateY(12px); |
| pointer-events: none; |
| } |
|
|
| .tte-conversation-panel { |
| position: absolute; |
| right: clamp(18px, 4vw, 56px); |
| bottom: clamp(20px, 4vh, 54px); |
| z-index: 76; |
| display: grid; |
| gap: 10px; |
| width: min(420px, calc(100% - 36px)); |
| opacity: 0; |
| transform: translateY(18px); |
| pointer-events: none; |
| transition: opacity 440ms ease, transform 520ms cubic-bezier(0.2, 0.9, 0.2, 1); |
| } |
|
|
| .tm-state-arrived .tte-conversation-panel, |
| .tm-state-conversing .tte-conversation-panel { |
| opacity: 1; |
| transform: translateY(0); |
| pointer-events: auto; |
| } |
|
|
| .tte-contact-card { |
| display: grid; |
| gap: 3px; |
| justify-items: end; |
| padding: 10px 14px 12px; |
| border: 3px solid rgba(45, 27, 18, 0.72); |
| border-radius: 8px; |
| background: rgba(255, 247, 222, 0.93); |
| color: var(--tte-readable-ink); |
| text-align: right; |
| box-shadow: 0 12px 20px rgba(33, 17, 9, 0.22); |
| } |
|
|
| .tte-contact-card span { |
| font: 900 10px/1 var(--tte-body); |
| letter-spacing: 0.16em; |
| text-transform: uppercase; |
| } |
|
|
| .tte-contact-card strong { |
| font: 900 clamp(20px, 2.2vw, 30px)/1 var(--tte-heading); |
| } |
|
|
| .tte-contact-card em { |
| max-width: 320px; |
| font: 700 13px/1.25 var(--tte-body); |
| opacity: 1; |
| } |
|
|
| .tte-dialogue-bubbles { |
| display: grid; |
| gap: 10px; |
| max-height: min(260px, 30vh); |
| overflow-y: auto; |
| padding: 4px 4px 8px; |
| } |
|
|
| .tte-speech-bubble { |
| position: relative; |
| max-width: 84%; |
| padding: 11px 14px 12px; |
| border: 3px solid rgba(45, 27, 18, 0.82); |
| border-radius: 20px; |
| background: rgba(255, 247, 222, 0.96); |
| color: var(--tte-readable-ink); |
| font: 800 14px/1.28 var(--tte-body); |
| box-shadow: 0 10px 18px rgba(38, 19, 10, 0.22); |
| } |
|
|
| .tte-speech-bubble::after { |
| content: ""; |
| position: absolute; |
| bottom: -13px; |
| width: 22px; |
| height: 22px; |
| border-right: 3px solid rgba(45, 27, 18, 0.82); |
| border-bottom: 3px solid rgba(45, 27, 18, 0.82); |
| background: inherit; |
| transform: rotate(38deg); |
| } |
|
|
| .tte-speech-bubble.user { |
| justify-self: end; |
| background: rgba(224, 248, 244, 0.96); |
| } |
|
|
| .tte-speech-bubble.user::after { |
| right: 28px; |
| } |
|
|
| .tte-speech-bubble.character { |
| justify-self: start; |
| } |
|
|
| .tte-speech-bubble.character::after { |
| left: 28px; |
| } |
|
|
| .tte-dialogue-form { |
| display: grid; |
| grid-template-columns: minmax(0, 1fr) auto; |
| gap: 8px; |
| } |
|
|
| .tte-dialogue-form input { |
| min-height: 44px; |
| width: 100%; |
| border: 3px solid rgba(45, 27, 18, 0.78); |
| border-radius: 999px; |
| background: rgba(255, 247, 222, 0.96); |
| color: var(--tte-readable-ink); |
| padding: 0 16px; |
| font: 800 14px/1 var(--tte-body); |
| } |
|
|
| .tte-dialogue-form button, |
| .tm-live-button { |
| min-height: 44px; |
| border: 3px solid rgba(45, 27, 18, 0.82); |
| border-radius: 999px; |
| background: linear-gradient(180deg, #f0c966, #bf7b32); |
| color: var(--tte-readable-ink); |
| font: 900 12px/1 var(--tte-heading); |
| letter-spacing: 0.06em; |
| text-transform: uppercase; |
| cursor: pointer; |
| } |
|
|
| .tte-dialogue-form input:focus, |
| .tte-dialogue-form button:focus-visible, |
| .tm-live-button:focus-visible { |
| outline: 3px solid rgba(131, 214, 211, 0.68); |
| outline-offset: 2px; |
| } |
|
|
| .tm-live-voice { |
| display: grid; |
| grid-template-columns: 112px minmax(0, 1fr); |
| gap: 7px 9px; |
| align-items: center; |
| } |
|
|
| .tm-live-button[disabled] { |
| opacity: 0.56; |
| cursor: not-allowed; |
| } |
|
|
| .tm-live-button.tm-live-on { |
| background: linear-gradient(180deg, #a9ebe4, #54a5a6); |
| } |
|
|
| .tm-live-meter { |
| height: 12px; |
| overflow: hidden; |
| border: 3px solid rgba(45, 27, 18, 0.62); |
| border-radius: 999px; |
| background: rgba(255, 247, 222, 0.82); |
| } |
|
|
| .tm-live-meter span { |
| display: block; |
| width: 0%; |
| height: 100%; |
| border-radius: inherit; |
| background: linear-gradient(90deg, #d39a3c, #83d6d3); |
| transition: width 80ms linear; |
| } |
|
|
| .tm-live-status { |
| grid-column: 1 / -1; |
| justify-self: center; |
| padding: 5px 10px 6px; |
| border: 2px solid rgba(45, 27, 18, 0.64); |
| border-radius: 999px; |
| background: rgba(255, 247, 222, 0.9); |
| color: var(--tte-readable-ink); |
| font: 900 11px/1.1 var(--tte-body); |
| letter-spacing: 0.08em; |
| text-align: center; |
| text-transform: uppercase; |
| } |
|
|
| .tm-live-transcript { |
| display: none; |
| } |
|
|
| .tte-artifact-panel, |
| .tm-dev-warning { |
| position: absolute; |
| z-index: 78; |
| } |
|
|
| .tte-artifact-panel { |
| left: clamp(18px, 4vw, 56px); |
| top: clamp(76px, 12vh, 124px); |
| display: none; |
| width: min(330px, calc(100% - 36px)); |
| padding: 12px 14px; |
| border: 3px solid rgba(45, 27, 18, 0.78); |
| border-radius: 8px; |
| background: rgba(255, 247, 222, 0.92); |
| color: var(--tte-readable-ink); |
| } |
|
|
| .tte-artifact-panel[data-artifact-state="visible"] { |
| display: block; |
| } |
|
|
| .tm-dev-warning { |
| left: 50%; |
| top: 84px; |
| width: min(560px, calc(100% - 36px)); |
| transform: translateX(-50%); |
| padding: 10px 14px; |
| border: 3px solid rgba(45, 27, 18, 0.78); |
| border-radius: 8px; |
| background: #fff0cb; |
| color: var(--tte-readable-ink); |
| font: 800 13px/1.25 var(--tte-body); |
| } |
|
|
| .tm-state-launching .tte-cockpit, |
| .tm-state-traveling .tte-cockpit, |
| .tm-state-braking .tte-cockpit { |
| animation: none; |
| } |
|
|
| .tm-state-launching .tte-era-strip, |
| .tm-state-traveling .tte-era-strip, |
| .tm-state-braking .tte-era-strip { |
| opacity: 0 !important; |
| } |
|
|
| .tm-state-traveling .tte-era-strip, |
| .tm-state-launching .tte-era-strip { |
| animation: tte-panorama-future var(--tte-ride-duration) linear infinite; |
| } |
|
|
| .tte-cockpit[data-direction="past"].tm-state-traveling .tte-era-strip, |
| .tte-cockpit[data-direction="past"].tm-state-launching .tte-era-strip { |
| animation-name: tte-panorama-past; |
| } |
|
|
| .tm-state-launching .tte-cab-shell, |
| .tm-state-launching .tte-dashboard { |
| animation: tte-cab-sway 360ms ease-in-out infinite; |
| } |
|
|
| .tm-state-traveling .tte-cab-shell, |
| .tm-state-traveling .tte-dashboard { |
| animation: tte-cab-sway 150ms ease-in-out infinite; |
| } |
|
|
| .tm-state-braking .tte-cab-shell, |
| .tm-state-braking .tte-dashboard, |
| .tm-state-braking .tte-windscreen { |
| animation: tte-violent-shake 92ms linear infinite; |
| } |
|
|
| .tm-state-arrived .tte-era-strip, |
| .tm-state-conversing .tte-era-strip { |
| opacity: 0 !important; |
| animation-play-state: paused; |
| } |
|
|
| .tm-state-arrived .tte-track-bed, |
| .tm-state-conversing .tte-track-bed { |
| opacity: 0 !important; |
| } |
|
|
| .tm-state-conversing[data-speech-state="replying"] .tte-generated-person, |
| .tm-state-conversing[data-speech-state="processing"] .tte-generated-person { |
| filter: drop-shadow(0 24px 20px rgba(58, 31, 17, 0.28)) drop-shadow(0 0 16px rgba(131, 214, 211, 0.34)); |
| } |
|
|
| @keyframes tte-dream-drift { |
| from { transform: scale(1.06) translate3d(-0.8%, -0.4%, 0); } |
| to { transform: scale(1.1) translate3d(0.8%, 0.5%, 0); } |
| } |
|
|
| @keyframes tte-vortex-turn { |
| from { transform: scale(0.88) rotate(0deg); } |
| to { transform: scale(1.08) rotate(360deg); } |
| } |
|
|
| @keyframes tte-reference-rumble { |
| 0%, 100% { transform: translate3d(0, 0, 0) scale(1.012); } |
| 25% { transform: translate3d(2px, -1px, 0) scale(1.018); } |
| 50% { transform: translate3d(-2px, 1px, 0) scale(1.014); } |
| 75% { transform: translate3d(1px, 2px, 0) scale(1.02); } |
| } |
|
|
| @keyframes tte-reference-brake-shake { |
| 0%, 100% { transform: translate3d(0, 0, 0) rotate(0deg) scale(1.025); } |
| 20% { transform: translate3d(5px, -3px, 0) rotate(0.35deg) scale(1.035); } |
| 40% { transform: translate3d(-4px, 4px, 0) rotate(-0.45deg) scale(1.03); } |
| 60% { transform: translate3d(4px, 2px, 0) rotate(0.28deg) scale(1.038); } |
| 80% { transform: translate3d(-3px, -2px, 0) rotate(-0.3deg) scale(1.032); } |
| } |
|
|
| @keyframes tte-transition-flash { |
| from { transform: translate3d(-1.5%, 0, 0) scale(1.02); filter: brightness(0.9); } |
| to { transform: translate3d(1.5%, 0, 0) scale(1.06); filter: brightness(1.32); } |
| } |
|
|
| @keyframes tte-panorama-future { |
| from { transform: translate3d(0, 0, 0); } |
| to { transform: translate3d(-83.333%, 0, 0); } |
| } |
|
|
| @keyframes tte-panorama-past { |
| from { transform: translate3d(-83.333%, 0, 0); } |
| to { transform: translate3d(0, 0, 0); } |
| } |
|
|
| @keyframes tte-sleeper-rush { |
| from { background-position-y: 0; } |
| to { background-position-y: 47px; } |
| } |
|
|
| @keyframes tte-sign-future { |
| from { transform: translateX(0) scale(0.72); opacity: 0; } |
| 12% { opacity: 1; } |
| to { transform: translateX(-145vw) scale(1.12); opacity: 0; } |
| } |
|
|
| @keyframes tte-sign-past { |
| from { transform: translateX(0) scale(0.72); opacity: 0; } |
| 12% { opacity: 1; } |
| to { transform: translateX(145vw) scale(1.12); opacity: 0; } |
| } |
|
|
| @keyframes tte-landmark-future { |
| from { transform: translateX(0) scale(var(--scale, 1)); opacity: 0; } |
| 10%, 72% { opacity: 1; } |
| to { transform: translateX(-132vw) scale(calc(var(--scale, 1) * 1.28)); opacity: 0; } |
| } |
|
|
| @keyframes tte-landmark-past { |
| from { transform: translateX(0) scale(var(--scale, 1)); opacity: 0; } |
| 10%, 72% { opacity: 1; } |
| to { transform: translateX(132vw) scale(calc(var(--scale, 1) * 1.28)); opacity: 0; } |
| } |
|
|
| @keyframes tte-speed-pulse { |
| 0%, 100% { transform: scale(1); } |
| 50% { transform: scale(1.03); } |
| } |
|
|
| @keyframes tte-steam-reveal { |
| 0% { opacity: 0; transform: translateY(12%) scale(0.92); } |
| 22%, 62% { opacity: 0.94; } |
| 100% { opacity: 0; transform: translateY(-12%) scale(1.16); } |
| } |
|
|
| @keyframes tte-person-breathe { |
| 0%, 100% { transform: translateY(0) scale(1); } |
| 50% { transform: translateY(-3px) scale(1.01); } |
| } |
|
|
| @keyframes tte-cab-sway { |
| 0%, 100% { transform: translate3d(0, 0, 0); } |
| 35% { transform: translate3d(1px, -1px, 0); } |
| 70% { transform: translate3d(-1px, 1px, 0); } |
| } |
|
|
| @keyframes tte-violent-shake { |
| 0%, 100% { transform: translate3d(0, 0, 0) rotate(0deg); } |
| 25% { transform: translate3d(3px, -2px, 0) rotate(0.2deg); } |
| 50% { transform: translate3d(-2px, 2px, 0) rotate(-0.25deg); } |
| 75% { transform: translate3d(2px, 1px, 0) rotate(0.18deg); } |
| } |
|
|
| @keyframes tte-needle-flick { |
| 0%, 100% { transform: translate(-50%, -100%) rotate(-42deg); } |
| 50% { transform: translate(-50%, -100%) rotate(48deg); } |
| } |
|
|
| @keyframes tte-light-blink { |
| from { opacity: 0.55; } |
| to { opacity: 1; } |
| } |
|
|
| @media (max-width: 900px) { |
| .tte-windscreen { |
| left: 32px; |
| right: 32px; |
| bottom: 260px; |
| } |
|
|
| .tte-cab-shell__left, |
| .tte-cab-shell__right, |
| .tte-side-window { |
| display: none; |
| } |
|
|
| .tte-cab-shell__trim { |
| left: 22px; |
| right: 22px; |
| bottom: 244px; |
| } |
|
|
| .tte-start-signs { |
| top: 34vh; |
| } |
|
|
| .tte-route-sign--future { |
| left: 15%; |
| } |
|
|
| .tte-route-sign--past { |
| right: 15%; |
| } |
|
|
| .tte-destination-plaque { |
| width: min(270px, calc(48vw - 22px)); |
| } |
| } |
|
|
| @media (max-width: 640px) { |
| .tte-cockpit { |
| min-height: 780px; |
| } |
|
|
| .tte-windscreen { |
| top: 72px; |
| left: 18px; |
| right: 18px; |
| bottom: 320px; |
| } |
|
|
| .tte-cab-shell__trim { |
| top: 62px; |
| left: 12px; |
| right: 12px; |
| bottom: 304px; |
| } |
|
|
| .tte-cab-shell__bottom, |
| .tte-dashboard { |
| height: 330px; |
| } |
|
|
| .tte-start-signs { |
| top: 250px; |
| } |
|
|
| .tte-route-sign { |
| min-width: 112px; |
| padding: 9px 12px 10px; |
| font-size: 21px; |
| } |
|
|
| .tte-route-sign--future { |
| left: 8%; |
| } |
|
|
| .tte-route-sign--past { |
| right: 8%; |
| } |
|
|
| .tte-year-module { |
| left: auto; |
| right: 14px; |
| transform: none; |
| min-width: 112px; |
| } |
|
|
| .tte-destination-plaque { |
| display: none; |
| } |
|
|
| .tte-narration { |
| bottom: 300px; |
| width: calc(100% - 28px); |
| border-radius: 18px; |
| font-size: 14px; |
| } |
|
|
| .tte-gauge-bank, |
| .tte-console-lights { |
| display: none; |
| } |
|
|
| .tte-throttle { |
| width: 210px; |
| height: 210px; |
| bottom: 120px; |
| } |
|
|
| .tte-conversation-panel { |
| left: 14px; |
| right: 14px; |
| bottom: 16px; |
| width: auto; |
| } |
|
|
| .tte-dialogue-form { |
| grid-template-columns: 1fr; |
| } |
|
|
| .tte-person { |
| right: 7%; |
| bottom: 13%; |
| width: 126px; |
| } |
|
|
| .tte-generated-person { |
| left: 50%; |
| bottom: 10%; |
| width: min(210px, 42vw); |
| } |
| } |
|
|
| @media (prefers-reduced-motion: reduce) { |
| .tte-cockpit *, |
| .tte-cockpit *::before, |
| .tte-cockpit *::after { |
| animation-duration: 1ms !important; |
| animation-iteration-count: 1 !important; |
| transition-duration: 1ms !important; |
| } |
| } |
|
|