:root { color-scheme: only light; --bg: #071217; --panel: rgba(11, 27, 34, 0.84); --panel-strong: rgba(14, 32, 40, 0.94); --border: rgba(181, 215, 207, 0.22); --surface-border: rgba(181, 215, 207, 0.18); --surface-border-strong: rgba(181, 215, 207, 0.28); --surface-fill: rgba(18, 39, 47, 0.52); --surface-fill-strong: rgba(21, 48, 56, 0.64); --text: #ecf4ef; --muted: #9bb8b1; --accent: #f4a261; --accent-soft: rgba(244, 162, 97, 0.18); --secondary: #6dd3ce; --secondary-soft: rgba(109, 211, 206, 0.16); --danger: #ff8e72; --shadow: 0 24px 70px rgba(0, 0, 0, 0.35); --radius: 24px; } * { box-sizing: border-box; } html, body { margin: 0; min-height: 100%; } body { position: relative; overflow-x: hidden; background: radial-gradient(circle at top left, rgba(109, 211, 206, 0.18), transparent 34%), radial-gradient(circle at top right, rgba(244, 162, 97, 0.16), transparent 28%), linear-gradient(180deg, #071217 0%, #0d1f27 50%, #081118 100%); color: var(--text); font-family: "Avenir Next", "Segoe UI Variable", "Trebuchet MS", sans-serif; } body.sheet-open { overflow: hidden; } .page-aura, .page-grid { position: fixed; inset: 0; pointer-events: none; } .page-aura { background: radial-gradient(circle at 18% 12%, rgba(255, 255, 255, 0.07), transparent 18%), radial-gradient(circle at 82% 8%, rgba(255, 255, 255, 0.05), transparent 14%); opacity: 0.85; } .page-grid { background-image: linear-gradient(rgba(255, 255, 255, 0.03) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, 0.03) 1px, transparent 1px); background-size: 56px 56px; mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.55), transparent 85%); } .hero, .layout { position: relative; z-index: 1; } .hero { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 18px; align-items: center; padding: 18px 28px 12px; animation: rise-in 700ms ease; } .hero-copy { align-self: center; } .hero-copy h1 { margin: 0; font-family: "Iowan Old Style", "Palatino Linotype", "Book Antiqua", serif; font-size: 1.55rem; line-height: 1; letter-spacing: 0; white-space: nowrap; } .eyebrow { margin: 0; color: var(--secondary); font-size: 0.82rem; letter-spacing: 0.18em; text-transform: uppercase; } .lede { margin: 0; max-width: 60ch; color: var(--muted); font-size: 1.05rem; line-height: 1.65; } .hero-side { position: relative; display: flex; align-items: center; gap: 10px; justify-self: end; width: min(100%, 920px); } .hero-actions { display: flex; justify-content: flex-end; } .hero-status { min-width: 0; margin-right: 2px; overflow: hidden; text-align: right; text-overflow: ellipsis; white-space: nowrap; } .hero-utility-button { padding: 8px 13px; border-radius: 999px; backdrop-filter: blur(10px); } .layout { display: grid; grid-template-columns: minmax(300px, 0.92fr) minmax(0, 1.28fr); gap: 22px; width: 100%; max-width: 100vw; padding: 0 28px 32px; } .column { display: flex; flex-direction: column; gap: 22px; min-width: 0; } .wide-column { min-width: 0; } .card { position: relative; min-width: 0; max-width: 100%; overflow: hidden; border: 1px solid var(--surface-border-strong); border-radius: var(--radius); background: linear-gradient(145deg, rgba(16, 36, 44, 0.82), rgba(8, 20, 26, 0.82)), var(--panel); backdrop-filter: blur(18px); box-shadow: var(--shadow), inset 0 1px 0 rgba(255, 255, 255, 0.055), inset 0 0 0 1px rgba(109, 211, 206, 0.035); padding: 22px; animation: rise-in 700ms ease; } .card::before { content: ""; position: absolute; inset: 0 0 auto; height: 1px; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.34), transparent); } .accent-card { background: linear-gradient(135deg, rgba(109, 211, 206, 0.08), transparent 50%), var(--panel-strong); } .output-card { background: linear-gradient(135deg, rgba(244, 162, 97, 0.08), transparent 55%), var(--panel-strong); } .card-head { display: flex; gap: 12px; align-items: center; justify-content: space-between; margin-bottom: 14px; } .card-head h2 { margin: 0; font-size: 1.18rem; } .control-workspace { padding: 18px; background: linear-gradient(145deg, rgba(16, 37, 45, 0.9), rgba(8, 21, 27, 0.88)), var(--panel); } .control-head { flex-direction: column; align-items: flex-start; gap: 10px; margin-bottom: 18px; } .control-head h2 { white-space: nowrap; } .status-cluster { display: flex; flex-wrap: nowrap; justify-content: flex-start; gap: 6px; width: 100%; max-width: 100%; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; } .status-cluster .status-pill { background: rgba(181, 215, 207, 0.035); border-color: rgba(181, 215, 207, 0.08); padding: 6px 9px; font-size: 0.82rem; white-space: nowrap; } .status-cluster::-webkit-scrollbar { display: none; } .account-trigger { position: relative; display: inline-flex; align-items: center; gap: 8px; justify-self: end; width: auto; min-width: 0; max-width: 260px; padding: 8px 12px 8px 9px; border-radius: 999px; border: 1px solid rgba(255, 255, 255, 0.08); background: rgba(255, 255, 255, 0.028); color: var(--text); box-shadow: none; } .account-trigger:hover:not(:disabled) { border-color: rgba(244, 162, 97, 0.28); } .account-trigger.is-open { border-color: rgba(244, 162, 97, 0.32); background: linear-gradient( 135deg, rgba(244, 162, 97, 0.12), rgba(109, 211, 206, 0.08) ); } .account-trigger::after { content: ""; width: 8px; height: 8px; margin-left: auto; border-right: 2px solid rgba(255, 255, 255, 0.55); border-bottom: 2px solid rgba(255, 255, 255, 0.55); transform: rotate(45deg); transition: transform 160ms ease, border-color 160ms ease; } .account-trigger.is-open::after { transform: rotate(-135deg); border-color: rgba(244, 162, 97, 0.8); } .account-avatar { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; border: 1px solid rgba(109, 211, 206, 0.24); background: rgba(109, 211, 206, 0.12); color: var(--secondary); font-size: 0.92rem; font-weight: 700; flex-shrink: 0; } .account-trigger[data-auth-state="signed-in"] .account-avatar { border-color: rgba(244, 162, 97, 0.24); background: rgba(244, 162, 97, 0.14); color: var(--accent); } .account-trigger-copy { display: grid; gap: 2px; text-align: left; } .account-trigger-label { font-size: 0.86rem; font-weight: 700; line-height: 1.15; } .account-trigger-meta { color: var(--muted); font-size: 0.74rem; line-height: 1.15; } .account-panel { margin-bottom: 18px; padding: 18px; border-radius: 22px; background: linear-gradient(135deg, rgba(109, 211, 206, 0.06), rgba(255, 255, 255, 0.02)), rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.07); } .account-panel[hidden] { display: none; } .account-panel .info-grid { margin-bottom: 18px; } .account-panel .button-row:last-child, .account-panel .message-box:last-child { margin-bottom: 0; } .hero-account-panel { position: absolute; top: calc(100% + 10px); right: 0; z-index: 10; width: min(420px, calc(100vw - 56px)); margin-bottom: 0; box-shadow: var(--shadow); backdrop-filter: blur(18px); } .sheet-overlay { position: fixed; inset: 0; z-index: 20; background: rgba(4, 11, 15, 0.62); backdrop-filter: blur(6px); } .sheet-overlay[hidden] { display: none; } .readme-panel { position: fixed; top: 24px; right: 28px; z-index: 21; width: min(720px, calc(100vw - 32px)); max-height: calc(100vh - 48px); overflow: auto; padding: 22px; border-radius: 28px; border: 1px solid rgba(255, 255, 255, 0.1); background: linear-gradient(140deg, rgba(12, 28, 34, 0.98), rgba(7, 18, 23, 0.96)), var(--panel); box-shadow: var(--shadow); backdrop-filter: blur(18px); } .readme-panel[hidden] { display: none; } .graph-panel { position: fixed; top: 84px; left: 24px; z-index: 30; display: grid; grid-template-rows: auto auto auto minmax(0, 1fr); width: min(780px, calc(100vw - 32px)); height: min(640px, calc(100vh - 110px)); min-width: 380px; min-height: 310px; max-width: calc(100vw - 16px); max-height: calc(100vh - 16px); overflow: hidden; resize: both; padding: 14px; border-radius: 18px; border: 2px solid rgba(244, 162, 97, 0.72); background: linear-gradient(140deg, rgba(39, 54, 61, 0.98), rgba(20, 29, 36, 0.98)), var(--panel); box-shadow: 0 22px 70px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.08), 0 0 0 6px rgba(244, 162, 97, 0.08); backdrop-filter: blur(18px); } .graph-panel::after { content: ""; position: absolute; right: 8px; bottom: 8px; width: 24px; height: 24px; pointer-events: none; background: linear-gradient(135deg, transparent 0 38%, rgba(244, 162, 97, 0.88) 38% 48%, transparent 48% 100%), linear-gradient(135deg, transparent 0 56%, rgba(244, 162, 97, 0.68) 56% 66%, transparent 66% 100%), linear-gradient(135deg, transparent 0 74%, rgba(244, 162, 97, 0.48) 74% 84%, transparent 84% 100%); opacity: 1; } .graph-panel[hidden] { display: none; } .graph-panel.is-dragging { user-select: none; } .graph-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin: -14px -14px 10px; padding: 12px 14px; cursor: move; touch-action: none; border-bottom: 1px solid rgba(244, 162, 97, 0.38); background: linear-gradient(90deg, rgba(244, 162, 97, 0.25), rgba(109, 211, 206, 0.13)), rgba(255, 255, 255, 0.045); } .graph-head button { cursor: pointer; } .graph-head h2 { margin: 4px 0 0; font-size: 1.12rem; color: #fff8ee; } .graph-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; margin-bottom: 8px; padding: 3px; border-radius: 10px; border: 1px solid rgba(255, 255, 255, 0.07); background: rgba(255, 255, 255, 0.035); } .graph-tab { min-height: 0; padding: 5px 8px; border-radius: 7px; background: transparent; color: var(--muted); font-size: 0.78rem; line-height: 1.1; box-shadow: none; } .graph-tab.is-active { background: rgba(109, 211, 206, 0.14); color: var(--text); } .graph-controls { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 8px; } .graph-controls label { display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: 0.72rem; font-weight: 800; text-transform: uppercase; } .graph-controls select { min-height: 28px; width: auto; padding: 4px 24px 4px 9px; border-radius: 8px; border-color: rgba(244, 162, 97, 0.32); background-color: rgba(7, 18, 23, 0.78); color: var(--text); font-size: 0.78rem; } .graph-image-frame { min-height: 0; height: 100%; overflow: auto; border-radius: 14px; border: 1px solid rgba(244, 162, 97, 0.3); background: #071217; } .graph-image-frame img { display: block; width: 100%; min-width: 640px; height: auto; } .readme-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 20px; } .readme-head h2 { margin: 4px 0 0; font-size: 1.5rem; } .readme-kicker { margin: 0; color: var(--secondary); font-size: 0.78rem; letter-spacing: 0.16em; text-transform: uppercase; } .sheet-close { flex-shrink: 0; } .readme-sections { display: grid; gap: 14px; } .readme-block { padding: 18px; border-radius: 20px; border: 1px solid rgba(255, 255, 255, 0.06); background: rgba(255, 255, 255, 0.035); } .readme-block h3 { margin: 0 0 10px; font-size: 1rem; } .readme-block p { margin: 0; color: var(--muted); line-height: 1.6; } .readme-list { margin: 0; padding-left: 1.2rem; color: var(--muted); line-height: 1.6; } .readme-list li + li { margin-top: 8px; } .readme-link-list { margin-top: 12px; } .readme-link-list a { color: var(--secondary); text-decoration: none; border-bottom: 1px solid rgba(109, 211, 206, 0.26); } .readme-link-list a:hover { color: #a5efe9; border-bottom-color: rgba(165, 239, 233, 0.5); } .small-copy, .muted { color: var(--muted); } .muted { margin: 0 0 18px; line-height: 1.55; } .button-row { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 18px; } .compact-button { padding: 8px 11px; font-size: 0.82rem; } button, select, input { font: inherit; } button { cursor: pointer; border: 0; border-radius: 999px; background: linear-gradient(135deg, #f4a261, #ef7f58); color: #081118; font-weight: 700; padding: 11px 16px; transition: transform 160ms ease, box-shadow 160ms ease, opacity 160ms ease; box-shadow: 0 12px 30px rgba(239, 127, 88, 0.22); } button:hover:not(:disabled) { transform: translateY(-1px); } button:disabled { cursor: not-allowed; opacity: 0.55; } button.ghost { background: linear-gradient(145deg, rgba(255, 255, 255, 0.07), rgba(109, 211, 206, 0.045)); color: var(--text); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), 0 8px 18px rgba(0, 0, 0, 0.14); border: 1px solid rgba(181, 215, 207, 0.26); } button.ghost:hover:not(:disabled) { border-color: rgba(244, 162, 97, 0.48); background: linear-gradient(145deg, rgba(244, 162, 97, 0.14), rgba(109, 211, 206, 0.07)); } button.ghost.is-pending { border-color: rgba(244, 162, 97, 0.56); background: linear-gradient(135deg, #f4a261, #ef7f58); color: #081118; box-shadow: 0 12px 30px rgba(239, 127, 88, 0.24); } .workspace-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; padding: 8px; margin-bottom: 18px; border-radius: 22px; background: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.06); } .workspace-tab { border: 1px solid transparent; border-radius: 16px; background: transparent; color: var(--muted); box-shadow: none; padding: 10px 12px; } .workspace-tab.is-active { background: linear-gradient(135deg, rgba(244, 162, 97, 0.24), rgba(109, 211, 206, 0.16)); border-color: rgba(255, 255, 255, 0.08); color: var(--text); } .performance-strip { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; padding: 10px; border-radius: 18px; border: 1px solid rgba(255, 255, 255, 0.06); background: rgba(255, 255, 255, 0.035); } .readiness-steps { display: flex; flex-wrap: wrap; gap: 8px; } .readiness-step { display: inline-flex; align-items: center; gap: 7px; padding: 8px 10px; border-radius: 999px; color: var(--muted); font-size: 0.82rem; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.06); } .readiness-step::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: rgba(255, 255, 255, 0.22); } .readiness-step.is-ready { color: var(--text); border-color: rgba(109, 211, 206, 0.22); background: rgba(109, 211, 206, 0.09); } .readiness-step.is-ready::before { background: var(--secondary); } .global-panic-button { flex-shrink: 0; padding: 9px 13px; } .workspace-panel[hidden] { display: none; } .panel-stack { display: grid; gap: 14px; } .panel-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; } .panel-section { min-width: 0; padding: 18px; border-radius: 20px; background: linear-gradient(145deg, rgba(255, 255, 255, 0.035), rgba(109, 211, 206, 0.018)), var(--surface-fill); border: 1px solid var(--surface-border); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.045), 0 10px 26px rgba(0, 0, 0, 0.12); } .accent-section { background: linear-gradient(135deg, rgba(109, 211, 206, 0.12), rgba(255, 255, 255, 0.03)), var(--surface-fill-strong); border-color: rgba(109, 211, 206, 0.24); } .section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 16px; } .section-head h3 { margin: 0; font-size: 1.02rem; } .section-copy { margin: 6px 0 0; color: var(--muted); font-size: 0.92rem; line-height: 1.55; } .view-tabs { display: inline-flex; gap: 8px; padding: 6px; margin-bottom: 18px; border-radius: 999px; background: rgba(18, 39, 47, 0.58); border: 1px solid var(--surface-border); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04); } .view-tab { border: 1px solid transparent; border-radius: 999px; background: transparent; color: var(--muted); box-shadow: none; padding: 9px 14px; } .view-tab.is-active { background: linear-gradient(135deg, rgba(244, 162, 97, 0.24), rgba(109, 211, 206, 0.16)); border-color: rgba(255, 255, 255, 0.08); color: var(--text); } .view-panel[hidden] { display: none; } .status-pill { border-radius: 999px; padding: 6px 10px; border: 1px solid rgba(181, 215, 207, 0.09); background: rgba(181, 215, 207, 0.035); color: var(--muted); font-size: 0.82rem; font-weight: 500; } .field { display: grid; gap: 8px; margin-bottom: 14px; } .field label, .toggle { font-size: 0.95rem; } select { width: 100%; border: 1px solid var(--border); border-radius: 16px; background: rgba(255, 255, 255, 0.05); color: var(--text); padding: 12px 14px; } input[type="text"], input[type="password"], input[type="number"] { width: 100%; border: 1px solid var(--border); border-radius: 16px; background: rgba(255, 255, 255, 0.05); color: var(--text); padding: 12px 14px; } input[type="range"] { width: 100%; min-width: 0; accent-color: var(--accent); } input[type="number"]:disabled { opacity: 0.55; } input[type="text"]:disabled, input[type="password"]:disabled { opacity: 0.55; } .toggle { display: inline-flex; align-items: center; gap: 10px; color: var(--muted); } .toggle input { accent-color: var(--accent); } .compact-toggle { font-size: 0.84rem; white-space: nowrap; } .phone-output-label { display: none; } .phone-collapsible > summary { display: none; } .phone-message-box { display: none; } .virtual-keyboard-panel { display: grid; gap: 10px; margin: 6px 0 16px; padding: 12px; border: 1px solid rgba(255, 255, 255, 0.07); border-radius: 16px; background: linear-gradient(135deg, rgba(109, 211, 206, 0.07), rgba(244, 162, 97, 0.04)), rgba(255, 255, 255, 0.026); overflow: hidden; } .virtual-keyboard-panel[hidden] { display: none; } .virtual-keyboard-head, .virtual-keyboard-controls, .virtual-keyboard-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; } .virtual-keyboard-head strong { display: block; color: var(--text); font-size: 0.94rem; } .virtual-keyboard-head span { display: block; color: var(--muted); font-size: 0.78rem; margin-top: 2px; } .virtual-octave-controls { display: flex; gap: 8px; } .velocity-control { display: grid; grid-template-columns: auto minmax(120px, 1fr) 3ch; align-items: center; gap: 8px; flex: 1 1 210px; color: var(--muted); font-size: 0.84rem; } .velocity-control output { color: var(--text); text-align: right; font-variant-numeric: tabular-nums; } .virtual-keyboard-viewport { width: 100%; height: 108px; overflow-x: hidden; overflow-y: hidden; overscroll-behavior-x: contain; } .virtual-keyboard { --white-key-count: 14; position: relative; width: 100%; height: 108px; min-width: 0; contain: layout paint; touch-action: none; user-select: none; -webkit-user-select: none; -webkit-tap-highlight-color: transparent; } .white-key-row { display: grid; grid-template-columns: repeat(var(--white-key-count), minmax(0, 1fr)); height: 100%; gap: 2px; } .virtual-key { display: block; position: relative; min-width: 0; border-radius: 7px; padding: 0; border: 0; box-shadow: none; touch-action: none; appearance: none; -webkit-appearance: none; overflow: hidden; cursor: pointer; transform: translateZ(0); transition: background 90ms ease, border-color 90ms ease, box-shadow 90ms ease; outline: none; } .virtual-key:focus, .virtual-key:focus-visible { outline: none; } .white-key:hover { transform: translateZ(0); } .virtual-key span { position: absolute; left: 50%; bottom: 7px; transform: translateX(-50%); font-size: 0.62rem; font-weight: 800; letter-spacing: 0; pointer-events: none; } .white-key { height: 100%; border: 1px solid #9ebbb9; background-color: #f4fbf8; background-image: linear-gradient(180deg, #ffffff 0%, #eef8f5 54%, #dbeae7 100%); color: #071217; color-scheme: only light; forced-color-adjust: none; box-shadow: inset 0 -10px 18px rgba(85, 123, 124, 0.12), inset 0 1px 0 #ffffff; } .white-key.is-active { background: linear-gradient(180deg, #f4a261, #6dd3ce); border-color: rgba(255, 245, 212, 0.8); box-shadow: inset 0 4px 10px rgba(8, 17, 24, 0.22); } .black-key-row { position: absolute; inset: 0; pointer-events: none; } .black-key { position: absolute; left: var(--key-left); top: 0; width: calc((100% / var(--white-key-count)) * 0.62); height: 62%; transform: translateX(-50%); z-index: 2; pointer-events: auto; border: 1px solid rgba(255, 255, 255, 0.12); background: linear-gradient(180deg, #26333d, #081118); color: #f7fbff; color-scheme: only light; forced-color-adjust: none; } .black-key:hover { transform: translateX(-50%) translateZ(0); } .black-key.is-active { background: linear-gradient(180deg, #6dd3ce, #ef7f58); border-color: rgba(255, 245, 212, 0.74); box-shadow: inset 0 3px 8px rgba(8, 17, 24, 0.34); } .black-key span { display: none; } .virtual-key.is-latched::after { content: ""; position: absolute; top: 6px; left: 50%; width: 6px; height: 6px; border-radius: 999px; background: #fff5d4; box-shadow: 0 0 9px rgba(255, 245, 212, 0.88); transform: translateX(-50%); } .virtual-keyboard-actions { justify-content: flex-end; } .settings-compact { margin-bottom: 18px; } .settings-label-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; } .settings-summary { display: flex; flex-wrap: wrap; gap: 10px; } .settings-summary.is-pending { padding: 10px; border-radius: 18px; border: 1px solid rgba(244, 162, 97, 0.24); background: rgba(244, 162, 97, 0.08); } .settings-chip { display: inline-flex; align-items: center; gap: 8px; padding: 5px 0; border-radius: 0; border: 0; background: transparent; color: var(--muted); font-size: 0.86rem; font-weight: 600; } .settings-chip.is-active { color: var(--text); } .settings-chip.is-warning, .settings-chip.is-pending { border-color: rgba(244, 162, 97, 0.36); background: rgba(244, 162, 97, 0.16); color: #fff5d4; } .settings-panel { margin-bottom: 18px; border: 1px solid rgba(255, 255, 255, 0.06); border-radius: 20px; background: rgba(255, 255, 255, 0.03); overflow: hidden; } .settings-panel summary { cursor: pointer; list-style: none; padding: 16px 18px; font-weight: 700; } .settings-panel summary::-webkit-details-marker { display: none; } .settings-panel[open] summary { border-bottom: 1px solid rgba(255, 255, 255, 0.06); } .settings-panel > :not(summary) { margin-left: 18px; margin-right: 18px; } .settings-copy { margin-top: 14px; } .settings-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } .settings-toggle { min-height: 54px; padding: 14px 16px; border-radius: 18px; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.05); } .auth-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } .auth-message-box { min-height: 0; margin-bottom: 18px; background: linear-gradient(135deg, rgba(244, 162, 97, 0.08), rgba(255, 255, 255, 0.02)); } .head-action { padding: 9px 14px; } .field-hint { margin: 8px 0 0; color: var(--muted); font-size: 0.84rem; line-height: 1.45; } .phrase-gap-meter { display: grid; gap: 8px; margin-top: 10px; padding: 12px 14px; border-radius: 16px; border: 1px solid rgba(109, 211, 206, 0.18); background: rgba(109, 211, 206, 0.08); } .phrase-gap-meter[hidden] { display: none; } .phrase-gap-meter-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--muted); font-size: 0.84rem; } .phrase-gap-meter-head strong { color: var(--secondary); font-variant-numeric: tabular-nums; } .phrase-gap-track { height: 7px; overflow: hidden; border-radius: 999px; background: rgba(255, 255, 255, 0.08); } .phrase-gap-bar { width: 0%; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--secondary), var(--accent)); transition: width 90ms linear; } .phrase-gap-meter.is-server-wait { border-color: rgba(244, 162, 97, 0.24); background: rgba(244, 162, 97, 0.09); } .phrase-gap-meter.is-server-wait .phrase-gap-meter-head strong { color: var(--accent); } .phrase-gap-meter.is-server-wait .phrase-gap-bar { width: 38%; animation: server-wait-sweep 1100ms ease-in-out infinite; } .faust-control-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-bottom: 12px; } .faust-field { margin-bottom: 0; padding: 14px 16px; border-radius: 18px; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.05); } .faust-label-row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; } .faust-label-row output { color: var(--secondary); font-size: 0.82rem; font-variant-numeric: tabular-nums; } .faust-section-head { margin-top: 18px; } .faust-editor-actions { margin-bottom: 0; flex-wrap: wrap; } .faust-editor-field { margin-bottom: 16px; } .faust-code-input { width: 100%; min-height: 260px; padding: 16px; border-radius: 18px; border: 1px solid rgba(255, 255, 255, 0.08); background: rgba(7, 14, 20, 0.72); color: var(--text); font: 0.88rem/1.6 "SFMono-Regular", "Fira Code", "IBM Plex Mono", monospace; resize: vertical; } .faust-code-input:focus { outline: 1px solid rgba(109, 211, 206, 0.4); border-color: rgba(109, 211, 206, 0.42); } .faust-code-input::selection { background: rgba(244, 162, 97, 0.28); } .info-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 0; } .info-grid div { padding: 14px; border-radius: 18px; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.05); } .info-grid dt { color: var(--muted); font-size: 0.82rem; margin-bottom: 6px; } .info-grid dd { margin: 0; word-break: break-word; font-weight: 600; } .message-box { min-height: 64px; border-radius: 18px; padding: 14px; background: linear-gradient(135deg, rgba(109, 211, 206, 0.08), rgba(255, 255, 255, 0.02)); border: 1px solid var(--border); color: var(--muted); line-height: 1.55; } .constraint-status { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; } .constraint-status[hidden] { display: none; } .constraint-pill { display: inline-flex; align-items: center; min-height: 30px; padding: 4px 0; border-radius: 0; border: 0; background: transparent; color: var(--text); font-size: 0.78rem; line-height: 1.25; font-weight: 700; } .constraint-pill.is-relaxed { border-color: rgba(244, 162, 97, 0.24); background: rgba(244, 162, 97, 0.1); } .constraint-pill.is-pending { border-color: rgba(244, 162, 97, 0.4); background: rgba(244, 162, 97, 0.16); color: #fff5d4; } .constraint-pill.is-off { border-color: transparent; background: transparent; color: var(--muted); } .session-save-note { margin: 0 0 16px; padding: 12px 14px; border-radius: 16px; border: 1px solid rgba(244, 162, 97, 0.18); background: rgba(244, 162, 97, 0.08); color: var(--muted); font-size: 0.88rem; line-height: 1.45; } .session-midi-save-result { margin: -6px 0 16px; padding: 10px 12px; border-radius: 14px; border: 1px solid rgba(109, 211, 206, 0.22); background: rgba(109, 211, 206, 0.08); color: var(--text); font-size: 0.84rem; line-height: 1.45; overflow-wrap: anywhere; } .session-midi-save-result.is-error { border-color: rgba(239, 127, 88, 0.34); background: rgba(239, 127, 88, 0.1); color: #ffd8ca; } .timeline-card { padding-bottom: 18px; } .phrase-timeline { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; } .timeline-segment { display: grid; gap: 6px; min-height: 72px; padding: 13px 14px; border-radius: 16px; border: 1px solid var(--surface-border); background: linear-gradient(145deg, rgba(255, 255, 255, 0.035), rgba(109, 211, 206, 0.018)), rgba(18, 39, 47, 0.52); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04); } .timeline-segment span { color: var(--muted); font-size: 0.8rem; } .timeline-segment strong { font-size: 0.94rem; } .timeline-segment.is-ready { border-color: rgba(109, 211, 206, 0.2); background: rgba(109, 211, 206, 0.08); } .timeline-segment.is-playing { border-color: rgba(244, 162, 97, 0.28); background: rgba(244, 162, 97, 0.11); } .timeline-segment.is-queued { border-color: rgba(255, 245, 212, 0.22); background: rgba(255, 245, 212, 0.08); } .generation-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-bottom: 18px; } .generation-field { margin-bottom: 0; padding: 14px 16px; border-radius: 18px; background: rgba(255, 255, 255, 0.04); border: 1px solid rgba(255, 255, 255, 0.05); } .generation-actions { margin-bottom: 0; } .infinite-transport { display: grid; gap: 12px; } .transport-copy { display: grid; gap: 4px; min-height: 46px; padding: 12px 14px; border-radius: 16px; border: 1px solid rgba(109, 211, 206, 0.16); background: rgba(109, 211, 206, 0.07); } .transport-copy strong { font-size: 0.96rem; } .transport-copy span { color: var(--muted); font-size: 0.84rem; line-height: 1.35; } .transport-actions, .sound-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 0; } .route-picker { display: grid; gap: 6px; padding: 10px 12px 12px; margin-bottom: 12px; border-radius: 18px; border: 1px solid rgba(109, 211, 206, 0.18); background: rgba(255, 255, 255, 0.045); } .route-picker-label { color: var(--muted); font-size: 0.74rem; font-weight: 700; letter-spacing: 0; text-transform: uppercase; } .route-picker select { min-height: 44px; padding: 6px 4px; border: 0; border-radius: 0; background: transparent; box-shadow: none; font-weight: 700; } .playback-status-row { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; } .playback-status-chip { display: inline-grid; gap: 2px; min-width: 150px; padding: 8px 11px; border-radius: 14px; border: 1px solid rgba(255, 255, 255, 0.055); background: rgba(255, 255, 255, 0.035); } .playback-status-chip[hidden] { display: none; } .playback-status-chip span { color: var(--muted); font-size: 0.72rem; } .playback-status-chip strong { color: var(--text); font-size: 0.88rem; } .compact-hint { margin-top: 10px; } .transport-button { min-width: 84px; } .danger-button { color: var(--danger); border-color: rgba(255, 142, 114, 0.28); background: rgba(255, 142, 114, 0.12); } .danger-button:hover:not(:disabled) { border-color: rgba(255, 142, 114, 0.44); } .roll-card { padding-bottom: 16px; } .roll-viewport { position: relative; } .piano-roll { width: 100%; height: 244px; display: block; cursor: pointer; border-radius: 18px; background: linear-gradient(180deg, rgba(255, 255, 255, 0.04), transparent), rgba(255, 255, 255, 0.02); border: 1px solid var(--surface-border-strong); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04), 0 10px 24px rgba(0, 0, 0, 0.12); } .piano-roll:hover { border-color: rgba(109, 211, 206, 0.24); } .piano-roll:focus-visible { outline: 2px solid rgba(109, 211, 206, 0.68); outline-offset: 4px; } .piano-roll.is-roll-playing { border-color: rgba(255, 245, 212, 0.42); box-shadow: 0 0 0 1px rgba(255, 245, 212, 0.16), 0 0 22px rgba(255, 245, 212, 0.1); } .roll-playhead { position: absolute; top: 10px; bottom: 10px; left: 0; width: 2px; border-radius: 999px; background: rgba(255, 245, 212, 0.95); box-shadow: 0 0 0 1px rgba(255, 245, 212, 0.24), 0 0 16px rgba(255, 245, 212, 0.42); pointer-events: none; transform: translateX(0); transition: transform 30ms linear; } .roll-playhead::before { content: ""; position: absolute; top: -10px; left: 50%; width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 0; border-bottom: 8px solid rgba(255, 245, 212, 0.95); transform: translateX(-50%); } .roll-playhead[hidden] { display: none; } .piano-roll.is-previewing { border-color: rgba(244, 162, 97, 0.55); box-shadow: 0 0 0 1px rgba(244, 162, 97, 0.22), 0 0 0 12px rgba(244, 162, 97, 0.08); animation: preview-pulse 900ms ease; } .history-list { display: grid; gap: 10px; } .memory-hint { margin: 12px 0 14px; line-height: 1.5; } .memory-ribbon { display: grid; grid-template-columns: repeat(auto-fill, minmax(16px, 1fr)); gap: 5px; margin-bottom: 12px; } .memory-ribbon:empty { display: none; } .memory-ribbon-cell { min-height: 24px; padding: 0; border-radius: 7px; border: 1px solid rgba(255, 255, 255, 0.07); background: rgba(255, 255, 255, 0.04); box-shadow: none; } .memory-ribbon-cell.seed { background: rgba(109, 211, 206, 0.14); } .memory-ribbon-cell.live { background: rgba(244, 162, 97, 0.16); } .memory-ribbon-cell.is-selected { border-color: rgba(244, 162, 97, 0.4); box-shadow: 0 0 0 1px rgba(244, 162, 97, 0.2); } .memory-item .history-kind { min-width: 0; width: fit-content; max-width: 100%; white-space: nowrap; } .memory-list { grid-template-columns: repeat(auto-fill, minmax(132px, 1fr)); gap: 8px; } .history-item.memory-item { grid-template-columns: minmax(0, 1fr); align-items: start; gap: 8px; overflow: hidden; padding: 10px; border-radius: 14px; } .memory-preview-button { display: grid; grid-template-columns: minmax(0, 1fr); gap: 7px; align-items: stretch; min-width: 0; padding: 0; border: 0; border-radius: 0; background: transparent; color: inherit; box-shadow: none; text-align: left; } .memory-preview-button:hover:not(:disabled) { transform: none; } .memory-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; min-width: 0; } .memory-primary { min-width: 0; color: var(--text); font-size: 0.84rem; line-height: 1.25; text-align: right; white-space: nowrap; } .memory-detail { color: var(--muted); font-size: 0.74rem; line-height: 1.35; } .memory-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; min-width: 0; } .memory-actions.has-delete { grid-template-columns: repeat(3, minmax(0, 1fr)); } .memory-thumbnail { position: relative; display: block; width: 100%; height: 34px; overflow: hidden; border-radius: 10px; border: 1px solid rgba(255, 255, 255, 0.06); background: linear-gradient(rgba(255, 255, 255, 0.035) 1px, transparent 1px), rgba(255, 255, 255, 0.025); background-size: 100% 14px; } .memory-thumbnail span { position: absolute; height: 5px; border-radius: 999px; background: var(--secondary); box-shadow: 0 0 10px rgba(109, 211, 206, 0.28); } .memory-play-button, .memory-seed-button, .memory-delete-button { width: 100%; min-height: 30px; margin-left: 0; padding: 6px 8px; font-size: 0.75rem; justify-content: center; white-space: nowrap; } .memory-item.is-playing { border-color: rgba(255, 245, 212, 0.42); } .memory-item.is-playing .memory-thumbnail { border-color: rgba(255, 245, 212, 0.28); box-shadow: 0 0 18px rgba(255, 245, 212, 0.08); } .history-item { display: grid; grid-template-columns: auto 1fr auto; gap: 14px; align-items: center; width: 100%; text-align: left; box-shadow: none; border-radius: 18px; border: 1px solid rgba(255, 255, 255, 0.06); padding: 14px; background: rgba(255, 255, 255, 0.03); color: var(--text); } .history-item:hover { border-color: rgba(244, 162, 97, 0.28); } .history-item.is-selected { border-color: rgba(244, 162, 97, 0.42); background: linear-gradient(135deg, rgba(244, 162, 97, 0.14), rgba(255, 255, 255, 0.03)); } .history-item.is-previewed:not(.is-selected) { border-color: rgba(109, 211, 206, 0.34); background: linear-gradient(135deg, rgba(109, 211, 206, 0.1), rgba(255, 255, 255, 0.03)); } .session-item { grid-template-columns: minmax(0, 1fr) auto; align-items: stretch; } .session-preview-button { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 14px; align-items: center; min-width: 0; padding: 0; border: 0; border-radius: 0; background: transparent; color: inherit; box-shadow: none; text-align: left; } .session-preview-button:hover:not(:disabled) { transform: none; } .session-open-button { min-width: 82px; align-self: stretch; justify-content: center; white-space: nowrap; } .session-preview-panel { display: grid; gap: 14px; padding: 14px; border-radius: 18px; border: 1px solid rgba(109, 211, 206, 0.18); background: rgba(109, 211, 206, 0.06); } .session-preview-panel[hidden] { display: none; } .session-preview-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; } .session-preview-head strong { display: block; margin-top: 4px; color: var(--text); } .session-name-editor { display: grid; gap: 7px; } .session-name-editor label { color: var(--muted); font-size: 0.82rem; } .session-name-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; } .session-name-row input { min-width: 0; } .session-preview-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0; } .session-preview-grid div { padding: 10px; border-radius: 14px; background: rgba(255, 255, 255, 0.035); border: 1px solid rgba(255, 255, 255, 0.055); } .session-preview-grid dt { color: var(--muted); font-size: 0.78rem; margin-bottom: 5px; } .session-preview-grid dd { margin: 0; color: var(--text); font-size: 0.88rem; line-height: 1.35; } .session-item .history-meta { gap: 6px; } .history-kind { display: inline-flex; align-items: center; justify-content: center; min-width: 82px; padding: 8px 10px; border-radius: 999px; background: rgba(255, 255, 255, 0.05); color: var(--muted); font-size: 0.82rem; text-transform: capitalize; } .history-meta { display: grid; gap: 4px; } .history-meta strong { font-size: 0.96rem; } .history-meta span { color: var(--muted); font-size: 0.88rem; } .history-index { color: var(--accent); font-size: 0.85rem; } @keyframes rise-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes preview-pulse { 0% { box-shadow: 0 0 0 1px rgba(244, 162, 97, 0.08), 0 0 0 0 rgba(244, 162, 97, 0); } 40% { box-shadow: 0 0 0 1px rgba(244, 162, 97, 0.24), 0 0 0 14px rgba(244, 162, 97, 0.1); } 100% { box-shadow: 0 0 0 1px rgba(244, 162, 97, 0.22), 0 0 0 12px rgba(244, 162, 97, 0.08); } } @keyframes server-wait-sweep { from { transform: translateX(-120%); } to { transform: translateX(270%); } } @media (max-width: 980px) { .hero, .layout { grid-template-columns: minmax(0, 1fr); } .hero { gap: 12px; padding-top: 16px; } .hero-copy, .hero-side { justify-self: stretch; } .hero-copy h1 { font-size: 1.45rem; } .hero-side { justify-content: flex-start; flex-wrap: wrap; } .hero-status { order: 3; width: 100%; text-align: left; } .hero-actions { justify-content: flex-start; } .control-head { flex-direction: column; } .status-cluster { justify-content: flex-start; } .performance-strip { position: sticky; top: 8px; z-index: 5; backdrop-filter: blur(16px); } } @media (max-width: 640px) { html, body { width: 100%; max-width: 100%; overflow-x: hidden; } .hero, .layout { padding-left: 16px; padding-right: 16px; } .hero { gap: 12px; padding-top: 14px; padding-bottom: 14px; } .hero-copy h1 { max-width: 100%; font-size: 1.35rem; overflow-wrap: break-word; white-space: normal; } .hero-side, .account-trigger { width: 100%; max-width: 100%; } .hero-account-panel { width: calc(100vw - 32px); } .card { width: calc(100% - 16px); padding: 16px; } .control-workspace { padding: 14px; } .button-row { display: grid; grid-template-columns: 1fr; } .button-row > button, .button-row > .toggle { width: 100%; min-width: 0; justify-content: center; } .status-cluster .status-pill, .readiness-step { min-width: 0; } .info-grid { grid-template-columns: 1fr; } .settings-grid { grid-template-columns: 1fr; } .auth-grid { grid-template-columns: 1fr; } .workspace-tabs { grid-template-columns: 1fr; } .performance-strip { align-items: stretch; flex-direction: column; } .readiness-steps { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } .global-panic-button { width: 100%; } .phrase-timeline { grid-template-columns: 1fr; } .panel-grid { grid-template-columns: 1fr; } .session-item { grid-template-columns: 1fr; } .session-preview-button { grid-template-columns: minmax(0, 1fr); } .session-open-button { width: 100%; min-height: 38px; } .session-preview-head { flex-direction: column; align-items: stretch; } .session-name-row { grid-template-columns: 1fr; } .session-preview-grid { grid-template-columns: 1fr; } .memory-item { grid-template-columns: 1fr; } .memory-preview-button { grid-template-columns: minmax(0, 1fr); } .memory-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); min-width: 0; } .section-head { flex-direction: column; } .panel-section { padding: 14px; } .readme-panel { top: 16px; right: 16px; left: 16px; width: auto; max-height: calc(100vh - 32px); } .graph-panel { top: 16px; left: 16px; width: calc(100vw - 32px); height: min(560px, calc(100vh - 32px)); min-width: 0; min-height: 280px; max-height: calc(100vh - 32px); padding: 12px; resize: vertical; } .graph-head { margin: -12px -12px 10px; flex-direction: column; cursor: default; } .graph-tabs { grid-template-columns: 1fr; } .graph-controls { align-items: stretch; } .graph-controls label { flex: 1 1 150px; } .graph-controls select { flex: 1; min-width: 0; } .graph-image-frame { min-height: 0; max-height: none; } .graph-image-frame img { min-width: 620px; } .readme-head { flex-direction: column; } .generation-grid { grid-template-columns: 1fr; } .faust-control-grid { grid-template-columns: 1fr; } .virtual-keyboard-panel { gap: 8px; margin-bottom: 12px; padding: 10px; border-radius: 12px; max-width: 100%; } .virtual-keyboard-panel * { min-width: 0; } .virtual-keyboard-head { display: grid; grid-template-columns: minmax(0, 1fr); align-items: stretch; gap: 8px; } .virtual-keyboard-controls, .virtual-keyboard-actions { gap: 8px; } .virtual-keyboard-head > div:first-child { min-width: 0; } .virtual-keyboard-head strong { font-size: 0.88rem; } .virtual-keyboard-head span { font-size: 0.72rem; } .virtual-octave-controls { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; width: 100%; } .virtual-octave-controls .compact-button { padding-inline: 6px; font-size: 0.76rem; } .virtual-keyboard-controls { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center; } .velocity-control { grid-column: 1 / -1; min-width: 0; grid-template-columns: auto minmax(112px, 1fr) 3ch; font-size: 0.78rem; } .compact-toggle { gap: 7px; font-size: 0.76rem; white-space: normal; } .virtual-keyboard-viewport { height: 96px; } .virtual-keyboard { width: calc(100% - 24px); height: 96px; } .virtual-key span { bottom: 5px; font-size: 0.54rem; } .virtual-keyboard-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } .virtual-keyboard-actions .compact-button { width: 100%; min-height: 36px; padding-inline: 8px; font-size: 0.76rem; line-height: 1.15; white-space: normal; } .piano-roll { height: 206px; } } html.phone-layout .hero, html.phone-layout .desktop-midi-control, html.phone-layout .desktop-output-label, html.phone-layout .phone-secondary-card, html.phone-layout .snapshot-card, html.phone-layout .control-workspace > .card-head, html.phone-layout .workspace-tabs, html.phone-layout .performance-strip, html.phone-layout .live-input-actions, html.phone-layout .input-options, html.phone-layout #control-perform-panel .panel-stack > .panel-section:not(:first-child), html.phone-layout #control-perform-panel .panel-section:first-child > .section-head, html.phone-layout #control-memory-panel, html.phone-layout #control-session-panel { display: none !important; } html.phone-layout .phone-output-label { display: inline; } html.phone-layout .layout { gap: 10px; padding: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); } html.phone-layout .card { width: 100%; } html.phone-layout .column { gap: 10px; } html.phone-layout button, html.phone-layout select, html.phone-layout input[type="number"] { min-height: 44px; } html.phone-layout .control-workspace { overflow: visible; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; backdrop-filter: none; } html.phone-layout #control-perform-panel .panel-stack > .panel-section:first-child { padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; } html.phone-layout .virtual-keyboard-panel { gap: 9px; margin: 0; padding: 10px 8px; border-radius: 16px; } html.phone-layout .virtual-keyboard-viewport, html.phone-layout .virtual-keyboard { width: 100%; height: 118px; } html.phone-layout .black-key { width: calc((100% / var(--white-key-count)) * 0.7); } html.phone-layout .white-key { border-color: #adc6c3; background-color: #f7fcfa; background-image: linear-gradient(180deg, #ffffff 0%, #f2faf7 52%, #deece9 100%); } html.phone-layout .virtual-octave-controls .compact-button, html.phone-layout .virtual-keyboard-actions .compact-button { min-height: 44px; } html.phone-layout .virtual-keyboard-controls, html.phone-layout .virtual-keyboard-actions { display: none; } html.phone-layout .phone-message-box { display: block; min-height: 38px; margin-top: 8px; padding: 9px 12px; overflow: hidden; border: 1px solid rgba(109, 211, 206, 0.16); border-radius: 13px; background: rgba(109, 211, 206, 0.065); font-size: 0.82rem; line-height: 1.4; text-overflow: ellipsis; } html.phone-layout .wide-column .input-card { order: -2; } html.phone-layout .wide-column .output-card { order: -1; } html.phone-layout .roll-card { padding: 12px; border-radius: 16px; } html.phone-layout .roll-card .card-head .small-copy { display: none; } html.phone-layout .roll-card .card-head { margin-bottom: 8px; } html.phone-layout .roll-card .card-head h2 { font-size: 1rem; } html.phone-layout .piano-roll { height: 164px; border-radius: 13px; }