/* The map editor (client/editor.js): the site's own look, a workbench round the map. Navy panels with ink outlines,
   chunky buttons that drop when pressed, brushes that show the tile they paint. */
html:has(#ed:not([hidden])){overflow:hidden}
/* (The home page under it is put away: nothing to draw or read behind the editor.) */
html:has(#ed:not([hidden])) .site-shell{display:none}
.ed{--ink:#090c20;--night:#172150;--well:#0f1538;--panel:#222d6b;--lime:#dcf55a;--orange:#ff8a3d;--soft:#c4cbf0;--dim:#8d97c9;--bad:#ff8a7a;
  position:fixed;inset:0;z-index:40;display:grid;grid-template-columns:164px minmax(0,1fr) 300px;grid-template-rows:auto minmax(0,1fr);
  grid-template-areas:"top top top" "tools stage side";background:var(--night);color:#fff;font-family:"Baloo 2","Segoe UI",system-ui,sans-serif;
  -webkit-tap-highlight-color:transparent}
.ed[hidden]{display:none}
.ed button{font:inherit;color:inherit;cursor:pointer}
.ed button:disabled{cursor:default;opacity:.45}
.ed :focus-visible{outline:3px solid #fff;outline-offset:2px}

/* The bar along the top. */
.ed-top{grid-area:top;display:grid;gap:8px;padding:10px 14px;background:var(--panel);border-bottom:4px solid var(--ink)}
.ed-row{display:flex;align-items:center;gap:8px;min-width:0}
.ed-row-more{flex-wrap:wrap}
.ed-name{flex:1;min-width:0;max-width:340px;font-family:"Lilita One",sans-serif;font-size:22px;letter-spacing:.02em;color:#fff;background:var(--well);
  border:3px solid var(--ink);border-radius:12px;padding:4px 12px;text-transform:uppercase}
.ed-play{margin-left:auto}
.ed-btn{font-family:"Lilita One",sans-serif;font-size:17px;line-height:1;padding:9px 14px 10px;border-radius:12px;border:3px solid var(--ink);
  background:#fff;color:var(--ink);box-shadow:0 4px 0 var(--ink);transition:transform .06s,box-shadow .06s;white-space:nowrap}
.ed .ed-btn{color:var(--ink)}
.ed-btn:not(:disabled):active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}
.ed-btn.ghost{background:var(--well);color:#fff}
.ed .ed-btn.ghost{color:#fff}
.ed-btn.small{font-size:16px;padding:6px 11px 7px;min-width:40px}
.ed-play{background:var(--lime);font-size:20px;padding:10px 20px 11px}
.ed-sheet-btn.warn{border-color:var(--ink);background:#5a1d2a}
.ed-back{background:var(--well)}
.ed .ed-back{color:#fff}

/* Segmented choices: a label, then buttons; the chosen one lit. */
.ed-seg{display:flex;align-items:center;gap:0;background:var(--well);border:3px solid var(--ink);border-radius:12px;padding:3px;flex-wrap:nowrap}
.ed-seg[hidden]{display:none}
.ed-seg-label{font-weight:800;font-size:13px;color:var(--dim);padding:0 8px 0 6px;white-space:nowrap}
.ed-seg-btn{border:0;background:transparent;border-radius:8px;padding:5px 10px;font-weight:800;font-size:14px;white-space:nowrap}
.ed-seg-btn[aria-pressed=true]{background:var(--lime);color:var(--ink)}
.ed-seg-btn:not([aria-pressed=true]):hover{background:#2d3a80}
.ed-size-val{min-width:24px;text-align:center;font-weight:800;font-size:14px}
.ed-size-x{color:var(--dim);padding:0 4px}
.ed-size-pick{border:0;background:transparent;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.ed-size-pick:hover{color:#fff}

/* The brushes. */
.ed-tools{grid-area:tools;display:grid;grid-template-columns:1fr 1fr;align-content:start;gap:8px;padding:12px 10px;background:var(--panel);border-right:4px solid var(--ink);overflow:auto}
.ed-tools .ed-sides,.ed-tools>.ed-seg{grid-column:1/-1}
.ed-tool{display:grid;justify-items:center;gap:2px;padding:7px 2px 5px;border-radius:14px;border:3px solid var(--ink);background:var(--well);box-shadow:0 4px 0 var(--ink)}
.ed-tool[aria-pressed=true]{background:#fff;color:var(--ink);transform:translateY(2px);box-shadow:0 2px 0 var(--ink)}
.ed-tool-pic{width:36px;height:36px;image-rendering:pixelated;border-radius:6px;border:2px solid var(--ink)}
.ed-tool-label{font-weight:800;font-size:12px;line-height:1.1;white-space:nowrap}
.ed-sides{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:4px}
.ed-side-btn{border:3px solid var(--ink);border-radius:10px;background:var(--c);color:#fff;font-weight:800;font-size:11px;padding:4px 2px;text-shadow:0 1px 0 var(--ink)}
.ed-side-btn[aria-pressed=true]{outline:3px solid #fff;outline-offset:-1px}
.ed-side-btn:disabled{opacity:.3}
.ed-tools .ed-seg{justify-content:center;padding:3px}
.ed-tools .ed-seg-label{padding:0 6px 0 4px}

/* The map. */
.ed-stage{grid-area:stage;position:relative;min-width:0;min-height:0;overflow:hidden;background:var(--well)}
.ed-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}
.ed-hint{position:absolute;left:50%;bottom:58px;transform:translateX(-50%) translateY(6px);max-width:calc(100% - 24px);background:var(--ink);color:#fff;
  font-weight:700;font-size:15px;padding:7px 14px;border-radius:12px;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;text-align:center}
.ed-hint.on{opacity:1;transform:translateX(-50%)}
.ed-zoom{position:absolute;right:12px;bottom:12px;display:flex;gap:6px}

/* Rules and the checklist. */
.ed-side{grid-area:side;padding:14px 16px 20px;background:var(--panel);border-left:4px solid var(--ink);overflow:auto;display:flex;flex-direction:column;gap:10px}
.ed-h{margin:4px 0 0;font-family:"Lilita One",sans-serif;font-weight:400;font-size:24px;line-height:1}
.ed-side .ed-seg{flex-wrap:wrap}
.ed-side .ed-seg-label{width:100%;padding:2px 6px 4px}
.ed-note{margin:-4px 2px 2px;font-size:14px;line-height:1.35;color:var(--soft)}
.ed-checks{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.ed-check{display:grid;grid-template-columns:24px 1fr;gap:8px;align-items:start;font-size:15px;font-weight:700;line-height:1.3;background:var(--well);border:3px solid var(--ink);border-radius:10px;padding:6px 10px 6px 6px}
.ed-check-mark{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;font-size:13px;font-weight:800;background:var(--lime);color:var(--ink)}
.ed-check.warn .ed-check-mark{background:#ffd36b}
.ed-check.bad{background:#3a1622}
.ed-check.bad .ed-check-mark{background:var(--bad)}
.ed-sheet-btn,.ed-sheet-close{display:none}
.ed-ico{display:none}

/* Small panels: start from, share. */
.ed-pop{position:fixed;z-index:45;background:var(--panel);border:4px solid var(--ink);border-radius:16px;padding:12px;box-shadow:0 10px 0 var(--ink);display:grid;gap:8px}
.ed-pop[hidden]{display:none}
.ed-pop-title{margin:0 0 2px;font-family:"Lilita One",sans-serif;font-weight:400;font-size:20px}
.ed-pop-item{display:grid;text-align:left;gap:1px;border:3px solid var(--ink);border-radius:12px;background:var(--well);padding:8px 12px;font-family:"Lilita One",sans-serif;font-size:18px}
.ed-pop-item small{font-family:"Baloo 2",sans-serif;font-weight:700;font-size:13px;color:var(--soft)}
.ed-pop-item:hover{background:#2d3a80}
.ed-pop-link{width:100%;font:700 13px "Baloo 2",sans-serif;background:var(--well);color:#fff;border:3px solid var(--ink);border-radius:10px;padding:7px 9px}

/* A phone: the map gets the screen; brushes along the bottom; rules and checks in a sheet that slides up. */
@media (max-width:760px){
  .ed{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"top" "stage" "tools"}
  .ed-top{padding:8px 10px;gap:6px}
  .ed-name{font-size:18px;padding:3px 9px;min-width:96px}
  .ed-ico{display:inline;font-size:20px;line-height:.8}
  .ed-txt{display:none}
  .ed-row-main .ed-btn{padding:8px 10px 9px}
  .ed-btn{font-size:15px;padding:8px 11px 9px}
  .ed-play{font-size:17px;padding:8px 14px 9px}
  .ed-row-more{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:4px}
  .ed-row-more::-webkit-scrollbar{display:none}
  .ed-tools{display:flex;flex-direction:row;align-items:stretch;overflow-x:auto;overflow-y:hidden;border-right:0;border-top:4px solid var(--ink);padding:8px 8px 10px;scrollbar-width:none}
  .ed-tools::-webkit-scrollbar{display:none}
  .ed-tool{flex:0 0 66px}
  .ed-sides{grid-template-columns:1fr 1fr;flex:0 0 auto;margin:0;align-content:center}
  .ed-side-btn{padding:6px 8px}
  .ed-tools .ed-seg{flex:0 0 auto;justify-content:center}
  .ed-sheet-btn,.ed-sheet-close{display:inline-block}
  .ed-sheet-close{align-self:stretch;margin-top:4px}
  .ed-side{position:fixed;left:0;right:0;bottom:0;max-height:78vh;z-index:44;border-left:0;border-top:4px solid var(--ink);border-radius:20px 20px 0 0;
    transform:translateY(105%);transition:transform .22s ease-out;box-shadow:0 -14px 40px #0008}
  .ed.sheet .ed-side{transform:none}
  .ed-hint{bottom:56px}
}
@media (prefers-reduced-motion:reduce){.ed-btn,.ed-side,.ed-hint{transition:none}}
