#sandboxBtn{text-decoration:none;display:inline-flex;align-items:center}
.map-layout-dialog{box-sizing:border-box;width:min(92vw,390px);margin:auto;padding:24px;border:1px solid var(--ui-border);border-radius:12px;background:linear-gradient(var(--ui-panel),var(--ui-panel)),var(--ui-bg);color:var(--ui-text);box-shadow:0 18px 60px #0006}
.map-layout-dialog::backdrop{background:#0006}
.map-layout-dialog h2{font:600 20px Georgia,serif;margin:0 0 18px}
.map-layout-dialog label{display:block;font:14px/1.5 Arial,sans-serif;margin:14px 0;color:var(--ui-text2)}
.map-layout-dialog select{display:block;width:100%;margin-top:6px;padding:9px;border:1px solid var(--ui-border);border-radius:6px;background:var(--ui-input);color:var(--ui-text);font:14px Arial,sans-serif}
.map-layout-dialog .map-error{color:#ba5049}
.mindmap-mode .map-inline-tools button.map-delete,.mindmap-mode .map-actions button.map-delete{color:var(--ui-text);border:1px solid var(--ui-border);border-radius:5px}
.mindmap-mode .map-inline-tools button.map-delete:hover,.mindmap-mode .map-actions button.map-delete:hover{color:#ba5049;background:color-mix(in srgb,#ba5049 10%,var(--ui-panel));border-color:#ba5049}
/* Text sits in the connection itself; a quiet backing keeps the line out of the letters. */
body.mindmap-mode .edge-label{font:10px/1.35 Arial,sans-serif;box-sizing:border-box;padding:0 3px;border-radius:0;transform-origin:0 0;color:var(--ui-text2);background:var(--board-bg,var(--ui-panel));border:0;box-shadow:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
body.mindmap-mode .edge-label:hover,body.mindmap-mode .edge-label:focus-visible{color:var(--gold);z-index:12;outline:1px solid var(--gold);outline-offset:2px}
body.mindmap-mode .edge-line{stroke-width:calc(1px * var(--board-label-scale,1));transition:stroke .2s,opacity .18s}
body.mindmap-mode .edge-hit{stroke-width:calc(14px * var(--board-label-scale,1))}
body.mindmap-mode .world.map-link-focus .edge-line,body.mindmap-mode .world.map-link-focus .edge-label{opacity:.15!important}
body.mindmap-mode .world.map-link-focus .map-link-lit{opacity:1!important}
body.mindmap-mode .edge-line.map-link-lit{stroke-width:calc(2.5px * var(--board-label-scale,1))}
body.mindmap-mode .map-link-endpoint .map-concept-card,body.mindmap-mode .map-link-endpoint .bnode-circle{outline:calc(2px * var(--board-label-scale,1)) solid var(--gold);outline-offset:calc(5px * var(--board-label-scale,1))}
body.mindmap-mode #connectBtn{display:inline-flex}
body.mindmap-mode [hidden]{display:none!important}
.map-node-focus:focus-visible{outline:2px solid var(--gold);outline-offset:5px}
/* Keep Hybrid/Node emoji and their names usable on a wide, zoomed-out map. */
.mindmap-mode .screen-sized-node .bnode-circle{transition:filter .25s}
.mindmap-mode .screen-sized-node .bnode-label{
  box-sizing:border-box;width:calc(164px * var(--board-node-inverse-zoom,1));max-width:none;
  padding:calc(3px * var(--board-node-inverse-zoom,1)) calc(6px * var(--board-node-inverse-zoom,1));
  font:600 calc(14px * var(--board-node-inverse-zoom,1))/1.3 Georgia,serif;
  white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  color:var(--ui-text);background:color-mix(in srgb,var(--ui-panel) 90%,transparent);
  border-radius:calc(5px * var(--board-node-inverse-zoom,1));text-shadow:none;pointer-events:auto;
}
.mindmap-mode .screen-sized-node .bnode-genesis{
  width:calc(4px * var(--board-node-inverse-zoom,1));height:calc(4px * var(--board-node-inverse-zoom,1));
}
.mindmap-mode .screen-sized-locus .bnode-label{
  width:calc(140px * var(--board-node-inverse-zoom,1));
  font-size:calc(12px * var(--board-node-inverse-zoom,1));
  overflow:hidden;
}
body.mindmap-mode #playAiBtn,body.mindmap-mode #quickBtn,body.mindmap-mode #dailyBtn,body.mindmap-mode #arenaBtn,body.mindmap-mode #glyphsmithBtn,body.mindmap-mode #onlineBtn,body.mindmap-mode #gamesBtn,body.mindmap-mode #modalityBtn,body.mindmap-mode #clearBtn,body.mindmap-mode #hand,body.mindmap-mode #gamePanel,body.mindmap-mode #gpReveal,body.mindmap-mode #authBtn{display:none!important}
body.mindmap-mode #sandboxBtn{color:var(--gold);border-color:var(--gold)}
.map-tools{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.map-name{font:14px Georgia,serif;width:170px;border:0;border-bottom:1px solid var(--ui-border);background:transparent;color:var(--ui-text);padding:5px}.map-status{position:absolute;left:16px;bottom:13px;z-index:15;max-width:calc(100% - 60px);font:12px Georgia,serif;color:var(--ui-text2);background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:6px;padding:7px 11px;pointer-events:none}.map-status:empty{display:none}.map-panel{width:310px;flex:none;overflow:auto;background:var(--ui-panel);border-right:1px solid var(--ui-border);padding:20px;z-index:30}.map-panel[hidden]{display:none}.map-panel h2{font:13px 'Cinzel',Georgia,serif;color:var(--gold);letter-spacing:2px;margin-bottom:14px}.map-panel-head{display:flex;justify-content:space-between;gap:8px}.map-panel label{display:block;font:12px Georgia,serif;color:var(--ui-text2);margin:12px 0}.map-panel input,.map-panel textarea,.map-panel select{display:block;width:100%;margin-top:6px;background:var(--ui-input);color:var(--ui-text);border:1px solid var(--ui-input-bdr);border-radius:5px;padding:8px;font:13px Georgia,serif}.map-panel textarea{resize:vertical}.map-panel input[type=color]{height:35px;padding:3px}.map-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.map-help{color:var(--ui-text3);font:12px/1.5 Georgia,serif;margin:10px 0}.map-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:15px}.map-panel .map-error{color:#ba5049;font:13px Georgia,serif;margin:8px 0}.map-detail{font:14px/1.5 Georgia,serif;color:var(--ui-text2);white-space:pre-wrap;margin:10px 0;max-height:200px;overflow:auto}.map-connections{display:flex;flex-direction:column;gap:7px;margin:14px 0}.map-connections button{text-align:left;white-space:normal;line-height:1.5}.map-preview{margin-top:15px;padding:15px;max-height:190px;overflow:auto;border-radius:6px;white-space:pre-wrap;overflow-wrap:anywhere}.map-media-card{width:280px;height:392px;border:1px solid var(--gold-dim);border-radius:13px;box-shadow:0 8px 24px #0006;overflow:hidden;display:flex;flex-direction:column;background:var(--ui-panel);color:var(--ui-text);font-family:Georgia,serif}.map-media-hdr{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--gold-dim);font:10px 'Cinzel',Georgia,serif;letter-spacing:2px;color:var(--gold)}.map-media-content{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:18px;overflow:hidden}.map-media-content blockquote{margin:0;line-height:1.3;white-space:pre-wrap;overflow-wrap:anywhere;max-height:100%;overflow:auto;scrollbar-width:thin}.map-media-content video,.map-media-content audio{width:100%;max-height:220px}.map-media-footer{padding:14px 16px;border-top:1px solid var(--gold-dim);background:var(--ui-panel)}.map-media-footer strong{font-size:16px;display:block;line-height:1.2;margin-bottom:7px}.map-media-footer small{color:var(--ui-text3);font-size:10px}.map-media-playback{width:100%;margin:15px 0}.map-media-note{font:12px Georgia,serif}.mindmap-mode .bnode:focus-visible{outline:2px solid var(--gold)}.mindmap-mode .edge-label{cursor:pointer;pointer-events:auto;font-style:normal;max-width:220px;font-size:13px}.mindmap-mode .edge-line{stroke-width:2}.map-link-dialog{width:min(94vw,460px)}.map-link-dialog select{width:100%;background:var(--ui-input);color:var(--ui-text);border:1px solid var(--ui-border);padding:10px;margin-bottom:10px}.map-import{display:none}.map-panel [hidden]{display:none!important}.mindmap-mode #blendRange{display:none}.map-tips{font-size:12px;color:var(--ui-text3);line-height:1.6;margin:20px 0}.map-readings{border-top:1px solid var(--ui-border);margin-top:18px;padding-top:14px}.map-readings h3{font:12px 'Cinzel',serif;color:var(--gold);margin-bottom:7px}
@media(max-width:640px){.map-panel{position:absolute;left:0;top:0;bottom:0;width:min(310px,88vw);box-shadow:10px 0 25px #0004}.mindmap-mode .main{position:relative}.map-name{width:120px}.mindmap-mode .top-bar{gap:6px}.mindmap-mode .map-tools{gap:5px}.mindmap-mode .tbtn{padding:6px 9px}.mindmap-mode #locusGroup{max-width:100%}}

/* Variable card boxes and eight handles with stable screen-space hit targets. */
.map-media-card{position:relative;box-sizing:border-box;overflow:visible}
.map-media-hdr,.map-media-footer{flex-shrink:0}
.map-media-hdr{border-radius:12px 12px 0 0}
.map-media-footer{border-radius:0 0 12px 12px;overflow-wrap:anywhere}
.map-text-card .map-media-content{flex:1 0 auto;min-height:auto;overflow:visible}
.map-text-card blockquote{width:100%;max-height:none;overflow:visible}
.map-fixed-card .map-media-hdr{padding:10px 12px;white-space:nowrap;overflow:hidden}
.map-fixed-card .map-media-footer{padding:10px 12px}
.map-fixed-card .map-media-footer strong,.map-fixed-card .map-media-footer small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.map-fixed-card .map-media-content{flex:1 1 0;min-height:0;min-width:0;overflow:hidden;padding:12px}
.map-fixed-card blockquote{flex:none;max-height:none;overflow:visible}
.map-scroll-card .map-media-content{display:block;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;touch-action:pan-y;cursor:text}
.map-media-content video{max-height:100%;height:100%;object-fit:contain}
.map-resize{position:absolute;margin:0;padding:0;border:0;background:transparent;touch-action:none;z-index:2;overflow:visible;opacity:0;pointer-events:none;transition:opacity .12s}
:is(.map-media-card,.map-concept-card):is(:hover,:focus-within,.map-editing,.resizing) .map-resize{opacity:1;pointer-events:auto}
.map-resize-grip{position:absolute;box-sizing:border-box;border:1px solid var(--gold);border-radius:2px;background:var(--ui-panel);box-shadow:0 1px 3px #0003;transform:translate(-50%,-50%) scale(var(--map-resize-scale,1));transform-origin:center;pointer-events:inherit}
.map-resize-left,.map-resize-right{top:0;height:100%;width:calc(16px * var(--map-resize-scale,1));cursor:ew-resize}
.map-resize-right{right:0;transform:translateX(50%)}
.map-resize-left{left:0;transform:translateX(-50%)}
.map-resize-left .map-resize-grip,.map-resize-right .map-resize-grip{top:50%;width:6px;height:18px;left:50%}
.map-resize-top,.map-resize-bottom{left:0;width:100%;height:calc(16px * var(--map-resize-scale,1));cursor:ns-resize}
.map-resize-top{top:0;transform:translateY(-50%)}
.map-resize-bottom{bottom:0;transform:translateY(50%)}
.map-resize-top .map-resize-grip,.map-resize-bottom .map-resize-grip{left:50%;top:50%;width:18px;height:6px}
.map-resize-corner{width:calc(24px * var(--map-resize-scale,1));height:calc(24px * var(--map-resize-scale,1));z-index:3;transform:translate(-50%,-50%)}
.map-resize-corner .map-resize-grip{top:50%;left:50%;width:8px;height:8px}
.map-resize-top-left{left:0;top:0;cursor:nwse-resize}
.map-resize-top-right{left:100%;top:0;cursor:nesw-resize}
.map-resize-bottom-left{left:0;top:100%;cursor:nesw-resize}
.map-resize-bottom-right{left:100%;top:100%;cursor:nwse-resize}
.map-resize:hover .map-resize-grip,.map-resize:focus-visible .map-resize-grip,.resizing .map-resize-grip{background:var(--gold);color:#171e23}
.map-resize:focus-visible{outline:0}
.map-resize:focus-visible .map-resize-grip{outline:2px solid var(--ui-text);outline-offset:2px}
.map-size-readout{display:none;position:absolute;left:50%;top:0;z-index:4;white-space:nowrap;background:var(--ui-panel);color:var(--ui-text);border:1px solid var(--gold);border-radius:4px;padding:4px 7px;font:12px/1.3 Arial,sans-serif;transform:translate(-50%,calc(-100% - 36px)) scale(var(--map-resize-scale,1));transform-origin:bottom center;pointer-events:none}
.resizing{user-select:none}
.resizing .map-size-readout{display:block}
.map-panel output{display:block;margin-top:4px;font-variant-numeric:tabular-nums;color:var(--gold)}
.map-concept-card{position:relative;display:block;box-sizing:border-box;perspective:none;container-type:size}
.map-concept-card .nx{width:100%;height:100%;aspect-ratio:auto}
.map-concept-card .nx-art:not(.is-png){background-size:cover!important}
/* Portraits need their own frame: an overlaid, wrapping name used to hide
   the forehead/eyes even with a top-biased crop. Keep the whole photograph
   visible beneath the header at every card size, including previews. */
.mindmap-mode .map-portrait-card .nx.fullart{display:flex;flex-direction:column;background:#151822}
.mindmap-mode .map-portrait-card .nx.fullart .fa-hdr{position:relative;inset:auto;flex:none;order:0}
.mindmap-mode .map-portrait-card .nx.fullart .nx-art{position:relative;inset:auto;flex:1 1 0;min-height:0;order:1;background-size:contain!important;background-position:center top!important}
.mindmap-mode .map-portrait-card .nx.fullart :is(.fa-top,.fa-bot,.fa-tint){display:none}
.mindmap-mode .map-portrait-card .nx.fullart .fa-text{position:relative;inset:auto;flex:0 1 auto;min-height:0;order:2;overflow:hidden;background:#151822}
.map-concept-card .nx-locus{width:100%;height:auto;aspect-ratio:1}
.mindmap-mode .map-concept-card .nx .card-title[data-title-layout=wrap]{-webkit-line-clamp:var(--map-title-lines,3)}

/* Names grow with zoom from 16 to 32 screen pixels. On small cards, bound
   text and padding by the actual card box so the header cannot consume the
   image. Container units follow resizing, import, Fit and hover previews. */
.mindmap-mode .nx .hdr-band,.mindmap-mode .nx .fa-hdr{
  display:block;
  height:auto!important;min-height:0;
  padding:min(calc(8px * var(--map-resize-scale,1)),3cqw,2cqh) min(calc(12px * var(--map-resize-scale,1)),5cqw);
  background:#151822!important;
}
.mindmap-mode .map-concept-card .nx :is(.tier-badge,.dom-seal){display:none}
.mindmap-mode .nx :is(.hdr-band,.fa-hdr)>div:nth-child(2){
  grid-column:1/-1;grid-row:2;min-width:0;margin:0!important;
}
.mindmap-mode .nx .card-title[data-title-layout=wrap]{
  font-size:min(max(calc(16px * var(--map-resize-scale,1)),6cqw),calc(32px * var(--map-resize-scale,1)),14cqw,9cqh)!important;font-weight:600;line-height:1.4;
  color:#fff8e7!important;background:transparent;padding:0;border-radius:0;
  text-shadow:none!important;box-shadow:none;backdrop-filter:none;
  font-variant:normal;letter-spacing:0;text-align:left;
  white-space:normal;overflow-wrap:normal;word-break:normal;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.mindmap-mode .nx .card-title.engraved[data-title-layout=wrap]{font-family:'Spectral',Georgia,serif}
/* Enlarged previews need readable definitions, rather than a tiny sentence
   at the top of an almost-empty text plate. */
.mindmap-mode .map-concept-card .fa-text{height:auto;max-height:40%;padding:0 min(calc(12px * var(--map-resize-scale,1)),4cqw) min(calc(12px * var(--map-resize-scale,1)),3cqh)}
.mindmap-mode .map-concept-card .nx.fullart .card-excerpt{
  flex:0 1 auto;min-height:0;font-family:Georgia,serif;font-style:normal;line-height:1.45;
  font-size:min(max(calc(16px * var(--map-resize-scale,1)),4cqw),calc(26px * var(--map-resize-scale,1)),8cqw,6cqh)!important;
  padding:min(calc(10px * var(--map-resize-scale,1)),2cqh) min(calc(12px * var(--map-resize-scale,1)),3cqw);
  color:#fff8e7!important;background:rgba(12,13,19,.82);text-shadow:none;
}
.map-media-footer strong{font-size:30px;font-weight:700;line-height:1.2;color:var(--ui-text);margin-bottom:4px}
.map-media-footer small{font-size:14px;line-height:1.3;color:var(--ui-text2)}
.map-media-footer small:empty{display:none}
.map-media-footer strong:has(+small:empty){margin-bottom:0}

/* A quiet canvas, with controls only where the user is working. */
body.mindmap-mode{
  --ui-panel:#25282f;--ui-topbar:#1d2026;--ui-stage:#30343c;
  --ui-border:#3c424c;--ui-border2:#2d323b;--ui-input:#1c1f25;--ui-input-bdr:#48505d;
  --ui-text:#ece9e0;--ui-text2:#b7bbc5;--ui-text3:#969ca7;
}
body.mindmap-mode.day{
  --ui-panel:#fffdf8;--ui-topbar:#f7f5ef;--ui-stage:#ebe8df;
  --ui-border:#d6d2c8;--ui-border2:#e3dfd5;--ui-input:#fffefa;--ui-input-bdr:#c4bfb4;
  --ui-text:#282824;--ui-text2:#55584f;--ui-text3:#71746a;
}
body.mindmap-mode .board{background:#17191e;overflow:clip}
body.mindmap-mode.day .board{background:#efede7}
body.mindmap-mode .board-grid{opacity:.55}
body.mindmap-mode .bnode{opacity:1!important}
body.mindmap-mode .bnode .bnode-cardholder{filter:none!important;animation:none!important}
body.mindmap-mode .bnode.selected{z-index:12}
body.mindmap-mode .bnode.selected .bnode-cardholder{outline:0}
body.mindmap-mode .bnode .bnode-cardholder .nx{outline:2px solid var(--pring)!important;outline-offset:2px;box-shadow:0 5px 16px #0003}
body.mindmap-mode .bnode.selected .bnode-cardholder .nx{outline-color:var(--gold)!important;outline-offset:5px}
.map-media-card{border:1px solid color-mix(in srgb,currentColor 18%,transparent);border-radius:14px;box-shadow:0 4px 14px #0003}
.map-media-card.map-editing{outline:1px solid var(--gold);outline-offset:0}
.map-media-card .map-media-hdr{gap:16px;padding:18px 24px 12px;border:0;letter-spacing:0;color:inherit;white-space:normal}
.map-media-title{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 28px/1.35 Georgia,serif}
.map-media-kind{flex-shrink:0;opacity:.5;font:12px/1.2 Arial,sans-serif;text-transform:uppercase;letter-spacing:1px}
/* Keep player titles readable on oversized/imported cards at low zoom. Only
   fixed player cards use size containment; text cards retain natural height. */
.map-media-card:not(.map-text-card){container-type:size}
.map-media-card:not(.map-text-card) .map-media-hdr{
  gap:min(calc(12px * var(--map-resize-scale,1)),3cqw);
  padding:min(calc(8px * var(--map-resize-scale,1)),2cqh) min(calc(12px * var(--map-resize-scale,1)),5cqw);
}
.map-media-card:not(.map-text-card) .map-media-title{
  flex:1;font-size:min(max(calc(16px * var(--map-resize-scale,1)),6cqw),calc(32px * var(--map-resize-scale,1)),12cqw,8cqh);
}
.map-media-card:not(.map-text-card) .map-media-kind{
  font-size:min(calc(10px * var(--map-resize-scale,1)),4cqw,4cqh);letter-spacing:.08em;
}
.map-media-card .map-media-content{padding:12px 24px 24px}
.map-media-card blockquote{font-weight:400;line-height:1.45}
.map-media-card .map-media-footer{padding:12px 24px 16px;background:transparent;border-top:1px solid color-mix(in srgb,currentColor 12%,transparent)}
.map-media-card .map-media-footer small{font:14px/1.4 Arial,sans-serif;color:inherit;opacity:.65}
/* Oversized thought/quote cards should not become canvas-sized hover panels. */
.map-reading-preview .map-media-hdr{gap:12px;padding:16px 18px 10px}
.map-reading-preview .map-media-title{font-size:18px;line-height:1.35}
.map-reading-preview .map-media-kind{font-size:10px}
.map-reading-preview .map-media-content{display:block;flex:0 1 auto;min-height:0;overflow:hidden;padding:8px 18px 18px}
.map-reading-preview blockquote{font-size:18px;line-height:1.5}
.map-reading-preview .map-media-footer{padding:10px 18px;max-height:70px;overflow:hidden}
.map-reading-preview .map-media-footer small,.map-reading-more{font:12px/1.4 Arial,sans-serif}
.map-reading-more{flex-shrink:0;padding:8px 18px 14px;opacity:.75}
.map-inline-tools{
  position:absolute;z-index:5;display:flex;align-items:center;flex-wrap:wrap;gap:4px;width:max-content;
  padding:5px;border:1px solid var(--ui-border);border-radius:10px;
  background:var(--ui-panel);color:var(--ui-text);box-shadow:0 6px 22px #0003;
  transform:scale(var(--map-resize-scale,1)) translateX(-50%);transform-origin:top left;
  cursor:default;user-select:none;font:13px/1.2 Arial,sans-serif;
}
.map-inline-tools[hidden]{display:none}
.map-inline-tools :is(button,input,select,a){font:inherit;color:inherit;background:transparent;border:0;border-radius:5px;height:30px;min-width:0}
.map-inline-tools :is(button,a){min-width:30px;padding:0 8px;cursor:pointer}
.map-wikipedia{display:inline-flex;align-items:center;text-decoration:none}
.map-inline-tools .map-move{cursor:grab;touch-action:none;user-select:none;border-right:1px solid var(--ui-border);border-radius:5px 0 0 5px}
.map-photo-controls{display:flex;align-items:center;border-left:1px solid var(--ui-border);padding-left:4px;gap:2px}
.map-photo-controls span{min-width:42px;text-align:center;font-size:11px;color:var(--ui-text2)}
.map-photo-controls button:disabled{opacity:.4;cursor:default}
.map-moving .map-inline-tools .map-move{cursor:grabbing}
.map-moving .map-resize{opacity:0!important;pointer-events:none!important}
.map-inline-tools select{width:76px;padding:0 4px;cursor:pointer}
.map-inline-tools select option{color:var(--ui-text);background:var(--ui-panel)}
.map-inline-tools :is(button,select,a):hover{background:var(--ui-border)}
.map-inline-tools :is(button,input,select,a):focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.map-inline-size{display:flex;align-items:center;padding:0 3px;border-left:1px solid var(--ui-border);border-right:1px solid var(--ui-border)}
.map-inline-tools input{width:38px;text-align:center;appearance:textfield;font-variant-numeric:tabular-nums;user-select:text}
.map-inline-tools input::-webkit-inner-spin-button,.map-inline-tools input::-webkit-outer-spin-button{appearance:none;margin:0}
.resizing .map-inline-tools{visibility:hidden!important}
.mindmap-mode .map-status{font:11px/1.4 Arial,sans-serif;border:0;background:transparent;color:var(--ui-text2)}
.mindmap-mode .map-name{font:500 14px Arial,sans-serif;border:0;border-radius:6px;padding:8px}
.mindmap-mode .map-name:focus{outline:1px solid var(--gold)}
.mindmap-mode .top-bar .tbtn{font:12px/1.3 Arial,sans-serif;letter-spacing:0;text-transform:none;color:var(--ui-text2);border-color:var(--ui-border);border-radius:6px}
.mindmap-mode .top-bar .tbtn:hover{background:var(--ui-stage);color:var(--ui-text)}
.mindmap-mode .top-bar .tbtn:disabled{opacity:.4;cursor:default}
.mindmap-mode .top-bar .seg{border-radius:7px}
.mindmap-mode .top-bar .seg button{font:12px/1.3 Arial,sans-serif;letter-spacing:0;text-transform:none;color:var(--ui-text2)}
.mindmap-mode .top-bar .seg button.active{color:var(--ui-text);font-weight:600}
.mindmap-mode .map-panel{padding:22px;border-color:var(--ui-border);box-shadow:3px 0 16px #0001}
.mindmap-mode .map-panel :is(label,input,textarea,select,.map-help,.map-detail){font-family:Arial,sans-serif}

/* Compose a connection while the board stays in view. */
.map-connect-prompt,.map-connection-editor{position:absolute;z-index:25;background:var(--ui-panel);color:var(--ui-text);border:1px solid var(--ui-border);box-shadow:0 10px 32px #0003;cursor:default;font:13px/1.45 Arial,sans-serif;touch-action:auto}
.map-connect-prompt{top:18px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;max-width:calc(100% - 32px);padding:9px 10px 9px 15px;border-radius:12px}
.map-connect-prompt>span:not(.map-connect-symbol){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.map-connect-symbol{font-size:19px;color:var(--gold)}
.map-connect-prompt button,.map-connection-editor button{font:inherit;color:inherit;border:0;border-radius:7px;background:transparent;cursor:pointer;flex-shrink:0;padding:7px 10px}
.map-connect-prompt button:hover,.map-connection-editor button:hover{background:var(--ui-border)}
.map-connect-prompt :focus-visible,.map-connection-editor :focus-visible,.mindmap-mode .edge-label:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.map-connect-cancel{border-left:1px solid var(--ui-border)!important;color:var(--ui-text2)!important}
.map-connection-editor{top:18px;right:18px;width:360px;max-width:calc(100% - 36px);max-height:calc(100% - 36px);box-sizing:border-box;overflow:auto;border-radius:14px;padding:16px;user-select:text}
.map-connection-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;cursor:move;touch-action:none;user-select:none}
.map-connection-head h2{font:600 15px/1.3 Arial,sans-serif;margin:0;color:var(--ui-text)}
.map-connection-head button{font-size:21px;line-height:1;padding:2px 7px;color:var(--ui-text2)}
.map-connection-endpoints{display:grid;grid-template-columns:minmax(0,1fr) 32px minmax(0,1fr);gap:8px;align-items:center;background:var(--ui-input);border:1px solid var(--ui-border2);border-radius:10px;padding:12px;margin-bottom:16px}
.map-connection-endpoints span{display:block;color:var(--ui-text3);font-size:11px;margin-bottom:4px}
.map-connection-endpoints strong{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;font-weight:600;line-height:1.4}
.map-connection-endpoints .map-connection-swap{padding:6px;font-size:19px;color:var(--gold)}
.map-connection-swap:disabled{opacity:.35;cursor:default}
.map-relation-choices{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.map-relation-choices button{font-size:12px;padding:6px 9px;border:1px solid var(--ui-border);color:var(--ui-text2)}
.map-relation-choices button[aria-pressed=true]{border-color:var(--gold);background:color-mix(in srgb,var(--gold) 12%,var(--ui-panel));color:var(--ui-text)}
.map-connection-label{display:flex;gap:12px;align-items:center;justify-content:space-between;font-size:12px;color:var(--ui-text2)}
.map-connection-editor select{width:185px;max-width:65%;border:1px solid var(--ui-input-bdr);border-radius:7px;padding:7px;background:var(--ui-input);color:var(--ui-text);font:13px Arial,sans-serif}
.map-connection-reading{padding:11px 0;margin:6px 0 2px;color:var(--ui-text2);font-size:12px;overflow-wrap:anywhere;line-height:1.6}
.map-connection-reading strong{font-weight:500;color:var(--ui-text)}
.map-vocabulary{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:5px;color:var(--ui-text3);font-size:11px}
.map-vocabulary button{padding:3px 7px;font-size:16px;color:var(--ui-text2)}
.map-vocabulary button:disabled{opacity:.4;cursor:wait}
.map-connection-note{border-top:1px solid var(--ui-border2);padding-top:10px;color:var(--ui-text2);font-size:12px}
.map-connection-note summary{cursor:pointer;padding:3px 0}
.map-connection-note textarea{display:block;box-sizing:border-box;width:100%;min-height:64px;resize:vertical;margin-top:8px;padding:9px;border:1px solid var(--ui-input-bdr);border-radius:7px;color:var(--ui-text);background:var(--ui-input);font:13px/1.4 Arial,sans-serif}
.map-note-count{display:block;text-align:right;font-size:10px;color:var(--ui-text3);margin-top:4px}
.map-connection-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;margin-top:16px}
.map-connection-actions .map-connection-save{background:var(--gold);color:#20221e;font-weight:600;padding:9px 12px}
.map-connection-actions .map-connection-save:hover{filter:brightness(1.1);background:var(--gold)}
body.mindmap-mode.day .map-connection-actions .map-connection-save{color:#fffdf8}
.map-connection-actions .map-connection-remove{margin-right:auto;color:var(--ui-text3);font-size:12px;padding:7px 0}
.map-connection-actions .map-connection-remove:hover{color:#d9786b;background:transparent}
.map-connection-preview{stroke:var(--gold);stroke-width:2;stroke-dasharray:7 5;vector-effect:non-scaling-stroke;pointer-events:none}
.mindmap-mode .map-edge-editing{opacity:.2!important}
.map-connecting,.map-connecting .bnode{cursor:crosshair}
.map-connecting .map-resize{pointer-events:none!important;opacity:0!important}
.map-connecting .bnode.map-connect-source .bnode-inner,.map-connecting .bnode.map-connect-target .bnode-inner{filter:drop-shadow(0 0 4px #c9b97a55)}
.map-connecting .bnode:is(.map-connect-source,.map-connect-target) :is(.map-media-card,.nx,.bnode-circle){outline:2px solid var(--gold)!important;outline-offset:5px}
.map-connecting .bnode.map-connect-target :is(.map-media-card,.nx,.bnode-circle){outline-style:dashed!important}
.map-connecting .board-preview{display:none!important}
@media(max-width:500px){.map-connection-editor{top:10px;right:10px;max-width:calc(100% - 20px);max-height:calc(100% - 20px);padding:14px}.map-connect-prompt{top:10px;gap:6px;font-size:12px}.map-inline-tools{gap:2px}}

/* Integrate with the current table shell and its zoom-independent labels. */
.mindmap-mode #tableModesHome,.mindmap-mode #boardSize,.mindmap-mode #canonSubRange,.mindmap-mode #canonDustRange{display:none!important}
.mindmap-mode .screen-sized-node .bnode-label{transform:translateX(-50%)}
.mindmap-mode .top-bar{flex-wrap:wrap;overflow:visible}
@media(max-width:640px){
 .mindmap-mode .map-panel input,.mindmap-mode .map-panel textarea,.mindmap-mode .map-panel select,.mindmap-mode .map-name{font-size:16px}
 .mindmap-mode .tbtn,.mindmap-mode .map-panel button{min-height:44px}
}

/* The mobile table gives every tool a nonshrinking flex basis; contain the map group. */
body.mindmap-mode{overflow:clip}
@media(max-width:640px){
 .mindmap-mode .map-tools{flex:1 1 100%;min-width:0;max-width:100%}
 .mindmap-mode .map-tools .map-name{flex:1 1 120px;min-width:0}
}

.mindmap-mode #authChipWrap,.mindmap-mode #navDrawerOut{display:none!important}
/* The dedicated Move grip must remain easy to grab on a phone. */
@media(max-width:640px){.mindmap-mode .map-inline-tools .map-move{height:44px;min-width:68px}}
/* The article link needs a full touch target in the compact card toolbar. */
@media(max-width:640px){.mindmap-mode .map-wikipedia{min-height:44px}}
/* Photo cycling must have the same usable touch targets as the Move grip. */
@media(max-width:640px){.mindmap-mode .map-photo-controls button{height:44px;min-width:44px}}
.map-cloud-state{font:12px/1.3 system-ui,sans-serif;color:var(--ui-text2);max-width:170px}
.map-cloud-dialog{margin:auto;box-sizing:border-box;width:min(720px,94vw);max-height:88dvh;overflow:auto;padding:24px;border:1px solid var(--ui-border);border-radius:16px;background:var(--ui-panel);color:var(--ui-text);box-shadow:0 20px 100px #0009}
.map-cloud-dialog::backdrop{background:#030711b3;backdrop-filter:blur(5px)}
.map-cloud-head{display:flex;align-items:center;justify-content:space-between;gap:16px}
.map-cloud-head h2{font:24px Georgia,serif;margin:0}
.map-cloud-dialog .tbtn{min-height:44px;white-space:normal}
.map-cloud-help,.map-cloud-message{font:15px/1.5 system-ui,sans-serif;margin:14px 0;color:var(--ui-text2)}
.map-cloud-message{color:var(--gold)}
.map-cloud-content{display:flex;flex-direction:column;gap:14px;min-width:0}
.map-cloud-content form{display:grid;gap:12px}
.map-cloud-content input{box-sizing:border-box;width:100%;min-width:0;padding:12px;background:var(--ui-input);color:var(--ui-text);border:1px solid var(--ui-border);border-radius:8px;font:16px system-ui,sans-serif}
.map-cloud-content a{color:var(--gold);font:14px/1.5 system-ui,sans-serif}
.map-cloud-row{display:flex;align-items:center;gap:10px;padding:14px 0;border-bottom:1px solid var(--ui-border)}
.map-cloud-row>div{flex:1;min-width:0;overflow-wrap:anywhere}
.map-cloud-row strong{display:block;font:18px/1.4 Georgia,serif}
.map-cloud-row small{display:block;font:12px/1.5 system-ui,sans-serif;color:var(--ui-text2);margin-top:5px}
.map-cloud-nav{display:inline-flex;align-items:center;gap:4px}
.map-cloud-nav>.tbtn:first-child,.map-cloud-nav>.tbtn:last-child{min-width:44px;padding-inline:10px}
.map-cloud-nav .tbtn:disabled{opacity:.35;cursor:default}
.map-cloud-dialog:has(.map-library-grid){width:min(940px,94vw)}
.map-library-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px}
.map-library-controls select{min-height:44px;max-width:100%;font:16px system-ui,sans-serif;padding:10px;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-input);color:var(--ui-text)}
.map-library-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.map-library-card{padding:20px;min-width:0;border:1px solid var(--ui-border);border-radius:12px;background:var(--ui-input);display:flex;flex-direction:column;gap:12px}
.map-library-card[aria-current]{border-color:var(--gold);box-shadow:inset 3px 0 var(--gold)}
.map-library-badge{font:12px system-ui,sans-serif;color:var(--gold)}
.map-library-card h3{font:22px/1.25 Georgia,serif;overflow-wrap:anywhere;margin:0}
.map-library-stats{font:14px system-ui,sans-serif;margin:0;color:var(--ui-text)}
.map-library-card .map-cloud-help{font-size:12px;margin:0}
.map-library-actions,.map-library-footer{display:flex;gap:8px;flex-wrap:wrap}
.map-library-actions{margin-top:auto;padding-top:6px}
.map-library-open{flex:1}
.map-library-footer{border-top:1px solid var(--ui-border);padding-top:16px}
/* Library controls and long saved-map titles must fit a phone. */
@media(max-width:640px){.map-library-controls,.map-library-grid{grid-template-columns:minmax(0,1fr)}.map-library-card{padding:16px}.map-cloud-nav{max-width:100%}.map-library-footer .tbtn{flex:1}}
.map-shared-view .map-tools>button:not(#mapCloudSave):not(#mapCloudOpen),.map-shared-view #mapCloudShare,.map-shared-view #connectBtn,.map-shared-view #mapEffectsBtn,.map-shared-view #mapTidyBtn{display:none!important}
.map-shared-view .map-resize,.map-shared-view .map-card-tools{display:none!important}
.map-shared-view .bnode{pointer-events:none}
/* Camera overview sits outside the transformed board and never changes card layout. */
.map-minimap{position:absolute;right:max(16px,env(safe-area-inset-right));bottom:max(38px,env(safe-area-inset-bottom));z-index:16;width:220px;max-width:calc(100% - 32px);border:1px solid var(--ui-border);border-radius:12px;background:color-mix(in srgb,var(--ui-panel) 88%,transparent);backdrop-filter:blur(10px);box-shadow:0 4px 18px #0003;color:var(--ui-text2);overflow:hidden;font:12px/1.3 system-ui,sans-serif}
.map-minimap-toggle{display:block;width:100%;min-height:44px;padding:8px 12px;border:0;background:transparent;color:inherit;text-align:left;font:inherit;cursor:pointer}
.map-minimap svg{display:block;width:100%;height:auto;touch-action:none;cursor:crosshair}
.map-minimap [hidden]{display:none!important}
.map-minimap-edges{stroke:var(--gold);stroke-width:.7;opacity:.65}
.map-minimap-nodes{fill:var(--ui-text2);fill-opacity:.75}
.map-minimap-viewport{fill:#97dde61a;stroke:#97dde6;stroke-width:1.8;cursor:grab}
body.day .map-minimap-viewport{fill:#197c9514;stroke:#197c95}
.map-minimap.is-dragging svg,.map-minimap.is-dragging .map-minimap-viewport{cursor:grabbing}
.map-minimap-toggle:focus-visible,.map-minimap svg:focus-visible{outline:2px solid var(--gold);outline-offset:-3px}
.map-minimap-help{padding:6px 10px 9px;text-align:center;font-size:10px;pointer-events:none}
@media(max-width:640px){.map-minimap{width:154px;right:max(10px,env(safe-area-inset-right));bottom:max(32px,env(safe-area-inset-bottom))}.map-minimap-help{display:none}.mindmap-mode .map-status{max-width:calc(100% - 24px);font-size:10px}}
/* Account library must fit a phone without shrinking inputs or tap targets. */
@media(max-width:640px){.map-cloud-dialog{padding:18px;max-height:calc(100dvh - 30px);margin:auto}.map-cloud-row{flex-wrap:wrap}.map-cloud-row>div{flex-basis:100%}.map-cloud-state{max-width:none;flex-basis:100%}.mindmap-mode .map-name{font-size:16px}.map-cloud-row .tbtn{flex:1}}

/* Item identity stays visible in the overview, with readable details on hover/focus. */
.map-minimap{max-height:calc(100% - 48px);overflow:auto}
.map-minimap-nodes{fill-opacity:1}
.map-minimap-edges,.map-minimap-viewport{pointer-events:none}
.map-minimap-node{cursor:pointer;outline:none}
.map-minimap-face{fill:color-mix(in srgb,var(--map-item-color) 25%,#151c24);stroke:var(--map-item-border);stroke-width:.8}
.map-minimap-symbol{stroke:var(--map-item-color);pointer-events:none}
.map-minimap-node:is(.is-active,:focus-visible) .map-minimap-face{stroke:#fff;stroke-width:1.8}
.map-minimap-legend{display:flex;flex-wrap:wrap;gap:5px 10px;padding:7px 10px;border-top:1px solid var(--ui-border);font-size:10px;color:var(--ui-text2)}
.map-minimap-legend>span{white-space:nowrap}.map-minimap-legend>span>span{font-size:12px}
.map-minimap-detail{display:flex;align-items:center;gap:8px;height:62px;box-sizing:border-box;padding:7px 10px;border-top:1px solid var(--ui-border)}
.map-minimap-detail-icon{display:grid;place-items:center;flex:0 0 30px;font-size:25px}
.map-minimap-detail img{flex:0 0 34px;width:34px;height:44px;object-fit:cover;border-radius:3px}
.map-minimap-detail>div{min-width:0}.map-minimap-detail strong{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;color:var(--ui-text);font-size:11px;line-height:1.3}
.map-minimap-detail small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;margin-top:3px}
.map-minimap-detail-icon[hidden]{display:none}
.map-minimap-picker{display:none}
/* Game controls occupy the usual minimap corner; anchor it in the clear board area. */
.game-minimap{right:max(var(--game-map-right,16px),env(safe-area-inset-right));bottom:max(var(--game-map-bottom,16px),env(safe-area-inset-bottom))}
.game-minimap[hidden],.table-idle .game-minimap{display:none!important}
/* Keep the legend and item identity usable within the narrow phone overview. */
@media(max-width:640px){.map-minimap-legend{gap:4px 7px;padding:6px}.map-minimap-detail{padding:6px;gap:5px}.map-minimap-detail img{width:26px;flex-basis:26px;height:36px}.map-minimap-detail-icon{flex-basis:20px;font-size:20px}.map-minimap-picker{display:block;box-sizing:border-box;width:calc(100% - 12px);margin:0 6px;min-height:44px;font:16px system-ui,sans-serif;color:var(--ui-text);background:var(--ui-panel);border:1px solid var(--ui-border);border-radius:5px}}
/* Keep the collapsed phone overview above the hand, including the keyboard layout. */
@media(max-width:640px){.game-minimap{right:max(var(--game-map-right,10px),env(safe-area-inset-right));bottom:max(var(--game-map-bottom,32px),env(safe-area-inset-bottom))}}
