/* ---------- windows ---------- */
#windows{position:absolute;inset:0;z-index:10;pointer-events:none}
.win{position:absolute;pointer-events:auto;will-change:transform,opacity;transform-origin:50% 50%;outline:none}
.win[hidden]{display:none}
.win-body{position:absolute;inset:0;display:flex;flex-direction:column;border-radius:16px;overflow:hidden;background:var(--surface);
  box-shadow:var(--shadow-win-dim),0 0 0 1px var(--line-2);transition:border-radius .5s var(--spring),box-shadow .4s}
.win.active .win-body{box-shadow:var(--shadow-win),0 0 0 1px var(--line-2)}
.win.max .win-body{border-radius:0}
.win-bar{position:relative;flex:none;height:44px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 14px;
  background:color-mix(in srgb,var(--surface) 78%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--line);
  user-select:none;touch-action:none;z-index:3;transition:opacity .3s}
.win:not(.active) .win-bar{opacity:.72}
.win-ctl{grid-column:3;justify-self:end;display:flex;gap:8px;align-items:center}
.pip{position:relative;width:13px;height:13px;border-radius:50%;display:grid;place-items:center;color:transparent;box-shadow:inset 0 0 0 .5px rgba(0,0,0,.28);transition:transform .3s var(--spring),filter .15s}
.pip::before{content:"";position:absolute;inset:-7px}
.pip svg{width:9px;height:9px}
.pip-close{background:#ff5f57}.pip-min{background:#febc2e}.pip-max{background:#28c840}
.win-ctl:hover .pip,.pip:focus-visible{color:rgba(40,20,10,.72)}
.pip:hover{transform:scale(1.14)}
.pip:active{filter:brightness(.82)}
.win:not(.active) .pip{background:var(--line-2);box-shadow:none}
.win:not(.active) .win-ctl:hover .pip-close{background:#ff5f57}.win:not(.active) .win-ctl:hover .pip-min{background:#febc2e}.win:not(.active) .win-ctl:hover .pip-max{background:#28c840}.win-title{grid-column:2;display:flex;align-items:baseline;gap:10px;font-family:var(--f-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}
.win-title b{font-weight:500}
.win-title i{font-style:normal;color:var(--ink-3)}

.win-back{display:none}
.win-veil{position:absolute;inset:0;z-index:6;pointer-events:none;opacity:0;display:grid;place-items:center;background:var(--veil,#2c303a)}
.win-veil svg{width:min(28%,120px);height:auto;aspect-ratio:1}
.win-content{position:relative;flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;container-type:inline-size;container-name:win;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
.win.max .win-content{padding-bottom:calc(var(--dock-reserve) - 90px)}
.rz{position:absolute;z-index:8;touch-action:none}
.rz[data-d="n"]{top:-4px;left:14px;right:14px;height:9px;cursor:ns-resize}
.rz[data-d="s"]{bottom:-4px;left:14px;right:14px;height:9px;cursor:ns-resize}
.rz[data-d="w"]{left:-4px;top:14px;bottom:14px;width:9px;cursor:ew-resize}
.rz[data-d="e"]{right:-4px;top:14px;bottom:14px;width:9px;cursor:ew-resize}
.rz[data-d="nw"]{left:-4px;top:-4px;width:16px;height:16px;cursor:nwse-resize}
.rz[data-d="se"]{right:-4px;bottom:-4px;width:16px;height:16px;cursor:nwse-resize}
.rz[data-d="ne"]{right:-4px;top:-4px;width:16px;height:16px;cursor:nesw-resize}
.rz[data-d="sw"]{left:-4px;bottom:-4px;width:16px;height:16px;cursor:nesw-resize}
.win.max .rz{display:none}
.win.dragging .win-body{box-shadow:0 40px 90px -20px rgba(10,40,25,.5),0 0 0 1px var(--line-2)}

/* mobile windows: near full-screen sheets that sit above the compact dock */
@media (max-width:700px){
  .win-body{border-radius:20px 20px 0 0}
  .win.max .win-body{border-radius:20px 20px 0 0}
  .win-bar{height:50px;grid-template-columns:auto 1fr auto;gap:10px;padding:0 10px}
  .win-bar::before{content:"";position:absolute;top:5px;left:50%;width:36px;height:4px;margin-left:-18px;border-radius:4px;background:var(--line-2)}
  .win-ctl{display:none}
  .win-back{display:inline-flex;align-items:center;gap:4px;height:34px;padding:0 12px 0 8px;border-radius:99px;background:var(--acc-soft);color:var(--acc);font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;margin-top:6px}
  .win-title{justify-self:start;margin-top:6px}
  .win-title i{display:none}
  .rz{display:none}
}
@media (prefers-reduced-motion:reduce){.win-body{transition:none}}

