diff --git a/firmware/src/main.cpp b/firmware/src/main.cpp index 0fa6d67..ef601d4 100644 --- a/firmware/src/main.cpp +++ b/firmware/src/main.cpp @@ -195,8 +195,8 @@ static void normal_operation(const String& mac) { } // No stored image yet: keep current display (e-ink is persistent) } else if (code == 404) { - // Device not registered — show red border indication - epd_fill(COLOR_RED); + // Device not registered — show setup QR so user can link this device + show_setup_qr(mac); } else { // Server error / timeout: yellow border indication (server reachable, sync failed) epd_fill(COLOR_YELLOW); diff --git a/templates/setup/configure.html.twig b/templates/setup/configure.html.twig index 2498a06..078fcd9 100644 --- a/templates/setup/configure.html.twig +++ b/templates/setup/configure.html.twig @@ -16,9 +16,18 @@ input[type="text"], select { width: 100%; min-height: 44px; padding: 0 .875rem; border: 1px solid #e8d9c4; border-radius: 10px; background: #fff; font-size: 1rem; color: #3a2e22; } - select { padding-right: 2rem; appearance: none; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%238a7060' stroke-width='1.5' fill='none'/%3E%3C/svg%3E"); - background-repeat: no-repeat; background-position: right .875rem center; } + .orientation-picker { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; } + .orientation-opt { display: flex; flex-direction: column; align-items: center; gap: .25rem; + padding: .75rem .5rem; background: #fff9f2; border: 2px solid #e8d9c4; + border-radius: 12px; cursor: pointer; transition: border-color .15s; } + .orientation-opt--active { border-color: #c97c3a; } + .orientation-opt__diagram { width: 48px; height: 48px; color: #8a7060; } + .orientation-opt .opt-body { stroke: #8a7060; fill: #f5ede0; } + .orientation-opt--active .opt-body { stroke: #c97c3a; fill: rgba(201,124,58,.12); } + .orientation-opt .opt-ribbon { fill: #8a7060; } + .orientation-opt--active .opt-ribbon { fill: #c97c3a; } + .orientation-opt__label { font-size: .75rem; font-weight: 700; color: #3a2e22; } + .orientation-opt__sub { font-size: .6875rem; color: #8a7060; text-align: center; line-height: 1.2; } .field-error { margin-top: .375rem; font-size: .8125rem; color: #c0392b; } .hint { margin-top: .375rem; font-size: .8125rem; color: #8a7060; } .btn { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 44px; @@ -45,11 +54,38 @@