.desk-object-map{position:absolute;inset:0;width:100%;height:100%;z-index:30;pointer-events:none;overflow:visible}
.desk-object-hit{pointer-events:all;cursor:pointer;fill:transparent;stroke:transparent;stroke-width:1;vector-effect:non-scaling-stroke;transition:fill .2s,stroke .2s}
.desk-object-hit:hover,.desk-object-hit:focus-visible{fill:transparent;stroke:rgba(255,228,155,.3);outline:none}
.desk-object-dialog{--object-border:#60605d;position:fixed;inset:0;margin:auto;max-height:calc(100vh - 48px);overflow-y:auto;padding:1px;border:0;border-radius:16px;isolation:isolate;width:360px;max-width:calc(100vw - 48px);background:var(--object-border);color:#2f2f2f;box-shadow:0 24px 90px #0004;overflow:hidden;font-family:'Geist Mono',monospace}
.desk-object-dialog::backdrop{background:rgba(0,0,0,.7);backdrop-filter:none;-webkit-backdrop-filter:none}
body.dark-mode .desk-object-dialog{--object-border:#27292e;color:#e6e5de}
.desk-object-stage{--stage-ink:#fff;--stage-control:#202820;--stage-control-hover:#354235;--stage-dismiss:rgb(255 255 255 / 12%);--stage-dismiss-hover:rgb(255 255 255 / 22%);height:300px;width:100%;position:relative;border-radius:15px 15px 0 0;overflow:hidden;color:var(--stage-ink);background:radial-gradient(ellipse at 50% 40%,color-mix(in srgb,var(--object-color,#aaa) 62%,#89918d),color-mix(in srgb,color-mix(in srgb,var(--object-color,#aaa) 42%,#10161b) 85%,black));border-bottom:1px solid #0003}
.desk-object-stage canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}.desk-object-stage canvas:active{cursor:grabbing}
.desk-object-close{position:absolute;right:12px;top:12px;z-index:2;width:32px;height:32px;border:0;border-radius:50%;background:var(--stage-dismiss);color:#fff;display:grid;place-items:center;padding:0;cursor:pointer;transition:background-color .2s,color .2s}.desk-object-close:hover{background:var(--stage-dismiss-hover)}
.desk-object-close:focus-visible{outline:2px solid white;outline-offset:3px;box-shadow:0 0 0 5px #202820}
.desk-object-copy{padding:22px 24px 25px;background:#f6f5f0;border-radius:0 0 15px 15px}
body.dark-mode .desk-object-copy{background:#0e1116}.desk-object-copy small{font-size:10px;letter-spacing:.12em;color:#888;text-transform:uppercase}.desk-object-copy h2{font-size:18px;font-weight:500;margin:15px 0 6px}.desk-object-copy p{font-size:12px;line-height:1.7;opacity:.75;margin:0 0 17px}.desk-object-copy a{font-size:12px;color:inherit;text-underline-offset:4px}.desk-object-copy a:hover{color:#427cde}
.desk-object-status,.desk-object-hint{position:absolute;bottom:14px;left:0;right:0;text-align:center;font-size:10px;opacity:1;pointer-events:none;color:var(--stage-ink)}.desk-object-status{top:45%;bottom:auto}
@media(max-width:768px),(hover:none),(pointer:coarse){.desk-object-map{display:none}}

.desk-object-glow{pointer-events:none;fill:#ffe499;filter:url(#lamp-halo);opacity:0;transition:opacity .25s ease}
.desk-object-hit:hover~.desk-object-glow,.desk-object-hit:focus-visible~.desk-object-glow{opacity:.85}
.desk-object-copy a{text-decoration:none;display:inline-flex;align-items:center;gap:7px;transition:color .2s ease}
.object-link-label{text-decoration:underline;text-underline-offset:4px}
.object-link-arrow{display:inline-block;text-decoration:none}
.desk-object-copy a:hover .object-link-arrow,.desk-object-copy a:focus-visible .object-link-arrow{animation:object-link-bounce .8s ease-in-out infinite}
@keyframes object-link-bounce{0%,100%{transform:translate(0,0)}50%{transform:translate(3px,-3px)}}
@media(prefers-reduced-motion:reduce){.desk-object-copy a:hover .object-link-arrow,.desk-object-copy a:focus-visible .object-link-arrow{animation:none}}
.desk-object-copy a{color:#62625e}.desk-object-copy a:hover,.desk-object-copy a:focus-visible{color:#000}
body.dark-mode .desk-object-copy a{color:#999}body.dark-mode .desk-object-copy a:hover,body.dark-mode .desk-object-copy a:focus-visible{color:#fff}

.desk-object-close .material-symbols-outlined{display:block;font-size:18px;line-height:1;width:18px;height:18px;text-shadow:none;filter:none}

.object-link-arrow>span{display:inline-block;transform:rotate(-135deg);transform-origin:center}


.desk-object-stage canvas[hidden],.desk-object-stage.is-loading canvas,.desk-object-stage.is-loading .desk-object-hint{display:none}

.desk-object-hint,.desk-object-status{left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:calc(100% - 32px);padding:5px 9px;border-radius:5px;background:var(--stage-control);line-height:1.4}
.desk-object-hint{padding:0;border-radius:0;background:transparent;color:rgb(255 255 255 / 35%)}

/* Match the changelog/theme tooltip surface and compact typography. */
.desk-object-tooltip{position:fixed;z-index:1001;pointer-events:none;padding:6px 8px;border-radius:4px;--tooltip-fill:#000;--tooltip-shadow:0 0 4px -1px #0003,0 0 5px #00000024,0 0 10px #0000001f;color:#fff;font-family:'Geist Mono',monospace;font-size:11px;font-weight:500;line-height:normal;white-space:nowrap;isolation:isolate}
.desk-object-tooltip[hidden]{display:none}
body.dark-mode .desk-object-tooltip{--tooltip-fill:#fff;color:#000;--tooltip-shadow:0 0 4px -1px #fff3,0 0 5px #ffffff24,0 0 10px #ffffff1f}
@media(max-width:768px),(hover:none),(pointer:coarse){.desk-object-tooltip{display:none}}

.desk-object-tooltip-emoji{display:inline-block;animation:object-emoji-arrive 500ms cubic-bezier(.16,1,.3,1) both;transform-origin:center}
@keyframes object-emoji-arrive{from{opacity:0;transform:rotate(-90deg)}to{opacity:1;transform:rotate(0deg)}}
@media(prefers-reduced-motion:reduce){.desk-object-tooltip-emoji{animation:none}}

/* One SVG silhouette joins the rounded pointer and shell; emoji stays unclipped. */
.desk-object-tooltip::after{content:"";position:absolute;top:0;bottom:0;left:-4px;width:calc(100% + 4px);z-index:-1;background:var(--tooltip-fill);mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 28' preserveAspectRatio='none'%3E%3Cpath d='M8 0H32Q36 0 36 4V24Q36 28 32 28H8Q4 28 4 24V18L.6 14.8Q-.2 14 .6 13.2L4 10V4Q4 0 8 0Z'/%3E%3C/svg%3E") 0 0/100% 100% no-repeat;animation:object-tooltip-open 300ms cubic-bezier(.22,1,.36,1) both}
@keyframes object-tooltip-open{from{width:0;opacity:0}to{width:calc(100% + 4px);opacity:1}}
@media(prefers-reduced-motion:reduce){.desk-object-tooltip::after{animation:none}}

/* Gentle shell wobble alongside the original emoji quarter-turn. */
.desk-object-tooltip{transform-origin:left center;animation:object-tooltip-wobble 500ms ease-out both}
@keyframes object-tooltip-wobble{0%{transform:rotate(0)}14%{transform:rotate(-6deg)}32%{transform:rotate(4deg)}50%{transform:rotate(-2.5deg)}68%{transform:rotate(1.5deg)}84%{transform:rotate(-.7deg)}100%{transform:rotate(0)}}
@media(prefers-reduced-motion:reduce){.desk-object-tooltip,.desk-object-tooltip-emoji{animation:none}}

body.dark-mode .desk-object-tooltip-emoji{filter:drop-shadow(0 1px 1px rgb(0 0 0 / .34))}
