/* Desktop additions share the OS palette, square controls, and native cursors. */
.desktop-icons.icons-free{inset:0!important;width:auto!important;display:block!important;max-height:none!important;overflow:visible!important;pointer-events:none;}
.desktop-icons.icons-free .desktop-icon{position:absolute!important;left:0!important;top:0!important;right:auto!important;bottom:auto!important;width:92px!important;min-height:80px;margin:0!important;pointer-events:auto;touch-action:none;user-select:none;}
.desktop-icon img{-webkit-user-drag:none;}
.desktop-icons.icons-free .icon-dragging{z-index:2;opacity:.85;cursor:move!important;}
.desktop-icons.icons-free .desktop-icon:focus-visible{outline:1px dotted white;outline-offset:-2px;}
.desktop-arrangement{border:1px solid #777;padding:12px;margin:12px 0;}
.desktop-arrangement legend{padding:0 5px;}
.desktop-arrangement label{display:flex;align-items:center;gap:8px;margin:10px 0;}
.desktop-arrangement input{width:16px;height:16px;}
.desktop-arrangement p{font-size:12px!important;}
/* Local layer scale: wallpaper 0, shortcuts 2, character 3, windows 30–8000,
   contextual companion 9000, existing menus 99998+, taskbar outside desktop. */
.nil-companion{position:absolute;inset:0;z-index:3;pointer-events:none;--nil-size:96px;}
.nil-companion.nil-guiding{z-index:9000;}
.nil-character{position:absolute;left:0;top:0;width:var(--nil-size);height:var(--nil-size);padding:0;border:0;background:transparent;pointer-events:auto;touch-action:none;user-select:none;}
.nil-character:focus-visible{outline:2px dotted #fff;outline-offset:0;}
.nil-sprite,.nil-task-sprite{display:block;width:100%;height:100%;background-image:url('assets/nilbot/nil-sheet.png');background-size:400% 300%;background-repeat:no-repeat;image-rendering:pixelated;image-rendering:crisp-edges;}
.nil-sprite{background-position:0 0;transform-origin:50% 100%;}
.nil-companion[data-state="idle"] .nil-sprite{animation:nil-idle 8s steps(1,end) infinite;}
.nil-companion[data-state="talking"] .nil-sprite{background-position:66.6667% 0;animation:nil-talk 1.2s steps(1,end) 2;}
.nil-companion[data-state="happy"] .nil-sprite{background-position:100% 0;}
.nil-companion[data-state="pointing"] .nil-sprite{background-position:0 50%;}
.nil-companion[data-state="surprised"] .nil-sprite{background-position:33.3333% 50%;}
.nil-companion[data-state="dragged"] .nil-sprite{background-position:66.6667% 50%;}
.nil-companion[data-state="annoyed"] .nil-sprite{background-position:100% 50%;}
.nil-companion[data-state="angry"] .nil-sprite{background-position:0 100%;animation:nil-shake .25s steps(2,end) infinite;}
.nil-companion[data-state="landing"] .nil-sprite{background-position:33.3333% 100%;}
.nil-companion[data-state="walking"] .nil-sprite{background-position:66.6667% 100%;animation:nil-walk .4s steps(1,end) infinite;}
.nil-dialogue{position:absolute;left:0;top:0;width:272px;max-width:calc(100% - 12px);max-height:calc(100% - 12px);overflow:visible;background:var(--brand-paper,#eee9da);border:2px solid #161616;box-shadow:2px 2px 0 #fff;color:#181818;font-family:var(--font-mono),monospace;font-size:13px;line-height:1.45;padding:8px;pointer-events:auto;}
.nil-dialogue::after{content:'';position:absolute;left:calc(var(--nil-tail,50%) - 5px);bottom:-8px;width:10px;height:8px;background:var(--brand-paper,#eee9da);clip-path:polygon(0 0,100% 0,50% 100%);}
.nil-dialogue[data-below="true"]::after{bottom:auto;top:-8px;transform:rotate(180deg);}
.nil-dialogue-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.nil-dialogue-heading strong{font-size:12px;text-transform:uppercase;letter-spacing:.1em;}
.nil-dialogue-heading button{min-width:28px;min-height:28px;border:1px solid #888;background:#d4d0c8;font-size:18px;line-height:1;}
.nil-dialogue-text{margin:6px 0 10px;}
.nil-dialogue-options{display:flex;gap:6px;flex-wrap:wrap;max-height:min(240px,35dvh);overflow:auto;}
.nil-dialogue-options .classic-button{font-family:inherit;font-size:12px;min-height:30px;padding:4px 7px;}
.nil-taskbar{flex:0 0 32px;width:32px;height:32px;padding:0!important;}
.nil-task-sprite{background-position:0 0;}
.nil-paused .nil-sprite{animation-play-state:paused!important;}
@keyframes nil-idle{0%,92%,100%{background-position:0 0}94%,98%{background-position:33.3333% 0}}
@keyframes nil-talk{0%,100%{background-position:66.6667% 0}50%{background-position:0 0}}
@keyframes nil-shake{0%,100%{transform:translateX(0)}33%{transform:translateX(-1px)}66%{transform:translateX(1px)}}
@keyframes nil-walk{0%{background-position:66.6667% 100%}50%{background-position:100% 100%}}
@media(max-width:900px),(pointer:coarse){
  .nil-companion{--nil-size:64px;}
  .nil-dialogue{width:250px;}
  .nil-dialogue-options .classic-button{min-height:44px;}
  .nil-dialogue-heading button{min-width:44px;min-height:44px;}
  .nil-taskbar{min-width:44px;height:38px;}
}
@media(prefers-reduced-motion:reduce){.nil-sprite{animation:none!important;transform:none!important;}}
@media print{.nil-companion,.nil-taskbar{display:none!important;}}

.nil-dialogue-content{max-height:calc(var(--nil-safe-height,100dvh) - 36px);overflow:auto;}
