diff --git a/sketches/doorbell/doorbell.html b/sketches/doorbell/doorbell.html index ac3c205..0d45330 100644 --- a/sketches/doorbell/doorbell.html +++ b/sketches/doorbell/doorbell.html @@ -32,16 +32,33 @@ text-align: center; } - /* Status Indicator */ + #connection { + text-align: center; + font-size: 9px; + margin-bottom: 5px; + letter-spacing: 1px; + font-family: monospace; + } + + #connection.connected { color: #64e8ba; } + #connection.connecting { color: #f890e7; } + #connection.error { color: #f890e7; } + #connection.backoff { color: #888; } + #status { text-align: center; padding: 15px; - margin-bottom: 30px; + margin-bottom: 15px; border-radius: 8px; font-size: 12px; letter-spacing: 2px; text-transform: uppercase; transition: all 0.3s ease; + min-height: 50px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; } #status.silent { @@ -57,12 +74,55 @@ animation: pulse 1s ease-in-out infinite; } + #status.sending { + background: #f890e7; + color: #000; + font-weight: 600; + } + + #status.confirming { + background: #0bd3d3; + color: #000; + font-weight: 600; + } + + #status.offline { + background: #1a1a1a; + color: #f890e7; + border: 1px solid #f890e7; + } + @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } - /* Button Grid */ + .status-detail { + font-size: 10px; + font-weight: 400; + opacity: 0.8; + margin-top: 4px; + letter-spacing: 1px; + } + + #metrics { + font-size: 9px; + color: #444; + text-align: center; + margin-bottom: 15px; + letter-spacing: 1px; + font-family: monospace; + } + + #backoffInfo { + font-size: 9px; + color: #555; + text-align: center; + margin-bottom: 10px; + letter-spacing: 1px; + font-family: monospace; + } + .buttons { display: grid; gap: 15px; @@ -80,11 +140,14 @@ cursor: pointer; transition: transform 0.1s ease, opacity 0.2s ease; color: #fff8fa; - position: relative; - overflow: hidden; } - button:active { + button:disabled { + opacity: 0.5; + cursor: not-allowed; + } + + button:not(:disabled):active { transform: scale(0.96); opacity: 0.8; } @@ -139,11 +202,22 @@ cursor: pointer; } - #sendCustom:active { + #sendCustom:not(:disabled):active { background: #0bd3d3; } - /* Feedback toast */ + #silence { + background: #1a1a1a; + border: 2px solid #64e8ba; + color: #64e8ba; + margin-top: 10px; + } + + #silence:not(:disabled):active { + background: #64e8ba; + color: #000; + } + #toast { position: fixed; bottom: 30px; @@ -166,89 +240,411 @@ transform: translateX(-50%) translateY(0); opacity: 1; } + + #toast.error { + background: #f890e7; + }