.aqua .desktop{transform:translate(var(--window-x,0px),var(--window-y,0px))}
.aqua .titlebar{cursor:grab;touch-action:none;user-select:none}
.aqua .window-dragging .titlebar{cursor:grabbing}
.aqua .window-dragging{transition:none}
.traffic-lights button{padding:0;cursor:pointer;position:relative;display:grid;place-items:center;font:12px/1 Arial,sans-serif;color:#40251d}
.traffic-lights button::before{content:'';position:absolute;inset:-5px}
.traffic-lights button span{opacity:0;pointer-events:none}
.traffic-lights:hover button span,.traffic-lights:focus-within button span{opacity:1}
.traffic-lights button:focus-visible{outline:2px solid #17477d;outline-offset:4px}
.aqua .desktop[hidden],.window-reopen[hidden]{display:none!important}
.window-reopen{position:fixed;z-index:20;bottom:22px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:12px 22px;border:1px solid #859fb7;border-radius:18px;background:linear-gradient(#fff,#e3f1fd 46%,#b8d9f2 50%,#f2fbff);color:#2a4e70;box-shadow:0 4px 16px #193d5f44;font:14px Tahoma,sans-serif;cursor:pointer}
.window-reopen img{width:26px;height:24px;image-rendering:pixelated}
.aqua .desktop.window-maximized,.aqua.wide .desktop.window-maximized{position:fixed;z-index:10;inset:72px 12px 12px;width:auto;max-width:none;margin:0;transform:none;transition:none}
.aqua .window-maximized .window{height:100%;display:flex;flex-direction:column}
.aqua .window-maximized .titlebar,.aqua .window-maximized nav,.aqua .window-maximized .statusbar{flex-shrink:0}
.aqua .window-maximized main{flex:1;min-height:0;overflow:auto}
html[data-mode=dark] .window-reopen{background:linear-gradient(#778da2,#4e6981 46%,#35516a 50%,#67859e);color:#f0f7ff;border-color:#92a7ba}
@media(max-width:600px){.aqua .desktop.window-maximized,.aqua.wide .desktop.window-maximized{inset:78px 6px 6px}.traffic-lights{gap:11px}}
.window-effect{position:fixed;inset:0;z-index:1000;pointer-events:none;overflow:hidden}
.window-effect.red::before{content:'';position:absolute;left:var(--origin-x);top:var(--origin-y);width:28px;height:28px;border:2px solid #f4534b;border-radius:50%;background:#ff514b25;box-shadow:0 0 25px #ff3f3f77;animation:red-pulse 750ms ease-out forwards}
@keyframes red-pulse{from{transform:translate(-50%,-50%) scale(.5);opacity:1}to{transform:translate(-50%,-50%) scale(8);opacity:0}}
.red-shake{transform-origin:top left;animation:red-shake 750ms ease-out}
@keyframes red-shake{0%,100%{translate:0}20%{translate:-4px 0}40%{translate:4px 0}60%{translate:-2px 0}80%{translate:2px 0}}
.window-effect.yellow::before{content:'';position:absolute;left:var(--origin-x);top:var(--origin-y);height:2px;width:100vw;transform-origin:left center;background:#fff49a;box-shadow:0 0 6px 2px #ffda23,0 0 16px #fce648;animation:yellow-laser 500ms ease-out forwards}
@keyframes yellow-laser{0%{scale:0 1;opacity:1}35%{scale:1 1;opacity:1}100%{scale:1 1;opacity:0}}
.window-effect.green span{position:absolute;left:var(--origin-x);top:var(--origin-y);font:52px/1 Arial,sans-serif;color:#43c862;text-shadow:0 2px 2px #4d502a33;animation:smile-rain 1100ms ease-in var(--delay) both}
@keyframes smile-rain{0%{transform:translate(-50%,-50%) scale(.5);opacity:0}15%{opacity:1}100%{transform:translate(var(--spread),290px) rotate(var(--tilt));opacity:0}}
.vote button:disabled{opacity:.55;cursor:wait}
@media(prefers-reduced-motion:reduce){.window-effect{display:none}.red-shake{animation:none}}

/* Keep identical window dimensions across routes; scroll content inside. */
.aqua .desktop,.aqua.wide .desktop{width:calc(100% - 40px);max-width:664px;height:clamp(320px,calc(100dvh - 140px),760px);transition:none}
.aqua .desktop .window{height:100%;display:flex;flex-direction:column}
.aqua .desktop .titlebar,.aqua .desktop nav,.aqua .desktop .statusbar{flex-shrink:0}
.aqua .desktop main{flex:1;min-height:0;overflow:auto;scrollbar-gutter:stable}
@media(max-width:600px){.aqua .desktop,.aqua.wide .desktop{width:calc(100% - 24px);height:clamp(300px,calc(100dvh - 130px),760px)}}

/* Restore route-based width animation; traffic lights remain effects only. */
.aqua .desktop{max-width:664px;transition:max-width 420ms cubic-bezier(.22,.68,.22,1)}
.aqua.wide .desktop{max-width:830px;transition:max-width 420ms cubic-bezier(.22,.68,.22,1)}
.aqua .window-dragging{transition:none}
@media(prefers-reduced-motion:reduce){.aqua .desktop,.aqua.wide .desktop{transition:none}}
html[data-mode=dark] .event summary{color:#adc0db}

.vote-scope{padding:10px 24px;margin:0;border-bottom:1px solid #cad2d8}
