/* The same centered, thumb-accessible signal anchors Review and Share. */
.preview-view .ready-dock.signal-dock,.spot-detail-view .signal-dock{--lens:78px;--off:27px;--signal-height:180px;position:absolute;inset:auto 0 0;z-index:6;box-sizing:border-box;min-height:208px;display:grid;grid-template-columns:minmax(0,1fr) 110px minmax(0,1fr);gap:12px;align-items:center;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:#071d2b url('./sparky-wallpaper.svg') center 65%/cover;border-top:1px solid #47616d;color:#fff;box-shadow:0 -8px 28px #04141e22}
.signal-dock .signal-copy{display:flex!important;flex-direction:column;gap:7px;min-width:0;overflow-wrap:anywhere}.signal-dock .signal-copy strong{font-size:13px;line-height:1.4;color:white}.signal-dock .signal-copy small{font-size:11px;line-height:1.5;color:#c1d2dc}.signal-dock .signal-copy .signal-step{font-size:9px;font-weight:700;letter-spacing:1.2px;color:#ebc46f}.signal-dock .signal-save{align-self:center;justify-self:start;max-width:100%;text-align:left}.signal-dock .signal-save button{color:#e2edf3;background:#ffffff0b;border:1px solid #627581;border-radius:10px;padding:11px 9px;min-height:44px;font:600 11px/1.4 inherit}
.signal-dock .action-signal{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:110px;height:var(--signal-height);border-radius:29px;padding:12px;background:linear-gradient(120deg,#34424c,#111e27 38%,#071018);border:1px solid #8a9a9f;box-shadow:inset 0 0 0 5px #0b151e,inset 0 0 0 7px #3b4b54,0 8px 20px #0009}
.action-signal .signal-off{flex:0 0 var(--off);width:var(--off);height:var(--off);border-radius:50%;border:3px solid #020b10;box-shadow:0 0 0 1px #44555d,inset 0 2px 6px #000;background:radial-gradient(circle,#ffffff10 1px,transparent 1.5px) 0 0/4px 4px,#17252c}.action-signal .off-red{background-color:#2d1419}.action-signal .off-yellow{background-color:#2c2719}.action-signal .off-green{background-color:#112b25}
.signal-dock .action-signal button.signal-primary{box-sizing:border-box;position:relative;flex:0 0 var(--lens);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:3px;width:var(--lens);height:var(--lens);min-height:0;margin:0;padding:7px;border:4px solid #071015;border-radius:50%;text-align:center;color:white;font:800 11px/1.15 'DM Sans',sans-serif;letter-spacing:.3px;background:radial-gradient(circle,#ffffff38 1px,transparent 1.5px) 0 0/4px 4px,radial-gradient(circle at 38% 28%,#ffe599,#e5a310 70%);box-shadow:0 0 0 2px #dfb65b,0 0 22px #ffc23566,inset 0 2px 8px #fff7;cursor:pointer;transition:filter .25s,box-shadow .25s;opacity:1}
.signal-dock .signal-primary svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.signal-dock .signal-primary:focus-visible{outline:3px solid white;outline-offset:5px}.signal-dock .signal-primary:active:not(:disabled){filter:brightness(1.2)}
.review-signal .signal-primary{animation:review-lens-breathe 3.2s ease-in-out infinite}.signal-dock .action-signal button.signal-primary:disabled{cursor:default;filter:saturate(.5) brightness(.65);animation:none}.signal-dock .publish-signal button.signal-primary{background:radial-gradient(circle,#ffffff40 1px,transparent 1.5px) 0 0/4px 4px,radial-gradient(circle at 38% 28%,#7cf9b2,#13ab6c 70%);box-shadow:0 0 0 2px #4fbd8b,0 0 24px #2fe49966,inset 0 2px 8px #fff7}
.signal-dock[data-state=busy] .publish-signal .signal-primary,.signal-dock[data-state=pending] .publish-signal .signal-primary{filter:none;animation:review-lens-breathe 1.8s ease-in-out infinite}.signal-dock[data-state=complete] .publish-signal .signal-primary{filter:none}.signal-dock .signal-word-wait,.signal-dock .signal-word-live{display:none}.signal-dock[data-state=busy] .signal-word-publish,.signal-dock[data-state=pending] .signal-word-publish,.signal-dock[data-state=complete] .signal-word-publish{display:none}.signal-dock[data-state=busy] .signal-word-wait,.signal-dock[data-state=pending] .signal-word-wait,.signal-dock[data-state=complete] .signal-word-live{display:block}
.spot-detail-view #detailSignalStage{display:none}.spot-detail-view .spot-detail-scroll{padding-bottom:calc(242px + env(safe-area-inset-bottom))}.preview-view>.preview-scroll{padding-bottom:calc(242px + env(safe-area-inset-bottom))}.preview-view .save-status{bottom:calc(222px + env(safe-area-inset-bottom))}.spot-detail-view:not(:has(#directPublishPanel:not(.hidden))) .signal-dock{display:none}
.preview-view .ready-dock.signal-dock>.signal-save{display:block;grid-template-columns:none;width:100%}.signal-dock .signal-save button{width:100%;max-width:110px}
@keyframes review-lens-breathe{0%,100%{filter:brightness(.92)}50%{filter:brightness(1.12)}}
@media(max-height:650px){.preview-view .ready-dock.signal-dock,.spot-detail-view .signal-dock{--lens:62px;--off:21px;--signal-height:146px;min-height:166px;padding-top:7px;padding-bottom:calc(7px + env(safe-area-inset-bottom))}.signal-dock .action-signal{width:94px;border-radius:24px;justify-self:center;gap:6px}.spot-detail-view .spot-detail-scroll,.preview-view>.preview-scroll{padding-bottom:calc(198px + env(safe-area-inset-bottom))}.preview-view .save-status{bottom:calc(180px + env(safe-area-inset-bottom))}}
@media(prefers-reduced-motion:reduce){.signal-dock .signal-primary{animation:none!important;transition:none!important}}


/* Light expresses workflow state, independently of whether its button is clickable. */
.signal-dock[data-state=complete] .publish-signal button.signal-primary:disabled{filter:none!important;opacity:1!important;color:#fff;background:radial-gradient(circle,#ffffff60 1px,transparent 1.5px) 0 0/4px 4px,radial-gradient(circle at 38% 28%,#9effc7,#12c675 70%);box-shadow:0 0 0 2px #63e5a5,0 0 32px #2fe499aa,inset 0 2px 8px #fff9}
.preview-view .signal-dock[data-state=working] .review-signal button.signal-primary:disabled,.signal-dock[data-state=busy] .publish-signal button.signal-primary:disabled,.signal-dock[data-state=pending] .publish-signal button.signal-primary:disabled{filter:none!important;opacity:1!important;background:radial-gradient(circle,#ffffff55 1px,transparent 1.5px) 0 0/4px 4px,radial-gradient(circle at 38% 28%,#ffeaa0,#edb11d 70%);box-shadow:0 0 0 2px #f2c663,0 0 26px #ffd14599;animation:work-yellow-pulse 1.6s ease-in-out infinite}
.review-work-status{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:9px 18px;background:#122d39;color:#fff;border-bottom:1px solid #b59c5266;z-index:7}.review-work-status[hidden]{display:none!important}.review-work-status strong{display:block;font-size:14px}.review-work-status small{display:block;font-size:11px;color:#c5d7df;margin-top:3px}.work-signal{display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 7px;background:#07131c;border-radius:12px;border:1px solid #74818a}.work-signal i{width:6px;height:6px;background:#3f272a;border-radius:50%}.work-signal i:nth-child(2){width:18px;height:18px;background:radial-gradient(circle at 35% 30%,#fff4b2,#ffca2f 55%,#b87d08);box-shadow:0 0 13px #ffce39aa;animation:work-yellow-pulse 1.6s ease-in-out infinite}.work-signal i:last-child{background:#153c30}.preview-view.is-working #aiResult{display:none}
@keyframes work-yellow-pulse{0%,100%{filter:brightness(.85)}50%{filter:brightness(1.25)}}
@media(prefers-reduced-motion:reduce){.work-signal i:nth-child(2),.preview-view .signal-dock[data-state=working] .review-signal button.signal-primary:disabled,.signal-dock[data-state=busy] .publish-signal button.signal-primary:disabled,.signal-dock[data-state=pending] .publish-signal button.signal-primary:disabled{animation:none!important}}

/* Collapse the large dock while retaining its current action and work state. */
.signal-dock .signal-collapse{position:absolute;right:8px;top:5px;z-index:2;display:grid;place-items:center;width:40px;min-height:32px;border:1px solid #90abb055;border-radius:9px;background:#071d2bbf;color:white;font-size:24px;line-height:1;cursor:pointer}
.signal-dock .compact-action-light,.signal-dock .compact-expand{display:none}
.preview-view .ready-dock.signal-dock[data-collapsed=true],.spot-detail-view .signal-dock[data-collapsed=true]{inset:auto 14px calc(14px + env(safe-area-inset-bottom)) auto;display:block;width:80px;height:80px;min-height:0;padding:0;background:none;border:0;box-shadow:none;pointer-events:none}
.signal-dock[data-collapsed=true]>:not(.compact-action-light):not(.compact-expand){display:none!important}
.signal-dock[data-collapsed=true] .compact-action-light{display:flex;position:relative;box-sizing:border-box;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:80px;height:80px;min-height:80px;border:4px solid #102330;border-radius:50%;padding:8px;color:white;background:radial-gradient(circle,#ffffff44 1px,transparent 1.5px) 0 0/4px 4px,radial-gradient(circle at 35% 25%,#ffe798,#e9ad16 75%);box-shadow:0 0 0 2px #dcb65e,0 4px 16px #03121a99,0 0 20px #f6bf3633;pointer-events:auto;touch-action:manipulation;font:800 10px/1.2 'DM Sans',sans-serif;cursor:pointer;opacity:1}
.signal-dock[data-collapsed=true] .compact-action-light[data-color=green]{background:radial-gradient(circle,#ffffff44 1px,transparent 1.5px) 0 0/4px 4px,radial-gradient(circle at 35% 25%,#8cffbb,#13b972 75%);box-shadow:0 0 0 2px #56cd96,0 4px 16px #03121a99,0 0 22px #23d68955}
.signal-dock .compact-action-light svg{width:25px;height:25px;flex:none}.signal-dock .compact-action-light[data-working=true]{animation:work-yellow-pulse 1.6s ease-in-out infinite}
.signal-dock[data-collapsed=true] .compact-expand{display:grid;place-items:center;position:absolute;right:-3px;top:-10px;width:28px;min-height:28px;padding:0;border:1px solid #849da8;border-radius:50%;background:#102b3a;color:white;font-size:18px;pointer-events:auto;cursor:pointer}
.signal-dock .compact-action-light:focus-visible,.signal-dock .compact-expand:focus-visible,.signal-dock .signal-collapse:focus-visible{outline:3px solid #fff;outline-offset:4px}
.preview-view:has(>.signal-dock[data-collapsed=true])>.preview-scroll,.spot-detail-view:has(>.signal-dock[data-collapsed=true]) .spot-detail-scroll{padding-bottom:calc(120px + env(safe-area-inset-bottom))}.preview-view:has(>.signal-dock[data-collapsed=true]) .save-status{bottom:calc(104px + env(safe-area-inset-bottom))}
@media(prefers-reduced-motion:reduce){.signal-dock .compact-action-light[data-working=true]{animation:none}}
