/* ============================================================
   BASE — reset, shared tokens, shell switching
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html, body {
  height: 100%;
  overflow: hidden;
  background: #000;
}

/* Note: no global font-smoothing here. The Win98 shell needs it OFF (bitmap
   font) and the KitKat shell needs it ON (Roboto) — each sets its own. */
body {
  -webkit-tap-highlight-color: transparent;
}

/* The sprite is a definitions-only <svg>; never paint it. */
.icon-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }

/* ============================================================
   SHELLS — exactly one is mounted at a time (see js/shell.js)
   ============================================================ */
.shell { position: fixed; inset: 0; display: none; }
.shell.is-active { display: block; }

/* OS chrome should never look like selectable web text. */
.shell { user-select: none; -webkit-user-select: none; }
/* ...except where the user is meant to read or type. */
.selectable, input, textarea { user-select: text; -webkit-user-select: text; }

/* Icons drawn on a 32px grid stay crisp when scaled. */
.pixel { shape-rendering: crispEdges; image-rendering: pixelated; }

iframe { border: 0; display: block; }
