:root { color-scheme: dark; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: #eef3f8; background: #0d1117; font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; } * { box-sizing: border-box; } body { margin: 0; min-width: 320px; min-height: 100svh; background: #0d1117; } button { font: inherit; } .app-shell { display: grid; grid-template-columns: minmax(300px, 380px) minmax(0, 1fr); height: 100svh; min-height: 100svh; overflow: hidden; } .sidebar { display: flex; flex-direction: column; gap: 22px; height: 100svh; min-height: 100svh; min-width: 0; padding: 28px; border-right: 1px solid #252d38; background: #111821; overflow: hidden; } .brand-block h1, .viewer-header h2, .section-heading h2 { margin: 0; letter-spacing: 0; } .brand-block h1 { margin-top: 4px; font-size: 30px; line-height: 1.05; } .subtle { margin: 10px 0 0; color: #9aa8b7; line-height: 1.6; } .eyebrow { margin: 0; color: #7dd3fc; font-size: 12px; font-weight: 700; letter-spacing: 0; text-transform: uppercase; } .section-heading span, .file-meta { color: #8b99aa; font-size: 12px; } .auth-actions { display: flex; gap: 10px; flex-wrap: wrap; } .primary-button, .ghost-button { min-height: 42px; border: 1px solid transparent; border-radius: 8px; padding: 0 14px; cursor: pointer; transition: transform 160ms ease, border-color 160ms ease, background 160ms ease; } .primary-button { color: #071015; background: #7dd3fc; font-weight: 700; } .ghost-button { color: #d7e1eb; background: transparent; border-color: #334155; } .primary-button:hover, .ghost-button:hover, .file-row:hover { transform: translateY(-1px); } .primary-button:disabled, .file-row:disabled { cursor: not-allowed; opacity: 0.55; transform: none; } .notice { display: grid; gap: 6px; padding: 12px; border: 1px solid #334155; border-radius: 8px; background: #151f2b; color: #d9e4ee; font-size: 13px; line-height: 1.45; } .notice.error, .error-banner { border-color: #7f1d1d; background: #2a1115; color: #fecaca; } .selector-grid { display: grid; grid-template-rows: minmax(140px, 0.8fr) minmax(180px, 1.2fr); flex: 1 1 auto; gap: 18px; min-height: 0; } .file-section, .animation-panel { display: flex; min-height: 0; flex-direction: column; gap: 12px; } .animation-panel { flex: 0 0 auto; border-top: 1px solid #252d38; padding-top: 16px; } .section-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; } .section-heading h2 { font-size: 15px; } .search-input { width: 100%; min-height: 38px; border: 1px solid #263140; border-radius: 8px; padding: 0 11px; color: #eef3f8; background: #151f2b; font: inherit; } .search-input:focus { border-color: #7dd3fc; outline: 0; } .search-input:disabled { opacity: 0.55; } .file-list { display: flex; flex-direction: column; gap: 8px; min-height: 0; overflow: auto; padding-right: 4px; } .file-row, .list-row { width: 100%; min-height: 62px; border: 1px solid #263140; border-radius: 8px; padding: 10px 12px; text-align: left; background: #151f2b; color: #eef3f8; } .file-row { display: grid; grid-template-rows: auto auto; gap: 6px; cursor: pointer; } .file-row.active { border-color: #7dd3fc; background: #172536; } .file-row.compact { min-height: 68px; padding-top: 12px; padding-bottom: 12px; } .file-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; font-weight: 700; line-height: 1.25; } .file-meta { display: block; line-height: 1.25; } .muted { display: grid; place-items: center; color: #8b99aa; } .viewer-shell { display: grid; grid-template-rows: auto minmax(0, 1fr); min-width: 0; height: 100svh; min-height: 100svh; background: #0d1117; overflow: hidden; } .viewer-header { display: flex; align-items: center; justify-content: space-between; gap: 18px; min-height: 86px; padding: 22px 28px; border-bottom: 1px solid #252d38; } .viewer-header h2 { max-width: 70vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 20px; } .viewer-status { flex: 0 0 auto; border: 1px solid #334155; border-radius: 999px; padding: 6px 10px; color: #b7c5d5; font-size: 12px; } .viewer-actions { display: flex; align-items: center; gap: 12px; flex: 0 0 auto; } .segmented-control { display: inline-grid; grid-template-columns: repeat(2, minmax(58px, auto)); overflow: hidden; border: 1px solid #334155; border-radius: 8px; background: #111821; } .segmented-control button { min-height: 34px; border: 0; border-right: 1px solid #334155; padding: 0 12px; color: #b7c5d5; background: transparent; cursor: pointer; } .segmented-control button:last-child { border-right: 0; } .segmented-control button.active { color: #071015; background: #7dd3fc; font-weight: 700; } .viewer-canvas { position: relative; width: 100%; height: 100%; min-height: 0; overflow: hidden; } .viewer-canvas canvas { position: absolute; inset: 0; display: block; width: 100%; height: 100%; } .six-view-labels { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(2, 1fr); pointer-events: none; z-index: 1; } .six-view-labels span { align-self: start; justify-self: start; margin: 12px; border: 1px solid rgb(125 211 252 / 42%); border-radius: 999px; padding: 4px 9px; background: rgb(13 17 23 / 72%); color: #dff6ff; font-size: 12px; font-weight: 700; } .morph-frame-label { position: absolute; top: 18px; right: 18px; z-index: 2; border: 1px solid rgb(125 211 252 / 42%); border-radius: 8px; padding: 8px 10px; background: rgb(13 17 23 / 78%); color: #dff6ff; font-size: 13px; font-weight: 700; line-height: 1.2; pointer-events: none; } .empty-state { position: absolute; inset: 0; display: grid; place-content: center; gap: 8px; padding: 24px; color: #9aa8b7; text-align: center; pointer-events: none; z-index: 1; } .empty-state strong { color: #eef3f8; font-size: 18px; } .error-banner { position: absolute; left: 20px; right: 20px; bottom: 20px; border: 1px solid; border-radius: 8px; padding: 12px; z-index: 2; } .loading-overlay { position: fixed; right: 24px; bottom: 24px; border: 1px solid #334155; border-radius: 8px; padding: 12px 14px; background: #151f2b; color: #eef3f8; box-shadow: 0 16px 44px rgb(0 0 0 / 32%); } @media (max-width: 820px) { .app-shell { grid-template-columns: 1fr; grid-template-rows: auto minmax(520px, 1fr); height: auto; overflow: visible; } .sidebar { height: auto; min-height: auto; max-height: 48svh; padding: 20px; border-right: 0; border-bottom: 1px solid #252d38; } .brand-block h1 { font-size: 25px; } .viewer-shell { height: 52svh; min-height: 520px; } .viewer-header { align-items: flex-start; flex-direction: column; min-height: 74px; padding: 16px 20px; } .viewer-header h2 { max-width: 92vw; font-size: 17px; } .viewer-actions { width: 100%; justify-content: space-between; } }