208 lines
4.3 KiB
CSS
208 lines
4.3 KiB
CSS
:root {
|
|
--bg-1: #f8f2e6;
|
|
--bg-2: #dce9f4;
|
|
--panel: #f9f8f3;
|
|
--panel-line: #d8d1c4;
|
|
--ink: #1f2633;
|
|
--muted: #586173;
|
|
--primary: #0a5f94;
|
|
--primary-press: #084d79;
|
|
--disabled: #9fa9b8;
|
|
--white: #ffffff;
|
|
--shadow-base: #12324a;
|
|
--border-dark: #1c293e;
|
|
--controls-height: 10svh;
|
|
--controls-safe: env(safe-area-inset-bottom);
|
|
--controls-total-height: calc(var(--controls-height) + var(--controls-safe));
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
margin: 0;
|
|
height: 100%;
|
|
}
|
|
|
|
body {
|
|
color: var(--ink);
|
|
font-family: 'Trebuchet MS', 'Avenir Next', 'Segoe UI', sans-serif;
|
|
background:
|
|
radial-gradient(circle at 16% 18%, color-mix(in srgb, var(--white) 85%, transparent) 0%, transparent 44%),
|
|
linear-gradient(140deg, var(--bg-1), var(--bg-2));
|
|
overflow: hidden;
|
|
}
|
|
|
|
.home-layout {
|
|
position: relative;
|
|
height: 100svh;
|
|
width: 100%;
|
|
padding: 1rem;
|
|
padding-bottom: calc(var(--controls-total-height) + 1rem);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.website-zone {
|
|
height: 100%;
|
|
min-height: 0;
|
|
}
|
|
|
|
.website-panel {
|
|
height: 100%;
|
|
border-radius: 1rem;
|
|
border: 1px solid var(--panel-line);
|
|
background: var(--panel);
|
|
box-shadow:
|
|
0 1.2rem 2.2rem color-mix(in srgb, var(--shadow-base) 12%, transparent),
|
|
inset 0 0.1rem 0.2rem color-mix(in srgb, var(--white) 70%, transparent);
|
|
display: grid;
|
|
grid-template-rows: auto 1fr;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.website-panel__header {
|
|
border-bottom: 1px solid var(--panel-line);
|
|
padding: 0.75rem 1rem;
|
|
background: linear-gradient(180deg, color-mix(in srgb, var(--white) 70%, transparent), color-mix(in srgb, var(--bg-1) 90%, transparent));
|
|
}
|
|
|
|
.website-panel__label {
|
|
margin: 0;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.12em;
|
|
font-size: 0.68rem;
|
|
font-weight: 700;
|
|
color: var(--muted);
|
|
}
|
|
|
|
.website-panel__url {
|
|
margin: 0.25rem 0 0;
|
|
font-size: clamp(0.82rem, 2.2vw, 0.96rem);
|
|
color: var(--ink);
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.website-panel__content {
|
|
min-height: 0;
|
|
}
|
|
|
|
.website-panel__frame {
|
|
width: 100%;
|
|
height: 100%;
|
|
border: none;
|
|
background: var(--white);
|
|
}
|
|
|
|
.radio-controls-wrap {
|
|
position: fixed;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
height: var(--controls-total-height);
|
|
padding: 0.5rem 1rem;
|
|
padding-bottom: calc(0.5rem + var(--controls-safe));
|
|
border-top: 1px solid color-mix(in srgb, var(--border-dark) 16%, transparent);
|
|
background: linear-gradient(180deg, color-mix(in srgb, var(--bg-1) 95%, transparent), color-mix(in srgb, var(--bg-1) 98%, var(--panel-line)));
|
|
backdrop-filter: blur(7px);
|
|
}
|
|
|
|
.radio-controls {
|
|
height: 100%;
|
|
max-width: 48rem;
|
|
margin: 0 auto;
|
|
display: grid;
|
|
gap: 0.55rem;
|
|
grid-template-columns: 1fr auto;
|
|
align-items: center;
|
|
}
|
|
|
|
.radio-controls__status {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: clamp(0.8rem, 2.2vw, 1rem);
|
|
white-space: nowrap;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.radio-controls__buttons {
|
|
display: grid;
|
|
grid-auto-flow: column;
|
|
gap: 0.6rem;
|
|
}
|
|
|
|
.radio-controls button {
|
|
appearance: none;
|
|
border: none;
|
|
border-radius: 0.7rem;
|
|
background: var(--primary);
|
|
color: var(--white);
|
|
font-size: 1rem;
|
|
font-weight: 700;
|
|
padding: 0.78rem 1rem;
|
|
cursor: pointer;
|
|
transition: transform 120ms ease, background 120ms ease;
|
|
}
|
|
|
|
.radio-controls button.playpause {
|
|
width: clamp(2.9rem, 9vw, 4rem);
|
|
aspect-ratio: 1 / 1;
|
|
font-size: clamp(1.15rem, 4vw, 1.7rem);
|
|
padding: 0;
|
|
}
|
|
|
|
.radio-controls button:hover:not(:disabled) {
|
|
background: var(--primary-press);
|
|
}
|
|
|
|
.radio-controls button:active:not(:disabled) {
|
|
transform: translateY(1px);
|
|
}
|
|
|
|
.radio-controls button:disabled {
|
|
cursor: not-allowed;
|
|
background: var(--disabled);
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
:root {
|
|
--bg-1: #0d1420;
|
|
--bg-2: #111c2e;
|
|
--panel: #16202f;
|
|
--panel-line: #253043;
|
|
--ink: #dde4f0;
|
|
--muted: #8fb2eb;
|
|
--primary: #2d8fd6;
|
|
--primary-press: #237bbf;
|
|
--disabled: #34455c;
|
|
--white: #929292;
|
|
--shadow-base: #020507;
|
|
--border-dark: #060d18;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 560px) {
|
|
.home-layout {
|
|
padding: 0.65rem;
|
|
padding-bottom: calc(var(--controls-total-height) + 0.65rem);
|
|
}
|
|
|
|
.radio-controls-wrap {
|
|
padding-left: 0.65rem;
|
|
padding-right: 0.65rem;
|
|
}
|
|
|
|
.radio-controls {
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.radio-controls__buttons {
|
|
justify-content: end;
|
|
}
|
|
}
|