.desk-idle{position:absolute;pointer-events:none;z-index:1;overflow:hidden}
.desk-idle[hidden]{display:none!important}
.desk-detail{position:absolute;display:block;pointer-events:none;transform:translate(-50%,-50%);opacity:0;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
.desk-detail.steam{animation-name:desk-steam;mask-image:linear-gradient(transparent,#000 18%,#000 82%,transparent)}
.desk-detail.steam::before,.desk-detail.steam::after{content:'';position:absolute;width:65%;height:60%;border:2px solid transparent;border-radius:50%}
.desk-detail.steam::before{left:0;top:0;border-left-color:#fff4e4}
.desk-detail.steam::after{right:0;bottom:0;border-right-color:#fff4e4}
.desk-detail.glint{animation-name:desk-glint;background:radial-gradient(ellipse,#fffbe5cc,transparent 65%)}
.desk-detail.glint::after{content:'';position:absolute;inset:20%;background:#fffbe5;clip-path:polygon(50% 0,59% 41%,100% 50%,59% 59%,50% 100%,41% 59%,0 50%,41% 41%)}
.desk-detail.speaker{animation-name:desk-speaker;border:2px solid #fff8d7;border-radius:50%;box-shadow:0 0 3px #fff5b455}
.desk-detail.glass{animation-name:desk-glass;background:linear-gradient(transparent,#fffef5,transparent);border-radius:50%}
.desk-idle[hidden] .desk-detail,.desk-idle-paused .desk-detail{animation-play-state:paused}
@keyframes desk-steam{0%{opacity:0;transform:translate(-50%,-20%)}20%{opacity:.65}65%{opacity:.45}100%{opacity:0;transform:translate(-25%,-85%)}}
@keyframes desk-glint{0%,70%,100%{opacity:0;transform:translate(-50%,-50%) scale(.65)}25%,40%{opacity:.9;transform:translate(-50%,-50%) scale(1)}}
@keyframes desk-speaker{0%,100%{opacity:.12}25%,60%{opacity:.7}40%,80%{opacity:.18}}
@keyframes desk-glass{0%,100%{opacity:.08;transform:translate(-50%,-50%)}45%{opacity:.7;transform:translate(30%,-50%)}75%{opacity:.25}}
@media(prefers-reduced-motion:reduce){.desk-idle{display:none!important}.desk-detail{animation-play-state:paused!important}}

/* One in four lamps has a brief voltage dip; fixtures never move or go dark. */
.foreground-lamp.lamp-flicker{animation-name:office-lamp-flicker;animation-direction:normal;animation-timing-function:linear;animation-iteration-count:infinite}
@keyframes office-lamp-flicker{0%,59.99%{filter:brightness(1)}60%,60.89%{filter:brightness(.08)}60.9%,62.19%{filter:brightness(1)}62.2%,62.79%{filter:brightness(.08)}62.8%,100%{filter:brightness(1)}}
body:has(dialog[open]) .lamp-flicker,body:has(#caught-scene:not([hidden])) .lamp-flicker{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.foreground-lamp.lamp-flicker{animation:none;filter:none}}
/* Two tiny registered clean-plate windows; the original face and desk stay intact. */
.mika-clean-notes{position:absolute;pointer-events:none;z-index:1;background-size:100% 100%;mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-size:4.8% 7.4%,4.5% 7.1%;mask-position:72.269% 31.318%,89.005% 34.338%;mask-repeat:no-repeat}
.workstation.mika-notes-cleared{mask-image:linear-gradient(#000 0 0),linear-gradient(#000 0 0),linear-gradient(#000 0 0);mask-size:100% 100%,4.8% 7.4%,4.5% 7.1%;mask-position:0 0,72.269% 31.318%,89.005% 34.338%;mask-repeat:no-repeat;mask-composite:exclude}
.desk-idle.notes-loading .note{visibility:hidden}
.desk-detail.note{animation-name:desk-music-note;filter:drop-shadow(0 1px 1px #0008)}
.desk-detail.note svg{display:block;width:100%;height:100%;overflow:visible}
@keyframes desk-music-note{0%{opacity:0;transform:translate(-50%,-15%) rotate(-8deg)}20%,55%{opacity:1}100%{opacity:0;transform:translate(-25%,-115%) rotate(8deg)}}
/* Harold: overlapping wisps start at the fixed cigarette tip. */
.desk-detail.smoke{animation-name:cigarette-smoke;transform-origin:50% 100%;mask-image:linear-gradient(transparent,#000 20%,#000 90%,transparent)}
.desk-detail.smoke svg{display:block;width:100%;height:100%;overflow:visible}
.desk-detail.ember{animation-name:cigarette-ember;border-radius:50%;background:radial-gradient(#fff5b0,#ff9638 38%,#ff5b1520 65%,transparent 75%)}
@keyframes cigarette-smoke{0%{opacity:0;transform:translate(-50%,-45%) scale(.6,.55)}22%{opacity:.7}60%{opacity:.4}100%{opacity:0;transform:translate(-20%,-83%) scale(1.4,1.15)}}
@keyframes cigarette-ember{0%,100%{opacity:.2}22%,34%{opacity:.95}65%{opacity:.3}}
