@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"); @font-face { font-family: "Nersans One"; src: url("/fonts/NersansOne.woff2") format("woff2"), url("/fonts/NersansOne.woff") format("woff"); font-weight: 400; font-style: normal; font-display: swap; } /* Base document reset */ :root { color-scheme: dark; font-family: "Helvetica Neue", Helvetica, Inter, Arial, sans-serif; /* Gallery & docs design tokens */ --font-primary: "Helvetica Neue", Helvetica, Inter, Arial, sans-serif; --font-body: Inter, "Helvetica Neue", Helvetica, Arial, sans-serif; --color-bg: #050505; --color-text: #f4efe7; --color-text-muted: #a9a196; --color-border: #d8d0c4; } html, body, #root { margin: 0; width: 100vw; height: 100vh; } body { overflow: hidden; background: #04070d; } button, input, textarea, select { font: inherit; } /* Site onboarding — accessible focus rings (WCAG 2.4.7) */ .site-card-button:focus-visible, .site-button:focus-visible { outline: 3px solid #ffffff; outline-offset: 3px; box-shadow: 0 0 0 5px rgba(0, 0, 0, 0.55); } .site-card-button[aria-pressed="true"]:focus-visible { outline-color: #a8d5a2; } canvas { display: block; } /* Model gallery */ .gallery-page { position: relative; width: 100vw; height: 100vh; overflow: hidden; background: var(--color-bg); color: var(--color-text); font-family: var(--font-primary); } .gallery-title { position: absolute; top: clamp(18px, 3vw, 34px); right: clamp(18px, 3vw, 38px); z-index: 2; margin: 0; color: var(--color-text); font-size: clamp(18px, 2vw, 26px); font-weight: 700; letter-spacing: 0.32em; line-height: 1; } .gallery-canvas-frame { position: relative; width: 100%; height: 100%; } .gallery-bottom-bar { position: absolute; right: 50%; bottom: clamp(18px, 4vw, 44px); z-index: 2; display: grid; grid-template-columns: 54px minmax(190px, 340px) 54px; align-items: center; overflow: hidden; border: 2px solid var(--color-border); border-radius: 0; background: var(--color-bg); box-shadow: none; transform: translateX(50%); } .gallery-bottom-bar button { display: grid; place-items: center; width: 54px; height: 54px; border: 0; background: transparent; color: var(--color-text); cursor: pointer; transition: background 160ms ease, color 160ms ease; } .gallery-bottom-bar button:hover, .gallery-bottom-bar button:focus-visible { background: var(--color-text); color: var(--color-bg); outline: none; } .gallery-model-info { display: grid; place-items: center; min-height: 54px; padding: 0 20px; border-right: 2px solid var(--color-border); border-left: 2px solid var(--color-border); text-align: center; } .gallery-model-info span { max-width: 100%; overflow: hidden; color: var(--color-text); font-size: 15px; font-weight: 700; letter-spacing: 0.03em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; } .gallery-model-info small { margin-top: 2px; color: var(--color-text-muted); font-family: var(--font-body); font-size: 11px; font-weight: 600; } .gallery-texture-status { position: absolute; left: clamp(18px, 3vw, 38px); bottom: clamp(22px, 4vw, 50px); z-index: 2; display: inline-flex; align-items: center; gap: 8px; max-width: min(320px, calc(100vw - 36px)); padding: 10px 13px; border: 2px solid var(--color-border); border-radius: 0; background: var(--color-bg); color: var(--color-border); font-family: var(--font-body); font-size: 12px; font-weight: 700; } .gallery-texture-status--ok { color: var(--color-border); } .gallery-texture-status--warning { color: var(--color-text); } .gallery-texture-status--loading { color: var(--color-text-muted); } .gallery-light-panel { position: absolute; top: 108px; right: 0; z-index: 3; display: flex; align-items: flex-start; transform: translateX(260px); transition: transform 180ms ease; } .gallery-light-panel.is-open { transform: translateX(0); } .gallery-light-panel-toggle { display: grid; place-items: center; width: 42px; height: 42px; border: 2px solid var(--color-border); border-right: 0; border-radius: 0; background: var(--color-bg); color: var(--color-text); cursor: pointer; } .gallery-light-panel-toggle:hover, .gallery-light-panel-toggle:focus-visible { background: var(--color-text); color: var(--color-bg); outline: none; } .gallery-light-panel-content { width: 236px; padding: 16px; border: 2px solid var(--color-border); border-right: 0; border-radius: 0; background: var(--color-bg); box-shadow: none; } .gallery-light-panel-content header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; } .gallery-light-panel-content header span { color: var(--color-text); font-size: 12px; font-weight: 800; letter-spacing: 0.18em; } .gallery-light-panel-content header button { border: 0; background: transparent; color: var(--color-text-muted); cursor: pointer; font-size: 12px; font-weight: 700; } .gallery-light-panel-content header button:hover, .gallery-light-panel-content header button:focus-visible { color: var(--color-text); outline: none; } .gallery-light-control { display: grid; gap: 8px; margin-top: 12px; } .gallery-light-control span { display: flex; align-items: center; justify-content: space-between; color: var(--color-border); font-family: var(--font-body); font-size: 12px; font-weight: 700; } .gallery-light-control strong { color: var(--color-text); font-variant-numeric: tabular-nums; } .gallery-light-control input { width: 100%; accent-color: var(--color-text); } @media (max-width: 720px) { .gallery-title { right: 50%; transform: translateX(50%); } .gallery-bottom-bar { grid-template-columns: 48px minmax(150px, 1fr) 48px; width: calc(100vw - 36px); } .gallery-bottom-bar button, .gallery-model-info { min-height: 50px; } .gallery-bottom-bar button { width: 48px; height: 50px; } .gallery-texture-status { right: 50%; bottom: calc(clamp(18px, 4vw, 44px) + 66px); left: auto; transform: translateX(50%); } .gallery-light-panel { top: 78px; } } /* Gallery - Loading */ .gallery-loading { display: flex; flex-direction: column; align-items: center; gap: 12px; color: var(--color-text); } .gallery-loading-spinner { animation: gallery-spin 1s linear infinite; } .gallery-loading-text { font-family: var(--font-body); font-size: 13px; font-weight: 600; letter-spacing: 0.02em; } @keyframes gallery-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } /* Gallery - Empty state */ .gallery-empty-state { display: flex; flex-direction: column; align-items: center; gap: 16px; padding: 32px; color: var(--color-text-muted); text-align: center; } .gallery-empty-state h1 { margin: 0; color: var(--color-text); font-size: 24px; font-weight: 700; letter-spacing: -0.02em; } .gallery-empty-state { display: flex; flex-direction: column; align-items: center; gap: 16px; padding: 32px; color: #a9a196; text-align: center; } .gallery-empty-state h1 { margin: 0; color: #f4efe7; font-size: 24px; font-weight: 700; letter-spacing: -0.02em; } .gallery-empty-state p { margin: 0; max-width: 320px; font-size: 14px; line-height: 1.5; } /* Gallery - Error state */ .gallery-viewer-error { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; height: 100%; min-height: 360px; padding: 24px; color: #fecaca; text-align: center; } .gallery-viewer-error span { font-size: 14px; font-weight: 500; } /* Gallery - Navigation buttons */ .gallery-nav-button { display: grid; place-items: center; width: 54px; height: 54px; border: 0; background: transparent; color: var(--color-text); cursor: pointer; transition: background 160ms ease, color 160ms ease, transform 100ms ease; } .gallery-nav-button:hover, .gallery-nav-button:focus-visible { background: var(--color-text); color: var(--color-bg); outline: none; } .gallery-nav-button:active { transform: scale(0.95); } /* Gallery - Model info */ .gallery-model-name { max-width: 100%; overflow: hidden; color: var(--color-text); font-size: 15px; font-weight: 700; letter-spacing: 0.03em; text-overflow: ellipsis; text-transform: uppercase; white-space: nowrap; } .gallery-model-counter { margin-top: 2px; color: var(--color-text-muted); font-family: var(--font-body); font-size: 11px; font-weight: 600; } /* Gallery - Texture status spinner */ .gallery-texture-status-spinner { animation: gallery-spin 1s linear infinite; } @media (max-width: 720px) { .gallery-nav-button { width: 48px; height: 50px; } } /* Docs layout */ .docs-page { display: grid; grid-template-columns: 300px minmax(0, 1fr); width: 100vw; height: 100vh; overflow: hidden; background: var(--color-bg); color: var(--color-text); font-family: var(--font-primary); } /* Docs sidebar navigation */ .docs-sidebar { border-right: 2px solid var(--color-border); background: var(--color-bg); overflow-y: auto; } .docs-sidebar__header, .docs-content__header { display: flex; align-items: center; justify-content: space-between; min-height: 78px; padding: 0 18px; border-bottom: 2px solid var(--color-border); } .docs-sidebar__header h1, .docs-content__header span { margin: 0; color: var(--color-text); font-size: 21px; font-weight: 700; letter-spacing: -0.04em; } .docs-sidebar nav { display: grid; } .docs-nav-group { display: grid; border-bottom: 2px solid var(--color-border); } .docs-nav-group h2 { margin: 0; padding: 13px 16px 8px; color: var(--color-text-muted); font-size: 10px; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; } .docs-sidebar a { color: var(--color-text); text-decoration: none; } .docs-nav-item { display: flex; align-items: center; justify-content: space-between; min-height: 46px; padding: 0 16px; border-top: 1px solid rgba(216, 208, 196, 0.35); color: var(--color-text); transition: background 160ms ease, color 160ms ease; } .docs-home-link { display: grid; place-items: center; width: 34px; height: 34px; border: 2px solid currentColor; border-radius: 999px; transition: background 160ms ease, color 160ms ease; } .docs-nav-item span:first-child { display: grid; gap: 2px; } .docs-nav-item strong { font-size: 13px; font-weight: 700; letter-spacing: -0.03em; } .docs-nav-item small, .docs-nav-item__meta { color: var(--color-text-muted); font-size: 11px; font-weight: 600; letter-spacing: -0.01em; } .docs-sidebar a:hover, .docs-sidebar a:focus-visible, .docs-nav-item--active { background: var(--color-text); color: var(--color-bg); outline: none; } .docs-sidebar a:hover small, .docs-sidebar a:hover .docs-nav-item__meta, .docs-sidebar a:focus-visible small, .docs-sidebar a:focus-visible .docs-nav-item__meta, .docs-nav-item--active small, .docs-nav-item--active .docs-nav-item__meta { color: var(--color-bg); } /* Docs content */ .docs-content { overflow-y: auto; scroll-behavior: smooth; background: var(--color-bg); } .docs-content__header { position: sticky; top: 0; z-index: 2; background: var(--color-bg); } .docs-language-toggle { display: inline-flex; align-items: center; gap: 0; padding: 2px; border: 2px solid var(--color-border); border-radius: 999px; background: transparent; color: var(--color-text); cursor: pointer; } .docs-language-toggle span { display: grid; place-items: center; min-width: 36px; min-height: 26px; border-radius: 999px; color: var(--color-text-muted); font-size: 11px; font-weight: 700; letter-spacing: 0.04em; } .docs-language-toggle .is-active { background: var(--color-text); color: var(--color-bg); } .docs-language-toggle:hover, .docs-language-toggle:focus-visible { outline: none; background: rgba(216, 208, 196, 0.1); } .docs-section { max-width: 920px; margin: 0 auto; padding: 34px clamp(18px, 4vw, 56px) 48px; } .docs-section__eyebrow { display: flex; justify-content: space-between; margin-bottom: 22px; color: var(--color-text-muted); font-size: 11px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; } .docs-section h1, .docs-section h2, .docs-section h3 { color: var(--color-text); letter-spacing: -0.06em; line-height: 1.05; } .docs-section h1 { margin-top: 0; margin-bottom: 20px; font-size: clamp(46px, 7vw, 88px); font-weight: 700; } .docs-section h2 { margin-top: 44px; margin-bottom: 12px; padding-bottom: 10px; border-bottom: 2px solid var(--color-border); font-size: clamp(28px, 4vw, 44px); font-weight: 700; } .docs-section h3 { margin-top: 30px; margin-bottom: 10px; font-size: 18px; font-weight: 700; letter-spacing: -0.03em; } .docs-section p, .docs-section li { color: var(--color-border); font-family: var(--font-body); font-size: 15px; line-height: 1.75; } .docs-section ul, .docs-section ol { padding-left: 24px; } .docs-section a { color: var(--color-text); text-underline-offset: 4px; } .docs-section code { border: 0; border-radius: 2px; padding: 2px 5px; background: rgba(216, 208, 196, 0.22); color: var(--color-text); font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace; font-size: 0.92em; } .docs-section pre { overflow-x: auto; padding: 18px; border: 0; border-radius: 0; background: #0d0d0d; } .docs-section pre code { display: block; padding: 0; border: 0; background: transparent; color: var(--color-text); line-height: 1.45; white-space: pre; } .docs-section table { display: block; width: 100%; margin: 20px 0; overflow-x: auto; border-collapse: collapse; } .docs-section th, .docs-section td { padding: 10px 12px; border: 2px solid var(--color-border); text-align: left; } .docs-section th { background: #111; color: var(--color-text); font-weight: 700; } .docs-section blockquote { margin-left: 0; padding-left: 18px; border-left: 2px solid var(--color-border); color: var(--color-text-muted); } /* Docs responsive layout */ @media (max-width: 760px) { .docs-page { display: block; overflow-y: auto; } .docs-sidebar { border-right: 0; border-bottom: 2px solid var(--color-border); } .docs-content { overflow: visible; padding: 24px 16px; } } /* In-game interaction UI */ .crosshair { position: fixed; top: 50%; left: 50%; width: 6px; height: 6px; background: rgba(255, 255, 255, 0.92); border-radius: 999px; transform: translate(-50%, -50%); pointer-events: none; z-index: 10; } .crosshair--interact { width: 12px; height: 12px; background: transparent; border: 2px solid rgba(255, 255, 255, 0.92); } .interact-prompt { position: fixed; bottom: 30%; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 8px; pointer-events: none; z-index: 10; } .interact-prompt__key { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; background: rgba(255, 255, 255, 0.15); border: 1px solid rgba(255, 255, 255, 0.5); border-radius: 4px; font-size: 13px; font-weight: 600; color: white; font-style: normal; } .interact-prompt__label { font-size: 13px; color: rgba(255, 255, 255, 0.85); letter-spacing: 0.03em; } .repair-movement-lock-indicator { position: fixed; top: 22px; left: 50%; z-index: 10; display: inline-flex; align-items: center; gap: 9px; padding: 9px 13px; border: 1px solid rgba(255, 255, 255, 0.18); border-radius: 999px; background: rgba(5, 9, 16, 0.72); color: rgba(255, 255, 255, 0.88); font-size: 12px; font-weight: 650; letter-spacing: 0.02em; pointer-events: none; transform: translateX(-50%); backdrop-filter: blur(10px); } .repair-movement-lock-indicator__dot { width: 7px; height: 7px; border-radius: 999px; background: #38bdf8; box-shadow: 0 0 14px rgba(56, 189, 248, 0.86); } .scene-loading-overlay { position: fixed; inset: 0; z-index: 30; display: flex; align-items: center; justify-content: center; width: 100vw; height: 100vh; overflow: hidden; background: #04070d; pointer-events: none; opacity: 1; transition: opacity 500ms ease; } .scene-loading-overlay--ready { opacity: 0; } .scene-loading-overlay__background, .scene-loading-overlay__shade { position: absolute; inset: 0; } .scene-loading-overlay__background { width: 100%; height: 100%; object-fit: cover; } .scene-loading-overlay__shade { background: rgba(4, 7, 13, 0.12); } .scene-loading-overlay__logo { position: relative; z-index: 1; width: clamp(180px, 28vw, 320px); max-height: min(38vh, 320px); border-radius: 16px; object-fit: cover; box-shadow: 0 28px 80px rgba(0, 0, 0, 0.28); } .scene-loading-overlay__footer { position: absolute; right: 0; bottom: 0; left: 0; z-index: 1; display: grid; gap: 12px; padding: 0 clamp(18px, 4vw, 56px) clamp(22px, 5vh, 48px); } .scene-loading-overlay__meta { display: flex; align-items: center; justify-content: space-between; gap: 18px; color: #ffffff; font-family: "Nersans One", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: clamp(16px, 2.3vw, 30px); line-height: 1; letter-spacing: 0.12em; text-shadow: 0 2px 14px rgba(0, 0, 0, 0.45); text-transform: uppercase; } .scene-loading-overlay__label { display: flex; align-items: center; gap: clamp(8px, 1.2vw, 14px); min-width: 0; } .scene-loading-overlay__spinner { flex: 0 0 auto; width: clamp(18px, 2.2vw, 30px); height: clamp(18px, 2.2vw, 30px); color: #ffffff; animation: scene-loading-spin 900ms linear infinite; } .scene-loading-overlay__meta strong { color: inherit; font: inherit; } .scene-loading-overlay__track { position: relative; overflow: hidden; width: 100%; height: clamp(7px, 1vw, 12px); background: rgba(255, 255, 255, 0.22); box-shadow: 0 8px 30px rgba(0, 0, 0, 0.22); } .scene-loading-overlay__track span { display: block; height: 100%; background: #3b82f6; transition: width 180ms ease; } @keyframes scene-loading-spin { to { transform: rotate(360deg); } } /* Mission notification */ .mission-notification { position: fixed; top: clamp(18px, 4vh, 42px); left: clamp(18px, 4vw, 48px); z-index: 20; width: min(280px, calc(100vw - 36px)); pointer-events: none; opacity: 1; filter: drop-shadow(0 0 12px rgba(96, 165, 250, 0.36)); transform: translate3d(0, 0, 0) scale(1); transition: opacity 420ms ease, filter 420ms ease, transform 420ms ease; animation: mission-notification-enter 900ms ease-out both; } .mission-notification--hidden { opacity: 0; filter: drop-shadow(0 0 4px rgba(96, 165, 250, 0.12)); transform: translate3d(-8px, -2px, 0) scale(0.985); } .mission-notification::after { position: absolute; inset: 0; content: ""; pointer-events: none; } .mission-notification::after { background: linear-gradient( 180deg, transparent 0%, rgba(96, 165, 250, 0.16) 48%, transparent 52%, transparent 100% ); background-size: 100% 10px; opacity: 0.22; clip-path: polygon(0 0, 100% 0, 100% 69%, 88% 100%, 0 100%); mix-blend-mode: screen; } .mission-notification__glow { position: absolute; inset: -14px; background: radial-gradient( circle at 22% 22%, rgba(96, 165, 250, 0.36), transparent 58% ); opacity: 0.7; filter: blur(12px); animation: mission-notification-glow 10s ease-in-out 1s infinite; } .mission-notification__image-wrap { position: relative; display: block; overflow: hidden; clip-path: polygon(0 0, 100% 0, 100% 69%, 88% 100%, 0 100%); } .mission-notification__image-wrap::before { position: absolute; top: 0; bottom: 0; left: -35%; z-index: 2; width: 28%; background: linear-gradient( 90deg, transparent 0%, rgba(191, 219, 254, 0.08) 18%, rgba(125, 211, 252, 0.52) 50%, rgba(191, 219, 254, 0.08) 82%, transparent 100% ); content: ""; mix-blend-mode: screen; opacity: 0; pointer-events: none; transform: skewX(-16deg); animation: mission-notification-scan 3.8s ease-in-out 1.2s infinite; } .mission-notification__image { position: relative; display: block; width: 100%; height: auto; opacity: 0.92; filter: sepia(0.08) saturate(1.18) hue-rotate(155deg) contrast(1.04) brightness(1.03) blur(0.18px); animation: mission-notification-flicker 10s ease-in-out 1s infinite; } @keyframes mission-notification-enter { 0% { opacity: 0; transform: translate3d(-12px, -4px, 0) scale(0.985); } 12% { opacity: 0.85; } 18% { opacity: 0.22; } 26% { opacity: 0.95; } 34% { opacity: 0.5; } 48%, 100% { opacity: 1; transform: translate3d(0, 0, 0) scale(1); } } @keyframes mission-notification-flicker { 0%, 7%, 100% { opacity: 0.92; filter: saturate(1) brightness(1); } 1.5% { opacity: 0.58; filter: saturate(1.25) brightness(1.18); } 3% { opacity: 1; } 4.5% { opacity: 0.74; } } @keyframes mission-notification-scan { 0%, 22% { left: -35%; opacity: 0; } 32% { opacity: 0.78; } 52% { left: 108%; opacity: 0; } 100% { left: 108%; opacity: 0; } } @keyframes mission-notification-glow { 0%, 7%, 100% { opacity: 0.55; } 2.5% { opacity: 0.95; } 4.5% { opacity: 0.35; } } /* Subtitles */ .subtitles { position: fixed; left: 50%; bottom: 7vh; z-index: 15; width: min(780px, calc(100vw - 32px)); transform: translateX(-50%); pointer-events: none; } .subtitles p { margin: 0; padding: 12px 16px; border-radius: 10px; background: rgba(0, 0, 0, 0.82); color: #ffffff; font-size: clamp(1rem, 2vw, 1.25rem); font-weight: 650; line-height: 1.45; text-align: center; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.7); } .subtitles__speaker { margin-right: 0.35em; font-weight: 800; } .subtitles__speaker--narrateur { color: #7dd3fc; } .subtitles__speaker--fermier { color: #86efac; } .subtitles__speaker--electricienne { color: #f9a8d4; } /* In-game settings menu */ .game-settings-menu { position: fixed; inset: 0; z-index: 40; display: grid; place-items: center; padding: 20px; background: rgba(0, 0, 0, 0.6); color: #ffffff; pointer-events: auto; backdrop-filter: blur(10px); } .game-settings-menu__panel { width: min(460px, 100%); max-height: calc(100vh - 40px); overflow-y: auto; padding: 18px; border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 24px; background: rgba(8, 8, 8, 0.94); box-shadow: 0 28px 90px rgba(0, 0, 0, 0.55); } .game-settings-menu__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 4px 4px 16px; } .game-settings-menu__header span { color: #8f8f8f; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; } .game-settings-menu__header h2 { margin: 0.25rem 0 0; font-size: 1.8rem; letter-spacing: -0.06em; } .game-settings-menu__close { display: grid; place-items: center; width: 40px; height: 40px; border: 1px solid rgba(255, 255, 255, 0.14); border-radius: 999px; background: #111111; color: #ffffff; cursor: pointer; } .game-settings-menu__section { display: grid; gap: 12px; padding: 16px 4px; border-top: 1px solid rgba(255, 255, 255, 0.1); } .game-settings-menu__section h3 { margin: 0; color: #d7d7d7; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; } .game-settings-menu__slider { display: grid; gap: 8px; } .game-settings-menu__slider span, .game-settings-menu__checkbox { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: #f2f2f2; font-size: 0.9rem; font-weight: 650; } .game-settings-menu__slider strong { color: #8f8f8f; font-size: 0.78rem; } .game-settings-menu__slider input[type="range"] { width: 100%; accent-color: #ffffff; } .game-settings-menu__checkbox { justify-content: flex-start; cursor: pointer; } .game-settings-menu__checkbox input { width: 18px; height: 18px; accent-color: #ffffff; } .game-settings-menu__choice-group { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; } .game-settings-menu__choice-group--stacked { grid-template-columns: 1fr; } .game-settings-menu__choice-group button, .game-settings-menu__restart, .game-settings-menu__quit { width: 100%; padding: 11px 12px; border: 1px solid #242424; border-radius: 14px; background: #101010; color: #f2f2f2; cursor: pointer; font-size: 0.88rem; font-weight: 680; } .game-settings-menu__choice-group button.active { border-color: #ffffff; background: #ffffff; color: #050505; } .game-settings-menu__restart { display: inline-flex; align-items: center; justify-content: center; gap: 8px; margin-top: 8px; border-color: rgba(96, 165, 250, 0.35); color: #bfdbfe; } .game-settings-menu__quit { margin-top: 8px; border-color: rgba(248, 113, 113, 0.35); color: #fecaca; } /* Debug overlay panels */ .debug-overlay-layout { position: fixed; top: 12px; left: 12px; z-index: 20; display: flex; flex-direction: column; width: min(260px, calc(100vw - 24px)); max-height: calc(100vh - 24px); overflow-y: auto; color: #f8f8f8; background: rgba(8, 8, 8, 0.88); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 18px; box-shadow: 0 18px 60px rgba(0, 0, 0, 0.42); backdrop-filter: blur(18px); scrollbar-width: thin; scrollbar-color: #3a3a3a transparent; pointer-events: auto; } .debug-overlay-layout::-webkit-scrollbar { width: 6px; } .debug-overlay-layout::-webkit-scrollbar-thumb { background: #3a3a3a; border-radius: 999px; } .debug-overlay-layout__header { padding: 12px 12px 10px; } .debug-overlay-layout__kicker { color: #8f8f8f; font-size: 0.58rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; } .debug-overlay-layout__header h2 { margin: 0.2rem 0 0; color: #ffffff; font-size: 1rem; font-weight: 720; letter-spacing: -0.06em; } .debug-overlay-layout__sections { display: flex; flex-direction: column; } .debug-overlay-section { padding: 10px 12px 12px; border-top: 1px solid rgba(255, 255, 255, 0.09); } .debug-overlay-section__heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px; } .debug-overlay-section__heading h3, .game-state-debug-panel__header h3 { margin: 0; color: #ffffff; font-size: 0.66rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; } .debug-overlay-section__heading span { color: #a3a3a3; font-size: 0.66rem; font-weight: 650; } .debug-overlay-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; margin: 0; } .debug-overlay-metrics div { display: grid; gap: 3px; min-height: 0; padding: 7px 8px; background: #101010; border: 1px solid #242424; border-radius: 10px; } .debug-overlay-metrics dt { color: #8f8f8f; font-size: 0.56rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; } .debug-overlay-metrics dd { margin: 0; color: #ffffff; font-size: 0.72rem; font-weight: 650; } .hand-tracking-debug-panel__error { color: #fca5a5; display: block; margin-top: 8px; font-size: 0.68rem; } .hand-tracking-visualizer { position: fixed; inset: 0; z-index: 15; width: 100vw; height: 100vh; pointer-events: none; filter: drop-shadow(0 0 8px rgba(56, 189, 248, 0.55)); } /* Zustand game state debug UI */ .game-state-debug-panel { display: grid; gap: 10px; } .game-state-debug-panel__header { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .game-state-debug-panel__switch-heading span { color: #8f8f8f; font-size: 0.56rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; } .game-state-debug-panel__switch-heading strong { color: #ffffff; font-size: 0.68rem; font-weight: 720; letter-spacing: -0.03em; } .game-state-debug-panel__switch-group { display: grid; gap: 7px; } .game-state-debug-panel__switch-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .game-state-debug-panel__states, .game-state-debug-panel__actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; } .game-state-debug-panel__actions { grid-template-columns: 1fr; margin-top: 2px; padding-top: 10px; border-top: 1px solid rgba(255, 255, 255, 0.09); } .game-state-debug-panel button { display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-height: 28px; padding: 0 8px; border: 1px solid #2f2f2f; border-radius: 10px; background: #101010; color: #d9d9d9; font-size: 0.68rem; font-weight: 650; text-align: center; cursor: pointer; transition: background 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease; } .game-state-debug-panel button:hover, .game-state-debug-panel button:focus-visible, .game-state-debug-panel button.is-active { color: #ffffff; border-color: #ffffff; background: #181818; outline: none; } .game-state-debug-panel button:hover { transform: translateY(-1px); } .game-state-debug-panel button.is-active { border-color: rgba(56, 189, 248, 0.75); background: rgba(56, 189, 248, 0.14); } /* Editor page shell */ .editor-container { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background: #050505; color: #f8f8f8; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; overflow: hidden; } .editor-loading, .editor-error { display: flex; flex-direction: column; justify-content: center; align-items: center; height: 100%; color: #f8f8f8; text-align: center; padding: 2rem; } .editor-loading h2 { font-size: clamp(1.8rem, 4vw, 3rem); color: #ffffff; margin: 0 0 0.75rem; letter-spacing: -0.05em; } .editor-loading p { font-size: 1rem; color: #9b9b9b; } .editor-error h2 { font-size: clamp(1.8rem, 4vw, 3rem); color: #ffffff; margin: 0 0 0.75rem; letter-spacing: -0.05em; } .editor-error p { font-size: 1.1rem; color: #b7b7b7; margin: 0 0 2rem; max-width: 600px; } .editor-container code { background: #171717; padding: 0.2rem 0.4rem; border-radius: 4px; color: #ffffff; font-family: "SFMono-Regular", "Courier New", monospace; } /* Editor loading and upload states */ .editor-upload-section { width: min(520px, calc(100vw - 2rem)); background: #0d0d0d; border-radius: 24px; padding: 1.25rem; border: 1px solid #2a2a2a; box-shadow: 0 24px 80px rgba(0, 0, 0, 0.45); } .editor-upload-section h3 { color: #ffffff; margin: 0 0 1rem; font-size: 0.9rem; font-weight: 650; letter-spacing: -0.02em; } .editor-drop-zone { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 116px; padding: 1.25rem; border: 1px dashed #5b5b5b; border-radius: 18px; background: #111111; color: #f8f8f8; font-weight: 650; text-align: center; cursor: pointer; transition: background 160ms ease, border-color 160ms ease, transform 160ms ease; font-size: 0.95rem; margin-bottom: 1rem; } .editor-drop-zone:hover { background: #181818; border-color: #ffffff; transform: translateY(-1px); } .editor-folder-input { display: none; } .editor-folder-structure { background: #080808; border: 1px solid #202020; border-radius: 16px; padding: 1rem; } .editor-folder-structure h4 { color: #ffffff; margin: 0 0 0.5rem; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.08em; } .editor-folder-structure pre { margin: 0; background: transparent; color: #a7a7a7; font-family: "SFMono-Regular", "Courier New", monospace; font-size: 0.78rem; line-height: 1.55; overflow-x: auto; white-space: pre-wrap; } /* Editor scene overlays */ .editor-camera-info { position: absolute; top: 16px; left: 16px; display: flex; align-items: center; gap: 10px; z-index: 2; background: rgba(5, 5, 5, 0.78); color: #f8f8f8; padding: 8px 10px; border-radius: 999px; border: 1px solid rgba(255, 255, 255, 0.12); box-shadow: 0 16px 50px rgba(0, 0, 0, 0.35); backdrop-filter: blur(18px); font-size: 11px; line-height: 1; } .editor-camera-info span { color: #9b9b9b; } .editor-camera-info strong { color: #ffffff; font-weight: 600; } /* Editor controls panel */ .editor-controls-panel { position: absolute; right: 16px; top: 16px; bottom: 16px; width: min(340px, calc(100vw - 32px)); background: rgba(8, 8, 8, 0.88); padding: 14px; color: #f8f8f8; border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 28px; box-shadow: 0 24px 90px rgba(0, 0, 0, 0.45); overflow-y: auto; display: flex; flex-direction: column; backdrop-filter: blur(22px); scrollbar-width: thin; scrollbar-color: #3a3a3a transparent; } .editor-controls-panel::-webkit-scrollbar { width: 6px; } .editor-controls-panel::-webkit-scrollbar-thumb { background: #3a3a3a; border-radius: 999px; } .editor-panel-header { padding: 12px 12px 16px; } .editor-panel-kicker { color: #8f8f8f; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; } .editor-panel-header h2 { margin: 0.35rem 0 0.45rem; color: #ffffff; font-size: 1.55rem; font-weight: 720; letter-spacing: -0.06em; } .editor-panel-header p { margin: 0; color: #a3a3a3; font-size: 0.84rem; line-height: 1.45; } .editor-panel-group { border-top: 1px solid rgba(255, 255, 255, 0.09); } .editor-panel-group-summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 12px; color: #ffffff; cursor: pointer; font-size: 0.8rem; font-weight: 800; letter-spacing: 0.12em; list-style: none; text-transform: uppercase; user-select: none; } .editor-panel-group-summary:hover { color: #f2f2f2; } .editor-panel-group-meta { display: inline-flex; align-items: center; gap: 8px; color: #777777; font-size: 0.72rem; font-weight: 700; letter-spacing: 0; text-transform: none; } .editor-panel-group-meta svg { transition: transform 160ms ease; } .editor-panel-group[open] .editor-panel-group-meta svg { transform: rotate(180deg); } .editor-panel-group-content > .editor-control-section:first-child, .editor-panel-group-content > .editor-json-section:first-child, .editor-panel-group-content > .editor-cinematic-manifest-section:first-child, .editor-panel-group-content > .editor-dialogue-manifest-section:first-child, .editor-panel-group-content > .editor-srt-section:first-child { border-top: 0; } .editor-control-section { padding: 14px 12px; border-top: 1px solid rgba(255, 255, 255, 0.09); } .editor-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; } .editor-section-heading h3 { margin: 0; color: #ffffff; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; } .editor-section-heading span, .editor-section-heading svg { color: #777777; font-size: 0.74rem; } .editor-transform-buttons { display: grid; grid-template-columns: 1fr; gap: 6px; } .editor-transform-button { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; align-items: center; gap: 10px; width: 100%; padding: 10px 11px; background: #101010; color: #d9d9d9; border: 1px solid #242424; border-radius: 14px; cursor: pointer; font-size: 0.88rem; font-weight: 620; text-align: left; transition: background 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease; } .editor-transform-label { display: grid; min-width: 0; gap: 2px; } .editor-transform-label span, .editor-transform-label small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .editor-transform-label small { color: #8f8f8f; font-size: 0.64rem; font-weight: 620; letter-spacing: 0; } .editor-transform-button.active .editor-transform-label small { color: #555555; } .editor-transform-button.active { background: #ffffff; color: #050505; border-color: #ffffff; } .editor-transform-button:hover { background: #191919; border-color: #5c5c5c; color: #ffffff; transform: translateY(-1px); } .editor-transform-button.active:hover { background: #ffffff; color: #050505; } .editor-transform-button kbd { min-width: 22px; padding: 3px 6px; border-radius: 7px; background: rgba(0, 0, 0, 0.08); color: currentColor; font-family: inherit; font-size: 0.7rem; font-weight: 720; text-align: center; } .editor-history-buttons { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 8px; } .editor-history-button { display: flex; align-items: center; justify-content: center; gap: 7px; padding: 9px; background: #101010; color: #f2f2f2; border: 1px solid #242424; border-radius: 13px; cursor: pointer; font-size: 0.78rem; font-weight: 650; } .editor-history-button span { color: #8e8e8e; } .editor-history-button:disabled { cursor: not-allowed; opacity: 0.38; } .editor-action-button, .editor-player-button { display: flex; align-items: center; justify-content: center; gap: 9px; width: 100%; padding: 11px 12px; background: #101010; color: #f2f2f2; border: 1px solid #242424; border-radius: 14px; cursor: pointer; font-size: 0.88rem; font-weight: 680; transition: background 160ms ease, border-color 160ms ease, color 160ms ease, transform 160ms ease; } .editor-action-button + .editor-action-button, .editor-player-button + .editor-action-button { margin-top: 8px; } .editor-action-button:hover, .editor-player-button:hover { background: #191919; border-color: #5c5c5c; color: #ffffff; transform: translateY(-1px); } .editor-action-button:disabled { cursor: not-allowed; opacity: 0.45; transform: none; } .editor-action-button-primary, .editor-player-button.active { background: #ffffff; color: #050505; border-color: #ffffff; } .editor-action-button-primary:hover, .editor-player-button.active:hover { background: #ffffff; color: #050505; } .editor-checkbox-row { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 10px; margin-top: 9px; padding: 10px 11px; background: #101010; border: 1px solid #242424; border-radius: 14px; color: #f2f2f2; cursor: pointer; } .editor-checkbox-row input { width: 16px; height: 16px; accent-color: #ffffff; } .editor-checkbox-row span { display: grid; gap: 2px; } .editor-checkbox-row strong { font-size: 0.82rem; line-height: 1.1; } .editor-checkbox-row small { color: #8f8f8f; font-size: 0.68rem; line-height: 1.2; } .editor-selected-info { display: grid; grid-template-columns: 17px 1fr auto; align-items: center; gap: 11px; background: #ffffff; border: 1px solid #ffffff; border-radius: 16px; padding: 12px; color: #050505; } .editor-scale-fields { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 2px; } .editor-scale-fields label, .editor-checkbox-row, .editor-add-node-row { display: flex; align-items: center; gap: 8px; } .editor-scale-fields label { flex-direction: column; align-items: stretch; } .editor-scale-fields input, .editor-add-node-row input { width: 100%; min-width: 0; color: #f4f4f4; background: #101010; border: 1px solid #2a2a2a; border-radius: 10px; padding: 8px 9px; font: inherit; } .editor-checkbox-row { color: #d5d5d5; font-size: 0.82rem; } .editor-add-node-row { align-items: stretch; } .editor-add-node-row .editor-action-button { white-space: nowrap; } .editor-selected-actions { display: inline-flex; gap: 6px; } .editor-selected-actions button { display: inline-flex; align-items: center; justify-content: center; width: 27px; height: 27px; padding: 0; color: #050505; background: rgba(0, 0, 0, 0.06); border: 0; border-radius: 9px; cursor: pointer; transition: background 160ms ease, transform 160ms ease; } .editor-selected-actions button:hover { background: rgba(0, 0, 0, 0.12); transform: translateY(-1px); } .editor-selected-actions button[aria-pressed="true"] { color: #ffffff; background: #050505; } .editor-selected-info strong, .editor-selected-info span { display: block; } .editor-selected-info strong { font-size: 0.92rem; line-height: 1.2; } .editor-selected-info span { color: #555555; font-size: 0.75rem; margin-top: 2px; } .editor-no-selection { display: flex; align-items: center; gap: 10px; background: #101010; border: 1px dashed #363636; border-radius: 16px; padding: 12px; color: #8f8f8f; font-size: 0.86rem; } .editor-shortcuts-list { display: grid; gap: 7px; margin: 0; } .editor-shortcuts-list div { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 7px 0; border-bottom: 1px solid rgba(255, 255, 255, 0.06); } .editor-shortcuts-list div:last-child { border-bottom: 0; } .editor-shortcuts-list dt, .editor-shortcuts-list dd { margin: 0; font-size: 0.76rem; } .editor-shortcuts-list dt { color: #ffffff; font-weight: 700; } .editor-shortcuts-list dd { color: #8d8d8d; text-align: right; } /* Editor JSON inspector */ .editor-json-section { display: flex; flex-direction: column; min-height: 240px; padding: 14px 12px 12px; border-top: 1px solid rgba(255, 255, 255, 0.09); } .editor-json-view { flex: 1; max-height: 320px; margin: 0; padding: 8px 0; overflow: auto; background: #050505; border: 1px solid #1f1f1f; border-radius: 16px; color: #d7d7d7; font-family: "SFMono-Regular", "Courier New", monospace; font-size: 0.72rem; line-height: 1.55; scrollbar-width: thin; scrollbar-color: #3a3a3a transparent; } .editor-json-view::-webkit-scrollbar { width: 6px; height: 6px; } .editor-json-view::-webkit-scrollbar-thumb { background: #3a3a3a; border-radius: 999px; } .editor-json-view code { display: grid; grid-template-columns: 34px max-content; gap: 10px; min-width: 100%; padding: 0 12px; background: transparent; color: inherit; font-family: inherit; white-space: pre; } .editor-json-view code span { color: #5f5f5f; text-align: right; user-select: none; } .editor-json-view code.is-selected { background: #111111; color: #f2f2f2; } .editor-json-view code.is-selected * { color: #f2f2f2; } .editor-json-view code.is-selected span { color: #8a8a8a; } .editor-json-hint { display: flex; align-items: center; gap: 7px; margin-top: 8px; color: #8d8d8d; font-size: 0.74rem; } /* Editor SRT panel */ .editor-srt-section { display: grid; gap: 10px; padding: 14px 12px 12px; border-top: 1px solid rgba(255, 255, 255, 0.09); } .editor-srt-controls { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; } .editor-srt-controls label { display: grid; gap: 5px; color: #8d8d8d; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; } .editor-srt-controls select { width: 100%; padding: 9px 10px; border: 1px solid #242424; border-radius: 12px; background: #101010; color: #f2f2f2; } .editor-srt-textarea { width: 100%; min-height: 260px; resize: vertical; box-sizing: border-box; padding: 12px; border: 1px solid #1f1f1f; border-radius: 16px; background: #050505; color: #d7d7d7; font-family: "SFMono-Regular", "Courier New", monospace; font-size: 0.72rem; line-height: 1.55; } .editor-srt-textarea:focus, .editor-srt-controls select:focus, .editor-srt-preview select:focus { border-color: #ffffff; outline: none; } .editor-srt-preview { display: grid; gap: 8px; padding: 10px; border: 1px solid #1f1f1f; border-radius: 16px; background: #070707; } .editor-srt-preview label { display: grid; gap: 5px; color: #8d8d8d; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; } .editor-srt-preview select { width: 100%; padding: 9px 10px; border: 1px solid #242424; border-radius: 12px; background: #101010; color: #f2f2f2; } .editor-srt-audio-card { display: grid; gap: 6px; color: #f2f2f2; } .editor-srt-audio-card span { color: #8d8d8d; font-size: 0.72rem; } .editor-srt-audio-card strong { font-size: 0.78rem; line-height: 1.3; word-break: break-word; } .editor-srt-audio-card audio { width: 100%; height: 34px; } .editor-srt-active-cue { display: grid; gap: 5px; padding: 8px 10px; border: 1px solid #242424; border-radius: 12px; background: #101010; } .editor-srt-active-cue span { color: #8d8d8d; font-size: 0.7rem; } .editor-srt-active-cue p { margin: 0; color: #d7d7d7; font-size: 0.74rem; line-height: 1.4; } .editor-srt-active-cue strong { margin-right: 4px; color: #ffffff; } .editor-srt-time-actions { display: grid; grid-template-columns: repeat(2, 1fr); gap: 6px; } .editor-srt-time-actions button { padding: 8px 10px; border: 1px solid rgba(125, 211, 252, 0.24); border-radius: 12px; background: rgba(125, 211, 252, 0.08); color: #bae6fd; cursor: pointer; font-size: 0.74rem; font-weight: 800; } .editor-srt-time-actions button:hover { border-color: #7dd3fc; background: rgba(125, 211, 252, 0.14); } .editor-srt-jump-button { width: 100%; padding: 8px 10px; border: 1px solid #2f2f2f; border-radius: 12px; background: #151515; color: #f2f2f2; cursor: pointer; font-size: 0.76rem; font-weight: 700; } .editor-srt-jump-button:hover { border-color: #ffffff; background: #202020; } .editor-srt-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; } .editor-srt-actions .editor-action-button + .editor-action-button { margin-top: 0; } .editor-srt-status { margin: 0; color: #8d8d8d; font-size: 0.72rem; line-height: 1.4; } .editor-dialogue-validation { display: grid; gap: 8px; padding: 10px; border: 1px solid #242424; border-radius: 14px; background: #101010; } .editor-dialogue-validation.is-valid { border-color: rgba(134, 239, 172, 0.32); } .editor-dialogue-validation.is-invalid { border-color: rgba(248, 113, 113, 0.38); } .editor-dialogue-validation__heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .editor-dialogue-validation__heading div { display: grid; gap: 2px; } .editor-dialogue-validation__heading strong { color: #f2f2f2; font-size: 0.76rem; font-weight: 800; } .editor-dialogue-validation__heading span { color: #8d8d8d; font-size: 0.68rem; line-height: 1.35; } .editor-dialogue-validation__heading button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-width: 92px; padding: 8px 9px; border: 1px solid #2f2f2f; border-radius: 12px; background: #151515; color: #f2f2f2; cursor: pointer; font-size: 0.72rem; font-weight: 800; } .editor-dialogue-validation__heading button:hover { border-color: #ffffff; background: #202020; } .editor-dialogue-validation__heading button:disabled { cursor: not-allowed; opacity: 0.45; } .editor-dialogue-validation__result { display: grid; gap: 6px; font-size: 0.72rem; line-height: 1.4; } .editor-dialogue-validation__result p { margin: 0; color: #d7d7d7; } .editor-dialogue-validation__errors, .editor-dialogue-validation__warnings { display: grid; gap: 4px; margin: 0; padding-left: 16px; } .editor-dialogue-validation__errors { color: #fca5a5; } .editor-dialogue-validation__warnings { color: #fde68a; } .editor-srt-diagnostic { display: grid; gap: 6px; padding: 9px 10px; border: 1px solid #242424; border-radius: 12px; background: #101010; font-size: 0.72rem; line-height: 1.4; } .editor-srt-diagnostic.is-valid { border-color: rgba(134, 239, 172, 0.32); color: #86efac; } .editor-srt-diagnostic.is-invalid { border-color: rgba(248, 113, 113, 0.38); color: #fca5a5; } .editor-srt-diagnostic strong { font-size: 0.74rem; } .editor-srt-diagnostic ul { display: grid; gap: 4px; margin: 0; padding-left: 16px; color: #fca5a5; } /* Editor dialogue manifest panel */ .editor-dialogue-manifest-section { display: grid; gap: 10px; padding: 14px 12px 12px; border-top: 1px solid rgba(255, 255, 255, 0.09); } .editor-dialogue-manifest-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; } .editor-dialogue-manifest-actions button, .editor-dialogue-manifest-srt-cue, .editor-dialogue-manifest-preview, .editor-dialogue-manifest-delete { display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 9px; border: 1px solid #2f2f2f; border-radius: 12px; background: #151515; color: #f2f2f2; cursor: pointer; font-size: 0.72rem; font-weight: 800; } .editor-dialogue-manifest-actions button:hover, .editor-dialogue-manifest-srt-cue:hover, .editor-dialogue-manifest-preview:hover, .editor-dialogue-manifest-delete:hover { border-color: #ffffff; background: #202020; } .editor-dialogue-manifest-actions button:disabled { cursor: not-allowed; opacity: 0.45; } .editor-dialogue-manifest-srt-cue:disabled, .editor-dialogue-manifest-preview:disabled { cursor: not-allowed; opacity: 0.45; } .editor-dialogue-manifest-select, .editor-dialogue-manifest-form label { display: grid; gap: 5px; color: #8d8d8d; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; } .editor-dialogue-manifest-select select, .editor-dialogue-manifest-form input, .editor-dialogue-manifest-form select { width: 100%; box-sizing: border-box; padding: 9px 10px; border: 1px solid #242424; border-radius: 12px; background: #101010; color: #f2f2f2; } .editor-dialogue-manifest-select select:focus, .editor-dialogue-manifest-form input:focus, .editor-dialogue-manifest-form select:focus { border-color: #ffffff; outline: none; } .editor-dialogue-manifest-form { display: grid; gap: 8px; padding: 10px; border: 1px solid #1f1f1f; border-radius: 16px; background: #070707; } .editor-dialogue-manifest-delete { border-color: rgba(248, 113, 113, 0.32); color: #fca5a5; } .editor-dialogue-manifest-preview { border-color: rgba(125, 211, 252, 0.24); color: #bae6fd; } .editor-dialogue-manifest-srt-cue { border-color: rgba(134, 239, 172, 0.24); color: #bbf7d0; } .editor-dialogue-manifest-status { margin: 0; color: #8d8d8d; font-size: 0.72rem; line-height: 1.4; } .editor-dialogue-manifest-diagnostic { display: grid; gap: 6px; padding: 9px 10px; border: 1px solid #242424; border-radius: 12px; background: #101010; font-size: 0.72rem; line-height: 1.4; } .editor-dialogue-manifest-diagnostic.is-valid { border-color: rgba(134, 239, 172, 0.32); color: #86efac; } .editor-dialogue-manifest-diagnostic.is-invalid { border-color: rgba(248, 113, 113, 0.38); color: #fca5a5; } .editor-dialogue-manifest-diagnostic ul { display: grid; gap: 4px; margin: 0; padding-left: 16px; } /* Editor cinematic manifest panel */ .editor-cinematic-manifest-section { display: grid; gap: 10px; padding: 14px 12px 12px; border-top: 1px solid rgba(255, 255, 255, 0.09); } .editor-cinematic-manifest-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; } .editor-cinematic-manifest-actions button, .editor-cinematic-manifest-preview, .editor-cinematic-manifest-delete, .editor-cinematic-keyframes-heading button, .editor-cinematic-keyframe-heading button, .editor-cinematic-dialogue-cues-heading button, .editor-cinematic-dialogue-cue-heading button { display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 9px; border: 1px solid #2f2f2f; border-radius: 12px; background: #151515; color: #f2f2f2; cursor: pointer; font-size: 0.72rem; font-weight: 800; } .editor-cinematic-manifest-actions button:hover, .editor-cinematic-manifest-preview:hover, .editor-cinematic-manifest-delete:hover, .editor-cinematic-keyframes-heading button:hover, .editor-cinematic-keyframe-heading button:hover, .editor-cinematic-dialogue-cues-heading button:hover, .editor-cinematic-dialogue-cue-heading button:hover { border-color: #ffffff; background: #202020; } .editor-cinematic-manifest-actions button:disabled, .editor-cinematic-manifest-preview:disabled, .editor-cinematic-keyframe-heading button:disabled, .editor-cinematic-dialogue-cue-heading button:disabled { cursor: not-allowed; opacity: 0.45; } .editor-cinematic-manifest-select, .editor-cinematic-manifest-form label, .editor-cinematic-vector-inputs label, .editor-cinematic-dialogue-cue label { display: grid; gap: 5px; color: #8d8d8d; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; } .editor-cinematic-manifest-select select, .editor-cinematic-manifest-form input, .editor-cinematic-manifest-form select, .editor-cinematic-vector-inputs input { width: 100%; box-sizing: border-box; padding: 9px 10px; border: 1px solid #242424; border-radius: 12px; background: #101010; color: #f2f2f2; } .editor-cinematic-manifest-select select:focus, .editor-cinematic-manifest-form input:focus, .editor-cinematic-manifest-form select:focus, .editor-cinematic-vector-inputs input:focus { border-color: #ffffff; outline: none; } .editor-cinematic-manifest-form, .editor-cinematic-keyframes, .editor-cinematic-keyframe, .editor-cinematic-dialogue-cues, .editor-cinematic-dialogue-cue { display: grid; gap: 8px; } .editor-cinematic-manifest-form { padding: 10px; border: 1px solid #1f1f1f; border-radius: 16px; background: #070707; } .editor-cinematic-keyframes, .editor-cinematic-dialogue-cues { padding: 10px; border: 1px solid #242424; border-radius: 14px; background: #101010; } .editor-cinematic-keyframes-heading, .editor-cinematic-keyframe-heading, .editor-cinematic-dialogue-cues-heading, .editor-cinematic-dialogue-cue-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .editor-cinematic-keyframes-heading strong, .editor-cinematic-keyframe-heading strong, .editor-cinematic-dialogue-cues-heading strong, .editor-cinematic-dialogue-cue-heading strong { color: #f2f2f2; font-size: 0.76rem; font-weight: 800; } .editor-cinematic-keyframe, .editor-cinematic-dialogue-cue { padding: 9px; border: 1px solid #1f1f1f; border-radius: 12px; background: #070707; } .editor-cinematic-vector-inputs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; } .editor-cinematic-vector-inputs span { grid-column: 1 / -1; color: #8d8d8d; font-size: 0.72rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; } .editor-cinematic-manifest-delete { border-color: rgba(248, 113, 113, 0.32); color: #fca5a5; } .editor-cinematic-manifest-preview { border-color: rgba(125, 211, 252, 0.24); color: #bae6fd; } .editor-cinematic-keyframe-heading button, .editor-cinematic-dialogue-cue-heading button { padding: 6px 8px; color: #fca5a5; } .editor-cinematic-dialogue-cues p { margin: 0; color: #8d8d8d; font-size: 0.72rem; line-height: 1.4; } .editor-cinematic-manifest-status { margin: 0; color: #8d8d8d; font-size: 0.72rem; line-height: 1.4; } .editor-cinematic-manifest-diagnostic { display: grid; gap: 6px; padding: 9px 10px; border: 1px solid #242424; border-radius: 12px; background: #101010; font-size: 0.72rem; line-height: 1.4; } .editor-cinematic-manifest-diagnostic.is-valid { border-color: rgba(134, 239, 172, 0.32); color: #86efac; } .editor-cinematic-manifest-diagnostic.is-invalid { border-color: rgba(248, 113, 113, 0.38); color: #fca5a5; } .editor-cinematic-manifest-diagnostic ul { display: grid; gap: 4px; margin: 0; padding-left: 16px; } /* Editor responsive layout */ @media (max-width: 768px) { .editor-error h2 { font-size: 1.5rem; } .editor-upload-section { padding: 1.5rem; } .editor-drop-zone { padding: 1.5rem 1rem; } .editor-camera-info { display: none; } .editor-controls-panel { top: auto; right: 10px; bottom: 10px; left: 10px; width: auto; max-height: 46vh; border-radius: 22px; } .editor-json-section { min-height: 180px; } }