:root{
  --bg:#0b0704;
  --cave2:#080502;
  --ink:#f2ead6;
  --muted:#c8bfa6;
  --bone:#e6dbbd;
  --nodeFill:#5f7352;
  --nodeFill2:#556a49;
  --edge:rgba(230,220,190,.55);
  --edge2:rgba(210,166,75,.95);
  --shadow:rgba(0,0,0,.48);
  --sidebar-w:480px;
  --control-h:32px;
  --separator:rgba(230,220,190,.18);
}

*{box-sizing:border-box}
html,body{height:100%}

body{
  margin:0;
  color:var(--ink);
  overflow:hidden;
  font-family:"Trebuchet MS","Gill Sans",system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  background:
    radial-gradient(1100px 700px at 20% 15%, rgba(123,191,74,.08) 0%, transparent 58%),
    radial-gradient(900px 700px at 70% 35%, rgba(210,166,75,.08) 0%, transparent 60%),
    radial-gradient(1200px 900px at 55% 80%, rgba(209,74,63,.05) 0%, transparent 65%),
    linear-gradient(180deg, var(--cave2) 0%, var(--bg) 35%, var(--cave2) 100%);
}

.app{display:grid;grid-template-columns:var(--sidebar-w) 6px 1fr;height:100%}

#resizeHandle{
  background:rgba(230,220,190,.10);
  cursor:col-resize;
  position:relative;
  z-index:10;
  transition:background .15s;
  flex-shrink:0;
}
#resizeHandle:hover{background:rgba(210,166,75,.35)}

.sidebar{
  position:relative;
  padding:14px;
  overflow:auto;
  background:
    radial-gradient(900px 550px at 30% 0%, rgba(123,191,74,.06) 0%, transparent 55%),
    linear-gradient(180deg, rgba(18,14,8,.97), rgba(8,6,3,.97));
  border-right:2px solid rgba(230,220,190,.10);
}

.title{
  font-weight:900;
  letter-spacing:.6px;
  font-size:14px;
  margin:2px 0 10px;
  text-transform:uppercase;
  color:var(--bone);
  text-shadow:0 2px 0 rgba(0,0,0,.45);
}

.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px;align-items:center}

.tab{
  width:auto;
  height:var(--control-h);
  padding:0 10px;
  border-radius:14px 12px 16px 12px;
  border:1px solid rgba(230,220,190,.18);
  background:rgba(6,5,3,.80);
  color:var(--ink);
  cursor:pointer;
  font-weight:900;
  user-select:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1;
  font-size:12px;
}

.tab.active{
  border-color:rgba(210,166,75,.60);
  box-shadow:0 0 0 3px rgba(210,166,75,.14);
}

.card{
  margin:10px 0;
  padding:12px;
  border-radius:18px 14px 20px 12px;
  border:1px solid rgba(230,220,190,.16);
  background:linear-gradient(180deg, rgba(32,26,15,.90), rgba(20,16,9,.90));
  box-shadow:0 12px 32px rgba(0,0,0,.55);
}

.card-header{display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none;margin-bottom:0}
.card-header .card-title{font-size:11px;font-weight:900;letter-spacing:.4px;text-transform:uppercase;color:var(--bone)}
.card-toggle{font-size:11px;color:var(--muted);transition:transform .2s;display:inline-block}
.card-toggle.open{transform:rotate(180deg)}
.card-body{margin-top:8px}
.card-body.collapsed{display:none}

.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.row>*{flex:1}

.hr{height:2px;background:var(--separator);margin:10px 0}

.hint{color:var(--muted);font-size:11px;line-height:1.35}

label{display:block;font-size:11px;color:rgba(190,175,140,.80);margin:5px 0 3px;letter-spacing:.2px}

input,select,textarea{
  width:100%;
  color:#e8dfc0;
  font-size:12px;
  outline:none;
  border-radius:14px 12px 16px 12px;
  border:1px solid rgba(230,220,190,.16);
  background:rgba(4,3,2,.82);
  padding:7px 8px;
}

input:focus,select:focus,textarea:focus{
  border-color:rgba(210,166,75,.45);
  background:rgba(6,5,3,.90);
}

button{
  width:100%;
  color:var(--bone);
  font-size:12px;
  outline:none;
  border-radius:14px 12px 16px 12px;
  padding:7px 8px;
  cursor:pointer;
  transition:transform .02s ease,filter .15s ease,border-color .15s ease,background .15s ease;
  font-weight:900;
  background:linear-gradient(180deg, rgba(50,40,22,.90), rgba(30,24,12,.90));
  border:1px solid rgba(210,180,100,.28);
  line-height:1;
}

button:hover{
  filter:brightness(1.12);
  border-color:rgba(210,166,75,.55);
  background:linear-gradient(180deg, rgba(62,50,26,.95), rgba(38,30,14,.95));
}

button:active{transform:translateY(1px)}

.btn-accent{
  border-color:rgba(123,191,74,.45);
  background:linear-gradient(180deg, rgba(40,58,24,.90), rgba(24,36,12,.90));
  color:rgba(190,230,150,.95);
}
.btn-accent:hover{
  border-color:rgba(123,191,74,.75);
  background:linear-gradient(180deg, rgba(52,74,28,.95), rgba(32,48,16,.95));
}

.btn-ok{border-color:rgba(200,180,120,.32)}

textarea{font-family:inherit;resize:vertical;line-height:1.45}
textarea.formula{height:32px;min-height:28px;resize:vertical}

.help-btn{
  width:22px;
  height:22px;
  border-radius:50%;
  border:1px solid rgba(230,220,190,.30);
  background:rgba(30,24,12,.85);
  color:var(--bone);
  font-size:12px;
  font-weight:900;
  cursor:pointer;
  padding:0;
  flex-shrink:0;
  display:flex;
  align-items:center;
  justify-content:center;
  transition:border-color .15s,background .15s;
  line-height:1;
}
.help-btn:hover{border-color:rgba(210,166,75,.60);background:rgba(210,166,75,.15)}

.help-overlay{
  display:none;
  position:fixed;
  inset:0;
  z-index:9998;
  background:rgba(0,0,0,.55);
  backdrop-filter:blur(2px);
}
.help-overlay.open{display:flex;align-items:center;justify-content:center}

.help-popup{
  background:linear-gradient(180deg, rgba(30,24,14,.97), rgba(14,11,7,.97));
  border:1px solid rgba(230,220,190,.22);
  border-radius:18px 14px 20px 12px;
  box-shadow:0 28px 60px rgba(0,0,0,.65);
  padding:20px 22px;
  max-width:500px;
  width:90vw;
  max-height:80vh;
  overflow-y:auto;
  position:relative;
}
.help-popup h2{
  font-size:13px;
  font-weight:900;
  letter-spacing:.5px;
  text-transform:uppercase;
  color:var(--bone);
  margin:0 0 12px;
}
.help-popup h3{
  font-size:11px;
  font-weight:900;
  letter-spacing:.4px;
  text-transform:uppercase;
  color:rgba(210,166,75,.85);
  margin:14px 0 5px;
}
.help-popup p,.help-popup li{font-size:11px;color:var(--muted);line-height:1.5;margin:2px 0}
.help-popup code{color:rgba(180,210,130,.90);font-size:11px;font-family:monospace}
.help-popup ul{margin:4px 0;padding-left:16px}

.help-close{
  position:absolute;
  top:12px;
  right:14px;
  width:24px;
  height:24px;
  border-radius:50%;
  border:1px solid rgba(230,220,190,.25);
  background:rgba(10,8,5,.70);
  color:var(--muted);
  font-size:14px;
  cursor:pointer;
  padding:0;
  display:flex;
  align-items:center;
  justify-content:center;
  line-height:1;
}
.help-close:hover{color:var(--bone);border-color:rgba(230,220,190,.55)}

.panel-subtitle{
  font-size:11px!important;
  color:rgba(210,166,75,.85)!important;
  letter-spacing:.4px;
  font-weight:900!important;
  text-transform:uppercase;
}

::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:rgba(10,8,5,.50);border-radius:999px}
::-webkit-scrollbar-thumb{background:rgba(210,180,100,.28);border-radius:999px}
::-webkit-scrollbar-thumb:hover{background:rgba(210,166,75,.55)}
*{scrollbar-width:thin;scrollbar-color:rgba(210,180,100,.28) rgba(10,8,5,.50)}

input[type="color"]{
  padding:4px;
  height:38px;
  background:rgba(4,3,2,.85);
  border:1px solid rgba(230,220,190,.16);
}
input[type="color"]::-webkit-color-swatch-wrapper{padding:4px}
input[type="color"]::-webkit-color-swatch{border:1px solid rgba(230,220,190,.35);border-radius:10px}
input[type="color"]::-moz-color-swatch{border:1px solid rgba(230,220,190,.35);border-radius:10px}

.canvasWrap{display:flex;flex-direction:column;height:100%;overflow:hidden}

.canvas{
  flex:1;
  position:relative;
  overflow:hidden;
  cursor:grab;
  background:
    radial-gradient(900px 700px at 50% 35%, rgba(230,220,190,.05) 0%, transparent 60%),
    radial-gradient(700px 500px at 20% 75%, rgba(123,191,74,.06) 0%, transparent 60%),
    radial-gradient(800px 600px at 80% 80%, rgba(210,166,75,.05) 0%, transparent 60%),
    radial-gradient(1200px 900px at 60% 110%, rgba(0,0,0,.35) 0%, transparent 55%),
    linear-gradient(180deg, rgba(0,0,0,.10), rgba(0,0,0,.26));
}
.canvas.grabbing{cursor:grabbing}

svg#edges{position:absolute;inset:0;pointer-events:none}
.nodes{position:absolute;inset:0}

.node{
  position:absolute;
  min-width:190px;
  max-width:300px;
  padding:10px 10px 9px;
  border-radius:18px 14px 20px 12px;
  border:2px solid rgba(183,197,168,.55);
  background:linear-gradient(180deg, var(--nodeFill), var(--nodeFill2));
  box-shadow:0 18px 38px var(--shadow);
  user-select:none;
  transition:opacity .15s ease;
}
.node.selected{
  border-color:rgba(230,220,190,.80);
  box-shadow:0 0 0 4px rgba(210,166,75,.14),0 18px 38px var(--shadow);
}

.nodeName{
  font-weight:900;
  font-size:13px;
  line-height:1.2;
  margin:0;
  word-wrap:break-word;
  color:#f6f0de;
  text-shadow:0 2px 0 rgba(0,0,0,.35);
}

.nodeMeta{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px;align-items:center}

.pill{
  font-size:11px;
  border-radius:999px;
  padding:2px 8px;
  border:1px solid rgba(246,240,222,.25);
  color:rgba(246,240,222,.88);
  background:rgba(0,0,0,.18);
}

.node-flavor{
  margin-top:5px;
  font-size:10px;
  font-style:italic;
  color:rgba(200,180,130,.70);
  line-height:1.35;
  white-space:pre-wrap;
  word-break:break-word;
}

.iconBadge{
  font-size:12px;
  border-radius:10px 8px 12px 8px;
  padding:3px 7px;
  border:1px solid rgba(246,240,222,.22);
  background:rgba(0,0,0,.20);
  font-weight:900;
  letter-spacing:.3px;
  min-width:36px;
  text-align:center;
}

.reqRow{display:grid;grid-template-columns:1fr 1fr 60px 56px;gap:6px;align-items:end}
.fxRow{display:grid;grid-template-columns:1fr 1fr 56px;gap:6px;align-items:end}
.modRow{display:grid;grid-template-columns:1fr 1fr 34px 56px;gap:6px;align-items:end}
.reqList{display:flex;flex-direction:column;gap:6px;margin-top:8px}

.reqItem{
  display:flex;
  gap:8px;
  align-items:center;
  padding:6px 8px;
  border-radius:14px 12px 16px 12px;
  border:1px solid rgba(210,180,100,.20);
  background:rgba(30,24,12,.65);
  cursor:pointer;
}
.reqItem:hover{border-color:rgba(210,166,75,.45);background:rgba(38,30,14,.80)}
.reqItemText{color:var(--bone);font-weight:800;font-size:11px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.reqItem button{width:auto;padding:4px 8px;font-weight:900;font-size:11px;flex-shrink:0;line-height:1}

/* ---------------------------
   Canvas top bar (FIXED)
   --------------------------- */
#canvasTopBar{
  display:flex;
  align-items:center;
  gap:6px;
  padding:6px 10px;
  background:rgba(10,8,5,.88);
  border-bottom:2px solid var(--separator);
  flex-shrink:0;
  overflow-x:auto;
  scrollbar-width:none;
  z-index:5;
}
#canvasTopBar::-webkit-scrollbar{display:none}

#tabsRow{display:flex;gap:5px;flex-shrink:0;align-items:center}

#tabsRow .tab{
  height:var(--control-h);
  padding:0 12px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1;
  font-size:12px;
}

#btnPrevPage,#btnNextPage{
  height:var(--control-h);
  width:var(--control-h);
  padding:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1;
  font-size:12px;
  flex-shrink:0;
}

#topBarSpacer{flex:1;min-width:14px}

#topBarSep{
  width:2px;
  height:var(--control-h);
  background:var(--separator);
  flex-shrink:0;
  margin:0 6px;
}

.view-toggle{display:flex;gap:5px;flex-shrink:0}

.view-btn{
  height:var(--control-h);
  padding:0 12px;
  border-radius:12px 10px 14px 10px;
  border:1px solid rgba(230,220,190,.22);
  background:rgba(10,8,5,.70);
  color:var(--ink);
  cursor:pointer;
  font-weight:900;
  font-size:12px;
  user-select:none;
  width:auto;
  flex-shrink:0;
  transition:border-color .15s,box-shadow .15s,background .15s;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  line-height:1;
}
.view-btn:hover{border-color:rgba(230,220,190,.38);background:rgba(22,18,10,.85)}
.view-btn.active{border-color:rgba(210,166,75,.60);box-shadow:0 0 0 3px rgba(210,166,75,.14);background:rgba(30,24,12,.85)}

/* ---------------------------
   Moved from HTML inline <style>
   (events/tags/web view UI)
   --------------------------- */

/* Event-specific panel styles */
.evt-block{
  border:1px solid rgba(180,120,230,.30);
  border-radius:14px 12px 16px 12px;
  background:rgba(18,12,26,.55);
  padding:10px;
  margin-top:8px;
}
.evt-block-title{
  font-size:11px;
  font-weight:900;
  letter-spacing:.5px;
  color:rgba(190,150,255,.80);
  text-transform:uppercase;
  margin-bottom:8px;
  display:flex;
  align-items:center;
  gap:8px;
}
.evt-block-title button{flex-shrink:0;width:auto;padding:2px 8px;font-size:10px}

.out-block{
  border:1px solid rgba(230,220,190,.14);
  border-radius:10px 8px 12px 8px;
  background:rgba(10,8,5,.40);
  padding:8px;
  margin-top:6px;
}
.out-header{display:flex;gap:6px;align-items:center;margin-bottom:5px}
.out-label{font-size:11px;font-weight:900;color:var(--bone);flex:1}
.out-weight-badge{
  font-size:10px;
  padding:1px 6px;
  border-radius:999px;
  border:1px solid rgba(210,166,75,.35);
  color:rgba(210,166,75,.80);
  background:rgba(210,166,75,.08);
  white-space:nowrap;
}
.out-section-title{
  font-size:10px;
  font-weight:900;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.5px;
  margin:6px 0 3px;
}
.prob-preview{
  margin-top:8px;
  padding:6px 8px;
  border-radius:8px;
  background:rgba(210,166,75,.06);
  border:1px solid rgba(210,166,75,.15);
}
.prob-row{display:flex;justify-content:space-between;align-items:center;padding:2px 0}
.prob-name{font-size:10px;color:var(--bone)}
.prob-pct{font-size:10px;font-weight:900;color:rgba(210,166,75,.80)}
.prob-locked{font-size:10px;color:var(--muted);font-style:italic}

/* Tag system */
.tag-chip{
  display:inline-flex;
  align-items:center;
  gap:4px;
  font-size:10px;
  font-weight:900;
  padding:2px 7px 2px 8px;
  border-radius:999px;
  border:1px solid rgba(180,120,230,.45);
  background:rgba(120,60,200,.12);
  color:rgba(210,170,255,.90);
}
.tag-chip .tag-rm{
  cursor:pointer;
  opacity:.65;
  font-size:11px;
  line-height:1;
  margin-left:2px;
  padding:0 2px;
}
.tag-chip .tag-rm:hover{opacity:1;color:#f87171}
.tag-chips-row{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px;min-height:16px}
.node.tag-dimmed{opacity:0.22;filter:grayscale(.55);pointer-events:auto}

/* Web View node page badge */
.web-page-badge{
  position:absolute;
  top:5px;
  right:7px;
  font-size:9px;
  font-weight:900;
  padding:1px 5px;
  border-radius:999px;
  letter-spacing:.3px;
  pointer-events:none;
}
.web-badge-tech{background:rgba(200,190,120,.18);color:rgba(220,210,130,.90);border:1px solid rgba(220,210,130,.28)}
.web-badge-buildings{background:rgba(120,170,120,.18);color:rgba(140,200,140,.90);border:1px solid rgba(140,200,140,.28)}
.web-badge-population{background:rgba(210,166,75,.18);color:rgba(230,186,95,.90);border:1px solid rgba(230,186,95,.28)}
.web-badge-resources{background:rgba(100,160,220,.18);color:rgba(120,180,240,.90);border:1px solid rgba(120,180,240,.28)}
.web-badge-actions{background:rgba(130,200,130,.18);color:rgba(150,220,150,.90);border:1px solid rgba(150,220,150,.28)}
.web-badge-stats{background:rgba(180,130,255,.18);color:rgba(200,150,255,.90);border:1px solid rgba(200,150,255,.28)}
.web-badge-triggers{background:rgba(220,100,180,.18);color:rgba(240,120,200,.90);border:1px solid rgba(240,120,200,.28)}
.web-badge-events{background:rgba(255,160,80,.18);color:rgba(255,180,100,.90);border:1px solid rgba(255,180,100,.28)}

/* Web View nodes — truncate long names so height stays predictable */
.web-node-fixed .nodeName{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.web-node-fixed .nodeMeta{flex-wrap:nowrap;overflow:hidden}

/* Web View band labels */
.web-band-label{
  position:absolute;
  font-size:10px;
  font-weight:900;
  letter-spacing:1.5px;
  text-transform:uppercase;
  color:rgba(246,240,222,.28);
  pointer-events:none;
  white-space:nowrap;
  transform:translateY(14px);
}

/* Web View legend */
#webLegend{
  position:absolute;
  bottom:14px;
  left:14px;
  display:none;
  flex-direction:column;
  gap:5px;
  background:rgba(10,8,5,.80);
  border:1px solid rgba(230,220,190,.14);
  border-radius:12px;
  padding:10px 14px;
  pointer-events:none;
  z-index:10;
}
#webLegend.visible{display:flex}
.web-legend-row{display:flex;align-items:center;gap:8px;font-size:10px;font-weight:900;color:rgba(246,240,222,.75)}
.web-legend-line{width:28px;height:2px;border-radius:1px;flex-shrink:0}
