aboutsummaryrefslogtreecommitdiffstats
path: root/static/deck.css
diff options
context:
space:
mode:
Diffstat (limited to 'static/deck.css')
-rw-r--r--static/deck.css124
1 files changed, 119 insertions, 5 deletions
diff --git a/static/deck.css b/static/deck.css
index 5c4af84..40d6ac8 100644
--- a/static/deck.css
+++ b/static/deck.css
@@ -3,6 +3,8 @@
html, body { height: 100%; }
body {
+ display: flex;
+ flex-direction: column;
background: var(--udt-base);
color: var(--udt-text);
font: 400 14px/20px "Noto Sans", system-ui, sans-serif;
@@ -11,16 +13,32 @@ body {
-webkit-touch-callout: none;
-webkit-user-select: none;
user-select: none;
- overflow-y: auto;
- overflow-x: hidden;
+ overflow: hidden;
+}
+
+.tabs { flex: none; display: flex; gap: 6px; padding: 8px 14px 0; }
+.tabs button {
+ font: inherit;
+ color: var(--udt-subtext0);
+ background: transparent;
+ border: 1px solid transparent;
+ border-radius: 10px;
+ padding: 8px 18px;
+ cursor: pointer;
+}
+.tabs button.active {
+ color: var(--udt-text);
+ background: var(--udt-surface0);
+ border-color: var(--udt-surface1);
}
-#grid {
+#tab-body { flex: 1; min-height: 0; overflow: auto; }
+.tab-panel {
padding: max(12px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right))
max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
}
-
-.grid-stack { min-height: 100dvh; }
+.tab-panel[hidden] { display: none; }
+.tab-content { min-height: 100%; }
.panel { min-height: 0; min-width: 0; }
@@ -167,3 +185,99 @@ select {
.good { color: var(--udt-green); }
.bad { color: var(--udt-red); }
.warn { color: var(--udt-yellow); }
+
+/* OBS stream-deck tab */
+.deck { display: flex; flex-direction: column; gap: 14px; }
+.deck-transport { display: flex; gap: 12px; }
+
+.deck-btn {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 12px;
+ min-height: 92px;
+ padding: 12px;
+ font: inherit;
+ font-size: 17px;
+ font-weight: 600;
+ border-radius: 16px;
+ cursor: pointer;
+ background: var(--udt-surface0);
+ border: 1px solid var(--udt-surface1);
+ color: var(--udt-text);
+}
+.deck-btn .ico { width: 28px; height: 28px; }
+.deck-btn .num { font-size: 20px; }
+.deck-btn.rec.on { background: var(--udt-red); border-color: var(--udt-red); color: var(--udt-crust); }
+.deck-btn.live.on { background: var(--udt-green); border-color: var(--udt-green); color: var(--udt-crust); }
+.deck-btn:active { background: var(--udt-surface1); }
+
+.deck-cols { display: grid; grid-template-columns: 2fr 1fr; gap: 14px; }
+@media (max-width: 900px) { .deck-cols { grid-template-columns: 1fr; } }
+
+.deck-block {
+ background: var(--udt-surface0);
+ border: 1px solid var(--udt-surface1);
+ border-radius: 16px;
+ padding: 12px;
+}
+.deck-block h3 {
+ font-size: 11px;
+ text-transform: uppercase;
+ letter-spacing: .08em;
+ color: var(--udt-overlay0);
+ margin-bottom: 10px;
+}
+
+.tiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; }
+.tile {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ gap: 8px;
+ min-height: 74px;
+ padding: 10px;
+ font: inherit;
+ font-size: 14px;
+ text-align: center;
+ border-radius: 12px;
+ cursor: pointer;
+ overflow: hidden;
+ background: var(--udt-surface1);
+ border: 1px solid var(--udt-surface2);
+ color: var(--udt-subtext0);
+}
+.tile .ico { width: 22px; height: 22px; flex: none; }
+.tile span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
+.tile.on {
+ background: var(--udt-accent);
+ border-color: var(--udt-accent);
+ color: var(--udt-crust);
+}
+
+.mixer { display: flex; flex-direction: column; gap: 10px; }
+.chan { display: flex; align-items: center; gap: 10px; }
+.chan .mute {
+ width: 44px;
+ height: 44px;
+ padding: 0;
+ flex: none;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.chan .mute .ico { width: 20px; height: 20px; }
+.chan .mute.on { background: var(--udt-red); border-color: var(--udt-red); color: var(--udt-crust); }
+.chan-name { flex: none; min-width: 84px; max-width: 34%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
+.chan input[type=range] { flex: 1; min-width: 60px; accent-color: var(--udt-accent); }
+.chan-pct { flex: none; min-width: 40px; text-align: right; font-size: 12px; }
+
+.deck-offline {
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 120px;
+ color: var(--udt-subtext0);
+}