Download source/demo/web/src/local/local.css from jackboyla/hendrix: direct link, hf CLI and curl.
- Browser
- Download file 17.3 kB
-
https://huggingface.co/spaces/jackboyla/hendrix/resolve/main/source/demo/web/src/local/local.css
- Command line
-
hf download hf://spaces/jackboyla/hendrix/source/demo/web/src/local/local.css
-
curl -L -o local.css https://huggingface.co/spaces/jackboyla/hendrix/resolve/main/source/demo/web/src/local/local.css
17.3 kB
| :root { color-scheme: dark; } | |
| body { margin: 0; background: #111216; color: #f4f0e9; } | |
| .local-shell { --ink: #f4f0e9; --muted: #9b9ba5; --peach: #efb58c; --line: #ffffff12; width: min(1240px, calc(100% - 64px)); margin: 0 auto; padding: 26px 0 36px; font-family: "Hanken Grotesk", Inter, ui-sans-serif, system-ui, sans-serif; } | |
| .local-shell button, .local-shell input, .local-shell select { font: inherit; } | |
| .demo-nav { display: flex; justify-content: space-between; align-items: center; gap: 24px; } | |
| .demo-brand { display: inline-flex; gap: 10px; align-items: center; color: var(--ink); font-size: 26px; font-weight: 750; letter-spacing: -1.5px; text-decoration: none; } | |
| .demo-brand svg { width: 30px; height: 30px; color: var(--peach); } | |
| .brand-period { color: var(--peach); } | |
| .demo-nav > div { display: flex; align-items: center; gap: 28px; font-size: 12px; } | |
| .demo-nav a:not(.demo-brand) { text-decoration: none; color: #c3c1c7; } | |
| .demo-nav a:hover { color: var(--peach); } | |
| .privacy-pill { display: inline-flex; gap: 7px; align-items: center; color: #b1c4b8; padding: 8px 11px; border: 1px solid #a7c6b41f; border-radius: 999px; background: #a7c6b408; font-size: 11px; } | |
| .privacy-pill svg { width: 14px; height: 14px; } | |
| .local-hero { display: flex; align-items: center; justify-content: space-between; gap: 44px; padding: 54px 0 34px; } | |
| .eyebrow { color: #a5a0a5; font-size: 9px; letter-spacing: .18em; font-weight: 700; margin: 0 0 12px; } | |
| .local-hero h1 { font-family: Georgia, "Times New Roman", serif; font-size: clamp(42px, 5.1vw, 66px); font-weight: 400; letter-spacing: -.055em; line-height: 1.02; margin: 0; } | |
| .local-hero h1 em { font-weight: 400; color: var(--peach); } | |
| .local-hero > div > p:last-child { max-width: 470px; color: #b8b4bc; font-size: 14px; line-height: 1.7; margin: 18px 0 0; } | |
| .hero-art { width: 290px; padding: 12px 20px 0; flex: 0 0 330px; } | |
| .hero-notes { display: block; width: 100%; color: #b4b1bc; } | |
| .hero-art > span { display: block; margin-top: 20px; text-align: center; color: #a39daa; font-size: 10px; letter-spacing: .08em; } | |
| .hero-art > span > span { padding: 0 12px; color: var(--peach); } | |
| .upload-panel { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 20px 24px; background: #191a1f; border: 1px dashed #ffffff24; border-radius: 14px; margin-bottom: 30px; transition: border-color .15s, background .15s; } | |
| .upload-panel.dragging { border-color: var(--peach); background: #30251f; } | |
| .upload-copy { display: flex; align-items: center; gap: 16px; } | |
| .upload-icon { width: 44px; height: 44px; display: grid; place-items: center; border: 1px solid #ffffff10; border-radius: 12px; color: #c4b7ab; background: #ffffff03; flex: 0 0 auto; } | |
| .upload-icon svg { width: 20px; height: 20px; } | |
| .upload-copy strong { font-size: 14px; font-weight: 600; } | |
| .upload-copy p { font-size: 11px; color: var(--muted); margin: 5px 0 0; } | |
| .upload-actions { display: flex; gap: 9px; flex: 0 0 auto; } | |
| .primary-button, .secondary-button, .record-button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; appearance: none; padding: 10px 15px; border-radius: 8px; font-size: 12px ; font-weight: 650 ; cursor: pointer; text-decoration: none; } | |
| .primary-button { background: var(--peach); color: #22170f; border: 1px solid var(--peach); } | |
| .primary-button:hover { background: #f4c29e; } | |
| .secondary-button { background: #ffffff04; border: 1px solid #ffffff1c; color: #ddd6d2; } | |
| .record-button { background: #ae4857; color: white; animation: pulse-record 1.3s infinite; } | |
| .primary-button svg, .secondary-button svg, .record-button svg { width: 14px; height: 14px; } | |
| button:disabled, .primary-button:has(input:disabled) { cursor: not-allowed; opacity: .4; } | |
| .demo-workspace { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 28px; align-items: start; } | |
| .example-library { min-width: 0; scroll-margin-top: 20px; } | |
| .library-heading { display: flex; justify-content: space-between; align-items: center; gap: 10px; } | |
| .library-heading .eyebrow { font-size: 8px; margin-bottom: 7px; } | |
| .library-heading h2 { margin: 0; font-family: Georgia, serif; font-size: 22px; line-height: 1.2; font-weight: 400; letter-spacing: -.03em; } | |
| .example-count { flex: 0 0 auto; color: #c3bbca; background: #ffffff07; border: 1px solid #ffffff10; font-size: 9px; border-radius: 5px; padding: 4px 6px; } | |
| .library-intro { margin: 10px 0 16px; font-size: 11px; color: var(--muted); line-height: 1.55; } | |
| .category-tabs { display: flex; gap: 5px; flex-wrap: wrap; margin-bottom: 16px; } | |
| .category-tabs button { padding: 5px 9px; font-size: 10px; border-radius: 999px; border-color: transparent; background: transparent; color: #9b96a2; } | |
| .category-tabs button[aria-pressed="true"] { background: #efb58c17; color: #e8bd9f; border-color: #efb58c28; } | |
| .example-list { display: grid; gap: 6px; max-height: 553px; overflow-y: auto; padding-right: 5px; scrollbar-width: thin; scrollbar-color: #ffffff20 transparent; } | |
| .example-card { position: relative; display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; border: 1px solid transparent; border-radius: 10px; padding: 11px 9px; background: #ffffff02; color: #eee9e3; min-height: 86px; } | |
| .example-card:hover { background: #ffffff06; border-color: #ffffff15; } | |
| .example-card.selected { background: #efb58c09; border-color: #efb58c34; } | |
| .clip-art { flex: 0 0 44px; height: 48px; padding: 7px; border-radius: 8px; background: color-mix(in srgb, var(--clip-color) 13%, #1b1a20); color: var(--clip-color); display: grid; align-items: center; } | |
| .clip-art svg { width: 100%; height: 25px; } | |
| .clip-info { min-width: 0; display: flex; flex-direction: column; gap: 4px; flex: 1; } | |
| .clip-info strong { font-size: 11px; font-weight: 600; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } | |
| .clip-info > span { font-size: 9px; color: #9f99a3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } | |
| .clip-info .clip-tags { font-size: 8px; color: var(--clip-color); } | |
| .clip-tags > span { padding: 0 6px; color: #77717d; } | |
| .clip-open { color: var(--clip-color); opacity: .8; flex: 0 0 10px; } | |
| .clip-open svg { width: 10px; height: 10px; } | |
| .library-note { margin: 15px 4px 0 0; font-size: 9px; line-height: 1.6; color: #8a8490; } | |
| .library-note a { color: #b7adb9; display: inline-block; text-decoration: none; margin-top: 4px; } | |
| .library-empty { color: #c7bfcb; font-size: 12px; line-height: 1.6; } | |
| .listening-room { min-width: 0; border: 1px solid #ffffff17; background: #191a20; border-radius: 16px; overflow: hidden; box-shadow: 0 12px 48px #00000012; } | |
| .track-header { padding: 23px 24px 18px; display: flex; align-items: center; gap: 24px; justify-content: space-between; } | |
| .track-header > div { min-width: 0; } | |
| .track-header .eyebrow { color: var(--peach); font-size: 8px; margin-bottom: 8px; } | |
| .track-header h2 { font-family: Georgia, serif; font-size: 26px; line-height: 1.15; font-weight: 400; letter-spacing: -.025em; margin: 0; } | |
| .chosen-file { color: var(--muted); font-size: 11px; margin: 8px 0 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } | |
| .download-button { display: inline-flex; align-items: center; gap: 7px; font-size: 11px; color: #e1d3c6; border: 1px solid #ffffff22; border-radius: 7px; padding: 9px 11px; white-space: nowrap; text-decoration: none; } | |
| .download-button svg { width: 13px; height: 13px; } | |
| .download-button:hover { color: var(--peach); border-color: #efb58c66; } | |
| .roll-toolbar { display: flex; align-items: center; justify-content: space-between; padding: 11px 23px; border-top: 1px solid var(--line); background: #ffffff02; } | |
| .roll-toolbar > span:last-child { font-size: 8px; letter-spacing: .14em; color: #706b78; } | |
| .roll-label { display: flex; align-items: center; gap: 7px; color: #b6b0bd; font-size: 10px; } | |
| .status-dot { width: 5px; height: 5px; background: #77717c; border-radius: 50%; } | |
| .status-dot.ready { background: #a5c6b4; box-shadow: 0 0 7px #a5c6b433; } | |
| .roll-stage { position: relative; padding: 0 12px; background: #0e0f13; } | |
| .roll-stage section { border: none; border-radius: 0; box-shadow: none; animation: none; } | |
| .roll-stage canvas { height: 282px; } | |
| .roll-empty { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; pointer-events: none; background: #0e0f13c4; padding: 20px; } | |
| .roll-empty svg { max-width: 200px; margin-bottom: 22px; opacity: .6; } | |
| .roll-empty strong { color: #d6cfda; font-size: 13px; font-weight: 500; } | |
| .roll-empty span { color: #8d8794; font-size: 11px; margin-top: 7px; } | |
| .instrument-row { display: flex; flex-wrap: wrap; align-items: center; gap: 5px 8px; padding: 10px 20px; min-height: 37px; border-bottom: 1px solid var(--line); background: #14151a; } | |
| .instrument-row button { display: inline-flex; align-items: center; gap: 5px; background: transparent; border-color: transparent; color: #b2abba; font-size: 9px; padding: 3px 5px; border-radius: 4px; } | |
| .instrument-row button[aria-pressed="false"] { opacity: .4; text-decoration: line-through; } | |
| .instrument-row i { width: 5px; height: 5px; border-radius: 50%; } | |
| .instrument-row > span { font-size: 10px; color: #77717f; } | |
| .player { padding: 15px 24px 17px; } | |
| .transport-row { display: flex; align-items: center; gap: 12px; } | |
| .play-button { display: grid; place-items: center; border: none; border-radius: 50%; background: var(--peach); color: #332215; width: 38px; height: 38px; padding: 0; flex: 0 0 auto; } | |
| .play-button:hover { background: #f4c29e; } | |
| .play-button svg { width: 13px; height: 13px; } | |
| .play-clock { color: #c8c0cc; font-family: ui-monospace, monospace; font-size: 10px; font-variant-numeric: tabular-nums; } | |
| .play-clock.duration { color: #81798a; } | |
| .waveform-seek { position: relative; min-width: 0; flex: 1; height: 35px; color: #d2b49e; } | |
| .waveform-seek svg { width: 100%; height: 35px; } | |
| .waveform-seek input { appearance: none; position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: .001; cursor: pointer; } | |
| .waveform-seek:focus-within { outline: 1px solid var(--peach); outline-offset: 5px; border-radius: 3px; } | |
| .restart-button { padding: 3px; border: none; background: transparent; color: #a198ac; font-size: 23px ; } | |
| .blend-control { margin-top: 17px; padding-top: 15px; border-top: 1px solid var(--line); } | |
| .blend-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 11px; color: #ded6e1; } | |
| .blend-readout { font-variant-numeric: tabular-nums; font-size: 9px; color: #8f879b; } | |
| .blend-slider-row { display: flex; align-items: center; gap: 14px; margin: 10px 0 7px; } | |
| .blend-slider-row button { border: none; padding: 2px 0; background: transparent; color: #b2a9bd; font-size: 10px; min-width: 44px; } | |
| .blend-slider-row button.active { color: var(--peach); } | |
| .local-shell .mix-slider { appearance: none; flex: 1; min-width: 0; width: auto; height: 4px; border-radius: 9px; background: linear-gradient(to right, #efb58c 0%, #efb58c var(--mix-percent), #45404c var(--mix-percent), #45404c 100%); cursor: pointer; border: none; } | |
| .local-shell .mix-slider::-webkit-slider-thumb { appearance: none; width: 13px; height: 13px; background: #f4e7dd; border: 3px solid #29232c; border-radius: 50%; box-shadow: 0 0 0 1px #f4e7dd; } | |
| .local-shell .mix-slider::-moz-range-thumb { width: 9px; height: 9px; background: #f4e7dd; border: 2px solid #29232c; border-radius: 50%; } | |
| .local-shell .mix-slider:disabled { cursor: not-allowed; opacity: .4; } | |
| .blend-hint { color: #81798d; font-size: 9px; line-height: 1.5; margin: 0; } | |
| .transcription-panel { border-top: 1px solid var(--line); padding: 15px 24px 17px; background: #ffffff02; } | |
| .transcription-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; } | |
| .limit-label { display: flex; align-items: center; gap: 8px; font-size: 10px; color: #9d94a7; } | |
| .limit-label select { color: #cec5d5; background: #26232b; border: 1px solid #ffffff15; border-radius: 5px; padding: 6px 8px; font-size: 10px; } | |
| .transcribe-button { display: inline-flex; align-items: center; justify-content: center; gap: 12px; background: #eee6dc; color: #2a222e; border: none; font-size: 11px ; font-weight: 650 ; border-radius: 6px; padding: 8px 12px; margin-left: auto; } | |
| .transcribe-button:hover { background: #f5f0e9; } | |
| .transcribe-button > span { font-size: 15px; line-height: 1; } | |
| .run-status { color: #a69dac; font-size: 10px; line-height: 1.5; margin: 11px 0 0; } | |
| .run-status.error { color: #f39d9d; } | |
| .download-hint { color: #77707f; font-size: 9px; margin: 6px 0 0; line-height: 1.5; } | |
| .progress-track { height: 3px; background: #ffffff10; overflow: hidden; border-radius: 4px; margin-top: 14px; } | |
| .progress-track > div { height: 100%; background: var(--peach); transition: width .2s; } | |
| .local-footer { display: grid; grid-template-columns: 300px minmax(0,1fr); gap: 28px; margin-top: 36px; border-top: 1px solid var(--line); padding-top: 22px; } | |
| .local-footer .demo-brand { font-size: 18px; gap: 7px; } | |
| .local-footer .demo-brand svg { width: 21px; height: 21px; color: #a89aab; } | |
| .local-footer p { color: #8d8496; font-size: 10px; line-height: 1.7; margin: 5px 0; } | |
| .local-footer > div:last-child > p:first-child { color: #b6abba; } | |
| .runtime-details { color: #a39aad; font-size: 10px; margin-top: 11px; } | |
| .runtime-details summary { cursor: pointer; } | |
| .capability-card { margin-top: 10px ; } | |
| .local-footer-links { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 8px; } | |
| .local-footer-links a { color: #d0c1d1; text-decoration: none; } | |
| .diagnostic-output { font: 10px/1.6 ui-monospace, monospace; overflow-wrap: anywhere; } | |
| .run-diagnostics { margin-top: 8px; } | |
| .local-shell :is(button, a, select, input):focus-visible, .primary-button:focus-within { outline: 2px solid var(--peach); outline-offset: 4px; } | |
| @keyframes pulse-record { 50% { box-shadow: 0 0 0 5px #ae485720; } } | |
| @media (min-width: 1500px) { .local-shell { padding-top: 34px; } } | |
| @media (max-width: 1000px) { | |
| .local-shell { width: calc(100% - 40px); } | |
| .demo-workspace { grid-template-columns: 260px minmax(0,1fr); gap: 20px; } | |
| .local-footer { grid-template-columns: 260px minmax(0,1fr); gap: 20px; } | |
| .privacy-pill { display: none; } | |
| .hero-art { flex-basis: 240px; padding: 0; } | |
| .upload-panel { padding: 18px; } | |
| .track-header { padding: 20px 18px; gap: 12px; } | |
| .track-header h2 { font-size: 24px; } | |
| .download-button { font-size: 10px; padding: 8px; } | |
| .player, .transcription-panel { padding-left: 18px; padding-right: 18px; } | |
| } | |
| @media (max-width: 760px) { | |
| .local-shell { width: calc(100% - 32px); padding-top: 18px; } | |
| .demo-brand { font-size: 24px; } | |
| .demo-nav > div { gap: 20px; font-size: 11px; } | |
| .local-hero { padding: 36px 0 25px; gap: 20px; } | |
| .local-hero h1 { font-size: 51px; } | |
| .local-hero .eyebrow { font-size: 8px; } | |
| .local-hero > div > p:last-child { font-size: 13px; max-width: 390px; margin-top: 16px; } | |
| .hero-art { display: none; } | |
| .upload-panel { flex-direction: column; align-items: stretch; gap: 15px; margin-bottom: 26px; } | |
| .upload-actions { width: 100%; } | |
| .upload-actions > * { flex: 1; } | |
| .upload-copy { gap: 12px; } | |
| .demo-workspace { display: flex; flex-direction: column; gap: 22px; } | |
| .example-library, .listening-room { width: 100%; } | |
| .library-heading { align-items: center; } | |
| .library-heading h2 { font-size: 24px; } | |
| .library-intro { margin: 8px 0 12px; } | |
| .category-tabs { margin-bottom: 12px; } | |
| .example-list { display: flex; gap: 8px; max-height: none; overflow-x: auto; padding: 0 0 10px; scroll-snap-type: x mandatory; } | |
| .example-card { flex: 0 0 220px; min-width: 0; min-height: 89px; border-color: #ffffff0b; scroll-snap-align: start; } | |
| .clip-info strong { font-size: 12px; } | |
| .clip-info > span { font-size: 10px; } | |
| .clip-info .clip-tags { font-size: 9px; } | |
| .library-note { margin-top: 1px; font-size: 9px; } | |
| .library-note a { display: inline; margin-left: 4px; } | |
| .track-header { flex-wrap: wrap; align-items: start; } | |
| .track-header > div { flex: 1; } | |
| .track-header h2 { font-size: 25px; } | |
| .download-button { font-size: 9px; padding: 8px; } | |
| .roll-stage canvas { height: 250px; } | |
| .roll-toolbar { padding: 10px 17px; } | |
| .instrument-row { padding: 9px 12px; } | |
| .instrument-row button { font-size: 10px; } | |
| .player { padding: 14px 17px 16px; } | |
| .transport-row { gap: 10px; } | |
| .blend-hint { font-size: 10px; } | |
| .blend-slider-row button { font-size: 11px; } | |
| .blend-readout { font-size: 9px; } | |
| .transcription-panel { padding: 14px 17px 17px; } | |
| .run-status { font-size: 11px; } | |
| .local-footer { grid-template-columns: 1fr; gap: 13px; margin-top: 28px; padding-top: 20px; } | |
| .local-footer p { font-size: 11px; } | |
| } | |
| @media (max-width: 380px) { | |
| .demo-nav > div { gap: 12px; } | |
| .local-hero h1 { font-size: 46px; } | |
| .eyebrow { letter-spacing: .13em; } | |
| .download-button { padding: 7px; } | |
| .download-button svg { display: none; } | |
| .transcription-actions { gap: 8px; } | |
| .limit-label { font-size: 9px; gap: 5px; } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| *, *::before, *::after { animation: none ; transition: none ; scroll-behavior: auto ; } | |
| } | |