:root { --bg-1: #f8f2e6; --bg-2: #dce9f4; --card: #fff9f0; --panel: #f9f8f3; --panel-line: #d8d1c4; --ink: #1f2633; --muted: #586173; --primary: #0a5f94; --primary-press: #084d79; --disabled: #9fa9b8; --controls-height: 10dvh; } * { 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%, rgba(255, 255, 255, 0.85) 0%, rgba(255, 255, 255, 0) 44%), linear-gradient(140deg, var(--bg-1), var(--bg-2)); overflow: hidden; } .home-layout { height: 100dvh; width: 100%; padding: 1rem; padding-bottom: calc(var(--controls-height) + 1rem); } .website-zone { height: calc(100dvh - var(--controls-height) - 1rem); max-height: 90dvh; 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 rgba(18, 50, 73, 0.12), inset 0 0.1rem 0.2rem rgba(255, 255, 255, 0.7); 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, rgba(255, 255, 255, 0.7), rgba(247, 242, 233, 0.9)); } .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: #ffffff; } .radio-controls-wrap { position: fixed; left: 0; right: 0; bottom: 0; height: var(--controls-height); padding: 0.5rem 1rem; padding-bottom: calc(0.5rem + env(safe-area-inset-bottom)); border-top: 1px solid rgba(28, 41, 62, 0.16); background: linear-gradient(180deg, rgba(255, 250, 242, 0.95), rgba(239, 235, 225, 0.98)); 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); } .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: #ffffff; 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 (max-width: 560px) { .home-layout { padding: 0.65rem; padding-bottom: calc(var(--controls-height) + 0.65rem); } .website-zone { height: calc(100dvh - var(--controls-height) - 0.65rem); } .radio-controls-wrap { padding-left: 0.65rem; padding-right: 0.65rem; } .radio-controls { grid-template-columns: 1fr; gap: 0.35rem; } .radio-controls__buttons { justify-content: start; } }