/* ============================================================
   CAMPAIGN BUILDER — full-screen scene-map editor.
   Map (left) + scene form (right); torchlit glass language.
   ============================================================ */
.bld-overlay { position:fixed; inset:0; z-index:9700; display:flex; flex-direction:column;
  background:radial-gradient(ellipse at 50% 0%, hsl(26 18% 11%), hsl(var(--background))); animation:fade-rise .2s ease both; }

/* top bar */
.bld-top { display:flex; align-items:center; gap:.5rem; padding:.7rem .9rem; flex-wrap:wrap;
  border-bottom:1px solid hsl(var(--border)/.6); background:hsl(var(--surface)/.55); backdrop-filter:blur(6px); }
.bld-title { font-family:var(--font-display); font-size:1.1rem; color:hsl(var(--foreground));
  background:transparent; border:none; border-bottom:1px dashed hsl(var(--border)); padding:.15rem .3rem; min-width:200px; }
.bld-title:focus { outline:none; border-bottom-color:hsl(var(--primary)); }
.bld-title-static { font-size:1.1rem; color:hsl(var(--foreground)); }
.bld-top-spacer { flex:1; }

/* body split */
.bld-body { flex:1; display:flex; min-height:0; }
.bld-map { flex:1; position:relative; overflow:auto; min-width:0;
  background-image:radial-gradient(circle, hsl(var(--border)/.45) 1px, transparent 1px); background-size:26px 26px; }
.bld-canvas { position:relative; }
.bld-arrows { position:absolute; left:0; top:0; pointer-events:none; }
.bld-arrow { fill:none; stroke:hsl(38 92% 55% / .55); stroke-width:2; }

/* scene cards on the map — size mirrored in builder.jsx (W=150, H=78) */
.bld-node { position:absolute; width:150px; height:78px; border-radius:12px; padding:.45rem .55rem;
  cursor:grab; user-select:none; touch-action:none; box-shadow:inset 0 0 0 1px hsl(var(--border)), 0 8px 22px rgba(0,0,0,.45); }
.bld-node:active { cursor:grabbing; }
.bld-node.sel { box-shadow:inset 0 0 0 2px hsl(var(--primary)), 0 8px 26px hsl(var(--primary)/.25); }
.bld-node.connecting { box-shadow:inset 0 0 0 2px hsl(190 70% 55%), 0 0 22px hsl(190 70% 50%/.4); }
.bld-node.target { outline:1px dashed hsl(190 70% 55% / .7); outline-offset:3px; }
.bld-node-t { font-family:var(--font-display); font-size:.82rem; color:hsl(var(--foreground));
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.bld-node-scene { font-size:.64rem; color:hsl(var(--muted-foreground)); margin-top:.1rem; }
.bld-node-tags { display:flex; gap:6px; margin-top:.3rem; font-size:.7rem; color:hsl(var(--primary)); }
.bld-node-start { position:absolute; top:-9px; left:-9px; width:20px; height:20px; border-radius:999px; display:grid; place-items:center;
  font-size:.7rem; color:hsl(var(--primary-foreground)); background:hsl(var(--primary)); box-shadow:0 0 12px hsl(var(--primary)/.6); }
.bld-node-link { position:absolute; right:-11px; top:50%; transform:translateY(-50%); width:24px; height:24px; border-radius:999px;
  display:grid; place-items:center; cursor:pointer; font-size:.82rem; color:hsl(190 70% 70%);
  background:hsl(200 30% 14%); border:1px solid hsl(190 50% 40% / .7); }
.bld-node-link:hover { box-shadow:0 0 10px hsl(190 70% 50%/.5); }
.bld-map-actions { position:sticky; left:0; bottom:0; display:flex; align-items:center; gap:.7rem; padding:.6rem .8rem; }
.bld-connect-hint { font-size:.76rem; color:hsl(190 70% 70%); display:inline-flex; align-items:center; gap:.5rem; }

/* right side: the scene form */
.bld-side { width:min(380px, 44vw); border-left:1px solid hsl(var(--border)/.6); overflow:auto;
  background:hsl(var(--surface)/.4); padding:.9rem .9rem 1.4rem; }
.bld-empty { font-size:.84rem; color:hsl(var(--muted-foreground)); padding:1rem .4rem; }
.bld-form { display:flex; flex-direction:column; gap:.7rem; }
.bld-form-head { display:flex; align-items:center; gap:.5rem; }
.bld-form-title { flex:1; font-family:var(--font-display); font-size:1rem; color:hsl(var(--foreground));
  background:hsl(var(--background)/.5); border:none; box-shadow:inset 0 0 0 1px hsl(var(--border)); border-radius:9px; padding:.45rem .6rem; }
.bld-field { display:flex; flex-direction:column; gap:.35rem; }
.bld-lbl { font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:hsl(var(--muted-foreground)); }
.bld-lbl em { font-style:normal; text-transform:none; letter-spacing:0; opacity:.75; }
.bld-scene-chips { display:flex; flex-wrap:wrap; gap:4px; }
.bld-ta { font-family:var(--font-body); font-size:.84rem; color:hsl(var(--foreground)); resize:vertical;
  background:hsl(var(--background)/.5); border:none; box-shadow:inset 0 0 0 1px hsl(var(--border)); border-radius:9px; padding:.5rem .6rem; }
.bld-select { font-family:var(--font-body); font-size:.8rem; color:hsl(var(--foreground));
  background:hsl(var(--background)/.7); border:1px solid hsl(var(--border)); border-radius:8px; padding:.4rem .5rem; }
.bld-enemy-row, .bld-exit-row { display:flex; align-items:center; gap:.4rem; }
.bld-exit-to { font-size:.78rem; color:hsl(var(--primary)); white-space:nowrap; max-width:46%; overflow:hidden; text-overflow:ellipsis; }
.bld-diff { display:flex; align-items:center; gap:.6rem; }
.bld-diff input[type="range"] { flex:1; accent-color:hsl(var(--primary)); }
.bld-diff b { font-size:.78rem; color:hsl(var(--primary)); min-width:3.4em; }

/* backdrop drop-zone */
.bld-art-drop { position:relative; min-height:64px; border-radius:10px; display:grid; place-items:center; cursor:pointer;
  font-size:.74rem; color:hsl(var(--muted-foreground)); text-align:center; padding:.4rem;
  border:1px dashed hsl(var(--border)); background-size:cover; background-position:center; }
.bld-art-drop:hover { border-color:hsl(var(--primary)/.6); }
.bld-art-drop.has { border-style:solid; min-height:84px; color:hsl(var(--foreground)); text-shadow:0 1px 4px #000; }
.bld-art-x { position:absolute; top:6px; right:6px; }

/* triggers */
.bld-triggers { margin-top:1rem; padding-top:.8rem; border-top:1px solid hsl(var(--border)/.5); }
.bld-trig { display:flex; flex-direction:column; gap:.4rem; padding:.55rem .6rem; border-radius:10px; margin-bottom:.5rem; }
.bld-trig-row { display:flex; align-items:center; gap:.45rem; font-size:.8rem; color:hsl(var(--muted-foreground)); }
.bld-trig-row .bld-select { flex:1; }

/* warnings */
.bld-warn-wrap { position:relative; }
.bld-warn-chip { font-size:.76rem; padding:.32rem .6rem; border-radius:999px; cursor:pointer;
  color:hsl(43 90% 66%); background:hsl(43 60% 30% / .2); border:1px solid hsl(43 70% 45% / .55); }
.bld-warn-list { position:absolute; right:0; top:calc(100% + 6px); z-index:5; width:min(330px, 80vw);
  display:flex; flex-direction:column; gap:2px; padding:.45rem; border-radius:12px; }
.bld-warn-item { text-align:left; font-size:.76rem; padding:.4rem .5rem; border-radius:8px; cursor:pointer;
  color:hsl(43 85% 70%); background:none; border:none; }
.bld-warn-item:hover { background:hsl(43 60% 40% / .15); }
.bld-warn-item.soft { color:hsl(var(--muted-foreground)); }

/* templates / wizard */
.bld-templates { flex:1; overflow:auto; display:flex; flex-direction:column; gap:1rem; padding:1.4rem; align-items:center; justify-content:center; }
.bld-tpl-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(190px, 230px)); gap:1rem; justify-content:center; width:100%; }
.bld-tpl { display:flex; flex-direction:column; align-items:center; gap:.5rem; text-align:center;
  padding:1.3rem 1rem; border-radius:16px; cursor:pointer; border:none; color:hsl(var(--foreground)); }
.bld-tpl:hover { box-shadow:inset 0 0 0 1px hsl(var(--primary)/.6), 0 10px 30px rgba(0,0,0,.4); }
.bld-tpl-ico { font-size:1.6rem; }
.bld-tpl-t { font-size:1.02rem; }
.bld-tpl-s { font-size:.76rem; color:hsl(var(--muted-foreground)); }
.bld-wiz { display:flex; flex-direction:column; gap:.8rem; width:min(560px, 94vw); padding:1.2rem 1.3rem; border-radius:16px; }
.bld-wiz-row { display:flex; align-items:center; gap:.5rem; }
.bld-wiz-row .rm-input { flex:1; }
.bld-wiz-n { width:26px; height:26px; flex:none; border-radius:999px; display:grid; place-items:center;
  color:hsl(var(--primary)); box-shadow:inset 0 0 0 1px hsl(var(--primary)/.5); font-size:.85rem; }

/* host console — campaign rail bits */
.qr-story { font-size:.8rem; color:hsl(var(--foreground)/.9); background:hsl(var(--background)/.45);
  border-left:2px solid hsl(var(--primary)/.7); border-radius:0 9px 9px 0; padding:.5rem .6rem; white-space:pre-wrap; }
.qr-notes { font-size:.74rem; color:hsl(43 60% 70%); background:hsl(43 50% 25% / .12);
  border-left:2px solid hsl(43 70% 50% / .6); border-radius:0 9px 9px 0; padding:.45rem .6rem; white-space:pre-wrap; }
.qr-loot { font-size:.74rem; color:hsl(146 45% 65%); }
.qr-exits { display:flex; flex-wrap:wrap; gap:6px; }

/* phone-width fallback: form slides under the map */
@media (max-width: 760px){
  .bld-body { flex-direction:column; }
  .bld-side { width:auto; border-left:none; border-top:1px solid hsl(var(--border)/.6); max-height:46vh; }
}
