style: compact Sonos controls (#2)

This commit is contained in:
Tom Ernst authored and GitHub committed 2026-09-11 00:34:20 +02:00
1 parent 11231f8d9c
commit 251fae0b53
1 file changed
+199 -1
+199 -1
View File
@@ -1 +1,199 @@
:root{color-scheme:dark;--bg:#0b0911;--card:#171320;--line:#30263f;--text:#f6f0ff;--muted:#a99db6;--purple:#a855f7;--pink:#ec4899;--danger:#fb7185}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 80% 0,#271237 0,transparent 35%),var(--bg);color:var(--text);font:16px/1.45 system-ui,sans-serif;min-height:100vh}header,main,footer{max-width:1180px;margin:auto;padding:24px}header{display:flex;align-items:center;justify-content:space-between}.eyebrow{color:var(--pink);font-size:.72rem;letter-spacing:.18em;font-weight:800;margin:0}h1{margin:.1em 0;font-size:clamp(2rem,5vw,3.6rem)}h1 span{background:linear-gradient(90deg,var(--purple),var(--pink));background-clip:text;color:transparent}h2{font-size:1.15rem}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:16px}.zone,.panel{background:color-mix(in srgb,var(--card) 94%,transparent);border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:0 12px 40px #0005}.zone-head{display:flex;justify-content:space-between;gap:12px}.state{font-size:.75rem;color:#d8b4fe}.track{min-height:48px;color:var(--muted)}button,select,input{font:inherit;color:var(--text);background:#211a2c;border:1px solid #48345e;border-radius:10px;padding:10px 14px}button{cursor:pointer;font-weight:700}button:hover,button:focus{border-color:var(--pink);box-shadow:0 0 0 2px #ec489933}.controls,.tabs,.list-row{display:flex;gap:8px;flex-wrap:wrap}.controls button{flex:1}.danger{color:var(--danger)}label{display:grid;gap:7px;color:var(--muted)}input[type=range]{width:100%;accent-color:var(--pink)}.panel{margin-top:24px}.form-grid{display:grid;grid-template-columns:1fr 2fr;gap:20px;margin-bottom:16px}fieldset{border:0;margin:0;padding:0}.checks{display:flex;gap:12px;flex-wrap:wrap}.checks label{display:flex;align-items:center}.tabs{margin:18px 0}.tabs .active,#group{background:linear-gradient(110deg,#7c3aed,var(--pink));border:0}.list-row{align-items:center;justify-content:space-between;padding:10px;border-bottom:1px solid var(--line)}.muted,footer{color:var(--muted)}#notice:not(:empty){padding:12px;margin-bottom:16px;border:1px solid var(--pink);border-radius:10px}footer{text-align:center;font-size:.85rem}@media(max-width:640px){header{align-items:flex-start;gap:14px;flex-direction:column}.form-grid{grid-template-columns:1fr}header,main,footer{padding:18px}.zone{padding:16px}}
:root {
color-scheme: dark;
--bg: #0b0911;
--card: #171320;
--line: #30263f;
--text: #f6f0ff;
--muted: #a99db6;
--purple: #a855f7;
--pink: #ec4899;
--danger: #fb7185;
}
* { box-sizing: border-box; }
body {
margin: 0;
min-height: 100vh;
background: radial-gradient(circle at 80% 0, #271237 0, transparent 35%), var(--bg);
color: var(--text);
font: 14px/1.3 system-ui, sans-serif;
}
header, main, footer {
max-width: 1180px;
margin: auto;
padding: 16px 24px;
}
header {
display: flex;
align-items: center;
justify-content: space-between;
}
.eyebrow {
margin: 0;
color: var(--pink);
font-size: .68rem;
font-weight: 800;
letter-spacing: .16em;
}
h1 {
margin: .05em 0;
font-size: clamp(1.65rem, 4vw, 2.7rem);
line-height: 1.08;
}
h1 span {
background: linear-gradient(90deg, var(--purple), var(--pink));
background-clip: text;
color: transparent;
}
h2 {
margin: .25rem 0;
font-size: 1rem;
line-height: 1.2;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
gap: 11px;
}
.zone, .panel {
padding: 13px 16px;
border: 1px solid var(--line);
border-radius: 14px;
background: color-mix(in srgb, var(--card) 94%, transparent);
box-shadow: 0 8px 28px #0005;
}
.zone-head {
display: flex;
justify-content: space-between;
gap: 9px;
}
.state {
color: #d8b4fe;
font-size: .68rem;
}
.track {
min-height: 32px;
margin: 8px 0;
color: var(--muted);
}
button, select, input {
min-height: 32px;
padding: 6px 11px;
border: 1px solid #48345e;
border-radius: 8px;
background: #211a2c;
color: var(--text);
font: inherit;
}
button {
cursor: pointer;
font-size: .86rem;
font-weight: 700;
}
button:hover, button:focus {
border-color: var(--pink);
box-shadow: 0 0 0 2px #ec489933;
}
.controls, .tabs, .list-row {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.controls button { flex: 1; }
.danger { color: var(--danger); }
label {
display: grid;
gap: 4px;
color: var(--muted);
font-size: .88rem;
}
input[type="range"] {
width: 100%;
min-height: 26px;
padding: 3px 6px;
accent-color: var(--pink);
}
.panel { margin-top: 14px; }
.form-grid {
display: grid;
grid-template-columns: 1fr 2fr;
gap: 14px;
margin-bottom: 10px;
}
fieldset {
margin: 0;
padding: 0;
border: 0;
}
.checks {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.checks label {
display: flex;
align-items: center;
}
.tabs { margin: 11px 0; }
.tabs .active, #group {
border: 0;
background: linear-gradient(110deg, #7c3aed, var(--pink));
}
.list-row {
align-items: center;
justify-content: space-between;
padding: 6px 8px;
border-bottom: 1px solid var(--line);
}
.muted, footer { color: var(--muted); }
#notice:not(:empty) {
margin-bottom: 10px;
padding: 8px 10px;
border: 1px solid var(--pink);
border-radius: 8px;
}
footer {
text-align: center;
font-size: .76rem;
}
@media (max-width: 640px) {
header {
align-items: flex-start;
flex-direction: column;
gap: 9px;
}
.form-grid { grid-template-columns: 1fr; }
header, main, footer { padding: 12px 18px; }
.zone { padding: 11px 14px; }
}